From dda41fbb378d137a67898140fa494a31df9de016 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 22 Sep 2013 15:18:08 -0400 Subject: [PATCH 001/116] Fix up event names and hierarchy. * PacketEvent is now ProgressEvent. * SetToHotkeyEvent is now SetControlGroupEvent. * AddToHotkeyEvent is now AddToControlGroupEvent. * GetFromHotkeyEvent is now GetControlGroupEvent. * PlayerAbilityEvent is no longer part of the event hierarchy. * event.name is no longer a class property; it can only be accessed from an event instance. --- CHANGELOG.rst | 14 +++- sc2reader/engine/engine.py | 40 ++++----- sc2reader/engine/plugins/apm.py | 12 ++- sc2reader/events/game.py | 112 +++++++++----------------- sc2reader/events/message.py | 31 ++++--- sc2reader/events/tracker.py | 43 +++++----- sc2reader/factories/plugins/replay.py | 2 +- sc2reader/readers.py | 2 +- 8 files changed, 117 insertions(+), 139 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 00f0f90e..4d76d073 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,11 +1,23 @@ CHANGELOG ============ +0.7.0 - +--------------------------- + +* PacketEvent is now ProgressEvent. +* SetToHotkeyEvent is now SetControlGroupEvent. +* AddToHotkeyEvent is now AddToControlGroupEvent. +* GetFromHotkeyEvent is now GetControlGroupEvent. +* PlayerAbilityEvent is no longer part of the event hierarchy. +* event.name is no longer a class property; it can only be accessed from an event instance. + + + 0.6.4 - September 22nd 2013 --------------------------- * Fix bug in code for logging errors. -* Fix siege tank supply count +* Fix siege tank supply count. * Small improvements to message.events parsing. 0.6.3 - September 15th 2013 diff --git a/sc2reader/engine/engine.py b/sc2reader/engine/engine.py index fffc3246..2788bcc6 100644 --- a/sc2reader/engine/engine.py +++ b/sc2reader/engine/engine.py @@ -5,6 +5,7 @@ from sc2reader.events import * from sc2reader.engine.events import InitGameEvent, EndGameEvent, PluginExit + class GameEngine(object): """ GameEngine Specification -------------------------- @@ -56,9 +57,8 @@ def handleEventName(self, event, replay) * handleMessageEvent - called for events in replay.message.events * handleGameEvent - called for events in replay.game.events * handleTrackerEvent - called for events in replay.tracker.events - * handlePlayerActionEvent - called for all game events indicating player actions * handleAbilityEvent - called for all types of ability events - * handleHotkeyEvent - called for all player hotkey events + * handleControlGroupEvent - called for all player control group events Plugins may also handle optional ``InitGame`` and ``EndGame`` events generated by the GameEngine before and after processing all the events: @@ -196,26 +196,18 @@ def _get_event_handlers(self, event, plugins): def _get_plugin_event_handlers(self, plugin, event): handlers = list() - if isinstance(event, Event) and self._has_event_handler(plugin, Event): - handlers.append(self._get_event_handler(plugin, Event)) - if isinstance(event, MessageEvent) and self._has_event_handler(plugin, MessageEvent): - handlers.append(self._get_event_handler(plugin, MessageEvent)) - if isinstance(event, GameEvent) and self._has_event_handler(plugin, GameEvent): - handlers.append(self._get_event_handler(plugin, GameEvent)) - if isinstance(event, TrackerEvent) and self._has_event_handler(plugin, TrackerEvent): - handlers.append(self._get_event_handler(plugin, TrackerEvent)) - if isinstance(event, PlayerActionEvent) and self._has_event_handler(plugin, PlayerActionEvent): - handlers.append(self._get_event_handler(plugin, PlayerActionEvent)) - if isinstance(event, AbilityEvent) and self._has_event_handler(plugin, AbilityEvent): - handlers.append(self._get_event_handler(plugin, AbilityEvent)) - if isinstance(event, HotkeyEvent) and self._has_event_handler(plugin, HotkeyEvent): - handlers.append(self._get_event_handler(plugin, HotkeyEvent)) - if self._has_event_handler(plugin, event): - handlers.append(self._get_event_handler(plugin, event)) + if isinstance(event, Event) and hasattr(plugin, 'handleEvent'): + handlers.append(getattr(plugin, 'handleEvent', None)) + if isinstance(event, MessageEvent) and hasattr(plugin, 'handleMessageEvent'): + handlers.append(getattr(plugin, 'handleMessageEvent', None)) + if isinstance(event, GameEvent) and hasattr(plugin, 'handleGameEvent'): + handlers.append(getattr(plugin, 'handleGameEvent', None)) + if isinstance(event, TrackerEvent) and hasattr(plugin, 'handleTrackerEvent'): + handlers.append(getattr(plugin, 'handleTrackerEvent', None)) + if isinstance(event, AbilityEvent) and hasattr(plugin, 'handleAbilityEvent'): + handlers.append(getattr(plugin, 'handleAbilityEvent', None)) + if isinstance(event, ControlGroupEvent) and hasattr(plugin, 'handleControlGroupEvent'): + handlers.append(getattr(plugin, 'handleControlGroupEvent', None)) + if hasattr(plugin, 'handle'+event.name): + handlers.append(getattr(plugin, 'handle'+event.name, None)) return handlers - - def _has_event_handler(self, plugin, event): - return hasattr(plugin, 'handle'+event.name) - - def _get_event_handler(self, plugin, event): - return getattr(plugin, 'handle'+event.name, None) diff --git a/sc2reader/engine/plugins/apm.py b/sc2reader/engine/plugins/apm.py index 0d69b293..42d44185 100644 --- a/sc2reader/engine/plugins/apm.py +++ b/sc2reader/engine/plugins/apm.py @@ -7,7 +7,7 @@ class APMTracker(object): """ Builds ``player.aps`` and ``player.apm`` dictionaries where an action is - any Selection, Hotkey, or Ability event. + any Selection, ControlGroup, or Ability event. Also provides ``player.avg_apm`` which is defined as the sum of all the above actions divided by the number of seconds played by the player (not @@ -23,7 +23,15 @@ def handleInitGame(self, event, replay): human.aps = defaultdict(int) human.seconds_played = replay.length.seconds - def handlePlayerActionEvent(self, event, replay): + def handleControlGroupEvent(self, event, replay): + event.player.aps[event.second] += 1 + event.player.apm[int(event.second/60)] += 1 + + def handleSelectionEvent(self, event, replay): + event.player.aps[event.second] += 1 + event.player.apm[int(event.second/60)] += 1 + + def handleAbilityEvent(self, event, replay): event.player.aps[event.second] += 1 event.player.apm[int(event.second/60)] += 1 diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 720b23a9..fc5a2413 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -13,8 +13,6 @@ class GameEvent(Event): """ This is the base class for all game events. The attributes below are universally available. """ - name = 'GameEvent' - def __init__(self, frame, pid): #: The id of the player generating the event. This is 16 for global non-player events. #: Prior to Heart of the Swarm this was the player id. Since HotS it is @@ -34,6 +32,9 @@ def __init__(self, frame, pid): #: A flag indicating if it is a local or global event. self.is_local = (pid != 16) + #: Short cut string for event class name + self.name = self.__class__.__name__ + def _str_prefix(self): player_name = self.player.name if getattr(self, 'pid', 16) != 16 else "Global" return "%s\t%-15s " % (Length(seconds=int(self.frame/16)), player_name) @@ -47,9 +48,6 @@ class GameStartEvent(GameEvent): Recorded when the game starts and the frames start to roll. This is a global non-player event. """ - - name = 'GameStartEvent' - def __init__(self, frame, pid, data): super(GameStartEvent, self).__init__(frame, pid) @@ -58,9 +56,6 @@ class PlayerLeaveEvent(GameEvent): """ Recorded when a player leaves the game. """ - - name = 'PlayerLeaveEvent' - def __init__(self, frame, pid, data): super(PlayerLeaveEvent, self).__init__(frame, pid) @@ -70,9 +65,6 @@ class UserOptionsEvent(GameEvent): This event is recorded for each player at the very beginning of the game before the :class:`GameStartEvent`. """ - - name = 'UserOptionsEvent' - def __init__(self, frame, pid, data): super(UserOptionsEvent, self).__init__(frame, pid) #: @@ -118,12 +110,8 @@ def create_command_event(frame, pid, data): return SelfAbilityEvent(frame, pid, data) -class PlayerActionEvent(GameEvent): - name = 'PlayerActionEvent' - - @loggable -class AbilityEvent(PlayerActionEvent): +class AbilityEvent(GameEvent): """ Ability events are generated when ever a player in the game issues a command to a unit or group of units. They are split into three subclasses of ability, @@ -133,11 +121,6 @@ class AbilityEvent(PlayerActionEvent): See :class:`LocationAbilityEvent`, :class:`TargetAbilityEvent`, and :class:`SelfAbilityEvent` for individual details. """ - - name = 'AbilityEvent' - - is_player_action = True - def __init__(self, frame, pid, data): super(AbilityEvent, self).__init__(frame, pid) @@ -236,9 +219,6 @@ class LocationAbilityEvent(AbilityEvent): Note that like all AbilityEvents, the event will be recorded regardless of whether or not the command was successful. """ - - name = 'LocationAbilityEvent' - def __init__(self, frame, pid, data): super(LocationAbilityEvent, self).__init__(frame, pid, data) @@ -265,9 +245,6 @@ class TargetAbilityEvent(AbilityEvent): Note that all AbilityEvents are recorded regardless of whether or not the command was successful. """ - - name = 'TargetAbilityEvent' - def __init__(self, frame, pid, data): super(TargetAbilityEvent, self).__init__(frame, pid, data) @@ -318,9 +295,6 @@ class SelfAbilityEvent(AbilityEvent): Note that all AbilityEvents are recorded regardless of whether or not the command was successful. """ - - name = 'SelfAbilityEvent' - def __init__(self, frame, pid, data): super(SelfAbilityEvent, self).__init__(frame, pid, data) @@ -329,7 +303,7 @@ def __init__(self, frame, pid, data): @loggable -class SelectionEvent(PlayerActionEvent): +class SelectionEvent(GameEvent): """ Selection events are generated when ever the active selection of the player is updated. Unlike other game events, these events can also be @@ -340,10 +314,6 @@ class SelectionEvent(PlayerActionEvent): by non-player actions. When a player action updates a control group a :class:`HotkeyEvent` is generated. """ - - name = 'SelectionEvent' - is_player_action = True - def __init__(self, frame, pid, data): super(SelectionEvent, self).__init__(frame, pid) @@ -392,39 +362,32 @@ def __str__(self): def create_control_group_event(frame, pid, data): update_type = data['control_group_update'] if update_type == 0: - return SetToHotkeyEvent(frame, pid, data) + return SetControlGroupEvent(frame, pid, data) elif update_type == 1: - return AddToHotkeyEvent(frame, pid, data) + return AddToControlGroupEvent(frame, pid, data) elif update_type == 2: - return GetFromHotkeyEvent(frame, pid, data) + return GetControlGroupEvent(frame, pid, data) elif update_type == 3: # TODO: What could this be?!? - return HotkeyEvent(frame, pid, data) + return ControlGroupEvent(frame, pid, data) @loggable -class HotkeyEvent(PlayerActionEvent): +class ControlGroupEvent(GameEvent): """ - Hotkey events are recorded when ever a player action modifies a control - group. I know that calling control group events hotkey events doesn't make - sense but for backwards compatibility I haven't changed it yet. Sorry. - - There are three kinds of hotkey events, generated by each of the possible + ControlGroup events are recorded when ever a player action modifies or accesses a control + group. There are three kinds of events, generated by each of the possible player actions: - * :class:`SetToHotkeyEvent` - Recorded when a user sets a control group (ctrl+#). - * :class:`GetFromHotkeyEvent` - Recorded when a user retrieves a control group (#). - * :class:`AddToHotkeyEvent` - Recorded when a user adds to a control group (shift+ctrl+#) + * :class:`SetControlGroup` - Recorded when a user sets a control group (ctrl+#). + * :class:`GetControlGroup` - Recorded when a user retrieves a control group (#). + * :class:`AddToControlGroup` - Recorded when a user adds to a control group (shift+ctrl+#) All three events have the same set of data (shown below) but are interpretted differently. See the class entry for details. """ - - name = 'HotkeyEvent' - is_player_action = True - def __init__(self, frame, pid, data): - super(HotkeyEvent, self).__init__(frame, pid) + super(ControlGroupEvent, self).__init__(frame, pid) #: Index to the control group being modified self.control_group = data['control_group_index'] @@ -445,38 +408,33 @@ def __init__(self, frame, pid, data): self.mask_data = data['remove_mask'][1] -class SetToHotkeyEvent(HotkeyEvent): +class SetControlGroupEvent(ControlGroupEvent): """ - Extends :class:`HotkeyEvent` + Extends :class:`ControlGroupEvent` This event does a straight forward replace of the current control group contents with the player's current selection. This event doesn't have masks set. """ - name = 'SetToHotkeyEvent' - -class AddToHotkeyEvent(HotkeyEvent): +class AddToControlGroupEvent(SetControlGroupEvent): """ - Extends :class:`HotkeyEvent` + Extends :class:`ControlGroupEvent` This event adds the current selection to the control group. """ - name = 'AddToHotkeyEvent' - -class GetFromHotkeyEvent(HotkeyEvent): +class GetControlGroupEvent(ControlGroupEvent): """ - Extends :class:`HotkeyEvent` + Extends :class:`ControlGroupEvent` + This event replaces the current selection with the contents of the control group. The mask data is used to limit that selection to units that are currently selectable. You might have 1 medivac and 8 marines on the control group but if the 8 marines are inside the medivac they cannot be part of your selection. """ - name = 'GetFromHotkeyEvent' - @loggable class CameraEvent(GameEvent): @@ -485,9 +443,6 @@ class CameraEvent(GameEvent): It does not matter why the camera changed, this event simply records the current state of the camera after changing. """ - - name = 'CameraEvent' - def __init__(self, frame, pid, data): super(CameraEvent, self).__init__(frame, pid) @@ -515,8 +470,10 @@ def __str__(self): @loggable class ResourceTradeEvent(GameEvent): - name = 'ResourceTradeEvent' - + """ + Generated when a player trades resources with another player. But not when fullfulling + resource requests. + """ def __init__(self, frame, pid, data): super(ResourceTradeEvent, self).__init__(frame, pid) @@ -552,8 +509,9 @@ def __str__(self): class ResourceRequestEvent(GameEvent): - name = 'ResourceRequestEvent' - + """ + Generated when a player creates a resource request. + """ def __init__(self, frame, pid, data): super(ResourceRequestEvent, self).__init__(frame, pid) @@ -577,8 +535,9 @@ def __str__(self): class ResourceRequestFulfillEvent(GameEvent): - name = 'ResourceRequestFulfillEvent' - + """ + Generated when a player accepts a resource request. + """ def __init__(self, frame, pid, data): super(ResourceRequestFulfillEvent, self).__init__(frame, pid) @@ -587,8 +546,9 @@ def __init__(self, frame, pid, data): class ResourceRequestCancelEvent(GameEvent): - name = 'ResourceRequestCancelEvent' - + """ + Generated when a player cancels their resource request. + """ def __init__(self, frame, pid, data): super(ResourceRequestCancelEvent, self).__init__(frame, pid) diff --git a/sc2reader/events/message.py b/sc2reader/events/message.py index 7608f8db..dc6e40ca 100644 --- a/sc2reader/events/message.py +++ b/sc2reader/events/message.py @@ -8,13 +8,17 @@ @loggable class MessageEvent(Event): - name = 'MessageEvent' - + """ + Parent class for all message events. + """ def __init__(self, frame, pid): self.pid = pid self.frame = frame self.second = frame >> 4 + #: Short cut string for event class name + self.name = self.__class__.__name__ + def _str_prefix(self): player_name = self.player.name if getattr(self, 'pid', 16) != 16 else "Global" return "%s\t%-15s " % (Length(seconds=int(self.frame/16)), player_name) @@ -25,8 +29,9 @@ def __str__(self): @loggable class ChatEvent(MessageEvent): - name = 'ChatEvent' - + """ + Records in-game chat events. + """ def __init__(self, frame, pid, target, text): super(ChatEvent, self).__init__(frame, pid) self.target = target @@ -37,18 +42,22 @@ def __init__(self, frame, pid, target, text): @loggable -class PacketEvent(MessageEvent): - name = 'PacketEvent' +class ProgressEvent(MessageEvent): + """ + Sent during the load screen to update load process for other clients. + """ + def __init__(self, frame, pid, progress): + super(ProgressEvent, self).__init__(frame, pid) - def __init__(self, frame, pid, info): - super(PacketEvent, self).__init__(frame, pid) - self.info = info + #: Marks the load progress for the player. Scaled 0-100. + self.progress = progress @loggable class PingEvent(MessageEvent): - name = 'PingEvent' - + """ + Records pings made by players in game. + """ def __init__(self, frame, pid, target, x, y): super(PingEvent, self).__init__(frame, pid) self.target = target diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index d9526aeb..893f0e55 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -15,6 +15,9 @@ def __init__(self, frames): self.frame = frames self.second = frames >> 4 + #: Short cut string for event class name + self.name = self.__class__.__name__ + def load_context(self, replay): pass @@ -39,9 +42,6 @@ class PlayerStatsEvent(TrackerEvent): events generated at the end of the game. One for leaving and one for the end of the game. """ - - name = 'PlayerStatsEvent' - def __init__(self, frames, data, build): super(PlayerStatsEvent, self).__init__(frames) @@ -223,9 +223,6 @@ class UnitBornEvent(TrackerEvent): it are the :class:`~sc2reader.event.game.AbilityEvent` game events where the ability is a train unit command. """ - - name = 'UnitBornEvent' - def __init__(self, frames, data, build): super(UnitBornEvent, self).__init__(frames) @@ -274,9 +271,6 @@ class UnitDiedEvent(TrackerEvent): Generated when a unit dies or is removed from the game for any reason. Reasons include morphing, merging, and getting killed. """ - - name = 'UnitDiedEvent' - def __init__(self, frames, data, build): super(UnitDiedEvent, self).__init__(frames) @@ -312,8 +306,10 @@ def __str__(self): class UnitOwnerChangeEvent(TrackerEvent): - name = 'UnitOwnerChangeEvent' - + """ + Generated when either ownership or control of a unit is changed. Neural Parasite is an example + of an action that would generate this event. + """ def __init__(self, frames, data, build): super(UnitOwnerChangeEvent, self).__init__(frames) @@ -346,8 +342,11 @@ def __str__(self): class UnitTypeChangeEvent(TrackerEvent): - name = 'UnitTypeChangeEvent' - + """ + Generated when the unit's type changes. This generally tracks upgrades to buildings (Hatch, + Lair, Hive) and mode switches (Sieging Tanks, Phasing prisms, Burrowing roaches). There may + be some other situations where a unit transformation is a type change and not a new unit. + """ def __init__(self, frames, data, build): super(UnitTypeChangeEvent, self).__init__(frames) @@ -371,8 +370,9 @@ def __str__(self): class UpgradeCompleteEvent(TrackerEvent): - name = 'UpgradeCompleteEvent' - + """ + Generated when a player completes an upgrade. + """ def __init__(self, frames, data, build): super(UpgradeCompleteEvent, self).__init__(frames) @@ -399,9 +399,6 @@ class UnitInitEvent(TrackerEvent): in game before they are finished. Primary examples being buildings and warp-in units. """ - - name = 'UnitInitEvent' - def __init__(self, frames, data, build): super(UnitInitEvent, self).__init__(frames) @@ -451,9 +448,6 @@ class UnitDoneEvent(TrackerEvent): when an initiated unit is completed. E.g. warp-in finished, building finished, morph complete. """ - - name = 'UnitDoneEvent' - def __init__(self, frames, data, build): super(UnitDoneEvent, self).__init__(frames) @@ -474,8 +468,11 @@ def __str__(self): class UnitPositionsEvent(TrackerEvent): - name = 'UnitPositionsEvent' - + """ + Generated every 15 seconds. Marks the positions of the first 255 units that were damaged in + the last interval. If more than 255 units were damaged, then the first 255 are reported and + the remaining units are carried into the next interval. + """ def __init__(self, frames, data, build): super(UnitPositionsEvent, self).__init__(frames) diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index 81a05c54..40401196 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -106,7 +106,7 @@ def APMTracker(replay): player.seconds_played = replay.length.seconds for event in player.events: - if event.name == 'SelectionEvent' or 'AbilityEvent' in event.name or 'Hotkey' in event.name: + if event.name == 'SelectionEvent' or 'AbilityEvent' in event.name or 'ControlGroup' in event.name: player.aps[event.second] += 1 player.apm[int(event.second/60)] += 1 diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 7aba7219..61f8d928 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -197,7 +197,7 @@ def __call__(self, data, replay): elif flag == 2: # Loading progress message progress = data.read_uint32()-2147483648 - packets.append(PacketEvent(frame, pid, progress)) + packets.append(ProgressEvent(frame, pid, progress)) elif flag == 3: # Server ping message pass From 24c0acf48036b67cb95ebcb88d84edd044753c3d Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 22 Sep 2013 15:22:10 -0400 Subject: [PATCH 002/116] Flesh out the ping class. --- CHANGELOG.rst | 6 +++++- sc2reader/events/message.py | 21 ++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4d76d073..9ee1965f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,7 +10,11 @@ CHANGELOG * GetFromHotkeyEvent is now GetControlGroupEvent. * PlayerAbilityEvent is no longer part of the event hierarchy. * event.name is no longer a class property; it can only be accessed from an event instance. - +* PingEvents now have new attributes: + * event.to_all - true if ping seen by all + * event.to_allies - true if ping seen by allies + * event.to_observers - true if ping seen by observers + * event.location - tuple of (event.x, event.y) 0.6.4 - September 22nd 2013 diff --git a/sc2reader/events/message.py b/sc2reader/events/message.py index dc6e40ca..b5166abd 100644 --- a/sc2reader/events/message.py +++ b/sc2reader/events/message.py @@ -60,5 +60,24 @@ class PingEvent(MessageEvent): """ def __init__(self, frame, pid, target, x, y): super(PingEvent, self).__init__(frame, pid) + + #: The numerical target type. 0 = to all; 2 = to allies; 4 = to observers. self.target = target - self.x, self.y = x, y + + #: Flag marked true of message was to all. + self.to_all = (self.target == 0) + + #: Flag marked true of message was to allies. + self.to_allies = (self.target == 2) + + #: Flag marked true of message was to observers. + self.to_observers = (self.target == 4) + + #: The x coordinate of the target location + self.x = x + + #: The y coordinate of the target location + self.y = y + + #: The (x,y) coordinate of the target location + self.location = (self.x, self.y) From bb8f9d242b244b00d0b43150fddef24a4dc0f509 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 22 Sep 2013 15:22:40 -0400 Subject: [PATCH 003/116] Misc. documentation improvements. --- docs/source/events/game.rst | 1 - docs/source/events/message.rst | 3 -- docs/source/events/tracker.rst | 1 - sc2reader/events/game.py | 49 +++++++++++++++++------ sc2reader/events/message.py | 14 +++++++ sc2reader/events/tracker.py | 72 +++++++++++++++++++--------------- 6 files changed, 92 insertions(+), 48 deletions(-) diff --git a/docs/source/events/game.rst b/docs/source/events/game.rst index ec253718..e3dd87a0 100644 --- a/docs/source/events/game.rst +++ b/docs/source/events/game.rst @@ -11,4 +11,3 @@ computer player. .. automodule:: sc2reader.events.game :members: - :undoc-members: \ No newline at end of file diff --git a/docs/source/events/message.rst b/docs/source/events/message.rst index fbaf0ae9..ffc57226 100644 --- a/docs/source/events/message.rst +++ b/docs/source/events/message.rst @@ -3,8 +3,5 @@ Message Events =================== -Coming soon! - .. automodule:: sc2reader.events.message :members: - :undoc-members: diff --git a/docs/source/events/tracker.rst b/docs/source/events/tracker.rst index 77df8ccf..36671b51 100644 --- a/docs/source/events/tracker.rst +++ b/docs/source/events/tracker.rst @@ -9,4 +9,3 @@ are also periodically recorded to snapshot aspects of the current game state. .. automodule:: sc2reader.events.tracker :members: - :undoc-members: \ No newline at end of file diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index fc5a2413..584f8b1a 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -16,11 +16,12 @@ class GameEvent(Event): def __init__(self, frame, pid): #: The id of the player generating the event. This is 16 for global non-player events. #: Prior to Heart of the Swarm this was the player id. Since HotS it is - #: now the user id (uid), we still call it pid for backwards compatibility. + #: now the user id (uid), we still call it pid for backwards compatibility. You shouldn't + #: ever need to use this; use :attr:`player` instead. self.pid = pid #: A reference to the :class:`~sc2reader.objects.Player` object representing - #: this player in the replay. Not available for global events (:attr:`pid` = 16) + #: this player in the replay. Not available for global events (:attr:`is_local` = False) self.player = None #: The frame of the game that this event was recorded at. 16 frames per game second. @@ -51,6 +52,9 @@ class GameStartEvent(GameEvent): def __init__(self, frame, pid, data): super(GameStartEvent, self).__init__(frame, pid) + #: ??? + self.data = data + class PlayerLeaveEvent(GameEvent): """ @@ -59,6 +63,9 @@ class PlayerLeaveEvent(GameEvent): def __init__(self, frame, pid, data): super(PlayerLeaveEvent, self).__init__(frame, pid) + #: ??? + self.data = data + class UserOptionsEvent(GameEvent): """ @@ -80,7 +87,7 @@ def __init__(self, frame, pid, data): self.sync_checksumming_enabled = data['sync_checksumming_enabled'] #: - is_map_to_map_transition = data['is_map_to_map_transition'] + self.is_map_to_map_transition = data['is_map_to_map_transition'] #: self.use_ai_beacons = data['use_ai_beacons'] @@ -127,11 +134,31 @@ def __init__(self, frame, pid, data): #: Flags on the command??? self.flags = data['flags'] - #: A dictionary of possible ability flags. Flag names are: alternate, - #: queued, preempt, smart_click, smart_rally, subgroup, set_autocast, - #: set_autocast_on, user, data_a, data_b, data_passenger, data_abil_queue_order_id, - #: ai, ai_ignore_on_finish, is_order, script, homogenous_interruption, - #: minimap, repeat, dispatch_to_other_unit, and target_self + #: A dictionary of possible ability flags. Flags are: + #: + #: * alternate + #: * queued + #: * preempt + #: * smart_click + #: * smart_rally + #: * subgroup + #: * set_autocast, + #: * set_autocast_on + #: * user + #: * data_a + #: * data_b + #: * data_passenger + #: * data_abil_queue_order_id, + #: * ai + #: * ai_ignore_on_finish + #: * is_order + #: * script + #: * homogenous_interruption, + #: * minimap + #: * repeat + #: * dispatch_to_other_unit + #: * target_self + #: self.flag = dict( alternate=0x1 & self.flags != 0, queued=0x2 & self.flags != 0, @@ -446,13 +473,13 @@ class CameraEvent(GameEvent): def __init__(self, frame, pid, data): super(CameraEvent, self).__init__(frame, pid) - #: The x coordinate of the center? of the camera + #: The x coordinate of the center of the camera self.x = (data['target']['x'] if data['target'] is not None else 0)/256.0 - #: The y coordinate of the center? of the camera + #: The y coordinate of the center of the camera self.y = (data['target']['y'] if data['target'] is not None else 0)/256.0 - #: The location of the center? of the camera + #: The location of the center of the camera self.location = (self.x, self.y) #: The distance to the camera target ?? diff --git a/sc2reader/events/message.py b/sc2reader/events/message.py index b5166abd..cf99ac91 100644 --- a/sc2reader/events/message.py +++ b/sc2reader/events/message.py @@ -12,8 +12,13 @@ class MessageEvent(Event): Parent class for all message events. """ def __init__(self, frame, pid): + #: The user id (or player id for older replays) of the person that generated the event. self.pid = pid + + #: The frame of the game this event was applied self.frame = frame + + #: The second of the game (game time not real time) this event was applied self.second = frame >> 4 #: Short cut string for event class name @@ -34,10 +39,19 @@ class ChatEvent(MessageEvent): """ def __init__(self, frame, pid, target, text): super(ChatEvent, self).__init__(frame, pid) + #: The numerical target type. 0 = to all; 2 = to allies; 4 = to observers. self.target = target + + #: The text of the message. self.text = text + + #: Flag marked true of message was to all. self.to_all = (self.target == 0) + + #: Flag marked true of message was to allies. self.to_allies = (self.target == 2) + + #: Flag marked true of message was to observers. self.to_observers = (self.target == 4) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 893f0e55..646fb3f8 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -10,9 +10,14 @@ class TrackerEvent(Event): + """ + Parent class for all tracker events. + """ def __init__(self, frames): #: The frame of the game this event was applied self.frame = frames + + #: The second of the game (game time not real time) this event was applied self.second = frames >> 4 #: Short cut string for event class name @@ -30,17 +35,15 @@ def __str__(self): class PlayerStatsEvent(TrackerEvent): """ - Player Stats events are generated for all players that were in the game - even if they've since left every 10 seconds. An additional set of stats - events are generated at the end of the game. + Player Stats events are generated for all players that were in the game even if they've since + left every 10 seconds. An additional set of stats events are generated at the end of the game. - When a player leaves the game, a single PlayerStatsEvent is generated - for that player and no one else. That player continues to generate - PlayerStatsEvents at 10 second intervals until the end of the game. + When a player leaves the game, a single PlayerStatsEvent is generated for that player and no + one else. That player continues to generate PlayerStatsEvents at 10 second intervals until the + end of the game. - In 1v1 games, the above behavior can cause the losing player to have 2 - events generated at the end of the game. One for leaving and one for - the end of the game. + In 1v1 games, the above behavior can cause the losing player to have 2 events generated at the + end of the game. One for leaving and one for the end of the game. """ def __init__(self, frames, data, build): super(PlayerStatsEvent, self).__init__(frames) @@ -213,15 +216,14 @@ def __str__(self): class UnitBornEvent(TrackerEvent): """ - Generated when a unit is created in a finished state in the game. Examples - include the Marine, Zergling, and Zealot (when trained from a gateway). - Units that enter the game unfinished (all buildings, warped in units) generate - a :class:`UnitInitEvent` instead. - - Unfortunately, units that are born do not have events marking their beginnings - like :class:`UnitInitEvent` and :class:`UnitDoneEvent` do. The closest thing to - it are the :class:`~sc2reader.event.game.AbilityEvent` game events where the ability - is a train unit command. + Generated when a unit is created in a finished state in the game. Examples include the Marine, + Zergling, and Zealot (when trained from a gateway). Units that enter the game unfinished (all + buildings, warped in units) generate a :class:`UnitInitEvent` instead. + + Unfortunately, units that are born do not have events marking their beginnings like + :class:`UnitInitEvent` and :class:`UnitDoneEvent` do. The closest thing to it are the + :class:`~sc2reader.event.game.AbilityEvent` game events where the ability is a train unit + command. """ def __init__(self, frames, data, build): super(UnitBornEvent, self).__init__(frames) @@ -253,10 +255,12 @@ def __init__(self, frames, data, build): #: The player object that controls this unit. 0 means neutral unit self.unit_controller = None - #: The x coordinate of the location + #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.x = data[5] * 4 - #: The y coordinate of the location + #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.y = data[6] * 4 #: The map location of the unit birth @@ -292,10 +296,12 @@ def __init__(self, frames, data, build): #: The player object of the that killed the unit. Not always available. self.killer = None - #: The x coordinate of the location + #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.x = data[3] * 4 - #: The y coordinate of the location + #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.y = data[4] * 4 #: The map location the unit was killed at. @@ -394,10 +400,9 @@ def __str__(self): class UnitInitEvent(TrackerEvent): """ - The counter part to :class:`UnitDoneEvent`, generated by the game engine - when a unit is initiated. This applies only to units which are started - in game before they are finished. Primary examples being buildings and - warp-in units. + The counter part to :class:`UnitDoneEvent`, generated by the game engine when a unit is + initiated. This applies only to units which are started in game before they are finished. + Primary examples being buildings and warp-in units. """ def __init__(self, frames, data, build): super(UnitInitEvent, self).__init__(frames) @@ -429,10 +434,12 @@ def __init__(self, frames, data, build): #: The player object that controls this unit. 0 means neutral unit self.unit_controller = None - #: The x coordinate of the location + #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.x = data[5] * 4 - #: The y coordinate of the location + #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. + #: Location prior to rounding marks the center of the unit footprint. self.y = data[6] * 4 #: The map location the unit was started at @@ -444,9 +451,8 @@ def __str__(self): class UnitDoneEvent(TrackerEvent): """ - The counter part to the :class:`UnitInitEvent`, generated by the game engine - when an initiated unit is completed. E.g. warp-in finished, building finished, - morph complete. + The counter part to the :class:`UnitInitEvent`, generated by the game engine when an initiated + unit is completed. E.g. warp-in finished, building finished, morph complete. """ def __init__(self, frames, data, build): super(UnitDoneEvent, self).__init__(frames) @@ -485,7 +491,9 @@ def __init__(self, frames, data, build): #: A dict mapping of units that had their position updated to their positions self.units = dict() - #: A list of (unit_index, (x,y)) derived from the first_unit_index and items + #: A list of (unit_index, (x,y)) derived from the first_unit_index and items. Like the other + #: tracker events, these coordinates have 4 point resolution. (15,25) recorded as (12,24). + #: Location prior to rounding marks the center of the unit footprint. self.positions = list() unit_index = self.first_unit_index From 1d0328316905a6695abcc22862f70f3393e2ba0d Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 22 Sep 2013 18:21:42 -0400 Subject: [PATCH 004/116] First pass at replay resume support. refs #91 --- CHANGELOG.rst | 1 + sc2reader/engine/plugins/context.py | 5 +++++ sc2reader/events/game.py | 14 ++++++++++++++ sc2reader/readers.py | 4 ++-- sc2reader/resources.py | 10 ++++++++++ test_replays/test_all.py | 2 ++ 6 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9ee1965f..f3d95ef3 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,7 @@ CHANGELOG 0.7.0 - --------------------------- +* Added replay.resume_from_replay flag. See replay.resume_user_info for additional info. * PacketEvent is now ProgressEvent. * SetToHotkeyEvent is now SetControlGroupEvent. * AddToHotkeyEvent is now AddToControlGroupEvent. diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index 099569a0..feb013c5 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -99,6 +99,11 @@ def handleResourceTradeEvent(self, event, replay): event.sender = event.player event.recipient = replay.players[event.recipient_id] + def handleHijackReplayGameEvent(self, event, replay): + replay.resume_from_replay = True + replay.resume_method = event.method + replay.resume_user_info = event.user_infos + def handlePlayerStatsEvent(self, event, replay): self.load_tracker_player(event, replay) diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 584f8b1a..4f9d6735 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -581,3 +581,17 @@ def __init__(self, frame, pid, data): #: The id of the request being cancelled self.request_id = data['request_id'] + + +class HijackReplayGameEvent(GameEvent): + """ + Generated when players take over from a replay. + """ + def __init__(self, frame, pid, data): + super(HijackReplayGameEvent, self).__init__(frame, pid) + + #: The method used. Not sure what 0/1 represent + self.method = data['method'] + + #: Information on the users hijacking the game + self.user_infos = data['user_infos'] diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 61f8d928..ed9244ce 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1326,7 +1326,7 @@ def __init__(self): 21: (None, self.save_game_event), # New 22: (None, self.save_game_done_event), # Override 23: (None, self.load_game_done_event), # Override - 43: (None, self.hijack_replay_game_event), # New + 43: (HijackReplayGameEvent, self.hijack_replay_game_event), # New 62: (None, self.trigger_target_mode_update_event), # New 101: (PlayerLeaveEvent, self.game_user_leave_event), # New 102: (None, self.game_user_join_event), # New @@ -1356,7 +1356,7 @@ def load_game_done_event(self, data): def hijack_replay_game_event(self, data): return dict( user_infos=[dict( - game_unit_id=data.read_bits(4), + game_user_id=data.read_bits(4), observe=data.read_bits(2), name=data.read_aligned_string(data.read_uint8()), toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, diff --git a/sc2reader/resources.py b/sc2reader/resources.py index f9eeceaa..d9f8c7d4 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -184,6 +184,16 @@ class Replay(Resource): #: SC2 Expansion. One of 'WoL', 'HotS' expasion = str() + #: True of the game was resumed from a replay + resume_from_replay = False + + #: A flag marking which method was used to resume from replay. Unknown interpretation. + resume_method = None + + #: Lists info for each user that is resuming from replay. + resume_user_info = None + + def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.engine, **options): super(Replay, self).__init__(replay_file, filename, **options) self.datapack = None diff --git a/test_replays/test_all.py b/test_replays/test_all.py index dbbfd157..5040b4b9 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -227,6 +227,8 @@ def test_oracle_parsing(self): def test_resume_from_replay(self): replay = sc2reader.load_replay("test_replays/2.0.3.24764/resume_from_replay.SC2Replay") + self.assertTrue(replay.resume_from_replay) + self.assertEqual(replay.resume_method, 0) def test_clan_players(self): replay = sc2reader.load_replay("test_replays/2.0.4.24944/Lunar Colony V.SC2Replay") From e67216866e1d29e0d7b37e862165320a7f362155 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 17 Nov 2013 18:33:45 -0500 Subject: [PATCH 005/116] Remove unused player_names. closes #158. --- sc2reader/resources.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sc2reader/resources.py b/sc2reader/resources.py index d9f8c7d4..ba02eebd 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -203,7 +203,6 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.load_level = None #default values, filled in during file read - self.player_names = list() self.other_people = set() self.speed = "" self.type = "" From a3153db03a5ed478b64f3a33a0ea9dbdf3d54856 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 21:03:10 -0500 Subject: [PATCH 006/116] Remove map specific attributes from the listing. People that want map attribute information can run the relevant s2gs files through and get proper mappings for their use case. --- sc2reader/data/attributes.json | 32 +------------------------------- sc2reader/objects.py | 5 ++++- 2 files changed, 5 insertions(+), 32 deletions(-) diff --git a/sc2reader/data/attributes.json b/sc2reader/data/attributes.json index cc2149b2..d2d0eab4 100644 --- a/sc2reader/data/attributes.json +++ b/sc2reader/data/attributes.json @@ -1,35 +1,5 @@ { "attributes": { - "0001": [ - "Korhal (Urban)", - { - "0001": "Unclassified game type.", - "0002": "4v4 Team Monobattles", - "0003": "Work with your team to select a strong composition of units", - "0004": "Each player must select a single combat unit at the start of the game." - } - ], - "0002": [ - "Rated", - { - "0001": "Yes", - "0002": "No" - } - ], - "0003": [ - "Balance Teams", - { - "0001": "Yes", - "0002": "No" - } - ], - "0004": [ - "Ship Limit", - { - "0001": "No", - "0002": "Yes" - } - ], "0500": [ "Controller", { @@ -1046,4 +1016,4 @@ ] }, "decisions": "(dp0\nc__builtin__\nfrozenset\np1\n((lp2\nS'Hard'\np3\naVHarder\np4\na(I3004\nS'Hard'\np5\ntp6\natp7\nRp8\ng4\nsg1\n((lp9\n(I2001\nS'1v1'\np10\ntp11\naS'1 v 1'\np12\naV1v1\np13\natp14\nRp15\ng13\nsg1\n((lp16\n(I3104\nS'AB04'\np17\ntp18\naS'Agressive Push'\np19\naVAggressive Push\np20\natp21\nRp22\ng20\nsg1\n((lp23\nS'Agressive Push'\np24\naVAggressive Push\np25\na(I3199\nS'AB04'\np26\ntp27\natp28\nRp29\ng25\nsg1\n((lp30\nV6v6\np31\naS'6 v 6'\np32\na(I2001\nS'6v6'\np33\ntp34\natp35\nRp36\ng31\nsg1\n((lp37\nS'Agressive Push'\np38\na(I3102\nS'AB04'\np39\ntp40\naVAggressive Push\np41\natp42\nRp43\ng41\nsg1\n((lp44\nI2003\naVTeams2v2\np45\naS'Team'\np46\natp47\nRp48\ng45\nsg1\n((lp49\nVLadder\np50\na(I3009\nS'Amm'\np51\ntp52\naS'Automated Match Making'\np53\natp54\nRp55\ng50\nsg1\n((lp56\n(I2001\nS'5v5'\np57\ntp58\naS'5 v 5'\np59\naV5v5\np60\natp61\nRp62\ng60\nsg1\n((lp63\nI3141\naVAI Build (Terran)\np64\naS'AI Build'\np65\natp66\nRp67\ng64\nsg1\n((lp68\n(I2001\nS'3v3'\np69\ntp70\naS'3 v 3'\np71\naV3v3\np72\natp73\nRp74\ng72\nsg1\n((lp75\nI3142\naVAI Build (Terran)\np76\naS'AI Build'\np77\natp78\nRp79\ng76\nsg1\n((lp80\n(I3200\nS'AB04'\np81\ntp82\naS'Agressive Push'\np83\naVAggressive Push\np84\natp85\nRp86\ng84\nsg1\n((lp87\nVAI Build (Protoss)\np88\naI3174\naS'AI Build'\np89\natp90\nRp91\ng88\nsg1\n((lp92\nS'Very Hard'\np93\naVElite\np94\na(I3004\nS'VyHd'\np95\ntp96\natp97\nRp98\ng94\nsg1\n((lp99\nS'Agressive Push'\np100\naVAggressive Push\np101\na(I3167\nS'AB04'\np102\ntp103\natp104\nRp105\ng101\nsg1\n((lp106\nI3204\naVAI Build (Zerg)\np107\naS'AI Build'\np108\natp109\nRp110\ng107\nsg1\n((lp111\nVInsane\np112\naS'Cheater 3 (Insane)'\np113\na(I3004\nS'Insa'\np114\ntp115\natp116\nRp117\ng112\nsg1\n((lp118\n(I3007\nS'Watc'\np119\ntp120\naS'Observer'\np121\naS'Watcher'\np122\natp123\nRp124\ng121\nsg1\n((lp125\nI3205\naVAI Build (Zerg)\np126\naS'AI Build'\np127\natp128\nRp129\ng126\nsg1\n((lp130\nVTeams5v5\np131\naI2007\naS'Team'\np132\natp133\nRp134\ng131\nsg1\n((lp135\n(I2001\nS'FFA'\np136\ntp137\naVFFA\np138\naS'Free For All'\np139\natp140\nRp141\ng138\nsg1\n((lp142\nS'Unknown'\np143\naI2012\naS'Team'\np144\natp145\nRp146\ng144\nsg1\n((lp147\nI3206\naVAI Build (Zerg)\np148\naS'AI Build'\np149\natp150\nRp151\ng148\nsg1\n((lp152\n(I3168\nS'AB04'\np153\ntp154\naS'Agressive Push'\np155\naVAggressive Push\np156\natp157\nRp158\ng156\nsg1\n((lp159\nI3172\naVAI Build (Protoss)\np160\naS'AI Build'\np161\natp162\nRp163\ng160\nsg1\n((lp164\nS'Level 1 (Very Easy)'\np165\na(I3004\nS'VyEy'\np166\ntp167\naVVery Easy\np168\natp169\nRp170\ng168\nsg1\n((lp171\nS'Agressive Push'\np172\naVAggressive Push\np173\na(I3135\nS'AB04'\np174\ntp175\natp176\nRp177\ng173\nsg1\n((lp178\nV2v2\np179\naS'2 v 2'\np180\na(I2001\nS'2v2'\np181\ntp182\natp183\nRp184\ng179\nsg1\n((lp185\nS'Agressive Push'\np186\na(I3166\nS'AB04'\np187\ntp188\naVAggressive Push\np189\natp190\nRp191\ng189\nsg1\n((lp192\nVTeamsFFA\np193\naI2006\naS'Team'\np194\natp195\nRp196\ng193\nsg1\n((lp197\nVAI Build (Terran)\np198\naS'AI Build'\np199\naI3143\natp200\nRp201\ng198\nsg1\n((lp202\nVTeams7v7\np203\naI2011\naS'Team'\np204\natp205\nRp206\ng203\nsg1\n((lp207\nVMedium\np208\naS'Level 3 (Medium)'\np209\na(I3004\nS'Medi'\np210\ntp211\natp212\nRp213\ng208\nsg1\n((lp214\nI3140\naVAI Build (Terran)\np215\naS'AI Build'\np216\natp217\nRp218\ng215\nsg1\n((lp219\nS'Level 2 (Easy)'\np220\na(I3004\nS'Easy'\np221\ntp222\naVEasy\np223\natp224\nRp225\ng223\nsg1\n((lp226\n(I3136\nS'AB04'\np227\ntp228\naS'Agressive Push'\np229\naVAggressive Push\np230\natp231\nRp232\ng230\nsg1\n((lp233\nI2008\naVTeams6v6\np234\naS'Team'\np235\natp236\nRp237\ng234\nsg1\n((lp238\nS'Agressive Push'\np239\naVAggressive Push\np240\na(I3103\nS'AB04'\np241\ntp242\natp243\nRp244\ng240\nsg1\n((lp245\nV4v4\np246\naS'4 v 4'\np247\na(I2001\nS'4v4'\np248\ntp249\natp250\nRp251\ng246\nsg1\n((lp252\nS'Agressive Push'\np253\na(I3134\nS'AB04'\np254\ntp255\naVAggressive Push\np256\natp257\nRp258\ng256\nsg1\n((lp259\nVTeams1v1\np260\naI2002\naS'Team'\np261\natp262\nRp263\ng260\nsg1\n((lp264\nI3139\naVAI Build (Terran)\np265\naS'AI Build'\np266\natp267\nRp268\ng265\nsg1\n((lp269\nVAI Build (Zerg)\np270\naS'AI Build'\np271\naI3207\natp272\nRp273\ng270\nsg1\n((lp274\nI3171\naVAI Build (Protoss)\np275\naS'AI Build'\np276\natp277\nRp278\ng275\nsg1\n((lp279\nI3173\naS'AI Build'\np280\naVAI Build (Protoss)\np281\natp282\nRp283\ng281\nsg1\n((lp284\nVTeams3v3\np285\naI2004\naS'Team'\np286\natp287\nRp288\ng285\nsg1\n((lp289\nVAI Build (Protoss)\np290\naS'AI Build'\np291\naI3175\natp292\nRp293\ng290\nsg1\n((lp294\nVTeams4v4\np295\naI2005\naS'Team'\np296\natp297\nRp298\ng295\nsg1\n((lp299\nI3203\naVAI Build (Zerg)\np300\naS'AI Build'\np301\natp302\nRp303\ng300\nsg1\n((lp304\nS'Agressive Push'\np305\na(I3198\nS'AB04'\np306\ntp307\naVAggressive Push\np308\natp309\nRp310\ng308\ns." -} \ No newline at end of file +} diff --git a/sc2reader/objects.py b/sc2reader/objects.py index a0557145..e5391b66 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -62,6 +62,7 @@ def __repr__(self): return str(self) +@log_utils.loggable class Attribute(object): def __init__(self, header, attr_id, player, value): @@ -70,7 +71,9 @@ def __init__(self, header, attr_id, player, value): self.player = player if self.id not in LOBBY_PROPERTIES: - raise ValueError("Unknown attribute id: "+self.id) + self.logger.info("Unknown attribute id: {0}".format(self.id)) + self.name = "Unknown" + self.value = None else: self.name, lookup = LOBBY_PROPERTIES[self.id] self.value = lookup[value.strip("\x00 ")[::-1]] From 6fb12e825f421533ec11a48a5cdcc1ab996ebbb7 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 21:15:20 -0500 Subject: [PATCH 007/116] Raise an informative error on corrupt tracker file This way people can reliably catch this issue and deal with it as they wish. --- sc2reader/exceptions.py | 4 ++++ sc2reader/resources.py | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/sc2reader/exceptions.py b/sc2reader/exceptions.py index 15845101..caf13b86 100644 --- a/sc2reader/exceptions.py +++ b/sc2reader/exceptions.py @@ -10,6 +10,10 @@ class SC2ReaderLocalizationError(SC2ReaderError): pass +class CorruptTrackerFileError(SC2ReaderError): + pass + + class MPQError(SC2ReaderError): pass diff --git a/sc2reader/resources.py b/sc2reader/resources.py index ba02eebd..0a806ca3 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -16,7 +16,7 @@ from sc2reader import readers from sc2reader import exceptions from sc2reader.data import builds as datapacks -from sc2reader.exceptions import SC2ReaderLocalizationError +from sc2reader.exceptions import SC2ReaderLocalizationError, CorruptTrackerFileError from sc2reader.objects import Participant, Observer, Computer, Team, PlayerSummary, Graph, BuildEntry, MapInfo from sc2reader.constants import REGIONS, GAME_SPEED_FACTOR, LOBBY_PROPERTIES @@ -194,7 +194,7 @@ class Replay(Resource): resume_user_info = None - def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.engine, **options): + def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.engine, do_tracker_events=True, **options): super(Replay, self).__init__(replay_file, filename, **options) self.datapack = None self.raw_data = dict() @@ -289,13 +289,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.load_players() # Load tracker events if requested - if load_level >= 3: + if load_level >= 3 and do_tracker_events: self.load_level = 3 for data_file in ['replay.tracker.events']: self._read_data(data_file, self._get_reader(data_file)) self.load_tracker_events() - # Load events if requested if load_level >= 4: self.load_level = 4 @@ -305,6 +304,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en # Run this replay through the engine as indicated if engine: + resume_events = [ev for ev in self.game_events if ev.name == 'HijackReplayGameEvent'] + if self.base_build <= 26490 and self.tracker_events and len(resume_events) > 0: + raise CorruptTrackerFileError( + "Cannot run engine on resumed games with tracker events. Run again with the " + + "do_tracker_events=False option to generate context without tracker events.") + engine.run(self) def load_details(self): From caeb6ca36492092f81e1d6c0c8cfc2ecb1fdd939 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 21:18:50 -0500 Subject: [PATCH 008/116] Fix python3 bug in plugin error handling routine. --- sc2reader/engine/engine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sc2reader/engine/engine.py b/sc2reader/engine/engine.py index 2788bcc6..b72b80b0 100644 --- a/sc2reader/engine/engine.py +++ b/sc2reader/engine/engine.py @@ -178,11 +178,11 @@ def run(self, replay): else: new_events.appendleft(new_event) except Exception as e: - if event_handler.im_self.name in ['ContextLoader']: + if event_handler.__self__.name in ['ContextLoader']: # Certain built in plugins should probably still cause total failure raise # Maybe?? else: - new_event = PluginExit(event_handler.im_self, code=1, details=dict(error=e)) + new_event = PluginExit(event_handler.__self__, code=1, details=dict(error=e)) new_events.append(new_event) event_queue.extendleft(new_events) From 2b35c07e09eceafa47a0d1c9470bf3e5ffe18725 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 22:04:23 -0500 Subject: [PATCH 009/116] Fixes #160 with non back compatible changes. Renames all ability events as following: * AbilityEvent -> CommandEvent * AbilityEvent -> BasicCommandEvent * TargetAbilityEvent -> TargetUnitCommandEvent * LocationAbilityEvent -> TargetPointCommandEvent As such, all references to these classes, statements that check the event name, and engine plugin event handlers need to be renamed. Its not ideal but it is much better than being wrong. --- sc2reader/data/__init__.py | 2 +- sc2reader/engine/engine.py | 18 +++---- sc2reader/engine/plugins/apm.py | 4 +- sc2reader/engine/plugins/context.py | 4 +- sc2reader/events/game.py | 67 ++++++++++++++++----------- sc2reader/events/tracker.py | 2 +- sc2reader/factories/plugins/replay.py | 4 +- sc2reader/scripts/sc2parse.py | 2 +- sc2reader/scripts/sc2replayer.py | 4 +- 9 files changed, 61 insertions(+), 46 deletions(-) diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index fd345a34..c9427572 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -62,7 +62,7 @@ def __init__(self, unit_id): self.killed_by = None #: The unique in-game id for this unit. The id can sometimes be zero because - #: TargetAbilityEvents will create a new unit with id zero when a unit + #: TargetUnitCommandEvents will create a new unit with id zero when a unit #: behind the fog of war is targetted. self.id = unit_id diff --git a/sc2reader/engine/engine.py b/sc2reader/engine/engine.py index b72b80b0..d527db36 100644 --- a/sc2reader/engine/engine.py +++ b/sc2reader/engine/engine.py @@ -18,14 +18,14 @@ class GameEngine(object): Example Usage:: class Plugin1(): - def handleAbilityEvent(self, event, replay): + def handleCommandEvent(self, event, replay): pass class Plugin2(): def handleEvent(self, event, replay): pass - def handleTargetAbilityEvent(self, event, replay): + def handleTargetUnitCommandEvent(self, event, replay): pass ... @@ -35,11 +35,11 @@ def handleTargetAbilityEvent(self, event, replay): engine.reigster_plugin(Plugin(5)) engine.run(replay) - Calls functions in the following order for a ``TargetAbilityEvent``:: + Calls functions in the following order for a ``TargetUnitCommandEvent``:: - Plugin1.handleAbilityEvent(event, replay) + Plugin1.handleCommandEvent(event, replay) Plugin2.handleEvent(event, replay) - Plugin2.handleTargetAbilityEvent(event, replay) + Plugin2.handleTargetUnitCommandEvent(event, replay) Plugin Specification @@ -57,7 +57,7 @@ def handleEventName(self, event, replay) * handleMessageEvent - called for events in replay.message.events * handleGameEvent - called for events in replay.game.events * handleTrackerEvent - called for events in replay.tracker.events - * handleAbilityEvent - called for all types of ability events + * handleCommandEvent - called for all types of command events * handleControlGroupEvent - called for all player control group events Plugins may also handle optional ``InitGame`` and ``EndGame`` events generated @@ -90,7 +90,7 @@ def handleEvent(self, event, replay): return ... - def handleAbilityEvent(self, event, replay): + def handleCommandEvent(self, event, replay): try: possibly_throwing_error() catch Error as e: @@ -204,8 +204,8 @@ def _get_plugin_event_handlers(self, plugin, event): handlers.append(getattr(plugin, 'handleGameEvent', None)) if isinstance(event, TrackerEvent) and hasattr(plugin, 'handleTrackerEvent'): handlers.append(getattr(plugin, 'handleTrackerEvent', None)) - if isinstance(event, AbilityEvent) and hasattr(plugin, 'handleAbilityEvent'): - handlers.append(getattr(plugin, 'handleAbilityEvent', None)) + if isinstance(event, CommandEvent) and hasattr(plugin, 'handleCommandEvent'): + handlers.append(getattr(plugin, 'handleCommandEvent', None)) if isinstance(event, ControlGroupEvent) and hasattr(plugin, 'handleControlGroupEvent'): handlers.append(getattr(plugin, 'handleControlGroupEvent', None)) if hasattr(plugin, 'handle'+event.name): diff --git a/sc2reader/engine/plugins/apm.py b/sc2reader/engine/plugins/apm.py index 42d44185..137e1458 100644 --- a/sc2reader/engine/plugins/apm.py +++ b/sc2reader/engine/plugins/apm.py @@ -7,7 +7,7 @@ class APMTracker(object): """ Builds ``player.aps`` and ``player.apm`` dictionaries where an action is - any Selection, ControlGroup, or Ability event. + any Selection, ControlGroup, or Command event. Also provides ``player.avg_apm`` which is defined as the sum of all the above actions divided by the number of seconds played by the player (not @@ -31,7 +31,7 @@ def handleSelectionEvent(self, event, replay): event.player.aps[event.second] += 1 event.player.apm[int(event.second/60)] += 1 - def handleAbilityEvent(self, event, replay): + def handleCommandEvent(self, event, replay): event.player.aps[event.second] += 1 event.player.apm[int(event.second/60)] += 1 diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index feb013c5..b6b67af9 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -20,7 +20,7 @@ def handleGameEvent(self, event, replay): def handleMessageEvent(self, event, replay): self.load_message_game_player(event, replay) - def handleAbilityEvent(self, event, replay): + def handleCommandEvent(self, event, replay): if not replay.datapack: return @@ -43,7 +43,7 @@ def handleAbilityEvent(self, event, replay): elif event.other_unit_id is not None: self.logger.error("Other unit {0} not found".format(event.other_unit_id)) - def handleTargetAbilityEvent(self, event, replay): + def handleTargetUnitCommandEvent(self, event, replay): if not replay.datapack: return diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 4f9d6735..29945a4e 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -105,31 +105,31 @@ def __init__(self, frame, pid, data): def create_command_event(frame, pid, data): ability_type = data['data'][0] if ability_type == 'None': - return AbilityEvent(frame, pid, data) + return BasicCommandEvent(frame, pid, data) elif ability_type == 'TargetUnit': - return TargetAbilityEvent(frame, pid, data) + return TargetUnitCommandEvent(frame, pid, data) elif ability_type == 'TargetPoint': - return LocationAbilityEvent(frame, pid, data) + return TargetPointCommandEvent(frame, pid, data) elif ability_type == 'Data': - return SelfAbilityEvent(frame, pid, data) + return DataCommandEvent(frame, pid, data) @loggable -class AbilityEvent(GameEvent): +class CommandEvent(GameEvent): """ Ability events are generated when ever a player in the game issues a command to a unit or group of units. They are split into three subclasses of ability, each with their own set of associated data. The attributes listed below are shared across all ability event types. - See :class:`LocationAbilityEvent`, :class:`TargetAbilityEvent`, and :class:`SelfAbilityEvent` - for individual details. + See :class:`TargetPointCommandEvent`, :class:`TargetUnitCommandEvent`, and + :class:`DataCommandEvent` for individual details. """ def __init__(self, frame, pid, data): - super(AbilityEvent, self).__init__(frame, pid) + super(CommandEvent, self).__init__(frame, pid) #: Flags on the command??? self.flags = data['flags'] @@ -235,25 +235,38 @@ def __str__(self): return string -class LocationAbilityEvent(AbilityEvent): +class BasicCommandEvent(CommandEvent): """ - Extends :class:`AbilityEvent` + Extends :class:`CommandEvent` + + This event is recorded for events that have no extra information recorded. + + Note that like all CommandEvents, the event will be recorded regardless + of whether or not the command was successful. + """ + def __init__(self, frame, pid, data): + super(TargetPointCommandEvent, self).__init__(frame, pid, data) + + +class TargetPointCommandEvent(CommandEvent): + """ + Extends :class:`CommandEvent` This event is recorded when ever a player issues a command that targets a location and NOT a unit. Commands like Psistorm, Attack Move, Fungal Growth, and EMP fall under this category. - Note that like all AbilityEvents, the event will be recorded regardless + Note that like all CommandEvents, the event will be recorded regardless of whether or not the command was successful. """ def __init__(self, frame, pid, data): - super(LocationAbilityEvent, self).__init__(frame, pid, data) + super(TargetPointCommandEvent, self).__init__(frame, pid, data) #: The x coordinate of the target. Available for TargetPoint and TargetUnit type events. - self.x = self.ability_type_data['point'].get('x', 0)/4096.0 + self.x = self.ability_type_data['point'].get('x', 0) / 4096.0 #: The y coordinate of the target. Available for TargetPoint and TargetUnit type events. - self.y = self.ability_type_data['point'].get('y', 0)/4096.0 + self.y = self.ability_type_data['point'].get('y', 0) / 4096.0 #: The z coordinate of the target. Available for TargetPoint and TargetUnit type events. self.z = self.ability_type_data['point'].get('z', 0) @@ -262,18 +275,19 @@ def __init__(self, frame, pid, data): self.location = (self.x, self.y, self.z) -class TargetAbilityEvent(AbilityEvent): +class TargetUnitCommandEvent(CommandEvent): """ - Extends :class:`AbilityEvent` + Extends :class:`CommandEvent` - TargetAbilityEvents are recorded when ever a player issues a command that targets a unit. + This event is recorded when ever a player issues a command that targets a unit. The location of the target unit at the time of the command is also recorded. Commands like Chronoboost, Transfuse, and Snipe fall under this category. - Note that all AbilityEvents are recorded regardless of whether or not the command was successful. + Note that like all CommandEvents, the event will be recorded regardless + of whether or not the command was successful. """ def __init__(self, frame, pid, data): - super(TargetAbilityEvent, self).__init__(frame, pid, data) + super(TargetUnitCommandEvent, self).__init__(frame, pid, data) #: Flags set on the target unit. Available for TargetUnit type events self.target_flags = self.ability_type_data.get('flags', None) @@ -301,10 +315,10 @@ def __init__(self, frame, pid, data): self.upkeep_player_id = self.ability_type_data.get('upkeep_player_id', None) #: The x coordinate of the target. Available for TargetPoint and TargetUnit type events. - self.x = self.ability_type_data['point'].get('x', 0)/4096.0 + self.x = self.ability_type_data['point'].get('x', 0) / 4096.0 #: The y coordinate of the target. Available for TargetPoint and TargetUnit type events. - self.y = self.ability_type_data['point'].get('y', 0)/4096.0 + self.y = self.ability_type_data['point'].get('y', 0) / 4096.0 #: The z coordinate of the target. Available for TargetPoint and TargetUnit type events. self.z = self.ability_type_data['point'].get('z', 0) @@ -313,17 +327,18 @@ def __init__(self, frame, pid, data): self.location = (self.x, self.y, self.z) -class SelfAbilityEvent(AbilityEvent): +class DataCommandEvent(CommandEvent): """ - Extends :class:`AbilityEvent` + Extends :class:`CommandEvent` - SelfAbilityEvents are recorded when ever a player issues a command that has no target. Commands + DataCommandEvent are recorded when ever a player issues a command that has no target. Commands like Burrow, SeigeMode, Train XYZ, and Stop fall under this category. - Note that all AbilityEvents are recorded regardless of whether or not the command was successful. + Note that like all CommandEvents, the event will be recorded regardless + of whether or not the command was successful. """ def __init__(self, frame, pid, data): - super(SelfAbilityEvent, self).__init__(frame, pid, data) + super(DataCommandEvent, self).__init__(frame, pid, data) #: Other target data. Available for Data type events. self.target_data = self.ability_type_data.get('data', None) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 646fb3f8..b8967150 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -222,7 +222,7 @@ class UnitBornEvent(TrackerEvent): Unfortunately, units that are born do not have events marking their beginnings like :class:`UnitInitEvent` and :class:`UnitDoneEvent` do. The closest thing to it are the - :class:`~sc2reader.event.game.AbilityEvent` game events where the ability is a train unit + :class:`~sc2reader.event.game.CommandEvent` game events where the command is a train unit command. """ def __init__(self, frames, data, build): diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index 40401196..ad4c3efb 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -94,7 +94,7 @@ def toDict(replay): def APMTracker(replay): """ Builds ``player.aps`` and ``player.apm`` dictionaries where an action is - any Selection, Hotkey, or Ability event. + any Selection, Hotkey, or Command event. Also provides ``player.avg_apm`` which is defined as the sum of all the above actions divided by the number of seconds played by the player (not @@ -106,7 +106,7 @@ def APMTracker(replay): player.seconds_played = replay.length.seconds for event in player.events: - if event.name == 'SelectionEvent' or 'AbilityEvent' in event.name or 'ControlGroup' in event.name: + if event.name == 'SelectionEvent' or 'CommandEvent' in event.name or 'ControlGroup' in event.name: player.aps[event.second] += 1 player.apm[int(event.second/60)] += 1 diff --git a/sc2reader/scripts/sc2parse.py b/sc2reader/scripts/sc2parse.py index b39fd432..d0808340 100755 --- a/sc2reader/scripts/sc2parse.py +++ b/sc2reader/scripts/sc2parse.py @@ -48,7 +48,7 @@ def main(): human.pids = set([human.pid for human in replay.humans]) event_pids = set([event.player.pid for event in replay.events if getattr(event, 'player', None)]) player_pids = set([player.pid for player in replay.players if player.is_human]) - ability_pids = set([event.player.pid for event in replay.events if 'AbilityEvent' in event.name]) + ability_pids = set([event.player.pid for event in replay.events if 'CommandEvent' in event.name]) if human.pids != event_pids: print('Event Pid problem! pids={pids} but event pids={event_pids}'.format(pids=human.pids, event_pids=event_pids)) print(' with {path}: {build} - {real_type} on {map_name} - Played {start_time}'.format(path=path, **replay.__dict__)) diff --git a/sc2reader/scripts/sc2replayer.py b/sc2reader/scripts/sc2replayer.py index cf373ed1..7a72c7ed 100755 --- a/sc2reader/scripts/sc2replayer.py +++ b/sc2reader/scripts/sc2replayer.py @@ -45,7 +45,7 @@ def getch(): def main(): parser = argparse.ArgumentParser( description="""Step by step replay of game events; shows only the - Initialization, Ability, and Selection events by default. Press any + Initialization, Command, and Selection events by default. Press any key to advance through the events in sequential order.""" ) @@ -77,7 +77,7 @@ def main(): # Loop through the events for event in events: - if isinstance(event, AbilityEvent) or \ + if isinstance(event, CommandEvent) or \ isinstance(event, SelectionEvent) or \ isinstance(event, PlayerLeaveEvent) or \ isinstance(event, GameStartEvent) or \ From 72da6aeae6ef1bbf9dc45fa544879d50d1fb87f6 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 22:19:08 -0500 Subject: [PATCH 010/116] Remove some old % style string formatting. --- sc2reader/decoders.py | 2 +- sc2reader/events/game.py | 6 +++--- sc2reader/events/message.py | 2 +- sc2reader/objects.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sc2reader/decoders.py b/sc2reader/decoders.py index bb0bbd4c..63324649 100644 --- a/sc2reader/decoders.py +++ b/sc2reader/decoders.py @@ -374,6 +374,6 @@ def read_struct(self, datatype=None): data = self.read_vint() else: - raise TypeError("Unknown Data Structure: '%s'" % datatype) + raise TypeError("Unknown Data Structure: '{0}'".format(datatype)) return data diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 29945a4e..998940ef 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -38,7 +38,7 @@ def __init__(self, frame, pid): def _str_prefix(self): player_name = self.player.name if getattr(self, 'pid', 16) != 16 else "Global" - return "%s\t%-15s " % (Length(seconds=int(self.frame/16)), player_name) + return "{0}\t{1:<15} ".format(Length(seconds=int(self.frame / 16)), player_name) def __str__(self): return self._str_prefix() + self.name @@ -547,7 +547,7 @@ def __init__(self, frame, pid, data): self.custom_resource = self.resources[3] if len(self.resources) >= 4 else None def __str__(self): - return self._str_prefix() + " transfer {0} minerals, {1} gas, {2} terrazine, and {3} custom to {4}" % (self.minerals, self.vespene, self.terrazine, self.custom, self.reciever) + return self._str_prefix() + " transfer {0} minerals, {1} gas, {2} terrazine, and {3} custom to {4}".format(self.minerals, self.vespene, self.terrazine, self.custom, self.recipient) class ResourceRequestEvent(GameEvent): @@ -573,7 +573,7 @@ def __init__(self, frame, pid, data): self.custom_resource = self.resources[3] if len(self.resources) >= 4 else None def __str__(self): - return self._str_prefix() + " requests {0} minerals, {1} gas, {2} terrazine, and {3} custom" % (self.minerals, self.vespene, self.terrazine, self.custom) + return self._str_prefix() + " requests {0} minerals, {1} gas, {2} terrazine, and {3} custom".format(self.minerals, self.vespene, self.terrazine, self.custom) class ResourceRequestFulfillEvent(GameEvent): diff --git a/sc2reader/events/message.py b/sc2reader/events/message.py index cf99ac91..e9859733 100644 --- a/sc2reader/events/message.py +++ b/sc2reader/events/message.py @@ -26,7 +26,7 @@ def __init__(self, frame, pid): def _str_prefix(self): player_name = self.player.name if getattr(self, 'pid', 16) != 16 else "Global" - return "%s\t%-15s " % (Length(seconds=int(self.frame/16)), player_name) + return "{0}\t{1:<15} ".format(Length(seconds=int(self.frame / 16)), player_name) def __str__(self): return self._str_prefix() + self.name diff --git a/sc2reader/objects.py b/sc2reader/objects.py index e5391b66..784ef9e2 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -82,7 +82,7 @@ def __repr__(self): return str(self) def __str__(self): - return "[%s] %s: %s" % (self.player, self.name, self.value) + return "[{0}] {1}: {2}".format(self.player, self.name, self.value) class Entity(object): From 6d13524ba8fbde2fa457189811eb0828666bf4c4 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 22:22:13 -0500 Subject: [PATCH 011/116] And this is why you run tests before pushing. refs #160 --- sc2reader/events/game.py | 2 +- test_replays/test_all.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 998940ef..e3948f26 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -245,7 +245,7 @@ class BasicCommandEvent(CommandEvent): of whether or not the command was successful. """ def __init__(self, frame, pid, data): - super(TargetPointCommandEvent, self).__init__(frame, pid, data) + super(BasicCommandEvent, self).__init__(frame, pid, data) class TargetPointCommandEvent(CommandEvent): diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 5040b4b9..ba7c0ea8 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -197,20 +197,20 @@ def test_hots_pids(self): replay = sc2reader.load_replay(replayfilename) self.assertEqual(replay.expansion, "HotS") player_pids = set([player.pid for player in replay.players if player.is_human]) - ability_pids = set([event.player.pid for event in replay.events if "AbilityEvent" in event.name]) + ability_pids = set([event.player.pid for event in replay.events if "CommandEvent" in event.name]) self.assertEqual(ability_pids, player_pids) def test_wol_pids(self): replay = sc2reader.load_replay("test_replays/1.5.4.24540/ggtracker_1471849.SC2Replay") self.assertEqual(replay.expansion, "WoL") - ability_pids = set([event.player.pid for event in replay.events if "AbilityEvent" in event.name]) + ability_pids = set([event.player.pid for event in replay.events if "CommandEvent" in event.name]) player_pids = set([player.pid for player in replay.players]) self.assertEqual(ability_pids, player_pids) def test_hots_hatchfun(self): replay = sc2reader.load_replay("test_replays/2.0.0.24247/molten.SC2Replay") player_pids = set([ player.pid for player in replay.players]) - spawner_pids = set([ event.player.pid for event in replay.events if "TargetAbilityEvent" in event.name and event.ability.name == "SpawnLarva"]) + spawner_pids = set([ event.player.pid for event in replay.events if "TargetUnitCommandEvent" in event.name and event.ability.name == "SpawnLarva"]) self.assertTrue(spawner_pids.issubset(player_pids)) def test_hots_vs_ai(self): @@ -331,7 +331,7 @@ def test_gameheartnormalizer_plugin(self): # Not a GameHeart game! replay = sc2reader.load_replay("test_replays/2.0.0.24247/molten.SC2Replay") player_pids = set([ player.pid for player in replay.players]) - spawner_pids = set([ event.player.pid for event in replay.events if "TargetAbilityEvent" in event.name and event.ability.name == "SpawnLarva"]) + spawner_pids = set([ event.player.pid for event in replay.events if "TargetUnitCommandEvent" in event.name and event.ability.name == "SpawnLarva"]) self.assertTrue(spawner_pids.issubset(player_pids)) replay = sc2reader.load_replay("test_replays/gameheart/gameheart.SC2Replay") From 665cc1245f60f6c2b0bd837a664390b719ab5bd5 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 1 Dec 2013 22:28:11 -0500 Subject: [PATCH 012/116] Make note of the additional changes in the log. --- CHANGELOG.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f3d95ef3..2f99f148 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,12 +4,19 @@ CHANGELOG 0.7.0 - --------------------------- +* Now a CorruptTrackerFileError is raised when the tracker file is corrupted (generally only older resume_from_replay replays) * Added replay.resume_from_replay flag. See replay.resume_user_info for additional info. * PacketEvent is now ProgressEvent. * SetToHotkeyEvent is now SetControlGroupEvent. * AddToHotkeyEvent is now AddToControlGroupEvent. * GetFromHotkeyEvent is now GetControlGroupEvent. * PlayerAbilityEvent is no longer part of the event hierarchy. +* AbilityEvent doubled as both an abstract and concrete class (very bad, see #160). Now split into: + * AbilityEvent is now CommandEvent + * AbilityEvent is now BasicCommandEvent +* TargetAbilityEvent is now TargetUnitCommandEvent +* LocationAbilityEvent is now TargetPointCommandEvent +* Removed the defunct replay.player_names attribute. * event.name is no longer a class property; it can only be accessed from an event instance. * PingEvents now have new attributes: * event.to_all - true if ping seen by all From 1d9c141e4db4a972bea2ec2058f3e410de1e9894 Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Thu, 5 Dec 2013 22:12:31 -0800 Subject: [PATCH 013/116] adding a missing change from the list --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2f99f148..cc80d239 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,7 @@ CHANGELOG * AbilityEvent is now BasicCommandEvent * TargetAbilityEvent is now TargetUnitCommandEvent * LocationAbilityEvent is now TargetPointCommandEvent +* SelfAbilityEvent is now DataCommandEvent * Removed the defunct replay.player_names attribute. * event.name is no longer a class property; it can only be accessed from an event instance. * PingEvents now have new attributes: From fe86668a8dd67c1bd7ea24d0ad035629c05b7306 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 21:22:04 -0500 Subject: [PATCH 014/116] Remove a couple more defunct replay attributes. --- CHANGELOG.rst | 3 +++ sc2reader/resources.py | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cc80d239..0de49ee4 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -18,6 +18,9 @@ CHANGELOG * LocationAbilityEvent is now TargetPointCommandEvent * SelfAbilityEvent is now DataCommandEvent * Removed the defunct replay.player_names attribute. +* Removed the defunct replay.events_by_type attribute. +* Removed the defunct replay.other_people attribute. + * event.name is no longer a class property; it can only be accessed from an event instance. * PingEvents now have new attributes: * event.to_all - true if ping seen by all diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 0a806ca3..9ad0ed26 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -203,7 +203,6 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.load_level = None #default values, filled in during file read - self.other_people = set() self.speed = "" self.type = "" self.game_type = "" @@ -215,7 +214,6 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.map_hash = "" self.gateway = "" self.events = list() - self.events_by_type = defaultdict(list) self.teams, self.team = list(), dict() self.player = utils.PersonDict() From 9283c33842f924e3e1c781f0fe0c62b4c92d02a3 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 22:46:19 -0500 Subject: [PATCH 015/116] Use generic UnitType and Ability classes for data. The dynamically created classes don't play well with pickle and were unncessarily complex. The only change here is that you can't use this anymore. unit._type_class.__class__.__name__ Instead you can use the shorter: unit._type_class.name No problem. --- CHANGELOG.rst | 1 + sc2reader/data/__init__.py | 77 ++++++++++++++++++++++++++++---------- 2 files changed, 59 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0de49ee4..2e7705b5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,7 @@ CHANGELOG 0.7.0 - --------------------------- +* Use generic UnitType and Ability classes for data. This means no more unit._type_class.__class__.__name__. But hopefully people were not doing that anyway. * Now a CorruptTrackerFileError is raised when the tracker file is corrupted (generally only older resume_from_replay replays) * Added replay.resume_from_replay flag. See replay.resume_user_info for additional info. * PacketEvent is now ProgressEvent. diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index c9427572..9d51723b 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -33,10 +33,7 @@ class Unit(object): - """ - Represents an in-game unit. - """ - + """Represents an in-game unit.""" def __init__(self, unit_id): #: A reference to the player that currently owns this unit. Only available for 2.0.8+ replays. self.owner = None @@ -195,22 +192,64 @@ def __repr__(self): return str(self) +class UnitType(object): + """ Represents an in game unit type """ + def __init__(self, type_id, str_id=None, name=None, title=None, race=None, minerals=0, + vespene=0, supply=0, is_building=False, is_worker=False, is_army=False): + #: The internal integer id representing this unit type + self.id = type_id + + #: The internal string id representing this unit type + self.str_id = str_id + + #: The name of this unit type + self.name = name + + #: The printable title of this unit type; has spaces and possibly punctuation + self.title = title + + #: The race this unit type belongs to + self.race = race + + #: The mineral cost of this unit type + self.minerals = minerals + + #: The vespene cost of this unit type + self.vespene = vespene + + #: The supply cost of this unit type + self.supply = supply + + #: Boolean flagging this unit type as a building + self.is_building = is_building + + #: Boolean flagging this unit type as a worker + self.is_worker = is_worker + + #: Boolean flagging this unit type as an army unit + self.is_army = is_army + + class Ability(object): + """ Represents an in-game ability """ + def __init__(self, id, name=None, title=None, is_build=False, build_time=0, build_unit=None): + #: The internal integer id representing this ability. + self.id = id - #: The internal integer id representing this ability. - id = None + #: The name of this ability + self.name = name - #: The name of this ability - name = "" + #: The printable title of this ability; has spaces and possibly punctuation. + self.title = title - #: Boolean flagging this ability as creating a new unit. - is_build = False + #: Boolean flagging this ability as creating a new unit. + self.is_build = is_build - #: The number of seconds required to build this unit. 0 if not ``is_build``. - build_time = 0 + #: The number of seconds required to build this unit. 0 if not ``is_build``. + self.build_time = build_time - #: A reference to the :class:`Unit` type built by this ability. None if not ``is_build``. - build_unit = None + #: A reference to the :class:`UnitType` type built by this ability. Default to None. + self.build_unit = build_unit @loggable @@ -260,20 +299,20 @@ def change_type(self, unit, new_type, frame): self.logger.error("Unable to change type of {0} to {1} [frame {2}]; unit type not found in build {3}".format(unit, new_type, frame, self.id)) def add_ability(self, ability_id, name, title=None, is_build=False, build_time=None, build_unit=None): - ability = type(str(name), (Ability,), dict( - id=ability_id, + ability = Ability( + ability_id, name=name, title=title or name, is_build=is_build, build_time=build_time, build_unit=build_unit - )) + ) setattr(self, name, ability) self.abilities[ability_id] = ability def add_unit_type(self, type_id, str_id, name, title=None, race='Neutral', minerals=0, vespene=0, supply=0, is_building=False, is_worker=False, is_army=False): - unit = type(str(name), (Unit,), dict( - id=type_id, + unit = UnitType( + type_id, str_id=str_id, name=name, title=title or name, From 4d068bf69e1a2eb03385b979a2cf3d03b7e170d0 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 22:51:20 -0500 Subject: [PATCH 016/116] datapacks is a better word than builds here. --- sc2reader/data/__init__.py | 2 +- sc2reader/resources.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 9d51723b..6edf14a7 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -388,4 +388,4 @@ def load_build(expansion, version): for version in ('base', '23925', '24247', '24764'): hots_builds[version] = load_build('HotS', version) -builds = {'WoL': wol_builds, 'HotS': hots_builds} +datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds} diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 9ad0ed26..c89571fe 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -4,7 +4,6 @@ from collections import defaultdict, namedtuple from datetime import datetime import hashlib -import sys from xml.etree import ElementTree import zlib @@ -15,7 +14,7 @@ from sc2reader import log_utils from sc2reader import readers from sc2reader import exceptions -from sc2reader.data import builds as datapacks +from sc2reader.data import datapacks from sc2reader.exceptions import SC2ReaderLocalizationError, CorruptTrackerFileError from sc2reader.objects import Participant, Observer, Computer, Team, PlayerSummary, Graph, BuildEntry, MapInfo from sc2reader.constants import REGIONS, GAME_SPEED_FACTOR, LOBBY_PROPERTIES From 0e6286fc868a6dabf7b33e8a8ff5d6e52891416b Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:20:57 -0500 Subject: [PATCH 017/116] Replace all references to gateway with region. --- CHANGELOG.rst | 1 + sc2reader/constants.py | 2 +- sc2reader/factories/plugins/replay.py | 2 +- sc2reader/objects.py | 13 +-------- sc2reader/resources.py | 40 +++++++++++++-------------- sc2reader/utils.py | 2 +- 6 files changed, 25 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2e7705b5..37482c05 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,7 @@ CHANGELOG 0.7.0 - --------------------------- +* All references to the gateway attribute have been replaced in favor of region; e.g. replay.region * Use generic UnitType and Ability classes for data. This means no more unit._type_class.__class__.__name__. But hopefully people were not doing that anyway. * Now a CorruptTrackerFileError is raised when the tracker file is corrupted (generally only older resume_from_replay replays) * Added replay.resume_from_replay flag. See replay.resume_user_info for additional info. diff --git a/sc2reader/constants.py b/sc2reader/constants.py index fa65d1c0..7b701dee 100644 --- a/sc2reader/constants.py +++ b/sc2reader/constants.py @@ -108,7 +108,7 @@ COLOR_CODES_INV = dict(zip(COLOR_CODES.values(), COLOR_CODES.keys())) -REGIONS = { +SUBREGIONS = { # United States 'us': { 1: 'us', diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index ad4c3efb..f6b19e79 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -62,7 +62,7 @@ def toDict(replay): # Consolidate replay metadata into dictionary return { - 'gateway': getattr(replay, 'gateway', None), + 'region': getattr(replay, 'region', None), 'map_name': getattr(replay, 'map_name', None), 'file_time': getattr(replay, 'file_time', None), 'filehash': getattr(replay, 'filehash', None), diff --git a/sc2reader/objects.py b/sc2reader/objects.py index 784ef9e2..e7e096b3 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -124,9 +124,6 @@ def __init__(self, sid, slot_data): #: The Battle.net region the entity is registered to self.region = GATEWAY_LOOKUP[int(parts[0])] - #: Deprecated, see Entity.region - self.gateway = self.region - #: The Battle.net subregion the entity is registered to self.subregion = int(parts[2]) @@ -198,9 +195,6 @@ def __init__(self, pid, detail_data, attribute_data): #: The Battle.net region the entity is registered to self.region = GATEWAY_LOOKUP[detail_data['bnet']['region']] - #: Deprecated, see `Player.region` - self.gateway = self.region - #: The Battle.net subregion the entity is registered to self.subregion = detail_data['bnet']['subregion'] @@ -346,12 +340,7 @@ class PlayerSummary(): #: Subregion id of player subregion = int() - #: The player's gateway, such as us, eu - gateway = str() - - #: The player's region, such as na, la, eu or ru. This is - # provided for convenience, but as of 20121018 is strictly a - # function of gateway and subregion. + #: The player's region, such as us, eu, sea region = str() #: unknown1 diff --git a/sc2reader/resources.py b/sc2reader/resources.py index c89571fe..80fbb0e3 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -17,7 +17,7 @@ from sc2reader.data import datapacks from sc2reader.exceptions import SC2ReaderLocalizationError, CorruptTrackerFileError from sc2reader.objects import Participant, Observer, Computer, Team, PlayerSummary, Graph, BuildEntry, MapInfo -from sc2reader.constants import REGIONS, GAME_SPEED_FACTOR, LOBBY_PROPERTIES +from sc2reader.constants import GAME_SPEED_FACTOR, LOBBY_PROPERTIES class Resource(object): @@ -120,8 +120,8 @@ class Replay(Resource): #: The :class:`Length` of the replay in real time adjusted for the game speed real_length = None - #: The gateway the game was played on: us, eu, sea, etc - gateway = str() + #: The region the game was played on: us, eu, sea, etc + region = str() #: An integrated list of all the game events events = list() @@ -211,7 +211,7 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.is_private = False self.map = None self.map_hash = "" - self.gateway = "" + self.region = "" self.events = list() self.teams, self.team = list(), dict() @@ -329,13 +329,13 @@ def load_details(self): self.map_name = details['map_name'] - self.gateway = details['cache_handles'][0].server.lower() + self.region = details['cache_handles'][0].server.lower() self.map_hash = details['cache_handles'][-1].hash self.map_file = details['cache_handles'][-1] #Expand this special case mapping - if self.gateway == 'sg': - self.gateway = 'sea' + if self.region == 'sg': + self.region = 'sea' dependency_hashes = [d.hash for d in details['cache_handles']] if hashlib.sha256('Standard Data: Swarm.SC2Mod'.encode('utf8')).hexdigest() in dependency_hashes: @@ -467,7 +467,7 @@ def get_team(team_id): self.recorder = None entity_names = sorted(map(lambda p: p.name, self.entities)) - hash_input = self.gateway+":"+','.join(entity_names) + hash_input = self.region+":"+','.join(entity_names) self.people_hash = hashlib.sha256(hash_input.encode('utf8')).hexdigest() # The presence of observers and/or computer players makes this not actually ladder @@ -616,17 +616,17 @@ class Map(Resource): #: The map description as written by author description = str() - def __init__(self, map_file, filename=None, gateway=None, map_hash=None, **options): + def __init__(self, map_file, filename=None, region=None, map_hash=None, **options): super(Map, self).__init__(map_file, filename, **options) #: The unique hash used to identify this map on bnet's depots. self.hash = map_hash - #: The gateway this map was posted to. Maps must be posted individually to each gateway. - self.gateway = gateway + #: The region this map was posted to. Maps must be posted individually to each region. + self.region = region #: A URL reference to the location of this map on bnet's depots. - self.url = Map.get_url(gateway, map_hash) + self.url = Map.get_url(self.region, map_hash) #: The opened MPQArchive for this map self.archive = mpyq.MPQArchive(map_file) @@ -672,12 +672,12 @@ def __init__(self, map_file, filename=None, gateway=None, map_hash=None, **optio self.dependencies.append(dependency_node.text) @classmethod - def get_url(cls, gateway, map_hash): + def get_url(cls, region, map_hash): """Builds a download URL for the map from its components.""" - if gateway and map_hash: + if region and map_hash: # it seems like sea maps are stored on us depots. - gateway = 'us' if gateway == 'sea' else gateway - return cls.url_template.format(gateway, map_hash) + region = 'us' if region == 'sea' else region + return cls.url_template.format(region, map_hash) else: return None @@ -837,8 +837,8 @@ def load_translations(self): files.append(utils.DepotFile(file_hash)) self.localization_urls[language] = files - # Grab the gateway from the one of the files - self.gateway = list(self.localization_urls.values())[0][0].server.lower() + # Grab the region from the one of the files + self.region = list(self.localization_urls.values())[0][0].server.lower() # Each of the localization urls points to an XML file with a set of # localization strings and their unique ids. After reading these mappings @@ -1008,9 +1008,9 @@ def load_players(self): settings = self.player_settings[index] player.is_ai = not isinstance(struct[0][1], dict) if not player.is_ai: - player.gateway = self.gateway + player.region = self.region player.subregion = struct[0][1][0][2] - player.region = REGIONS[player.gateway].get(player.subregion, 'Unknown') + player.region = REGIONS[player.region].get(player.subregion, 'Unknown') player.bnetid = struct[0][1][0][3] player.unknown1 = struct[0][1][0] player.unknown2 = struct[0][1][1] diff --git a/sc2reader/utils.py b/sc2reader/utils.py index 94fb5637..e728c983 100644 --- a/sc2reader/utils.py +++ b/sc2reader/utils.py @@ -328,7 +328,7 @@ def toDict(replay): # Consolidate replay metadata into dictionary return { - 'gateway': getattr(replay, 'gateway', None), + 'region': getattr(replay, 'region', None), 'map_name': getattr(replay, 'map_name', None), 'file_time': getattr(replay, 'file_time', None), 'filehash': getattr(replay, 'filehash', None), From d9df519232dd9ac73ba83ed69d9388f4561eaf13 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:21:45 -0500 Subject: [PATCH 018/116] Fix typo. --- sc2reader/data/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 6edf14a7..f4e095f4 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -323,7 +323,7 @@ def add_unit_type(self, type_id, str_id, name, title=None, race='Neutral', miner is_building=is_building, is_worker=is_worker, is_army=is_army, - )) + ) setattr(self, name, unit) self.units[type_id] = unit self.units[str_id] = unit From bd2a8cf23b6450cccbbff7512ef19f118427189e Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:22:28 -0500 Subject: [PATCH 019/116] Use a regular dict for raw data results. --- sc2reader/readers.py | 4 ++-- sc2reader/resources.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index ed9244ce..4ac04c3a 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -8,7 +8,7 @@ from sc2reader.events.game import * from sc2reader.events.message import * from sc2reader.events.tracker import * -from sc2reader.utils import AttributeDict, DepotFile +from sc2reader.utils import DepotFile from sc2reader.decoders import BitPackedDecoder, ByteDecoder @@ -204,7 +204,7 @@ def __call__(self, data, replay): data.byte_align() - return AttributeDict(pings=pings, messages=messages, packets=packets) + return dict(pings=pings, messages=messages, packets=packets) class GameEventsReader_Base(object): diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 80fbb0e3..ff4c3db4 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -480,9 +480,9 @@ def load_message_events(self): if 'replay.message.events' not in self.raw_data: return - self.messages = self.raw_data['replay.message.events'].messages - self.pings = self.raw_data['replay.message.events'].pings - self.packets = self.raw_data['replay.message.events'].packets + self.messages = self.raw_data['replay.message.events']['messages'] + self.pings = self.raw_data['replay.message.events']['pings'] + self.packets = self.raw_data['replay.message.events']['packets'] self.message_events = self.messages+self.pings+self.packets self.events = sorted(self.events + self.message_events, key=lambda e: e.frame) From f58daf7365ef04a041eb934de58701cd592bba00 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:23:27 -0500 Subject: [PATCH 020/116] Remove stray reference. --- sc2reader/resources.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sc2reader/resources.py b/sc2reader/resources.py index ff4c3db4..58e861a1 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -1010,7 +1010,6 @@ def load_players(self): if not player.is_ai: player.region = self.region player.subregion = struct[0][1][0][2] - player.region = REGIONS[player.region].get(player.subregion, 'Unknown') player.bnetid = struct[0][1][0][3] player.unknown1 = struct[0][1][0] player.unknown2 = struct[0][1][1] From b968b577f8771eaf6c32c07e5e588259cb47a8f6 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:24:12 -0500 Subject: [PATCH 021/116] Misc import and documentation improvements. --- sc2reader/__init__.py | 56 +++++++++++++++++++++++++++++++-- sc2reader/events/__init__.py | 5 ++- sc2reader/factories/__init__.py | 2 +- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/sc2reader/__init__.py b/sc2reader/__init__.py index 60b5eead..040febcb 100644 --- a/sc2reader/__init__.py +++ b/sc2reader/__init__.py @@ -1,4 +1,23 @@ # -*- coding: utf-8 -*- +""" + sc2reader + ~~~~~~~~~~~ + + A library for loading data from Starcraft II game resources. + + SC2Factory methods called on the package will be delegated to the default + SC2Factory. To default to a cached factory set one or more of the following + variables in your environment: + + SC2READER_CACHE_DIR = '/absolute/path/to/existing/cache/directory/' + SC2READER_CACHE_MAX_SIZE = MAXIMUM_CACHE_ENTRIES_TO_HOLD_IN_MEMORY + + You can also set the default factory via setFactory, useFileCache, useDictCache, + or useDoubleCache functions. + + :copyright: (c) 2011 by Graylin Kim. + :license: MIT, see LICENSE for more details. +""" from __future__ import absolute_import, print_function, unicode_literals, division __version__ = "0.6.4" @@ -13,12 +32,25 @@ # setup the library logging log_utils.setup() -# For backwards compatibility +# For backwards compatibility, goes away in 0.7 SC2Reader = factories.SC2Factory def setFactory(factory): - # Expose a nice module level interface + """ + :param factory: The new default factory for the package. + + Links the following sc2reader global methods to the specified factory:: + + * sc2reader.load_replay(s) + * sc2reader.load_map(s) + * sc2reader.load_game_summar(y|ies) + * sc2reader.configure + * sc2reader.reset + * sc2reader.register_plugin + + These methods when called will delegate to the factory for execution. + """ module = sys.modules[__name__] module.load_replays = factory.load_replays module.load_replay = factory.load_replay @@ -35,14 +67,34 @@ def setFactory(factory): def useFileCache(cache_dir, **options): + """ + :param cache_dir: Absolute path to the existing cache directory + + Set the default factory to a new FileCachedSC2Factory with the given cache_dir. + All remote resources are saved to the file system for faster access times. + """ setFactory(factories.FileCachedSC2Factory(cache_dir, **options)) def useDictCache(cache_max_size=0, **options): + """ + :param cache_max_size: The maximum number of cache entries to hold in memory + + Set the default factory to a new DictCachedSC2Factory with the given cache_dir. + A limited number of remote resources are cached in memory for faster access times. + """ setFactory(factories.DictCachedSC2Factory(cache_max_size, **options)) def useDoubleCache(cache_dir, cache_max_size=0, **options): + """ + :param cache_dir: Absolute path to the existing cache directory + :param cache_max_size: The maximum number of cache entries to hold in memory + + Set the default factory to a new DoubleCachedSC2Factory with the given cache_dir. + A limited number of remote resources are cached in memory for faster access times. + All remote resources are saved to the file system for faster access times. + """ setFactory(factories.DoubleCachedSC2Factory(cache_dir, cache_max_size, **options)) diff --git a/sc2reader/events/__init__.py b/sc2reader/events/__init__.py index db2cc164..6ceaa632 100644 --- a/sc2reader/events/__init__.py +++ b/sc2reader/events/__init__.py @@ -1,9 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals, division -import sc2reader.events.base -import sc2reader.events.game -import sc2reader.events.message +# Export all events of all types to the package interface +from sc2reader.events import base, game, message, tracker from sc2reader.events.base import * from sc2reader.events.game import * from sc2reader.events.message import * diff --git a/sc2reader/factories/__init__.py b/sc2reader/factories/__init__.py index 583b67ea..c6c469f6 100644 --- a/sc2reader/factories/__init__.py +++ b/sc2reader/factories/__init__.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import +from __future__ import absolute_import, print_function, unicode_literals, division from sc2reader.factories.sc2factory import SC2Factory from sc2reader.factories.sc2factory import FileCachedSC2Factory From 81809e5888c10aeb80b0e0ba9ae9958b28367843 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:29:04 -0500 Subject: [PATCH 022/116] Don't forget the tests. --- test_replays/test_all.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index ba7c0ea8..c91f8dbf 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -245,7 +245,7 @@ def test_send_resources(self): def test_cn_replays(self): replay = sc2reader.load_replay("test_replays/2.0.5.25092/cn1.SC2Replay") - self.assertEqual(replay.gateway, "cn") + self.assertEqual(replay.region, "cn") self.assertEqual(replay.expansion, "WoL") def test_unit_types(self): @@ -320,7 +320,7 @@ def test_factory_plugins(self): self.assertEqual(result["release"], "2.0.5.25092") self.assertEqual(result["game_length"], 986) self.assertEqual(result["real_length"], 704) - self.assertEqual(result["gateway"], "cn") + self.assertEqual(result["region"], "cn") self.assertEqual(result["game_fps"], 16.0) self.assertTrue(result["is_ladder"]) From 03bbdae1d5979c661d4eae8568ce405694ca86ca Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Tue, 10 Dec 2013 23:32:36 -0500 Subject: [PATCH 023/116] Our readers and lambdas can't be pickled. Remove registered readers/datapacks on picking. We won't need them anymore, the replay should already be loaded. --- CHANGELOG.rst | 1 + sc2reader/resources.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 37482c05..fa3cef51 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,7 @@ CHANGELOG 0.7.0 - --------------------------- +* Replays can now be pickled and stored for later consumption. * All references to the gateway attribute have been replaced in favor of region; e.g. replay.region * Use generic UnitType and Ability classes for data. This means no more unit._type_class.__class__.__name__. But hopefully people were not doing that anyway. * Now a CorruptTrackerFileError is raised when the tracker file is corrupted (generally only older resume_from_replay replays) diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 58e861a1..0fc5d5dd 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -603,6 +603,12 @@ def _read_data(self, data_file, reader): elif self.opt.debug and data_file not in ['replay.message.events', 'replay.tracker.events']: raise ValueError("{0} not found in archive".format(data_file)) + def __getstate__(self): + state = self.__dict__.copy() + del state['registered_readers'] + del state['registered_datapacks'] + return state + class Map(Resource): url_template = 'http://{0}.depot.battle.net:1119/{1}.s2ma' From b421a7cd3e70ee05feeaa6c8f138b16c4eacfd00 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Wed, 11 Dec 2013 00:23:36 -0500 Subject: [PATCH 024/116] Initial pass at PTR 2.1 support. --- sc2reader/events/tracker.py | 121 +++++++++++++++++++++++++----------- sc2reader/readers.py | 43 +++++++++++++ sc2reader/resources.py | 4 +- 3 files changed, 131 insertions(+), 37 deletions(-) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index b8967150..8eaaf7a1 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -27,12 +27,30 @@ def load_context(self, replay): pass def _str_prefix(self): - return "{0}\t ".format(Length(seconds=int(self.frame/16))) + return "{0}\t ".format(Length(seconds=int(self.frame / 16))) def __str__(self): return self._str_prefix() + self.name +class PlayerSetupEvent(TrackerEvent): + """ Sent during game setup to help us organize players better """ + def __init__(self, frames, data, build): + super(PlayerSetupEvent, self).__init__(frames) + + #: The player id of the player we are setting up + self.pid = data[0] + + #: The type of this player. One of 1=human, 2=cpu, 3=neutral, 4=hostile + self.type = data[1] + + #: The user id of the player we are setting up. None of not human + self.uid = data[2] + + #: The slot id of the player we are setting up. None if not playing + self.sid = data[3] + + class PlayerStatsEvent(TrackerEvent): """ Player Stats events are generated for all players that were in the game even if they've since @@ -181,10 +199,10 @@ def __init__(self, frames, data, build): self.resources_killed = self.minerals_killed + self.vespene_killed #: The food supply currently used - self.food_used = clamp(self.stats[29])/4096.0 + self.food_used = clamp(self.stats[29]) / 4096.0 #: The food supply currently available - self.food_made = clamp(self.stats[30])/4096.0 + self.food_made = clamp(self.stats[30]) / 4096.0 #: The total mineral value of all active forces self.minerals_used_active_forces = clamp(self.stats[31]) @@ -211,7 +229,7 @@ def __init__(self, frames, data, build): self.ff_vespene_lost_technology = clamp(self.stats[38]) if build >= 26490 else None def __str__(self): - return self._str_prefix()+"{0: >15} - Stats Update".format(self.player) + return self._str_prefix() + "{0: >15} - Stats Update".format(self.player) class UnitBornEvent(TrackerEvent): @@ -255,19 +273,24 @@ def __init__(self, frames, data, build): #: The player object that controls this unit. 0 means neutral unit self.unit_controller = None - #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.x = data[5] * 4 + #: The x coordinate of the center of the born unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.x = data[5] - #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.y = data[6] * 4 + #: The y coordinate of the center of the born unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.y = data[6] #: The map location of the unit birth self.location = (self.x, self.y) + if build < 27950: + self.x = self.x * 4 + self.y = self.y * 4 + self.location = (self.x, self.y) + def __str__(self): - return self._str_prefix()+"{0: >15} - Unit born {1}".format(self.unit_upkeeper, self.unit) + return self._str_prefix() + "{0: >15} - Unit born {1}".format(self.unit_upkeeper, self.unit) class UnitDiedEvent(TrackerEvent): @@ -296,19 +319,39 @@ def __init__(self, frames, data, build): #: The player object of the that killed the unit. Not always available. self.killer = None - #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.x = data[3] * 4 + #: The x coordinate of the center of the dying unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.x = data[3] - #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.y = data[4] * 4 + #: The y coordinate of the center of the dying unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.y = data[4] #: The map location the unit was killed at. self.location = (self.x, self.y) + #: The index portion of the killing unit's id. Available for build 27950+ + self.killer_unit_index = None + + #: The recycle portion of the killing unit's id. Available for build 27950+ + self.killer_unit_recycle = None + + #: The unique id of the unit doing the killing. Available for build 27950+ + self.killer_unit_id = None + + if build < 27950: + self.x = self.x * 4 + self.y = self.y * 4 + self.location = (self.x, self.y) + else: + # Starcraft patch 2.1 introduced killer unit indexes + self.killer_unit_index = data[5] + self.killer_unit_recycle = data[6] + if self.killer_unit_index: + self.killer_unit_id = self.killer_unit_index << 18 | self.killer_unit_recycle + def __str__(self): - return self._str_prefix()+"{0: >15} - Unit died {1}.".format(self.unit.owner, self.unit) + return self._str_prefix() + "{0: >15} - Unit died {1}.".format(self.unit.owner, self.unit) class UnitOwnerChangeEvent(TrackerEvent): @@ -344,7 +387,7 @@ def __init__(self, frames, data, build): self.unit_controller = None def __str__(self): - return self._str_prefix()+"{0: >15} took {1}".format(self.unit_upkeeper, self.unit) + return self._str_prefix() + "{0: >15} took {1}".format(self.unit_upkeeper, self.unit) class UnitTypeChangeEvent(TrackerEvent): @@ -372,7 +415,7 @@ def __init__(self, frames, data, build): self.unit_type_name = data[2].decode('utf8') def __str__(self): - return self._str_prefix()+"{0: >15} - Unit {0} type changed to {1}".format(self.unit.owner, self.unit, self.unit_type_name) + return self._str_prefix() + "{0: >15} - Unit {0} type changed to {1}".format(self.unit.owner, self.unit, self.unit_type_name) class UpgradeCompleteEvent(TrackerEvent): @@ -395,7 +438,7 @@ def __init__(self, frames, data, build): self.count = data[2] def __str__(self): - return self._str_prefix()+"{0: >15} - {1}upgrade completed".format(self.player, self.upgrade_type_name) + return self._str_prefix() + "{0: >15} - {1}upgrade completed".format(self.player, self.upgrade_type_name) class UnitInitEvent(TrackerEvent): @@ -434,19 +477,24 @@ def __init__(self, frames, data, build): #: The player object that controls this unit. 0 means neutral unit self.unit_controller = None - #: The x coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.x = data[5] * 4 + #: The x coordinate of the center of the init unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.x = data[5] - #: The y coordinate of the location with 4 point resolution. E.g. 13.75 recorded as 12. - #: Location prior to rounding marks the center of the unit footprint. - self.y = data[6] * 4 + #: The y coordinate of the center of the init unit's footprint. Only 4 point resolution + #: prior to Starcraft Patch 2.1. + self.y = data[6] #: The map location the unit was started at self.location = (self.x, self.y) + if build < 27950: + self.x = self.x * 4 + self.y = self.y * 4 + self.location = (self.x, self.y) + def __str__(self): - return self._str_prefix()+"{0: >15} - Unit initiated {1}".format(self.unit_upkeeper, self.unit) + return self._str_prefix() + "{0: >15} - Unit initiated {1}".format(self.unit_upkeeper, self.unit) class UnitDoneEvent(TrackerEvent): @@ -470,7 +518,7 @@ def __init__(self, frames, data, build): self.unit = None def __str__(self): - return self._str_prefix()+"{0: >15} - Unit {1} done".format(self.unit.owner, self.unit) + return self._str_prefix() + "{0: >15} - Unit {1} done".format(self.unit.owner, self.unit) class UnitPositionsEvent(TrackerEvent): @@ -491,17 +539,20 @@ def __init__(self, frames, data, build): #: A dict mapping of units that had their position updated to their positions self.units = dict() - #: A list of (unit_index, (x,y)) derived from the first_unit_index and items. Like the other - #: tracker events, these coordinates have 4 point resolution. (15,25) recorded as (12,24). - #: Location prior to rounding marks the center of the unit footprint. + #: A list of (unit_index, (x,y)) derived from the first_unit_index and items. Prior to + #: Starcraft Patch 2.1 the coordinates have 4 point resolution. (15,25) recorded as (12,24). + #: Location prior to any rounding marks the center of the unit footprint. self.positions = list() unit_index = self.first_unit_index for i in range(0, len(self.items), 3): unit_index += self.items[i] - x = self.items[i+1]*4 - y = self.items[i+2]*4 + x = self.items[i + 1] + y = self.items[i + 2] + if build < 27950: + x = x * 4 + y = y * 4 self.positions.append((unit_index, (x, y))) def __str__(self): - return self._str_prefix()+"Unit positions update" + return self._str_prefix() + "Unit positions update" diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 4ac04c3a..94da5a9f 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -19,6 +19,7 @@ def __call__(self, data, replay): user_initial_data=[dict( name=data.read_aligned_string(data.read_uint8()), clan_tag=data.read_aligned_string(data.read_uint8()) if replay.base_build >= 24764 and data.read_bool() else None, + clan_logo=data.read_aligned_string(40) if replay.base_build >= 27950 and data.read_bool() else None, highest_league=data.read_uint8() if replay.base_build >= 24764 and data.read_bool() else None, combined_race_levels=data.read_uint32() if replay.base_build >= 24764 and data.read_bool() else None, random_seed=data.read_uint32(), @@ -74,6 +75,7 @@ def __call__(self, data, replay): default_difficulty=data.read_bits(6), default_ai_build=data.read_bits(7) if replay.base_build >= 23925 else None, cache_handles=[DepotFile(data.read_aligned_bytes(40)) for i in range(data.read_bits(6 if replay.base_build >= 21955 else 4))], + has_extension_mod=data.read_bool() if replay.base_build >= 27950 else None, is_blizzardMap=data.read_bool(), is_premade_ffa=data.read_bool(), is_coop_mode=data.read_bool() if replay.base_build >= 23925 else None, @@ -610,6 +612,7 @@ def camera_update_event(self, data): distance=data.read_uint16() if data.read_bool() else None, pitch=data.read_uint16() if data.read_bool() else None, yaw=data.read_uint16() if data.read_bool() else None, + reason=None, ) def trigger_abort_mission_event(self, data): @@ -1361,6 +1364,7 @@ def hijack_replay_game_event(self, data): name=data.read_aligned_string(data.read_uint8()), toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, + clan_logo=None, ) for i in range(data.read_bits(5))], method=data.read_bits(1), ) @@ -1381,6 +1385,7 @@ def game_user_join_event(self, data): name=data.read_aligned_string(data.read_bits(8)), toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, + clan_log=None, ) @@ -1430,6 +1435,43 @@ def trigger_mouse_moved_event(self, data): ) +class GameEventsReader_27950(GameEventsReader_26490): + + def hijack_replay_game_event(self, data): + return dict( + user_infos=[dict( + game_user_id=data.read_bits(4), + observe=data.read_bits(2), + name=data.read_aligned_string(data.read_uint8()), + toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, + clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, + clan_logo=data.read_aligned_string(40) if data.read_bool() else None, + ) for i in range(data.read_bits(5))], + method=data.read_bits(1), + ) + + def camera_update_event(self, data): + return dict( + target=dict( + x=data.read_uint16(), + y=data.read_uint16(), + ), + distance=data.read_uint16() if data.read_bool() else None, + pitch=data.read_uint16() if data.read_bool() else None, + yaw=data.read_uint16() if data.read_bool() else None, + reason=data.read_uint8() - 128 if data.read_bool() else None, + ) + + def game_user_join_event(self, data): + return dict( + observe=data.read_bits(2), + name=data.read_aligned_string(data.read_bits(8)), + toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, + clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, + clan_logo=data.read_aligned_string(40) if data.read_bool() else None, + ) + + class TrackerEventsReader(object): def __init__(self): @@ -1443,6 +1485,7 @@ def __init__(self): 6: UnitInitEvent, 7: UnitDoneEvent, 8: UnitPositionsEvent, + 9: PlayerSetupEvent, } def __call__(self, data, replay): diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 0fc5d5dd..325be41b 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -564,10 +564,10 @@ def register_default_readers(self): self.register_reader('replay.game.events', readers.GameEventsReader_22612(), lambda r: 22612 <= r.base_build < 23260) self.register_reader('replay.game.events', readers.GameEventsReader_23260(), lambda r: 23260 <= r.base_build < 24247) self.register_reader('replay.game.events', readers.GameEventsReader_24247(), lambda r: 24247 <= r.base_build < 26490) - self.register_reader('replay.game.events', readers.GameEventsReader_26490(), lambda r: 26490 <= r.base_build) + self.register_reader('replay.game.events', readers.GameEventsReader_26490(), lambda r: 26490 <= r.base_build < 27950) + self.register_reader('replay.game.events', readers.GameEventsReader_27950(), lambda r: 27950 <= r.base_build) self.register_reader('replay.game.events', readers.GameEventsReader_HotSBeta(), lambda r: r.versions[1] == 2 and r.build < 24247) - def register_default_datapacks(self): """Registers factory default datapacks.""" self.register_datapack(datapacks['WoL']['16117'], lambda r: r.expansion == 'WoL' and 16117 <= r.build < 17326) From 38dfa77d7512b52bdf3e659fcae88e6a87dc556c Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Wed, 11 Dec 2013 20:54:39 -0500 Subject: [PATCH 025/116] Fix small bugs in PTR support. --- sc2reader/readers.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 94da5a9f..cd438c6b 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1369,6 +1369,18 @@ def hijack_replay_game_event(self, data): method=data.read_bits(1), ) + def camera_update_event(self, data): + return dict( + target=dict( + x=data.read_uint16(), + y=data.read_uint16(), + ) if data.read_bool() else None, + distance=data.read_uint16() if data.read_bool() else None, + pitch=data.read_uint16() if data.read_bool() else None, + yaw=data.read_uint16() if data.read_bool() else None, + reason=None, + ) + def trigger_target_mode_update_event(self, data): return dict( ability_link=data.read_uint16(), @@ -1399,7 +1411,7 @@ def user_options_event(self, data): sync_checksumming_enabled=data.read_bool(), is_map_to_map_transition=data.read_bool(), starting_rally=data.read_bool(), - debug_pause_enabled=None, + debug_pause_enabled=data.read_bool(), base_build_num=data.read_uint32(), use_ai_beacons=None, ) @@ -1455,7 +1467,7 @@ def camera_update_event(self, data): target=dict( x=data.read_uint16(), y=data.read_uint16(), - ), + ) if data.read_bool() else None, distance=data.read_uint16() if data.read_bool() else None, pitch=data.read_uint16() if data.read_bool() else None, yaw=data.read_uint16() if data.read_bool() else None, From ba404a50251f8a3074e84a2e6a8da383ea3fec67 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Wed, 11 Dec 2013 21:30:24 -0500 Subject: [PATCH 026/116] Clarify the highest leauge user attribute. --- sc2reader/objects.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sc2reader/objects.py b/sc2reader/objects.py index e7e096b3..684c8180 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -228,7 +228,8 @@ def __init__(self, uid, init_data): #: The user's combined Battle.net race levels self.combined_race_levels = init_data['combined_race_levels'] - #: The user's highest leauge in the current season + #: The highest 1v1 league achieved by the user in the current season with 1 as Bronze and + #: 7 as Grandmaster. 8 seems to indicate that there is no current season 1v1 ranking. self.highest_league = init_data['highest_league'] #: A flag indicating if this person was the one who recorded the game. From 94263a519a036f2bae43e18ce99f131c30dd4014 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Thu, 12 Dec 2013 21:36:34 -0500 Subject: [PATCH 027/116] The clan logo is a DepotFile location, not a string. --- sc2reader/readers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index cd438c6b..20dc8b8f 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -19,7 +19,7 @@ def __call__(self, data, replay): user_initial_data=[dict( name=data.read_aligned_string(data.read_uint8()), clan_tag=data.read_aligned_string(data.read_uint8()) if replay.base_build >= 24764 and data.read_bool() else None, - clan_logo=data.read_aligned_string(40) if replay.base_build >= 27950 and data.read_bool() else None, + clan_logo=DepotFile(data.read_aligned_bytes(40)) if replay.base_build >= 27950 and data.read_bool() else None, highest_league=data.read_uint8() if replay.base_build >= 24764 and data.read_bool() else None, combined_race_levels=data.read_uint32() if replay.base_build >= 24764 and data.read_bool() else None, random_seed=data.read_uint32(), @@ -1457,7 +1457,7 @@ def hijack_replay_game_event(self, data): name=data.read_aligned_string(data.read_uint8()), toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, - clan_logo=data.read_aligned_string(40) if data.read_bool() else None, + clan_logo=DepotFile(data.read_aligned_bytes(40)) if data.read_bool() else None, ) for i in range(data.read_bits(5))], method=data.read_bits(1), ) @@ -1480,7 +1480,7 @@ def game_user_join_event(self, data): name=data.read_aligned_string(data.read_bits(8)), toon_handle=data.read_aligned_string(data.read_bits(7)) if data.read_bool() else None, clan_tag=data.read_aligned_string(data.read_uint8()) if data.read_bool() else None, - clan_logo=data.read_aligned_string(40) if data.read_bool() else None, + clan_logo=DepotFile(data.read_aligned_bytes(40)) if data.read_bool() else None, ) From f0125666b6e07e931a42e6c7f73019e29fe0379e Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Fri, 13 Dec 2013 00:51:45 -0500 Subject: [PATCH 028/116] Fixes #165, properly parse mouse click events. --- sc2reader/readers.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 20dc8b8f..e835123f 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -936,7 +936,7 @@ def trigger_mouse_clicked_event(self, data): position_world=dict( x=data.read_bits(20), y=data.read_bits(20), - z=data.read_uint32()-2147483648, + z=data.read_uint32() - 2147483648, ), ) @@ -1421,15 +1421,15 @@ def trigger_mouse_clicked_event(self, data): button=data.read_uint32(), down=data.read_bool(), position_ui=dict( - x=data.read_uint32(), - y=data.read_uint32(), + x=data.read_bits(11), + y=data.read_bits(11), ), position_world=dict( - x=data.read_uint32()-2147483648, - y=data.read_uint32()-2147483648, - z=data.read_uint32()-2147483648, + x=data.read_bits(20) - 2147483648, + y=data.read_bits(20) - 2147483648, + z=data.read_uint32() - 2147483648, ), - flags=data.read_uint8()-128, + flags=data.read_uint8() - 128, ) def trigger_mouse_moved_event(self, data): @@ -1441,9 +1441,9 @@ def trigger_mouse_moved_event(self, data): position_world=dict( x=data.read_bits(20), y=data.read_bits(20), - z=data.read_uint32()-2147483648, + z=data.read_uint32() - 2147483648, ), - flags=data.read_uint8()-128, + flags=data.read_uint8() - 128, ) From 4b45b622638b4a9e4c1b594d4113eeea3a39b953 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Fri, 13 Dec 2013 02:29:38 -0500 Subject: [PATCH 029/116] Fix initdata parsing for base_build 23260 replays. --- sc2reader/readers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index e835123f..e3434fd7 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -105,7 +105,7 @@ def __call__(self, data, replay): is_single_player=data.read_bool(), game_duration=data.read_uint32(), default_difficulty=data.read_bits(6), - default_ai_build=data.read_bits(7) if replay.base_build >= 23260 else None, + default_ai_build=data.read_bits(7) if replay.base_build >= 24764 else None, ), ) if not data.done(): From 53e56784508932c7aa967bf400cdb366ed9ccce4 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Thu, 19 Dec 2013 00:02:44 -0500 Subject: [PATCH 030/116] Add killer logic to ContextLoader, refine the API. --- sc2reader/data/__init__.py | 16 +++++++++++++++- sc2reader/engine/plugins/context.py | 20 ++++++++++++++------ sc2reader/events/tracker.py | 27 ++++++++++++++++++--------- 3 files changed, 47 insertions(+), 16 deletions(-) diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index f4e095f4..0fe1b712 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -53,10 +53,24 @@ def __init__(self, unit_id): #: Specifically, it is the frame that the :class:`~sc2reader.events.tracker.UnitDiedEvent` is received. self.died_at = None + #: Deprecated, see :attr:`self.killing_player` + self.killed_by = None + #: A reference to the player that killed this unit. Only available for 2.0.8+ replays. #: This value is not set if the killer is unknown or not relevant (morphed into a #: different unit or used to create a building, etc) - self.killed_by = None + self.killing_player = None + + #: A reference to the unit that killed this unit. Only available for 2.1+ replays. + #: This value is not set if the killer is unknown or not relevant (morphed into a + #: different unit or used to create a building, etc). If the killing unit dies before + #: the killed unit dies, a bug may cause the killing unit to be None. This can occur + #: due because of projectile speeds. + self.killing_unit = None + + #: A list of units that this unit has killed. Only available for 2.1+ replays. + #: The unit only gets credit for the kills that it gets the final blow on. + self.killed_units = list() #: The unique in-game id for this unit. The id can sometimes be zero because #: TargetUnitCommandEvents will create a new unit with id zero when a unit diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index b6b67af9..d9d1241f 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -146,13 +146,21 @@ def handleUnitDiedEvent(self, event, replay): else: self.logger.error("Unit {0} died at {1} [{2}] before it was born!".format(event.unit_id, Length(seconds=event.second), event.frame)) - if event.killer_pid in replay.player: - event.killer = replay.player[event.killer_pid] + if event.killing_player_id in replay.player: + event.killing_player = event.killer = replay.player[event.killing_player_id] if event.unit: - event.unit.killed_by = event.killer - event.killer.killed_units.append(event.unit) - elif event.killer_pid: - self.logger.error("Unknown killer pid {0} at {1} [{2}]".format(event.killer_pid, Length(seconds=event.second), event.frame)) + event.unit.killing_player = event.unit.killed_by = event.killing_player + event.killing_player.killed_units.append(event.unit) + elif event.killing_player_id: + self.logger.error("Unknown killing player id {0} at {1} [{2}]".format(event.killing_player_id, Length(seconds=event.second), event.frame)) + + if event.killing_unit_id in replay.objects: + event.killing_unit = replay.objects[event.killing_unit_id] + if event.unit: + event.unit.killing_unit = event.killing_unit + event.killing_unit.killed_units.append(event.unit) + elif event.killing_unit_id: + self.logger.error("Unknown killing unit id {0} at {1} [{2}]".format(event.killing_unit_id, Length(seconds=event.second), event.frame)) def handleUnitOwnerChangeEvent(self, event, replay): self.load_tracker_controller(event, replay) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 8eaaf7a1..62e25099 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -313,12 +313,18 @@ def __init__(self, frames, data, build): #: The unit object that died self.unit = None - #: The id of the player that killed this unit. None when not available. + #: Deprecated, see :attr:`killing_player_id` self.killer_pid = data[2] - #: The player object of the that killed the unit. Not always available. + #: Deprecated, see :attr:`killing_player` self.killer = None + #: The id of the player that killed this unit. None when not available. + self.killing_player_id = data[2] + + #: The player object of the that killed the unit. Not always available. + self.killing_player = None + #: The x coordinate of the center of the dying unit's footprint. Only 4 point resolution #: prior to Starcraft Patch 2.1. self.x = data[3] @@ -331,13 +337,16 @@ def __init__(self, frames, data, build): self.location = (self.x, self.y) #: The index portion of the killing unit's id. Available for build 27950+ - self.killer_unit_index = None + self.killing_unit_index = None #: The recycle portion of the killing unit's id. Available for build 27950+ - self.killer_unit_recycle = None + self.killing_unit_recycle = None #: The unique id of the unit doing the killing. Available for build 27950+ - self.killer_unit_id = None + self.killing_unit_id = None + + #: A reference to the :class:`Unit` that killed this :class:`Unit` + self.killing_unit = None if build < 27950: self.x = self.x * 4 @@ -345,10 +354,10 @@ def __init__(self, frames, data, build): self.location = (self.x, self.y) else: # Starcraft patch 2.1 introduced killer unit indexes - self.killer_unit_index = data[5] - self.killer_unit_recycle = data[6] - if self.killer_unit_index: - self.killer_unit_id = self.killer_unit_index << 18 | self.killer_unit_recycle + self.killing_unit_index = data[5] + self.killing_unit_recycle = data[6] + if self.killing_unit_index: + self.killing_unit_id = self.killing_unit_index << 18 | self.killing_unit_recycle def __str__(self): return self._str_prefix() + "{0: >15} - Unit died {1}.".format(self.unit.owner, self.unit) From e5001a3a56aeb3097cdfed85ebf0a74f29b0db81 Mon Sep 17 00:00:00 2001 From: David Joerg Date: Sat, 4 Jan 2014 22:51:33 -0400 Subject: [PATCH 031/116] added a replay thats failing for GGTracker, but surprisingly it turns out not failing for sc2reader. mpyq issue --- .../2.0.11.26825/DaedalusPoint.SC2Replay | Bin 0 -> 65070 bytes test_replays/test_all.py | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 test_replays/2.0.11.26825/DaedalusPoint.SC2Replay diff --git a/test_replays/2.0.11.26825/DaedalusPoint.SC2Replay b/test_replays/2.0.11.26825/DaedalusPoint.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..140a80a9f2112fd8dbd387c79d5f5f2b524a27ff GIT binary patch literal 65070 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 zflII Date: Wed, 8 Jan 2014 13:28:18 -0500 Subject: [PATCH 032/116] Bump mpyq version. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0f2fc7a7..c9dee97d 100644 --- a/setup.py +++ b/setup.py @@ -46,7 +46,7 @@ ] }, - install_requires=['mpyq>=0.2.3', 'argparse', 'ordereddict', 'unittest2'] if float(sys.version[:3]) < 2.7 else ['mpyq>=0.2.3'], + install_requires=['mpyq>=0.2.4', 'argparse', 'ordereddict', 'unittest2'] if float(sys.version[:3]) < 2.7 else ['mpyq>=0.2.4'], packages=setuptools.find_packages(), include_package_data=True, zip_safe=True From 18ca54c09f215efb13ca236f2eb00d9dbaeadfa6 Mon Sep 17 00:00:00 2001 From: Eddie Yan Date: Wed, 29 Jan 2014 22:50:14 -0800 Subject: [PATCH 033/116] fix name of 'ControlGroupEvent' in comments --- sc2reader/events/game.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index e3948f26..03d69bba 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -354,7 +354,7 @@ class SelectionEvent(GameEvent): Starting in Starcraft 2.0.0, selection events targetting control group buffers are also generated when control group selections are modified by non-player actions. When a player action updates a control group - a :class:`HotkeyEvent` is generated. + a :class:`ControlGroupEvent` is generated. """ def __init__(self, frame, pid, data): super(SelectionEvent, self).__init__(frame, pid) From 9277ec45eca06085ccda35c7b6e9c84c0b002845 Mon Sep 17 00:00:00 2001 From: Emmanuel Hadoux Date: Sun, 13 Apr 2014 15:20:32 +0200 Subject: [PATCH 034/116] No more lints. --- sc2reader/data/create_lookup.py | 26 ++++++++++++-------------- sc2reader/engine/plugins/context.py | 2 +- sc2reader/resources.py | 9 ++++----- sc2reader/scripts/sc2printer.py | 18 +++++++++--------- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/sc2reader/data/create_lookup.py b/sc2reader/data/create_lookup.py index 459685f2..73623836 100755 --- a/sc2reader/data/create_lookup.py +++ b/sc2reader/data/create_lookup.py @@ -1,16 +1,14 @@ - - abilities = dict() with open('hots_abilities.csv', 'r') as f: - for line in f: - num, ability = line.strip('\r\n ').split(',') - abilities[ability] = [""]*32 - -with open('command_lookup.csv','r') as f: - for line in f: - ability, commands = line.strip('\r\n ').split('|',1) - abilities[ability] = commands.split('|') - -with open('new_lookup.csv','w') as out: - for ability, commands in sorted(abilities.items()): - out.write(','.join([ability]+commands)+'\n') + for line in f: + num, ability = line.strip('\r\n ').split(',') + abilities[ability] = [""]*32 + +with open('command_lookup.csv', 'r') as f: + for line in f: + ability, commands = line.strip('\r\n ').split('|', 1) + abilities[ability] = commands.split('|') + +with open('new_lookup.csv', 'w') as out: + for ability, commands in sorted(abilities.items()): + out.write(','.join([ability]+commands)+'\n') diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index d9d1241f..e978ea1f 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -8,7 +8,7 @@ @loggable class ContextLoader(object): - name='ContextLoader' + name = 'ContextLoader' def handleInitGame(self, event, replay): replay.units = set() diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 325be41b..0a31b939 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -1,4 +1,4 @@ - # -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals, division from collections import defaultdict, namedtuple @@ -192,7 +192,6 @@ class Replay(Resource): #: Lists info for each user that is resuming from replay. resume_user_info = None - def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.engine, do_tracker_events=True, **options): super(Replay, self).__init__(replay_file, filename, **options) self.datapack = None @@ -201,7 +200,7 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en # The current load level of the replay self.load_level = None - #default values, filled in during file read + # default values, filled in during file read self.speed = "" self.type = "" self.game_type = "" @@ -333,7 +332,7 @@ def load_details(self): self.map_hash = details['cache_handles'][-1].hash self.map_file = details['cache_handles'][-1] - #Expand this special case mapping + # Expand this special case mapping if self.region == 'sg': self.region = 'sea' @@ -367,7 +366,7 @@ def load_map(self): self.map = self.factory.load_map(self.map_file, **self.opt) def load_players(self): - #If we don't at least have details and attributes_events we can go no further + # If we don't at least have details and attributes_events we can go no further if 'replay.details' not in self.raw_data: return if 'replay.attributes.events' not in self.raw_data: diff --git a/sc2reader/scripts/sc2printer.py b/sc2reader/scripts/sc2printer.py index 52b39c1e..5a1bf94e 100755 --- a/sc2reader/scripts/sc2printer.py +++ b/sc2reader/scripts/sc2printer.py @@ -84,31 +84,31 @@ def main(): description="""Prints basic information from Starcraft II replay and game summary files or directories.""") parser.add_argument('--recursive', action="store_true", default=True, - help="Recursively read through directories of Starcraft II files [default on]") + help="Recursively read through directories of Starcraft II files [default on]") required = parser.add_argument_group('Required Arguments') required.add_argument('paths', metavar='filename', type=str, nargs='+', - help="Paths to one or more Starcraft II files or directories") + help="Paths to one or more Starcraft II files or directories") shared_args = parser.add_argument_group('Shared Arguments') shared_args.add_argument('--date', action="store_true", default=True, - help="print(game date [default on]") + help="print(game date [default on]") shared_args.add_argument('--length', action="store_true", default=False, - help="print(game duration mm:ss in game time (not real time) [default off]") + help="print(game duration mm:ss in game time (not real time) [default off]") shared_args.add_argument('--map', action="store_true", default=True, - help="print(map name [default on]") + help="print(map name [default on]") shared_args.add_argument('--teams', action="store_true", default=True, - help="print(teams, their players, and the race matchup [default on]") + help="print(teams, their players, and the race matchup [default on]") replay_args = parser.add_argument_group('Replay Options') replay_args.add_argument('--messages', action="store_true", default=False, - help="print(in-game player chat messages [default off]") + help="print(in-game player chat messages [default off]") replay_args.add_argument('--version', action="store_true", default=True, - help="print(the release string as seen in game [default on]") + help="print(the release string as seen in game [default on]") s2gs_args = parser.add_argument_group('Game Summary Options') s2gs_args.add_argument('--builds', action="store_true", default=False, - help="print(player build orders (first 64 items) [default off]") + help="print(player build orders (first 64 items) [default off]") arguments = parser.parse_args() for path in arguments.paths: From 214cd7c0f88d794453a4592bbd0e74d00cd3ef83 Mon Sep 17 00:00:00 2001 From: Emmanuel Hadoux Date: Wed, 23 Apr 2014 23:34:00 +0200 Subject: [PATCH 035/116] Fixes SelectionTracker plugin with new handler names. --- sc2reader/engine/plugins/selection.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sc2reader/engine/plugins/selection.py b/sc2reader/engine/plugins/selection.py index 79e9d995..69aa12a7 100644 --- a/sc2reader/engine/plugins/selection.py +++ b/sc2reader/engine/plugins/selection.py @@ -40,17 +40,17 @@ def handleSelectionEvent(self, event, replay): if error: event.player.selection_errors += 1 - def handleGetFromHotkeyEvent(self, event, replay): + def handleGetControlGroupEvent(self, event, replay): selection = event.player.selection[event.control_group] new_selection, error = self._deselect(selection, event.mask_type, event.mask_data) event.player.selection[10] = new_selection if error: event.player.selection_errors += 1 - def handleSetToHotkeyEvent(self, event, replay): + def handleSetControlGroupEvent(self, event, replay): event.player.selection[event.control_group] = event.player.selection[10] - def handleAddToHotkeyEvent(self, event, replay): + def handleAddToControlGroupEvent(self, event, replay): selection = event.player.selection[event.control_group] new_selection, error = self._deselect(selection, event.mask_type, event.mask_data) new_selection = self._select(new_selection, event.player.selection[10]) From b35d88c774ee9c90c592a98d6342979f5ed4a5c3 Mon Sep 17 00:00:00 2001 From: David Joerg Date: Mon, 30 Jun 2014 07:57:03 -0400 Subject: [PATCH 036/116] new failing test for replays that started by loading a saved game --- .../Habitation Station LE (54).SC2Replay | Bin 0 -> 11543 bytes test_replays/test_all.py | 4 ++++ 2 files changed, 4 insertions(+) create mode 100755 test_replays/2.1.3.28667/Habitation Station LE (54).SC2Replay diff --git a/test_replays/2.1.3.28667/Habitation Station LE (54).SC2Replay b/test_replays/2.1.3.28667/Habitation Station LE (54).SC2Replay new file mode 100755 index 0000000000000000000000000000000000000000..1b46fd1411cb9324b2980ceb0d9ee37d907f968f GIT binary patch literal 11543 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 literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 4d11301c..81c5eadd 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -366,6 +366,10 @@ def test_replay_event_order(self): def test_daedalus_point(self): replay = sc2reader.load_replay("test_replays/2.0.11.26825/DaedalusPoint.SC2Replay") + def test_reloaded(self): + replay = sc2reader.load_replay("test_replays/2.1.3.28667/Habitation Station LE (54).SC2Replay") + + class TestGameEngine(unittest.TestCase): class TestEvent(object): From c860d8e23d6fbd3a9258deff9fcbe8796da6c900 Mon Sep 17 00:00:00 2001 From: David Joerg Date: Mon, 30 Jun 2014 08:00:33 -0400 Subject: [PATCH 037/116] fix for replays that started with a load from a saved game --- sc2reader/events/tracker.py | 5 +++-- sc2reader/resources.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 62e25099..5466d4d5 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -15,10 +15,11 @@ class TrackerEvent(Event): """ def __init__(self, frames): #: The frame of the game this event was applied - self.frame = frames + #: Ignore all but the lowest 32 bits of the frame + self.frame = frames % 2**32 #: The second of the game (game time not real time) this event was applied - self.second = frames >> 4 + self.second = self.frame >> 4 #: Short cut string for event class name self.name = self.__class__.__name__ diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 0a31b939..44a26c7a 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -496,7 +496,7 @@ def load_game_events(self): self.events = sorted(self.events+self.game_events, key=lambda e: e.frame) # hideous hack for HotS 2.0.0.23925, see https://github.com/GraylinKim/sc2reader/issues/87 - if self.events and self.events[-1].frame > self.frames: + if self.base_build == 23925 and self.events and self.events[-1].frame > self.frames: self.frames = self.events[-1].frame self.length = utils.Length(seconds=int(self.frames/self.game_fps)) From 89f4eeed7d0208525a0895e23726749dfb304405 Mon Sep 17 00:00:00 2001 From: David Joerg Date: Fri, 26 Sep 2014 12:07:17 -0400 Subject: [PATCH 038/116] amended author info --- test_replays/2.1.4/Catallena LE.SC2Replay | Bin 0 -> 38284 bytes test_replays/test_all.py | 3 +++ 2 files changed, 3 insertions(+) create mode 100755 test_replays/2.1.4/Catallena LE.SC2Replay diff --git a/test_replays/2.1.4/Catallena LE.SC2Replay b/test_replays/2.1.4/Catallena LE.SC2Replay new file mode 100755 index 0000000000000000000000000000000000000000..2bc76c617acdf42b9fed7eb420dbe812fdeb6910 GIT binary patch literal 38284 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 Date: Tue, 23 Feb 2016 17:12:33 -0500 Subject: [PATCH 052/116] add failing creepspread test --- test_replays/3.1.2/6494799.SC2Replay | Bin 0 -> 73930 bytes test_replays/test_all.py | 7 +++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 test_replays/3.1.2/6494799.SC2Replay diff --git a/test_replays/3.1.2/6494799.SC2Replay b/test_replays/3.1.2/6494799.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..e3984b826c8d9d1e25a05c4680c994cb6d0b2f01 GIT binary patch literal 73930 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 - assert replay.player[player_id].creep_spread_by_minute + assert replay.player[player_id].max_creep_spread[1] >0 + assert replay.player[player_id].creep_spread_by_minute[0] >0 +# print "MCS", replay.player[player_id].max_creep_spread +# print "CSBM", replay.player[player_id].creep_spread_by_minute replay =factory.load_replay("test_replays/2.0.8.25605/ggtracker_3621402.SC2Replay",load_map= True,engine=pluginEngine,load_level=4) From 4eb45933fcfd7367c5c223a1973313e3f82af1ad Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 6 Apr 2016 13:07:12 -0400 Subject: [PATCH 053/116] new failing test for 3.2 --- test_replays/3.2.0/1.SC2Replay | Bin 0 -> 157292 bytes test_replays/test_all.py | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test_replays/3.2.0/1.SC2Replay diff --git a/test_replays/3.2.0/1.SC2Replay b/test_replays/3.2.0/1.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..e575832664240ef54919733587aea2445b72410d GIT binary patch literal 157292 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%0Ai4!RCy@{oQV6j7(cS&0^Fv(pIRt` z6Zc+yAKNq*t>IqJirafdibXi!aVM&MPw}bJ*Xa z@3A84t&Gj+ThNt_wX(YN^`5-1AiZBn7)5wW0gghO$2>)a8D40VU=WdNaMXWOs6;?m z;2jUK5pxvk5YVZj%FHSwW!E%<7i6Irh@?q*I!U8uZZPZy#~169`deWyl(SIzfs@r`>Zja$nR&vnr_iG-n^PvL5ad^A<@>n_>eHv zvi(%EzBse~Jr=bxiRsT#Pfm2vsQ}Ygb0!AioNTxlvnYFRdLibyyOCQSWBHme&15dm=m5(@fEtK*fd%ZW6CsG{o^OaiNXWhgYdGs>1#%c(`5}<>UmYqw5#_J_w z%FiI4SNLBAhof;;cAy6^bR?TMR5x~XRT)&>)SCA|YyJG}oK9QsjX0iNoFUm#UH*Ij zN<=?(Zq3b>O-;UpTU(@zsn)3?Q4;hjuc5jNRC~$esjEpC zmN9sm8Zh(ixb)j<#+t3E)azn6^G)kBXTr02qg7a)b3+!v2Misyw>`K{{T1nTV?0*; zz*?x3g|099U8c#o?qPD;-2`C>+1^y1Ni;Vu*v#LWSV6$&vM^&%$3iSAP*t$rWQQx>V=}TxPRm6$fRbwN_PtyM@;~E*B5gNxDBmjXr*_Rj#Q)^_E)mA4&fEiBb;qb^vr{qb?c>8+Tqr60y}{>b-y^cTeZ|K0n_ z_1-^o>o{rbG>uy_7p&ZTR!U4>ucz&wGPmm|*78-a;DH;@zr~_?VFA3lJ`z&mpyrZ9 zE<6kzE0IJK=Qhy=AX0=-3c+wez2h*RM&)|rSIPa)KiS*AZL{jfxmy1I->db`B zGBx_|xBTD7eP1)TtYpLvz}YTdO#g*uz$+)UHacXi5xC2Q{?>+#qCdc%YK`mckbiZzlUsEZ|Y*D z5dg{rfQTdkYpSIrDk&EUBHLt?p%95}I8ahyqXm@B+9%XhU#f6!E%eSTP0&D!AT*0a zf?$09R+C1@)S!!$$pn-^OtzFFNgy(1iJzfdot-ceI9o_t6;Nzpn9@lsFvvtnZOSty z8qrvZ!fXUi^uz{rNB}ZmAV~=z2q2O~B!V%(y<}-HxD+-hf)%!qjfx{pnKQbO zQ8b?EgAz%=G(m34ani0plgO3_!PV^LDz_}z4 zKr>+37q*5Rm{&H3C6OnFtBzIerYMRTQI0#>*~L1HWP#3Fp64mCE12aUs_ml8+Ee6iOI&AV~>sdAHu&Z|dg)jsBmV{f_o8hd!?Rq0nkp((rIDKKEm0EA#vGt?sKk+$s2xT0RygbQreiSl zY*(xrvKnu|n_jw(xItLHI&rr}&>0oWZ5^hx&8+9bxVJulb{k!Dp0kd+*8JAiRmmwM zsurE{Z&5_0CNgaB?9e9&s}^M8Tw-n1o+;T&+p`Xe7?Q?$d*5;8{Jb$K|)e4LJYOr*|jY%q(M5k%6%Fn5Lwp zy!-S@x>qwYUVBGn#Abt_08-CP`<41wHZU0fZ%2Iq9c$o4MIsP!7cq+tz8rtmz+@9) zj#xf9Wy1M!#NyvnvmMI!7E$67pq(0Iw=q01(JD{AV$` zR{QUJ>S*VT%M~JGjkM5Wvem$FvrWwqNFjav=rHSU(`LmMW}ZJKi%&tE+b@0EH{%S3 zp>G(=idI6$L+v%K)HRpe~0$+i#RdigrL3N%nic&lYxIVFSOt_s!zzCNBT0tc z+r|W7P*vzK6o%IG_b0+!cLtC<&t+9S68WLWocFn0-d4iu)?nV>_nk4s>M80h2rX$P zO8qm5af_>KuSer(*qMV0J*5>32zFSJ@W!IKz@>1f*Zb7wfom{c^eGtrnxpuBjqIdJ z+2J{6c9$ngI*ov&1*FOI33yqm-xS=n=O-`QX=CuXFfxE@c+%@@bVh zMmBgrWCboru1HW%zn=!vyE`+kjdaHAB@gh1#t!`&+;L${=10n-#d1bLrcAz2CByDx zUMauhbO@O>5ZNF#9EM^D(CAIyXksgmfGt@wf;A=`3>fJ8tZdAQ2XLBM6#MY`1qmNC zE&0dMDOmZ3c&kLIf+VD)#VXSj>ljMg*O6F5DO-^`-*!YOtdiNP&?n|SD4CX}m0q62 zr$RYA_b-RY!qzEr2fz208_prR`G9NLS z8=(q1#&G+R)Q1s=tc0Kzk~y&i^Rg7UQ|7w$)o%;!pJMQJ0_7J2@P@n8xiGlP&YR`` zVNbpP=x2t@6bq1ci4Mbi^oTipC*AN_W8Yi!%5SeSl!}%uAb+jM`yw8PE@0C5;EqXBNL&& zcCO+6h8LNch1p9N^YoJ6lkiaB3h6RWVeDCBtjBft4h|rjfVh8;jN#ot!u{y9AIC%xj z`oPSZ`;QO(5{N&pXVf=Qfv zy>p)&m98PHVDC!U zP_!7%u3oKQ2iyq9%1EjEtQg<>nJ49RMQtuVG4ky5znbIzB>f8xyS)$1Ak#m`ok7v! zP))rIR`W1Mk`A6i_!Q`vYkH{hV@xB6L+h;N%v9zI2Vfn$k1x58eM$UFuw5X7$S@$` zN4yxn@}D)6=Xyv$ABJ}!k?u`dzV386M2i#G+hf@ z(nw7bq=NnA4sGd-Kc?%l^%+{6tI4jQ?zMW}qHnsWPA&NqBPaNO6=4EYd>=)P`c(;HUHmi$RFFV>3p2UI(}!7&PdJt&11<>8oY#J6Au~3;oNAdJZQ6GTl4mfos_3le#5Qc2nTRJ z9TU&7>rRa>)F}W@-c*$l$#iS&Cy^fH=0o=~n--vbXAUG5Fyv=yL12*~c{5yK0f(s! z@S12I+8=5y3~Nr*XOK?nEV~@Ew>^&k={G39gnXsDD2(IK^m~a~^^j9Zo=GN&?AJ_$ zZv@nOcW3*B|6#A0)vZPGf;Gc3X`1c}_U4wKKVsb@aLxv+%n3=2hfR;la?qaZ-1Exi zeBcPBHo=XtW|GE9nhFm)>Sgpl6ZQSy8~CrR^gj`LoQksd>WE4fC+;uk@97b)uPtK& z5`@eDFa-Wm%GfQHT6we%I54{ykE~eztY|Ew=0dk-zPe51+eOw zwfOe{jz1j&(&#Z?kFR3q4*4?ty>Rf)QTJC|GCS4U!_DyV$N%kJpG#cFSG z&36rHS?$@WW|_lr8kVoU>#eWA&ozzxzn8B5Ue|}rYS^xT2Sj~bobN@56bWZ7_O!7D z*jyWjneK%PPb+4`+q&swsu;e5!G?{zxO^ zryM#xwLWsF&=wuz5mz?ly58uzBd+K69T;BPd92kW|7Kqw=jzYlE7#kp>O2sy0B{E@ zQ*E)U&TLsRM9Dz`v3XyK{D;%~|83{p?$ORn9K%&e8DIGkR4iFgu8;&7hXycvw{?A1c-Cr)%WmcTcU5KnUvR?^I%pW0HywD{aQ8OJ5!b8E8+i#Rngt0t`gmY zZf=b?B#dZD&F3GWeYmDD1_+#!&@RK}`QT*ntC*_jllpoHD)Ch1{(2ld%F5z-GY&PD z5G}7(-py}5Mi19%agDNW07fwi`@&8P>-r9B!T)+aeZvO$y+mA|`S|jnH~YV{>9T*i zQtZBmrTbK3&yYV&ev+Qs{rUhC6&jJ3w_qonr?DJSVNXv z1_@%4DAUszafHZGxo|Ui$qF@0^UCVWmb7fExwY6>W0v8WtQ91;Y-|QzTW)Ja#JM#@ zVa`UodH?q|Z3-kC1S)t6S+N(990nQOMGI}|YjOr>x691V2_tF;MQIj%w)>^A%4Clt z3&+Zg;&78c={}7D>;VlCo}I>eC<{P(6HS8f%<+85jQt@;xaH$Z)o#te6!NO|jQxJC zT#uq?&)Vg9kx3smj<>6%Ob34${pMqB$sL{JUhl`B_vf-MoD1teGC{%T8zz|gR_^9Q ztW1V3bf8z|^A=B!pSs;{eV^gQ$)~})+-GxqvDAN~RyE0^uA&m=*a$m!TSgEII)Wtl z6$@j@z9YvWxWKLk1u8p+SOhP4nt%{?d1vvoJ)`u_{|n~ucinq4DLFmw=v!^N`##=A zQjY1wk~QaQkSqJcm?^>`RP8Le^*v>WQ}0W21l8c-P;>;H5Y$kCHA)B{)>Xx4!846x znTt<&7AIE{ZOG|w~Yfh_@9#qCJo8BUErn<|MPQ z2V$cfK&tekmVWnou$tXNBB-=lMurCKV=m1lq$fr{11fin)5&?di>^B{r~GdeMfA9u zN5A7(k3-&G`~|$P;tDc;^8am6X}oN_k!ge(p@={5!~rB3>|ChCEBS>AJA<|Bm-k&e zzU^}XyWMqE+_`MFN51kt7Y=>E?z@2d2SmEFEnBMPz>a-iBv18Vk$i_LPm`6Vg z4l8F|ci*+R_B~dpU0>Jp{0nGmfG~{-pRW?y}z#M*ZpMtV>j!&UBAAy(55?RqPCnxMOoe=kh0`HQWN1G zAy1o3?_IS~8M2=#CyL?igv@a0I2tw8KoRdab_Zqd#b9A9S-2_D@6gF_>a_hICg+8+ zTRR5UI(kWJ?`OHccUNc3z-jRb*m9$Ql=nfFbV;WE3X{5ZVm{MHR`>t#l#K!vpL@{rmAO_O$Vn1_4 zF`!~DfAS3rO7#H(-834uEt8uOPvWw3LDxskkfDiV{7UCDvE`uP{kXSG3kMM?&3?87 znh&|RgQ!zDsVHmYLAhTtc(yT47Cu2{2E8S@E|`B=){HLv~x@* zn|g22DF)~MeuU<+AIxO2nugD=$aswqGj!2gQfO_jt5k*Wdk9o{m*zY)uy3jJxn05;t@LZzFR@-)*NaLcpRe{w6ZL-@Nc2M{buJDiki-1r z{<|)(Cdxw$C6FV1R6nXe9VHvOZSLm907@+32(grT;R{9lqJu~;Go zAoZ6di4R}v<;K2W+w%4<*N>ZSX8yyN2^(MZTvv~r`QCF$WTu)Tq;2f^R~aNsotHF1 z$&i_R$2n`RTbIpqbMEV&`OU*C1+dTM^0`g3ai*IXpA9byf%1 z=ig&N^GXQ=ZGU&jNkeKFaVqUMy}T4cRp?&UpRw6Px}otM(7QJ?pp1^#RPj!efy`#; zEGzbyTwi039XURoy6w)9mWB!&m8`PcO&VM`?2i@nbE6HbBWG3uvPQGf!G=Y0X+pI`Kfs@z?4kU&XJ9%jK-n(OorO`Owd32X6@T$y-%o-Hmsv}AoT4QzT}~6 z6)5hU$GWIc#vfr(6}MCRc^fLW{lk6xBiHkz?%DPK&VG$zHdq28YQN#Yji#|;(PO=j z?MtOmwnZ%AN%(20(q#!kdPW}!VGuBZx!Wwlh4i54OBj(t!T+=C#R9+KvF|aavs)3H z^_V}6F=<-mB81^keHOXN z!@7LobKFk$FXZJN3{CSY>gNu6^BvKjRn}=cWzfPE3?#7Z_=7pldzba~(|qnE)MGpr zHMbS|O)~;URiy?_Jo+7qjy)!Ui;kk*bcZe<#VdBP%eH3rr+v=BFpxXL?X>!i|D%`F z`Z+!)^=XbLl;`D-%}CXC4%HK^NDruiA+Sk_0{|5M`K@(I7uxCRN!R4$JxaO1j>r0D zC#7$zs3=Ah-qhNK5$XOjuI(`~8l1WZT{1;a;YsLG5y?J^AEYzSyT(&8L*~m$K%|@{ z*M(jC;-A#F*Ns4fY`Y@SyuP60ML6m({)Cj7l~TA@2U#i4rjs=y%Yq*c{@uS)y*-=q z&+Zdqja$}{;a=U~kG*@Ic(|s1YV#-jW$F0YQ!+&xd?EHO4?N$p`5jskXuaI!&vEeS zpq!$gn+xECAgKl6y5GkLZ6)--A`W)9X8YLbs~;a4SC8<8BjZYHl@%)=^d{`qucJJH ztHXyr0!3GoE7?8;_ppc>Gmi^(t&#anTx1O@?=8K{k>CqhtKtF#i*h6 zx6s;8`^?kLj8Nl=5`dT+QdNw~(-dVy4{fzjh@9AoxbpTC(L@mQ8nss?0b>&=*G4~2 zgux^L_FJZiROT4xtca`~8@1pUu1foisa~K*>Egc7Xn(OS3n_>M8Ed|}53%!jqmpDS zuDLQ}zCA^hZA%#nPVz8A=7}f-Q}%%3l>K5e=6O@^+-dR|_Sb4km*w#EsGG=eg@JHC z7x(%41sXo5K>elnC!9tw?6aW)iPG>COQ-1`;b%>_?qWBGE4~sGYR{!_BarD2?+Ov? zJVP=T009_#p^>yL0L~vwhtfeg;yR5K@b?=p=cL_m;XDwC6Mx^R6|Rhu4{H&T{*EE5 zArR0p*~xW=&JSEX5#VnaOo&1UyATDUcbjqE^t-2|;!u?1@+bw0*AN69y*a=)$wVDG zq9F5^wSEEvN;-bs4Y(3le%-q|B^KcC2;S3%+hG-7Z89n!*;I6Yh?;5GCu_nz@qsdH zuOkSB+r9k?v~K(7@6sB-s$AAhttvChl|fM{1TE}6wDSW9q54ka6miaC5V=-naWaR~ z!1k2w4QF&qQ~!~%K^SLpC?ifR(0y`q)fVV!1AUWBSF~$`(93xnx?bdE9qS&#)d^nc zPdAA_O_sUF8(S?Yq;@8rY#_!^OwF1BMLqy%hFSw#VkSz^2kmq|qqz4bJwk^4b;akY zMSZ>R@yH(!sKQ4op;E=1%Utvn>%R!}q(Xa&PkYNk40Q%?zK&+sHtghSy%YMO_Tcu@ z+Qr7lvN9yr9+r-X5Bz!Xwj8uyvB#GxLaXuR(rg!j_yal)LaZSCBz7nr=WQoco?&;3 z;W;bhH5Tc=G=s!F4xv)8LWD7GeqARt~+aA*2%uht&B zUlljTB^n;j&XL8wxaDI_>W#~@JD{J%rQ>|LSS$g`45_m0EjvG*ixcTF76jlELp|)nG0&ilwuJ1SZe4yaCD4}0 z8o(xagh@*P=yeDnu1G^H$R&!%cx^*8VDLf-ff};7)8gZJm?^4Z(1Ae=D;N-L)$cdnc+g8HALaR9^z8P|eKN?Zx8rsSR zp1J^tv;DB#r>}qKABj$dasfhj+!sXw!Ja-1jDw~0pZq?!C;0P!6NOt-bpoe@%0sy70 z-nj)7X>=>`pdb@&rwa*?)zQ2*88gL2O?*}%Y8X36nLy`KKy*sx1_l#TZ5e@OcBs-; z>-;B6sBcc_s00G3%+}$Us^ELgC(t?TLd`gY@1LM|-ac8&-{^Y+Xbb=VyW2(33~j=A z{bJVqddHMiIWw5?r@IM2-U<(8husN$Ude!1*!_m+Yti`Iz5l<;BjLAKOS7mqogDLv z@%Rnujz=-F&c5P$l?V$|_w}#$TVQ_MjPWQWC8M+dSwOw7!~jkLlA8ttreh?2g5abf z&IrG?FW>EcR_>t)omD1Nm-?0|VSs>R6$ggy&+Bq2Q^w{m4M~Y)&+EpN zLJ)4;WDuFhG#8g`bKg^@W*GBms}=}AztoCJ=q)nu%J+WGczR@2VGT@ijT4U9hng zxxbuc4d?fhS0fbyULQFSe_5K#)RTH2=_2v=*Sc76EbcnRKb>^FVt;2V!Ed=JmH zkgQjp3)c8PBngH^>i2Iti^|*^55Ir*6#hKS4h}iWzVGP<(1puR#njYc zsWY_e@-GGl&bcd%yzSZw_H+^j|5$IGO^Qu}|4Gdd0hTk_bMWay`0{41q8fy?RAB&_ z(4u6h1s(f#<0eoT5vc=YU@}`%uwvIsEWTbyX0%|tx#w2cjP6C(pVkVcV5wd@$$5+28I>Ui|gBg9B>|_>lDuGC&X{L`@V^O z6zCU{e!a10I$VJ*?H3L^aoSRZ%Z_#bB2U1c={@K znt6k_@%{1~N)d#zK`{f9wdH+1%EqQ3 z9ryNs_Os;0=*)%q+FO9wbHU8&r)>}gQ!O$yXx-X?Nk%D` z5egb?94Ll7iAM&WW0B%5wTF*|)aZHc_O6c)!qa)2Yuwncqbjqh?jEQ@1y!;Iw!r;K zaXtEKPVuew3I$tlT8W>3;Ohxd$x=c;?3DE#o8boS(C}WMPZXuezWwtH(sR zSxih?%6o9LSF8VT13%LPP_a-(K+ZQxXEqX3Q#aX#>a4Ilg?m#NgeGMA>D(#sYC8A$ zUnmREUT4n&F&Gyz3kn!|BP_DHS2V4dJ1CeBvNaAP1!0812UU7)@HQF{p|6R;;{hN5 zy*{MW0Itd?08vE(t;_`8ksSe37{e0W`DhUZYS<01c6+-`dYt>UdE7O`w}LRITpG0Z z9XV4#6(kt2YsLOJ+v+*PJQ)Vac+=$26bVL9^{5D$JK0ek8R$L zd20*9>v25mZVW5+@jL1Z$||bZs8+vw22GA42bvzt|M`2~6ke@b+fj!~51ZmUX${pZ zze{d#v>;(^VVwgDX5iFTp1pX+#O-?lid>H-88}(5vB49UIRniCz=NBTLS8}R+){YN_j$9yzE*_@7N`|87+=O1&*_GAhsY#%)m_(&p?~>QzEE~) zI!nQ4idcZBEngl}CNV7> zNc02O4rp-W%%RUu`doDn5X@;o#{|6TK!NoUJ@1r)Nzpv4=|$m^N+%0hYPA z1R%Zva^A)dm6Q(;W9QSKh)3CXsI10g6Ym7CQ033dLLW>lJfL`_(LAG!*Jz~2W z=qCMqj!Yy9KY=^fKfpBLNHcZf4q6Zo{8}p0jIPxokdL53_kTJP$7RyQr6RGF7`$&J zPNse?AN60E(_%r~c{F#rwYSKt?z~sM_}eet&66AGxyc;4&c-BpLswn_A_W0Vs!|NBKG$@TkYk^^YCe&E(NwNF$4Hg5IqH+yw?sI%`0uG7H4ByBT z)~-SO-U>qS9jvd@*SJAjG;RMqmCa)IRYZ;B>DYSqZQ0f^%*EeIMe+%=LmVqoW-zKEV#2<|R_?Qr zVGQG940~`AdCPid*?V&&ny%-iZiXyv9!Y*%oV`!ud%Cxgt;Vrm5ql0@0~fh){dSDDlbo-6sQTEP{Hb@N`la`+mZ%{t=ZB3hTCiijmSSrgKNPKxSS>3zniHK5^Du6?d==^UBA2r%v6Yz{ zqhfXaK8qoZ%*|{%P3qrOUs+T%elqP>Rx2|6ZeQx2Wv!i$aeYs)XOq#ULM5D$*}oaU za?a>86DVC~&y~G$>Z&Z7Z8cwnpUd=~!r8JuYJ<^SNw~GF7q%pGCSB#?B~nOPV{Ex0 zBw_4pK)F?MR5Q-F8Me!9bK#viJ!^lAr6!2?&TxbserkN6&9Y5#f|`y~NF_@Dhj$0+=|qj>Wv4 zM(Kq!%8EL`ofX^zJOPHy6L|6>Qmlr55ogE(Aa@tYP})EX+Q31@#te{=5wAU9G3AIU z#zrlBD{6?O?I+r`8TI;SiP$JS*QM(vI)jq%c{yZSIWdG*k8gR*{bh~-^g%G@3uABJ zCy5Q`+nwPtfus<@LGYJjT0|3Djfa%Xz0-XpW0}+#^3LuTR8HKD!265XZpT4nb(Pq`Fn>;sbD}?P^ zF2DcQ-A%WB%zz*}EeBIa)>1}i#GM~Hi9QBdlb~rzKOPPHLd_%83fw!4P5QJCYpX~Q z0}d+)5J(uAkMbu9#eT3C2m$CaLB_g8zQkfK{qZu~A!5fx1K4)Wv>(Ic=OLJ)>px=> zCEy35LJv=XmB_#iffyLT*7TR{Jj@F(;=1>qPqxqTfKX$tl~jBfFpZ>QNAA4XIy30} zP4$b?%5XFI&6BAQ5e02O8w69i$@<6jj{gEoJSUDnLsO8}UI7`qr9Ae)AB@ge z_o^H*;g8T)K?`kBGptllUmF0>eM@%f{P0hPwYzXXWS)0`f0KqE ziIV7)^JTiAV3Kp4r;i`Z@DH+?H#+sYSa5rfC1%D$JmJTsMwCPXWm0~F9HevHhbEg4rq*kMLhM1DnK zDM1E{CpgFgJT+dK$uw$n1=YF(=az-RuO4PI=!CzZ9^=#D~ zt@DQwy!M6_#HV;oSr%m}-O?1UKT8kfi#^}Gx0Kn{`Y_1?iBS}~+k3cHQVkpL-MKUt#{+GBmJpbm zLms09q&7GqhaD*836u`QDoQWiAf)>0EEHbjwVU4fsp|T zw^cIgW)RgHDE4h4mQ0EQY;xYEh;c?3^$?%M+j9*DGGsl-# zQDmdGhN5C(V#G1!m$R1M9*s=>KiYknr4pe%dC+`ljg~|a_%apuPyCilkV#oG5;#Tk zB}Hies;DU*^S?aU9|`|eO<&R{4%u8GQQ4n8XVq~BgTHY51l|7iR9gS?0S z?a4sLc%fK~Qxl>ipv8N=J5OGZBFauXO&RLmpkUXdgGi&bEghIpxV&=gA&3%DsZ8sz z%1TFb{9gH`aUN^C>pc(ocmw}+DdyZ&( zl#n)?MT#|ZQ?YmiL3`E+dw?OqjzY@ZC~lA?K(>Vk&k$PZFO||V5?7+RstWSutohMdqNoBQG_Uxz%7@(DEJcRi&(uaerkLNI9<3@5|nIMLROGs6zt z07Az2wyYn1)?F4aHKvIoplfJ~#@NfH^v5eH2bWo?zy0CteDz++4xFdqTTO6U^aF3N zPxQL=Ck?fy8fCBB)MM3cjQQ{7v3c7ZF)Nf37#+YTKnFufLrXwq@bFI2(S&S}?0XyJ zZ&U#3%Xz)$vylQ=m8nwmMNpQnUDO~=^hMraM^Q$Wa&D7`fcq_&#MGF9w-`wPV1Q)n zj5KNU-llV@_P2g?CI~Dg2-v_t6_?+^v2F>N-6zSi#bQg8sF~%Q=BpCry`6=E49V}( zeWYnkiA*R(*+!6|&mG{48OUAZV5J%uE0ZBOX91ujFI)mvGXID8*X=u8zf0?&IS_4* z(-qH%>i3xef5Uq>(%jYJvr_B9lJ}Rnc@@Ns%p8|3S7`A4M*X@Q0a6b~&+hjs`CZRC z+IlG7r`31$H^#FF|G$MV!RoLcPOYOunFSWv=6=>_%0xs;MnL4`n^@R>5Lp{YsQO3q z{`2nn==?X%eP8EhERaNm$Pj>-SkaRN0BEoYtZg$z1V|`EViFKgKnQ`70|_c91_)7t zh_;51kjP*HKp>V200|Qk5D}tC(nu3Tl?nhzK?H<{DDIo|%aNYFq+V!*++!;4*)4Xc0AkH&Af%}CbA?H_xu7Nn|Gpf}gr9YPnR5igfy zFzY>^m(HY1sr_knGqrBbe7Si_`CxBybBC^-#q*~3HYn$rURf$YjJ^&UfYk2Q$SrXX z@Y-CzY82G9U$Y(SpB<)h|M*%8OT5L7^%w|r7R5m)7%Y&{L5~@5U|@v?k6!e1ifW?m z!V6bbHp_el`C90pr1a@i1nO4LN|ge{rs3EP)iKBgL7Hc1^*-zE^IZSuv<6_E^l0|JMRNND6PC60o9GBJ^?o~DFMs<*9B-(5e*e>S-?=`>YACo#y6th@ z5joAH(4m{w{Q7lFqYP_KAO04;B2`>n6>{ne75}2@G+kg+qxbyx0Pb_}sCpN2ga?$oZ#c1PyaDGjcOJgQ>a?f9swKf5DJonf=B+l$G7F$#1{Bu7OTG&0}s{EemIxP zH0~jkPIlb5kcFqA-c0`&|) zTKWH`)yDAP(a9892PBo<5ALFkXGeS$5XO%#83@?pBGRiX(aJ3-D&uO3!A_#L_TVXA zD7u<{i(MmighmafrZ`0msZ!&_GJ-}O!a(_(@u7FXBPg+;Go22|Pz0fAH1WsO7?`-a z`4B-rpvy=oQsq_SQo~7s?#vSQ52>pdK7$4E*U6G?_j}DeU^7N}`g&u=*2JG_GL|C5 z!fWG=)4ZoWGGofrWdZp-n`lGCnwi!>pBCO98)dWB{#MKq$CtzD+L!$FJ^CCNAa~C7 zYjG^*;trH&6kMz*;#`_bG)yBJb1e7iBQSDUeP}06q{?&ZRJK66bZ9x!-H6r=#Bt;d zDPPb+K56a9db2NIxhh!Dg00nHT!MhpG`Ke$BaX>anh=z<=l>EN5cryxHP-!X67m{D zDvD1X+S_#dE6nV#eHt5H#QlsO(%GkyoBPbhUw{&Dae@Ky3=U(JyL6ucI8jo#^0V9r zsF>RNy{0A(<-^Cg9$5LGaJSX@5@9?@&f?+hZ>61n1V{=bcSoc3*&ZA*13)v?@ku)# zRbOlYGX6_QEN^AN4O8Et zra$8Sw3so62gq#p>iGE+p#ycMBN;dtcbhE>m2i)8-Mfv%`5ISv9gbRsXuP2|+%?Qy z)GbpQ`qk4B2S$2Q|MplMe1DAi3(K*i?RD3JGV$Z_^Xn_=AJUZE)|1z@wEQ{AJl1=2 zGyR{x=h(&KbtsM4#Wg1^RqP&ZF{Rsf42Bn_YtuPF$sGyXtlJO{jPo>qf)5Zxk`VF;hAg+a#SZWW$L1IjY5 z2P^klm+1;Wy%KFKZ`3gTzKQ6*krjP&V+Tva0{$>>?#+}#|J|FmI!S$ZZy$XdH-d*^ zTZ~iG=|%capYXwvRH_pc1o*^hCiVra9RGXjS`YV5Wp@&)pEIQ{F@B@zeNcLM3jv_o z27!e^=`5kGa9$L60$rg}7=H@@D(z~}?IuLCV!)RQV16Qk2DX4^cH|fq4v0fW2tbQO zKrlku%>twN83Zk*V=+8g(wf?n$~%Gz55lc#$N3!(Fb|Z^C{V@jJG+1}OKE z`~tL6TpN+)w@DIKw8$_=v@r;i_NLa9lOZ5bX@bE7Tg93L6DXqvaDGIMeRRVXD-9gW z0+4cyq>x@haC28=$RgE9OvcjMQWqsMNhC>a18P!15>4!+ewNzI;~8=YAmFT&31L%P zRXLQYDGCyn+m|BfA#ws1K>|b+NI|lhYVFC1KD)E5{lcTvz0arOQ2x37Blv%vxaS+| z(!(+df#2s{L{-v5rs2$hfk84sQQ9l46bdd^_V&HN?J=ce7vYgqfwehW z76*9j(Ygd6g4*}0NI&{a?zC!=Ap%vK*#(*xHp-n4x8Yfga6`YocD7ZNl_!L@ij@cw z0ST#7MoDR{Y^sh+O>9t-5etE2GXm0Flu(3=_` zyW{u#*~gu4BLCl;dhP?z;DONt#F$LK=q{F|Do2_`^iXxu-2#b45)kXBibP!Y8P92( zE3BWNlq8}jDnz6k(8wcH1xd9|PkE|1FTR|CH=GwTQ2!@+qr~Xd?t8PDqE3?tk`B|O zkkTa9Q_%&XBq7U_V1p|S5)w;9$(0@Eha{|56|rE0B$!1Tg2=+v(89TsRyNfM*3KOm z!wV>(l!&P%kWoOk*i9y-qI5_~<7q5N46=a*AlhUstq7{DOtfhu7L{bA5`ynugA`3k zGRv0A!oh|~pYcj&5fafPFqMit2Z7Xu89~yw6=rO0Adzh~so0ENNhE_AI3bf1LISll zLaGu{iqW}QR9HY-lMNyzB1}mOMaYI{UNaI&xx&P$oMal_vt>ai#|q)7$Fg$O9>Q+C^Cac7$AZgXY|~R5j>er45b9v!EKU>4xaL; ziYWw-OKuFC7-mF;3=&Bo-3cJM=9bEp46+g}GYoO&suV{Qi7w8jO9zSwkxH7%0SUrx z%O)ahf}&AGtRy-L9E>7IBCLaGl59eb930slRfLohLzx7~u|rjsutRQ(uw0PE;aw$W z_DWEjsZyB<2`n-JQqe60k|sEy8%9kRgCdYJ5lRlFGbObND1s6~GE|TXmUnm}Or=gt z&JaYGd}3%^qhf%-ZGs6KorNJViD)BJ8!;im!5K4p0Vh)>o0mn%l0qmX%rgz9NJ}ni zKw796br({RNxZ9(QjsK`ZBrx?IG4ppBCdcXq86pK4qL;+nANJ+W?KyjD3VO6 zl_ZuB^UK)mcpHt7@;x>Wg?2zCXytitiiI@Q6%fy zy8`Bc1e~Zr$!y|Sa^ERZq;94`2!my#vs}h$bo1rh_R5V8%suu%u#FZG(|VI!p4Y>p zbP>6yM<$4_g~sSrW$`DNBodn?jgloxvZqWkl0YC?DYDQ>**1Yviy>{Tq)@jjW`V@+ z?S5pLw=}#_MADj;2{FuttCdaEY*}d%YelFaGc*bpK@d*~L6m|ZthZzpBtbC9yR#=G z19YuSkVO$ilRPQOj2&2(>AN1A1b0g{nV2wdEQXV1=);Cm1u5dW8j=vVCv&x|9++&2 zO9eBbeUgNkB$k39A-bOV{@Z?7_NA)8H4U&R0Aym;vAV7L>P=eFz#Wkg#G>850>2Bz zz$2jL@^YwL-Qj(s{>z^dn|zk{ozBv&Ds@T9F*MmS$f%t&l7`9%0fwNP6=JMFb0mjN zH3p2z9m7>DgGCW2Ri-4x5kQ{VN7s-kof`usd#YMfuh6*c>*s#~dXrq zr*T#0*f;Ng%lDr*9`hJ@c~bwa%n+T&v}f6KX(6EHj+qy^uV1`MSFrQA8E!@1Rzdlc z_h=raL*V>XNufPO2r_z-YCZJGRV+=)V$0q0-%ESztF3I=Af3*docp}{>9@1hy-uWE zd;Jipgeah`Gf-@*I zjYeg3(*dHAB&Dis6-k0hamwg^g{%oC8oGvV5St_nmZww&QX7^_Aqpx9XqlAfmen&w z%9VUbZo`SNCV}4@x`RZEu}@Y!n^2)GXxLzx(q?YcK>{$IeO+%O2H9CWB{GN>Zly86 zsFDLq|B6{({PZPGl>$x5=br?D3XYxiz-7JPc;f@8yiWK z%Ni#=ICi8cB1#OGvsaWxBnFhqnDtNMc|T^m|Bt`fXB%q6JqL3ji4KTB&(gdPSm7>J7RU`PSY^sVk`sAqWdcK5HAPWCfmBn$N1B1u~gBs6mS~%2YyW6f$OHk_$_dOqngKVYmcH zT;;)VQ6!{BN-#(TgiN+h6oOm?y=IvNBqJ&wskdrD% zV7{tM*wASrP8t+AVnwR$+U!%5VWLVf$1`myLyK{VshBVRKaJcU>}TBmpY%M<0NYSb z%wUEWLWj-F#iXK#cBD*{70RT9%Y9c|<4amy+%OsyC}x5U7Tpv&k6qBctVm*1-BS|B zlvt}+6{=_TzSHPA`vr#Aj*O$F6Ed16SB71WD+Eg_Lwrv}(POJFO`QS@GEorQ zA%=9BaJeQ&X=`b+GFdmenxQr}ljBSin@{ZH|D6n}Sl0V|+>+AEp9^=3AJ?($Z*S{0Y3Ovd7Pf2wsqu!qfYH@IH*jX3p zKvbZ$q~OAq$Yz++tineNWN7KGW`1|Mt!88b65L-e1J2$LCh!#|V-gy@7sGJ;_e0af!lrDH%L{ zmk5+X5Q&J+B}5y3A8n#A{&H_&&*^Y@Z3mmagX8%@+ysAt6y{`$!xHCjz-2cATM4!{ zA(eVwzwygh8~%6a0@)QB*7YGxaCI-r8d6C-=;8DjIT~kUKtj-rKl31Er{&EKbk*%d zJPI&&c$b4YAEElq{!!-=%L@NQmUR*6LJgc(g$V{{Rc_QZ*+UFb+#cu z%dB)N{TNMl^TCCv$Sycu?pKn|wOVJ>lZWn>NDQ0u!G4tD(!5Du%vO5h zSw^Gy)!0Oy6A=WpZs~q^E`fY$huBm^%V&$k)nNhh8>D{-cq+W}Jl1qxv#W|x|FK1L zvf*=}n>-Ka0qcfM4H1!kVoC3kmEs@x9Z2g6N(1Tu4}ifz;Xrxc^a%IlAG2+(`;Jug z0+Nui00N1T0-7G_X+R9f{Db|p?%DAX%xsq6scZ0HLFp<7A)O9gz55)w>&Bb4LFL#4 zO)+slmtA_J02GhvQc|Pz{h&fnYJX2~P9y*%W9yQJsj7A$&CD18Ms&@ntU)eyyKgU0^GbMq1AJ>o(sROv{FzM13WpPrXlLqjvuT zArK$J+-gj_4oO~NhfAG_jH@sr;Y1P7Nuv~$(iO%9uJS#$Gt>{beA1|+WgZgWqT>a$M71q zQ{-%Rz;W1Y2Sn1icB{%R>*Y9H-7)NZ-h~ZFLg3k>wl2LO^kU5Dh<`Y_1$mR^BR1df zw$-W^`tb7h=1tMOz>d*Fn6kwmBZ<>JzSd*2ZDq+3AC#rqfaGD2q(!+b_r|l4yD5g) zf=$%5$Ye&YjYaV~b~;0@;{BbmTmH=lp%y$i+!i=)VHQUA2nvwZ%tc%9eMR!9FNNA{ zaQc<$d|rD<&n|(lIsj~cxw-)H&)j$?_Xk~mnaYTX$NcT3!p=YPDKj92oZ;RG=^2@W zSmcj(%}YTitZOp#a*Zs`+f7!=go_&E8dhD5_Nro^$$}YE0EYHZkwYtJ^Zy%5CE7HO zrP$HNco0eHn0od}ww3E!kM1r$ef1u*m0#}e=JuwX>AASw{-}So@#D^&J9C{44 z%%8THPD?3v`%FRZR3WE$QaO}4GK$c%E(ckq;nIFHuD|`W(v)Ux6f>5896|vR2IBhs z_V^o>6oLWZBG}3j6*%!5@0E_ayIZ`Wy6Oc-fi72rKAOl-bGNAVTzR zw`$@5-}H>i-`;W;>P~_=($kd>87a2)cRdzi0^eTlR<`_W0su|MF5&2h!r0SWn5YNe>nn;a? z-zP3$0>&U(aXp0q2wmqIlfvs|NEQ&cS8%>qR&&l=Dhw5+Vi0!fJK+;d%@F0uva34s%v`oAl@o5=rAUFXoO$mleggCy8obxa*t;cgS8x>O%&|bW zJF)W)7rl^}UE2mYu)tV>wvpfB{dx6a4-WpAwBcYVPt8REBmUp7&~<+Dco>aQMZwG7 zS7K_>S&CVi;;nAecm+0&zjlSe4QQb;6e-`hkgC1xb5OSPLP#p$W9 z1bA9>-a`w)I<%W2-{in)%s*Kegu5D?b4vr;i~mWORLsABenH}u$tGe6da8WgJ6(e~ zFc3c_dwep?9+gX?0RvkQ28sy6n)3xWljdz5+al>}+$&0M?>$SY!?=5|$myQhL-!gu zQbYsmUbh(;y~^paDPP~nKo7Rxaqo}!^(Zk9t$#HsBJ#-Q1vATWMJ4d$QDpZRT3_Kw z(SIBWt6NSzCGY*;C*=yG3a|Ac1fymUh(NxOUzwA~LDEbqYsI#(wzii%3k56H)|JVw zeR%CU8&?m67=|aquOQMv zRKn|4{~W!?b`A(MAgP*#L|7~#%0OwfmklwX_m)>z4;d+qyNxE7r-wRo+IsGjbG%mJ zo?P~x7XSFmj^Z2&sb$?J##V1?y-bqrP<6*^?0W#hnLqrpxYiC800F@-*UnfaFo78p zl`hIzkl-&Q&!{R1cgM8Jz8i!>Q@2FI_4h4d35ChY^grQiN+a++NC0gAHm6l`p$ia9 z9h>3wBedq&;jjgeIq(o+OaWe6DR-}S`cR)%_oE}O?qh#*iqW1`5^z~QqT85DHze+;s8{V6Fs`=G?17A`5es8`! zLM!1t&tIGE$Xi7f>?lvzu3KGHt}St@EpQ7F|8Ff639+Ev89+bIkDTR~oLfNoyJ~8%F7fD`-TD;V3vr z=R*Cdj{a~Od0Y*5hBVjWz3k^)JZm%#H^8+bLzw}RVlO?$P*sViob zV?>sO+p}=XX(g<+^UB_Wx@J*PtwyxjRiRC&v}IqTYYni-p`zh zJKKy~A0XRv3K)VQP0<1fXJhbn!0}l8Y%3lPETj1x)EVfM$*)@Y#8e*cY%CkqJ-jvE z)f(3(B_+6!VX6Fe8usQ}4_M5dS^2-gC|JW^U}(aEnOxb_lS?uP%1?2ReiPdl1kuZGqhRb6l;`w_$&X zl~ntWtv^e(5BXE|p)XE;Db_cnpm6th!E z8pauo#q9-PVtv_S?!z=h08Z<Fguq!!#uOu0I_{bm4brqZq?i230{JKJY?VPtv+q zHE{o#S#(It(=4ixb7d#8$7Q2^+ib=SPG8wm3k;)`%17Vvdrv&JD;{O`HYaw_ZZQ9S ze^|U@1sUvcz(^B!uqAdE-p&As=-^TX>%9B<*a7#{pB~1k-R27Ii!qX=iZQb7nd9`H zFs_sFaEaS}9d$TOhraCtM1Pp4LAEn`3`+zjD3Aq8i5RX<>mQ4t#ql9vmhRiU`;_a7 zjKb;DJx14K9Ui5nn93;2M|rsC#pS;R#7fgsFyCB%>`P+B(OkIcZ5VL0I44v3Il>8y zZIsYd6Gemj-(aiW8%aG%G+gYDx}5}*6THe!pQ}}dY2n=(-*uaRT~8#!+0P^mp1w)E zx94@@pW(MrQ*zj?mUwsax#_d~^um%#n5T)T*m)gF#j2+z5X-OOxe4fCcT&%CNbQ>v z0HViC<&omIK^!9y;O64+kV%N9y-zWHxE(qr9WLI5xS<5;hK5pY ziBJAf40@u9grd>Qj6H$vllXX&GmoOHlu;r)CKmEyu>=WEEQI2~1PUO7beszl-Uj-s z4ND1@SH5;ikvq{*#c5wBb*sG%YSb(@5Hk2t!NxQe|At1RciwCG%2p89G5wu(7EJ-G zek+&w!H*CP^L$i8mkCsn4~*uuB`u_7LtfcndM}y(iqtA$$Yw-uXGMFtZpRl=e|0<= z8%B4Gn_A4>M6bP@DHzzs9YacOCdDgmIhDENb3td?xyO5RoVeqAWpsmA^!Vm3DJTx+ z;{k8ew_4hlCXfr&C=I`!nfAQ!{dd(-bHE zP6cC|`@BpA%nU1fgZM-jq@d=T@if1h=LV}+Q6A^>^&Lz0x^oBh2fOdCu!aw#a?E3{!tt!dx(xQL){SsvzMN&<4$!52#ZPR-UR4vJ4 ztZL-HX;Ti?H}8~=crP&@t4>L14vYVJM1;~~poNmOvkXdUtFX{7?e2mRSb;*r!{?Af zAS6Yc6Z5V5+ZQB(eN_HQOC%q;g*=2ftIzHqV&b2;fmwjPWxn-n!|Q2HUoF}#zf*^I zzEvi7nwDTT?SFqjur?`X*^MYoQLaKWfCiVb8N!bb2bual0m%1jvRBn)LV#($PiN2` zYu{J)5w36ejDe|dBMnzea92n(H=uxHH}{%zLOGsY*mGx3=5w(MwkLls zx|<%EUlX}fm_GA75LKgN2EQ~*pe&)Uco-UODFqiy&^%a{a;Gr8>} z{|O)L;nhf$*s3ux$FXGAhr@vH5d_Y_*1q?Hba&YFtAVIE3+sewKJo;jI_n5PzE!bc+3&)<<46=|e{=1KRu~|K`@g0E8eu!a(UC07t?~at((i_GjC=!Ac_rfDn1nfCDKY6H#fB(PRtj)?vDbT^VON*f7QAXgKjLM2Cie^T->X&yc>pmAUYpuCI^#RT`d?N$>WGsG?fC zaAC?||CdO%X@*E#YSibqRTvHeF2YXOUL*9U#(Xc(9jgfmLI0MKxKG^fT&ok4OGuU8 z0AK|7R(aDPjsh7uBw3vI5hGFb|og;8+5 zeqZAFrV+@6v9%C)l7fa%plk{l(ZlciHD+h_$GX@Ca8aA6$6hj_uFJ{8>tFAEW;Qcq zvGLf#O(}%ZhTxNk`?85L6ewsgznqFyD8vvNB!+{ld`EY2WjBX2R~1z4FhqkT0wu6V zk1ACPB4hl}rLVbZ{B!ZN?m8I}v4kR!SR@FR3l&zij7*gEse@Gl#sWbFNXR-9B0Oye zO&KUO;5_-1vZYi@6TpaOp2yM3Q+^&*VzJqq+0%6rDaMci5WrmP?iA5tho{G{X2ZPL z+5#3cTU}dLtTQv7yyx{K8(at_2Gu_|NRxOl^WKaF2!Jr`FZ6V{yMXZgl zYvOWkynXL}vfz0g8NhYBIgB@^ZT}kFmLrlK6`F-Z3g%3WL5KL z@+9?6xeT_M1kl!x%0RrB1OGY`gZ>`M@vr8M5CXD0lGFsCfzrr`qlIb^b(&~rDxR~G zIhw@-0LA~v0Q_u1?2-5%-`DxBGyS{1|MX~oH=I?<_Hkl(^ZLj&dx7ltf`Vm6tBFG{QaV|-)OyxG(O!6_NwhCPm@3B z+iu_ctoS${CUQVonc{ki$4O{E=d*Nd-j=odwteqlqT@JBYp4gyfn&iml<5P^DFmx*|~g% z#1oI@Bj@m2itp?|1PQ$=%-i`PASrcj@LkmCKM+x1pF@KLnl_MYi)zl-1X@%;nD|a1 zGD>d9*U32hXYhJsEBG%|Y++@OiQ!o*-mKgS@xYu7@MiMq{TyIn-g+{gcW*eF1z7p6 zQLu%5+TU+M1Qzu#lN31pXRX(vPDKRk@0*xBtgHcm+59;%d8$42vRVGX)=iZNhq;k3TeslO560uJhcxe#>< zW|PIBk1M;z(@68#FOt4v^xz#cI-l?ohcAPLYtX~Tg&dKMpQ(6P$nqR|5Xc(~8x3M+ z+?ystd4QhmZ7je$Xy4d&}dsFUjEmv*rMz;6UJx&{}G4~{0o-uVvs zxYT^O`_~@JExf(!-p|LOnDp7&H0HQ+Dz|*z_WEiI0O-W2haZUTIBc`HK2o|yNqqNT zA%_QqTDLuTcA#${7HT?PAFF)SbUpGR)x7-}%G1$LYy> zvtIiD)^C;lv&`r)Gfv+=&jP-7o6X>nTNfeHHjfz7MxnAl>nvkt=ARvaUxvBb;TA1> z(bM8?V5Y*5a)9$Az{_j6`Wrc&@{dm*-UgHfpe#YCztI@4O>2TjBWb-v87vYKg>WJw z>sIsv9&e0rgtTJhP?Gj0z^fzF@i*F}vf1O?1D-ZkHQ`V(7W*lVP$0G2GkV(oF`mnh zIouyy&L=@p1;Ky7TSaqFLv-wa?%W0$PU6;D|4h_{qnMHYozHN=BigXZau>F6H<*`R z=d&$?rn2pDEarbZ>{TAt^ZAHq&RsO_*^?P-6|*MuPT1eJ4Em(^*ekt-mJybdmB@?- z;CpJ+uuVz@vkf*5e3l$4WP0nC4o$7}3om9?1`3@c?_8nVFa|SxvwX*aaOQMxjt4SF zeuH&2ljSy3h(Srd$#UrEkX}m0gb+Vrd1wQ#zh0hxzFpewJLlj6*#F`p5CFhJI$( zF8gO!_JrE=O+mXuJ@M6qjt}MH<9k)#a)0|T^KsNU z(TSvL_95Vw%M)?wWa7=F2W8Db*G408!{lwUn9&FY7Ct6?F`I4sIJL}5Snqg9&jso? zcfaZO57YQx=e_x8pXU3QRY{BA**f!F_nw;E1EuQq-}w3za+xv?3tznq*}vlSc6$BC zoYQ@~dp`}AS~68^`cJ{LDBj|JRZ(Fd;cy0pcP}oULt(L)}A19w`G4&|KmvdWHNfoFC}zX zWU&}jdB~d5DO`_`jjC8p!aCJpSX;Jw#5Pv4f1aNWSo=ip_``dXA?=!*?r;v zaA|VuwrtvVKCkgd%3`R#r+fYTTi|Kw>9zIwpA_8U-{Hmd>U8>xAGLH3$$!Vuko3#l zU(!N1+TgvuZ?9WPXTN0T@TtDivA^u1JEYBwwq04NZK%VEGL*n_tE1QR;{(NpIj@Oe z@w2qBnBpWW7h2Me$SeKsk@nV;Yhf{%5MIIDV0PN`>ih!+fq<{26Bx(hj^AX>_i+^c zwWMS1(q=8}@|1fJU&bIO0r-G7;bwz0X+R*=iw^LNuoX9y=FTgka8^b^{Tki5A?18@bNF1&d-3d*jRKm|Czi6G@Q-5cO9KoC8V~R33eChq|(&4 z{Ib5-zV<`Jlk8UJz%u+Yqc*AhJWlQP79XSDf=ScSeQA3AScjn7b-P}D;ha3%hv}lH z!{dhXEt82y$(qAI;=B5NOe}GCF@I0)hp&C$P>)90p2@IfumMmifDV3l1I&dfY`Xu{ zcAN=%le4^lUrU_PiK#EA(0vu8`@HAup0$C1%aGxKX)Rf*YK%$uwqP&N_s{s-8I%}r zM!EwRJ->)Did`mSct8w!ev*jY`MF$Xy#sG8l(qY!F)*PG|D(P8=PwP_&hzq<_;kwk z>@-qMwrI!CagkjG1c+5Zv2vPm?3hI0hp`#v$HvcO%EIb~-@2C3xlAvD)a?vrfaUM= z5@3OF^yVI3um65+m%(d;FU0FM6B$qB7BROc8ISU`sEo}?l*p{QlGsGuYP-4r z%J#R=*}S;0+eWcmXYY;JpF+tzyS`7M1=bDY6c>XSed7$+PmTjLa&G5yHC9&X=kMLI zh2OPIK*k6_KsTbd+z>KwnbR|96( zu(#IR+iJ5;ng2ay{zEJC!>|za~v=|gSFQ= zDEtd9yuEL$~Xc#xzEvysm)S{kN~asczOImD!O(k9|&VPR~yB zt93&W1qolSJ@K%!JHWxbaL;+&w@d4~@}*&?F8ZN&Pa`V7XXDXNV7tz@@BQv|#6ZsD zGVQUtzph`_p`R_{%6FI|_*U|^D1 zf~+D%(c93ZD&9mYXmr&-?WK2v`B8aKd-r6s)4;RNl7qpn)^fI7ACGPGUtrlk{N8%I z^bqgbqt7@ygpJ(+*J1oOn{8Up^L|DLjEl3{dimk*KDvc{&)nt09iNTm?*jeVnk&iA zmwo3)-o_-dLWTk4C!6p6-Byay@ubiOcZEEUs_dmt?E;#A@xo_>r%mCVS56Yn$0Khv z3R~4Z{io1WZ>rtSGNMrAca$J)|0vy;^S?voe6o5?K6h2r@^^H+e1>q(ofiu4GRLO6 z{7vs{GhS@}TV6V}RF8T&Z(5dQG5gy|OvLQAUb901rqXm)S!OKPWZDvKlJWF#cOKo> ztK|~Tsxnr_N?cce0$19b-6R%b5vgBX^O>>O}1z91z$GS`d@Krh$J@;;T=C&E9EK_#e&*0xgfrU;wcN`5(Yc-k4~_*vBme(D|* z(Y3i)Ih%V_q2l$fsz`SOT36#%LbG)A+1h$CfxvDZ7iIHNMix877d1}vE_W!gS3r@o z7W6Ah2pHF}ZRX%MTuRL>o<|zkm zmp}CX1=ZJ~jw^!-Em`JTEAnLes&jqyS(4$mu#d~xG9fu+68fiU2@l077ssr9HUoV$ z5Xo4q5C!R&f(D#cR})hh@g0+s)9s7M?*hGDQ*Hvn&u4@>j?$R;WGaK(`2BY-duj`1 zUX$Zf`aZ4q(p*>1$mCq~-x$T_iU>Pzt7pE~QcDQ!%zU}s-&tCYN@K%%tj)Jlf<9a2hHrhOS&_6C19*%RwH zJuMp!EZy^dPg%%)?2p~FVakn-7!T(fS@Q|88{vyb$Qz!bbb+_el913n{71iV+hE2b z^ZAUDVkMIrIgm701?M2PMCI@H4dM#kAW621EQu zxnA~PJII}ENa07CPO_g?#1R7$J6PcwEwq-Q`usS}`|zO-kl~fSR$--RQ;Rb^?H~zM zIe+N%_bWJVKDxU!N)cuOxB~fO3Df*Kw1cqOD(;}@%5D5SyZFK4A^~jAzaE*w3JeaT z9tj(Mf&mtCh&9e9op6uK2Nk&6R^wYGAPyrzGnQAW)3czN5; z9c96YjiL)5!yuBX+tVP@C;0Bv22jJbBtu9r)TQces##xCVWX=l`WIKdY40~`hhKZ{ z`HZXrqz3`*@eB+RDY zZ10O&HOHuT+&vlp%*%FmqN@=seJx~mP^KBjP+rfllV2jMZ?8jXMNobNJV?{8z*Lny z*$UMY$~pHkMVbU1fjuS>e2FRl&MX+yUy9J4q=8{i0>_$gmdHlMzbJ!%%go{Ic@s6R zj0~{SXxQ%7qy0rmK*=-5!@)o%6g(aXt0%^4r)>I=u*xc@YPNzY7-1Z5#Bp$833>^J|b1p)emI z$jeg6=9*U$Ww%Me*SYBWuZ=*i?y(5do%9dzHz~1BY=-Eo${+Brx51&eSWl0#g4ZJe z@1DW$0Y!pq*6@DGPL&g=X$T$=yNtM!Zc7v5K?90J8lP zWJ0-EjnlrPJyH{fx^U724uvkxiMzYK0nEb; z`XLHBQuLYd9*3?O!ClhkZTLpi&&!&A`U!quF#wGy#DF*(JV_Ec^SwBJb=9=muETFt zx;#>&lnZ!wbuYAGO=|q4fZ4ez(;v3JOB{ENW}T=CEHZ3EU{i@J>*>Y%41Vuk$_!H^-%{cwm{mTCTq~e$!+46HvrEO+^lU!cvu4|1hkRz2?Tlmv+uNKqtXmFj((V-LOZWR*JB=S zyw62yc8QRX0>B80s7W6N08s(l{+5IM-n1?45^!K$+Gf=y+W^*sSpqs!v5v{#^VB=2 z*1fFNuj}o!$m27#wBB$gzjaRH{QMn*xbjRt?TN&a`DxRjP9hFgS}FWYQ71KXsJFMI zhqBal1E8#RWF`NXneVlgF@Rmnz29;ER0|n`3)r5Y1BRwgTMwn35&iwzePVQ$^R&99 zcv{`Xmk+|Gq^HX1#sglL62rt#SDiajic64XRZdqTdf}Dq&qr0F1l(Ne;bpX@!-fTM z$*?Ms-S}J#EX+f|OchMUW^3Y?HcUJ2#`%UQ>G_QOvy2gKU=N`ZMXXom_E$#fR0rQy zsoR%X@a{MWKfDwt33EI~ot;8(pCA5Cw4<0y6)X ztw;cFGt-dSyRPQ@M7LATkn+t*xC77#zRw*dolc(l6=qMuwld=;yv+AIb5IoOfGhef zRyP}}W`!1GU!wchHlim@b8~C&X}ze&th<$Lj9$Ea$OBMA=-D2vr}G8Y-J2m_FG3O> zQGVpc#w+p9e_ibG!dP+REIe*-bl(R)E}kha5!pOtp&A)(Y4aalpUnb1l|o zT}S%wEz)jWMbK9*vhxfR?QPLXgP>c=WK{HkZJlR@I!`Vod2q{SH&XJ8SUyKp%0Pz`W_S^+dr_QR(MsL3GW=TVjjLf_d z0lcr4QFj5aBN_m^rG&j#=cQL5B^l{vj)p^gbKoZsdd3|>{bdJ02K0Pj9nJfI0q3$A zZtG1On3aB)&!J#I_>8p*5CG#JVc-h}cc*<1=aFk<{NN?ShDSuuLe6J$^{}&lfnH7w zN%dMuG1ilI#LTltSDvagUz_I?$>$M)n^xH_yTxiz!k5nm(;;iX(!H;ORc+9F@to#R24F^$iVMaCCMCU`yv4zLE7Xm)KW82ul!c#(;MUS-Og!3Y&cO`u5r!8oHduMVWAXE&@4WCl>)? z=_v*<8v^K!l!PpHSX?K30dH2@tk)zk0l?M^_QA7youc$x-iHV!X5stvd1q6`0s)TO zM}L{+?jxcxt1cdIl;(59jOWUH9)BJ#}&wF&M&_w|Khb3oNx?k$}o7JTJDKwyUU@lO|bh?t%E8uPVgS zN>%&X7V#XmuH*YSHxX}Q3`Uvq3u|&3FtQlD>Q6t`BXH5s1HG+f=%wu78Jp{Z&%ibb zn@_~1E?YtAnh9x#8Y=rKxsj0%!CrF|&5$sN3%>^~ox!ntqhDO519UlC*X@5DJuW{% zqHa1}ROA?LT!4C!)*(Vj9qt+u+t|KBLHCrC(-W!9p?zbT`^@mxX1FeXdIP)X24)ii z@(Jl599mvuk=C}cvtOF3@K_R|HPC3CPMvC2YnwD~vBe;j!1R{Ym=FRv%nhn9xIo%J z-gOATUx^JaBG$$5u&Xt_uX)SmZ0&9LHKK|9_Vszb|G9dm%gN8S@mqm9jDui?#3)p4 zEhw^h!aWS_W}2&u#AckE5sl60IsAmuJ^d6BQmh34G>q2JyDN?~#&|=(P&tOS0Ny@83Y0yVCruvp)s_~r#8{{SRXg^X@Kzm*nr73^+S}d zeiH-*3yb|q5XdM0wWHMj2z-&-K0XHZBb2K@fF0Gh{|GvsG}UO9&x3VR;He~ z*Y^hkNyzrat0Oqt&#F#`8{Fac0}-;0>caqx-uAKEO=)2#jQ?_mvI+#G?bS)isbKhbkx{`p{PW%Gg9u$ z#=Qp1=n^|>!QA@P{|K6(M-=90Kl5CIzSuj`Qdkm5_SOXytFw~~+^A2=5<4E+SWL#A znJj~I2rF#6CW@(YWaiuqJzmtX<9cwBm~3{%E48=XgxQc1NC)H&x9FzE&B5ZbyP|B( zawzgq>hR_>GU{f)X!yL!)huV@LDDTrTd~t(%V=6L5()qh$i^Rc@BHYQ*-8@E>@^ym zeN!ui*W%a&bwZkT%pt(VXJ+#-7+QxwGvqNHtNoyS|cou9oeBtUK#UxMEg zbC{#P*lL4Jwzq}nrGg%iBMPhIf%wXfq#P-C>?Fn<4TXQ&iEY|9ixkxV#*MbakL7!R z{kvkcFhCJO02@13a*l6d&41u2>5$7oJu`ge*3Yr0iPErXUt3;pPM`*uT`(hC5u~&* zjZ?H<55>;P>=-g4iV8*BAp~`7vmjDJZk%AP5Yg5KT{9`Rm)`w%qu%ef9GS#q zBa7wddjOCNl)VolBTFodR`KzP&9T9g5KB|syVk9tk{dS=n+3}C)A4;SkEZ*txXgj{ z+Oy%Irrgye6UdWE9o48xe8=~&V)pl** z*1MM7&E6prVg(?fvLw=x0;<-K0FYvBED4nmj@7ujZ53;aZn@a%+m80uv<*9XgUUgKOL^VW$i3tdsK}_IDHUQZu zfhk1fk|Br+8AC}FQwUUFgauSiA_``b8&<2b-76-k*Ipg9UBb0oJGkqvbR7mo>dr!F z(QGL^mFjF!OHCznlrjz380qb-i)hw0eqUd2?S04qX`Ar#mb2S$kl~AS(Ub)mq8+5j znUG3yw?NFfyoYIERH8>g6Ln(w&BS}YPQiv!xAsFFpj;(Hpou~d%?>LwD2 z1j)`9SqFHs7dTavpf0rkHF=Kw-WN_kU%8calP_I|(bdt_)9d?+#L@Ikr@QE8WKix7 z_m6oLMUb;sn9;$amvU-FQUvWZnmm8z~l>6iG^`T!2eeUB{2v;^ysf zXs&e`w+1i)F0r0KBq&af^0bnWqvWyJ?#y=;JCes}j9jV&_x!K0KU8zV_Z{W2(Qm@l zhi?UO!?=-xFN7T7uK7ffMPkFmlpNa??s)ZUiVH0~$wyKPM5&o3YF5TgtSV3_^3S2< ze(yWuInt!b8xV;HnE2D=d>dOTxMCtq2qZuR#6y)3A(l}_5r7edU=HEX$rq#vWe_d5 zPPWc-vm1?E?aDaTuRX<%%uaI7-06!(x>V;UIc_-TImaAv!JY1Ot#spKT`RL)H-lH1 z-N$ZcImBCzExS7Fk;bcy#aoMA?kYNXI%>Q-b8fR%U7U`b=MAmd#a%Ja4p#9x8>bzc z#n(4_+Pj^|#T}d|fhiKm5E(_3V3>%>Y^0PU1fq@GopLR&1zW$jW1{gl8?JIVh~n3S zT`|*JjfU95>iLz{hJztZAj`N41^RH+b3gYg zoZAOmjqHuko1@EA;1P@kc(Am?r+W6sgCGrEZq_nP1)VwecRP*S931VB0lbaHw^?aL zhf?l{fsMx{0RvUrAo+s7=v?bn3T?;yvyWv5uetB{{cdNh9R-~+SL0>#C@=+Oj|#fa zO*<+~%nMf+Xkr#2c+>A6v;b>7$(tNSJZk-(Z(W#Gf*8eqKmq^a=?DR_E%8PEGh7-;2gs>pR_;*!&2K@sZtrU1!OYt zvfImx(wtAF;!2CK(+~IuTzZfJFAq50Kqz1XFoY2|QWW$~OnBZaOJL)7PFvYg))Ot@;f# zpnz_#a_T)6^O0FkPgJQEs{Oq?fDBtrUt>44R7nJ5Fh&4=BpeKyfg*@O&ruQwwin2B zGncz1naHnqxS@@Gp?>mU=xQ|-EN;?yrrPOf7J2j2}`lLX9N;tV{d-UJiyn?mfpzrKuQReF&t1 zd}1Iabre_;^R2a;z3ui@mWNox>J4FNXCo3GG6tGY4i@j1msmQf^}Do~dc=|uvp6CK zf%5LDk)VpO0QCpE z)=2B36+(`+(Z$skpT}bSjQvc|u~D?tND5$>cTUgm>HfDR55aO&`KMQ2AX42(5}zFpFycLuxyn+v5_W{k*GVX3Q8z0pZiB}0@4 zppCS$%DU|;T+4wO~*2 zpiOK$79aeg(H5ST`7SqT^oh|}Pg-D}c>uo%xa1;&3DPjIDIs<9t$E#CyrN<6uA2`` zQLt+3u};2#p_-7m;k!|gZV2Ddhm2Z9EkO%EHklH@7(~#7FU?AdQc-VJ<>p&YZq=H0 zprMKP@%No`BbPUz-^XvP)pUgOQJdWCFQ4n=HZg*yl7O#&F(8X(>o3vw`M$qA`szMg zExOCS6_IZQEhRlZ2!3T!ST!VIgs53#s&#?PWT-$&K(pHow8{_b<~?6<<%7T6Yu3_d zusd2_)wpNjd9EW=mQh|zc%pyw<~F`32O}q6q^)<6oS(=uTrBj;S5N2CKc&XJ5N=fN z*}j{g-DhU4bkT6gi}gX^DZ^9sFlJ~7%1NaD<|W+^Ww?5eM`5}%_pY7Uqzx|cDXM!E zcx>V(Bl95rD%de`@1tLxvkmZVp1zd>Ds=HKR6R~J;ZoR4Df;Mu=dSf~u zYJ$f28z^c?l^QgK{3mGJ&|ZJMJ5GhWzM@{JRpiUvBL159v*;xQ7*=vmSqmczPne}x z7|t`7%w`*NR;GmwgoA1dR4>|q9G1DiNvHIJp56B!=hMT^)fZOT4meqW;i!pgdNEYN z0~TNg5=g>mAOKhx@;$SGMXT5BB%d$Y%XtZ;HQfz_b#s!1qOS=QgN7SR z-0-XO9gZV?#?g#l=q_}cZWx%cp6L!@nAPXgVRwDdY?Wc8ZNdf-8X)PmorimzF!j0( zL!RH)n6)KHFo&t_sv-6Givwr)HL1O`yo+oWPh~5awD&Fzv#e0DX*McxS^KjQ zKxpJ88ktTvMw=YT4|sD!Q(;Gh6ofe^%piiamy&ieRikebk0jXuQ{S!0$)R9by;y_c zi4e0kZGWgboRv;-00qL^)M*Ql9Cvhw`_?ffh#3OZZDIfdnTUtqoog)hF$K6f-ae5% zzJxcVp{sYX-Qx9ibiIBX&l0W{%VPq%!anLa2-w8b>*qps+#PZ<z2uqYKr$)B24CNZ7NJm)}M9^jhAP~Y%@ptd=T9C!V7S7s7;vt*c_Q5=Asof#5U zqH{%y55J@6dmQqBWYOSq(;I{HHAs<^aBf^|B{=FB#{u@dqFqUCkrUi9dR4kMB4-Ld1V#5|vdYUsBT-|VJvir^DhWB#K z2{cmf7h>~Ot6vKq!54Gn)pg$3T2~SAkzXAKTtGO3ZHA$S8xROHH0DsEk%#N~Ielx5 zM+avOfEI?iWX$&Kqx6h+dgiWaROsuEBEuuV-mYAEPuG==%6w$dkhqOq@ z>Ue#tTS^Pi-)!sZ`Jw3|*S9xeEPE#zlOy%67^n!?qG_h|XMx3XI_l2anM;&>i7M#D zQB=8EXfk%1`gvPdrFba^O1Z?Gv-H&%T8eA024?8IRaKS+WgOpuZDW_}RL*3pIoh~s zWLq4wGGq{H$VPq9oFprrf;*!U4K9@J4;n$#P|hA3GuUt2CxMNFYhlG``?KnJH}W?a zmt4ICP+UQ?2D-QtAh-pV#VxoK+}+(B7I*gm!QI_GxI4k!7Ypug2?Tij|GW3qtv6@t zoUWScnbSQ}BRw-;OJu3aT%0C5RHSL^9(0I6^F&bG)!Z%r^kcdn>?Pkzq(a-^O)x@q z7VbO#RIIWH*;V)nCFUmGL*&ANoK2rc*u%`VQ%V-u&3Qnwq*32_T@rnBGg#hUhUSh? z9_(UotgAG}koG*;ldo~$eC2A-V>U3K&}xnFrMvt23rW|J%|o}Vk)v3%ayY^17%^6R zy)n#Jtwzf-l0KKa5NrH9F~^`_JTF%0XLC=Z3h(?C%j{jTlRKrYrJ>|&iHR@Lp5BJp zr-lKGw)kY9t2d&2XUHWH6*U{Q1$&<&t=?(e1pZRb5|`5{7Pz|DyL+UF*@pk+ORPeI zZC%$nQLVMx2yO|tk$I4*X5UG$)yydk;|cn=+SE|R5j|VS#YSLN<~jgBNeTA-F`Utd zqY}wZS(5^L?Ys&jLTr7qKk^`=E_SU!5<1bQAq>OLXAe?_j(|RacaKCtl$I_xWc-b2 zNfJ&CxnNuW#qD7?sdKWB{5~Z{9WB>guyBf_w#4-vO^z?q(fFRc_Jo34oBzs9Asn(G z`bmlMpr$BPxHyz*agl_{{+Q>?=)%*h2622!MZW)%7#0cx$69!lC+xEl8pjP2cDv|3!*#{7tEcy$qpct#3B4%6hAy-iRe_X8|&mR00nuOIWn4MqZ(DT1 zx*Xz?DQY}kv}|Q(q^+hcr7KlUL_{ya<)g5>Er27}T_iC_=tw7sQ_9h*4Fa0JMpO-j z*cJ**q$UM0ZdF~%9(Y0=sG0RcK9)V=EmU8PAovnw5&#`Yl)hXQ4|?tK?S~!O-oN2t zBo4xnC&R>@;|^Jplt+h3&L`O0@pK>DD)8<2O@P&Z#({8>PgT!eW3uGOsPZC5@y^2k z%NYPGfe}uY?}9nS9}Bg+tAt@L!<#{@U}|75>%*Ynobb_QA@mmiW5v33+X<06Q>dPt z)w^R1V_mR)>J}e#IcoeDb6anH((n2GkO1Bx%av_)AP$YA+R12cFJ=*OF!FeaLOJp7Z;ghi=?N~>j)K0H<438xSjj&UqOZ*0Du=3|HZquhP#(!F z!(!Z+WhWVK@M$j#()Tr*;rr&WurUuol%%d~^(*g`S=4up-faDDiN{6V;4KUu{0O44 zUE%?Ihr%cP84Y$X!1v>gHmu(~==|qaFCul;0W~)V>bYp*&E%_xdsUAhZ-D!?hW3W` zH~jn`?#5|a1{n2l7C7!=s?#YmpUYupTiEJ?VD;#*2tg;>?6%i;M{!?xU<`eLSX)e) zJ@gq(c&eW|0(`A+r$4!w1WAa>9@FGtenptsK7Tgs_q?fI%4#3IKeY`x)BP%h@f8TH zBr}cYU|0w=daI!u7a&hecD7+p*47Q8WjxQyXmp9pMpUkie6qjTq zFKJwBeW2t74)y#h?D6l&-FeqMaBYtx!sG1q=?&RwiTEnzBMuwW)>)4WP2q|U2&%F^ zx%^4Zz_I#PMN0tU71msapKtT?r1#^wxi&s&}NZ#n2@dmngS$C3$!hhmV} z6Z^dpgRFXrVtY%fRas zM@d?U0|DA%LF1oV=B(6?YzVG}uMFX?kc6QJJbp0+A9_s~k>W&rtKLV@?vnOQ8Njn< znnGwc##Ap~H)D%=sm7s;R#-GfQ2*(9I$_70bb0OiZE5&W^AIHEj4>YYTa!_)uFL(b zs=DAWaAy+Zu8p}Rctlh#V$}FzybzX+!Nf>q4EI6Q%#j_cy_&I;|A_L@ybLqbpe3hI z9w$SXQK3`U{vCr3jhA2=JlJ?Nx~)z-!dskR+4gOg#(#G=#qS1TrwCMQ=FWjiG)i#!XfihP_xgkqPu7%p}vZT^B1*U4Zm zJ8vb|1w%xw08-WU4uu*8=W@U_J84f z?TsjZ2_@=?eoKcJ$#>oB`y)HwmM}v6`}};0X(i}eKU#aGnLv3^N&~J!K9#Yd3sOcK zR-87!x;1)fP>xM$zviCeVp~gEFQNG}y|k1#5mm|Pmvw-nkcAV};=v}?qi4NFebDPC za$T^WiY)5Yr>}201oJ7^vYW2+B4_|Mot}f^)7^m=ctVQ&JWXO!>w%mZL`k(I=IOYr zj`Wvw%@mXkShO6C)a4}PQw#&)A84??k_n^$;<83dt@N)yYg>Crt-eZdx3M>oR+qZ! z*EnmM+9dzu*_V;(r#iFyvlpK(mxh#m#9y3dT-|raLBi!A!NHHtrRs5J?m?_+yQtfm z&@lGwaVj5Ex-RN)GXN6>mc#H0`5LIsv7s8x<-VZ=HuH)39zxz;65JeKq`WEI~4bG=_nvj09MrHDmdp>6_()&191_F2m#} z!kWwX6~UR%fKQ4wSa#^#`?#!=;{_l;tiSIu>w`5lo_7-A*y}_pnbE&w8qFy+z?_Lq z=8fu6*5+B-S-#&OUM(HU>YLO0Q{%eQwzy3?RTXkEY7{W|#5!G_FFt-pDIRftRW^6! z3_Dy|I#HF9i_MiF*ZS!%Mmi_l3{^kCi#@GlN8XzbXbFF#pIbX~a;6=0T+u9kTBF%Y ziN#Q@=O@nwe{V7WiG!xfDBU2ZYcUTQ)0m%<&$7AwxJ~YxXLG4_FZeKihO7<}HyG*7 zDwO&)T$cb#{f)ccsJ)l(Px0SZ%8MiiN5bTFl#|Ick%@Pb`!Gyqco+a^c*Tp-W1 zWeiow>hoeDEW)i(K771A&1_G_1^aDcJFQhze;h3rj70pNPlk2)r&2v36auE_{ z#YHBluU;2Z0(Ymq4Nxg^{GTgG{gWIv-!^P&oVN4?;<=Sjw(p9-Xan>EUO_%TZ>m4L zABQ1~DX?K9_65*li0D}Hun22YscMfD2`2&otnVl9`mZqu*W7>*02$)9_w9Qjzz4#N z6f6LMCzi9Sd_n!B2<&+emX*o{y8;#D2ho0mO9#8 z>ND#1(D28eSZaIm@o+OjF{qXBu(de5-dvge(%5<qihO?~-Ym3*iMj=Z`@$PI2$y3NsX9>&mgNMV~Lj;oiV?zL*vN~+zg92L@Sl`q%k z#T{g%f{`37U{=*1Lxl>>fI^99AgZ<4FuaaG{D&0{H@l@*0?84Gq|7WBBfgQKfDK|f zo;3@sJ3w43ETf7rO0$@`3^ORxDX%P~Q_&}ukd2vd<2t$$PK2tzZRl+QY~6HP>oypsF}?!5QYeSi28qnwJNJB_R!dFw6y@C4f`#t z{09hIMbc-vIO%3K<#>3BbWtG~AppSYzdQ>v$;GDd>f zdxKZIgDMyCpE9^Tw|vzr5ZYiXPz;Z~GY_uyb^V;u(;T%@;vkMDihmM;7R-9`Jr6+t zAE~$h9D{D@Tz&~zmaS*yGw!8_P`aA?m9G2=SGbH)>05FWGR8xKgrsD#Fv+3~qDPZJ zf01#^NTbD;o_060Jy0c^E5VX%30>%M6`I@%#H`UQWWv4+OG!@LYLjI#V{6ia8{lD(VbZ8X8uLzYf44gR za*nk+=0+l3`(utsFjk+T@f`9X>It}nU=)ks;6OnmM<51aLSu?aiG#%95F?>KmTn-GL|}4$BsLu=N=*d`BUuCs z6Nm^*k;Z}p1Op<-@`FJyL(2mCz=han4qVyEA8+4Y-cIb8NKT2jUSD+`+6~1BIdXb>FBc0 z2a?-ef~O2*>Vsi-@3=3mRZhfDR1w9*IHHC43_LNaj(`wi>{FA^i}v-UHL)=>-xfi# zX4bf*=Ly(dW|PXnuA9kyq_3g%>5<6|fbZ7HOYcGh)_SagTHnRxjHgBJSRBmpo$<6% z%Y(ZZ9dtU7fCScmk2o<Uo>p=L`->RhyUG%lojLQu2zgALMg)ch zzjz4=-THL|)#K>N;nJVwYY`LQTlxc_BL=ykBXTTsfiC~&2Wydh(h*@cp1WJ&E@hF~@3o5^Sh_716Hkw8Oh)HDdT z9YVdkmr`ZOSlE|*RDBsZ9Bbv@&F5MKCbhb^4Y2;ts8@k6<_<71{Qt(d|3C5SwzR$E zrn%{7G?aV&#fr8k@P9jY00RGW*C1=W)&K^ZRXzY%sZ`FKjow~-Xymb;>w`wn>7BOq z+u-Fl!dg!EMy0Z}w2ZPyV1-N+RykcOfbj~v?NGI;di+-~=(Mo)@VZ=bEdx%L0^7kGUxm;8`f^w^+n zi9GMRx}NN(o-2L>bV0UlqigP$J>jOk7EAr7Phn5to^2og_Plxye%)S^1}6Tv%3bFM z0A@NlXM!9&gn26@2ib?sb>VD^RRWO{WGuB8sanCR7Pi0~aHg<)lbv}fa%N3wOI1s| ziWFvkvo5&0rqe#hLt{lQuBXytWY*Po>r(J3u59QY9Y9dZuyCb5Q#*XQJCjPZo|_E5 zL`E(>_l5GZfQ-KAUM?&(t1A}d$A>b1MWq#hachJ3K0D~##PjG%zA`k9X27N^&m6~2 zgiT$u7?&YSfv!|4HZDX2KpVpcB838w;zP)Clc(5+%tjYz8&ESpJTJ(z()lQ=SmjD! z`N)GFIH?Gz9@vK#uySb+NI^HHRLVtiWx-}4srZ;QgH?;?@!Z?}-0N{Z?p;)=w|QxX&si{3&* zR%X^odej zpH~_~`4RkRlUGg^U$d!4iqy zF#=TKHZY41tYGSjri_aC{|bYO3D>R-`(O8mNB|I`2oKMa!sT%X-SKG@5bG@XlCP4Y zt#GfBmIr~Ryp|$S4Ah2%e)KtEgqH-1Ml6Tsl8Kuyc0W+)l1IU*FKo}it&r}V`UfV<0Tg(`k&JO5A08PV8hR%jKvoJ( z##xC0)uzQz3Di~-nTkfl2y&DSMiM``tZ;>8Pzr-aJD0*$ucuRXhCwvIV~T?GlZyl) z2RY-yA;D?mAOTQilJnItJ|Ns-K}rc4!qOOK!U^!1F*G|i8sbQ>33|w&ujHVCUA%T@ zSTb!rlpv#c6nZi^G(0l3h^9IZ1rO&tO=g9q5j_ttGnv^+q)<(1ag1^iK$%)2u!)`# zRF~#_dtZFzAv@#UiDRwwMD-@fwC`Nc_F>*|eFLX1Y_jzl{ab&&y1W%RJG~ za5g2U`F0onnE%``pLmr6Sxh;E%uCaAuCLh6umTxr>FM{oL0u8s9A$n2c^tmUITnD^a!S_Lld%24i8Q5UvG|F!wv#pG*qF3-_Z10YT8a5l`@Dv|UP@}JLA#}c z&fR96LBpAhG=2Ac*V%kSQ)uG(1uYLKF|qoGEbo28ef0$`LsKVk{ye&Ip`lJ1)VayS z%zZ0c-Bg@Z{V)@C{YRE-%GxXKlZWj}4Jc6`l#(^Sl7?qZ2})GaPbrR{kfx+G^QhE% zsP2@J!Ry?*l^I{?WR>YwOzLKi?vYivZL0pU@=3ODjGn8cYCNLp^nvosjWi`SC8xwf z+T!DTmX>m&-R-k^qMi63L8K|S4h#&Eb1rOd=l3ti=f~$8=pJU0_LJ&jZmj7i8`*q1 zsdKYSERHD0%p?phJ$`AH_)5Abr-DDqkp>lC*{WzJ7_@uqA6Z-6ZhEJ%6a62_6C^=E(L)p4}NBfuAn=RX$z^8V$O-JSnvQ3}#bquX?wUi&Foi5lX?DG67)#fj3qvQuZwDOG#B zGAa`?NyWui*-hA2=(Y8U4u5Lk97 z>eex+$jD65b8bBpUnr*4-1XQ3@9Si{ZqL!VdNlP7ao|vvL)CC$g`@%Eh+B+S)~3-4cU-mCKVo(+p$4f!7YS0FFnERX!l zPS@)W-vj>m^&Y(h*uK3#y?yNee-VB0--f)uT>AB1ywAJ^jJRBUfUIA=&0M_r=50Uu zZ(sXAUB11UTj;FlyScjR9v@dFC2sccr7=0*euNi+?6(;Uy;Z%n%Uu3-*Hg$+mN=u0 z#zL7Whh=IeGSj*+RvMIPxf^ATe7X?>H3n>(bk>Vm!A{k(cW-WY z@)@JHKx;G`I{F-WtE&wcAD9eX#0n%>@sNWu6YW%VS#?0HBL?u-=>vpov z&0bo8))4`(Z*h$_R-SLaB)=MuJaL|Q6JEN1%Oq`G%Xm987<%IJ&Y^yn{@b#IpOE|Be;zvx*3U!uxpBQsBG7Bu z!GX_qr4;H&2)v3R9X?*y6_(vqVuj40dHwEq%W zEP{uOrTOo~5RfPP{AtJfX=J?z2@Xu`UxxCyw;*;$?xq$dz);QPDEt$LrTDz4NW!R5f;;R)MxN65m8FzZ6Tug5m-z)e-FzUKUmL|C$5h5VF$H8^$v#oxy^ z+-xqp-MSQo1<9Ap3`mpey@N~@LDOiFf&rX%&7pK4?dahCAu;K5>=-)QN^+Lg*_oGE^U`}+dEcSI2=I@ZhbO`is7_a&bC&bFC4KRz`C5s0aqmy} z`;`spLMXkg??oqM!%re%R6{^Uovb+a?oLRAGwrb@iHe7+>+<}Eo1FgnAL^9Qe(KSr z!@mZ8EQf~arwcc3ibP;~#k}v61;wW!rcUH*Xg#EE_My;GfiII?&7!ybJ?7$%zWM?T zuDTkAD+;>}qP$I@8O&BGS7_N?Sd{S8>L3E<;W* zd%7I^^SSJ1pD66@^T<1Tgcp_ji8#$GXCtL#O5OA)Pg?F!loA2;yGHB{6V?+_qB=}v zIj)msYG1fqC$gNhw=65<9;o!SvMNwz6X$xT&y;zxJly_}5O@9jSwSO;xC1Y>Vf~29 zO_mDlMCN!e)T(4aB`diUtV%@dhUQy#F(Adj#H^Sq+nX@ijb!W1^wg~8+twT=-QmGV z0lBZ~DgV*_y5cnE^kiu$iC+N6@`su8Ym>Ul-w`G(7ks9#*;gewE-8zj{2rdsJ*;QE zjk`TIQ;_HWB6ZXc5SchTm)7_-9URWK8HeK!@44?x&3}o_#zkY}97$fhbyj6Sn0;(! zchPSie&wp!*X3WKopJUPJ$Z7ypL5f!wE#=rf#KP#(Cs-f^D`MSjHOC75!{KghVbupE2)TvM(jVi3mZh2q@!<>xb`Bm3mqaZlC7BAmuTrH`e;Bj2mCu0B=q zZ%u7G-e1yFZz8P<(Td-)2%1fQ&XdNAPT0$_gCj%7mn_grvv|*@dIx@D##Xmn>{-V$ zW*I!G{Jq$!)1|Rrg+;7Cl}mkQVMT<7rLV-~$@%O3)lH=;p5JXrFGg<+E_y30`I}ZP z(K35Pc?xTjYXSx|^)?X;dbNgnjcDmFrMbcb4%1$5&#LMbdt0Fh@UaV<0-`DULV>+y z0_s}gB1$jZJ$LoBQL%2tBsK>#G&Xt0LgwO9$?lxJ~GA*@Z@0o#4%n}IYrpLV# zT>5jPV6g&^su4~X2QRZr2Jg1(e)d>0%-?du`v-{GP$idf5G+mZ zz)8r0vinoaOw*+JIPyiUK0G4OW?pUS$4KyIDkJX8*4opqRGN0HZq@Aw!ygdE>m(Z3@G5;=V1G_XL#?kd=DSWg*k<={yQ;bc?> zXxfWL?ATB74Q6Z+RCb4__YvRgei~CCaGJ|KEgHmq@L^Doo)m7RD~^&-WtMAPvn5WI z<`>H3qm{j$+O$` z%t>6WR3w^yT#+)n;#*tc@$IEu@jEF;8qsK{B$;4G?4dYLf(BQ?_1;nO6I7;2$KBWW?$fOn?;w`!l~D?&&%M) zxt8>o?OXN7@={-vn{G*Mv;0XJ+#pWf*JsN{3esXzN)I@T6D zl{#xdx?(u}9S;f}%V%iqZdt;wL|In8``+h4r@vG6L{+Euk7N78(za?kilb6BV=CCL z*hc0s0q4;(Sz&wwq*VP_mWg!wUW}YeWr&}h!8{xjP94vin=4cg%7A2%(wY&JCN@~* zK>*Oat)S%Bx>G&SM)ec8lrk09K~=-s+LTN%y+q|r0(aB**|7~pmtrD30*LmLOpK}3 zEs-ok6AjP647#|FoOPYCrDA*x&|1Y=zF0Tg-JC)pTT{7S+ulsdg@o|2*=$7{^0zYH zF~*R}wDnWeJXYd4=S~%aeSUKAj<3q=CpQ2Twit27J}8rJ?qj+3;I<{O5-FqJv#Lil z3;ymc)ZOgY}0LmP^$2F>QJW~-B-O(d82&}u10SHZQZH?7|TS;h( z54d8gW)+|>%)=)dziK&g)wDZ8pUtGfokE%rcp2d zfTH0u8z0j1>C$Sw4!aVfXA>tz`(0uWh&4ys6z|SBa91Gfsc@9*m)8wn--Ez{3JG5n zTo~?pf7WT_6D1$kTZh80ekF4OX8zSE}5dc_~7xn=_nWXkpD*HiyW zSo43)W1~8q?kZeF5I+9-?oS4-{L(PSEHAE6!RC%lX?)Y5RO zLa~2Z1ZrF^P$TZjp||Ns5|DM9FtNm9Jak?ee)PQvXMypGqzjIcB!-N9%K1PlJzS`~ z$}0trJuJqiF=f)kLF;3}HQQ@f2EFlV<(K@;bpNf6mhq#$<>zuE+A&VWV#y0}w@-%J zI{$ZWom@P)AM!kMdVS%_Arw=xUg+Z+Cj}?w^G*{sV9rf(532aH??C(g8>f}RRu`%b z=J9$wjbV3xenvrgZu4Au{<0Z=g0srU`#s<9Q4+t|^NAXgXd@_?E>G%roIEEpQNmsO zM{!UOD&fo+RGlM(cp$R-<9oaLR(&}F>$;SxnajtX=vfgW7@S+VWeV|*snv4#jbp9c zOCyoOQg2-W zB9|?R0rh7DN$i%U#e*I-sI=dunrfB7KG9La2pj&D#evOpcXYOU;nC}HOkK2QTr#BG z{}}4pMa-BNDR{faP|FhP_v&*HbW%QU1o0f%n8VRLq)3|FTHZn$Z^5fId2Hir7^RJa z_LO%Sp~ksCl*D<`D(L&JHcdigPhtGlOJIesSw%mLwBh0yI4mISVDgBSM>=QiDhG`Yk z`0QP)|4lb<^P+b!KjM4P`L8EW0I?=}fNL6n(eSsJuw&v;mXcK)>o zw)tzvKf(Aor=1NmKqL*I1%TOTF_nd4F&2b7l?6YQ#c8)z9}z|bKNSeoNIK=L2WYWl z42PZ!#ES@=UR^4)HCk&x`$4ADbiSa`L|V^@PZced%Zd?ARxi5t9FTNx_UK^C_H<>k ztzb|&a$|V1s`L48pTCXjgUZMdC;qcM{oUJV_&jM^xBWl4Uvha-3B3EP+`eviJb5*F`D2e^NygoVQb3ePfH3)yAmi(runpakeU=)ha{Y7QRIF!-W z)UPA{PjlPC$wc}p=jz;E^OEk(#(B#lG}SZpx+r~uD^xP{S1W5K9G7Bvu&j5~MHG3v zSd@}vh#|8}fA7Yn@#dlKZ(m$2EF{Dauf@TXK+1`gPCqY)MRK(fm#Shrb9=WPNTT(o zTWW{E->nYb%2~4FHXLX*2vlGjHiaWimT97bSPouJcW3>2aRzdzOp;=ZtPnlMYL;s% zQnqGqf#5f2It1w|Vr zh0#eXVDN|}l9O*J?ZD9zyA+q;@MV{9m(WU2gqA_c956W^DY)wGXO~Pn9w5oMUSgk$ z?SJR_oP9zvokPi_fLJCa0}BAsF<>h1PPMssUoi$YMm*<=Emn@b_Fl9{U-I~@J66*13ah2w6P~l)#GvQQpw5n{^ z%(*tBAVb^{lpNgJI>nxA_zWwgdY{m4xt)m{ZiI|4eB!@$=K{}98o2E_9 zIf|%-pZX`8@ul@czamsT$4ENE=t&YjQH8o|011pULBqw3Ufj- zw=y04{UW)1r5(G!OqwlgO&)3C^H%i6rJE-z>JR2B@lfL(N;9H;7EvxV7BYCP6oM?u zLa7!-NbTw2&gbXZ@df2kREthh8YQKZCW?if6bVYgnWTEPOToi~a_-yoSI3b z16K8FxSc3x!k>E%`d5$!+1S^NOD`uU!&`5BFRALK!bs;%P!sx(A2^R8ugZHy!w_fKSEYvubxbfJE>RJ0(9QKo5B%5ne0BEr>FI1ffL(z6@KR8CND6yuRE8l_n5}ig?C&ch_vxVjg z-Z^M(njL5*Q9ckms|c-GHUDa**igdUMIr3h5_X*l?yNNDO9+!rQTL)K+`Yy!Nkc{& zpD%T4o61!gC9!U^xg1Y_rx2hidv%s91D)jf_dG$Fummh6t{wK*c&rp!6ft=0;01eF zm0062DwG0u@^TT;L~0fkPL2QVtu1#y!%!M5{OiN^@A97Qo+4CUne;PFI&UD-v)m< zEGE)5V;DwdHwbpUFoHA^xw#2A%a6~-5n5C^Ssu-)dr=ZthtwiKVea6!YHcwK)=S^4 z)~4y-GCn?tQiv%iCFZRZ7<0w*A=eeORzge&zGPyzk=Mj=v!2VCqc#aP&Ndns?HbbF zAr)BjlYpFbZ_O4Uf~A9x@7&#Nt1?TZne?Ak7G#U%0n^QV{h?4_5Neyl}*^fG9 zKH_!}RxAy`on+-i$7)O6m^DMM$dUy-)YM&^cm-U?NUShK=WH>&s>(T$q8u0RIT{o) zWnQD&8))mv$$ngy26(zeM_ak?e&aYtwf=% z#!Iza19WsWD&*p!lq8cZawtae58c`t>G){QG9rqOISfaHe4wQ{Q#>TG`gsysN$jE; zT=K(NRQBWh2zQ-nWObu8syP|9Fm)LkrNTp{NqQNM*>Jii^`#ssSw02e^ohxFGWru4 z01i6`Thr&Nq(&QjIybRs8%3|>KPZSeE_fQX^;dvYK zFh*{=g=V`8K7zzljxemi8`vm*2sL;1(WlRWv9$w0`vI5l9*J@^*=3ws;VL&6R3=tI z`qZ>TSX4k+cpxEFR7ALE@z9#1XO?wd#y1jC}c9Fk}32@B45F17(GrjED#@$raA41J`K6`G?A)Y=wqZ zqdn%7t~jKjXj69NyG6r9S@s`E)b!cmEU-tCu0vL;Ef`$gN1z*ZZ6i^XxUMCn*Ej&i zP_~PvTMB2EVHd|1n}ziyB_o$oz@4ZZA&NcdoB$sb0a<6Kz;TW>_UiFVTaPijY#dE( zH>s^DwQqu4ycy0;9?qxLQPZPZBJ7aKUARXJ40G%!6bUYSeA@sq1a}LBZDp3(*dE z^|~m^##-{Eb}8%?IYB1%_x|xX*KsT?9H6Nqu5`2Xf1EN>ge5x75(5s__>Kpq z3n*AwUrQDpg*$A1LDpJ1aT{fQ(vm{g!FcKBzYV}T9xT@*tcRxHNy6-v|z3xcCTzbbUr}^D=(H7grw!Nl0Ul4S#3|WsykcdPl zr?X+rwa_w{a4C?mcx@3S9NXV-SBHMgCCi|%=V+Q;<(68!<=kdxM1G!LK5J}4v=Sqk zD^863wr<8g-d-R*AI``s_h$zfp*#@y(2IMCWwD#`dH9Y|kpjzasc}2*-dc<4z31%Z zt*OzeI&Y~{*rol|$FM#?mqw2ji-^;#Gc>^w#e-eX9`7}R=*rs8`vMEm_x>{lUH&P> z+a#>+d)(QRM*G2A%b+goVbjddN$yM7wc zEz`$z2yLa+*WxVDCpndoTgq=dO;+@Y(X%B4>xNZv-I&YQwMlSUyOG8h72SU=w&Z=Q zpyYJx@!vYnHfocY>z5y(GbrC`BP}f?Ebh3sx+61ID5v`Y1j3*I12^9JF+uXBxV3tG zw+uZl)-O)|SH#TQ@0S`rvWS5%V;J8`Ts#!@uOT+7Ru`nV0l|AHjLf?$uP8HH3Wk~a z>s)x=_KlSPbQ2rj8M;dyM@Q;8_ygRAX`Z~_-IXDYzBvMH(E$OBI&m_)Ih$)3Q>Gk?3E&kYkp+< z+1HQy*>c~=tC_WBEOq+e<>!;G7HL{s_{@QC*@egHENWIBPgKw!>$5Lk7WUr#y)@<_q&@6|7f3 z7>%mQMiJNU^wTaR0i5RH6gsgpI=Ff%_lKD@8Nwu2CUZ~?O6De$kP2)PFUNv*15P!m zGZ0>qK^qCPL@feVOa)p^RvQOVNGyzO9!^N4#7$dy*hAjEv82^)$(lq26!PWW?yfiR z(@ntXm)?J0?%!X|{=MhC1}wgFUF3QEgXnp`yIkhEUpy$OAtMID3rz;GM&SYq18EAQ zXriKM3WLNkl2nw%@f`TZVa+_o$^4@NTU@_S{Cj76yPE4g^2a;&?Fu>@g+6+E!}RvY zGu`l*#WsxmBmFnv2Xw$<+~b>MDV8SUWT?Yv3THqFE3`aAn-BHqh;>bg!u_+e`fHP- zPpw8yWTcO95SFp7JQ0^g>e{xh|H0WlDQDvYTFy=|&9A{-_J#fVJa3NMThZ|Bc=_Qg zaQBsEYfMdZ3ESnx1=yHDAzX(Nt=^w6B9D^><4dsA(D$*KmDo-8ZPzHlxw=&Y`ntB* zo{MIKoqyXdkda-E%PiT4Uf##~Q~p;eo|(vdlkL2ztol6;h#zM1i0eY#{cJ4`%zI#Z zf#AY=_i#8lf~Qay=?@*8d)EwYA&p^Y(u_PNt3AcG%Ti681I!0Ly45^!`q3n6yvItQud{s49>7K2I|~Ebk@s)Puo$P z;Giu-%ubj%UF$2q(;C;0AJYBJCAswfMq3!McKG9pf``2cT2(TIp@cbQ!Wt9k5$I#3(Ydi?5}m*N7)uwZL@W%mw+1HTbipK&9t@GnENN>*RwGCb_{5uBjOuY zCX+!TsHQ%+n`EbpLe9-p&Ysg5i(rCIzCT=Dn~{w~_Q4kPr%$UsJnT>Mc}ZFay$hC-bbg*W?If zJ7~OiWuBw_;Iu@4f0JM`N&mNt%z5$LO^kKy`%a{Yp?Rd}rderawx>43RDoGLR4LJ> z#HB+>x#cz((=6|&)*bj*o~9kEsUKKvX{JaHsU8!afW6lqGvhe{i_Y znTx=EGD*Msf}%i<9%#B+?#J z#_R+Oj^8n5u#P{h+AqoM$xx%a4n>A6EJEx%DW1Rhltq5Vm#ORd5Fjkj)V1=b| znB*A0kH_@?0hT~%zs|=cvd3=L;;Zk~COA>WFCNrtaMgHWPz3zL)Sg}F>c<1~D3h;| znQ&D9ROD%y`1jxCR%UNtZ)wC-_(ZUE?ISEu@FMuXW_wd-FR>sMC}f;cK?+@htMEF*ygwf}?8v@{lo4KI zX<1%Cq2!ff1StJtssKixXDF*e!jcRZ&h>fo+jn1w?|e-3uDwmS+e{MtX#2fK=HXk* zP#&tNzb|)lbq(V+whLTNy?7D7Oc$hN2_CFGNR3ug`-Xw?bUhJSy-A8nS?*KQr+K7 zGoOsF*gc(XgG<)4YIvGfn-%6a`sww<>+j`XifgNa_!oA)u(!95a{lJEZON3xySFl? z3w-f%ZKHQx7RG(dGi9TNmtEY7)%hS{4)Hmv9J)KA+&veytJ%PP9F@1fW!t$@S>J}V7A&Um_=hYhDSUN>Uc753B8ednV> zb>5!8MxL*U<2z&;KFa6rrmE9EWW%ZX9hHuU*>2lxA5*NB4V@09*zuyx-bW!FvAp9p zlJrK7E`1a9boHdB2Hu>SL=*I4ugc+>0}_cmpH^Pwd7ojZ+Q{hJAM0;3Pq6{>Z4)D+`4DorEhZ}E&&E^nvVO%mFqn}Wh-RSsYcV|R&}Re(EnUe zf=+2y9oJ8_VpAqWq6;BO z^d{At^r;ZtmB_fw^EAGfj5w}igu~_#tQ}q@SIo*;Hz(`)d7npedHxA1#;fS#a-<%G zb^ANnb-Jo2kvl3h>z=+!@AbG_by--YJpM+Rlo?0Y8vY0B)1s9=`>w<3a(d=6D;~@_ zI)1!;73#MWBlMn$LyzN9cDy(D*<_& zVK!1-K0j>VsKFa+MhBJ23*&5jnsr0Wiul!CJqF__K3E+EKVAuyXgR?`W@rs`Aabar2RD1*nvGXZ3?0=6Mv zGXfTVmt*z+N9g@;tYh_lV@vQ=;4$<5chvn)uj78#&u{iUe~b0J|DW+cy7d2;5?!q{4% ziMHK&=wX5wzQ5P`Utj9}-zN75;&1TsekW6?wf-;H{l1=_o~#>s^JdS{xzDRs&E1)E z=F_iUom)0++~Vir;N#-t=+&!hYin8>Qnk71TUNxtB<-zSJF`B1ipxqbro1gOkncI(`1*D^C=ogvY+XQG!?1XDx3XkgG; z8u2~XkK6WpzRd20svk8YzEZ$x1PuUp-vui9KFBxs{~`~5(;ehK=g4^1M~G;N*N9P$N`lc-#&pC^?$ky*NdY%7)+>Tdzcln&~xBJe!P;+(R z=gz9l#xa*~ZPq-64(DHQSv)aRVEm*)XE&q|3Ow z=>;YAERLPal<7|HN{|^;LLk&4L6C}-NLeK?dKqOQW1XwU& zL;@@VK!XA)5nu@jAhIH;8+|^^b=1rBkpM9Fkjd*S)_Tfk^gcz8$B*-W9{qbP^%%b` zQQZ+&^a_4^|3CNgU*CRZn(3yg+wXoS@)+!-9Oxfo+#~U;76$qk_)eg`l3rQG@P0+l zQ2nX7XwmIla?eBCGc>;;l?qggB(}oEY%4w-CiDKOd9h9$_iKyq$Eu^3EVxy3jUS?u z+0P67v8)Og7uOer$;7y+j(;1cM`T`AEBCk^jY=1 z^wBdwj0G_1%J<>-`Rldf$S^Ov$2L^rkJ*}jM08Ti(6^|@o;T1hH>+AOUYuZp++Pef9k{P@?)(V;fmDRrt|4-IQJ+eKW1<$_{$SIfCQAh^Q~BSUb;MJ6K*}dzyMqJn!$L6ITG;&+A|u?#=VcU z{8z{NzqR~d*8ER_)9wC0bK82J7m4M0o?n&e`acum`aVbA`980I1OU%FcM zZf@@8&yy~E`mpEGizZC^Gv?8wHhlUt-rL-={!F27 z;lc7V>-Bb`h4jKNR8b{%txFE? zsp`#Y)bp^wJ$l=v{ZLg1amX2Q*4%B@T5eROArsprRk!qB;z|C6S}&ccNOy>(J#AW` z%5JEuR$xJky=@nF&(QOzd6wPU@?~bF+`GR+K#h1(Nam3C`R`FNru&#ce6~af>U(Km zj%o_iyY#%*Qb3X&O|;ySPASGY?LaThl1WfK=Z?IzYsJ~7)S(_2gj;XJryG4G0U;RQ zZn}|!A+;@U48@q+9U%e`if6~JybV@V&*OS{ef#y}J{aIoi;9yYisT6GC@QkQ7()PA z@ZE_82CfAf%!OXH?ENpq`5zmPs^gjQPELGoq`p)kp+ky&wfkz;YO({3>JRcsZ7ED~ z{nLKji;wR=d#!GbGm`z((YyB_bMtNclU(;Ln^UM^bN$cW{`#NFX{OVK$$> zwz;hGoY}*dR$s~JVLmW%pDy(LlSuvja(pd^PiN-c1ns4#_oR@z>6aSB^CCB&^Kg6y z1MjgHz@?8n&4n;DhZ_cg27BwC+f+8UV2C|un+}?B zj^4%<*2`OCu%z6cRaLh>x2;#pN;W;4I`(m$^-6Uw62n1=;p`8$!*EQ4*W1M$Vfk>w{pf^s@ajrP{e~{qooF$xfW-62}F`|T}5l^vzoar zJMvcaooW+j59sKODltiTh{=*pZQ~s|G4^i}mAP^B*8|qO}~tkiSpdve{IYTeTj)ZXM4Y?(0| zJ7`3qj1lI(xKiY_KVvI-Wl^Qe=t;W^N3`B=p7u`uSh4R-zK#|hlhJm5cHCN!np^;0sEqPP9SD~qc}>ca&_-&S2++BnpFX~pPaX<3*1XfZK6k;FY5Q}rdgjy8-e$|~-K`3>QWIM> zO@*rMox8enYGKzQ-`Z!2)v0Eq4z;ea1nkvmz-~I&-Z^u)E}O61YyAmL=qGu(@>q*8 zWoIndWT)jFRq#kJrbs4*fpQ^nwy-&qPWBW(^rfZL?-Ya-m z+GEzWX7U5CM&0C1UU!@1X^awxLeY0P#)?hBBh!#XIvxt(@}yOnV-4wvH>X+j}85)Do+PF-^` zqH6fm_1XPyNCa$OL{%QvfB2!aSGV?oe_4Dl`ut+-cjCE4K_(Lv35Z2$!EXE zem7Dln)wHpKbOpwo{i^M6s)}q30#YEb&}Rjz@ar#uro`-HUzZfGRa;}Dj(LxwuH!m z0^V~)*=|bR$G0io#>5e^H8sGDcI=Av*qvJLrYlIk#^ybmo{AQfm#K;CV=98zq6wsi37drmupPxLw|yw5Y9fmE=V51y`(J@=F{yL1a&uEA z$ebGsoOK?4xaMRM{%8qENDzW&6$RCLNYvN-ou1f#3aKLl!%!`YCjD{x$i`m zk9v$XKT_y@c{0nky7#rTCXV(NZG3yCyQVVNolk_~SaPJJu%*Ny2jfLl8#QxU9Lje7?$E}gc4P=FLp02kGJz_2Vtw;AFD7`- zWR!Elpxr#=$wBz&M zh8O0Ys4c$FHVI|4yeOeE@Y=eSWsc@0;T9@zpl1nzQM-;jJJUGEhKAFOMxqx|f@HzY ziSlq$N_9@m^vqIq70Q=wDnRf4+25mg3lQ6rD_UgG)ywj7ZmTB z<5wlHMt5AZ!XF%YSY0#%2*&*#qPS;nmCnNamNX!LABKA;j7b5=%TC6F>0xiRam@RX z#M@^_JPK>0b^4||eD^dy z*mrdWIOA14%3-iz3wTkbJ6jVrJsg@g)a23cr^Ix^WP0}ac&Ppp*Q%~K`ztf?9`24k z>rr(A5=^n>t@-iMeYM>hmcDnx1izck?co>UoJU$nHdrZn+?m!k`>>2H#e#+wka%33 zmzR#4`|6JbIOBZWW)@MEXa^4M7^;Q_TF#B=9=QvR1Q>G8gp>!u%#>W2g&a==K8|uC zA_NDw_r5=4y74^kC$a9n7kA}hY z^Sz2X62mU~>7g?%hwU2TcDok3TaZIv(9R&lw;azTNow798s>3{mI_vJ;9CiOXr}vg(BafFK)?lK9zWE8ZA{g4KZ(i_^|svAWN=Y- z(ugxruowxqc^6$=S$8itb~YTlRguAXLG)mPTdqzG2;h4=D{wu65$Yrj%#O&HDD_Vo4BS0CUM*s1<@dxgEoW zxi49Uj5*py80$leO`-sS5dq(PvDz{ou=z%x3+4LEl1wrA1S9SLGY{pre1C6wh`l3U znB1qxg2G6IVho5f42Xn?gn{yX*WY_@ar%Fs;`_}XFX?`Fk;T97{Lj?1I_$@$oy)sUb5wwmH9a`eqNu-)AN32 z?ufN%)D0Rl=+C1*jJfn^(W6F)?N>#0)m_`Sa%InxCQSN2FXP2#@1b2^GamQlyO+$IZ&X!Mi*^@p`ZLQr#rNNR zVwAPlU(3(U<@IDnb$6~-&g+4?=Cn?iU3L`f%HoPjbU0>a(0vkic6*T_S>xB!zf7ph zgNH860eP>z3(cR)S%#LLU zjih?h#7gq?FXy5lL|d7eS*kt7T{UW}!}GD)Bh8V_=)$BfJtWRULImwHa_S*zQk0{a#6BqSjs z5)24Q67IPxqq-}jx+*&3syl+IF68ctv6uh> zm}X`U>SiDSVS)w*0&Rr=Ge7_XFbu#=uoxH#w^kj*1WmIx*#Vm{%o(!;1UA98OwEn9 z%rir50k+KBW`F^R8UkjB8(=dxFf#-P5HkQaTN55C&k)0}T-~4A2lXFxvnE0stAd zz%gt9EX!=ouwWZt18V>nW@0wL01Yq=ZLqe)r zFwD@*GeFD?z%jPg%m4=+n=}B-0B2^F+Z$j|001`GhF|~y7+`<~##yrf24Ktt+W0NZApVVSl700M#x*@k8&8IGBT*Z>1; z00D+=7}ml700!NF01Ux10000C+zh}095Jz)8JOE_ZDSh%1DkEI+e8BatOnQvFat9d z*kEP=7-%9HhF}N=HI1-sgA5F8fC6n}Y&n$*a8M%BR1G+(M1(m^DV$0LTyUR!Up+poO; zXFT?)+|}3B-f!&d^Y(i^&TZ|^w%=Dzd#fI-`LpNGmp**?v**ud3w2e04ZAG8hZYPt zac0Y(E^apYYvO+&CVp)ES$iGd4?iwdHn-e;*WP*d($ZLI#~g9Zk;fjb8v8xvns+u_ zxGq;+byr<=)m3pvERsuIIx_BeGdAYzJCaXC)~A7(9)ZW;f&*oQu+uFx-8<3MqG(}; z7-WU`A&N+#ia3dCs=l;)k;gQ!w!>|<+iWnkt%fs6B)e9+)JrXhjyU6zIV5q&pN1G> zl1*r{emM*`GTHBEnrWVUTgY{`+hNyRcN+V9HQyMNCT|l-#7-wYc6m(~qK@eA?Dcy) z<)wcGoR@Zea>?CFFDJy{gRMfZzs37S*wQJcBu%s-AGA=3(W(P=;hlZopM;NaJKOlf zP337X2b6$aE5-)<~rak z_I}>mZElfj*tNel-pwm*x=A*&SEiS(Z+pFY6Dgs#J8nN{zC!j_#X|ULp+AbiN9XlR z$o6OmYe5YkSU*}r!w`WcGFgkUD|~#M%!bptsz^c(v>bG(!m-{OVe7Ygn>%C zsdlzho-9NYE+mtc9K89v-{5Y)16zFG(R|;z<;$z79O?1PDyk=R+EVh?ELf^HN~98< zl}eJ3U#3;||9?|gbSu8zV%$iL3giF`rNLL05mzhSW;EJ(p6#mv0>OxPQ+n2^Dy_;% zZf!GKrU)r-j1lCetWc6i^gtiLo|O1Y}bZO0+6S6(!nEH<2uQ6O_#~jhefn z)l%6^TWYkG%t3j!tt{>|n1YHBKrb?~Bxto!84}3eE07IRV}>v$4OwWQdO>ll6@-b` z4RIcltkhQRAWdkrR-}LqhCCBR+Z=7DGDk|4Y${vqtg6FN5(IBz=8~<76|F7Of+!Wt zrZnj-+?bP15v3j%Zh%QmAR~HA_HtdsCR0WZY4`wn`{73wrS-g z>9){1ti^X~SJZMzNh_5rFHqt-dnx3ImyW7p1FG@siYxBlaaA| zOLZ+ZM2Zm&P?*l*lFHE`cc*sUcG68%OKPpJEont$p7*_PE$?-1kKOs77t$V&r{*nc z`}1KRAbs)r2Eap4zX6~GK!ha-^3n0*bfR<5k2{niXdx(SLK2kGL7VS>zw79mH}-y~ z+t>E$*nP^8yYSHJUp7s{YOytTy-RiaKTLg1p`|*m3kV&65)A-8gSG~ z8jO-gNDQ}bj?U0}lEX8HZWmy11qvPb4Eqg?jW5U9be44u^SQ0QGMnHkWLYYMZ3KMRDBmx8h~oRZfU?Ht8|u!&Yko+}H+3Ei{pgczLehI)ucyh~HCQjWdUY z=*?NB`c(jFT>C4^gi$2{f^h4+ppT9vFvktFGd8AfWk5?A|4=s zgEKNPW&xNWfF7xLZt1SmGD|cP?2t_?SFMAe>&hfu_4;H3(3{UIe3nwqpR4%f3Y|C4gla-Ml)eWBqBya5}IlNNmurbo0&2f zn8<{WauNms3nL>e1fa1k0>K+x)3De1s2`Q|zKK0chsA}yf6qO6_CH3&0)0jwMjuxb z+Rdxk`JX2K#eEDfQdLXQh6)i<)!?H;}!xsH8fnAdnrxV%f7^Iw+*gk%O05)qMA z_y)*IL#T?2rw@a}v)lXMjrjiu-TYs|_y3WrC8D4rSV2+w?O-&Z5rl=WlFtHSoNc0cK43Wnt#M9{dyZfA2HRR2sPHg+!JYN@! zi+6w27JmZQQ$d{re$K-&LQJyC&^n2tn4BTe)t@Y<38sh+mGAl1Si(8e?3u&pfnf z(RVC*v*`$crma!YIto&Z^QAa>MwON&!y-nDK3MWL_nOlYZGAQb+-RmUx?9n8esazCZkzKaiX?cJLn%iCu z-~_w7muoy)d8@fD{1xMCNJpC_lf3~QrrF358-3*>dnLi4zVhu?&ZTq!lsemPtFuVb zKpn?TrqBREEgB5c7zr#oHn;kyisdoWy{nTa4!m1eIk)k2TH-S>V93Fic8*)A!kLqS zjd^cbKFeusD?AF=Gw49uGH{3uqdYLW274PuVx?nX!NaRgD0Lu2gb5^KLzqf4bB#A! zv#Hs2on2b%?Qh@C;ROIn1PsA>SGuK7i_1n8;`}g`=eTExl=N@thAHRbJ3>Yw5s<_~$?c28Q z-M@b)Tc4+gUne&$e7!uk@5k4(cYQCZ^}72nKKrk}hR~+kVW*#U_us*W?kYJrsaM!!uDa{0y6UdF>Z-bGu1;>P{;w>s%!Dl~TGEB7aZybZ)m0T$T#`y9mRWUb zu2|=e8D*ZGA0>NbhLvVkR$AZneHs;2LL$}R_Re#h-hJ2kdVG`Bs1R?z3@dk4_P+JH z^|klkTlQ2Ee3r8_Gj#SlYv%d+;h~-3ot5GzvzE23Yf93U$y}c@BywMM)SS^-;l8}( z#|pE%GdG>t3SHq`A} z1QoKXDuLli9eg?1qPJ6$a%mE4B>NtHEUc|R948e8HklbV4YU8^OBphej}vhYnpdVlpyF-8%jKuD^}|0pJc#D-3)4`Fq)UdmB0ZygXNZ_eebr3LWTN2vz4v#%=ucSmsg)IC5AP$TMF!d z992;$zi%4+zVR=;x=ZfAWjNNk3uLpfsJmZpl`Hm##W)jMF-1|jr4*<|N_Lk?OAEB% zkSatlvX)|&wF4j$B_~?l(gYVwme7I&FjAN zzWWaqBYmAG6(_#fe6^KJ<}b*IG=#)}H4>TmEL%NnsQ6zFKL)9hC5YjY{0kDYVUoxg zthQdMgM%a_Gu0ME#|bD#uXzU!OaO5D*w_P3GuyJcugjMa=3lCHY5i;O?~m913JM+fB_+pUKo|G=a{XoEpSFuSJ&IfNu0RC<5ij7i2~0^e=uJ_F zp#5*tw7Lm0(EhC7*G1UMZjuJMJRQr6S^DLdZ~XkJ@Pn%F;UggZOd1W%sGkJ=Lo=iH zKUv>5PuP)o=>0_fa>>D9-OuZv>aEs~*z?_LkzE4(ye<=;kEH`Q!PmvJ8@0wbY)jib zU0vIWefD}CE|=+jF4T0FpisS6=#>FR2ooxTk6ET5P@rv%ssN@?BsWXKyH~$+-t6T4 z%=5{~s!(u8b~okI%igf@!H^`8Igli(BVt2zfgtf)qzVZk2x+$4Z#V4Y9kv99SQq1` zvjb=mAd%^+NjoQd4*Zo1>UNiycWt6uPF3_>?=8(VNf^mRQdDG0D5jwyQE7>-k#euj z-z1WLZ9*`G163#=u6slwYtB>HJrz(7778g~A4vF8{;zWnQhL~W-niArug7bs&}lCE z%q#sq&&W@M-ZHOY_mcO{_B)uq@#j0azuVqJZRag_KFXt->)n?jH))2?9^_wn9xmNd zcKwF(;_B_51YLz#cy{O+9Q7RUzEN>Cm#s6uNgI;+2D|4pM z_8TxaX~>23PkG+~Nk)d_YZI^g3^2iaZY|A7lHs#?1??)x%qK^(T}r|1bodr{c`I%E z*X)AhnI~(0-y3@$D&|idKwbJyFa<1%s0Yrx+oQYj@}KSg=fl38Q^%DU)x13}zQh^b z>lMCu&QpJ6+hLCxXkn)fmSMyQheCq4f`i&XQ0M><mf`BKShzs3B1@qJa zJfuKh8Bt#!q;|SRMo36PLe)S(sVWUSdv@}*<*zqWqAj}f)@kNjZMbd7wwB0Q+jqCA zFE2aKYc|H4LwkDm&E@2twgmtJ>CK%gzb)J(lbt$T`@Jl*p_?^xa+bE6VxkkMtPqZX zU_u$A+RF9jD~l(K6_A@CBnb~UHS64Mf&iVt1@QH5#Oz*oL3d0pT97Fh%?3Dy3a&F> zQ?SWAPfqG6yF$^W6(JjHeZvL}9};vf(lqR%$)QwSV2*-1j1wL8MjLS8qGd)XF(PHX zNy>K}j+~YWB|jo*QIdokInYkYf~UthD$Ah~$8{Na;kEeLmrW^BAQ5IycjF+)jb2n8 zcZ*uiSf>Jy4!rE+pp7uYKD}$nIcqxmE{49#aAC^btFu3j8eH>7!pp?A)MT(emV6;@ zK%IV_Gu-KM5p#ATa^(lU{v>#cT}jlZrVz;a`8Kx>O&e*f_|zcM_*L_a%=J3Mr0n5- z2jTN~xSddN=Idq^LviNG-K1Rt{CC{mXHH)gSo;s|76*aY>C%p<0Ryx8W1-eY#LKsjgn0cl z9XV`WUSC(M9Z)tM2fHX{RrD(n&ABp*EMl2h`zcA79lh+#lt{^6*AQsyD^p^%8f}jv zGod{T#j&$M$Io9)-BvRnPfl6#lH&cT^OdyK2uWW+iin+W3&7}@K|bV}(44;pUgV>5i{BA9mglNBP+rL8H z3EV?)+M(k3O+;A4wT~m<(NqSHx$5JTBDC%!poZT>m_+Kwp87lzg3WhNo#&Kk+pgR1 zrDfz@3=r8~N>1f+RU2zngAg^QByiKd{~h5zsjhe`-_)ZHXd5+99v+(v2K2a0gx%4` z_{MqA4uuGP^H6zGiW~*xMrQM;7e+vD1y{WDcQvTW_SA#h-@XG2(rew+t6~u7NElvp zM^-c8JgN|$$^^DS+kQTnx_jn4?E7}dn|zvRyvGxcT4M>xTe(6is^B7{WC7g!?_>9# zpWu4F7qs{Ol2VkV2~XjAek<=j^Y1_3rBFcw48a5MzWeZyA|f9z;QLR7_z?U^UHNE2 z4AJqtiQRf<=XvMgL7^}~11~=N@4^TPOYhRu{U6ZYg#k~#)13c6r71_9N9ktdllPTM zu#k`ov4R1)`Cl20H~DR6jlSD$HMZMtRIBsa+<#;eS^(Ld*{AVd^;iv_e4H_oPGbmu zEpn?a?9x`EVo#zqXp=F_n#Iek!3JJ8;Q;3uF-)Rf$t0q7@U@KUayDC5mEHj z06lyOBoanR2^ERdh^089DLA-}rOHVu!lF)tf+(F(q2te$e`0w*I{z}~&4=b+A!CwW z-Msg_K4c8nHA{P`SklZFx)<(|JrEc22&nzq31f0G&?iL*iy;NhJ$uLS^h8DVT zKJIJWV2R?3G#MspmO&>Zt_dVm9Y?vfsQjt#RX8$hno3+5BnY@B1ShB1vels=f$g*$6%Kee;Wex`1W(sHv(Ys*>P( zisYM(6#z`CqXL&^iXW>bO=+(#sXNeQCS`y-wNs;&rnH!9r0unPJ2&w3VW2F!} zB&vrsz=elUryXr`A&`T>?lm+Z>`4fx6_CW((NHWPCR&IUFztsf=x{{JP^ZpBl7#@O zB}ly3jwn`K*9qLAUQT;NY1C!@Zh9#9nn2GNUG* zL=LuHOU0SUn;;mLBUuROF(G;C>@}Re36YYzAP`fVT}O|+iFv0*<2B+Hp;F+O*D|_= zF5+ciygcy5Gq(F;=v9dVT*ag!I@gBRUq-v6%*e#y6X4ljU9Bpaw>qH_iUDIFH5m*6 zaKfs9jLx%MP%#383E>#Kj?*j1u@@03n$<6AteNZ_Zn9vsEs6^hEcZM#dl%taVdL*A zc<#GIn8+^_)MOp(qlp`ji=`YK@85Gu$4%lENLS@f@&oMXpuPGCae@Oh02uSAQXGIM zdPp$wBH0*#{JH93LNhnTx?9v__D<#LT(ls%)Y%UyM)c5SG&*AU77NKM$=`UEb8D9G znM|dK_PezJ>lcPHde{2fbj!1+5P~K&5m2;52TwO%Rl$Vrcqr}+QMcDg3iz%sgJ(W{ zJHu*U33~L+M^A?Yy*~!mbxQcV9tU17Zm%y}dx&yDkJZWEMz*`e_Kyr`A=>Py(pDJ> zQi8Z(Qe{m&%PQ^%X{{G}P{wzVMMJq>T180`NhDZ6kbppugprUW1_B~~4tSn7g=dX_ zhXeq4cU%YDpljVkhBcXYrUtyd*2?)9T%fFIQ`Ep@97-h5DPsxMlgg47(zk>fdEm}ZoECz>rT9Sv)#w;wiXtLj73xip9G953GV1DRImU+&}D_Z7?4>C zL0UrVAz6-sp+QNoV3@?1g0>cfp$v)G&O<9jGJ|n6S?3zpDWNUOOtFBI_buu9hrKx) z7%FGJHUomdsNM=4L@EOqd?K)}y`5`M3J5saNN$58!IoIPf~?bYgJPByu}j<)1-V)n z8Y^$6xlz5uZ?sCr2LmC7h*WOG#)emzGN8@~Du#-HQuWUiv#6{Vis~04pp$M3x_E_i zD-DHA*s6d9L+8j)6pFU$+pi4l6h#IM!~&)!FewEfs`_I_3vu;pFYv@HOL8OCA=huP zWl&Q%MgdG#QuGAvv6W}EJ7>_ABpL%nL%4co;_5cpvXmJHQ#Lw%FK%e96qo_i@Q-ji z4FLtrs?o7lb0Hf`+|5p#ro_8Oz$-Z%d2az5i7sV&#c0EFlNW8WKP;}ItfUpA+ZKhQ zf|e8=vM$S%0qsgmhJc%mp3taZwjgf(;ZP4KrUh_N12k-fJjSr33K!yYn+YXUmN5{` z&zU1H%J%~L2#H2R-5LxTmpS&-Y`~%v@Sp+CWNqwH28}#@w)azc67#k>H6Spg7fJOD z5t(}f>zLj!wVDd<5*7A-t|PeNI-H3dl8RA~kb)rfIBs=nj@NM>$BIaOm;$e=jaSmVBe-nka|mXVij+6kN#VPadVPrKH#0q$NAHx;8P$ZTFqZI(vrtS>fn) zs6%GNe6KK$qWjrr(xfo8_l~;Ww)+c1C`WroGI?8xsheQBs215`+?BA?mYi4dSzCL4 z4NIYZgF^9_sS|`yAeoS3MCnwXjWIqn{bfnl_f7`l|l_{&fw%S}NLsR=Z zBA&V?rtxQiUQG3^pX0UnnhEJudzI+f#C{ZIk0ma;wM~cP>B{=^e#+R!zHRlcvE`~~ zlm5?K?MJB_a`WG_b~K#|r}4YjHqd%bKWL^1g6@tS-hC6BVCp)t(zDe{>$c6-&be;U z&ySZ`7np8`RdQ~Xos{9u-mmoXg3g)+^^Z@eS{BP@m8W+p&JCrdd;>` zfwv{@?=ZPY4{`_?0DuwKKF;d|cY841-Ib6yOeoLBy2OpJ!@o_u#JY8bI^W1koXT8UL^!2itaLqb! zN4*JNbX*%8d+_;bkh|UE&sErMOhb+9pM7;RFA9{SnJ92d$bIE$*;d?6#~YFz3d6DV zy&E+yYr1h1f0L0Gmo4|SbK8wt z<8WRyOPfm&u}#z0%-KaM&RcA{%P_K)5yHG&i&OWQjR>7Ez5v|-z#<{uX3@j4)Y(i8 z*9AJcb+nzPw0Dl{RAybH9VhJjNWapL4Ed94umXq-h6IdcjErCqMQhB5Z?$sXEILu0 z8tZV{){a9A(aMs5!-f~e@=GrY7JO$(r1+pf1Vl6R&o3HiC~X_64My^NV-cBR zr?!iCk%3;zsdui4%wy$5{S+jO$jHph8Oaoap`pnm;vSC&TZa>BZdH0)NNd`;wHX-* z!GtABh_8ZL3&jJ$xN>+Er?1Z};_rFv+c&2=YYz-GhQ{F7LL?-t)+#2zxiN<{LYI$< zmkFu?y%%MroS3ZbUET0ITt*_H!L@d-eW`J~BO@fDMulC{(01v>SPy4{iy$1EceCru z;&_wA&3-aYfucP?Pxzn_nHngO@S@)-yas*ptLmlJe=??L2%8C5e;b7S{h zTV=O{3S~5EO>JP`Tf|s_OF7YUjzYc{wKkbASUV1G6)Y&jv6myb7rmOzNR=5D%~_G}=N0@Fs~I4xKCOQJo_3 zki;FuB80clc`fSDzTD#%j6e?78K7Hg4qfb6bX;;kIr)3rFr7SAZC6`@uC(oL zjx|kM3*9wCDG=Tpfq1cm;DrQ%4cO$`?Av$4)}CegVd-+|?|ePJ4$(IN*1KG|LP-i) z833dmt7s|!z%UG5G64edf!FPj#OyYqxzxgv4xW>{ca9D|j*5EOj$R-*kUOK?I_C!< zWjIO{<{;fSa4Ce4AqZ~Gym9OFxN8)^zh>Qu*YH;K^0RMeBh$=ugk)Wrl%SiF8#Cpu^}M`k4I(al zh212S2x)HI!I(1u83^&NTg@=%Qys>*T5XutceovogN-^&4r6eMfV;}>CG^t~H^8_T zgkuPi&ppPhw(ItMZnnF<7jmbnJ*Y`$=2^Lp72LZFz3%9?h5+nVw@Bd%p#wM<8^RJr zm*!V<(5{brvu-%(%js3K_q5+!&x=$I!ESLPV=cakE0V<>NZskkw*+K_U}y38Y~+^Z z>DWCP?k>H@EG4xi0%}`a7gQ^Zro1WS<+j@F)b}kTP{WOBwrK#*!FNSVUpbcR~!mO?X* zcOZ0l+H&PPz85!*(rX%=?+TT!mdr;D%-VXGXS#T{Vl?cL!RDI7cO4}vP&vS;JrX?#4MugPbB!-y;)Hkc7lA$U>p(d$aUe@Q4 zm(9nrXW{H)pxA-1F+|v3H7!JFstF2L65>&Epfx06)3tavIB>^nHi26yqdH#DkdcxR z86+f;bB=(!a$2e(=j67ImgL5GHQR$Gi)KVMTr~lBDX4Kvjmt!-BT+b_9UQpZA4kJ2 z%+cgz+qMQ}0<&r_0gxQwdKRsqNJvP9ku+Am4c|}G&1OpB^x8yCf@|0tAjqb%%mwa} zDIy(69Vm36y~JpySqDCEVu*>8VC-- z-QAtwdO2U+Tldtd(^WIm)jiWSe{@xM_4~ZP$2bg*T-7i$sF>Y47;+|^FDKDK$Y!cZ zTY^KjpRH@>;4ydMoh@USl?y@hWsC(m}Ki}`QzN@;3X!C6g98ijLOG_)H%p^p(a(>q;C~Vsb{s15j zGVG!z{{#bfNQ)&X=XRiNcXqc9`wC&m(-qS(eob+zrFWL=8G zZSag;jHv12vYRf0eOL-}eTl9=mXCPIaL)X`PaKNEZz@qyk%mSbXFq3vnX6*SIH= zSsOht002p(jh0P_lpA{*7q;+czT}UJ$Q)V`*lf-kjbrN|=goA?Io& zL*NoS>GHwh-Y;Z-&`@6 z|4P23tjwc4W@ai>9VXt)T}aLzdg=5uFELu|2m~0cfPyf$>}r{?0M8FJracJkg!BRS zh~9n9NK=JX&IMUF%yN(tPfP@8iGSq_f+NNOyIk8f3H@?r(B=H0>Db$W$&JVxUQ4al z$2yYD>O9faG@;o1L)iVV{3df3E6HlPQ|SfYTW_F=~kWPrYMf7ZG8{)f;=UZ z?6P4St@9G1RMlUrkdM57;!A=_HQIg@u{8M{(4DttrKUKh0D35$sL*1UhtupzqmH(% z)uAYBRPO1&?36AqZ?0>?W#OYCO{r3;&Huh&xNWAU&R~#y)rZq%`O)rDG?dOC}<2VFwEm*wvukAPx`r$vo;Og&IQ#!*pxYT`rWVYAS>>RP)AO2Vk`Lo1HM>z8)du= zWo5hZ56y{i8*4C-0QZtK_V4BT&x{f9a%kHK>wFz5Z*o9eRZ})_KnEL#hN@7nARsQ0 z`W_G$9C#6wt-%jY`bH(jkZ8eWKGP#4A#P0Q|COJvldKUGRF`C#*V_a(B}j14`Cuyn z=;=k*?`2N}tU|POf%%K$+hW^d({!YoC#LCJjstqrnG%fY8bz@Br2f4vOS<0qATb9n z!mrEdKR@DeAY(xFK7JkuXzq)eXtDs-K8Mg+bn(PA={0eMVamxIl6J* zUsnwSKn@W1WRddWf0AzJ4gA!QMB+CciBiMmT>c|RhaUQ7VrPsKuBces3Ay0m0BiKT zt7@o!R<5_JK(dv=Ro0&;m3)U6M6IP-D2+n$v$k^loUv!4IHXgNJm!$_n8Ua{e3b>_ zpA994nA(*qe`K`ffF0`b9u(vMB0>WU8Y6d7m83N;^xRXQ7x!~@Js9r8OFH&#lQ)9(@B4F zmt#+7<<&erW|#NU)uVpauWN2yh1d`W>U~h8psPGl7b+j1*_QlbiHr=1%oaVMscrkW z?=enKmTQ@{=Gt2AAQ!~W88bc<7M~~~w3?$hcXXUfX&FY*k^Mx|U1A#r;U*5j@{Th!3Xf_z#?h{;>=xI3a=?*JjI{Gvgh7kse0Ixe&QNx+m zGpaL-Q-RABe{{|h+AbKVX2-L=~Gj(H2j+ zCXX*aVh|E?BnM)22g>nNQC!b23N0k;v%F6vy>zv)#LUI!Eu9h%Eu{DZ>T#v@%Eh(O{EtUROxp?3jf=?)eYoWmm^lHbEIC+yGQJGW zuwTn;?+C4Lp406qHc-aJk1>~?(N-g{|@`P zzSMNWlxogx7vZ}F3`qptjvSOomzGJheR5sRmZ8(}(j4mSgMh54DQCK10ZSaB47v(O ziK0l8STd$8`BZ*?vQ8967fgwapBNpe>+K#ssDjtpS04OnOrC7GGNN>QI!aNM8puL- ztDlo83{^es!Tp&(P>2e-caU;M_bg=~I|1OWgRer_dVfqd`tDpjl=XIgzAY~Q9F>1m zqt(S>Ne#Lp>7fCf zzf`J`Gqw>{&Sn0Jj|I#6l(|-;>)xV*^82_q|2!|!S!_P1&>Ijil{-LleEtlMJnuxf z{xD!{Y#b?_Du+4D!JA;5AOf@``zCTF(XgPam|v`V?|h~7 z+st5p*HuOgrx+th0+|P7jjYzj%srvKu}vWnKd=Sp!=eeZtQ-Bdxi_?l37Ht#!;BI4 zXyv7+Q$8`grzkw0%gZX(rf=v9`+UZ=(AQ+vk0YipKW|KCv+m!nycl>d>@PJBw?8(n zlQX`zI0o%;wybD_<+2GZ3$9dEGf81_a<)uvaPP0>mB$u%(6UB|!J%P(V#-HI4_8Iw zpr@p!iU$vfeZmW2(&A25%+6kCEuTyOh=UxDiu8A)n+S%D6#6_o$7Dz!OEOJYWrjN9 zy3tL@i?HH{giiM3#@$o4Tn8u~9H3OXco@1deQ1mxV2lH7%GP5_Q4}t#Y0KFz#y-(5?y;9Q=L@9?TF$~ls0u*L`HhdI-I`i2P9~c0~*9CC>G9`Zguz^ zxwJStwq;*G!^a@mx}ca+g@Q-3hd8AF&HYoXq#{4E=1&wJshzDWx2@__#kc0O=}HD` zz|b2`Ei%#&8?KA`Bj}xB#!8!k;B7iBWaJ}L!$+`NQ$>xdZQ=+fvhl(C%=$uYCz)wF ztf(sxjErvF^Re41k$FccCtfDie|KePDz0 z{4rUFCE{-k8|ZK?wQ-M}iQ?c;L`&W@g(i2HxT6h-&lQeT0%{#lq)v(mZz8UA(u@n( zXj#7Z=K@%CqA?F;jythZ(4Bn!Je9iagptwO+POop<0yqF;84znA%>)*CJXF+R!>1m%0Z3 z5JoGwyW5CZ(^gIc+&YI`uTHN%86rMJs+y3IH&T-xV@D%V2<2(Ua36=`1Dhx+EjBSX zF?e(=G^lra2cuXPc7xcrTOgchsEV0fCb``nHXaVEYTVNa{juOg1ybN8@aWxUT+TG- z2fiZH)UfZaDD#jlL}+9XH8ML?1J!?^QhqRdosSO_{hQ(kqI4pJ)B0~@DcLBp;k=G% z>84@tuv=Ya))u>ew(+ym^34hPVCdjM;B-OS{$}CR;t{y4OMfxhx6l2;A?$ zm_$wNYIxIf=~`gn7Tnq%LN-+PZKdR zRT5@=oRAFZy4C#d(KT&PS>ms5xe95Mv9YYU$)?Yt3Jp#iBL$^sn?6lf$|df^Z7_f? zXrA+Z9}wF=k-AW6uf}QLE%*=?#>Spin(oAZ2iL=ENP{(8|mR7Kow*)x3s1D~`y1RUbi(`R83WlSRHZRVEjSWX79)Nj`Yq`78 zhnQe6=j5KFv_vbaCfWH;(n_U{g+WU zg0s^xr^f!}RwEaBxokE3>Yu80{R+ zT^(macWn2^GoZHAd&snaY?PEzon6u{c^Xd81u-!q2e2^Vs~PeJNc_mkOJSn=O%J=@ zdHw6d;f%e-3#N_pVYfDGRe|fV)FfUxOm)+|CKwzHs5PZK6WWF&1x!>~?yXe8>-sks+_w))oE<=%(G+sP3dJFfyACLV4e zqcICVCPYCN-WWby*wG!x2S?{F3(vsFH{lo%N5Re~cJ$4q*BR; z0Hb}B0&R30fKpOAn}QgLXA*58s7Vn|)QJh-e-K6P~qx6rkVSB$S`XeY^M$l+A) zmL8cNPLNLc<GBnYp5iI@Y9@Y@&JP>% zmnid$lS_Q$d`CamFYcL^psELNnS_d3XOq_xED}O&Qa>bX)9pEDIP8cR+^1!q=9mH` zq@o{_L;yk_ccAoBvMCoKCo?-@W ze|TR)UJhxst#34^QQ2tEWs8a9=b?PRZ|w}RA3zT8AYA0rxh$o0<_Q7$E*QC! zX{Cg>stnV!t2X@siOIP!JEj#D{ic1hkg&gh>&T_Ki6#`La>6}KZVBFvtggigJF=8rf<_~ zzy8?&UGatn0F02v?kMKg?+h;#Jy(AB-L9hbAY;d|2i>2YP}-5%wSIQaG0!qP{W}UW zW5OGxLPuKm!2LbEn++5ycS2jsQ2CBUzK>UJ{7CIb3PbR}R)3|1qSN$@vj7Bw%{}9X zqdO)-^t%3m{{BH?w7Wz_(u*%aeCatk-aE-F6PsDCYdUDm8#q!-Kcv)Zk+>M0Fv5n% z6~fEXa^v|!^9xMtST7iVwoR5ezfLUv2f?^!cRCRyH9HcWL0*4XkW2NQ*KS(Mt!lX| z?3YJuTkv`BBvV)g^twW}Fj-YKf|}hwN`2^X_KB=r(?ch1UFTx7b-%Uj!IqgyRg+XN zA-`+_O}tXVYS8LkehM~;|3DFrbT2+p@1=|R=ADry!$5aRoIjzL?=8K2K5%Ntv(zZ-xr(wIR zF>(SD0U;Z*36-Ih=>U_mggH>7`28u%&Vxxe7fFRptMm%#bscBMzvQ=w>bGpYsx^{* zN1?xSj`*_4@)0`oy6+M~?W_~#qJR8jWmhz-XX5+#V}gqA)$40EJb)cpd{zN1k@u$! z=0sMl^^xPw0Au=?MQ8J=gE0|rCld0<29{(wlqR6H{h7}eemK~2kvc>cTP0C6QQ}>7 zu$(a--hFQKnaJI0vgNAJu` z_Nf#wzZL?P!P{YqO5X8MgWreQ{WU7DHByDG=&5P7L;Z|*d^?*w5b4p}B2^ zMHUPOSm?5D1!SBX=5a^dzk;bs8*7b{xz& zKdmNXDhp$DGdtSc9Ivqn)7TJ-@_!s$FX;@J5G_tRD3mPgPSlTFmsjeAdbcG71diO* za_qJ&n*YnP=;6&Hd-DU}i5{H173r)ON?XXb{XTKI91)e9q%AM55i)q0g++~(M6Z9i zVdECEB&P{v?ZBOT_g2fCzT38nIZq969G8o6NbqhBWtCtg6=-NT>?!&(f)Y7=W*;1K z9-p4!lGgc7npWY2Ie`r*QBY7lV*f5D&TjDymC(}%pt+z(m*zSXUO-l0%4~SsAId}Q zp_p$#DfqLrq9)Q4&t1__?@z>?VS_O>BIeCVy_Z<~x0totmjVapa`pevVt0Knr@R$= zIG3_8IEKX%wUyDC5Np7ElpaD6T4GNn8z1^$8vR1rWl8V1NQZO%3eO8uH_IOO*Bklq zHG9of>tDoBtGkmY@>p89TQ|FpUPx7yr~`C{a2~qEgW>j>r!+fyjF`(p8;@0is?<56FYaWT8t%OrTZ(guIbo#p=Z@8_-LiwpOnf{^!tP;|Vc(2&F-lEBy~m8!WwIda z>ka4ef^9sbu0ImO*^i_4*-&yhb>g`%d?Umyg!kZKpH-G@ed2}~xMeB)q|V+teuzq{ zEAMtufytBNqXkj&29>Hhs&oGHL2K!>dD#H)19hIFzu4VtY(P4MMBvua(zBuy-JD>q z(>YL~Ro9Hu1fKI7qg-ncDl}C`j;3FfXyUU!VI^MB%!O|zH)>LAGY?m`{EL`}%s)zG zL`D8L?`8E**+lYZ#YZyR!rW~w`oMVpaU@+b-+$%JkdX+`h;{@@#r++cTZCdkjuqFm z&0CPlT^tnWJR@~V(I`yUWT0<`Kw|Z6v(>Ien+LQYZru;wLOejn6%d@QVmLkKhU7F{ zr>5n|jR$aRsb%NpK_MqmU$dPFN4?IRs={XMg6AQ*lxUk`^PMM?d^R3fE#^$b!0&H4 zq(idml1Ne(I&-&gyitMcN^0@mrLvjw23N8o`;NIfU_94F%!b>hnfFyjBQ7 zVsW6=o$t?!5(dVS$suD|RsXPRT3DmM)ejtQU4-y}yAHPUTao^?2g9|6;RjKgQ!mld zrxE*(yV|m{x0LS)qlkO;#pLN9HuDUE$It^UF{CP^q?N}kG0@zpP~4**+OFdZ`R|PC z!L>^_5#Bw5mk;(Kl~PEbqan6W9P#mqat^|*uSWf;Pu+c;ZC%XY6Rzv*zCg6DhM6RP z>dQ~)L}@XN!5)e+mb7Y@$ypucdSaAOb-=R;M#hQ{d=2%EtmZ7J^|~1$Iy4C%tJMFQ zNIAdL!_TU&bkVg&p=09GVk*S>lB=Hr?aNZgeb{bZp)w)3*O_odAcRHJ&^Z6qeL*B5 zma~;cM&>SO=yOU&Q+Yo-%E-W;BB`cjgEAegDiHh&RouVxXx?`xfVv#vJ(04DUO^Tk`iTOR`I3vyEnrOFl6-`@uv^Hdj>0k~Isw{u6Ug-~Pb4ulnvS&XnKq zdXM#QJo=`wojBN`Hn05h2x~&2qWxa!f0v`&6VH&+Cz@k$6WdouxDoQ5CilqYDJ2+HzxlKx#W(Yc0$9B8LMp3)$rQd=izy&S@2fG zrPxU^nY;t8^JimZ8AGB3NJ>PT)ktP`?_8K|_xkabvSo1gj6KZFvdy{#9U1x&NcSKe zyrDU^3R8RTV5T>^_iH%wQ5IQg?KqPw*%!BS+dvs(3Qs|yWsVL_1c>}50vkj~lyyZ(2B<9U-K?Ii z->zcOulsSWd7ZIRyiioC5!3gmh}()|;P|6}1ovEne>w$YQI5g17A{;o+F!5~Zl1_q zHO73%V{{0*4)RgOBqQUg(f!dSG!F91={40j@BDJk@1GSr&Sp0cA3I`3%}{9XUeclQ z(H}HPWF?BekkZZ<4@Cxb&0IW-#`XV@9bV-|WGH+gW1@n17%alAYN(nC)fBOU*%Rr& ztg>PyX_2%vfzZMRgNSH5cu;(r)>Y1qTl1uj)S7JD%r2o3YGHw#f&aTgW+v2LNhRtK z)eve#Y!ce2m@VyqFW0Sw!2t-DO-~Ih8H#WWxwn-U4|nIctrSWWHWSrPt3zouosKKWLn#^sDoRX6YMuZPJVzHw0ISXuY4^SpPCX>w)uE68q|x1_If`*&z%JY#om&4Cnz1z!vF*V7Dgt=QV7|M`BxXEuiYRz;UTq0fUWy!K=Er!TKxImcg-A{a>vF_Vdm87SY`9T`mghV;C?%CUym)H_#k03^{}ci&2!MLV+PmwBDy_@$vgtFCzzE2->V5BP009FZ^EQal_eL8Pli4 z&*>5s4XDP)n4H3MD-!1y{=%Tl`F+dSl_)AaIQr3S9>eu4g^k}C$&YJZcKjHdxvPQ5K@`5nQuR_@qKFn# z(b~pD5lEbOgRs#>STHU>Lnbt21D$j!*Xx#M#Q{vIa1W9f8CFH23KBsj_%-C=^<%qLz0ZGBHuNJ~9&`2~T<@_+sk#qE!~gC{*W-3VNW$7s_K# zzi!jRh=088uRs5Z_MuSGphR4xh%?oI5;POuVlxC{fC#WSSSo;k@ksjp`A8}BVe=bW z`F+yS!|U%LEUz=)9@Bo2U)0}!mb3iz&NQLzTn1nPyk$FYC5asnx3Qegy;nER{$k0m z9*s4#BXLj@qq8Lzp+ICME8O=HE8B)z0MW=H_2xRjV9p&hy;3+c4fMu}*?kON4Ly4I5;L-Y*+UEPp19P*)UAAuwr6*+}Z1J z*e>Etrs2pFxtpLy3agK2(=WxdkD>-5%_tCe0GBt!c*X_|AE zdvYQij6vb#+kkB$c|F|4k{}Ztpl}=yVEaiVDDxjpzCE$a(wstqFX6Dm%-)+PkNX)d+)ee~ zpuK)^!NKt#TSPourltFybU}yn5#XDeIaqT)i+32Fhes5Qtdg##Dl;Dvp0Zl`B&^AnpVd?U^AhCjgCZOSqD{izb-n9us%GR2LTO1&&p zxWYfy-Vw&~t0l4i?&WCmxmxENvWsscbuVZWsDd`Q{ghO2^HQA_jYPR+bZ^vrU8&hk z7;_`i6o$auEnZ#z%$D`qlMl*);_p{37S%84ckpm}J&G)U;|;pomR;F*(im)HG6RT2;+XU&~J; zk0wrL-LyVb+F2XSZl2-{>mIIXf3ll%tNa-ng6e0s_#qr;WYTlFxbIHfn~%6oH8oST zVEjd8yd~%kpo_R3a5AzUEQ_M{V*mqroKm;0V`=HU_vvi3`)}@Ym&Vw$G1uPVUcH2D zOqG}!+sR8U(t7SPnZ{D!W6rDn(l47#v#07F`X=nvZlfk`Iu#I8kLJyeG?l66ETBF( zaZtGVH*npMr1t~G>bti|tAOm>DGEO&@a$M##pZq2=`>boc8Vj*Rzjj>AZ_Y90zZ%c zA<3Us;?j-)dH&0v8g-ei8&wQ{FD$xWUuA~FH<^DFLOHS>XfJnWVG1cj=2ZS5+VIak z?{g5Ie(zBjFnj;*tvbt|K?$wp!2UeF0~O!{9UAO7Ny2vhmn>*kuOqJ z^$%HE)O;Md#N?k`p1C8aTf)}ILY}|a45W}@lC&ZLKtB*e$`>svL}@7H-^-KQ^^5tz z|4dG_3c{H)^#aG~RVR>D4#;1+D?~OblT~jZ|;JXKY1`D2kp$-#>D(YA6*eqAi z-bE+k1QJkT0~2VmYw+&p@~W4NR#4G6@z&wCz$$Yhcmhb1X~B2j#OYTFgbJcoU*!44 zJX$;h#1zD_PyfuzIBtYyKNZDsdvgr_2~)MZp}6mG`%C*FUifzE$hFm8Xx@&6mvH2{ zv9%C8*!wev|Dcc5YdiU?-y{7aGL-WP^LCt4&Y$u7^94_Zk1o&HLNQ`9wSnZNlG_t|4-MaC+@Vw@3ZxHmZGsupj=#YfGGX5sM+6P z5XbOqo`>ZlGwd(@Rkx`_PW2Bi2J=e--I`jra!9v5SIdvO1R%2>T57c)4b7p*zI^wy~R$>ufvFr=Cc-{z3fs~qP8eN|`zWzvjkkF?I>2h(>lO)Zt@$5VT+$1&a=8ZERpD*%)#>PoM)_>&ub*%S9IoHP9{`1r8_5MtMgPaF@!3AfSKydtc-dH(>_T2sPlFZrW^X{Cu}ctSDYf=M!I{9!Dh^5g zjq>+&mRxQqX5$|=hkfFs>!)%w*BYZunMccJKUr>~l}3^v%d0UxayLS7@TDyA>KSvc z8UFsys*li9uBdEbZ;<)f$XWi)B$7i zVVe(rnmk(+IFRA1hj}hg%n~l@NsW#>P4jm=& zJU)+;zA0vEdlvgo=2}!*3_Yk(tOMB`nBZi1x{M)1x1hm8MKc^-pq|7LSQ0TJpKyKvsb?oGd9xMMlCX^Y;#K`Pp^p-X$lbVC7M;i$3^{-A z(3!jsl?q2UF_{`m)V)pXTPgP1%QNu}lGl)@4;gC5YQ6uo-0ppS65P2`4SEXg&f%tH zS^!@MKf0Bgb-e?TeU^~<0($CMc+@v%S%I8eWT$Mrt{Nb;mkNxidsN+VlDwjFq zryYUD%(@~0{a^?=8{dmxu6Rj^G>?L+Gz{hwCpgNBI~fqk_v}J}dHMAg-p1?TE7fz% zw(1E}>_b2y$^i9!l-At(`x6`&Y-K!bLXp|Sd8`OTsF@s)wx{Ho`;mzrIIgtAeHxk+ zHnu7nP4GRIbo~TRh)45Z+s>qq9uY+bKH<-4__9+(r~c7uK*Zm0G(00d@9jv3xC42= zaMFWkD8l%ONb3!?%3>M&T1eCq;40;W`Z0F5l9tvDB;f+Zq3%Tlf@rXHk?xBfX3B!X zFYyjhpUBU*G%00WeXB41P$d+WVshvb?hNp9w_N<{KoqwC5hZ!SsrJ^zw#E8}CjBMa z%SemHI^LW!mWJ({)&6p2v#IvezSXNGF6q^!$(w2!&+F6GmBu8x*~M=Pg8EDCS*uG6 zE}zy|f4zwD1$}(~s1$*MBHAe5Ea6`s31P+-nOls1?Zep|W9R1=ga%ftNjN;xFVcb? zu5!X)2v<-Rq3rCa&3w4iKvG$l-?~rI$2i@WbqXs-f#^P`GI_N=k`k^m-@PnZwB7ZO z1wD8i0f+w_&upYrEbdi``oCaBdcsfM*HBB-tq;K=jD~{aQIMguNV@bl#=s{a2=GEX zB;@=H*I{+*-;Huyx>g6!E+86+G!NYWD`$1xv6rmvY*3~R65dMHq{4E zN%}p&cw|hqmLT>Bwc&sHWxH@K9AAl~yq4~BS@yyD?7?^AItOb6-6++IWm@cEP5+B) zfQM+r(bH=k2F8J5g5hHnCh=SfQ_19a`*xV-v;FT;;kvn}psnK77;$d{#eux}NR(TZ zwl0l;g1vmC(u-GJtn>>w%xarkd?mEB^B2VA=l#gv@arA!>772jyrF$kP+^1uMWmob z6)RghhGH^RN*F1e4^&L&m&lc{*rG^yzG!%E=~?WZHo&KQ1*y!FvMJsXV5BNMW9Cm7 zDJzSfh(kkN0K&ae3=G&e5E;rXe1sbOaDm_V-W(HFq!a`_ln{#{=u2T>@`$)2VjHxW zW?X5z_`HgCN4~#!KPD(+tS^&-&u8?pN2K%DtHT}zC1wy*4vy-92tI|+BQYMkAVfCi zIE5S@fX*nwPC3g{IkruvwT8xs-f}p^PrDzL9|2#`nkX#^LC`ROvM}sH(%{1Lbnvj= z4^0{8ufmNZ1h_Avxr0=lQetQSp*~p7u!*f|k?B5F8c%z*KaVN>R`0&KfI9V{e;Y#h zGYvB!fFa}uJ&5xmD!_I1vyw6{*Ce_~`If-k@V16m1e=x5pTQsEqePIiv&J*x$zyOeH~>}3aMSgy%X#6w3Jkl)a}MSL>vL- zFS_7nZjHqCgqr(|m8wIhkiwVK?kaIHT7W;SN9S4|UbW)iAByn2nT^_99Z^!6-gtD* zMup2&```oy$0Tm2`a`kospV_ ztRIf}3duEnbz6;Oym=@Y(^(i5Gy})0iHygiVw}vA1motmE22BY>_fKpKjOY|-9*4~ zcH+k2^%A{&)0oUd`T&G{EB=+KzmWCy>+%X@A}Rnf!aAPEgBBskKVmokESxmR1p4TF zPU@q>cpU~17V5J!WOA2r)FLCS64Wgr;0s!}%IAb8kPT}A75vfi8yO(pNELwwkRz_3 z%!kDI3RW$7gerGH2j(Y;E;5o2$2!8gK0ANQ-W2W_o{TsX)Z-wWnc^{=Kv`(vP+X4Q zOg@E?i8<&^Rck!{E)rJY%~@7VojMt(op?n-4GNBiFB1@_6~LrDVA_yUiwss3CWF;t z)+PUm?{b90NZlAifTve6u!HB^08hmao}J(uA@2#N)#j-R;0xs(b@I)qJx>)E=~PRH zz}t(bT~py1meAEz;%xIk^MT_qICeQm>yh$0b;9TleDV%$p}?|y4%u-~euLTycmPJg zCI^C7WptT?lu{Zvy`QN8I^Rr4pAQfUA967Sm{a}0?cdRo2?IO!gfL-=ga)H2mb?)& zb4|-UP`R7Iom!4CD|`b0M>C_va;b^tru7~ zlwcX?UH*E2D_CgV%0EC@(!_|k64B|p?pxpZ`;66P47i>;4C9&`LPy8j?F2vNwS>jo zpyiiVK>P`*p%7>UHVTdyQ4o%lIyNZ06XY+Mpk}724v$A&f_Cy+Po?Z}EQYUAa1d}9 zVazQid94j8T{!VJObB^H+}$@aarc7VgnYVgaKvSy35h`3G$Z|mLXfwhzJ-QW*X45= zU^^1>uV8c&26pkOcDvgCU0gl2)Piz}$N+!;GBI?TrV~pIprEH5u0h(q_puk*ECrat zwVn9MZL;RLQ&R|#IwbqYj`myCQ;CwA^N$T-jd!~yTG_A50EzTF_soZ1B7 z(oUh^ry;OcxD=GXlR`}X_~^wh8O-k-;&5H6b{WpV*0s$Dza@oKQz>Q6R63$dOEdsn zIJhfHId+Q#ZHLoyAm~(Q7b@3ls-9f`yO(ijmMD%5p*RQRz)_>5M@^l6bMs!tgMMfU z!Lmsb4$<5==VgX^6=D)mht4C*<^v1(T%$mq-Xv%POlkfOqY}Qw}J2`Xs%E*kvB4weZ-SY5Ss@hgTz7VfL=A^P68@qbZ}r0 zB0~jyx?l)$$yq!$ZW*>DychyL=DHNf3j{!_0RvCK6L@Mo*dR(Gpnq|q6t>_WMn`-> zS}^vc7?3}lA;?Nhj9fAt8wE%tiD4!t7_2JAH^3(*DItfAJu0Tzcn^(qBg%(ZLHywt zAaKHekWrmw{izaBgO>2A84$HT`7VDN#M=-TFEqiPcSVdhp|#3``o(4bj+CRrL|1U$ zEJilDe}TKtWasw03i#qpX=6QP+7j|4&O??R2^QD0;^z?iNT>0!t&}ejfL7-B`oEUj zx7M}Sm;dTpCjdgkZo|n}re{dr81#TF(2y>w|68Rl5`c$I3WXyH2XX^4IM6e#HO}Lp zlNJ#lW`tGf6pIgpv5R5S7)-uFbQ#<;qS7H08F@01SQ^(#q;mTzZ|`VaCe(Unsz_(% z{+N=z#`qvPpPMX{G<_{B3>~sQw7M2m0)MfBq=$-sma7Mh(}B9+p}EP^oB)6@uJklK zc3#pnJXHY{@xT6M{O$Tr0sp_s|9$?a_rJFx7Q-YNGEff9tmDUt6eS>5@X|rjP%{ip z3~s;xfZGbu-|9buz1@K@tGAJXKY}Fx`v7lsAnboOP(i}MbpDwn8Krp~B%ZkmhgOR* z03nz)j3OR@=+6zn;I_k#p(-x<|KDL?0CI{Sby^lkeOywH5Emcj2vO?3)dCQ=WJ#HcnlBO&>fm{~46d%qJ_ zJw1`w{`s%=&BXZ0lJ2Cm>u&o8Mj7VTcJT!PnJ)vMsC#L(4LJmO{vyf4FAO-Du`Zr= zVZNW6Pg#y5{M7DY&{5p`Q<^Z9bf$rsA^7}?^y%T2Y~P%@W0w*;Ae{b+9P^Cd)~3S= zf4<^NbxD+Rep2tMIDb(16HgAWwD0T68P0Nr?Z-L{*8QGTc#8?r>8y8@-#L6oTx;5i z3xyng)jSu)7k5@Fz6^Le((!66t$E)^E_3mErlaQQo(){61sSJYOKw=DE^Et_6cu8K zP7B=~OPBt3eee_W-QS9hwt(1(6~>6xUc5I@FfrLEnqRXK#m8AK|s-j?_&8AWb-{sw;H8P;u{Dyf=PRvdM5tDJen%U%6 zrxHWh{+?Q@G zWh+Knaik)`voh_*wc^3g?J zZ+f?3@quwUr->EG(`vIS^!om%AXL&zCX4QmvDD-Bhq=L+vfFC)!apyI_6m)>3i}w%%oXWr+B46h{{QCd7|( zVm{8KF{1G-YFN$d8_vpIRABkw$akOq@x<5Zx4+d{c@_yKZv$+#*`z7bexdHTvLR!# zL}Hedh%7GSaI$shs!paM!T(fx4mFgL6ysyL(408p?ZD*bvZNzdk~-Y{U%qi48ZHZ| zUsDCA9j5!+mQD5bTRDjSgoub>xZnI;sVNuaRKn6-U7bRVZ`k*~n#ICvrsb-&+%Khn z)DS-%gH$)s&?RcT(S#@ben*8Z$Q{uKVa5%8*}X(W#&!;NVg-Lh{#+fw$c(HS0PJEe zl~Jy22dtDi#KprPAe*&}le%i(*&SdAF%H^LNb z;4OyA7(>I(nr3Hc(QRrcEiJyur%%);qT|OYP?b`wP<<}!Iaa?|*(&h)vbcuyn*h5) z>OTOl$Q2u0TJ3Agk-lWfJs2@CV&Zs{yjlmvz^oZsLH_{lmXSj;o& zgKmvE7D!9`_uUjcJ}HLGM+Mm?jD{9hiN)7ojsHxLu0(FzoEz5n`r$u6r{SU`biIn9f6QTBO8nVA;0Z!&CXVl8Ghk7Mk@%fwYL_RYUGcleQ7ox*KwEDw&NhO5++AC z^;tA;MiX3Y){BuDFs?C}dnRz%xqa_r$0sKyaJ~}d*k0yGtsmu4sWZynQ>FXZD#8dy zFW)bPCo@eVVs`)gfH-IvA{>wm2P_hm5XX%v*_2XSH*E zUvsAOu6oSQr^2IasXd*LfNE~GK0>|Kcjv3z(B}?P(5J6S9?8{Q{KgqTZ$qLc*b`{mx(!{>etBk{(CjJvx;#l5tcLa@=}B9(q{4xaj4@%}&-MAhe?eQ%1Bpf*>QtR-cBFA*y`+G=(ol=dTM zK~uLBVA$roBsHCm>vjCRS4KN?uEElFTK#}lhy3Z0XqJ@yytA)s+PMK|p=@}$3(aYqCoyV$?F@;>|z0I9G-3{Uz1!_yNet5Tx zQ_Tz#j^8mWne@YCZ{;({OOZIrPLFX4F4V#^Z3(}(H#DUL;yE<)G?eaCWkb5wf4?Q> zY)R-h@xNj$kb2|&MKDuE?Z;2Hse~l)9Wu_M`~n4#lEue=25Wp;pzm&-Dlwj*AMa-p zkLsKfxX%8rsqP^}rXd1t;SHbVAinf?TzDDs;l}3siZ1$VO zvWza$Bbg6%jZhsJLB+Fc4 zVV20~itGI2X2bQT$U4;eW5;gC#TVB%X{*PcZ>#YjSM!q!tycWV1H2pW5SbW@S%y%m z@UMJ&Ji=DKS<0y@Eck|oQG9yE8j-{$jDmVB)A@DH(??>I1n)L_q&7I@Ef=bRtKvQd zL0eg=Jp;er(Zwcj>twZTR-A!pC*s%@ko4KsAtopQzR+PqE`|LoH`0WapQQ!aS_`~&rX1STKWKOlHSA{n~rQiXK? zlY=%SNv80at{azl{O)hAW#jT|O^q?*M&28I%7O^_(WK13>WiF)v6QGMgW+_%9#O6^ zH+hAA5j95o@(~gfi3RtrA~{>H>0?^$G;?3}C&vcNFaJ#tc~{*xH{q8|ijIStwX;@v zT~)KmJ<|7%ouC?XzcUO!=Z&bkQw-!%I$O&bKUIvXuB>-CfLj)Ra(8z;P&0ObIiS!^ z+I)SF=|aR2SJv-oicGL)WQ5m)l$bmxApA$Udg9iL3+e>t9!KqTIJt&@9G+>_n@_Ql z8OTUq9lR0>p@<6B`X&>k8xKolP$h+vNt(LP@Vz$X*)SnYR>*91sTB)SOOC>}Ga-C5 zym!;5kdtE_yzf=4zaxrPY=P(h9Hf(=?g^q*v&`U(2?mk1T8Y=Md1TUirN3q{<^J=Q z3TB*|N+#X8Yv0)aB-Za%)XQN;JxVYXA-Y%{=i>F7gD=T0wLt`8F5{M3;ZvH@Vi900 ztIUk9%&M_NP#dVbU?sAG85sbfaxs^~hXitNVZ?%mFJTmnS zOGV_=zTht%mbL+m3gqsO#$rhQKt@)Ar3`G11s?^E(|1$uIHstI4K$%^by}WmMN$E2 z70LQ@4s9l@jH(P4T5Znj89LkJR_c||&I@CfqLm`ZdQe-~hc0byqAeuZm+J9In-K@s z+6iLAXBq*iT@0#Zy59m+v7PftqqU)R3N0VW)F7V`Q^v6dbSdsDO(gbGbdbUw%2*Uy zAH8DcoVf-&rBStg1nsscIXwtc-&yVVa!}ME(h0ZG7)(OAuD!Klk0 z+{={CPZ&4gP|A|HT@yCXO5Ev?XKihAtSYL6tQ5NA1uvTjbvB>FXezt}yYX4txdemF zD_Y;sHCcAu@GgA*r17iKwl(o_TNl7>~ne^Yi%tHY4+kV)CbD4Z`C=guU`nq{A|YdILfu2vCIphB0R3c z)=BUD5Jwl|R{K1v>Ut+{H49`K5b9ZP;Q12hc` z7FY@zASY(Qq7oj>y6;cV0O-ZJTa9*~svE#H1PIW@`Zjk`R4!@-0V_NiF7SldJPNng zjrOm@v)^%ZgvqGX?j8VNmQp$>Df&_wRZ;E$H#{i8u5?R^Tl3G~Y)CrwTy^21pNy&5 zPT@=XcjflB8UdHH_P4h;uWBzPLgQNheIn7qH>=yRpE$h#tmbk-dM=RoYZ2#GZDMe) z7(gGBm%X{Q4UAxR~*WbYiAO_01_|9y5w|v&z&L{88>U6mG z4Wxpzxy4$>j&>BEuaLY&B+4+`ka7>~YaHxuuq!hs@au+^o}5S{Q9)SNyp37Uk9tt? zgkZ|<$e7&IVU|GxEUEjm{+;$wv)FaHjj;VA(ObmFd;1gEdaVKpdxj;04EWzEh>3hm zAduXrG;^_19Q-SNbEJLmeHlt3S0$64UYc@bhtBJS(FWx~zhX~|+y z#1ebza&*X?=m|dmaf2cbew%-@YMrt-w^ z@+P281t~tZe7PI65xA)7H9^QQ9a;A0RrI(LGXQWn?p<)@{pr}@cKb)*pb5InwJy29 zqE6c?G$(6g^x;J%yzRSG*zCN&=ZMOSal%k0Y(W1|70d>*h)Y%cu;4;5tKe7ex>aYB z_~u9gqX6c0`QU#Ccun?jk&%|Tb!cR=_QN`7f z)Og50{@Dq{c8c4K^~?5UULHAdm4Bw`my@~1%GRGqdb;%s|BorySj+<{rRYE6%f04v z$(C%u!YDW@cC0QK2v-bjZPn)AgQeC^+9OY-22tWdS z;#DXoEViAauV#pnYXGw>7<r)sdo~*k;SU%DI1Yn*o9?z5n>^!nk%b`|9*2btT77 zL-Bloh#{iE@2kc_pJ}_K<}p>)r(pm2G~a=#Vy&6*Xfwt&aQt|Py#y| zA({MbqSjqTH^r2pc(EW-TxQ(J;N~xW`0~9)pM41*MqIUzo_sAuU&Si@04L_sRsW<0 zmi%p_@f*VU>t>#F(%zbQR;77yP@|i#M-Em(anoC;KD>Oh#e_?3EpAtW*=XMRT#+-l z4o-2K7i0YYa4{!Uppq;ZR(+wkfhZQkH>i;ME2ix2dXX8r;jYw_A$KtzH@+xCoo}o& zYtDbeTPji#ROpFPD5{Tuq{B!~JDMI6c*Xm#SQ6M>>b$SIpnGsTb|2h)$C1k&XovL>xHr}DtA4rr?0YO~$UuV9j&L>#+Y`B+&@{&e8PU_` zKRP@wT~V5*a8p6f&9elija0#F{aPdl5~-8CQhUH&9ZIFTHYU%7d=3@eo{QFHQ!6P6 zZxfnHj71FC%&HoFP$gB%r=x9;i>PS^l2q&au=%Z|>~+TyN_yya8ch|5E~$&Mf?~Yj z1Pdo-)SZ1XYDSe*saeWW>E%bYU}hMyB>xdfF;IL+KMGu}uLok%brVyE0hWB4N&rTU z+ABdeIxe0HRCTOIm)u9_?3DG%NN+vGC`xTSAmg7E{a+2;Di380;JSF-N(J zFkT2OC|L#rqW4YC$jr!qXoWGjJ8V|g9$N+gSj^J`V9Q|M@bdEE`1`@~sjt`zWtMbk z0eD%!QW*dUgQtUtIr5O=BS~M!a18+969W4dC0%=SrV51BZy6> zUXuGPwOFG(SsHL0lz3;U+FzOm{4d(wh&TXOj~aRQ~M$CsNR>CJBdd|)6z ziIGVyo8RM_!cMosv_IS6=xygGJjZL{{rN`c!+YuL%adM>>ksLmtPU=nQY(t>pVla* zNQ_V97lE~J9%_3mQ68=etZtvgp9~Jk3Zp(?;aufWGg_6TMH4du%+1XKcmPb8fFNva zr_x0gelW|KA!?5aQ9N3xCSSNN90(o;FopdQAFZEwj#di;wGsD$rt^(L!9u(?&olde zD-DjmiMw-Lu>@;m!12{l>l?cMZK56bQJ)6kOe#t0bq7+)^ctZmJZf#n*V$C2=IUXnj{7@^x*%HNdSP*m+iF5 zPLgE5NmnHEZm`rEEU(yTX1>`e^XkeWx71K@-*nl&yPG*whQb)=&N{7Ru@}GZ_;~L{R zQQNG*YGpxLgWR$2tcgDRPd!g_E%xu~Mq{?E5OqFuBUVw={(sV7fSE0#`f$s3|@?;iAeO{e>) zc+RW8z+?H&7R2?mp?nBPt@aBqDe+e|&YpdV@Pq9CYnBSrc8-nGi?kmE!{v)2S9Wn? z@6=?ug%-;xKOG`wU|mut$O&z2ITlq8j=l_H|$kz8mzI98|G%}R*@b><;#c*H^t{)^9n zlfgGH^t-?`2>?M}=b3gQ5IG-H=GEb(!{K;fACAFOg&MiDq8UdR7g=2?biCwk3EmaL zt&+pprSlG!|0`uGsp+4CD$cR{F9P(lSgDW(qbPFlx3hq7+ewnkMabgILE#TlXm4+4 z$*n#8$Jc+bOlq9^yhk&>vNcnzMA+Z+Ht+oVU4qA8c=qDx;ddLS`tOrWOCOamn6W7V zl(kK%bdG91tDTbSXqS`G8^7w`q`*7H7LsmhPM2Ob$rZmlV0;RX);@8=mYOQ`K;iUb9>F}vc4BDI2x>x+Zg zbYxAdA>n@SwwsNuhb~n;;Wn+R1M&mW*cYAx;bwyDmtT#Tcj0HQ{!7f2^WLQ1{S}3R zHGL(bd;yZ3vo8-`F|11rw0RfFi)7~_;dfOD0&Zl1j+TXsMCbUW4Q+&d58rbfx(2cv zffJhQBwD%kLRknjtppRXC+Su2bQ|5c=t$Tw&B$(9dVcaE+5!6gkCeA+Ih^}=l? zN-qB1)f7`HSax1`@N#oY21U;5GMsj!yJmjvl~^0(#&NTk7>Oymc#5W|XTCCE&-@0^ z7&v_%*4}bX&R$t2G$Eqv9bXV2Rn8t)Z%FNEl=b2iXBC+`WJOp%>Fx#s_37pjX>12w zNFuvglD_ElvI7% zxmLelT=fK*EUyL(BpO>Py)a)S7!K1Hy}GGU+>?9$vYC~!+-g0pX*HpitP2GySbkdM zwBHiJ1@c*mA^@MiKSb+pR0EP&Ezx#O{EZGO>PGBV8Vv5cAXg&&ZG>1!1Q%7BFRhlK~o_v= Date: Wed, 6 Apr 2016 13:18:37 -0400 Subject: [PATCH 054/116] fix for 3.2 (while breaking for older versions) --- sc2reader/readers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 7a37050f..fb603559 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -920,8 +920,10 @@ def control_group_update_event(self, data): ) def decrement_game_time_remaining_event(self, data): + # really this should be set to 19, and a new GameEventsReader_41743 should be introduced that specifies 32 bits. + # but I dont care about ability to read old replays. return dict( - decrement_ms=data.read_bits(19) + decrement_ms=data.read_bits(32) ) From 5e6e235fa399dc691519d38faa11d71667b69002 Mon Sep 17 00:00:00 2001 From: Anders Nickelsen Date: Wed, 13 Apr 2016 13:12:32 +0200 Subject: [PATCH 055/116] Use Pillow since pil is not available on Ubuntu 14.04. --- sc2reader/engine/plugins/creeptracker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sc2reader/engine/plugins/creeptracker.py b/sc2reader/engine/plugins/creeptracker.py index 8e2d9e50..20b82f8f 100644 --- a/sc2reader/engine/plugins/creeptracker.py +++ b/sc2reader/engine/plugins/creeptracker.py @@ -2,8 +2,8 @@ from __future__ import absolute_import, print_function, unicode_literals, division from sets import Set -from Image import open as PIL_open -from Image import ANTIALIAS +from PIL.Image import open as PIL_open +from PIL.Image import ANTIALIAS from StringIO import StringIO from collections import defaultdict from itertools import tee From 4be87ef6b119158ad611edabe24edbb858acab20 Mon Sep 17 00:00:00 2001 From: Anders Nickelsen Date: Thu, 14 Apr 2016 20:38:50 +0200 Subject: [PATCH 056/116] Fix LotV time by fps modifier (for length) and new game_speed_factors (for real_length). --- sc2reader/constants.py | 26 +++++++++++++++++++++----- sc2reader/resources.py | 29 ++++++++++++++++------------- test_replays/test_all.py | 5 +++++ 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/sc2reader/constants.py b/sc2reader/constants.py index fa65d1c0..f06fccf6 100644 --- a/sc2reader/constants.py +++ b/sc2reader/constants.py @@ -60,11 +60,27 @@ GAME_SPEED_FACTOR = { - 'Slower': 0.6, - 'Slow': 0.8, - 'Normal': 1.0, - 'Fast': 1.2, - 'Faster': 1.4 + 'WoL': { + 'Slower': 0.6, + 'Slow': 0.8, + 'Normal': 1.0, + 'Fast': 1.2, + 'Faster': 1.4 + }, + 'HotS': { + 'Slower': 0.6, + 'Slow': 0.8, + 'Normal': 1.0, + 'Fast': 1.2, + 'Faster': 1.4 + }, + 'LotV': { + 'Slower': 0.2, + 'Slow': 0.4, + 'Normal': 0.6, + 'Fast': 0.8, + 'Faster': 1.0 + }, } GATEWAY_CODES = { diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 3ba19af3..aa00a880 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -252,8 +252,11 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.build = self.versions[4] self.base_build = self.versions[5] self.release_string = "{0}.{1}.{2}.{3}".format(*self.versions[1:5]) - self.game_length = utils.Length(seconds=self.frames/16) - self.length = self.real_length = utils.Length(seconds=int(self.frames/self.game_fps)) + fps = self.game_fps + if (34784 <= self.build): # lotv replay, adjust time + fps = self.game_fps * 1.4 + + self.length = self.game_length = self.real_length = utils.Length(seconds=int(self.frames/fps)) # Load basic details if requested if load_level >= 1: @@ -362,7 +365,7 @@ def load_details(self): self.time_zone = (details['utc_adjustment']-details['file_time'])/(10**7*60*60) self.game_length = self.length - self.real_length = utils.Length(seconds=int(self.length.seconds/GAME_SPEED_FACTOR[self.speed])) + self.real_length = utils.Length(seconds=int(self.length.seconds/GAME_SPEED_FACTOR[self.expansion][self.speed])) self.start_time = datetime.utcfromtimestamp(self.unix_timestamp-self.real_length.seconds) self.date = self.end_time # backwards compatibility @@ -772,26 +775,26 @@ def __init__(self, summary_file, filename=None, lang='enUS', **options): while not buffer.done(): self.parts.append(buffer.read_struct()) + self.load_translations() + dependencies = [sheet[1] for sheet in self.lang_sheets['enUS']] + if 'Swarm (Mod)' in dependencies: + self.expansion = 'HotS' + elif 'Liberty (Mod)' in dependencies: + self.expansion = 'WoL' + else: + self.expansion = '' + self.end_time = datetime.utcfromtimestamp(self.parts[0][8]) self.game_speed = LOBBY_PROPERTIES[0xBB8][1][self.parts[0][0][1].decode('utf8')] self.game_length = utils.Length(seconds=self.parts[0][7]) - self.real_length = utils.Length(seconds=int(self.parts[0][7]/GAME_SPEED_FACTOR[self.game_speed])) + self.real_length = utils.Length(seconds=int(self.parts[0][7]/GAME_SPEED_FACTOR[self.expansion][self.game_speed])) self.start_time = datetime.utcfromtimestamp(self.parts[0][8] - self.real_length.seconds) - self.load_translations() self.load_map_info() self.load_settings() self.load_player_stats() self.load_players() - dependencies = [sheet[1] for sheet in self.lang_sheets['enUS']] - if 'Swarm (Mod)' in dependencies: - self.expansion = 'HotS' - elif 'Liberty (Mod)' in dependencies: - self.expansion = 'WoL' - else: - self.expansion = '' - self.game_type = self.settings['Teams'].replace(" ", "") self.real_type = utils.get_real_type(self.teams) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 3ea7e248..d68b44e0 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -489,6 +489,11 @@ def test_32(self): replay = sc2reader.load_replay("test_replays/3.2.0/1.SC2Replay") self.assertTrue(replay is not None) + def test_lotv_time(self): + replay = sc2reader.load_replay("test_replays/lotv/lotv1.SC2Replay") + self.assertEqual(replay.length.seconds, 1002) + self.assertEqual(replay.real_length.seconds, 1002) + class TestGameEngine(unittest.TestCase): class TestEvent(object): From 73d11a9a1cd7bd2a2991014bc9f7352c394d83d0 Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Sun, 17 Apr 2016 22:05:05 -0400 Subject: [PATCH 057/116] Fix MapInfo parsing for version 0x26 --- sc2reader/objects.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sc2reader/objects.py b/sc2reader/objects.py index eeedfe53..3dd22651 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -539,9 +539,14 @@ def __init__(self, contents): if self.version >= 0x1f: self.unknown3 = data.read_cstring() - self.unknown4 = data.read_uint32() - self.unknown5 = data.read_uint32() + if self.version >= 0x26: + self.unknown4 = data.read_cstring() + + if self.version >= 0x1f: + self.unknown5 = data.read_uint32() + + self.unknown6 = data.read_uint32() #: The type of fog of war used on the map self.fog_type = data.read_cstring() @@ -575,7 +580,7 @@ def __init__(self, contents): self.load_screen_path = data.read_cstring() #: Unknown string, usually empty - self.unknown6 = data.read_bytes(data.read_uint16()).decode('utf8') + self.unknown7 = data.read_bytes(data.read_uint16()).decode('utf8') #: Load screen image scaling strategy: 0 = normal, 1 = aspect scaling, 2 = stretch the image. self.load_screen_scaling = data.read_uint32() @@ -617,16 +622,16 @@ def __init__(self, contents): #: self.data_flags = data.read_uint32() - self.unknown7 = data.read_uint32() + self.unknown8 = data.read_uint32() if self.version >= 0x19: - self.unknown8 = data.read_bytes(8) + self.unknown9 = data.read_bytes(8) if self.version >= 0x1f: - self.unknown9 = data.read_bytes(9) + self.unknown10 = data.read_bytes(9) if self.version >= 0x20: - self.unknown10 = data.read_bytes(4) + self.unknown11 = data.read_bytes(4) #: The number of players enabled via the data editor self.player_count = data.read_uint32() From 3bc825ce73eb6d9b0f8bfe0b38976cea1dd39062 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 18 May 2016 15:46:32 -0700 Subject: [PATCH 058/116] handle 3.3.0 --- sc2reader/readers.py | 3 +++ test_replays/3.3.0/1.SC2Replay | Bin 0 -> 127863 bytes test_replays/3.3.0/2.SC2Replay | Bin 0 -> 38371 bytes test_replays/3.3.0/3.SC2Replay | Bin 0 -> 72002 bytes test_replays/3.3.0/4.SC2Replay | Bin 0 -> 76250 bytes test_replays/test_all.py | 5 +++++ 6 files changed, 8 insertions(+) create mode 100644 test_replays/3.3.0/1.SC2Replay create mode 100644 test_replays/3.3.0/2.SC2Replay create mode 100644 test_replays/3.3.0/3.SC2Replay create mode 100644 test_replays/3.3.0/4.SC2Replay diff --git a/sc2reader/readers.py b/sc2reader/readers.py index fb603559..d8286c4a 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -85,6 +85,7 @@ def __call__(self, data, replay): default_ai_build=data.read_bits(8 if replay.base_build >= 38749 else 7) if replay.base_build >= 23925 else None, cache_handles=[DepotFile(data.read_aligned_bytes(40)) for i in range(data.read_bits(6 if replay.base_build >= 21955 else 4))], has_extension_mod=data.read_bool() if replay.base_build >= 27950 else None, + has_nonBlizzardExtensionMod=data.read_bool() if replay.base_build >= 42932 else None, is_blizzardMap=data.read_bool(), is_premade_ffa=data.read_bool(), is_coop_mode=data.read_bool() if replay.base_build >= 23925 else None, @@ -120,6 +121,8 @@ def __call__(self, data, replay): commander_level=data.read_uint32() if replay.base_build >= 36442 else None, has_silence_penalty=data.read_bool() if replay.base_build >= 38215 else None, tandem_id=data.read_bits(4) if replay.base_build >= 39576 and data.read_bool() else None, + commander_mastery_level=data.read_uint32() if replay.base_build >= 42932 else None, + commander_mastery_talents=[data.read_uint32() for i in range(data.read_bits(3))] if replay.base_build >= 42932 else None, ) for i in range(data.read_bits(5))], random_seed=data.read_uint32(), host_user_id=data.read_bits(4) if data.read_bool() else None, diff --git a/test_replays/3.3.0/1.SC2Replay b/test_replays/3.3.0/1.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..30ebb8c12c9fa046b7877bf19adee36247cfaf2c GIT binary patch literal 127863 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 H1nU0<73l8P literal 0 HcmV?d00001 diff --git a/test_replays/3.3.0/2.SC2Replay b/test_replays/3.3.0/2.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..05dea99819d91e24ad3eff9fb20b19aac3b83dc2 GIT binary patch literal 38371 zcmeFYRd5{5vNbvyF|#aYW*DKx%*?W6F*CEp%w#b$Gn2*4%uE(pXz|sz&xx~7{P*F1 zybpJ0OmtRfWv}YaiO$NYsU@eVga-fu000O8!0uB)q5y#OD$WLuB8~>8&csqu#EvHR z)&?GUEG$4s1OO}$2nz)P3k3xWfPp>9hJ^d)009dD1v}&f0|f>L2?PR(fnxcr@9eM4 z^>8g(GT61e2>&=C{i|yc0X0J0D`R1e4PUii2weDc#Q(^DBJiIG{C^bzIYlMhna{!Z z;{gD003-lB_EUehi9c;f|Hn=J!ww}LYc^0fieY2=$=oB#9r|D69P0{@A?|9>I?NeX}f z13*Ax0f0zCE{+y|B7yv8;5E=kbVTFJN!oa2;$ALirkrW;6ob8;Pp#JH82M5BQ z03l$hpt5`zIs> z5JA<%(b2&6e^3Dsut8u@p9B007WhA~5dXjeKVgAD3@KYz17j0MVp%Z=AOH&T(}pEy zVQXPyV9)4mX7Ep41zUa(@KfnhJpg1fT!`Xg~nQ=kp=~6`fdZ3;+Nz zHJbxW@b-xrb#)GSJD^Xizr{07c!!ZjT|H*Lst5P|%fCH^@gs6?4Khp^$nu?Z-%rpg zjD@Mm^gKO$x28{;eG2{;rYS5JD_W4s)klZBw_nTr<*zFLuETGEqs&_+nevL-5dX$p zWq6ew2pWu6rGih8US4z#x~WK)FvRz)GiK>A9sDZzZ%0J8--fBomhcBE zwJ(%m`6TU+dw@XV<>9|QO=6VcinbcVOgHFAYRT5h^5eT@ZgU8JNxTDjC{@c@a z^Qc_az~)4GSiqB{bfGARnO-1BTS`jH1)tih)H@Ih3V;m@g9{6V4*?*A1rS4kK>>2~ zi(L42H|o}QT%kkohdxk*wavL%gtRDCw8}eJ!2m#rA0Hnd?;ls6pO3d6A3cwsr;n|K z>mT>q506uiS8^ZQGvNFH%79g4=RSE>x@{ zuK5UIadv?m$U_d-v;f9NR<00-P|-B+4BUdSc=ofaq|`IJI96rhIxd15EbjBI{byeQ8u`}WAZR-y=)w~1!f69!Z74y?ZQ z^+RlViqK*?+}$s8JU>5<^pkf1t|Ux@!yvy>1Q>1kih#crMK4;}@?YX~y&;nkOkcv? zkJ66Dmh_Y3^P7@cAq#2O*&F9l}b z`$HoUad?y=mCI4B^|#Pfmst6L5rA2(Qf&$xY0lR|+!ta*H;h&|;=~N_DI-8QU28ss zNXeB&aPc)$fH8awEEEgFnLS=}2J}c{ZW1HZF_$G1CXO3^eK?C8i|~BYntKX0VCE5!5z0hz`s$ zJB?P!Y}&7Ie*AyrNm}E^WhxWXuoWbGR=kC9*i8kRMv5_i*4|rkYk=Y<6 zY6av&=ytc~KO_#j5R)=s%)|?MTA?dnReA)egt} zXLWIrsPfC*$-%N-Cens2=etT7FLvNdX{9Z;?2qqdY|o}6aj6m-N-0jwhhQ_TCRx1W ze7k4>Rj_<>01AKwfDNEV!(n=VMH)A9W#{LFH$oM=FL|P3Q8N1M@+45ui`3gz2Dib1u>xSNipib|h!p)N$t7 zT@%`7{tLS~deP#3|GwX0Z$eHm?S(UM^KW(W zT{(Dk$~V+4`m{SJ=ruG`EpIN<7M(_T9y)YwPSU}ZTA+j@NcZhV)WJHxAD34Tu|_?c+I

MJ1p)IS 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

0Fxd^Tn0BlX{k<Le eS_u#JIqT`UG|0HtH`VhypK~O#gI`xuYyJnli~oB7 literal 0 HcmV?d00001 diff --git a/test_replays/3.3.0/3.SC2Replay b/test_replays/3.3.0/3.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..a88a4dcf75357a33048020755335116f29f439ca GIT binary patch literal 72002 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

42^ymRK9Dt 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 K^R!Um)Bgbo*l(Kv literal 0 HcmV?d00001 diff --git a/test_replays/3.3.0/4.SC2Replay b/test_replays/3.3.0/4.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..65b4fe506881eb9865ce992a4b4cd902c093027a GIT binary patch literal 76250 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 Y>P;=51I#}YybcN literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index d68b44e0..7c13a51a 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -489,6 +489,11 @@ def test_32(self): replay = sc2reader.load_replay("test_replays/3.2.0/1.SC2Replay") self.assertTrue(replay is not None) + def test_33(self): + for replaynum in range(1,4): + replay = sc2reader.load_replay("test_replays/3.3.0/{}.SC2Replay".format(replaynum)) + self.assertTrue(replay is not None) + def test_lotv_time(self): replay = sc2reader.load_replay("test_replays/lotv/lotv1.SC2Replay") self.assertEqual(replay.length.seconds, 1002) From 189dceab81ccc0570853aa4f7a1bc16d19f55fac Mon Sep 17 00:00:00 2001 From: hochst_a Date: Sat, 21 May 2016 21:38:23 +0200 Subject: [PATCH 059/116] Fix some non-python 3 things --- sc2reader/engine/plugins/context.py | 5 ++++- sc2reader/engine/plugins/creeptracker.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index f7ea9862..ba8fccfe 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -30,7 +30,10 @@ def handleAbilityEvent(self, event, replay): event.logger.error(replay.filename) event.logger.error("Release String: "+replay.release_string) for player in replay.players: - event.logger.error("\t"+unicode(player).encode('ascii', 'ignore')) + try: + event.logger.error("\t"+unicode(player).encode('ascii', 'ignore')) + except: + event.logger.error("\t"+player.__str__()) self.logger.error("{0}\t{1}\tMissing ability {2:X} from {3}".format(event.frame, event.player.name, event.ability_id, replay.datapack.__class__.__name__)) diff --git a/sc2reader/engine/plugins/creeptracker.py b/sc2reader/engine/plugins/creeptracker.py index 20b82f8f..b08cc637 100644 --- a/sc2reader/engine/plugins/creeptracker.py +++ b/sc2reader/engine/plugins/creeptracker.py @@ -1,10 +1,16 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals, division -from sets import Set +try: + from sets import Set +except: + Set = set from PIL.Image import open as PIL_open -from PIL.Image import ANTIALIAS -from StringIO import StringIO +from PIL.Image import ANTIALIAS +try: + from StringIO import StringIO +except: + pass from collections import defaultdict from itertools import tee From 5dbe62bde6a33cd336dc58dafe2597907ffde5db Mon Sep 17 00:00:00 2001 From: hochst_a Date: Sat, 21 May 2016 22:39:02 +0200 Subject: [PATCH 060/116] Adding StringIO import for Python3 --- sc2reader/engine/plugins/creeptracker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sc2reader/engine/plugins/creeptracker.py b/sc2reader/engine/plugins/creeptracker.py index b08cc637..25ead4af 100644 --- a/sc2reader/engine/plugins/creeptracker.py +++ b/sc2reader/engine/plugins/creeptracker.py @@ -3,14 +3,14 @@ try: from sets import Set -except: +except ImportError: Set = set from PIL.Image import open as PIL_open from PIL.Image import ANTIALIAS try: from StringIO import StringIO -except: - pass +except ImportError: + from io import StringIO from collections import defaultdict from itertools import tee From 641e4943a6cfd322c5875aff8427823d2957f50d Mon Sep 17 00:00:00 2001 From: Anders Nickelsen Date: Thu, 9 Jun 2016 15:19:04 +0200 Subject: [PATCH 061/116] Run tests on circleci. --- circle.yml | 4 ++++ requirements.txt | 1 + 2 files changed, 5 insertions(+) create mode 100644 circle.yml create mode 100644 requirements.txt diff --git a/circle.yml b/circle.yml new file mode 100644 index 00000000..969c74cf --- /dev/null +++ b/circle.yml @@ -0,0 +1,4 @@ +test: + override: + - python -m unittest discover test_replays + - python -m unittest discover test_s2gs diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..7e2fba5e --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +Pillow From d5f5203ee7a94409bd07fd3ecdc4760bf909e308 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Thu, 9 Jun 2016 09:54:29 -0400 Subject: [PATCH 062/116] mark as expected a failure related to the APM from a HotS replay. it's a known bug that we're not going to fix for a long time, if ever. --- test_replays/test_all.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 7c13a51a..61d5b69e 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -303,6 +303,7 @@ def test_engine_plugins(self): self.assertEqual(code, 0) self.assertEqual(details, dict()) + @unittest.expectedFailure def test_factory_plugins(self): from sc2reader.factories.plugins.replay import APMTracker, SelectionTracker, toJSON From 4b730079fd46d8d292e1160fb89f27b27fa40198 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Thu, 9 Jun 2016 10:02:39 -0400 Subject: [PATCH 063/116] tell CircleCI to ignore the branches that we know are old and busted --- circle.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/circle.yml b/circle.yml index 969c74cf..2110527b 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,11 @@ +general: + branches: + ignore: + - ggmaster + - hots + - jonomon + - master + - old_master test: override: - python -m unittest discover test_replays From 90bc21912507293ec1aeda9fcbb5dbb439aa6f03 Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Thu, 9 Jun 2016 00:11:49 -0400 Subject: [PATCH 064/116] Add handler for command_update_target_unit_event This is one step towards fixing Zerg Macro (ggtracker/ggtrackerstack#13, ggtracker/ggtrackerstack#49) and Terran Macro (ggtracker/ggtrackerstack#48) --- sc2reader/engine/plugins/context.py | 12 ++++++++++++ sc2reader/events/game.py | 16 ++++++++++++++++ sc2reader/readers.py | 25 +++++++++++++++---------- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index ba8fccfe..330788f4 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -14,6 +14,9 @@ def handleInitGame(self, event, replay): replay.units = set() replay.unit = dict() + # keep track of last TargetAbilityEvent for UpdateTargetAbilityEvent + self.last_target_ability_event = None + def handleGameEvent(self, event, replay): self.load_message_game_player(event, replay) @@ -47,6 +50,8 @@ def handleAbilityEvent(self, event, replay): self.logger.error("Other unit {0} not found".format(event.other_unit_id)) def handleTargetAbilityEvent(self, event, replay): + self.last_target_ability_event = event + if not replay.datapack: return @@ -62,6 +67,13 @@ def handleTargetAbilityEvent(self, event, replay): event.target = unit replay.objects[event.target_unit_id] = unit + def handleUpdateTargetAbilityEvent(self, event, replay): + # store corresponding TargetAbilityEvent data in this event + # currently using for *MacroTracker only, so only need ability name + event.ability_name = self.last_target_ability_event.ability_name + + self.handleTargetAbilityEvent(event, replay) + def handleSelectionEvent(self, event, replay): if not replay.datapack: return diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index a6ff2403..59996bf9 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -339,6 +339,22 @@ def __init__(self, frame, pid, data): self.location = (self.x, self.y, self.z) +class UpdateTargetAbilityEvent(TargetAbilityEvent): + """ + Extends :class:`TargetAbilityEvent` + + This event is generated when a TargetAbilityEvent is updated, likely due to + changing the target unit. It is unclear if this needs to be a separate event + from TargetAbilityEvent, but for flexibility, it will be treated + differently. + + One example of this event occuring is casting inject on a hatchery while + holding shift, and then shift clicking on a second hatchery. + """ + + name = 'UpdateTargetAbilityEvent' + + class SelfAbilityEvent(AbilityEvent): """ Extends :class:`AbilityEvent` diff --git a/sc2reader/readers.py b/sc2reader/readers.py index d8286c4a..d84f7122 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1525,7 +1525,7 @@ def __init__(self): 61: (None, self.trigger_hotkey_pressed_event), 103: (None, self.command_manager_state_event), 104: (None, self.command_update_target_point_event), - 105: (None, self.command_update_target_unit_event), + 105: (UpdateTargetAbilityEvent, self.command_update_target_unit_event), 106: (None, self.trigger_anim_length_query_by_name_event), 107: (None, self.trigger_anim_length_query_by_props_event), 108: (None, self.trigger_anim_offset_event), @@ -1596,19 +1596,24 @@ def command_update_target_point_event(self, data): def command_update_target_unit_event(self, data): return dict( - target=dict( - target_unit_flags=data.read_uint16(), + flags=0, # fill me with previous TargetUnitEvent.flags + ability=None, # fill me with previous TargetUnitEvent.ability + data=('TargetUnit', dict( + flags=data.read_uint16(), timer=data.read_uint8(), - tag=data.read_uint32(), - snapshot_unit_link=data.read_uint16(), - snapshot_control_player_id=data.read_bits(4) if data.read_bool() else None, - snapshot_upkeep_player_id=data.read_bits(4) if data.read_bool() else None, - snapshot_point=dict( + unit_tag=data.read_uint32(), + unit_link=data.read_uint16(), + control_player_id=data.read_bits(4) if data.read_bool() else None, + upkeep_player_id=data.read_bits(4) if data.read_bool() else None, + point=dict( x=data.read_bits(20), y=data.read_bits(20), z=data.read_bits(32) - 2147483648, - ) - ) + ), + )), + sequence=0, # fill me with previous TargetUnitEvent.flags + other_unit_tag=None, # fill me with previous TargetUnitEvent.flags + unit_group=None, # fill me with previous TargetUnitEvent.flags ) def command_event(self, data): From 9520a57c0825fe264b83b745c17b75e07a44371b Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Sat, 11 Jun 2016 15:24:15 -0400 Subject: [PATCH 065/116] UpdateTargetAbilityEvent: Safer implementation, per player ability tracking --- sc2reader/engine/plugins/context.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index 330788f4..3372d84b 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -15,7 +15,7 @@ def handleInitGame(self, event, replay): replay.unit = dict() # keep track of last TargetAbilityEvent for UpdateTargetAbilityEvent - self.last_target_ability_event = None + self.last_target_ability_event = {} def handleGameEvent(self, event, replay): self.load_message_game_player(event, replay) @@ -28,6 +28,10 @@ def handleAbilityEvent(self, event, replay): return if event.ability_id not in replay.datapack.abilities: + # safeguard against missing abilities + if event.player.pid in self.last_target_ability_event: + del self.last_target_ability_event[event.player.pid] + if not getattr(replay, 'marked_error', None): replay.marked_error = True event.logger.error(replay.filename) @@ -50,7 +54,7 @@ def handleAbilityEvent(self, event, replay): self.logger.error("Other unit {0} not found".format(event.other_unit_id)) def handleTargetAbilityEvent(self, event, replay): - self.last_target_ability_event = event + self.last_target_ability_event[event.player.pid] = event if not replay.datapack: return @@ -68,9 +72,13 @@ def handleTargetAbilityEvent(self, event, replay): replay.objects[event.target_unit_id] = unit def handleUpdateTargetAbilityEvent(self, event, replay): - # store corresponding TargetAbilityEvent data in this event - # currently using for *MacroTracker only, so only need ability name - event.ability_name = self.last_target_ability_event.ability_name + # We may not find a TargetAbilityEvent before finding an + # UpdateTargetAbilityEvent, perhaps due to Missing Abilities in the + # datapack + if event.player.pid in self.last_target_ability_event: + # store corresponding TargetAbilityEvent data in this event + # currently using for *MacroTracker only, so only need ability name + event.ability_name = self.last_target_ability_event[event.player.pid].ability_name self.handleTargetAbilityEvent(event, replay) From 9fd95acbc447ee2adc492ae983cb7a4ca1156c1e Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Sat, 11 Jun 2016 15:24:25 -0400 Subject: [PATCH 066/116] UpdateTargetAbilityEvent: Unit tests --- test_replays/3.3.0/ggissue48.SC2Replay | Bin 0 -> 62663 bytes test_replays/3.3.0/ggissue49.SC2Replay | Bin 0 -> 51388 bytes test_replays/test_all.py | 20 ++++++++++++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 test_replays/3.3.0/ggissue48.SC2Replay create mode 100644 test_replays/3.3.0/ggissue49.SC2Replay diff --git a/test_replays/3.3.0/ggissue48.SC2Replay b/test_replays/3.3.0/ggissue48.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..57f06b5628fecc67711ec7417526098c2c88c8b5 GIT binary patch literal 62663 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 eOWpk7^-Bzv9Yv@|J1erS^0Emj{ude2*^ZD%CS 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 Qq0olfyP9-DM6U1u0h*3j#Q*>R literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 61d5b69e..94b58a66 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -495,12 +495,24 @@ def test_33(self): replay = sc2reader.load_replay("test_replays/3.3.0/{}.SC2Replay".format(replaynum)) self.assertTrue(replay is not None) + def test_33_shift_click_calldown_mule(self): + replay = sc2reader.load_replay("test_replays/3.3.0/ggissue48.SC2Replay") + def efilter(e): + return hasattr(e, "ability") and e.ability_name == "CalldownMULE" + self.assertEqual(len(filter(efilter, replay.events)), 29) + + def test_33_shift_click_spawn_larva(self): + replay = sc2reader.load_replay("test_replays/3.3.0/ggissue49.SC2Replay") + def efilter(e): + return hasattr(e, "ability") and e.ability_name == "SpawnLarva" + self.assertEqual(len(filter(efilter, replay.events)), 23) + def test_lotv_time(self): - replay = sc2reader.load_replay("test_replays/lotv/lotv1.SC2Replay") - self.assertEqual(replay.length.seconds, 1002) - self.assertEqual(replay.real_length.seconds, 1002) + replay = sc2reader.load_replay("test_replays/lotv/lotv1.SC2Replay") + self.assertEqual(replay.length.seconds, 1002) + self.assertEqual(replay.real_length.seconds, 1002) + - class TestGameEngine(unittest.TestCase): class TestEvent(object): name='TestEvent' From 32dec1261c4db57dbb308786961cbfd1abd32128 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 10:23:28 -0400 Subject: [PATCH 067/116] @mischanix wrote this back in Sept 2015 but I neglected to commit until now. He wrote: "I decided to spring for 64-bit support, so lots of stuff with the dump script changed. Lots of ID changes as well since HotS, it seems. Shame they still haven't shipped an editor capable of dumping the LotV balance data." However in Nov 2015, @icza writes: "LotV is released, and balance data export is available for LotV. Closing the issue" In any case, committing this in case it's useful in the future. --- sc2dump.cpp | 496 +++++++++++++++++++++++++--------------------------- 1 file changed, 234 insertions(+), 262 deletions(-) diff --git a/sc2dump.cpp b/sc2dump.cpp index f23fe64f..8fb1e473 100644 --- a/sc2dump.cpp +++ b/sc2dump.cpp @@ -1,262 +1,234 @@ -/* Dump type ids for Units and Abils for SC2. - * - * Authors: Robert Nix (@mischanix), Graylin Kim (@GraylinKim) - * - * Must be linked with the Microsoft Version.lib library. If compiling on 32 bit you may require the LAA option. - * - * Usage: sc2dump.exe - * Example: - * - * $ sc2dump.exe 24764/units.csv 24764/abils.csv - * Searching for a live SC2 process. - * - * Found SC2.exe - * Path: C:\Program Files (x86)\StarCraft II 2012 Beta\Versions\Base24764\SC2.exe - * Base Address: 590000 - * Build: 24764 - * - * Dumping Catalog@0x7903b54 - * Dumping CAbil@0x790b7f4 to 24764/24764_abils.csv - * Dumping CUnit@0x791f864 to 24764/24764_units.csv - * - * Done. - * - * If the script can't find the SC2 process or the offset is bad it will tell you. If SC2 is running an - * unknown offset you'll need to use CheatEngine to find a new one and make a new case for the switch - * statement. - * - * For Heart of the Swarm: - * 1. Attach to the process - * 2. Make sure that writable is unchecked and executable is fully checked - * 3. Do an array search for "8b 0d ?? ?? ?? ?? 8b 49" - * 4. Look for the most common match. - * 5. The the ?? ?? ?? ?? portion is the bytes in reverse order for the gameCatalog - * 6. Subtract the base address for the process (which you can get by running this script) - * 7. Add a new case for this build with that information. cUnitIndex and stringNameOffset generally won't change - * - * For Wings of Liberty: - * 1. Use the "a1 ?? ?? ?? ?? 8b 80" search string with the HotS instructions above. - * - */ -#include -#include -#include - -#include -#include -#include - -const int MAX_PROC_NAME_SIZE = 512; -const int MAX_PROC_LIST_SIZE = 2048; - -void DumpIds(HANDLE sc2_handle, uint32_t catalogRecordList, uint32_t stringNameOffset, FILE* out); -uint32_t ReadUInt(uint32_t address, HANDLE sc2_handle); -char* ReadString(uint32_t address, uint32_t length, HANDLE sc2_handle); -uint32_t GetModuleBase(DWORD, char *); - -HANDLE getSC2Handle(); -char* getSC2Info(HANDLE sc2_handle, uint32_t &base_address, uint32_t &build); - -int main(int argc, char* argv[]) { - if (argc < 3) { - printf("Both unit and ability output files are required (in that order).\n"); - ExitProcess(1); - } - - char* units_filename = argv[1]; - char* abils_filename = argv[2]; - - - printf("Searching for a live SC2 process.\n"); - HANDLE sc2_handle = getSC2Handle(); - if (sc2_handle == NULL) { - printf("Error: SC2.exe not found\n"); - ExitProcess(1); - } - - uint32_t build; - uint32_t base_address; - char* sc2_exe_path = getSC2Info(sc2_handle, base_address, build); - if (sc2_exe_path == NULL) { - printf("Error: Unable to acquire base address and build information.\n"); - ExitProcess(1); - } else { - printf("\nFound SC2.exe\n"); - printf(" Path: %s\n", sc2_exe_path); - printf(" Base Address: %x\n", base_address); - printf(" Build: %d\n", build); - } - - uint32_t gameCatalog = 0; - uint32_t cUnitIndex = 0; - uint32_t stringNameOffset = 0; - switch(build) { - case 23260: // WoL 1.5.3.23260 - gameCatalog = 0x1362BA0u; - cUnitIndex = 0x110u; - stringNameOffset = 0x64u; - break; - case 23925: // HotS beta 2.0.0.23925 - gameCatalog = 0x1EA2BE8u; - cUnitIndex = 0x110u; - stringNameOffset = 0x40u; - break; - case 24247: // HotS beta 2.0.0.24247 - gameCatalog = 0x10C9B28u; - cUnitIndex = 0x11cu; - stringNameOffset = 0x40u; - break; - case 24764: // HotS beta 2.0.3.24764 - gameCatalog = 0x10E79B8u; - cUnitIndex = 0x11cu; - stringNameOffset = 0x40u; - break; - default: - printf("Error: Missing offset values for build %d\n",build); - ExitProcess(1); - } - - uint32_t gameCatalogTable = ReadUInt(base_address + gameCatalog,sc2_handle); - printf("\nDumping Catalog@0x%x\n", gameCatalogTable); - - FILE* abils_file; - if (fopen_s(&abils_file,abils_filename, "w")==0) { - uint32_t abilCatalogList = ReadUInt(gameCatalogTable + 0x1c,sc2_handle); - printf(" Dumping CAbil@0x%x to %s\n", abilCatalogList, abils_filename); - DumpIds(sc2_handle, abilCatalogList, stringNameOffset, abils_file); - fclose(abils_file); - } else { - printf(" ERROR: Could not open %s for writing.",abils_filename); - } - - FILE* units_file; - if (fopen_s(&units_file, units_filename , "w")==0) { - uint32_t unitCatalogList = ReadUInt(gameCatalogTable + cUnitIndex,sc2_handle); - printf(" Dumping CUnit@0x%x to %s\n", unitCatalogList, units_filename); - DumpIds(sc2_handle, unitCatalogList, stringNameOffset, units_file); - fclose(units_file); - } else { - printf(" ERROR: Could not open %s for writing.",units_filename); - } - - printf("\nDone.\n"); - CloseHandle(sc2_handle); - return 0; -} - -void DumpIds(HANDLE sc2_handle, uint32_t catalogRecordList, uint32_t stringNameOffset, FILE* out) { - uint32_t recordsList = ReadUInt(catalogRecordList + 0x5c, sc2_handle); - if (recordsList == 0) { - printf("-- Error dumping table@%x: no list of catalog records found.\n", catalogRecordList); - return; - } - - uint32_t numEntries = ReadUInt(catalogRecordList + 0x50, sc2_handle); - for (uint32_t id = 0; id < numEntries; id++) { - uint32_t recordPtr = ReadUInt(recordsList + 4 * id, sc2_handle); - if (recordPtr != 0) { - uint32_t stringPtr = ReadUInt(ReadUInt(recordPtr + stringNameOffset, sc2_handle) + 0x10, sc2_handle) + 4; - uint32_t stringLength = ReadUInt(stringPtr, sc2_handle); - uint32_t string_flags = ReadUInt(stringPtr + 4,sc2_handle); - - // Some strings are actually stored else where in memory - uint32_t stringDataPtr = stringPtr+8; - if (string_flags & 4) { - stringDataPtr = ReadUInt(stringDataPtr,sc2_handle); - } - - char* name = ReadString(stringDataPtr, stringLength, sc2_handle); - if (strlen(name) != 0) { - fprintf(out, "%d,%s\n", id, name); - } - free(name); - } - } -} - -char* ReadString(uint32_t address, uint32_t length, HANDLE sc2_handle) { - char* result = (char*)malloc(length+1); - memset(result, 0, length+1); - ReadProcessMemory(sc2_handle, (LPCVOID)address, result, length, 0); - return result; -} - -uint32_t ReadUInt(uint32_t address, HANDLE sc2_handle) { - uint32_t result = 0; - ReadProcessMemory(sc2_handle, (LPCVOID)address, &result, sizeof(uint32_t), 0); - return result; -} - -uint32_t GetModuleBase(DWORD procId, char* modName) -{ - HANDLE snapshot; - MODULEENTRY32 modInfo; - snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, procId); - modInfo.dwSize = sizeof(MODULEENTRY32); - - if (Module32First(snapshot, &modInfo)) - { - // printf("mod %s\n", modInfo.szModule); - if (!strcmp(modInfo.szModule, modName)) - { - CloseHandle(snapshot); - return (uint32_t)modInfo.modBaseAddr; - } - - while (Module32Next(snapshot, &modInfo)) - { - // printf("mod %s\n", modInfo.szModule); - if (!strcmp(modInfo.szModule, modName)) - { - CloseHandle(snapshot); - return (uint32_t)modInfo.modBaseAddr; - } - } - } - CloseHandle(snapshot); - return 0; -} - -char* getSC2Info(HANDLE sc2_handle, uint32_t &base_address, uint32_t &build) { - char* sc2_exe_path = (char*)malloc(MAX_PROC_NAME_SIZE); - if(GetModuleFileNameEx(sc2_handle, 0, sc2_exe_path, MAX_PROC_NAME_SIZE)==0) { - printf("ERROR %d: Unable to retrieve executable file name", GetLastError()); - return NULL; - } - - DWORD infoSize = GetFileVersionInfoSize(sc2_exe_path, 0); - void *infoBuffer = malloc(infoSize); - VS_FIXEDFILEINFO *sc2VersionInfo; - - GetFileVersionInfo(sc2_exe_path, 0, infoSize, infoBuffer); - VerQueryValue(infoBuffer, "\\", (LPVOID*)&sc2VersionInfo, 0); - build = sc2VersionInfo->dwFileVersionLS & 0xffff; - free(infoBuffer); - - DWORD proc_id = GetProcessId(sc2_handle); - base_address = GetModuleBase(proc_id, "SC2.exe"); - return sc2_exe_path; -} - -HANDLE getSC2Handle() { - DWORD bytes_returned = 0; - DWORD proc_ids[MAX_PROC_LIST_SIZE]; // Should be large enough - if (EnumProcesses(proc_ids, MAX_PROC_LIST_SIZE, &bytes_returned)!=0) { - char buf[MAX_PROC_NAME_SIZE]; - DWORD proc_count = bytes_returned/sizeof(DWORD); - for (DWORD i=0; i < proc_count; i++) { - DWORD proc_id = proc_ids[i]; - HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, proc_id); - if (handle != NULL) { - if(GetModuleBaseName(handle, 0, buf, MAX_PROC_NAME_SIZE)!=0 && strcmp(buf, "SC2.exe")==0) { - return handle; - } else { - CloseHandle(handle); - } - } - } - } else { - printf("Error %d: Unable to enumerate processes.\n",GetLastError()); - } - return NULL; -} +/* Dump type ids for Units and Abils for SC2. + * + * Authors: Robert Nix (@mischanix), Graylin Kim (@GraylinKim) + * + * to compile with mingw-w64-x86_64-clang: + * clang -Wextra -Wall -Werror -O3 sc2dump.cpp -static -lversion -lpsapi + * + * Must be linked with the Microsoft Version.lib library. If compiling on 32 bit you may require the LAA option. + * + * Usage: sc2dump.exe + * Example: + * + * $ sc2dump.exe 24764/units.csv 24764/abils.csv + * Searching for a live SC2 process. + * + * Found SC2.exe + * Path: C:\Program Files (x86)\StarCraft II 2012 Beta\Versions\Base24764\SC2.exe + * Base Address: 590000 + * Build: 24764 + * + * Dumping Catalog@0x7903b54 + * Dumping CAbil@0x790b7f4 to 24764/24764_abils.csv + * Dumping CUnit@0x791f864 to 24764/24764_units.csv + * + * Done. + * + */ + +#include +#include +#include + +#include +#include +#include + +#define MODULE_NAME "SC2_x64.exe" +typedef uint64_t rptr_t; +#define PTR(x) (const void *)(x) + +HANDLE sc2_handle; + +char* ReadString(rptr_t address, uint32_t length) { + char* result = (char*)malloc(length+1); + memset(result, 0, length+1); + ReadProcessMemory(sc2_handle, PTR(address), result, length, 0); + return result; +} + +uint32_t ReadUInt(rptr_t address) { + uint32_t result = 0; + ReadProcessMemory(sc2_handle, PTR(address), &result, sizeof(uint32_t), 0); + return result; +} + +rptr_t ReadPtr(rptr_t address) { + rptr_t result = 0; + ReadProcessMemory(sc2_handle, PTR(address), &result, sizeof(rptr_t), 0); + return result; +} + +void DumpIds(rptr_t catalogRecordList, rptr_t stringNameOffset, FILE* out) { + rptr_t recordsList = ReadPtr(catalogRecordList + 0x48); + if (recordsList == 0) { + printf("-- Error dumping table@%p: no list of catalog records found.\n", PTR(catalogRecordList)); + return; + } + + uint32_t numEntries = ReadUInt(catalogRecordList + 0x38); + printf("%u %p\n", numEntries, PTR(recordsList)); + for (uint32_t id = 0; id < numEntries; id++) { + rptr_t recordPtr = ReadPtr(recordsList + sizeof(rptr_t) * id); + if (recordPtr != 0) { + rptr_t stringPtr = ReadPtr(ReadPtr(recordPtr + stringNameOffset) + 0x20) + 0x18; + uint32_t stringLength = ReadUInt(stringPtr) >> 2; + uint32_t stringFlags = ReadUInt(stringPtr + 4); + + // Strings are either inline or a pointer depending on length: + rptr_t stringDataPtr = stringPtr + 8; + if (stringFlags & 2) { + stringDataPtr = ReadPtr(stringDataPtr); + } + + char* name = ReadString(stringDataPtr, stringLength); + if (strlen(name) != 0) { + fprintf(out, "%d,%s\n", id, name); + } + free(name); + } + } +} + +rptr_t GetModuleBase(DWORD procId, const char* modName) +{ + HANDLE snapshot; + MODULEENTRY32 modInfo; + snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, procId); + modInfo.dwSize = sizeof(MODULEENTRY32); + + if (Module32First(snapshot, &modInfo)) + { + if (!strcmp(modInfo.szModule, modName)) + { + CloseHandle(snapshot); + return (rptr_t)(uintptr_t)modInfo.modBaseAddr; + } + + while (Module32Next(snapshot, &modInfo)) + { + if (!strcmp(modInfo.szModule, modName)) + { + CloseHandle(snapshot); + return (rptr_t)(uintptr_t)modInfo.modBaseAddr; + } + } + } + CloseHandle(snapshot); + return 0; +} + +char* getSC2Info(rptr_t &base_address, uint32_t &build) { + char* sc2_exe_path = (char*)malloc(512); + if(GetModuleFileNameEx(sc2_handle, 0, sc2_exe_path, 512)==0) { + printf("ERROR %lu: Unable to retrieve executable file name", GetLastError()); + return NULL; + } + + DWORD infoSize = GetFileVersionInfoSize(sc2_exe_path, 0); + void *infoBuffer = malloc(infoSize); + VS_FIXEDFILEINFO *sc2VersionInfo; + + GetFileVersionInfo(sc2_exe_path, 0, infoSize, infoBuffer); + VerQueryValue(infoBuffer, "\\", (LPVOID*)&sc2VersionInfo, 0); + build = sc2VersionInfo->dwFileVersionLS & 0xffff; + free(infoBuffer); + + DWORD proc_id = GetProcessId(sc2_handle); + base_address = GetModuleBase(proc_id, MODULE_NAME); + return sc2_exe_path; +} + +HANDLE getSC2Handle() { + DWORD bytes_returned = 0; + DWORD proc_ids[2048]; // Should be large enough + if (EnumProcesses(proc_ids, 2048, &bytes_returned)!=0) { + char buf[512]; + DWORD proc_count = bytes_returned/sizeof(DWORD); + for (DWORD i=0; i < proc_count; i++) { + DWORD proc_id = proc_ids[i]; + HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, proc_id); + if (handle != NULL) { + if(GetModuleBaseName(handle, 0, buf, 512)!=0 && strcmp(buf, MODULE_NAME)==0) { + return handle; + } else { + CloseHandle(handle); + } + } + } + } else { + printf("Error %lu: Unable to enumerate processes.\n", GetLastError()); + } + return NULL; +} + +int main(int argc, char *argv[]) { + if (argc < 3) { + printf("Both unit and ability output files are required (in that order).\n"); + ExitProcess(1); + } + + char *units_filename = argv[1]; + char *abils_filename = argv[2]; + + printf("Searching for a live SC2 process.\n"); + sc2_handle = getSC2Handle(); + if (sc2_handle == NULL) { + printf("Error: " MODULE_NAME " not found\n"); + ExitProcess(1); + } + + uint32_t build; + rptr_t base_address; + char* sc2_exe_path = getSC2Info(base_address, build); + if (sc2_exe_path == NULL) { + printf("Error: Unable to acquire base address and build information.\n"); + ExitProcess(1); + } else { + printf("\nFound " MODULE_NAME "\n"); + printf(" Path: %s\n", sc2_exe_path); + printf(" Base Address: %p\n", PTR(base_address)); + printf(" Build: %d\n", build); + } + + rptr_t gameCatalog = 0; + uint32_t cUnitIndex = 0; + uint32_t stringNameOffset = 0; + switch(build) { + case 37164: // LotV beta 2.5.5.37164 + gameCatalog = 0x3E7DC58u; + cUnitIndex = 0x280u; + stringNameOffset = 0x70u; + break; + default: + printf("Error: Missing offset values for build %d\n", build); + ExitProcess(1); + } + + rptr_t gameCatalogTable = ReadPtr(base_address + gameCatalog); + printf("\nDumping Catalog@0x%p\n", PTR(gameCatalogTable)); + + FILE* abils_file; + if (fopen_s(&abils_file, abils_filename, "w") == 0) { + rptr_t abilCatalogList = ReadPtr(gameCatalogTable + 0x8); + printf(" Dumping CAbil@0x%p to %s\n", PTR(abilCatalogList), abils_filename); + DumpIds(abilCatalogList, stringNameOffset, abils_file); + fclose(abils_file); + } else { + printf(" ERROR: Could not open %s for writing\n", abils_filename); + } + + FILE* units_file; + if (fopen_s(&units_file, units_filename, "w") == 0) { + rptr_t unitCatalogList = ReadPtr(gameCatalogTable + cUnitIndex); + printf(" Dumping CUnit@0x%p to %s\n", PTR(unitCatalogList), units_filename); + DumpIds(unitCatalogList, stringNameOffset, units_file); + fclose(units_file); + } else { + printf(" ERROR: Could not open %s for writing.\n", units_filename); + } + + printf("\nDone.\n"); + CloseHandle(sc2_handle); + return 0; +} From 7df594152e18c8208ea00e4f95484d2fb5b5dc91 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 14:56:51 -0400 Subject: [PATCH 068/116] fix usage message to have the right script name --- new_units.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_units.py b/new_units.py index c8134991..afe58f27 100644 --- a/new_units.py +++ b/new_units.py @@ -1,6 +1,6 @@ # Shows new data entries from the requested build files: # -# Usage: python new_data.py sc2reader/data/HotS/24764_units.csv sc2reader/data/HotS/24764_abilites.csv +# Usage: python new_units.py sc2reader/data/HotS/24764_units.csv sc2reader/data/HotS/24764_abilites.csv # # The output from this can be used to update the unit_lookup.csv and ability_lookup.csv files. Maybe the # script can be fixed to append these lines automatically... From cf67e1d80b69a1634be34629bba04222bd37ae17 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 14:58:59 -0400 Subject: [PATCH 069/116] add new abilities and units for 3.4.0 (44401) --- sc2reader/data/LotV/44401_abilities.csv | 338 ++++++++++++++++++++++++ sc2reader/data/LotV/44401_units.csv | 262 ++++++++++++++++++ sc2reader/data/__init__.py | 2 +- sc2reader/data/ability_lookup.csv | 45 ++++ 4 files changed, 646 insertions(+), 1 deletion(-) create mode 100755 sc2reader/data/LotV/44401_abilities.csv create mode 100755 sc2reader/data/LotV/44401_units.csv diff --git a/sc2reader/data/LotV/44401_abilities.csv b/sc2reader/data/LotV/44401_abilities.csv new file mode 100755 index 00000000..9f57e17e --- /dev/null +++ b/sc2reader/data/LotV/44401_abilities.csv @@ -0,0 +1,338 @@ +0,CAbil +1,CAbilEffect +2,CAbilQueueable +3,CAbilProgress +4,CAbilRedirect +5,CAbilArmMagazine +6,CAbilAttack +7,CAbilAugment +8,CAbilBattery +9,CAbilBeacon +10,CAbilBehavior +11,CAbilBuild +12,CAbilBuildable +13,CAbilEffectInstant +14,CAbilEffectTarget +15,CAbilHarvest +16,CAbilInteract +17,CAbilInventory +18,CAbilLearn +19,CAbilMerge +20,CAbilMergeable +21,CAbilMorph +22,CAbilMorphPlacement +23,CAbilMove +24,CAbilPawn +25,CAbilQueue +26,CAbilRally +27,CAbilResearch +28,CAbilRevive +29,CAbilSpecialize +30,CAbilStop +31,CAbilTrain +32,CAbilTransport +33,CAbilWarpable +34,CAbilWarpTrain +35,Taunt +36,stop +38,move +45,attack +58,SalvageShared +60,GhostHoldFire +61,GhostWeaponsFree +63,Explode +65,FungalGrowth +66,GuardianShield +67,MULERepair +70,Feedback +72,PlacePointDefenseDrone +73,HallucinationArchon +74,HallucinationColossus +75,HallucinationHighTemplar +76,HallucinationImmortal +77,HallucinationPhoenix +78,HallucinationProbe +79,HallucinationStalker +80,HallucinationVoidRay +81,HallucinationWarpPrism +82,HallucinationZealot +83,MULEGather +84,SeekerMissile +85,CalldownMULE +86,GravitonBeam +90,SpawnChangeling +97,Rally +98,ProgressRally +99,RallyCommand +100,RallyNexus +101,RallyHatchery +104,InfestedTerrans +105,NeuralParasite +106,SpawnLarva +107,StimpackMarauder +108,SupplyDrop +111,TimeWarp +114,SCVHarvest +115,ProbeHarvest +117,que1 +118,que5 +119,que5CancelToSelection +121,que5Addon +122,BuildInProgress +123,Repair +126,Stimpack +127,GhostCloak +129,MedivacHeal +130,SiegeMode +131,Unsiege +132,BansheeCloak +133,MedivacTransport +134,ScannerSweep +135,Yamato +136,AssaultMode +137,FighterMode +138,BunkerTransport +139,CommandCenterTransport +140,CommandCenterLiftOff +141,CommandCenterLand +143,BarracksLiftOff +145,FactoryLiftOff +147,StarportLiftOff +148,FactoryLand +149,StarportLand +151,BarracksLand +152,SupplyDepotLower +153,SupplyDepotRaise +166,WarpPrismTransport +171,PsiStorm +172,HangarQueue5 +179,DroneHarvest +181,UpgradeToLair +182,UpgradeToHive +183,UpgradeToGreaterSpire +189,MorphToBroodLord +190,BurrowBanelingDown +191,BurrowBanelingUp +192,BurrowDroneDown +193,BurrowDroneUp +194,BurrowHydraliskDown +195,BurrowHydraliskUp +196,BurrowRoachDown +197,BurrowRoachUp +198,BurrowZerglingDown +199,BurrowZerglingUp +200,BurrowInfestorTerranDown +201,BurrowInfestorTerranUp +202,RedstoneLavaCritterBurrow +203,RedstoneLavaCritterInjuredBurrow +204,RedstoneLavaCritterUnburrow +205,RedstoneLavaCritterInjuredUnburrow +206,OverlordTransport +210,BurrowQueenDown +211,BurrowQueenUp +212,NydusCanalTransport +213,Blink +214,BurrowInfestorDown +215,BurrowInfestorUp +216,MorphToOverseer +217,UpgradeToPlanetaryFortress +220,BurrowUltraliskDown +221,BurrowUltraliskUp +222,UpgradeToOrbital +223,UpgradeToWarpGate +224,MorphBackToGateway +225,OrbitalLiftOff +226,OrbitalCommandLand +227,ForceField +228,PhasingMode +229,TransportMode +233,TacNukeStrike +236,EMP +240,Transfusion +249,AttackRedirect +250,StimpackRedirect +251,StimpackMarauderRedirect +253,StopRedirect +254,GenerateCreep +256,SpineCrawlerUproot +257,SporeCrawlerUproot +258,SpineCrawlerRoot +259,SporeCrawlerRoot +261,BuildAutoTurret +262,ArchonWarp +265,Charge +269,Contaminate +272,que5Passive +273,que5PassiveCancelToSelection +301,DigesterCreepSpray +305,MorphToMothership +330,XelNagaHealingShrine +339,MothershipCoreMassRecall +341,MorphToHellion +351,MorphToHellionTank +359,MorphToSwarmHostBurrowedMP +360,MorphToSwarmHostMP +362,attackProtossBuilding +364,stopProtossBuilding +365,BlindingCloud +367,Yoink +370,ViperConsumeStructure +373,TestZerg +374,VolatileBurstBuilding +381,WidowMineBurrow +382,WidowMineUnburrow +383,WidowMineAttack +384,TornadoMissile +388,BurrowLurkerMPDown +389,BurrowLurkerMPUp +390,UpgradeToLurkerDenMP +391,HallucinationOracle +392,MedivacSpeedBoost +393,ExtendingBridgeNEWide8Out +394,ExtendingBridgeNEWide8 +395,ExtendingBridgeNWWide8Out +396,ExtendingBridgeNWWide8 +397,ExtendingBridgeNEWide10Out +398,ExtendingBridgeNEWide10 +399,ExtendingBridgeNWWide10Out +400,ExtendingBridgeNWWide10 +401,ExtendingBridgeNEWide12Out +402,ExtendingBridgeNEWide12 +403,ExtendingBridgeNWWide12Out +404,ExtendingBridgeNWWide12 +406,CritterFlee +407,OracleRevelation +415,MothershipCorePurifyNexus +416,XelNaga_Caverns_DoorE +417,XelNaga_Caverns_DoorEOpened +418,XelNaga_Caverns_DoorN +419,XelNaga_Caverns_DoorNE +420,XelNaga_Caverns_DoorNEOpened +421,XelNaga_Caverns_DoorNOpened +422,XelNaga_Caverns_DoorNW +423,XelNaga_Caverns_DoorNWOpened +424,XelNaga_Caverns_DoorS +425,XelNaga_Caverns_DoorSE +426,XelNaga_Caverns_DoorSEOpened +427,XelNaga_Caverns_DoorSOpened +428,XelNaga_Caverns_DoorSW +429,XelNaga_Caverns_DoorSWOpened +430,XelNaga_Caverns_DoorW +431,XelNaga_Caverns_DoorWOpened +432,XelNaga_Caverns_Floating_BridgeNE8Out +433,XelNaga_Caverns_Floating_BridgeNE8 +434,XelNaga_Caverns_Floating_BridgeNW8Out +435,XelNaga_Caverns_Floating_BridgeNW8 +436,XelNaga_Caverns_Floating_BridgeNE10Out +437,XelNaga_Caverns_Floating_BridgeNE10 +438,XelNaga_Caverns_Floating_BridgeNW10Out +439,XelNaga_Caverns_Floating_BridgeNW10 +440,XelNaga_Caverns_Floating_BridgeNE12Out +441,XelNaga_Caverns_Floating_BridgeNE12 +442,XelNaga_Caverns_Floating_BridgeNW12Out +443,XelNaga_Caverns_Floating_BridgeNW12 +444,XelNaga_Caverns_Floating_BridgeH8Out +445,XelNaga_Caverns_Floating_BridgeH8 +446,XelNaga_Caverns_Floating_BridgeV8Out +447,XelNaga_Caverns_Floating_BridgeV8 +448,XelNaga_Caverns_Floating_BridgeH10Out +449,XelNaga_Caverns_Floating_BridgeH10 +450,XelNaga_Caverns_Floating_BridgeV10Out +451,XelNaga_Caverns_Floating_BridgeV10 +452,XelNaga_Caverns_Floating_BridgeH12Out +453,XelNaga_Caverns_Floating_BridgeH12 +454,XelNaga_Caverns_Floating_BridgeV12Out +455,XelNaga_Caverns_Floating_BridgeV12 +456,TemporalField +480,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +481,SnowRefinery_Terran_ExtendingBridgeNEShort8 +482,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +483,SnowRefinery_Terran_ExtendingBridgeNWShort8 +497,CausticSpray +499,ImmortalOverload +500,MorphToRavager +501,MorphToLurker +503,ReleaseInterceptors +504,RavagerCorrosiveBile +505,BurrowRavagerDown +506,BurrowRavagerUp +508,PurificationNovaTargeted +510,LockOn +512,LockOnCancel +514,Hyperjump +516,ThorAPMode +517,ThorNormalMode +519,MothershipMassRecall +520,NydusWormTransport +521,OracleWeapon +527,LocustMPFlyingSwoop +528,HallucinationDisruptor +529,HallucinationAdept +530,VoidRaySwarmDamageBoost +531,SeekerDummyChannel +532,AiurLightBridgeNE8Out +533,AiurLightBridgeNE8 +534,AiurLightBridgeNE10Out +535,AiurLightBridgeNE10 +536,AiurLightBridgeNE12Out +537,AiurLightBridgeNE12 +538,AiurLightBridgeNW8Out +539,AiurLightBridgeNW8 +540,AiurLightBridgeNW10Out +541,AiurLightBridgeNW10 +542,AiurLightBridgeNW12Out +543,AiurLightBridgeNW12 +556,ShakurasLightBridgeNE8Out +557,ShakurasLightBridgeNE8 +558,ShakurasLightBridgeNE10Out +559,ShakurasLightBridgeNE10 +560,ShakurasLightBridgeNE12Out +561,ShakurasLightBridgeNE12 +562,ShakurasLightBridgeNW8Out +563,ShakurasLightBridgeNW8 +564,ShakurasLightBridgeNW10Out +565,ShakurasLightBridgeNW10 +566,ShakurasLightBridgeNW12Out +567,ShakurasLightBridgeNW12 +568,VoidMPImmortalReviveRebuild +570,ArbiterMPStasisField +571,ArbiterMPRecall +572,CorsairMPDisruptionWeb +573,MorphToGuardianMP +574,MorphToDevourerMP +575,DefilerMPConsume +576,DefilerMPDarkSwarm +577,DefilerMPPlague +578,DefilerMPBurrow +579,DefilerMPUnburrow +580,QueenMPEnsnare +581,QueenMPSpawnBroodlings +582,QueenMPInfestCommandCenter +590,ParasiticBomb +591,AdeptPhaseShift +594,LurkerHoldFire +595,LurkerRemoveHoldFire +598,LiberatorAGTarget +599,LiberatorAATarget +601,AiurLightBridgeAbandonedNE8Out +602,AiurLightBridgeAbandonedNE8 +603,AiurLightBridgeAbandonedNE10Out +604,AiurLightBridgeAbandonedNE10 +605,AiurLightBridgeAbandonedNE12Out +606,AiurLightBridgeAbandonedNE12 +607,AiurLightBridgeAbandonedNW8Out +608,AiurLightBridgeAbandonedNW8 +609,AiurLightBridgeAbandonedNW10Out +610,AiurLightBridgeAbandonedNW10 +611,AiurLightBridgeAbandonedNW12Out +612,AiurLightBridgeAbandonedNW12 +613,KD8Charge +616,AdeptPhaseShiftCancel +617,AdeptShadePhaseShiftCancel +618,SlaynElementalGrab +623,SpawnLocustsTargeted +625,MorphToTransportOverlord +628,ChannelSnipe +650,PowerSourceFast +1795,WidowMineArmed +2280,IsTransportOverlord diff --git a/sc2reader/data/LotV/44401_units.csv b/sc2reader/data/LotV/44401_units.csv new file mode 100755 index 00000000..90e47402 --- /dev/null +++ b/sc2reader/data/LotV/44401_units.csv @@ -0,0 +1,262 @@ +1,System_Snapshot_Dummy +7,DESTRUCTIBLE +8,ITEM +9,POWERUP +10,SMCAMERA +11,SMCHARACTER +12,STARMAP +13,SMSET +14,MISSILE +15,MISSILE_INVULNERABLE +16,MISSILE_HALFLIFE +17,PLACEHOLDER +18,PLACEHOLDER_AIR +19,PATHINGBLOCKER +20,BEACON +21,Colossus +24,RoboticsBay +24,RoboticsBay +25,RoboticsFacility +25,RoboticsFacility +26,Marine +27,Zergling +28,Zealot +29,VikingFighter +30,Corruptor +31,Immortal +44,TwilightCouncil +44,TwilightCouncil +44,TwilightCouncil +68,Baneling +69,BarracksTechLab +69,BarracksTechLab +69,FactoryTechLab +69,FactoryTechLab +69,TechLab +69,TechLab +96,Baneling +99,BanelingNest +99,BanelingNest +100,Marauder +101,Roach +102,Stalker +118,Lair +118,Lair +118,Lair +122,Hive +122,Hive +122,Hive +124,Armory +124,Barracks +124,Bunker +124,CommandCenter +124,EngineeringBay +124,Factory +124,FusionCore +124,GhostAcademy +124,MissileTurret +124,Refinery +124,SensorTower +124,Starport +124,SupplyDepot +135,Mothership +135,Mothership +135,Mothership +138,FleetBeacon +138,FleetBeacon +138,FleetBeacon +139,MothershipCore +139,MothershipCore +140,VoidRay +142,BarracksReactor +142,BarracksTechLab +144,FactoryReactor +144,FactoryTechLab +146,StarportReactor +146,StarportTechLab +150,SCV +154,Ghost +154,Marauder +154,Marine +154,Reaper +155,Cyclone +155,Hellion +155,HellionTank +155,SiegeTank +155,Thor +155,WidowMine +156,Banshee +156,Battlecruiser +156,Liberator +156,Medivac +156,Raven +156,VikingFighter +159,Nuke +165,Assimilator +165,CyberneticsCore +165,DarkShrine +165,FleetBeacon +165,Forge +165,Gateway +165,Nexus +165,PhotonCannon +165,Pylon +165,RoboticsBay +165,RoboticsFacility +165,Stargate +165,TemplarArchive +165,TwilightCouncil +167,Adept +167,DarkTemplar +167,HighTemplar +167,Sentry +167,Stalker +167,Zealot +168,Carrier +168,Oracle +168,Phoenix +168,Tempest +168,VoidRay +169,Colossus +169,Disruptor +169,Immortal +169,Observer +169,WarpPrism +170,Probe +174,Interceptor +174,Raven +178,BanelingNest +178,EvolutionChamber +178,Extractor +178,Hatchery +178,HydraliskDen +178,InfestationPit +178,NydusNetwork +178,RoachWarren +178,SpawningPool +178,SpineCrawler +178,Spire +178,SporeCrawler +178,UltraliskCavern +183,Overseer +188,Corruptor +188,Drone +188,Hydralisk +188,Infestor +188,Mutalisk +188,Overlord +188,Roach +188,SwarmHostMP +188,Ultralisk +188,Viper +188,Zergling +195,CommandCenter +195,CommandCenter +198,SCV +209,Adept +209,DarkTemplar +209,HighTemplar +209,Sentry +209,Stalker +209,Zealot +216,EngineeringBay +216,EngineeringBay +216,EngineeringBay +222,Barracks +222,Barracks +222,Barracks +229,SupplyDepot +229,SupplyDepot +238,Queen +253,GhostAcademy +253,GhostAcademy +255,CreepTumorQueen +260,CreepTumor +263,NydusCanal +268,Armory +268,Armory +268,Armory +285,MissileTurret +288,Banshee +289,Mutalisk +299,SiegeTank +299,SiegeTankSieged +308,MothershipCore +331,Factory +331,Factory +331,FactoryFlying +331,FactoryFlying +355,Starport +355,Starport +373,FusionCore +373,FusionCore +373,FusionCore +429,Hydralisk +446,Battlecruiser +532,Reaper +533,Drone +534,Probe +543,Ghost +544,Infestor +545,HighTemplar +557,Nuke +570,Thor +583,Hellion +586,OracleStasisTrap +605,Ultralisk +606,Phoenix +613,DarkTemplar +632,Nexus +632,Nexus +644,CyberneticsCore +644,CyberneticsCore +654,Gateway +654,Gateway +669,TemplarArchive +669,TemplarArchive +673,DarkShrine +673,DarkShrine +682,Forge +682,Forge +696,Stargate +696,Stargate +714,PhotonCannon +717,BroodLord +785,Sentry +796,Observer +846,Carrier +855,Interceptor +855,Interceptor +855,Interceptor +862,Tempest +878,SporeCrawler +906,Hatchery +906,Hatchery +912,SpawningPool +912,SpawningPool +912,SpawningPool +943,EvolutionChamber +943,EvolutionChamber +963,HydraliskDen +963,HydraliskDen +972,Spire +972,Spire +1000,UltraliskCavern +1000,UltraliskCavern +1006,InfestationPit +1006,InfestationPit +1006,InfestationPit +1015,NydusNetwork +1015,NydusNetwork +1033,RoachWarren +1033,RoachWarren +1033,RoachWarren +1058,GreaterSpire +1058,GreaterSpire +1110,LurkerDenMP +1110,LurkerDenMP +1248,Archon +1737,WidowMine +1755,SwarmHostMP +1818,LurkerMP +1819,Disruptor diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index a17bac10..5d2071c9 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -406,7 +406,7 @@ def load_build(expansion, version): # Load LotV Data lotv_builds = dict() -for version in ('base', ): +for version in ('base', '44401'): lotv_builds[version] = load_build('LotV', version) datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds, 'LotV': lotv_builds} diff --git a/sc2reader/data/ability_lookup.csv b/sc2reader/data/ability_lookup.csv index bec777b2..96e715c0 100755 --- a/sc2reader/data/ability_lookup.csv +++ b/sc2reader/data/ability_lookup.csv @@ -521,3 +521,48 @@ BypassArmorDroneCU,BypassArmorDroneCU ChannelSnipe,ChannelSnipe LockOnAir,LockOnAir PurificationNovaTargetted,PurificationNovaTargetted +SnowRefinery_Terran_ExtendingBridgeNEShort8Out,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +SnowRefinery_Terran_ExtendingBridgeNEShort8,SnowRefinery_Terran_ExtendingBridgeNEShort8 +SnowRefinery_Terran_ExtendingBridgeNWShort8Out,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +SnowRefinery_Terran_ExtendingBridgeNWShort8,SnowRefinery_Terran_ExtendingBridgeNWShort8 +PurificationNovaTargeted,PurificationNovaTargeted +AiurLightBridgeNE8Out,AiurLightBridgeNE8Out +AiurLightBridgeNE8,AiurLightBridgeNE8 +AiurLightBridgeNE10Out,AiurLightBridgeNE10Out +AiurLightBridgeNE10,AiurLightBridgeNE10 +AiurLightBridgeNE12Out,AiurLightBridgeNE12Out +AiurLightBridgeNE12,AiurLightBridgeNE12 +AiurLightBridgeNW8Out,AiurLightBridgeNW8Out +AiurLightBridgeNW8,AiurLightBridgeNW8 +AiurLightBridgeNW10Out,AiurLightBridgeNW10Out +AiurLightBridgeNW10,AiurLightBridgeNW10 +AiurLightBridgeNW12Out,AiurLightBridgeNW12Out +AiurLightBridgeNW12,AiurLightBridgeNW12 +ShakurasLightBridgeNE8Out,ShakurasLightBridgeNE8Out +ShakurasLightBridgeNE8,ShakurasLightBridgeNE8 +ShakurasLightBridgeNE10Out,ShakurasLightBridgeNE10Out +ShakurasLightBridgeNE10,ShakurasLightBridgeNE10 +ShakurasLightBridgeNE12Out,ShakurasLightBridgeNE12Out +ShakurasLightBridgeNE12,ShakurasLightBridgeNE12 +ShakurasLightBridgeNW8Out,ShakurasLightBridgeNW8Out +ShakurasLightBridgeNW8,ShakurasLightBridgeNW8 +ShakurasLightBridgeNW10Out,ShakurasLightBridgeNW10Out +ShakurasLightBridgeNW10,ShakurasLightBridgeNW10 +ShakurasLightBridgeNW12Out,ShakurasLightBridgeNW12Out +ShakurasLightBridgeNW12,ShakurasLightBridgeNW12 +AiurLightBridgeAbandonedNE8Out,AiurLightBridgeAbandonedNE8Out +AiurLightBridgeAbandonedNE8,AiurLightBridgeAbandonedNE8 +AiurLightBridgeAbandonedNE10Out,AiurLightBridgeAbandonedNE10Out +AiurLightBridgeAbandonedNE10,AiurLightBridgeAbandonedNE10 +AiurLightBridgeAbandonedNE12Out,AiurLightBridgeAbandonedNE12Out +AiurLightBridgeAbandonedNE12,AiurLightBridgeAbandonedNE12 +AiurLightBridgeAbandonedNW8Out,AiurLightBridgeAbandonedNW8Out +AiurLightBridgeAbandonedNW8,AiurLightBridgeAbandonedNW8 +AiurLightBridgeAbandonedNW10Out,AiurLightBridgeAbandonedNW10Out +AiurLightBridgeAbandonedNW10,AiurLightBridgeAbandonedNW10 +AiurLightBridgeAbandonedNW12Out,AiurLightBridgeAbandonedNW12Out +AiurLightBridgeAbandonedNW12,AiurLightBridgeAbandonedNW12 +SlaynElementalGrab,SlaynElementalGrab +PowerSourceFast,PowerSourceFast +WidowMineArmed,WidowMineArmed +IsTransportOverlord,IsTransportOverlord From 82fff8c93801ea60221a11d477f0690eba8d1f9e Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 14:59:21 -0400 Subject: [PATCH 070/116] add test for 3.4.0. it passed before we did anything for it, and it still passes. --- test_replays/3.4.0/issueYY.SC2Replay | Bin 0 -> 96395 bytes test_replays/test_all.py | 4 ++++ 2 files changed, 4 insertions(+) create mode 100755 test_replays/3.4.0/issueYY.SC2Replay diff --git a/test_replays/3.4.0/issueYY.SC2Replay b/test_replays/3.4.0/issueYY.SC2Replay new file mode 100755 index 0000000000000000000000000000000000000000..2b9ce2dca91a136caebbed85ba4cc1d6c528c137 GIT binary patch literal 96395 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 Date: Wed, 13 Jul 2016 15:09:43 -0400 Subject: [PATCH 071/116] register datapack so that the new ability info is actually used --- sc2reader/resources.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sc2reader/resources.py b/sc2reader/resources.py index aa00a880..17dea9e2 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -593,6 +593,7 @@ def register_default_datapacks(self): self.register_datapack(datapacks['HotS']['24764'], lambda r: r.expansion == 'HotS' and 24764 <= r.build < 38215) self.register_datapack(datapacks['HotS']['38215'], lambda r: r.expansion == 'HotS' and 38215 <= r.build) self.register_datapack(datapacks['LotV']['base'], lambda r: r.expansion == 'LotV' and 34784 <= r.build) + self.register_datapack(datapacks['LotV']['44401'], lambda r: r.expansion == 'LotV' and 44401 <= r.build) # Internal Methods def _get_reader(self, data_file): From 2d36f82ce7b8d4ba56270bb71b44480742fdf634 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 16:11:52 -0400 Subject: [PATCH 072/116] 44401 units, take 2 --- sc2reader/data/LotV/44401_units.csv | 1062 ++++++++++++++++++++------- 1 file changed, 815 insertions(+), 247 deletions(-) diff --git a/sc2reader/data/LotV/44401_units.csv b/sc2reader/data/LotV/44401_units.csv index 90e47402..ce3f67b3 100755 --- a/sc2reader/data/LotV/44401_units.csv +++ b/sc2reader/data/LotV/44401_units.csv @@ -13,250 +13,818 @@ 18,PLACEHOLDER_AIR 19,PATHINGBLOCKER 20,BEACON -21,Colossus -24,RoboticsBay -24,RoboticsBay -25,RoboticsFacility -25,RoboticsFacility -26,Marine -27,Zergling -28,Zealot -29,VikingFighter -30,Corruptor -31,Immortal -44,TwilightCouncil -44,TwilightCouncil -44,TwilightCouncil -68,Baneling -69,BarracksTechLab -69,BarracksTechLab -69,FactoryTechLab -69,FactoryTechLab -69,TechLab -69,TechLab -96,Baneling -99,BanelingNest -99,BanelingNest -100,Marauder -101,Roach -102,Stalker -118,Lair -118,Lair -118,Lair -122,Hive -122,Hive -122,Hive -124,Armory -124,Barracks -124,Bunker -124,CommandCenter -124,EngineeringBay -124,Factory -124,FusionCore -124,GhostAcademy -124,MissileTurret -124,Refinery -124,SensorTower -124,Starport -124,SupplyDepot -135,Mothership -135,Mothership -135,Mothership -138,FleetBeacon -138,FleetBeacon -138,FleetBeacon -139,MothershipCore -139,MothershipCore -140,VoidRay -142,BarracksReactor -142,BarracksTechLab -144,FactoryReactor -144,FactoryTechLab -146,StarportReactor -146,StarportTechLab -150,SCV -154,Ghost -154,Marauder -154,Marine -154,Reaper -155,Cyclone -155,Hellion -155,HellionTank -155,SiegeTank -155,Thor -155,WidowMine -156,Banshee -156,Battlecruiser -156,Liberator -156,Medivac -156,Raven -156,VikingFighter -159,Nuke -165,Assimilator -165,CyberneticsCore -165,DarkShrine -165,FleetBeacon -165,Forge -165,Gateway -165,Nexus -165,PhotonCannon -165,Pylon -165,RoboticsBay -165,RoboticsFacility -165,Stargate -165,TemplarArchive -165,TwilightCouncil -167,Adept -167,DarkTemplar -167,HighTemplar -167,Sentry -167,Stalker -167,Zealot -168,Carrier -168,Oracle -168,Phoenix -168,Tempest -168,VoidRay -169,Colossus -169,Disruptor -169,Immortal -169,Observer -169,WarpPrism -170,Probe -174,Interceptor -174,Raven -178,BanelingNest -178,EvolutionChamber -178,Extractor -178,Hatchery -178,HydraliskDen -178,InfestationPit -178,NydusNetwork -178,RoachWarren -178,SpawningPool -178,SpineCrawler -178,Spire -178,SporeCrawler -178,UltraliskCavern -183,Overseer -188,Corruptor -188,Drone -188,Hydralisk -188,Infestor -188,Mutalisk -188,Overlord -188,Roach -188,SwarmHostMP -188,Ultralisk -188,Viper -188,Zergling -195,CommandCenter -195,CommandCenter -198,SCV -209,Adept -209,DarkTemplar -209,HighTemplar -209,Sentry -209,Stalker -209,Zealot -216,EngineeringBay -216,EngineeringBay -216,EngineeringBay -222,Barracks -222,Barracks -222,Barracks -229,SupplyDepot -229,SupplyDepot -238,Queen -253,GhostAcademy -253,GhostAcademy -255,CreepTumorQueen -260,CreepTumor -263,NydusCanal -268,Armory -268,Armory -268,Armory -285,MissileTurret -288,Banshee -289,Mutalisk -299,SiegeTank -299,SiegeTankSieged -308,MothershipCore -331,Factory -331,Factory -331,FactoryFlying -331,FactoryFlying -355,Starport -355,Starport -373,FusionCore -373,FusionCore -373,FusionCore -429,Hydralisk -446,Battlecruiser -532,Reaper -533,Drone -534,Probe -543,Ghost -544,Infestor -545,HighTemplar -557,Nuke -570,Thor -583,Hellion -586,OracleStasisTrap -605,Ultralisk -606,Phoenix -613,DarkTemplar -632,Nexus -632,Nexus -644,CyberneticsCore -644,CyberneticsCore -654,Gateway -654,Gateway -669,TemplarArchive -669,TemplarArchive -673,DarkShrine -673,DarkShrine -682,Forge -682,Forge -696,Stargate -696,Stargate -714,PhotonCannon -717,BroodLord -785,Sentry -796,Observer -846,Carrier -855,Interceptor -855,Interceptor -855,Interceptor -862,Tempest -878,SporeCrawler -906,Hatchery -906,Hatchery -912,SpawningPool -912,SpawningPool -912,SpawningPool -943,EvolutionChamber -943,EvolutionChamber -963,HydraliskDen -963,HydraliskDen -972,Spire -972,Spire -1000,UltraliskCavern -1000,UltraliskCavern -1006,InfestationPit -1006,InfestationPit -1006,InfestationPit -1015,NydusNetwork -1015,NydusNetwork -1033,RoachWarren -1033,RoachWarren -1033,RoachWarren -1058,GreaterSpire -1058,GreaterSpire -1110,LurkerDenMP -1110,LurkerDenMP -1248,Archon -1737,WidowMine -1755,SwarmHostMP -1818,LurkerMP -1819,Disruptor +21,Ball +22,StereoscopicOptionsUnit +23,Colossus +24,TechLab +25,Reactor +27,InfestorTerran +28,BanelingCocoon +29,Baneling +30,Mothership +31,PointDefenseDrone +32,Changeling +33,ChangelingZealot +34,ChangelingMarineShield +35,ChangelingMarine +36,ChangelingZerglingWings +37,ChangelingZergling +39,CommandCenter +40,SupplyDepot +41,Refinery +42,Barracks +43,EngineeringBay +44,MissileTurret +45,Bunker +46,SensorTower +47,GhostAcademy +48,Factory +49,Starport +51,Armory +52,FusionCore +53,AutoTurret +54,SiegeTankSieged +55,SiegeTank +56,VikingAssault +57,VikingFighter +58,CommandCenterFlying +59,BarracksTechLab +60,BarracksReactor +61,FactoryTechLab +62,FactoryReactor +63,StarportTechLab +64,StarportReactor +65,FactoryFlying +66,StarportFlying +67,SCV +68,BarracksFlying +69,SupplyDepotLowered +70,Marine +71,Reaper +72,Ghost +73,Marauder +74,Thor +75,Hellion +76,Medivac +77,Banshee +78,Raven +79,Battlecruiser +80,Nuke +81,Nexus +82,Pylon +83,Assimilator +84,Gateway +85,Forge +86,FleetBeacon +87,TwilightCouncil +88,PhotonCannon +89,Stargate +90,TemplarArchive +91,DarkShrine +92,RoboticsBay +93,RoboticsFacility +94,CyberneticsCore +95,Zealot +96,Stalker +97,HighTemplar +98,DarkTemplar +99,Sentry +100,Phoenix +101,Carrier +102,VoidRay +103,WarpPrism +104,Observer +105,Immortal +106,Probe +107,Interceptor +108,Hatchery +109,CreepTumor +110,Extractor +111,SpawningPool +112,EvolutionChamber +113,HydraliskDen +114,Spire +115,UltraliskCavern +116,InfestationPit +117,NydusNetwork +118,BanelingNest +119,RoachWarren +120,SpineCrawler +121,SporeCrawler +122,Lair +123,Hive +124,GreaterSpire +125,Egg +126,Drone +127,Zergling +128,Overlord +129,Hydralisk +130,Mutalisk +131,Ultralisk +132,Roach +133,Infestor +134,Corruptor +135,BroodLordCocoon +136,BroodLord +137,BanelingBurrowed +138,DroneBurrowed +139,HydraliskBurrowed +140,RoachBurrowed +141,ZerglingBurrowed +142,InfestorTerranBurrowed +143,RedstoneLavaCritterBurrowed +144,RedstoneLavaCritterInjuredBurrowed +145,RedstoneLavaCritter +146,RedstoneLavaCritterInjured +147,QueenBurrowed +148,Queen +149,InfestorBurrowed +150,OverlordCocoon +151,Overseer +152,PlanetaryFortress +153,UltraliskBurrowed +154,OrbitalCommand +155,WarpGate +156,OrbitalCommandFlying +157,ForceField +158,WarpPrismPhasing +159,CreepTumorBurrowed +160,CreepTumorQueen +161,SpineCrawlerUprooted +162,SporeCrawlerUprooted +163,Archon +164,NydusCanal +165,BroodlingEscort +166,GhostAlternate +167,GhostNova +168,RichMineralField +169,RichMineralField750 +171,XelNagaTower +175,InfestedTerransEgg +176,Larva +177,ReaperPlaceholder +178,MarineACGluescreenDummy +179,FirebatACGluescreenDummy +180,MedicACGluescreenDummy +181,MarauderACGluescreenDummy +182,VultureACGluescreenDummy +183,SiegeTankACGluescreenDummy +184,VikingACGluescreenDummy +185,BansheeACGluescreenDummy +186,BattlecruiserACGluescreenDummy +187,OrbitalCommandACGluescreenDummy +188,BunkerACGluescreenDummy +189,MissileTurretACGluescreenDummy +190,HellbatACGluescreenDummy +191,GoliathACGluescreenDummy +192,CycloneACGluescreenDummy +193,WraithACGluescreenDummy +194,ScienceVesselACGluescreenDummy +195,HerculesACGluescreenDummy +196,ThorACGluescreenDummy +197,PerditionTurretACGluescreenDummy +198,FlamingBettyACGluescreenDummy +199,DevastationTurretACGluescreenDummy +200,BlasterBillyACGluescreenDummy +201,SpinningDizzyACGluescreenDummy +202,ZerglingKerriganACGluescreenDummy +203,RaptorACGluescreenDummy +204,QueenCoopACGluescreenDummy +205,HydraliskACGluescreenDummy +206,HydraliskLurkerACGluescreenDummy +207,MutaliskBroodlordACGluescreenDummy +208,BroodLordACGluescreenDummy +209,UltraliskACGluescreenDummy +210,TorrasqueACGluescreenDummy +211,OverseerACGluescreenDummy +212,LurkerACGluescreenDummy +213,SpineCrawlerACGluescreenDummy +214,SporeCrawlerACGluescreenDummy +215,NydusNetworkACGluescreenDummy +216,OmegaNetworkACGluescreenDummy +217,ZerglingZagaraACGluescreenDummy +218,SwarmlingACGluescreenDummy +219,BanelingACGluescreenDummy +220,SplitterlingACGluescreenDummy +221,AberrationACGluescreenDummy +222,ScourgeACGluescreenDummy +223,CorruptorACGluescreenDummy +224,BileLauncherACGluescreenDummy +225,SwarmQueenACGluescreenDummy +226,RoachACGluescreenDummy +227,RoachVileACGluescreenDummy +228,RavagerACGluescreenDummy +229,SwarmHostACGluescreenDummy +230,MutaliskACGluescreenDummy +231,GuardianACGluescreenDummy +232,DevourerACGluescreenDummy +233,ViperACGluescreenDummy +234,BrutaliskACGluescreenDummy +235,LeviathanACGluescreenDummy +236,ZealotACGluescreenDummy +237,ZealotAiurACGluescreenDummy +238,DragoonACGluescreenDummy +239,HighTemplarACGluescreenDummy +240,ArchonACGluescreenDummy +241,ImmortalACGluescreenDummy +242,ObserverACGluescreenDummy +243,PhoenixAiurACGluescreenDummy +244,ReaverACGluescreenDummy +245,TempestACGluescreenDummy +246,PhotonCannonACGluescreenDummy +247,ZealotVorazunACGluescreenDummy +248,ZealotShakurasACGluescreenDummy +249,StalkerShakurasACGluescreenDummy +250,DarkTemplarShakurasACGluescreenDummy +251,CorsairACGluescreenDummy +252,VoidRayACGluescreenDummy +253,VoidRayShakurasACGluescreenDummy +254,OracleACGluescreenDummy +255,DarkArchonACGluescreenDummy +256,DarkPylonACGluescreenDummy +257,ZealotPurifierACGluescreenDummy +258,SentryPurifierACGluescreenDummy +259,ImmortalKaraxACGluescreenDummy +260,ColossusACGluescreenDummy +261,ColossusPurifierACGluescreenDummy +262,PhoenixPurifierACGluescreenDummy +263,CarrierACGluescreenDummy +264,CarrierAiurACGluescreenDummy +265,KhaydarinMonolithACGluescreenDummy +266,ShieldBatteryACGluescreenDummy +271,NeedleSpinesWeapon +272,CorruptionWeapon +273,InfestedTerransWeapon +274,NeuralParasiteWeapon +275,PointDefenseDroneReleaseWeapon +276,HunterSeekerWeapon +277,MULE +279,ThorAAWeapon +280,PunisherGrenadesLMWeapon +281,VikingFighterWeapon +282,ATALaserBatteryLMWeapon +283,ATSLaserBatteryLMWeapon +284,LongboltMissileWeapon +285,D8ChargeWeapon +286,YamatoWeapon +287,IonCannonsWeapon +288,AcidSalivaWeapon +289,SpineCrawlerWeapon +290,SporeCrawlerWeapon +291,GlaiveWurmWeapon +292,GlaiveWurmM2Weapon +293,GlaiveWurmM3Weapon +294,StalkerWeapon +295,EMP2Weapon +296,BacklashRocketsLMWeapon +297,PhotonCannonWeapon +298,ParasiteSporeWeapon +300,Broodling +301,BroodLordBWeapon +304,AutoTurretReleaseWeapon +305,LarvaReleaseMissile +306,AcidSpinesWeapon +307,FrenzyWeapon +308,ContaminateWeapon +320,BeaconRally +321,BeaconArmy +322,BeaconAttack +323,BeaconDefend +324,BeaconHarass +325,BeaconIdle +326,BeaconAuto +327,BeaconDetect +328,BeaconScout +329,BeaconClaim +330,BeaconExpand +331,BeaconCustom1 +332,BeaconCustom2 +333,BeaconCustom3 +334,BeaconCustom4 +340,Rocks2x2NonConjoined +341,FungalGrowthMissile +342,NeuralParasiteTentacleMissile +343,Beacon_Protoss +344,Beacon_ProtossSmall +345,Beacon_Terran +346,Beacon_TerranSmall +347,Beacon_Zerg +348,Beacon_ZergSmall +349,Lyote +350,CarrionBird +351,KarakMale +352,KarakFemale +353,UrsadakFemaleExotic +354,UrsadakMale +355,UrsadakFemale +356,UrsadakCalf +357,UrsadakMaleExotic +358,UtilityBot +359,CommentatorBot1 +360,CommentatorBot2 +361,CommentatorBot3 +362,CommentatorBot4 +363,Scantipede +364,Dog +365,Sheep +366,Cow +367,InfestedTerransEggPlacement +368,InfestorTerransWeapon +369,MineralField +370,VespeneGeyser +371,SpacePlatformGeyser +372,RichVespeneGeyser +373,DestructibleSearchlight +374,DestructibleBullhornLights +375,DestructibleStreetlight +376,DestructibleSpacePlatformSign +377,DestructibleStoreFrontCityProps +378,DestructibleBillboardTall +379,DestructibleBillboardScrollingText +380,DestructibleSpacePlatformBarrier +381,DestructibleSignsDirectional +382,DestructibleSignsConstruction +383,DestructibleSignsFunny +384,DestructibleSignsIcons +385,DestructibleSignsWarning +386,DestructibleGarage +387,DestructibleGarageLarge +388,DestructibleTrafficSignal +389,TrafficSignal +390,BraxisAlphaDestructible1x1 +391,BraxisAlphaDestructible2x2 +392,DestructibleDebris4x4 +393,DestructibleDebris6x6 +394,DestructibleRock2x4Vertical +395,DestructibleRock2x4Horizontal +396,DestructibleRock2x6Vertical +397,DestructibleRock2x6Horizontal +398,DestructibleRock4x4 +399,DestructibleRock6x6 +400,DestructibleRampDiagonalHugeULBR +401,DestructibleRampDiagonalHugeBLUR +402,DestructibleRampVerticalHuge +403,DestructibleRampHorizontalHuge +404,DestructibleDebrisRampDiagonalHugeULBR +405,DestructibleDebrisRampDiagonalHugeBLUR +406,OverlordGenerateCreepKeybind +407,MengskStatueAlone +408,MengskStatue +409,WolfStatue +410,GlobeStatue +411,Weapon +412,GlaiveWurmBounceWeapon +413,BroodLordWeapon +414,BroodLordAWeapon +415,CreepBlocker1x1 +416,PermanentCreepBlocker1x1 +417,PathingBlocker1x1 +418,PathingBlocker2x2 +419,AutoTestAttackTargetGround +420,AutoTestAttackTargetAir +421,AutoTestAttacker +422,HelperEmitterSelectionArrow +423,MultiKillObject +424,ShapeGolfball +425,ShapeCone +426,ShapeCube +427,ShapeCylinder +428,ShapeDodecahedron +429,ShapeIcosahedron +430,ShapeOctahedron +431,ShapePyramid +432,ShapeRoundedCube +433,ShapeSphere +434,ShapeTetrahedron +435,ShapeThickTorus +436,ShapeThinTorus +437,ShapeTorus +438,Shape4PointStar +439,Shape5PointStar +440,Shape6PointStar +441,Shape8PointStar +442,ShapeArrowPointer +443,ShapeBowl +444,ShapeBox +445,ShapeCapsule +446,ShapeCrescentMoon +447,ShapeDecahedron +448,ShapeDiamond +449,ShapeFootball +450,ShapeGemstone +451,ShapeHeart +452,ShapeJack +453,ShapePlusSign +454,ShapeShamrock +455,ShapeSpade +456,ShapeTube +457,ShapeEgg +458,ShapeYenSign +459,ShapeX +460,ShapeWatermelon +461,ShapeWonSign +462,ShapeTennisball +463,ShapeStrawberry +464,ShapeSmileyFace +465,ShapeSoccerball +466,ShapeRainbow +467,ShapeSadFace +468,ShapePoundSign +469,ShapePear +470,ShapePineapple +471,ShapeOrange +472,ShapePeanut +473,ShapeO +474,ShapeLemon +475,ShapeMoneyBag +476,ShapeHorseshoe +477,ShapeHockeyStick +478,ShapeHockeyPuck +479,ShapeHand +480,ShapeGolfClub +481,ShapeGrape +482,ShapeEuroSign +483,ShapeDollarSign +484,ShapeBasketball +485,ShapeCarrot +486,ShapeCherry +487,ShapeBaseball +488,ShapeBaseballBat +489,ShapeBanana +490,ShapeApple +491,ShapeCashLarge +492,ShapeCashMedium +493,ShapeCashSmall +494,ShapeFootballColored +495,ShapeLemonSmall +496,ShapeOrangeSmall +497,ShapeTreasureChestOpen +498,ShapeTreasureChestClosed +499,ShapeWatermelonSmall +500,UnbuildableRocksDestructible +501,UnbuildableBricksDestructible +502,UnbuildablePlatesDestructible +503,Debris2x2NonConjoined +504,EnemyPathingBlocker1x1 +505,EnemyPathingBlocker2x2 +506,EnemyPathingBlocker4x4 +507,EnemyPathingBlocker8x8 +508,EnemyPathingBlocker16x16 +509,ScopeTest +510,SentryACGluescreenDummy +511,MineralField750 +527,HellionTank +528,CollapsibleTerranTowerDebris +529,DebrisRampLeft +530,DebrisRampRight +531,MothershipCore +535,LocustMP +536,CollapsibleRockTowerDebris +537,NydusCanalAttacker +538,NydusCanalCreeper +539,SwarmHostBurrowedMP +540,SwarmHostMP +541,Oracle +542,Tempest +543,WarHound +544,WidowMine +545,Viper +546,WidowMineBurrowed +547,LurkerMPEgg +548,LurkerMP +549,LurkerMPBurrowed +550,LurkerDenMP +551,ExtendingBridgeNEWide8Out +552,ExtendingBridgeNEWide8 +553,ExtendingBridgeNWWide8Out +554,ExtendingBridgeNWWide8 +555,ExtendingBridgeNEWide10Out +556,ExtendingBridgeNEWide10 +557,ExtendingBridgeNWWide10Out +558,ExtendingBridgeNWWide10 +559,ExtendingBridgeNEWide12Out +560,ExtendingBridgeNEWide12 +561,ExtendingBridgeNWWide12Out +562,ExtendingBridgeNWWide12 +564,CollapsibleRockTowerDebrisRampRight +565,CollapsibleRockTowerDebrisRampLeft +566,XelNaga_Caverns_DoorE +567,XelNaga_Caverns_DoorEOpened +568,XelNaga_Caverns_DoorN +569,XelNaga_Caverns_DoorNE +570,XelNaga_Caverns_DoorNEOpened +571,XelNaga_Caverns_DoorNOpened +572,XelNaga_Caverns_DoorNW +573,XelNaga_Caverns_DoorNWOpened +574,XelNaga_Caverns_DoorS +575,XelNaga_Caverns_DoorSE +576,XelNaga_Caverns_DoorSEOpened +577,XelNaga_Caverns_DoorSOpened +578,XelNaga_Caverns_DoorSW +579,XelNaga_Caverns_DoorSWOpened +580,XelNaga_Caverns_DoorW +581,XelNaga_Caverns_DoorWOpened +582,XelNaga_Caverns_Floating_BridgeNE8Out +583,XelNaga_Caverns_Floating_BridgeNE8 +584,XelNaga_Caverns_Floating_BridgeNW8Out +585,XelNaga_Caverns_Floating_BridgeNW8 +586,XelNaga_Caverns_Floating_BridgeNE10Out +587,XelNaga_Caverns_Floating_BridgeNE10 +588,XelNaga_Caverns_Floating_BridgeNW10Out +589,XelNaga_Caverns_Floating_BridgeNW10 +590,XelNaga_Caverns_Floating_BridgeNE12Out +591,XelNaga_Caverns_Floating_BridgeNE12 +592,XelNaga_Caverns_Floating_BridgeNW12Out +593,XelNaga_Caverns_Floating_BridgeNW12 +594,XelNaga_Caverns_Floating_BridgeH8Out +595,XelNaga_Caverns_Floating_BridgeH8 +596,XelNaga_Caverns_Floating_BridgeV8Out +597,XelNaga_Caverns_Floating_BridgeV8 +598,XelNaga_Caverns_Floating_BridgeH10Out +599,XelNaga_Caverns_Floating_BridgeH10 +600,XelNaga_Caverns_Floating_BridgeV10Out +601,XelNaga_Caverns_Floating_BridgeV10 +602,XelNaga_Caverns_Floating_BridgeH12Out +603,XelNaga_Caverns_Floating_BridgeH12 +604,XelNaga_Caverns_Floating_BridgeV12Out +605,XelNaga_Caverns_Floating_BridgeV12 +608,CollapsibleTerranTowerPushUnitRampLeft +609,CollapsibleTerranTowerPushUnitRampRight +612,CollapsibleRockTowerPushUnit +613,CollapsibleTerranTowerPushUnit +614,CollapsibleRockTowerPushUnitRampRight +615,CollapsibleRockTowerPushUnitRampLeft +616,DigesterCreepSprayTargetUnit +617,DigesterCreepSprayUnit +618,NydusCanalAttackerWeapon +619,ViperConsumeStructureWeapon +622,ResourceBlocker +623,TempestWeapon +624,YoinkMissile +628,YoinkVikingAirMissile +630,YoinkVikingGroundMissile +632,YoinkSiegeTankMissile +634,WarHoundWeapon +636,EyeStalkWeapon +639,WidowMineWeapon +640,WidowMineAirWeapon +641,MothershipCoreWeaponWeapon +642,TornadoMissileWeapon +643,TornadoMissileDummyWeapon +644,TalonsMissileWeapon +645,CreepTumorMissile +646,LocustMPEggAMissileWeapon +647,LocustMPEggBMissileWeapon +648,LocustMPWeapon +650,RepulsorCannonWeapon +654,CollapsibleRockTowerDiagonal +655,CollapsibleTerranTowerDiagonal +656,CollapsibleTerranTowerRampLeft +657,CollapsibleTerranTowerRampRight +658,Ice2x2NonConjoined +659,IceProtossCrates +660,ProtossCrates +661,TowerMine +662,PickupPalletGas +663,PickupPalletMinerals +664,PickupScrapSalvage1x1 +665,PickupScrapSalvage2x2 +666,PickupScrapSalvage3x3 +667,RoughTerrain +668,UnbuildableBricksSmallUnit +669,UnbuildablePlatesSmallUnit +670,UnbuildablePlatesUnit +671,UnbuildableRocksSmallUnit +672,XelNagaHealingShrine +673,InvisibleTargetDummy +674,ProtossVespeneGeyser +675,CollapsibleRockTower +676,CollapsibleTerranTower +677,ThornLizard +678,CleaningBot +679,DestructibleRock6x6Weak +680,ProtossSnakeSegmentDemo +681,PhysicsCapsule +682,PhysicsCube +683,PhysicsCylinder +684,PhysicsKnot +685,PhysicsL +686,PhysicsPrimitives +687,PhysicsSphere +688,PhysicsStar +689,CreepBlocker4x4 +690,DestructibleCityDebris2x4Vertical +691,DestructibleCityDebris2x4Horizontal +692,DestructibleCityDebris2x6Vertical +693,DestructibleCityDebris2x6Horizontal +694,DestructibleCityDebris4x4 +695,DestructibleCityDebris6x6 +696,DestructibleCityDebrisHugeDiagonalBLUR +697,DestructibleCityDebrisHugeDiagonalULBR +698,TestZerg +699,PathingBlockerRadius1 +700,DestructibleRockEx12x4Vertical +701,DestructibleRockEx12x4Horizontal +702,DestructibleRockEx12x6Vertical +703,DestructibleRockEx12x6Horizontal +704,DestructibleRockEx14x4 +705,DestructibleRockEx16x6 +706,DestructibleRockEx1DiagonalHugeULBR +707,DestructibleRockEx1DiagonalHugeBLUR +708,DestructibleRockEx1VerticalHuge +709,DestructibleRockEx1HorizontalHuge +710,DestructibleIce2x4Vertical +711,DestructibleIce2x4Horizontal +712,DestructibleIce2x6Vertical +713,DestructibleIce2x6Horizontal +714,DestructibleIce4x4 +715,DestructibleIce6x6 +716,DestructibleIceDiagonalHugeULBR +717,DestructibleIceDiagonalHugeBLUR +718,DestructibleIceVerticalHuge +719,DestructibleIceHorizontalHuge +720,DesertPlanetSearchlight +721,DesertPlanetStreetlight +722,UnbuildableBricksUnit +723,UnbuildableRocksUnit +724,ZerusDestructibleArch +725,Artosilope +726,Anteplott +727,LabBot +728,Crabeetle +729,CollapsibleRockTowerRampRight +730,CollapsibleRockTowerRampLeft +731,LabMineralField +732,LabMineralField750 +748,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +749,SnowRefinery_Terran_ExtendingBridgeNEShort8 +750,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +751,SnowRefinery_Terran_ExtendingBridgeNWShort8 +756,Tarsonis_DoorN +757,Tarsonis_DoorNLowered +758,Tarsonis_DoorNE +759,Tarsonis_DoorNELowered +760,Tarsonis_DoorE +761,Tarsonis_DoorELowered +762,Tarsonis_DoorNW +763,Tarsonis_DoorNWLowered +764,RavagerCocoon +765,Ravager +766,Liberator +767,RavagerBurrowed +769,ThorAP +770,Cyclone +771,LocustMPFlying +772,Disruptor +773,Adept +774,AiurLightBridgeNE8Out +775,AiurLightBridgeNE8 +776,AiurLightBridgeNE10Out +777,AiurLightBridgeNE10 +778,AiurLightBridgeNE12Out +779,AiurLightBridgeNE12 +780,AiurLightBridgeNW8Out +781,AiurLightBridgeNW8 +782,AiurLightBridgeNW10Out +783,AiurLightBridgeNW10 +784,AiurLightBridgeNW12Out +785,AiurLightBridgeNW12 +786,AiurTempleBridgeNE8Out +788,AiurTempleBridgeNE10Out +790,AiurTempleBridgeNE12Out +792,AiurTempleBridgeNW8Out +794,AiurTempleBridgeNW10Out +796,AiurTempleBridgeNW12Out +798,ShakurasLightBridgeNE8Out +799,ShakurasLightBridgeNE8 +800,ShakurasLightBridgeNE10Out +801,ShakurasLightBridgeNE10 +802,ShakurasLightBridgeNE12Out +803,ShakurasLightBridgeNE12 +804,ShakurasLightBridgeNW8Out +805,ShakurasLightBridgeNW8 +806,ShakurasLightBridgeNW10Out +807,ShakurasLightBridgeNW10 +808,ShakurasLightBridgeNW12Out +809,ShakurasLightBridgeNW12 +810,VoidMPImmortalReviveCorpse +811,GuardianCocoonMP +812,GuardianMP +813,DevourerCocoonMP +814,DevourerMP +815,DefilerMPBurrowed +816,DefilerMP +817,OracleStasisTrap +818,DisruptorPhased +819,LiberatorAG +820,AiurLightBridgeAbandonedNE8Out +821,AiurLightBridgeAbandonedNE8 +822,AiurLightBridgeAbandonedNE10Out +823,AiurLightBridgeAbandonedNE10 +824,AiurLightBridgeAbandonedNE12Out +825,AiurLightBridgeAbandonedNE12 +826,AiurLightBridgeAbandonedNW8Out +827,AiurLightBridgeAbandonedNW8 +828,AiurLightBridgeAbandonedNW10Out +829,AiurLightBridgeAbandonedNW10 +830,AiurLightBridgeAbandonedNW12Out +831,AiurLightBridgeAbandonedNW12 +832,CollapsiblePurifierTowerDebris +833,PurifierRichMineralField +834,PurifierRichMineralField750 +849,CollapsiblePurifierTowerPushUnit +851,LocustMPPrecursor +852,ReleaseInterceptorsBeacon +853,AdeptPhaseShift +854,RavagerCorrosiveBileMissile +855,HydraliskImpaleMissile +856,CycloneMissileLargeAir +857,CycloneMissile +858,CycloneMissileLarge +859,ThorAALance +860,OracleWeapon +861,TempestWeaponGround +862,RavagerWeaponMissile +863,ScoutMPAirWeaponLeft +864,ScoutMPAirWeaponRight +865,ArbiterMPWeaponMissile +866,GuardianMPWeapon +867,DevourerMPWeaponMissile +868,DefilerMPDarkSwarmWeapon +869,QueenMPEnsnareMissile +870,QueenMPSpawnBroodlingsMissile +871,LightningBombWeapon +872,HERCPlacement +873,GrappleWeapon +876,CausticSprayMissile +877,ParasiticBombMissile +878,ParasiticBombDummy +879,AdeptWeapon +880,AdeptUpgradeWeapon +881,LiberatorMissile +882,LiberatorDamageMissile +883,LiberatorAGMissile +884,KD8Charge +885,KD8ChargeWeapon +887,SlaynElementalGrabWeapon +888,SlaynElementalGrabAirUnit +889,SlaynElementalGrabGroundUnit +890,SlaynElementalWeapon +894,HERC +895,Moopy +896,Replicant +897,SeekerMissile +898,AiurTempleBridgeDestructibleNE8Out +899,AiurTempleBridgeDestructibleNE10Out +900,AiurTempleBridgeDestructibleNE12Out +901,AiurTempleBridgeDestructibleNW8Out +902,AiurTempleBridgeDestructibleNW10Out +903,AiurTempleBridgeDestructibleNW12Out +904,AiurTempleBridgeDestructibleSW8Out +905,AiurTempleBridgeDestructibleSW10Out +906,AiurTempleBridgeDestructibleSW12Out +907,AiurTempleBridgeDestructibleSE8Out +908,AiurTempleBridgeDestructibleSE10Out +909,AiurTempleBridgeDestructibleSE12Out +911,FlyoverUnit +912,CorsairMP +913,ScoutMP +915,ArbiterMP +916,ScourgeMP +917,DefilerMPPlagueWeapon +918,QueenMP +919,XelNagaDestructibleRampBlocker6S +920,XelNagaDestructibleRampBlocker6SE +921,XelNagaDestructibleRampBlocker6E +922,XelNagaDestructibleRampBlocker6NE +923,XelNagaDestructibleRampBlocker6N +924,XelNagaDestructibleRampBlocker6NW +925,XelNagaDestructibleRampBlocker6W +926,XelNagaDestructibleRampBlocker6SW +927,XelNagaDestructibleRampBlocker8S +928,XelNagaDestructibleRampBlocker8SE +929,XelNagaDestructibleRampBlocker8E +930,XelNagaDestructibleRampBlocker8NE +931,XelNagaDestructibleRampBlocker8N +932,XelNagaDestructibleRampBlocker8NW +933,XelNagaDestructibleRampBlocker8W +934,XelNagaDestructibleRampBlocker8SW +935,ReptileCrate +936,SlaynSwarmHostSpawnFlyer +937,SlaynElemental +938,PurifierVespeneGeyser +939,ShakurasVespeneGeyser +940,CollapsiblePurifierTowerDiagonal +941,CreepOnlyBlocker4x4 +942,PurifierMineralField +943,PurifierMineralField750 +944,Beacon_Nova +945,Beacon_NovaSmall +946,Ursadon +947,Ursula +948,TransportOverlordCocoon +949,OverlordTransport +950,PylonOvercharged +951,BypassArmorDrone +952,AdeptPiercingWeapon +953,CorrosiveParasiteWeapon From 2f7bfcfd1f12a7e289f6b29d7dec6ab49d747d7b Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 16:21:27 -0400 Subject: [PATCH 073/116] more units for unit lookup yay --- sc2reader/data/unit_lookup.csv | 184 +++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/sc2reader/data/unit_lookup.csv b/sc2reader/data/unit_lookup.csv index aa662358..e00ccb93 100755 --- a/sc2reader/data/unit_lookup.csv +++ b/sc2reader/data/unit_lookup.csv @@ -655,3 +655,187 @@ TransportOverlordCocoon,TransportOverlordCocoon OverlordTransport,OverlordTransport BypassArmorDrone,BypassArmorDrone CorrosiveParasiteWeapon,CorrosiveParasiteWeapon +GhostAlternate,GhostAlternate +GhostNova,GhostNova +MarineACGluescreenDummy,MarineACGluescreenDummy +FirebatACGluescreenDummy,FirebatACGluescreenDummy +MedicACGluescreenDummy,MedicACGluescreenDummy +MarauderACGluescreenDummy,MarauderACGluescreenDummy +VultureACGluescreenDummy,VultureACGluescreenDummy +SiegeTankACGluescreenDummy,SiegeTankACGluescreenDummy +VikingACGluescreenDummy,VikingACGluescreenDummy +BansheeACGluescreenDummy,BansheeACGluescreenDummy +BattlecruiserACGluescreenDummy,BattlecruiserACGluescreenDummy +OrbitalCommandACGluescreenDummy,OrbitalCommandACGluescreenDummy +BunkerACGluescreenDummy,BunkerACGluescreenDummy +MissileTurretACGluescreenDummy,MissileTurretACGluescreenDummy +HellbatACGluescreenDummy,HellbatACGluescreenDummy +GoliathACGluescreenDummy,GoliathACGluescreenDummy +CycloneACGluescreenDummy,CycloneACGluescreenDummy +WraithACGluescreenDummy,WraithACGluescreenDummy +ScienceVesselACGluescreenDummy,ScienceVesselACGluescreenDummy +HerculesACGluescreenDummy,HerculesACGluescreenDummy +ThorACGluescreenDummy,ThorACGluescreenDummy +PerditionTurretACGluescreenDummy,PerditionTurretACGluescreenDummy +FlamingBettyACGluescreenDummy,FlamingBettyACGluescreenDummy +DevastationTurretACGluescreenDummy,DevastationTurretACGluescreenDummy +BlasterBillyACGluescreenDummy,BlasterBillyACGluescreenDummy +SpinningDizzyACGluescreenDummy,SpinningDizzyACGluescreenDummy +ZerglingKerriganACGluescreenDummy,ZerglingKerriganACGluescreenDummy +RaptorACGluescreenDummy,RaptorACGluescreenDummy +QueenCoopACGluescreenDummy,QueenCoopACGluescreenDummy +HydraliskACGluescreenDummy,HydraliskACGluescreenDummy +HydraliskLurkerACGluescreenDummy,HydraliskLurkerACGluescreenDummy +MutaliskBroodlordACGluescreenDummy,MutaliskBroodlordACGluescreenDummy +BroodLordACGluescreenDummy,BroodLordACGluescreenDummy +UltraliskACGluescreenDummy,UltraliskACGluescreenDummy +TorrasqueACGluescreenDummy,TorrasqueACGluescreenDummy +OverseerACGluescreenDummy,OverseerACGluescreenDummy +LurkerACGluescreenDummy,LurkerACGluescreenDummy +SpineCrawlerACGluescreenDummy,SpineCrawlerACGluescreenDummy +SporeCrawlerACGluescreenDummy,SporeCrawlerACGluescreenDummy +NydusNetworkACGluescreenDummy,NydusNetworkACGluescreenDummy +OmegaNetworkACGluescreenDummy,OmegaNetworkACGluescreenDummy +ZerglingZagaraACGluescreenDummy,ZerglingZagaraACGluescreenDummy +SwarmlingACGluescreenDummy,SwarmlingACGluescreenDummy +BanelingACGluescreenDummy,BanelingACGluescreenDummy +SplitterlingACGluescreenDummy,SplitterlingACGluescreenDummy +AberrationACGluescreenDummy,AberrationACGluescreenDummy +ScourgeACGluescreenDummy,ScourgeACGluescreenDummy +CorruptorACGluescreenDummy,CorruptorACGluescreenDummy +BileLauncherACGluescreenDummy,BileLauncherACGluescreenDummy +SwarmQueenACGluescreenDummy,SwarmQueenACGluescreenDummy +RoachACGluescreenDummy,RoachACGluescreenDummy +RoachVileACGluescreenDummy,RoachVileACGluescreenDummy +RavagerACGluescreenDummy,RavagerACGluescreenDummy +SwarmHostACGluescreenDummy,SwarmHostACGluescreenDummy +MutaliskACGluescreenDummy,MutaliskACGluescreenDummy +GuardianACGluescreenDummy,GuardianACGluescreenDummy +DevourerACGluescreenDummy,DevourerACGluescreenDummy +ViperACGluescreenDummy,ViperACGluescreenDummy +BrutaliskACGluescreenDummy,BrutaliskACGluescreenDummy +LeviathanACGluescreenDummy,LeviathanACGluescreenDummy +ZealotACGluescreenDummy,ZealotACGluescreenDummy +ZealotAiurACGluescreenDummy,ZealotAiurACGluescreenDummy +DragoonACGluescreenDummy,DragoonACGluescreenDummy +HighTemplarACGluescreenDummy,HighTemplarACGluescreenDummy +ArchonACGluescreenDummy,ArchonACGluescreenDummy +ImmortalACGluescreenDummy,ImmortalACGluescreenDummy +ObserverACGluescreenDummy,ObserverACGluescreenDummy +PhoenixAiurACGluescreenDummy,PhoenixAiurACGluescreenDummy +ReaverACGluescreenDummy,ReaverACGluescreenDummy +TempestACGluescreenDummy,TempestACGluescreenDummy +PhotonCannonACGluescreenDummy,PhotonCannonACGluescreenDummy +ZealotVorazunACGluescreenDummy,ZealotVorazunACGluescreenDummy +ZealotShakurasACGluescreenDummy,ZealotShakurasACGluescreenDummy +StalkerShakurasACGluescreenDummy,StalkerShakurasACGluescreenDummy +DarkTemplarShakurasACGluescreenDummy,DarkTemplarShakurasACGluescreenDummy +CorsairACGluescreenDummy,CorsairACGluescreenDummy +VoidRayACGluescreenDummy,VoidRayACGluescreenDummy +VoidRayShakurasACGluescreenDummy,VoidRayShakurasACGluescreenDummy +OracleACGluescreenDummy,OracleACGluescreenDummy +DarkArchonACGluescreenDummy,DarkArchonACGluescreenDummy +DarkPylonACGluescreenDummy,DarkPylonACGluescreenDummy +ZealotPurifierACGluescreenDummy,ZealotPurifierACGluescreenDummy +SentryPurifierACGluescreenDummy,SentryPurifierACGluescreenDummy +ImmortalKaraxACGluescreenDummy,ImmortalKaraxACGluescreenDummy +ColossusACGluescreenDummy,ColossusACGluescreenDummy +ColossusPurifierACGluescreenDummy,ColossusPurifierACGluescreenDummy +PhoenixPurifierACGluescreenDummy,PhoenixPurifierACGluescreenDummy +CarrierACGluescreenDummy,CarrierACGluescreenDummy +CarrierAiurACGluescreenDummy,CarrierAiurACGluescreenDummy +KhaydarinMonolithACGluescreenDummy,KhaydarinMonolithACGluescreenDummy +ShieldBatteryACGluescreenDummy,ShieldBatteryACGluescreenDummy +PermanentCreepBlocker1x1,PermanentCreepBlocker1x1 +SentryACGluescreenDummy,SentryACGluescreenDummy +SnowRefinery_Terran_ExtendingBridgeNEShort8Out,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +SnowRefinery_Terran_ExtendingBridgeNEShort8,SnowRefinery_Terran_ExtendingBridgeNEShort8 +SnowRefinery_Terran_ExtendingBridgeNWShort8Out,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +SnowRefinery_Terran_ExtendingBridgeNWShort8,SnowRefinery_Terran_ExtendingBridgeNWShort8 +Tarsonis_DoorN,Tarsonis_DoorN +Tarsonis_DoorNLowered,Tarsonis_DoorNLowered +Tarsonis_DoorNE,Tarsonis_DoorNE +Tarsonis_DoorNELowered,Tarsonis_DoorNELowered +Tarsonis_DoorE,Tarsonis_DoorE +Tarsonis_DoorELowered,Tarsonis_DoorELowered +Tarsonis_DoorNW,Tarsonis_DoorNW +Tarsonis_DoorNWLowered,Tarsonis_DoorNWLowered +AiurLightBridgeNE8Out,AiurLightBridgeNE8Out +AiurLightBridgeNE8,AiurLightBridgeNE8 +AiurLightBridgeNE10Out,AiurLightBridgeNE10Out +AiurLightBridgeNE10,AiurLightBridgeNE10 +AiurLightBridgeNE12Out,AiurLightBridgeNE12Out +AiurLightBridgeNE12,AiurLightBridgeNE12 +AiurLightBridgeNW8Out,AiurLightBridgeNW8Out +AiurLightBridgeNW8,AiurLightBridgeNW8 +AiurLightBridgeNW10Out,AiurLightBridgeNW10Out +AiurLightBridgeNW10,AiurLightBridgeNW10 +AiurLightBridgeNW12Out,AiurLightBridgeNW12Out +AiurLightBridgeNW12,AiurLightBridgeNW12 +ShakurasLightBridgeNE8Out,ShakurasLightBridgeNE8Out +ShakurasLightBridgeNE8,ShakurasLightBridgeNE8 +ShakurasLightBridgeNE10Out,ShakurasLightBridgeNE10Out +ShakurasLightBridgeNE10,ShakurasLightBridgeNE10 +ShakurasLightBridgeNE12Out,ShakurasLightBridgeNE12Out +ShakurasLightBridgeNE12,ShakurasLightBridgeNE12 +ShakurasLightBridgeNW8Out,ShakurasLightBridgeNW8Out +ShakurasLightBridgeNW8,ShakurasLightBridgeNW8 +ShakurasLightBridgeNW10Out,ShakurasLightBridgeNW10Out +ShakurasLightBridgeNW10,ShakurasLightBridgeNW10 +ShakurasLightBridgeNW12Out,ShakurasLightBridgeNW12Out +ShakurasLightBridgeNW12,ShakurasLightBridgeNW12 +AiurLightBridgeAbandonedNE8Out,AiurLightBridgeAbandonedNE8Out +AiurLightBridgeAbandonedNE8,AiurLightBridgeAbandonedNE8 +AiurLightBridgeAbandonedNE10Out,AiurLightBridgeAbandonedNE10Out +AiurLightBridgeAbandonedNE10,AiurLightBridgeAbandonedNE10 +AiurLightBridgeAbandonedNE12Out,AiurLightBridgeAbandonedNE12Out +AiurLightBridgeAbandonedNE12,AiurLightBridgeAbandonedNE12 +AiurLightBridgeAbandonedNW8Out,AiurLightBridgeAbandonedNW8Out +AiurLightBridgeAbandonedNW8,AiurLightBridgeAbandonedNW8 +AiurLightBridgeAbandonedNW10Out,AiurLightBridgeAbandonedNW10Out +AiurLightBridgeAbandonedNW10,AiurLightBridgeAbandonedNW10 +AiurLightBridgeAbandonedNW12Out,AiurLightBridgeAbandonedNW12Out +AiurLightBridgeAbandonedNW12,AiurLightBridgeAbandonedNW12 +CollapsiblePurifierTowerDebris,CollapsiblePurifierTowerDebris +PurifierRichMineralField,PurifierRichMineralField +PurifierRichMineralField750,PurifierRichMineralField750 +CollapsiblePurifierTowerPushUnit,CollapsiblePurifierTowerPushUnit +CycloneMissileLargeAir,CycloneMissileLargeAir +CycloneMissileLarge,CycloneMissileLarge +DefilerMPDarkSwarmWeapon,DefilerMPDarkSwarmWeapon +SlaynElementalGrabWeapon,SlaynElementalGrabWeapon +SlaynElementalGrabAirUnit,SlaynElementalGrabAirUnit +SlaynElementalGrabGroundUnit,SlaynElementalGrabGroundUnit +SlaynElementalWeapon,SlaynElementalWeapon +Moopy,Moopy +Replicant,Replicant +AiurTempleBridgeDestructibleNE8Out,AiurTempleBridgeDestructibleNE8Out +AiurTempleBridgeDestructibleNE10Out,AiurTempleBridgeDestructibleNE10Out +AiurTempleBridgeDestructibleNE12Out,AiurTempleBridgeDestructibleNE12Out +AiurTempleBridgeDestructibleNW8Out,AiurTempleBridgeDestructibleNW8Out +AiurTempleBridgeDestructibleNW10Out,AiurTempleBridgeDestructibleNW10Out +AiurTempleBridgeDestructibleNW12Out,AiurTempleBridgeDestructibleNW12Out +AiurTempleBridgeDestructibleSW8Out,AiurTempleBridgeDestructibleSW8Out +AiurTempleBridgeDestructibleSW10Out,AiurTempleBridgeDestructibleSW10Out +AiurTempleBridgeDestructibleSW12Out,AiurTempleBridgeDestructibleSW12Out +AiurTempleBridgeDestructibleSE8Out,AiurTempleBridgeDestructibleSE8Out +AiurTempleBridgeDestructibleSE10Out,AiurTempleBridgeDestructibleSE10Out +AiurTempleBridgeDestructibleSE12Out,AiurTempleBridgeDestructibleSE12Out +CorsairMP,CorsairMP +ArbiterMP,ArbiterMP +DefilerMPPlagueWeapon,DefilerMPPlagueWeapon +ReptileCrate,ReptileCrate +SlaynSwarmHostSpawnFlyer,SlaynSwarmHostSpawnFlyer +SlaynElemental,SlaynElemental +PurifierVespeneGeyser,PurifierVespeneGeyser +ShakurasVespeneGeyser,ShakurasVespeneGeyser +CollapsiblePurifierTowerDiagonal,CollapsiblePurifierTowerDiagonal +CreepOnlyBlocker4x4,CreepOnlyBlocker4x4 +PurifierMineralField,PurifierMineralField +PurifierMineralField750,PurifierMineralField750 +Beacon_Nova,Beacon_Nova +Beacon_NovaSmall,Beacon_NovaSmall +Ursadon,Ursadon +Ursula,Ursula +PylonOvercharged,PylonOvercharged +AdeptPiercingWeapon,AdeptPiercingWeapon From a131d50f31bf30d431157c8670d51b1e492ae9ea Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 13 Jul 2016 16:42:58 -0400 Subject: [PATCH 074/116] howto on how to do the abilities and units nonsense --- sc2reader/data/HOWTO | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 sc2reader/data/HOWTO diff --git a/sc2reader/data/HOWTO b/sc2reader/data/HOWTO new file mode 100644 index 00000000..ba734b5b --- /dev/null +++ b/sc2reader/data/HOWTO @@ -0,0 +1,18 @@ +Sometimes when a new version comes out, such as (3.4.0) 44401, Bliz will update the ids used to identify units and abilities. + +See dsjoerg's commits on Jul 13, 2016 to see what you need to modify to handle something like that: https://github.com/ggtracker/sc2reader/commits/upstream + +1 use the Galaxy Editor and Export Balance Data. +2 To create the ability CSV file: ```find Balance\ Data -print0 | xargs -0 grep -h ' Date: Tue, 18 Oct 2016 10:46:30 -0400 Subject: [PATCH 075/116] handle 3.7 --- sc2reader/readers.py | 1 + test_replays/3.7.0/1.SC2Replay | Bin 0 -> 71897 bytes test_replays/test_all.py | 3 +++ 3 files changed, 4 insertions(+) create mode 100644 test_replays/3.7.0/1.SC2Replay diff --git a/sc2reader/readers.py b/sc2reader/readers.py index d84f7122..35766e20 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -123,6 +123,7 @@ def __call__(self, data, replay): tandem_id=data.read_bits(4) if replay.base_build >= 39576 and data.read_bool() else None, commander_mastery_level=data.read_uint32() if replay.base_build >= 42932 else None, commander_mastery_talents=[data.read_uint32() for i in range(data.read_bits(3))] if replay.base_build >= 42932 else None, + reward_overrides=[data.read_unit32() for i in range(data.read_bits(17))] if replay.base_build >= 47185 else None, ) for i in range(data.read_bits(5))], random_seed=data.read_uint32(), host_user_id=data.read_bits(4) if data.read_bool() else None, diff --git a/test_replays/3.7.0/1.SC2Replay b/test_replays/3.7.0/1.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..be833dd79d03b161e0d64fa12391e52fd6ba5841 GIT binary patch literal 71897 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%0D)>FI)29`ov#E} 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 cN6~wXlOG&3N(*+*S?gY_ Date: Tue, 18 Oct 2016 19:04:29 -0400 Subject: [PATCH 076/116] add another replay to the 3.7 test, works fine --- test_replays/3.7.0/2.SC2Replay | Bin 0 -> 86626 bytes test_replays/test_all.py | 1 + 2 files changed, 1 insertion(+) create mode 100644 test_replays/3.7.0/2.SC2Replay diff --git a/test_replays/3.7.0/2.SC2Replay b/test_replays/3.7.0/2.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..7b55f76c94d09fc1eb7978f259af36823753d1dd GIT binary patch literal 86626 zcmeFYWpEr%lQ%dTF|#bmk}PIsW@c%`%*=e=+N+F@tVB z==bvCw&tOemL<^|o=HIXc2%Cn0Wy*_J{RXn)vU;kTD81F~!tzm{K9Z9~k?#D4&g^4gFiJqs2@8-;LvrobQ7}E@v zlNl`-^yjm~-P^xq;j*tPpzA;q*#iosqqab00E2jLjeEG#+WBwETSMuN95Z=tY(Xf!m`%UL9fwZW z{4OlU9eN%E7$xx%EGPgrEDSCz6dnYC02V+90R{y)Tfh*!t~RILI2zt)koOkW^u@thLh@cT704kl;Ge%LmEP${`wNgws z5t-*BpXjQ83atn7iUZ1xbZ*&nP~nC?I3%yjl3dyk$CxY<8f9 z$(qQl91|io@bCN+1X}bliYo{zfMAcw(G{c;X6M+8O|hj8m||(cXDr z;8+#)K;`CxcEHo%HW;OeNTsfVOVGEU;-&HSf?>|MdSf4RF=?||i2z)Lc~WkHgnSZo zoRTd;V2Ht(z5Pl7IVRBl2(X+?RKL`rF&LD9ddajAvy1^YD1xX<7{smERDl}keYDu$ zU_qK`|4?D0Wh1)TlyGTtgyJ1Vm~6g>a_#LUFDp6F^Z~vJMqU;^5**?rvc!b|4a-j! zIYPR%HW3+IC!k0Idd@#~dsbj>&eqCkhyu+_k_sQZ*WeGmcN2M*0?}-IkcsVZC z@uvAEtJc#ApW3vLjQlPSL>$d5r}QW`F(Nm}_M;xvByS@*zU#cWeWYrvDwOP%kpvY~ ze%o=k&sew|t@9w`7>{sj@CSMp-7sWN_k6S`gIB{Nzz$BZ2yXh`uouO@k(g4MNdvd@ zGpYp%nsVoulgq>Rd>FY4MB2LI6Q<7KtU}`{NkV;OzmH>0GkR8 zQ|fz689F!xMg${5n2d*v@0ZBE!FT6!vkyL2F`Szc6fYSI52iFj!;EJwN66eH7`YiS zt1CbB2^x-X%1}c-ga*%m=}AL793^i+LXT~&f(+X2OEWAJIGL@+FZBm+i@LF&K(3N{ zvAHT5%N@W*wh1PA(H(9CiP7?LWd5%5v4jK^5E8L|ns17Rip~wx$UjU9PCw6)Hvh!f zsx7OIY#$mV7hDUA`t#JQ9iItN)ddOGlk4&m2d5)_A#zxynET3Zd_+&y%)8+Cg?|vW ze`?QJ{F@*rq@<X%+lFq3cu13sx{B>%`(nAGk_2-?P%I01_KsyAOK{@}Ef$~&J1 zsUj~O{nU_1;b+?sE&9wd~z zKsc8$Ru*@hZgS7eYFR8UA|4|Z&dQ8Skg&KQc>lL$k&lG!tAY}5fhbt634nFh;x9^# zBC_JJ{>3H$LZmnZ6Yf9YH2W8hpwgiJ0+l~$e3~pdDiiCBGC?3zu>~$}6s|#99yU3N z?1HdoDxVOpr~ks@J@z~TkdIYFs5p&DKm`#BHb^N-4%_zswvv9uBoQJ`pTCe52ZyKm zjAp^=W_M>#(3A3^j`(1f@7t@IU*N{3CTuFoq{50nLfV`Yb;q2DdSOW$&bvZ zy0@_MngUdG8M6cR+I<1ko>Ubwti+r(ox)CNPd;rH3Ti_9kBP#{G_NjnyhNF?b!2g# z&Wfo70ZGBUjP0f$MQ`1#NoHmv798H0WWyb{B^{&b6ZX%)ItkoNRegvYm={GT65FGJh@!=9P;;Pa_!l zajSXAi|&|2Ha`Rny%5kFykBgR6cNsfi07TL#+tGAA7nM5`yZoY*uPmuQu6l@sfny= z2gaVRf(te|hqp5K>E+eC2zJq0ow8er_TX9=+qZ+P>d4FUx`rE$6rYj9Pi`H%sLFld zb@UWkY*H7@Wu6g?RHW>DZg>+SJrYNx`5et_UuV^|40JZ-ztKU-R!2HB?*4(=F4>wL zN->oht$C#b=afXYp%+F`2m%xDUAj~QZ0L8iP{2D9b~~OTrq7NCf6ZF$r|OIS<%F9S zTf*gDhv-2k;ax04S&{p@1ueO6`28K9ku*p?EIvHo<2z=jxh+^t-kT*{W7ZSAYfwD} z+uzhgj80t6LW3&p%e7%b#P%@3lLqwT%&WuVFF;$7+8AA#Jx#4|Lw(U5|2yILAk^dF z*sf6AT=<0%6)S9cZ?GM5Dw|H?OUV*AG*oXkaR13wBeLRw3Z6{Z6yUPnL+}4U6{t9O zX8;EK-#F_3g0@-okwyL(-jB&y|HW~Lvd5TCFZ)pcqu(L?^tYEUuYY(huecwK`R~2v z&%26#al4Va&4ufwLkA7b;Dk})H8LO zHtEN;3}28HHj5&kD~l{Pv9Q3!K>&i*aLMP20|F7{iX&x1({L^3VrS(F2k%VM4Rcwc zM1=~8O_xvZKu8mSusK z;W!APpuySfxRQ7aneJD_H!SS^P~9X8FV^^1w*LiI|uW zqR>GLvgtT%eCXs5Y`nASX1R045RjZmOK5qJxKK{` zHvK63LxsHUpi!=}FY8Ze#H5n$MPqfIrPP)vz2T`a8uAUU&mA5rUNXO^VCOm2paAG5 zG%Lk~OmTY$RJQv&@{E(&7ZQdtwysI02bKF^%QyEkG9i|MSpbwaCHKOq{H3Y9$Z)g< zTk)bH7oHv%MSI#zI9W+3S)v3Y9{*)Fr#h^fkx}6YaebV3&hjjAI1bkAKqx5>0zbM# z*}6m0QEo|HS(ULira0((sX#Ag12f?h%^LJIbGoorq5DimTMoRk)m((QA9S>7Y(?BoHI-O#gY3q z3W@up!k@RmfVLJFENpIaIXXszA7ugYn)4_j2?#%a;=Pen5fVIDa$MEJb+iuJuL9Vo z!rSSy;*Rr_{pG~^N=@!0pSiworAbWEtuLa0$>KA zdW(q!6aZ%fJio+`$di-vm`rMy1`c-G0m2?P+J9vF;ge!@iI=Fc5U%2TbBiEQ+9nTi ziO{xX;(E^ud+8xGI#z$C7&C^Sb`6rkaW0aJ2x~i%2NQ`9i;hMJo5&Uu28Y0iQaUZ> z2^)i0#68g}<9E`0KIF^2S=JUx2y>|>r-i6uuP;0a9=Rzo9N{n!B2645uu1n*!$kff zSSk@8`D&wuRAGn|1qy5wr5u?_YvG_0DFucyr6}o`r))w%0*nb6JQ3}AA&;~{y4{!Z zvb?YqQ|2v}=z`rtGd0DY35N`|`Bj3XOgq%gsltR+VX@Uzlguib`d0)K7hZf+L10l< zF>)?DgEu^Rckh&B3^?7SZ37EcgplH!LnbNYkfpMT3Mr~6*Oz5*_M2BqXhJgs*e4LAjzPLh_pPFP`Ne*JaqVQ`oh#O)E-}-?#Ard?D5wq(Mv+y$3wS5p@e^MCZPn8)$ zp5rE2E5?TTqrhwF%S_q~gl!dqRVZmD$%7BtLwu`pA4ORa+!d`h=s>9@GV~1JJHe|A z6}o#vYB25AkwGzQ0 zG-_E^59^}=9o1Kok}X0Fws`l;yFs`N+gnz;6Jvs!#fY6d%sU+O=^IcmA!hQ`*3>@4$~ z=rV{9MO#={rc(i^H{;R3tidsn@p?Q;R_83HRB|REPVIo+OhSvM!_rg_; zc2x<#O$Ze#5ez>|C`MAriCL~%+2YPHvP?#Gx4txC%PR%R0a*9p z=r$>1bMt6ecn=906-7lTg#nGDB0h$Ui5~?sl=<~QdANnRNCWb9h>iRZScHUWC6AEw z5UlxLCI4Jk(yHEY7@trg1T1m|DpbFnCUHW+0UqF{g}*l!90d z^}fQJ$5+vg^%VH^;v?VN<}JqVSZZfJWZrL{U=WS0dwjI2WF7J8Of3Ohoyw$59TX}> z-zj~1GGIVUt$?_tHtbgqHeKCm_?kq5=7Nycz`UpiY&F^<&U9wYA0xU~4l!%LA9bry z^FDnV@1&I_8ZHb;jbZpyRaM>Wy*7Jc0rZ8I3M4TPh5&cSg1XKT3TqUs1jOB05!suy z$ZB|YYt8s#LO!|rs~9baX>9p@){@mid(ol1UQEZ+cPz?ML2bzB!&w}?!7R?@g(haK&#V>QU^76B!q)N1-@O^=o zfYZpPPIWxva?0dII$kN`_(tW0YQW`*nwcAV7{8vWhwH2N$8YF2cTja!{IeOSJ`q2d z<%zpz{oyNwpg%wy;7?uN--0jJK|9e(=i%b~)$`$EMFjPVBvzF(^_o79R#KsB_Pe*{ zNbAB3L0x8JM3yWAnG{E&CUsH%oW^i>wXVE}humWG<@5NG>hB#h?MB3nY%Cns1#K>u zi^Pr<=I)jiqU;pfXWS0AwNq4f%WJnVspv{3aZg&9r2>lJPm%J1m{6}s3hY5>T;lQa zvoX;77P1!(JJOpQ{y2w&Gsy> zTT1<{WZ0FH-rPP2Y@`AB8A&RAArCC#zS=q62n#e1xVd@)jN@q$V(hg0$c~4e9KWKbH1!5;TE0f_4{U^RvAE}7x(aYOo zr)QRY<$V=O%bgWAR4$tin1TF8@JQr%BrjQnQ7?_tO1Vx!e5A@07?lkG7sZ43s(6u2DCliK5pB{Ut&sXokEM1I)lk9bx{VW3>!uVFIR zQp8JI z-dUSo3rrui56@=(tL~=u z^y12bHo`f4s-E=Mt1>WBvUh8T%y;G86`wCF;D2cBeyiKti(aXUnWDS7xmPd|t>r7C z5qSJiX=B28w~Y-jOYj@K>khTZjy>(;JsU64U6T2Zv3ZO_NY*D}TL z^{uKK_0*N%RHO8D+}8q*QE=AdejK7)b_WI;zuRiqJy+5=lrfXIAK&aj_Px^DmS9tU zcg8V0;2~ayfOmvXZYCp%1QRgLo-`9=AaW-G{YxcrI2x_IYDt7;)CqrC;F~d~tfgL; zr=>!TVt>5TKV%sM1?e>jm`$!ZvbXi;Ha4A|>Ltw=|@oN{h%>sT=~_0}dut;dM2 z>J0-Y{9~IndUe#^oua4p<|p`AUcT(L`L}$d==$SXUS9t4>yT1fnA;tYOX%RNtyhhc z=;#y5`7&c#QSyB=N_%RiI~3-Jsp`|pOd=E`w7XB9<@reoR?1n6>tfTyw6*+m_Xx}; z8hg3vS-Regrtg-nZOwhbB1t?bX`|kqPiHSRQswb&d4)WU<8kfvY`eSgpUt)jZ#~(2 zmyoNv^rdRt@e|dCmgG{W2<;z=;U*49KlmQ4nUmCmi^iy&DAQ12sfFW+1CPwm6G;i% zvGjEve|4^3uccoOP_WP>O-{~#dUqk)Z#ld_49LB`(kYzJUU_n&qL6O-Yf*VAbWN*D z3M3F}FQn1sbL=)sPN^lJ2VHhgX-A))WehGq!qRklW1A3nn&&3Vj};MOlG1Uk_s^QB z!Zo!~2T3aW12kaS#7N2dE4pQ-Zku#tfYX+x7$`(SsII0t(jhk)07K}s?y?lVsE+VN zUcp5hGq(CHHW64MS5#OvDOf6W8-gE1dl`tpdqY;_xGz|Ek{S$p{K1^l~1k=mQWJVEL67wOWi+I zM?}=$u025ZAf4c5(me4AG3TnIo*3Odo=MvIsQV50#t(>@?E>|6s&yCFb5GV_OxCKl zdB-D1*@$IbrMa2C@hgjF4-fSDtCg+vVamf0YulKi_2T`}mSbc75wqblYn=z&=JDc3 zmOy7K@r_eB`mkXHYv^VtJYR*e7jQ$(Ze$o7Ol@=oH%edO8dz1m_CL3Q-Mi0pLhX}N zt6uHA!B7(j(?%F)6)Sj1rLXhx9$go9g$tqPhhnEZJ)tCO+afhX3(aujk;T(3%;+v$ zpIz@3^et!alcBOb-j!(}Zqnci-f!P;KTp;N+M!@o&l*2m*dncx!QrJu#Qj$6zPNOq zKK2+DEeqkp2qSCKO>F9UEbqSeMd-mV^Pkfs)USvuiiua*!71+ zzY<|oAcQFd2~NKW1-QjEJAYS}x@#e<_r>$|E$c|^);D^ibmqlorEZU+=={oC05vN- zM7B{owF_2>pstMExaQ>P ztAb)6Z}6>B5PcPg6_q;3zxEJ^0$kca@~t*Wd>1{7?@p120zD(e+bbd>VrjkR=g*(% z2_weM@5w9I9|CQLeRuWG9W0rR!%}J|!V_kE2`pgnebb8MMiT@^M!k#ugg_)Bd?h0j zX4tjllB*fQ(DxK7kpqYr$sV8#nN~CY1BfRcGq_EN~K^a2~u`^h$OU2#>&C@@o%zG=3q*7?;>g32L@757s zNZel-nN&5a#(s18FupfkygQi;f(`SRa(gF*D8yizwo|L5J@b#X0UGQiG~55 z<2@Vd{Au=RkFsQOnKXm@XM992L^{`0@g4~UYjM5E@b;;5ijwlDX|oo$Qv0qwfx%$2 z66L#XiOrk4RE2L3e+o2Jl9b^uKoxA{Tj_fhhH1(_Ic#k`3Q7-}J9N6t)_Vx;?_MU@ z(k|p}hjClsahwfu{V`C0`JHu~&+9z`%^q$ibDAR)dlc7Ur?_fx@bj0&f>>u~8 zc`!DYRwT$Q0-&Iv7O%MMsHlnO4`zhBOlTA(G>teUw?UegB?_?&D=tw{c6qujrf+1- zViMx>vNZ`vg7>KqQj+0=fx#G|ID3^8m!&G0krgD!6Hu+M63F@NG@R7dy1I^TZ?;32 z&kzG+8?+0dLgQk7o;Mc;^U*tv5aBDr3gH1FxNg5jk(;MTK@&E2LD?gh3^s4FW|OCw z(CLVhzE#P*VNowhW6OqOH+T0EgsCd>PZh!mLj;1a$V=q!g6$_0EtQxFAE_cTj#YzV znlvywS&1X6Fvwvs<*a6#ePU<=lX1S#9MUbRFcTN%OyZX~ww0kB%x;)U|r(sLoz8uwb93uP)-S5|!8M^ITt~@$>WZ&AM)l!#Z>ecjck@@%%RtwLm$D*bwCiBt~;O#PHYmiJJW0EogW$ zh|g>DR(`?G{VE#NItiXby3iWi_jJ;sje66sZ9$gKo%5U@_$q~nWRaLAiu+x>L$bUr zuoAdSom^|qj1v%V6hxzYcx(Ra54+<%b1>0lf@`I%7>jahLbY>f?Fl;%j|web=19=UwHU(+`n-H~s!2F1G~%*sm2@}>4p9*ztcYblN*W>&GlJD0 zkIYU5^HJ@q3Qs4VIjzop@^_yf;(k;2AFg0Pa%NHC_<+ef{+rU+q}$K#Z$bJ)G4>Zu z4Q7}emVYn|0paJSfijbq6Zy;`ouettzJq^CL$0X7)Q85C_4X(bd^Kk3hu}RLxB1V^ zHkL}OEwc8vDoJW90zvVVSwMgh1INH}{&cig#Myy+?lTYMAt<69IvbC=nJ}+a0xiIP zjcI%*C98v}`i8^DNui(hu?1u+8H^5=*&Avyz(Cd~9-K06qT?g|dm8QDaqQ8n>{sV@ z020(AB0fb>_UDG29mNbpfMYz`cR!1V%PLCc!~xeb?x;Q?MLKTUY>@kb{DSttMw1oV zxL3Yv7vHpz6qOWO zqz{VPJ6^T2Pxl>x>pW#cnD*qNfr;9$Vv}f_2Og(}fhB^W%Ck zzOi};9_G}X%lPT_t@{O0ssSAIzK<GI9`kH*hI^Q zbvVTGKMQRPWvYG~ZG4SeT_VW_jD0yE(#6?Zvj|8_f2KgSMxqy?;(ADA?qdEm zuIK!zm@(u;#@MYCk4@;r7suUHwzPYC$rLxk;p1Ht9dscf-Hj+>#rooxarbqxP~4^J zf}mIL@WO)O6D?2`1Sc8@D~v{{V$Hx&{d=SMyMH5tqYbpo{5!(v@<6{s{1bd$Mh`QQ zwWecY;*~=|bDTqj&%`Iu2$(rtEv2q#^JvBNB?PAwt`GWQ(RnkUMV++1c_GgaSI*aT@EMURa0 zf2%jsheQNyO5X|ZPo&Uu@IJ?twk^(`zr4OU;@3~mE8mkCleNtAaQs*mZlFniDulc; z&*{SD3%gh)@zKz>s z8GLbWk9znyqX?YTdw~kn z@2?D?2}4N(0F0t=%*05D##fz(Zw*7@O@DCy@Rp%~5pI&6^calwPbj(Vu<(CXfL31C z0u5cR`}qz0o*qXB4uB2);SllzM~p2@df(fOrieV|QuI2d^JeGDsQ8xYM^TZIxgura z)s3;sj5%H+vNyq&KXiOU(V(kUj(In;cAgmK<=fx8V;;NfU`=T8`$>ggfv$x-NMdQ( z>VEybYTMC2%foYX%foI8N10?e6nfKjSkqj0Vw2tff@vhDGw8IocCRYi^A+(mDw?B` zeWW?iVD~Yr#zUg!`sJ5q`&8$eqZl)#f#U!-<)p_7u4%}!7>3e+T%gJ0+|4;YVxA19 z7A*^0a;Do3K9<22W%{(^!Ti^%+V*&1lwcwlVJrxPnZHTF?nK3 z$Jya_{*yL?ZVgM*H2LhG#Py%tRVlsj?hE;V5ctV_!)j zI4AMT`wyAx%NA_B^yp(&*saMMQt+y}B<${`7L}70o4DF5r z<9Cqh-kb%gTftBC$Q$qYm8WYK*`wYO14Hbw?Yi0lWq*QLB*atF5Ol$hh%2|Z=5k2- z#WHtejjTDNO}Y2!H;N!9{wRCs)j);koF8a{E2wO`)ay$rj5~yphFB?EQZHOaQ=OB? zd~)+6ww<@9+aSf)se}5N_FFOY6s!1AMn*o{4n*i~&{2L^`Cu?&J(%_dlJd-QU-FjR zr(trY6)QCJzI8^L6(W0R$=a@Y-J$Q&y0OJi!Dhgzq+Il9`jB` zzB>7;8F$-KWJ$CGetx-p8t1l2Kig;m2(vBBxTIdzgRGG-kh{&_3o$i7q_u0Smb(> zSikwXpgqpzsr8|0dQORnz0Xm0GM)m%7x$akImq)a&l4|Fg-HTNF{lyI8unbp6SEUG zBRb(FZe7C zQtX?QQ5b~T3|DVg^o|_m$zRtN6MwgP7~7mLDM^YVA%@}>=b1adgv-{+9)blo+GxI^ zRgS4+iZVdPp-}&ti1(XzY(xQpWh@ur9UBN-H`PCqxMmYtwO>H{13*8J|9%<)4!IMg z0X-Z6;~fp6^EcOt8w?c}f)P5|S8S^Eka=W5mcA}Nwx8Vfj`%wU=uUK)z#=^;QA5+ z!Rj^`#vjRr4~(m_BldbkrLEo`X_uajd<;C@OoTou-H?(tVEj8tUK^Q~7?sRCXxJH} zv>ZT;72IZllw>Iuz`cSMxf<}a7$Z8_2*oA;=H@SED@6{we|BCpKRQOdT;+7cI=OXh z-XHyinSBF5UPoQqZ>%;88jb1=esP_qyk$koUzKqnh65r_r;(O?!nP#QgS>mabf$1eIb2#qG9^Z#8}Tu}AqWipD? z$_@h&Y3qSWgGnpy{*kQA{KAb{D&@7M2xH8$t-%AbriFtT%K1M?wBoI4sd!?EG2IgI9|FAgrNz*k$=%dkYB?qt41QFT5=UWOd6UthO;*E|@`VtAXypakc#`9jp$X$u=cfUV zFYpynWs1}c%8hp@W{MrD7)VMea99G~7YI=t50=F%uhz}y30L}3t=q-eP1a}|8*;w| zMw~zDAm||a?GGY9*Uvj5N@bD)RDgtRQ(d^&yXa=Z#@bF*Uu4t@a$Zff2Q@k51UT^; zb+oZa3vzhA%+7!pSqN-lzpKTBAxa&(RS@yB3=IFs1jp`OdR|?I_xO80h?k3p06oX~ zPEG08M_;Y2?(Fx=+BW&JE&+R)uIgdhrQ7w=ce@1^0+Ea9BEBJQ!b$^786ZwTs`3W4 zNBY}J$u4qTG|%0AvI416AqWH#01k^hn#Os0%B@P+w|1t=KONg2^BB@SMH8DDh>BtZ z84a9Kg51YQ$^M>H`MoUjOWZN*n)PQB68pC^we`)7HTO3}uEXw(G#QK8h8sDC>laH( z-wU^UO#u!f=v||PN8g3Xrf=0Pqu;6*zpXpZEE}-oT=n&LlQ?*~+00Pg?}|kLCpG>x*5Gw>!SrSreeVMyP`%vh4F(!jQZ_3cZ zc=EGjU1cAC*X|~}m_{;MXlU0L?a}CC-Pa)K0vLY&2zBWV#z7%r3U<+w<9fM4_tUq9 zuS{#;7gkv_u1K1@auVs}$|=pd=^ew^r-2e%1xi?P)lQv1)S+=#z$QP+AHe0B+09L3 z=vhLOWdcMpAu}>gj z*02!Bm2aVf3%sd`A8?}4zbi2bK0J6vY1H?am}+!EFTaw%F$$jLL6^sNhOGbuG5%bL z(VayVd~nVr@Z%xJVeI;fgz;>u^pEgTH#t0g5?JLG{PHLg1XFJ|i#@#}x-ZBisJjz|&kCd7n7QSR-eghLxlsUUPzezN2g~ONGm7u5M z=CSo*Okvzh>Gz#1_s@G2_?l|Y4&*Y+2~jOIg&esT8I+AUj7c{f6?MP8Q%6_c7WUi# zl0~-h1oZ~F`y-93E1!LWrzvSj8R)i&_Om~4)!p)vPT#!*2%=+hn!*-bEZKg;R_<=8 z>0vKV`Go$O{H>N%?_-k$5+=ny(~n5Im3iun8cI4M>6w$B{vJp{CKgXDm9$m!cXRF0 z{tKV}aP74ECs|s*aIAlV`#7iRZ&zjk+k9yqr^j)*41|HBpdib(*z1lfyl=+`kFvs) zwQussMro5g*J8VLfO&fb6^n+et7*b*2fLBhEEcSuZhhK6m6S1Vtg{A272gbl@;w2$L^#4%jzrYKRXyT3I)pyz>SF;Wg7kqeilV;R7NNXG$&I zB5#SsZ|@iGlx%&Ts=wWHY?c?_Z&xWIX4I4k%iS^@T#u`};Z9qkoSw1duw22nPW4!g zC(6Lx{{nvGTlKFHTn>xF0=@7K${s3-)|=`l(Xb;8-7KoySkSrnywKwmu@qECodevW zmW`gpvqUWy4zu{}AR*_Z5+%@`-=lc-rW2SZ_5S1=?Rt1oFDed-;x=+rL4bfffP5J; z=_NzE?%zL&qt!ljWtke4i~;wGq=cuvwko9*w&;U&Sk7A_igzO;c(H*KAF-4pX09q?LxA zh^4dG>uAhpbHFRKy89j!wP9vxtrT=Fv1HzFmhme8>g5P!=0QIK*{Q$TDcsNQ*@lv(?vYRQw~w`f_4B4$}xL;yVY!>{fLNgo+* zTl0C5zD6IRWIIa|HO&;&dH(m{Whw>6C;rg=clx# z=3PNezxobVgl^$o6%G*zA@QI|ZN?Ky@-inEwlB{2i{mJ{B(&QsJQic>5u>B(KlBya+d7K7W$OBjAA@IO4T=C~`)c2aq0bwSLO~ z;i!~IiAV2W-lV8eQDD2d={x4b0Cs&jE45JP7s~2q{a86$ zdYnflL9oYCXa4PNy-A9qs16MdS8yrznA~a)JI6Vr&*jtxAC5az4EvWm2Ka!qad;Y~ zL;|0|e=k*o>do3k<0N!Y7n!v_#tddh{#)cw#3&v9+c>E4Ezz?z#p?bcH0 z(H+sc+$t99`0(+*qzL}4MlI_T&?nEfJ!u|JKV$D?hT2i=KVW`ZcF*r;I_ob$-=>SI z-Iv|_)8_-%@yWP;dA|Ke`5X;-Fc8Tg+qcuthQ5s%W=_lxf5hE{^rUpN2P{?kA?XJQ zt;u*ggcAPaH`Ni0m@vny|ImZB1NTbzXqVBZ0?c|{X|R>El{qB0xjsMpc?#<}f}nb| zI<`Z20X$qXwr8QjH+H?;fG;(TR!ikdHTJ;`crP+xMIJZr7~UttYrk<n5EEHarf_x}Og{w5}o$G#R#bE==0bNO?(i zshAfUYx>&w5;H5tcckg9P~XA^M4yMfFd#+Har!nba#%*=!prUV7mWJU`FVn1B%tT3`afXWp+Aen=x`HB@ z6x+Xy%Rdx+&nbKHnH-~Aod&mHcz;Vjna(P#ePI+6+9mUy^DAw5wm955Zy zl(eb@+0dV1x_$ZI0CYf$zvwWxM;G4od=D$^3(C~hyaRbaCk!(oh8d8?T79W1Qn-e`|tyd*u76JDCoO(Vq5=1bj$P@=5Yi z(HUS?%e3;PlXE_Ud&+NmPT#%fI?o2TM`t%}&L32q;r&S?#;`dXPiJ}af6;{XSY{c9 zVVGv(e0Pi&djrwLId0p?Jp6~M%x^pXABTSDV|2jq`8|A$eC7vteIXB*mF+P6TP*6s zHZr9ycLNez5LRS^GeQc?kY?Nd%`UHDv2@d$H<2>}R6ICq(I^%HlvC2wZb;!xNVR8meY~xS8&_-_nU7L zY~a%Ku2MXV^?VG>m>6ST!<&IO9FH&46gF9MLI{9_C2(0-?mZt9{xwv*|GFN3m#KEE zXVvIE^vCs}@5Egx&r)OS=+C5D#z&o})_?PX<^1I{)!e!*F26$UGVwEOcdPOk3ll16 zvIXaufCd2m4m|PPZ2Z2rM0G&W)s?Mi(SsEZ6m{ zA*3lrOu`rnP%;Q;0qW_q!7)jN`4~Md7WOWRbt-reZwR93^Mj0T+LrheDS#WaGHjzT z(;Rba+g%z7?`$mb(3f+j%>rJPr06q^E_WQMs)|H$_Xol<&8`A)aQ)9*Un6w2Z(qy) zW*Bq>Zh>rW&Gtu{Ihsn?PsPF_dzG*@TjzO;P*{A%^lk5Yp})cTg#Ac9N{W*83k!@K zzh@_%ZzEV!#!XNn@Rqxhmf8!N+&^gw_PmE39e!$zrxtAi)5pH1nsm^gbFlE^?WM$T zynIJOD9#Hb1KDM?$M-kkq>8cV;T zc8DM#2eum|ukm$BrXOM&LFZ5>11awI`{ydG5hst!o0Ar3>Apnt@UL1bIOCR{U!@wwx^iw`xWx1pn}w2;SUR`?FfEl>>DaOy~H2Mb_CeQbjBuiEM+ zBYwy5h+-~yw6F6&yeHX%iW?p_bB)ut5?E@eb+`_YPC0eg&!3oK`0|z=nHT=fyo+H8 z$W`X{`qboW*?Sz|RLyK0ZI^mD#OBb1AqYY%H@Gg6RV&6gfLbZEIMhiPU|=5uv~;bR zp@>U0tT00bgyFO|@&fPK?o$8d2WB&T7vnTH9-6u)gmu>(f1vNFaCW>znZAv;hs$-D zbp>8Sel1`i$8SG<8%(m{zjBlxM=Fbh_I8%?t085(Yw-u$grv+zoc1_&anx~jxJb9q zKoY%9O3+zw%AxDRELN8Wr8~*ZuI9~;Iig=Co+pQ_8xY?zD4Nj*+~O|Bo5`};p19{e zfdiW8e{t*IAqUFubV!qcqKOo-cIK6@ZmfF&*%QDS?gL!yXyfcY_`0`tXI2 zsOC57`6E-D8PTW|GqATxm=!8iYPKTbiVrdzB^ERI$FjzD%tXz|4^MK7wC%gIsCG5b zbGzlo{BjXcA)}J)1SAVtb47GOyZ~=2ue0lK7SKrBcYhWWc}6-tCxrHSgrG6lBAAjq zaU`l-d!BnTP11qN^Mg8o2EyN~+-B7vY&VQ-;IRoC<_b&Ogs>-z z8oL7ml_{y(+X_$3U&EF)c1SQsqr)f`WSn4AjQ?16W<7!g30a+nS)R=}Z&{0ER&)+| z={hYIw=vXizN?hC=AKC32?)Nv_G*#?%1=59IHOFk@|@Te?Bw|fbEd*&vQFtU+c<23 z*H=u&p-(AwuM^9otA#tAzqZQESI2dSp$eytV*YJ8fPi&RoO4lT*!bDw-fZy;C%mZ{ z$O;kR3~Tc8hLyv8vc@*O;_ZI56KWnY>&fOWKS$$tz^$6OgMEX)+k59g03Fppt~zm2 zV4;o*IvwBNLBWqef2QaN=8-L=X|(GB>{5xP{Eutl?T&ZP$cr%Ir>E=uQTvnUeyn`9 zZ@n*Z0Z_PI~iB#GP@!x zrKcO{m^s)Bzo31|p6kM*-;j*H2Mq!Q+GNq)!+8pRk~q3ixeKRMeZ@F+GJ7PfsPun- zb~{MY;1*M$a(pl^XDv})kopWdMj$RxxRwkZ;Fq7tOB?mM44BbHgfu3VLD3;V^k_>$?8S@xZY} z3B&rd>4dM{8Z`^>*p27* z?CuAFli19Kmz(d>BynV9wdu1Eo-9m?TyHiUXrF2PBTKbz4dEJool6h4r=;V!lGZ!O zTS*Vv6A!E(0EaiU*E317{taszT5X#Mvz?Kdjf^KQX7A8!2O7(3@@1|=<|wVMb>#iOm} z`Ty{KJ@%2U?GN8@JX#sa%Q##vRl{KqA5In2W<3E!v_wFMh$+M_G1y<0(lW*&2hpZe zgl2+YhC$C{wVs~F&0C()C|n#DpXtl1W_l3LlhdYD&nCfvxn95K?l_uvs$+-kw1LOk$3f$ zTm;~=#aDOjpG?}X(Ak^@_RK{$QYs@!F@MUf1x3&<(!LFQJa#m({be?d1E4!JpEPayQ?X0NTq_X-o`kS>O z=nWY0Pc5hC?IWG|2=Xwee{PLrpKOcRyTe-PnhaIjVaibgl6_j!FTXqHdfpJfXS}~O zOJbY1mL@_G5E%vRa4=ynUPRRJdtJn7FB8RqzKXYY$NQSsVyQ7S@8>OIu)97n9ytxU zy5UkINPsH42uvNJ{JL(_k%!m#I24N1IDEy*`OHX!C0?zMqtNxSvJ)nlZPr#{hGXz^+WjQGqi4tZuHGONl)oH z4(f7mG&7z#OhQJ_SL?`!U3{jyTc65mEW3Jw67kp5OcG}`Acd`g9IO3A$rZfZ@I>VV zh@@Jy7Y*7Zz>P%!I?E-DIqj{+&o%#y{9NOcuXSzn2n5&uGC=Lf(_~0YR0aw4#w<2t z<|Ay5tLxBeX#E`RFo$829G+LDo7cGT|66Cj1%|vcQfcWi0gM1bd5YePi6+%K#@|i5tT(N1 zdzg_-*ZGCj0)=@~$***`^YO2XK<1QT^+VP0tC?L5TsJ&e{SSWYR`sxbeeR~}aDY*_ zPqQas#_>N0PK{64rK%Y zK`tJ=yXqz4&fx0laT}~+G6Du>Z>1*HL;oi4bM}w6_cdp17`IK8S-lu#vcjloVS{E~ zc2GThURAr4>_fZVKBSJ=r=NW5Al}$-TV$?QlN8001{t(e}rD000XgZ~?ZbxkX;4!i3hh z%Ybxu9o0ehVE3Osya0RH0005?&;Td{cU%Ain!xR!4)+V#03P>`gQY+|zzhg|$t1n9 zjk2$z$QVHBMG6QqX=oEOqvFafEoa3 z0MHEp02%^jfB+K{OjF6IH8c<-BTWDRBM<-yiKa}A02&a+fFsc|G{nL*(3w39Kmclb z69~zPiK78crkh07KLpW{l4c<`B=tQBvS`XG|B2|rqT^EX`@Xv^)%XyfuKa9fRxilX-%X&BSxX=p_4`thNr28 zHkzB#H38|A@kVNFqiP;TQ_-o7Pe{g-5$QaT#63?_LrhGXXf$GE!ZK;5fPgB!L>82x7%6ccL(A0me=V1}$7#XQeB>=bwCi>gLxq>^psn@3`m)YsY*=1!xRkI;n`nOh4P8jLQm( zEeBy`p7f-6GGc=3GsX0+RkqtqX;3kcygbp-A%>b^b*QO?5y_N0)U@PP=tJyZCIjnN zXDqQlSm`=RZ^>0HEj|$Vhg0gG=8@`8=N(Rjc8__`{hz4vpU`$b>&cPj9k#Lc-+xkl za>uOaU5fnABX|}`0GHu52d5!rK&HPbGOWj^8~+3)V(w#Z1DT~V)*rIgA7CX!#vFc6 zq4|98vrkWd7l;31{?uJX&QUcfLI`7j;RH#;4H8x($<86Ez}HT_`~o9qk{ucvGK?L=ige2hJV@pdan$jYjVPIDEoQ+AE^GrmjArpbq7<5 zuCtte9EluLhuxi;G-U_0UjPObVPog%vqC{+X6FO5*k-G50=pk6<_LJUL)whFTfBe0 z-%yMdO+tVK*S1+p*r~K1n<_+aE;H)r2Uc6k^hwZ|BzeaYP=3g~0M}ioXlzI9Weo?( z07gL<@+n>9iah(OG1-qvnf5R}j=s&w+&m2Z)czF1?N}S5i(Q>Xz_SeFGU2lODnsWG zJqVho6_qt)sSn;x9?SC5YWYG2?th`oxfyaXiLYp9HG|}F85%Y(kBe>K1ux$>44(yQ z(6J~hHh!LZTJkyKPE|T}olZ<8#Wd?~Q0l(o?A@ls+WRpDR?euVsxMkHnyHjK(WF*w z-7v7i`GH-We;A=q+(RiUe&Fq95}bck6F93 z-+4cEm5cLpqVLj~`2;_f)&dBbJcufnx$#$LJ44!G{ctCLCsb%OrJH5}0h><4qh-Da zA31-aZWHQGB{GK*uL&kQYZMn^R}91aE^%MmyB=$H)6}PW=W3-aeoOko z9=BzR3TVQj$aSeY3@R+zlPLK~>!7}WnE`lbf&#?B1C>HC5IGWI&tpY;JdJL@)D)U; z^JB*Ty(b&ra}1{fe*3}dFT*+|HAUjGquAJN=~A6_ISGb_D zdiMrRwjCq*bBbt!mXArDz~?v>|2j{c)Xu>lQncwPclgEpbT_8MqM0g!vwro)Gxnp% zh;J^4zXroh)_MHj$pQFSX+pFbMqRVv@h(nc=pG{rZz)jwL_Y~R$=fsFyA%FQsi(c5 zVTU;=oUgx^OKyVgt6h%zNp);8632rfox4{^V!>;~6F&qv5jT$UkkVhyE#wDw4|vYt z7_72mA));n#dprHRcU_7t)s>EpV`BoSC{>UtjGR~aaFIGsXhrjQmiDjjkMUbV>Ta5 zUcodiE8DX67Nj!NQ0)^5mSw|GEf4|O3=eEDD#bqgEW|s4U6s2*IVh{*4Bzxx;8}#& zn<8grBls2?n6u%I*H>>6$pxaaw4xIy)cmnx> zVTrl0V=mZ$&&l7@FD3YMGnu~c#ISuyLIAaSVcuWI_4zTZ6QgGi;|3fvmX!+SB7mgj zD*<4$+A>M}b_6oWc|dDiY;J|^51f!K*8;xiojR&|bd=wA@3 zFp?1&A|QPj>8@6@Br(Sdy9oM9eV+T>=0N&CdG!&N+Rt9e{gU5idk!#Xq(wwfbnL7$ zBKCWx{kOtFM3+PE&{0k8!6_n6iJ0|0Ycs1vS;bG^NbJEeBp%}1D0r5>l=Gl1NRQL_Y-oGl-N)#Mc(@jOee;u$!=Dsl964h%Aq)R;q@z1!hoi|9kqW zJLc?j?yfaLy}0O~3{qM#qVW%VEz8#k6S$%G-MwzcloKS$y;xa1beJd+mLLv`-wuTq zsz79Twk}PL7cZ@6#DUMX3N3^Jv0as^zOuHBaUY+=|JU-YUWMO&b&>F69sAavEOlE% zbHSO3IS-`IQxC1YI1Va(U!g9?D0gz3$%5L^YN2V7T8`sUXg{u0H^;Fi3AWCN1p`$r zm5o+n@R&N5C=EoY@j$4v%tw9r8~JRU_Bz>CaGsYJjIKM^N0f8U zLy(z;9eHj>j}jc>jXidmfaHgm-Y8G({zxn^dI-txUq&Q$5H~T7#P`g8n9^nVt#|9p z^t+0broe<48bR~89qBI8n8xXh6D|OhDKyVx)7penG+~c{f1yq z<+DKz1sz16u42o|yf6@$<3WTb@SuEcj52)8>&AaRa33C-$94hWL$^ELSHi`m2NOuD zart}_rOZ#mY;K(*e|4gUEeYN&+1VEU3OT4(P&y)MKK{0-RA4{?kYc4J zfjaPp02zy~DJ0%7^Ur3P#KAvE&wY?u%3B&Hu!wMvswLAYn?tG7xt($p<$e`Dfd9?q zaNjkvkfP-+wBPc!$<~+iUPj0Gy)ioe{-6W3|7X?|SV-t&$%^f?NTos5Nrg*`>~t&8 zCg`^gbq_Y$1sG8Cv1CqFg)T8zWugJ2+(KI%Beswi!{4SJb$BU5)p{D(dEyN5v~QXtEcv_*upo%1onAH))1{qrtoyx5WA5SsmacyBbraHufz2WDv{ zM~k+LiiZvQp5md0^hxNE<|a$TdPF^A8|)Yi{(u+`fr^WezY9XdShsXx%I1Ftuv2zd z^aE&QelYk|GG`#O_7_s4VlXp4I|)_p~Dyp@sVFVPr5={;i>D@(3- zb4I)F#nXb#g8<0_F^B_FS@ddTiLlLpt^kn0ciiPHqB6j|OAn;=v?*_IU|jtWiVp9pW8OVmju@<9}W!Fu6hixMEnEGWvc0*aAA zj9RM2i$N6q+;kv}Tv|sr4;2nziV7@LVHPN5T?R}f3_W2mkzpz*3L@*%X4zb7-7-<7 z#LjLeR8cX3TbC+1G{!X37ffd8_Yz=a*JTRAu$3W+T9lxw+G(Z?cfG{hixgL7y@gQ) z0R^m3bGy_`sfMi5%7&>db=|>)QebG?$P0@45;4d%#M%gIVKUuURjk_4#ORX;C}E3S z7SXg~(~8pxn~6=$&T!mdeIeVz<vo zBfHU*hikrFzO^*FPVqUae|7{L-72k zF)%HH{sgD+V=hpaiiJHjW>WJH(E20@a$Rxc!G#gXvfqZ$Dp<9m{~6)dyrPQtx1oYv zg>u8ImcyiA7fk_=cmaPn=F|qI0VW(qTz@4HqPF;G2?Zv?FlsF0lt$r5dO3sfFq07O zRt>6jsE#J1v0$?urW=1b=@&Ni1T?~Yo2BL^7ApKzdy<6|}DbscutY zP#$s{_%qWIO7Q6&r_`Q`m}BlV`f@;~2ndl5He)^xVMxO_e;wM-S5SInsxj9oD)e6aLqlG4 zenU8^rFljs1{S6-X}hAg4$*%g(N&tZWoW5YBw{E)*@mQoBo0FY=6eE2zs7^)FOeT7 zRTnd{ziKWOi5QsGNg5%B8BQdxZ{QociX^LUASCZ=}T#slj78IEa*9W{dM<_ahYmkjo{Y~vH$d|#`?~`b9!(coN>J_ zUyU)&%de2U_tH1@2Kc~L%6h|B8u~+?k~M(L#*s_b4zSXwXc(S#tTqPICDcHOoMbYa z5*#peGHHWBKij?)Dhk9>MMjotPJzQH7c9Xd`$L1G(&c#dW&7;SEY?u>c4JcXS6W+~ zOSsZ$@948(E3CM%!!e%ufS16k1dS&x2;FaBLfJHxhJ}ga+rggIh5OihpB`E50BMAB z@Mu#u(WMy1mXKo_frTvGbFZt-*y^d_oquIo9yviR+CAFx)Xn-q(Va0Pm)aC?Zq3%x z)2)Bl1aYr$x7T~>eUmUVrFkplQV$uv)n=fu=C%jY43g+M^BGgQzKnVz9uSdGM4glX zKX?tx0nnIorZ60-mJ-BGLndisGa3ljUHVgp}qOdkw2#k>#Hb*81YLHnL8XS!c4=+}l9(I_+ z1y-7v!g{-PbAntv1}Z8ni0U;c&vr8l5Y(i|UD!|8`yZD14`Dws_)nwa+3CmW53SSY zNY1kj!MbDOIDa{=^||A0Y&05PyUrH>8;(+Sl(pr{GO^Ej%g-}KT@v-JcbzM4I2EqE zuWOs;P^jB!t<>c2gUd`k`IK)>Hs!8G@wMtVp<%4=Mz+h91FOaG$Bw%`Bx-e)8nzjX(|@$&nuQ9;^u<;z zGvOXdMjb|{<{e~-u&ym!7HwWQ>FJ?ED-SO<2-fU&Rh;oOgaq>R5)9+nv~`bAgy_d& zW$6r^1cw!wL$7K>qK66Wp4m4O=9|%^GR_=8b?EM98AEhV%s|{{MZ0KrdkfNM5jWX3 zFxrOm&`H}4hB{Xfc{HMLS;S`$;%&zhCD<%omMJ$`V>?D?1)EyQsbVpVShnx3t4Uun z+gz)cxeKvHf4u^`M){45z2lMQF3Sju zA_T30<1=Y7yP0;cv>4Y9=G5aD6-I*P<>&8JF&go$gA$3I;0=0_!U;U!0>orHi}!OzNafqiZFZpQ_EuGyDpRwP5oFdi+a&Vi76m3K9H= z@E_BNnyky06!51`Ub9gYsFIeR{fO-`VkAg~L*P_b@b@Qq1mvm|Tb&`${&MPyQ>H{b z-Q>fuGH7NT5f2^n&OWu8#8+Uva*}kWVcwybOXWD}+;SZlh@Z>7O; zXe_{v?AYOj)^Z$Wqe^%|l?F5UQX(bRWIZLQu;Io!>$tp`)S*R<1^Xo?IFAx5(j_KL znaw|x%7Ls1+7bl=TgDBfx2*~Va&d1^HC`lR~jp9 z?cEQQ(s^M#Lwso1~jigtBrE<>`jmCD#CM#pB&^IJvUlx#wS##n9})ev)gVt zZ+pAbIYF&7eD=WOT&{c-%WrYpTqW}@`XU@cZxNq5?2zu5WM8w=ZJ`K#wr?5lYjP@*bTR88E z$l}gJILL5vY+Vp1F*&R{u`q{I)s%-&z|a^*JmfemB-M*_R+yCozT`lRi(nZAV zXt*er<04__GX}=afRZJMAxNm0um&LoA%p^qLz|PQ?Po_Cc09o6JA8iH@$129Yu&E{ zUjxI`bz@pttn}VAFLceALw;HCUmF*!%j7lWo5p8BCtN;4>o>O<+NYAe$Q$Tyi`N9z z&lSC6Oy`5IH+Rc!Cp^)C_vAU&QhaU8Zdlf~y@o52)#+mQT4?bmwZ-W>^1Q9N z@q;?X2SOjk?Xkf|D4YSoD-w*oUv1YtCi z#<2!y9+?SKo{%>4Iej+%hY5trKsk7@iZ10#-*zWQ0BSTtj=$YbE63b z1*A~S(oRluS-w7JwU)3sJce@rpuyi3v$Kr`(~%qB{u7;Kqyh-Nn7rH&H|Ve%6SJ)<3+F2*K$%~_3t+;XWYMtegbi* zX7Q=Pr0jpkO-#{h#dJb$%9N+fh{h!djW?{NQ@$$rP*fa$NT|t0B#4Vv|h$>@DPJjG3JHSDMQd7gghM z+_G?u%+Fsz)5^~BDPk#D02X4lbu`3~5QhXbUzMmSxr>5;p3W&q0A55GQ23G(0z@k) zISdJy(Fn~jTlT88@^;yox^mw&iCQRORV>e3S29EUcU)K%{mLwftqSP3io2c@Yhkd) zcIXac5*y$F`KF$8w zx;Zerh24Oqa&_=fEv=cott)e(CYozbc2*%*+Q`02>>1rsXqC*}fg_i|dMWrXzzMuz z5VFq0u9EmuW6Cb|)?u+OELEXs9EpEn5{Xe=L0eey(d8fHfhxJS8>y1 zDp{=98+?}~@O>HMV|nuHJKZbYEK@&iac5)6Twd@VVPH9g|0R>5`Bid$@1uA}0I&LP z$x`puJi0h1Uhe7vzZGt~_U3wTqS@vV(ZTd8`cK;Vtdv%_+raET^0xea;)D)R6G7}hpYM`wJ~>-RFU@XPLmN!=Kfmp zF2~!peH4np2Ez*TPytjiSE;(s82#_wCy{McV?bkH34RoHN!YnB>S3?UGRjZES_Afj z^5_`=B#=Z*{JJDOw-EXTXdywieEi-u;kIMtmF@X={Uv{;7FJ#yJ>(@-i{X4y_de5O z{+p2+1AWYp0|CMYg^VEfkw`xU`mD(e!c2EzKb_B~!Aio~HrkVPAf+$n=C@K?fr05T z!@Z3UH>$JD>nEnn&2NiWEqn&?RbzTdYtH{THh1@S{>*4HAh`uF8oo!Ek(PkNk=HX| zz^k+Dw{Cp0F8u5pYH>)yyaHZiT2G}y(+>y`0OPnzv|{e18}$6j6MviyHdn{?VD+vT zz#PN?6bQh=FTd*8rz$7#(57wSDti2;u45neP%1SxR;%kSkHJL?Ml+(;!RPI&waM@~ zV6*u4$e5!9s^-}iFz_T6XQyT;D&qh{MA8mvf?U*sVdvM>e+}G@`wJiCc3zIh4I=)c z=5x;LxS9UCBfF-&H`QB9eGS4km{08vx|#vUGacE3Ax5EC=z&zZw3#G8*J11Rvk_5F zixtJ9h<=;nbUwF`ayUDF+q&TUedC7lD3q}VQreY@R2E;Q=Jnhyyq$qIstFO8BXoKq zA4-1-18;RpY64*Y@1HR?HLZ|7XeV_4hvrBh(O=yQ6J@%d=e@quZTYsgkcJ&t9|S{fxNfgf#Jfb+cp>>WhAJu6oRaL?iVcXPX{miuve< zXt1L{<=xXhGyNAtP9x)cDgPFNDBL{BQsnjg?SgHiv10xhNSqy7&>Jb7N|4Hwf<|;3SrEdIe;z8E)ZWjH89FPr)il|0IGjh}BM9ZCI4~i~-vdDs z;lXUm=VJxX2o$21z)scHXLZ^YipO7kmcfv|b4ejwmYlt!cZeDgCa$ifUbOErD83Be z{Sn4EhAwx^v{$uq8bKt~Lm_nXUcX^KdcQsGB+}poc#(l+*snzab?Fg<219GaV*#Z~ zU4sTB@r>WsHjBhvf&hrl!9oZ49n(9?DrFS795X#BB_tTF5_@L?8DiK{Oqs>SRdbve zmYP{EM4;rQ5~UKB7&2)u9n>^dYL%c8EgfYuoaP5xrZQ7NG&^??#)UEeg2jfjG#8FX z0tgKO@MnhS%F6Qb%+hsen)wWWyw=K7y2DkC?EijLHfE)yC)g;Pp-K}l5k(|`DqKVdvKyv9Fk=--j^%ni~;h+{JBEB zWFNOCSPXj9fzeyg$B~5`-K)4ejoebs*~7PLB@i)<#rLl5C+ykfHNWJ0|MF8={X8YO zk~Ug7oThqezUoF^1S|Aq!D*`NqTw8`aCG0U^a{yW@=5W<7^191Rbr}$$jHSKK}Qw^ zMk|OO^kgA3zRt6+`+@b{U+HVL`V?PT_PE6oI>l{eV}37PovAKQ&||axKYQ8ElZb{H zFFWAK%k|xjDPW{Wr#8I9g+AePcLoaqs@;gHjGQGmU-2ZGmNJ><9s zn*b4c=dtG(LJ~=^N^Bzk9y}CwNaI38IADU^V;Lz-bz&(=I!vmxN06RLn>31t!(*nz zImKk`%#%TNe)2*@jEX~&JNly44ceYQf*l@=)d#B1zVgkQcCr?)T6SetX|pX+)a7;( zSbpo^fqU{2#1T&ip{%58CE!woWzpZ`!R?Crj(TTYxzQ{Uo2^H!O5$SzENJ$K!n4o% z73F}RN2|jQMiW8K(x5u66;e58K(rw214i^~R>hspLJtIJwDOn$9X|_&?D}c1Yj*(> zrYW39W$s9ykGscsa0|T~2xv^8Gh{KK;USDlil!}s8FFw$#4w&8rpcZ5sijJ9Cgyhp z-Dd{oxHgn#xTXS_OClsOyPTOaC%X*$4Fq=jF8~p2fxMmiU~{XmFh+owAi~}0Ha7%F zEWl8R7UCI@Pzz3}0gI(#IerCP_2|%o&(V^%Oxd4!4kw798kO<^h>f#?pV;P>U zbrr!8%a+l&+Au(^P_i`7HyAMsKC6flG#qouYT-gsOtw|i$RUcBomZ5*B{mU&wy_%M zzGuYAj_s;g|9b*bcanptz4!8`mx7kR!NcoVb&j4)DjCprzD+zDFn`W}zvR(Ih6VQg znASbr8Vj<0*ENNS4 zvh^COvF)|ka`d7&h;d+Xr$ef$=K2V|Z~+7uh#(jnpcQFTIy^`13=VkPM~<4%b%-8_ z#=vd{!FD=f4#7FFEeN2%y|B&v106HX=m;Q>wRk)#38o$)@MDF1MK5Ho+cK^4C zb&;~0ek_{SNTC*n!y!NNrn{yKt@pa#?VPVwLrs%fxMt}FB@~*6{juR2uJ1Q`U_#V$<@et)2#e=S}!UFtN{ zjFWmk?JE?XBlZl#KJD>eOR~wgda3`z*(YgL*ubljn*8O1kJZskE(pMz)TDVF4`oyU zOr?xYocqu!t6+|pI zMn~S8ctD-bk2vm}S?SPbq2@)-bry&74Ap)ULf)XcnbwZs8 zXeckHs;^G68t4>32C&4QrzOHMC>!(^#16xJ!SHhmfg<%xI;hU4lgi|fS+P08&6r*} zCStmY=A!zzRY5D-q*_Cs6(q$=NJ61Bg7Ja^%Si%KOaZh3fp)P~dH8nf3n(zurEqx3 z#WuU#8JXO#8t|)`Fv%nZgq-Jdh*Nplop!<;HyGh+ZtO}dA;8HymO%MVtR(CZ+XVyH z#lu7cpN9t?qTLj?0KJ#EM#B(rkl9ws0}xn(Aqc9*D#5!&L8OAg85LGYLPY?H1O_os zQYio!8#Tr`F3F2zha{7ib=N~!5f~7Nq5}pogpd?D305l<6-ba`sF9I^gCH>!812)0 z24k{GvrRLi3{nEDMlu3}5J5)YioymuvD>1d)+wZcD%luC6bXgajssZ3h1^gL8N=q# z1IcbthKz-XkwYv#%{LNuuID<=$DL1*$Zm>?q9)dT;%~6p!$^Y@97Sg;=P=~*fH*M> zsEV>gQ~^jS1OrK8baqWLYph{0j6g*gA_*34*x8Asyu3^TOlsJQqKLuL^zPja3>vbm zwu$Fi`6w1M*U3hb=g64YV`wGmpLaysppYXloc7gVhW% z5FR;st`t!u;jj(F!EEuWmk4ndXo$QVX&k(6LFqw_h~4|Ns7tOgAZ*8BS(_*7GTSP4 ze8>ZG&cT#1A!~*nWJ<+|L176Ik!7)+Tm9@FZxmiD59?x|Ap){V0Q+Cz8SkIJ7aPd z|F;ifMszAmsUERJHi^~LFRvNOfJqKfg=?;jCXoGBqnejXIk zLmsLqFRw>i`u|#0nnrgc8wsP?WQjyZ!5}eu`C9KNW!L%*LVA?%miF; z>%n2zv0_*KyUK3M5ZCA4w-gsmoTN^YJN;xoQx_Ha_cC^u97?NH!%8*F{U`dOy zZpF0P5|kx8VgWG%_M|?vhm|>2B}Tep%>6ZUV?}AgF}}Ny=n=B8ezocD_~7V1uSKac zh9**)`(6~*Moz|11d9{XaCDi7XoiSZO96-gQDA`a#(;EG?5BQmM6+y4j!F_RlvKpZ zAfgEtTP|@j%p-){V-lZLPGDn8j;$o=@WWQ)>gkdb3l_JE1njj@2OsQ|Mr$}?tj9|*NB-+y9FI$pd0E!9+<&#>ZoIP9qRVAnAt@Tv*V^1F5LVAGz%P-|sb`G{@Vv zd2EH9$kzGt<-Ptd*n1uZxPiffKp5t}b@J?2HPO!IgD}aQs>C`3&fOJCMM3VAL4%@% zNhX5HTD>N9QDE5^MMSxE5d(;b03YxePy}~TfMtk|cZu*@(MaY(K6UbB9ZoRV!34oO zO0c;&qD_M0YVVe z<859<*Vj220x|%N2mmm|dBnhiUBDF$aIILiYPF(QQ=IM560Qv-TLdE0KsJPek%BRb zgd!}6#sq|gTFlK_OtUGuowtXBk)$<~utfzFP+1lzs+6&Y*|U2vGQvgxq6&rGqHST3 zjksfje+r3G2?9X36UB&KU@Bpvb*j8*(bGblB5{MIm?GOiQqmuk2-2if2*4|BuvY{S zODILC1VHbiX(Q2X^i{xzHx%*Wo5%syTc%PzMD1X>SUq$Nn-$qZbG?9C?eDxc^F@r8 zq?RgjK70WKO*P-=vMHdVPd4Vsn04J*jK|_8l58k-*f?x3BvLT=q81h-K?QRDZSMW@ zxTtd+4J#ymY^3-SkUS2%LcCn*XLlTc-iMu=$>1BMVhte#aY_7K5JA8t6T);ZAsD5c zfWHl6)*HeBdf+Sv+C@I7i{cAme|=MsAFTS?us*9M3cNX1x{ zhUl{#j!1YwFGun3CJdxUb%%Sv>U*Oo6NeF|pmm#QBLSnJpRhI42_(5F%>m zm!7F+(7s#$Zzjc`OiyQ|T2iVp(7=8aQGgdoSHbH)x^% zwVO(ffPsNCunW1zI!291O9k`n35`-d_aX+srmAU_!j>s9jEl@FuNMJ57(+0EBdUo?De|OHK#sA#wILYfS-TfCj%|kkf z@-ut=I3lV{`BeXK7?yhs8hynt%Kb*?Dx(Jaa?=I+pkQrp@v$KtIUj0SUEB8&GAHE6 z&NSPD(YW=$7S}N@tKd)HPXAN0ka#zC4&Q>8CS}_YHVLy^os_+#Ljo*M1Hh&bQXC5; zM2NcDDDQeaLQOn~F?)#B?x%ISpfmQ!EraXg1L!%AO$s9R7h2AR6u_xM7}`$ogUsXD zz@NqVla;p(*M;Q47qgCnFt`(BpNvS-0FYB``%~@6%*Wmz!0>20Lqhw1?L)En|4FZb z_cm&u%4e)i<2LU%>hcs>`BsyZ`kWWQv*2R;m&KL@x|>TsM@#C}Q8dQNTx03Ed5eif zCpi-&%m*gVzTzo{jEW*GQ2(zU>zXW2+Hs17r-6xtFndJ(ZockmP0wrM{l0WQjl15L z6~tc?i(!Oc;HCTY!6BQAmbUZone!fXo9hr*%|RPDjm!lfU#gRN#!}Nfw=W%|4)d1$ z*385=lHWJkV8(j4lZ?Lh*C~YdO?(cK1`MbLts>hnbO^>2*?K2UQjKBH+Y?b>c zrTNhfoSDJm%}L@jBfWsvu@z~KA)39)H{45km8({&z=~36UL#`xgx)}GVd=al}y=Y z_;snzx<>wq4ZJfq?6WYPV-C5%hc@>3sG=&n7xF3P9L0S7DZKLEE8y9qBE=3@6CXL5 zUK7VmE*c^q9q6+u?;e}0q1`_>@2_Z`SD2>r3h>e?4+Vu!At$3r!)94FFz-DrCRn87 zb=CyOI){RRATA@#-Xm-W%T*x;5QQxXEBm>$t3jYHjPhO{hxk% z{7u8R8NA@w+*w^+!6%n87;w5+G&_;;(rc!Oo`JqY>Iq57Up1mQ9z6|8F|IB&P5(8o ziOhmlzUzObUR!6hB$FlNk(v>c9!7a$&f`#Cy<_Y7xTx1EaceShF?Osiw81=HO!tIt zWnuGE>SL+3Bj>trt+`X+umt5pWFMxyB?(%2RWWkO2>{uI`@w!ZW znUwSpvn7j#K3Z^a+* z40en@e&0C@0xOO&u`8+dKD<1;z_lwWMViK==yw5cyFH9O-CuhTEyJ2NJIJ`$@9a|( zxvgNVB}x!d#H56QUn+x8k0~7=5&CLopat2PBdWViEGsp-ydL7g)YukOk|}x|2*T`a z0VAdyGjAVL?&&Q|NVd^@>o9mN1mdtd2x`tjY6Hsl*Is0ahsNtdfk^9%&f(`VIow>!?qzEykST@B*P_Ef&opnx29;29} zq5ejysZu(d246grqx)2)2mogI7G{%NQ7Pk0Y2;p6ePYcR(I5$$vJ`8GJ%f_;$c>jV zEtm>o5fGANf(o}3acQAg6FIp(jX0DeHM;>Ih9rPuv>>9GLy>PybwtJJH62_LVk(dc zd#dwNNNGO~)lx`PdYMvqGCI|eWaAm`WHi?^cDvJrkg2}MhFQJBw-Q= zkXA&JM2w7x528tA0g%pVh1w1ML=TAktk|LXZ6T^dnTb8nnaV5*7n{p}*Gu4Q?g{02 z+Iv%aY=NLN&iV-Y~mO9)t!`X*cuO4i=j{Ay*H0*ow1|jpczc&8{m&ZZI;I`tzW9H}v-1$jy3n(~^;pMnmv+g> zU=UI)0k+Zr75(&kPp==rp`5rcHtaheLPWH&9%dxEr#-dd*tlT+34{lB%1uJ~#o+ss z)mQj-iTqSOkIOHZBEI=&sSct8AfJn{$JEROeW!8x`~^o<*Y{%_qV%os9Y z_4f*QHzpb{<}=qb?DRAqoj5cmS%j<#?%Od-pH*_^r?c&EUYz!6`cF}}Czap5E+2)D zbpMGBzE6524BEhU+!)b5$@>OrTCC3_O^G7a0pRK8ah%&u{vfsHOYO~Qwp428LpOQY zD`Z8?h+e{vD)HAb`9skmD`9Gh(t|@j}v@J_*ZKA(FiHLcu-!PvW z98wrISCml=dWGHg)Z^>^6A*mr@(p?XC~Y!6&)okTPdD#xNCz;hgW#c7=Mcysh?w5M zPjaq~N#+)faCqbx&Xu$zg{Y`$CFd{g*@&l7v3e-yF9M1{i9%9y&<0)VitSYSw~q8Nygk!FruGw0ruy7(;aQx5*Zfr-J#&J5J?8_dU! z`_>|e^hOXpqvJIeLSALVA{q7X!81O%uZf{q4=T=wQ+JbZNv6i4tws0gh8=C8myqCR ztU{o^BVD@V0PVA#^?rL?{v)xU3pQZ{)bb@ZP9r&@glgKU)25H$tVYezn}bp5LA_@@ z*GtgYkTL0Bkp9cHc@WHqAlT(^=5r2?JH+N=c|<>ptdZ0-O`skYfk=0-P0kXALK?`W zxSE*bpysSmNdP2$z23y?8_(wHjKLob!WekWCJ<8=!DSP`|28_T=z@Tuyo2~9uX>ru zlM!KvnM3`WGUs<&dDd1asU!zlF(9)mQAOu1MQVs*>Ef|_-$)0DCAIbFO9>BY@fJ>) zgdH*a`iI0Jnj>t#;s#qaKQ&)`?b8R?zsh!M4726JDV)bOhJtbiq?+a|UnC8M)9+a- zLEStw4zUBVEioqOwaldw7e2Iy=IhR9N+~czMjGATFSeyOK>IxwEy8tsUDTaZcx$-j zG;}$9lqbW;Tsx_25rL%A9B0arXs13v%G5qYqT)$7&?}fmK_I!S`;=-3YVat`)+-Y2 z{<10<(!OBQ_VZdzi3Y51k>xGSpl{df^oc=WmFw*b3CF_nl9*`*ycjV?kvX7~7#ZO5DN*`-aRTeb6Y zdpr)yd#fVT;f~97G;X!!CJe((JN)z&>-Mll$^$K%H^#f2(n|FRUi=UYNrOP65Mq&n zpphVvfXKxZ5nzc12#jDP84xuM!1vd|@UPHm0D_RHY#W1c&BYycsZ9q;!=kI=U(YEp6jO`jY7}D-(3>K|I=Ip=Bww=fz^V{h#WL_a+TX?|e@;l(;Dzrb)@RaRwO% z8(GLU8QHl)^}fD3wZw=*_)*2;MPLVhqScMxubok2(XW*>DCE-wti!UQA5ns12fIx{ z-hsdCuwn@jgvf^(1yGoe#e*ee+k(k)N&9#?SUWFCL&MU|@J~WteEJQi>+yH%Kmn0M zM$XO9vf9W4z>uYcg?E?=6oiwOj6iLI^13~W7z#*p3B>0Vo4odeRx&nCKRe!R@#jwN zTBC^Os3@}AgJf1*o4LvPG&SRTQk0;h6jVeMR9K=SqN5<7gCMaHBB-%O2#jK?BC$~b zPy~XoAq0U2Ag~z1Bte1NaL?Y~l5PZIF+_+cf{Yl% zWI_r?Ise`Bdy7UN>HJso|BL4|#~R#lK;bmH*Yesw>+@kF8HlIF+2a-wJlA9KF+O*b zmP~WbGAatBRb9+y!TT=Ph1&Dw*pplhzg2Q!&C~3qbw=9$e7#7HlW}h3*Wjnmloh_5 zlC#27mNj?-%rj}RrmVtFo%lux1sde^a=rDA;UQ0qBscL^cVrafb27or)Y&i z%g0Af+;k}}&)_!DZJ0WKUnhwb-1AlBTN$?!K2*!-uUd-CV-!!|v7euT^a_{yBTk45 zB|9`=Msb5;8(goq#Rh#ezsbWzf{Wt%L&PAC7F@GkG%7XWhXa>~T%4bp`7#KcJ)SL_ z9{aeawV?i3ubSEA|8)iIqT$4gAD>zKK0b+Uc>^*)abn2!TlDpwa}4(<2O$)O2N>$$ z`$!WAr85a3q++9cUkj~H&2~@&CF1s8Pd!(e%P+;-zt!gAtQIfkKz>E-NzjvfJanKB zC&XV0U}L(KpRpl=PZB!}2^{?6b8p`E>4EJ}@cw)4S*Aa~^ZWVt{LPpZ7yGySI10Mj z!FkDgrjs|}VCg<hQSB#5y{{Qsq$woY$I|JO)@gWo{&q4h^*EI7n7x zqZN(h1bYRZ@L)8UxH4qCuaNdA0>J?0!moS=Dn{))^cg`%4xr#_*)hstR~5o(Vld{i z)eB;ma^rTiELWvzj}zyylzb00y^}j0_q6UgJ)X^8>i7wck2}!4&VBAU`FbCXC}8*P z5+91bc+3)GxP^47Fid=`g}sBRkwadinSlPQpeyt=%5ikp-Fp@kGoOghL}LBvNe#9y z!4baV#f@DS`X36JGH-RPiTIR#`G%^A$ve(pwVrZ-i*|~4dvGQr{g0mRw9rt|ou{eJ zBNSmg<0!guxp{}eqsWoEVd>vcNrn}Jk1373^F%k2)JB37k)r4zQfCR*_tWSwXDTsy z`O8~pE>$v(KYcD{gm!pyQmBU!4;opIZ$cr^;{q#688*g-WjL3Kvi*eU-fr-3zfKRm z<~hBmyMX);mC!A>$966jeK)Ti+}tKo_~Ti(J@gfk=iby`%D(J1Of=V}wB6$@w)+6` zO8yQ>W+1XL7tw6@sNO(0+e7Z`9|aqd<=aF&I`n&`%w27&Cp)!W(SN7Qgl?FXDEX-i z9T9;EqJ;eqH(IT{4c? zwuraX@DysQYY`zE1Lt%J6jQ2`5nTZ^vZL?olaY>nO-KCMB)S}w18;~HMnx2amoLd5 zB!JV9<*;WWMch7LL(Z%tY)%~2?;j+|NyUzq0rngXWu4ZmBY}wgZ{VL=Lz3ufLoDVJ z!x(}y4Lyaw(IKts4-I@|KFyE`BW(29C{6wo3CPMlscdyet|K~I^1wWu@?Of#qQ0hb z>F$AVvO)!U_S&=BkQStBg?+X@Mw>j%ZF1E#T6r4%M%feC3~A+JEvoJ~3{EUOYmL4^ z)Ud3|F0rofb#WGH{<}TS?rN{GCJO76kn6YWV{)gATCN8$wXZg@kv#sFMAdiAp+H#0 ztXyCX1oXu28`_&Vhz^?{W7GPbyeunDhhd>qW}8){m#;> zBS)Lw|2Z7)bMD_}?>L-b>!1%k0d@b=uc(|ZdVoH*2!?_nG5-#1HdPKrF@_ERi`@4( zORb>eBW4EtuaPgIE;Xu04Er$#b#q$hMAKhZ4eID5%Y&cQg^~NaAh$@j+MDoI?>4>q+4jzy zI;I<&{FXX?!=?Wj-mgFMF`Do-1S13q5^kjk5FzU&7$^~&wnD?+KNs2983*>73Pd~h zAA8lF;W4x}C6aANw(0nH0)w5EH=H~f7QTMl3#aOQIaC(m(Zcx1fQ0NgYz>0_IUDVf zhn7GXI2dnK&yD5K!u&m7Jp3`3>rjYpyonWf>sa(67=Vc65iI6(`8rRxT+`T;Kb1lS zd^YyCb;3`6gn4=XID?2l0sd{lqa5YzFNoq-lndpI_FGDY#b+MRWGZTTxDNie*xm5E zSRnu>S**ek0oW=#O$87Dz=HaqP``-uaS`xmIsE93(rL6fGaJotK9R#R8kNnS6+8-6 z9+g-0)%!O)_?+m%@i~gEFDdY^QOc19jQNj-88(o@2||)dVNGh@Co;0QZvmRx#-Rls zYnJW4!!;F9%9brfwo#&{;}5IGMyr%a`@H*oZ}~gSbdj*KMe$Xkj_ZG1<_CZvz$hUe z9tcAo3PWAJ-g{5KzmTxO44*4=Z?g8m-K5t^N39Tp@8FpF`qi2j&iUBPUn@8xc%g7h zh*UELf>9;&HbA~;w-){Fn0+>8WUOZB zY0yQtm;HOcZ!`MveC$4&j%A!GV;&$itk%8e3_IFSvpD0?Cnv^(7H3;1U0##$%wd`Xf+dKe)6YOeQ%l19}k8$~a zXPF z$uZ%f=kbv+b=u-#&5g1TA+ZmS(n8?7|D#yk^z-2#quu%?S%pl6*yTDHjo-fc|@k}A@W#C<;bg5&pfdIo__mBB!*#C6+ z5?R$IB`4n3Z-;)nJ3=_|b*DhRwB{4;5K&F-5jU#8w1&o%plotAtlF&mRZqlDU+lU! zHTWnCH>GL@qZ%En82&4l2^pe|o}YKOzu)4p`?)x|A-erXgX}4kj|*us%AeiIUPPPQ z20|sFL+5jx?_S3AWNle^|s6xIFB>~jH zLTGqU91^7+hKR_2HvV@%Aq{hF^nK5^PG%Ryl8YxrsqTy`25DYp55)Hdg`p^7`f;%R z%#E$W*ACA8eyLMJt>>KUwmhJCGeD8E;z~Ei!Z#Tjd~!KdaHWz4zQ1uhx%8H2I=l_` z2io)?t31PP>P0t+ARsC8GSQsKuM36Ffd(*Pn4h*dCJ<^o8XbujT7k?dSXCY@0lZm!;Ih2{RO zMgHOO3qld2n;5Kh1&Z@Y{JY9C#T~wE?1zIv{QN8Ix*6QmE$;m;dZlk!l7OPJv*>tX z7<$V3S|D!n8x7uZTj^*f9ym|&IC#<{g0;jDMG`cCg%zS8_%On(kc2c%Op~1Ch~vFF zW*euV(#~|zb#=kak6qUMdX;ZqXFF@iGg7Ji0&cGu6s5 zCTHzhP({Tb1TYa`Kg3|S-0SK)1H(h*zsDUCSDC+;3R+3iu!JjcdYo@L?6F@PTa6!L zuq~Jvi(XtqD=}wQTX{VY>PK{73@Q){1$C@)+-YpA^b#|TGs9TJR^sRs7(ZS@1|jZ< zZQ~fmJ?U$UrY{eqODp?}9HT|%eeBYf&`H&&xSW-TdZVD{pFzd_twa2rFC>8={&&gz zEy%C?B!3!P1rNPX@(=Jxb^N~pNZW6HHPWI71#5xspc>GWLS|JNDr!tDFO&zRQ-vH-^N zI=sSvtIdFGt^e0dMGU(Bdx@aFMtY)DWpSP9keHftfr)E;R!I-MWBA(RC*mm&5yeU-2HDdz*=tFF531e(c#SA_45wNg>)$ADVpx!=ii5NK0EzmEBrhu0lOrV=`x5QIZLcq zb$cMK|6$GsWqa>d;d+{!|0Tb7Wv0>|2!JE})hs7-s4K~7+1RZtG_VPHH>NGV`wOeo zrg<5R8`Jgv4@+f^R*EezRcVg`=e6ir{q$X!ytf5zl^;z{aku`FZ^C+)3Nvv!Sm{^I znT70_Y{v?46Qlto^zibR6O+jg2IP9w=yn>4Ofa?iB4@+hqexA52Yg>xx~#Mm5e*R< zI1`SZpeuLuYI#2&4w@eva$;=z6#0*h@~)AFV`WsbUNB3O-8t}PZFP2Ld4rKbS&S(_ zAX(+jVmT6RehxGMMbbWRgMB$_k3$TClcH}io|yk?Q4)oUAN$QY+0|ni|5k5N7#r_C zFLy!i?<(sxY4>}sw`xPO!(_S$@=-Qbl7Rg;gVvmZ{Eq<60n+D;pqs*)jO33XBoQc@ z+(u;`z~g?QKgm~Y)MR^InnRIH6oL>-tt^z}KL3S%a_xCV<4}UH;jlSW3bxyw{OXC% zZ;D~%!dukOLw=9`1=S4Pxw%{e4q?m=#oiB9Ldu5^nCSJoJ$A#$vT?e6r}4+*_#}A8 zBFZi}h_oO};Jl?-X4N;o9n|)PXNU3Ysx4u&K6z=X3_I7E751OQV4qrZgj}m4oPznR ztKqC?`M{C9vTD7$D<~ot^uR=*V>9SA=!*=h5T$ zON`~uh>y|unPDee)tN1TK@bNc0yow;X%%cM7odg$_ch*A z3^EIg>&W&FhNxC8S%o@LK;oZ3og;3Ss<#zA3&&+OYo!=_$dOwUVWIXuU!_s&y(&C&i^kNeq?r`P$pu}ovmGfS+%K$v?#5ytBe~;CH+Q}Dp0{=0?_(a%@9Ru|^eP+e)9{u5#(L-1 zV*IBe-mzsAgbf%fdkhjoG@WM^PZZ!Ic3BFb-eim-u+q(|O1+ov%m6HcqF^IWZl4h&XW;BfuXN4A}8i+hEI!{d(ga6u( z+|Dm^4nRO1z7m)m96KEadQoMhmXNGGJQ6LoxCBq{9er%eIrO+ItZX^oKOY45BIV=J zD^>nz7yqYM_}ylYrQnfQvF11qhiBfdQpz(yAP>1du_o1Vi6NAD5Wi zYI#Vdcx;y;UN>{k?e1^4n7?XL@20)#X=pz^y{`x%^jM@_SKO=+V&#(eL?pouFkdx0 z^skcnr%_eW#%uz=-8NF+T8vX;mjKUTVGo7ohdT=;-FV>OHb?&UAXi z_J4n;FQ1p!;1_eK`-_=}o^kFy1lvOGl|;g4kIG%%XB*d14W#)@D&n2Y1hU8%12v48 zeT+mWa7CbxnTJquhae!K3c5|;V^cT!)CbfjlMsL!!7~LUYN-KnV?{P<@1Lu9EY3`L_?mwIB5)&kWKhsR0WW@`z!1b22vRQP zqyMfwi}m-@RjJb5+d&;wM1^1;5QA_UTaEttDX9In-bJ;hh9H_b4f?73R$H<4{(gi0 zlfV04-`U%>>O#`|lc&nH^W_a znv2h=)A9ZP8qM{~cwJZHtElB|`#Q00HEZS9i<67^1YXKN#m9iplVctGt<6Tkk%JUg z$N5v6#6Cg?f#l@;eT7=guws+lZa2D)=q?!p`1#z`)M~4T2oVGkj$DFq2O>|IiMh!} zmuKH*qxQYmLwDV`#A{!ij8I}K3}A>c7znHw!BAC-Fho#A7>tVq zKtxoC!9hkvAR-GCBA~HVixxqQK^p;$Hrr!swDoeijst(!Bn><}y9JHFIb{_Bb3 zybzjF3)l+jQA!F@6c7VQLU8A`i(Qmb(6mj6^*Ty3N_{W-a3nUdH`q~Q(;rxF)p&$g z=>{k;j7|r(EzT!Pnqmqs)wXj|fp-i%A7d(Vg#TERSpRjK%v!k$0UC%<2k@YS9UXa5 z`hmrHupEugcR;H3;JlRbV@j>+p`NkX{8zJgw%l!vbakGGN0QFr;F;^UIlmO2*D}!^ z1uI^T;o$KI8F$NXYj|j0G8f{BaAD-;IzgI(F1cPG3fO@L$T@ml~7q;n|eI>3~G z!weLpVTO4=zT-~U+fSdej1;4`*NLz9o+X_X{| z20_JvBHpSi<3W#{i%ay7AbMgv9}Cm^$%yvf%6(?L~)8EWUtD+WKH zUM!4AO=Y2`RjC-9Hb~8;YMVjajMT6VWAQNl4;J+HZ(0BF+vQD4%X-X~rM?dY=_KqV zO`>j*%)BL<4z0Qjqqdm5X=4&g%;eCd2ti@-rcSq^Tx{}37@ECw#%LP} z1VSYcjcnCb3#KUyCJ923GLe*vGI*R#ZDXT;F`VZdVya~`OFSI`Bo0eu{LU&M+{QVl zW)siuZJ1wfnwR7P!u-GoSYlD(Jad{=c9k(~E0bi(1i599*{NhnLTQyHpk~d_%Cv))9Dh$&|%hihd@K>L$p-( zQ0)m>wz2( zwEA9;HDC3{cGqp+<>d>mSY{xCV3LxVE2YX|WQwVRNrV|}FeRiqCTUTkq|6pd9z^`# z<*wNT_lS2JadW*%y2SOyWr_T`Zej4SgSxRzYh6x&4Z=t# z6rCle5j9B*ltUuevgA`yin*$U#)u<1rU^cb%Y<{I0|pVzWQQQE5i@p?v0}mqlBX(t zU27rfhl8ueG~Zq(h8o6lCYHXlGbmn{2~Jzl%;|M0DHkT_N#L#el;*Y9mFz@WAklV? zrkFsCl@~Y6O=yP|rZ5ucC5Ug-W*Iu{G~$#@1Tq|p_w+0O9&?oJZJrz+#C21KGJ~41 zFIk1CpNo%d(crNep|BwMC(O=DXip=Vk_VY72t4$qVrc6qrxCUs8eSDEIBh&(Ruw$D zyf;#9r!|V0xTS8W>Fz1Dp4Ua2?Ul+qK3+yNufsWjnQw_7?B*fxfn$SyVTT6r!Qi6oeCR&!k64)+OODKfd ztmbwjBM^uZRy9TWxuz(KNRW6#YPyi5HYDXYYZwwkCw@rIm18#)EEHs-X$v7Qhxp%& z9yJRXODk6r*3Vl6)2H_zPm9FG5=Mie&Wa&LS|%Cgx>?P3cWjDWai-D(j3W;?%{m zT3CwG8dE5cl+BtF>yGo_qs{tUjt-|&8x2fLmY@--D{)F8fu&oFO0qc3Fph1_#vzc= zA}vZ|B>z@x)xApw<^be+T?`g2mYXdH=Jjk90owl-a59kxKvC@!2WeADS6Y-wiE2!l zEVB+wvq%LsM0L6t?|(P*{7M}0uEA>PI3S5fecSFfZ3|dz889cKPs;Mpf4T<6?Yn1C z3X~8b^s%{gXcD(w-GIbND?m{Uw>oK7riJS|nZ?}Bb+!x~kfNGq%#hE+tz1zDXRb421ZqOb zlbV~btwolRs-?56&W{M!*e& z9tZGgmRseBpE`ADV3Srk^;h^a9<}F1`~5XE#6HnxHZ}EoIJM8Z#2ln%md(f6enQq8 z=?l_L!Lg~|;Nu@Xc(BcRQnFt@eW*v`OITR9Xy*^p_RPM+YaN;SNNN9IX7c;F00RI6 z^PpOG{gRCxlYK}Ib`$u*1)yPNV^+^X+^{4vWB&ikTonrqy$BN^gB8fp8>o407$2rr z5tesM$)oI{`$@iRQ>xJUyCE0;r#WQMqU!L_i|d=L$L9R#z$~?b^9hk_zrVg?)tJ6c z<~?1Ta5-n#!!3|qI<#i4B>00ilCAXejT-s<*;UsJ-S-cW@=D92kQHg@&8bcP%4IVA z>a*Ef=&Sg79kKX+m#88`$JiT8vJ}4*1*S6&Y?rxQTgYH6BYzQ}7X2>0u6@ziD=UvQ zd=m2bf={GEdxT*eO4!|#q3|ZfeS!(O&hH{PRdDkXZL6#GF`9M^ZAW~?J}{ac;trY;{pCgPsbXEj$txW@cd(Z)!WOFH~nw<-p~0We&D(gTl|hYR!4NxRBP zd{K`cp=LXs<d{LOt0T4=#$&sK;lln}zzLqJMv(pRI#3VBwIVuH6rYgti zX-J5KYKbb2?<;HNMv|q7^Lmj2e`b5#^E{jqh%HiW-y$HkMz-wHt;X@XL?628JmijR zG!LU8C9{b8^YmH%TlS8}1B-$xKOFmJHK7%)-KP>`n**cDH+D2gQM@|L8tjQ}RMDAo z)-Pe%Uww)ObuODX@?anW#U_@yZAQ8ujn2LWuzi`FfAG0}7-aJK91j0c_kTjSXE(!u zM>l(vUPlo1#^bnEV@C1>HHH94aS4@9A1{|{d_thHSsnnmmZ3Mi#~Qy2i@^qKd;Fq9 zr#q%GGveq4XioiCya;vw=M}bFj{-b&$5qGO)iTz0LF3-SKXgG`UuV%7^Y=s0%y+*v zOq_QQWcK+}lM4SYxAm9Nh{8v@yHu()mB;5~G5XC}^B?lRQIpU(_{mwi9>W@b1^tgr zvkT(>E)N_RdPBRX4n%XoFad3%DWHB`QQ#525*5rU)ZC9|iaPYQ-QRujSN>VDZ`hy&e99^|wqlYHZI&&ZV==QTQf z&xy3_eJ_G-?0##d@wt-P19mVj`RF$uEEoO+C`)0{A8&!cxoWapsw9c^2jAoU7i*&Q z{|t|fk)ae^^va+OR3#$!)OnCI^~+R;1Qyq-YM^1_aFKdoWOem3$X})d>fvW^%k}uh z2olH`G{nZ*0N$IQrA1o&pILW3*Zi`!PTgw$u{u6qE+L^JqD4q_%qjR!^du$s^Xg7s zt80eq9j0V516oCOLz%oKjp6HwADS3WHeFyOy-%-_{`hv1K61N5EN?S2cBmG+SQkhZ zP1lXqCs(6o`SZgOt_7r*=iF(+h6xD(Thf?Pg2n(HqN5;&d_o@)sUT5kBe5tK64ON{ zNPQh7p2ovwg*H~Hb&CXUqiToIWeeVvS?9+sn~#;u)~&KwKzKFI*zOA|WRyC;ds~mQ zl(U9tJ()72uXGSjTz8>!d_C7@3_=v74~w9nKR;{?H9VLgKTQ5ZkyNBYGY6s7HuWh` zG`_Pc#8|zg!qsmr3XO&~Pz0}8W8~khCIA&&q%CoPO1to|9yBcaV<;t9XU=LXqpwv* zedT2zr`Qk8*X2-po%ODxKd%0!bhu=kJDwLhk~NXF&ua>KTO~*q{M>=dWRvX<$5kOE#kyS+qhzvq4hjrcluYvntOW1eZZ}(ff{vL;( z=kh%2DO%6~=B{!XKS`d+n%f%Npa*%pz{PZS?C0|f+1)`qxPXcZKoKy<(ofiDVpC#} zZoiHdxLXQ;hY?D3U=sOv)Sc-?(X+}y*Q8|jcnnk2X0nL6EFa?IvvNrv+r8zj<+UC~ zOq>{TxTPo~6c~{dN_ahB^QA*0@7qCG@YC5& z`*Ce=Dxy3WAD*}5*V!Y*?)W;4t!moG;&gIx3SLR;_FeTCxBT2|(_RObvF6(xZ&5O= zx#iT$WB`D3-W?qxdnNQ8p`l0cLsEJ&MU0|0Av?Usl8=)y}$4yApTt^VSU)<5qU z`8(zQ)Fwcs4jHMwySHZ%onQ6WP?i0#`s6+tt~&v$1V*>I*9{U6Mo#*@>`YVUG-oZXk#9_WOEBG2f*b*ZkOi(4w< zl~=c6BHSKf3T)b-it7HQ5FrGvE&$ZhZ%EbE5BQ&3ek>@H#$7nwt!;8AT<|w4#1xd2 zOxC)O3I)Odt-Ng`%(DDT?uBFt~CBnuZJL33go#=QP$*6Pi#UTSBz$ ztG2@r2@!6+5bbB>oK8eg8@$hB_^XLojrV`XS`u%V^^?hWw`;&Kxn&4%6A5Mc+%w;~ zBL?^$v&?39n0P+6bNjO+EOdf5YPtYDqWYhD_A7uwM{L-S{t_Bi-unxdn=v1DlhMSA z)17PKs5Z4%n%n;AIc=Zz3z#i2)c`SS;PN$7i0daB~e> zI67SZpVa(sq(D+X#cO*TA-=D{7Vp#$3}aoW0=_y5?Br{}7L*kE4HgasQ7=#c1W>G( z2tVl`-T-3#LFi6n)Kbww^ksXLf9uEb=rh|`r#$*RK9W=o+dV7Y1m;nm&dnY}T)QY; z*LNgkv}P;pnKB{x9DB^y>F{+-G(gG;E?TIg@W0d0 z&Q+c=R7PQicbzdPsEVpAtfD+C(d>@Pvgmn!_vX6W3s8mNFvf(wZQE8jH*b$4H0Nxb zytg6`%OexV{w|Ku_S*QX6s}*;P^l8889Zh_v4KtAZ$ z1xtwmTmKN{*$@JIE#JF|1@+O6N_uUBFK!5)Wz{&K~Zjuqqxfs#)?AJtp-s(qgn|FI2f!Ppya--l; z>Gn0pMz&#QK5>8%!XLd+ykPvd|WFB6}j8LLIf_!?Xg=I8@Tl%zUBQ8gHJr3EZr6%++8hD#_PAPse=sc27 z31Ele8?oc-OKb3H+_i5@L64HDfIQ;(e9Wka8eK-VzQWZO4_(nt$GCZ0{_e$f!NY-I z+rz+`5E5cWnb;JB3*`WFK|ukQMgUY8E%&}zaq207AW~nGcaFeg7#Mex>7u?mgoBNX zb)}dw|HdQM)^h$pVuBO39KIUEKs~c2OyUE|@sz(~*nJMzgyte46F<%5P4g>wX{Eh3 zV`wMUO)-Z;@i%wpQFTtqHJhhbd)j*)Bts1Z+;Oye4+g1|qc_wB1LGUr!drad+1kmK zw}Ovbr-b;U(&}{AuiB!QQ$S=meG18ecaH}=Dt^2Z;7I|W5iW)Y3EZww;v55rRsobn zy8S1naR}E|{+uEK@)*S9WZX_MLvxV+SdtiocNq5vAW=3_;hY_oP>vPMc3<5x+6Z1V zoP>BS*y7v+&e)IFvE#kaOE--dMavEZ=vt4d{>B-uWeD%{70A=oKu~JR*)RI4Y&frbH`1Qfy@hTS z9J`l?yKf#R|4K2yyDL_H)lSbjSs(a)j-UpciZiIdZNZWi;cvw@AL+G=?zcJ=#5(dP85^}c+$I)Lp*S;m97 zz_{JZ5P^RfCz=HkDd>Gr$OD#|5k|UeIc#c;Vs(v&IE*ea2UEpc>AvLfJ&%jizxDDw zdc%gvjUaV=C?+&8lg=^B04b%QOyESZfTU%p9ZFth&M?6s7M;Yb7{ISjv--&ntf64( z%>*)Ykqx!KpUSvMvU?9H>O9w((^M2yP~2ptu}Rw@aYozsG@^YAB^s4cOtPRNK&%CY zPp=pi1tH6cQck5Ie;S(NiY!oBS#2diRRlm6$tD?w4Y3uKpTNu}_G}mQ8mye(!6<$* zWhTb(y>F<@oiYmz9=#=JxOTXxvz*KAUkYQmelf0yBM_%vH~Ly({3W)!B-N^g27wWb zRZ7#IV^?KaTyB01)1yJR$mT2$HEon1AL#C#@TyvM1UgsKqw~cqld-Ypz!V0U%&fe& zVbMC%^8Fl6ioT`gR!%!0pEZkB1@CUpS)(D$-DW|AFf`gKR@9wjalgN_AKJKvI;Yhh)X2Z4M3@ zgI#bhnYE+rOHdlWT`ht*zK_nj3ab=??>8JbIs7{FY#2X+KLPAWR57>!$EJ!vz`?Zp zimtTISz4mi_-*Fv`7@fcCLX8Z0WO0JZ3(X=O2hx(O>Sd>&GoFm7x<4nkvF1~E?RU` z-!5gsz=}Z_k&yurV#HjXV{j(HyY^$-cCzutw(-QaZQFJ>wzIKq+qP|cle{_S|5lw- zr)R3}o}QYT?yBkO4}D+13*DcIvQJQzI*_`&K{ssua_jsbJtlwg;Ql9}#$)zQ%}lQy z-IfKXF7Kwf5bQwm&pJ>w1+C#yWHcDHN=a%lw0?Igee>MR_N9L*9B*B1Kd|_GA9JSq z^!myAEXViCj5`zn?k|M`XIMB{kdpMW9VZR4d{9tRvG-O($;>6oN^! znPX1*J+pqM9qP{t81CQI&PS*2iqa2;jD)H#Cpox-CgtV*l(RDs^S`=BAHEk&PzTG& zB1?wl&X^?iQqCJZ-7TJenMjCVg9n}JX@a?wfP#PaxpxUlj}Mcq=RBsr%T&e02t_b~ zJF)8hJS1%U(93?fvML2F*H?30wH9kjF(Wh|s{9LzaNW+MV?5g*Y5BBvRa^=z1$hdab8Cbfq@5#dtVv|b z7hflXKTPE@)G{z^$rS-VNK-*L#=yQx$i zNtIs$qtx?_O!pO}&7amQqs!`<}gf$o98X(sLNzno;GGK@rmY3Hd zA%m$Pt0;&X7LZUgs>9S_MHY~$!W58@1V)xK8XJ~ImR5?Yk`xrckdTnniK3%F*(e)E ziUy%8h$yJ2ps9eXs3?dii;5_VQI?nH6;Kw0mqSHTlY|$9=arV$su)I=mzR+gp#>IH zAgibcmLUfgP!}+wiHM4*gbztXg9(a8l8{7;s25Py5mg|IMj`)KUm^<%^6C`OMSo=C z=#k}lQD{F^^-^j^Wo6}`E|U!Xw1!icMv~+el;;%$mInq7iT-pkuQW0rtAJ57vI1R2 zq9C%I6d62{Rs~r^K~VWe!^EH>qN0J0E-z7D9$pYx8W|8{xb>; z5)$em1+0SdKMH8*>IKx))Zvjo=a3+{iZZ&2030cq>x$Zht&Gb? zgN&7&d@B{rDaB>t_tBYA^jy}LFt65a#htU|TqkfF!spByeq`FkF zs9rHzNpB3JN~bU;PZh6}AbC|59tK~W)Ac)xpG#1JcUEw5cT9D_1(F?Vhp6HEwqXp`)Ffc z-pJo)Y+Y$n6$txD6wIS+U1bzU-#s*OpNoSz>ww>8OV@3B_4>B2(XogMC(WD>-b1dF z^}5Rv`A`W|B$8y&u<)9K8AgAt80+#C1##T)znYNR^74nD20!Tc@Pr<1GZ&1;#bWv; ziw(%EaTy)Q(iwmg9JGT^+XEzHvmA@%+wK{EMy~#8%ky;UTpqSF7TaWA|00|sGVQcl zJTm{9^XSf#I(4Qk>?D3?M(OhO@%52?q$fys_l{>^YebZlFpIXN#j zMGbKV=wG9GL!=mR`xRyw@?7@=qe8YlwacxwaHE zrhe!iPQ(-}e0Y!JN=g`;yk&lQ#lQacI`k#faodTD%X`%Rg6+9+7PuEy)u0L#GI2d> z%f+9U-bPkacORmNnv)syh!rwfbow!OcP}>A-GY3UOPfc(5SSG)p7D)bO>s2 z3@IH33Yi2Eg)D_gpb!&|^Isvwbp(dlWEn1DC&%z|ros9^i8&S7qC82-HWMn0RsE?^ zM+u2w1!ycu6hVj#<3MyU{0Vq8nVLQlks+l-l2riHfD^quQ88En0l*)dD!lwa^T8Vsjo*a>sNX!%k3iWVgh@$tfBqjahXeN3ej zV#Z1-h2lcRb7W^UT?N+Krvv6Re-8^{$nX}wZmvk@;}Ab`J^&~3)5R3nL?k98WMc_z zl7B=+L4-+)QDBp$6B`@@>J@FEl~CEzQD7a2N3EM|k>iC>tx-af-?0hdUrN34N|8WF z*WC6VUT0$47>_-!=MOzx+x29MW-@dQLq$&{a0yj~+)}e}FV;b+OS$xGYf>uAOu5Eb zFPtjiTHpu3r-^PwKqRurLE+h#7Nr>5IlKxY#XKcH1+?xCb0=vfL!kef=9obJ;zjwJ z6fY3z^f!IFIQAmCpCd`^DG|i2I!^j!WYk3TygoPz^iIKCLhqSA4TEvTKpF)~4f)S@ zuKem2=~JpsT<)|>=1heY%E@6}^&7+Beo^SfKaJlxwmX^lB z49Y_g6XY=Ftz-%iQ7EvqA#W&@-7ThL1^Q^8pgXVG-*P=)BNunIYhWNERhfaWl%XgR zA;1LIB=2SQ#qY@+iW-6_3Wvf5I!v>iWwPa$RFpB}5RF2?MG9o`0!izXWRO*~7=j`u zf6E}|;ZO@iq!efaB`o+7aFr*lli)cV(@msJrP7(%Nt>6)^mq3{$jg~g6nG^d1UsB1 zOpWsyiNQ2spot5{O#YB3;Ha)KsmME~L)Zk!P;nXx5`~T%E+iq7Blm}okU-8Hd?EU2 zytZ(3MrvkGOBL1%Pxq67NP$S);8SzLW=1obSB$j|l{P9b?@c&r6`9b7OC(ZAI2I#3 zjWU%+GKFFpgvg{|-C&@pVA7SYYiYJ0jI~8nRfp)n3XM`0+eWDq3xcuc+u(}fI+DLh z8l#C)6LHkTsz^z&NYMdBI3G5AF&;WSI(_o{R^upeEVRxP@KJ0bWHW*IK=?Jgb`Nh9 z&v*`YOrxX5*;~iBk?1JRT`0jFty_1Z_Tp>9b%d`zmwX=;(fRP$OJ$?Zq6Kkjev|3Y zPoNuk-|?1w%dtN{^rwBZZ4=@yY;FI$WZzoB*Q( zY3918@$j3XyVDE8fFAA~p{F#S+{yX|_T#xdjaC^= zRo{X!;}-WRGbX@xfWc426N88|m2>1t#Ed@A-hGmZ>}g~_<3n;+i!Fs!^Qbqt()xS% z*{s<=dRs>y@&{Z|IznwZ=)L59d3aENn1`+5lfg>pM)xS7XMQd>vuSthJ}+4}t(anp zZnU$eMk@_Mv6ERBpd#2d2slo)z+0h(jMNxfR^wvFm7Pu2rFV`w!w+48B)}3vI>|ZP zvbgO;#`TT9CVx`|NvDam6Vv&1J+v6dCB!{>Y;I$<=rEVuHB_n~A zgGpPupggQ?3t1jEv=5*HDKaLjcOe5eCGnVsdmhvMWPHyU72Y`|yW7Zh-gRhS!J@C} zD4=&?brzI4$@u>DR5PZNWWj zH;}si;N3Bwe#gsqtB~U|N^#l*KRV{A6ovKg5ByX1LswtZu>e)XgcOOm(QYi6b}4f1 zos6Z9ssHofy+c!f#S;JK-qro$MgQq*0S$z82p4tz@{b2|itc!Rf`v)(RL;S}Lk4rW ze{BLDWu_u`DN3&b7O1>K?;ktn>sp>oL~XQvV%9&+HCIN)2Jb?oyUn4=T#nrKwpP3A z>A;;~{*dTATRHQOqf7=~qT%OzRPmMddPv7Rc+&kOZ@BMthS1zE&&xRk-8%@58Z&=* zpxAVb0Ttl=cz;NxYmO08ye*q~(md%kR_5W}LTT~%T#SIIvmEPf)ajk>dYMr5Iftg% zlz2;>+F2pQnj3|BzhT~!_(`4J=%L+7cm8u*k~*yc0xy9936T z%3xCi*9vV7eTV749guqjx*T@izvU3--N+bfynW9r7mX@SzBunqR}H_e1uY9*xZ5_# zI*kmrdtz9{UZf=iut3QIx@=$E&JAB&bnaPyE83YP=Lr;@ViYPcf>Y64){`rDKXU3x z?}}J(M~xzm2m}GM!BUub%*sAAr>&WCQ$d5u;_kiG+E?!RPF(3mWp~ff+dh0+l6y9E zwDs7TUEhV&D$&i@v+qe`J1*1qpd_~~e5ez)VuAy-0f{1bVH<93Yt$;!UnD@nx40(>Jjs?HX9&ot0jyJ9} z^8UpRG)>L2D_oK8*_3uAwSka9>VXvzQiOoJL#a~k6QKoFM{SI}2zYU%5`l#WM<6PQ zi@xcza*Y-jKdI*zLB4ZkAddG^j5W+nU_@yypYo!w}ZDaI=daIu_TKKK0pCt#)$8JRIaXfKh2}JxC#n zba1^B=)yD7Ob>W8%9Erw)T{{B4RKBr*z#jGD8R+T=HiyMP0A1U;RjQrzES)R{yPO^ z>|Mmj_0glyv2v+Wv*~lrtY}wxx_|x>`k=ZzbH1%&A)iWOk%F|aO`vfIUcW?Q8pT70 zvokC&DlFm;rtvVRb^1ecD?cC=#VdQG!*D3%*Y>@Yp`T9SGOMz?wIA|M>eF*VmoCb`Ii&|5Akk8~-WI=CTvsM%B{jcgXwef8rGIO?;K3>`GR*^3iyvQ7QseR^9aQeiwZ+@oK}opY#IQM?`j__H<|R2m1GeVQyR4P5{N z&S?Gj=08A+ZE{#~^0NbDSkrnK)+avw3O{G_@1joEDnFG6CN`YP6JoZ)0=}JAr=h*L zhU?}RD>sXd&QaE_rLpL2MJ10enH##3Gp!$w;n&RV0s2Ec?v@6xNdgx>pg_>9PnL?v zg*7PRG~r(irysgXlU?q7kOAE}R^Fvw*B`yJUCt_rT_T;~q6beac1|l3&k=jt4>>JF zQf81ppjC12p6O!KvTV%#UD!$$2reF^z`rB;8OzMYlBP>20oV9Uq|30%FlALU!!47Q zY-08+Z(a1xr%|1=BUn7r6y12FldRl6wWYSe=e&rtJ*+*R8fYiO&y9Cm-@i>}#5!Xn zgd$?eaW%WYenhQr)JlLY+fP`(I!NxgQoFCyXtoWT#DbwR=gYFjhyAI>fG<`2^N}%N zB$5LFtxedl_+HR*u2`&?(PgEpj;D%Ht9K$-(sNfPJ#{B+M=Ze|U$R~8(EUa8+DUs2 zR9he%605HsLy0wej;V|Pp&gvL#Z&)ZtADTR4e8gKe+H?nOh1B(@8|FWW96_lG> zAq{jFv71ls5nz-FDw2|sC5Jrk8BF_HE^8=~ix93jPXdBodC0S{x0vzGN5y&#$l zL(K#3ndI8;nG*TAZTEhI-6=4hp%n2XV}5>}td5dlLd*|XFs=bZyX5!)(PK5=-bYnS zy|lVTCT?f7Ok?)zPEq9QV*?%*J)@gQ4VJs}kPzm~k?=v$+RLICk%(&{agC{09#MvO zJ&%;J?g*zIfUIOc%ibTa5{|vgmgpCi3uG=4tSF8pUK#k~<&~y|Cbk+um1(ubXU(*4 zyBc%^5$u4cdKMp;!?ejdVP7~b6(^$c2HZ0=wS|#~hP%5rxl-pemOJw~HZ=1?kT51x zVoOO=N46?PzTAsF0;3#upUSxOa`MOWNg48uuci|l>MknPL@dUC-7nHpax@=aegnpJ ze4>jTpbwT9#4UQDE%3klnJ3;Gx$x9*NKBB}%*~ahjPN0Iltshy!AOHR@*VslPV26Z z%oKm-g0v1gHi=mKl;M&vEmS&)sB+>?kt{{>E`xwTFjfR9n1l_(1gr=E0oER?zbXid z4GVUi6D}SuNsuTQ!(hUHQddb{Wn^iJhyrZ01laCO>XSLD_Gyp1;*lT2-d(*>z7lmk zkohjC{oa|s;^sKstA6d2#IEC9;vApL$S&QbH+O?weZP2@Z)$5;238J4hn}TsYh=s#58>O+dU+lkhUk+@u{P@(!2Rj>8tgd+U+aUs%7?}>o?WSgQKs<44n!P z^S7+Ntv716R%90YC-H>sj*_0D;45zrd)^9y5hmxu=j=-vw(Q{#QS-9NahBCsz zm=$KZ!k6}wSJppNNk~vaXz;)i#~16ZcIo|xbv)m>e2N5|1R0j1o)H~^pXHe~yR2@% zY8Z1w(gAF(4LwzIJ`}kTQd|99*vpq+kQd05vvJf6G z(Ym8gE|(_v03661?QJobX0-v8%aUzM#~VfyuC&oNkUJV5zu(Pes-)tF3W#mhYfshq z-`Kpk+0Dy#KEG!A_djwoXbVqJ=VC3j{EY7en9GtaK1}v_9WheRyZBXf@o(0AK-qwH zQvVr<(#$(3z3zK$T)1#t7r$ML$DlOxOUL$};yG3{ZyjAP9BSz(g-AX+XxtR;Z=*mQ{ zsB_Gf!X6jgJCfQ5MVFAb#z>*1r}*xuR@-uLGc9A=u-Umj=MPx%Ec#s-=>|!v*qQ`U2w7Mu;7x=X^aiq^V!#Y zd3mjxYTe1ge}X+~al}lJP$Bvb=x_4GwQgpmV(Q!9K*pZTaZ>43xv6$^`O}&zZi1q? z5R@^3z2slRyM2fK_1xaNgEqi-KxUmxf|U8d9`taZ%76Mw)&O{_Ta}1>Wyd}C$tH3F$pQwXA=kY(DuKEsEHF4^(>~F}*BZ7ut^oKVOug?UOXU&OoEubm*D^pwI4%+HoId!nTmpMl+Nf)~ ztWkEQNVhUd;k52WX!>oWa%QF5$Zm9nxkZ1X`+D7g#kZ#Zc@ah zushAquh-D+wQ0&~R1+SNFxMb3(PL43GkD@-{OZGXH&r|y`0 zTRZWuplmMgPkOa^7ovH6rECwuC&clftlL!)T8c9vqAv&o#oUWI}T zw+~}G)Xj0>P8qa!v-{E=U`p#BtX=nZbA&GJM#+Bnca?x`Bl3Vv!^JeAf>r}EzTCN)pCN~?y#d9 zScs7t(N(gds@GT6$~?F>)#KE4XZy=`ZtXES#Dj$&P%+iDd;q2G3Ud zME$$TQ3$-s%vvpA^?u8cQ8xQk9;QT`OatPqCl1KAfz3VCW-_72!R3ZgW3a)coE_=^r3(y-;b5 z*Vr~4C>~_22jerTv;B8z0o5^7)NIpVe?jS+zFpIE_BzYBKvK%X!tGTy#Xm1RTFn#} zyzAjc;05se_3qJgyW6l9O`7tuJ~r3(rRMAPPSH%2-8Hx*d~9eNi%8aYDeWbv@U^SK zOdU%LKyz)_!sB49&v&1-&vbK_pT`L+|?iY$y?)5 zhLOZ`_v`6B7N25D!^*FJiph#Q5!_}l@#^s79G)|r*kr5i9#p8Dr9WJHUr+Zm@>f{r0orJ_kT=Ek9_ zt$Uh%Am7DR$+oX-*qblT@YrByQe9$Lh)GBYQiGr(aC~O!{>|4&~c zO!$mprV3?HWsvGFe*NELI|WCobvwzKDcMn+^iA2!mD9SaDSZOl@{F#97VLPWu*06& zh{&978DZC-?@o#O)AiLsSI#t;i#JS_o9#$pBNbe;ngcFJLmtwWioU(tj#hU$Tkm#L zJUIzQCZte|TX8jdYF1TEm2UdMu0qxKrQWw7Sk->p8b`i9LoTvnbsE-&^QSr|;0 zWpzEU@IEIva-SF2S9fW_1GIZ~oNIF3=-0W2E7_ml>c0n<-O0xdbNx8QX_XmkjOb+^ zuPldh{c5J}yH*Lmyiyg|5e>_GCaCuN-K@GhZHsf`#Fyq=o734&KJ55lhGlAi-N`Cq zjgClD{T{csm-;0K@7`pv^v2|9+j?pDof5;EF~-w4d*W^c3Vg9kq&3ADkO=+gIWZ5C z+AV%8em5{L^-{OD|CGDs3t}cV9{wI^seR=e`7(_%PNy>Ihu#_!sT@{zo-QMXg2Dz6 zmjd5LA0PtkF2dKt%HK_KFtT<n7}R=qbM|J0G@O=)I4xOheXkLwg z@-nM6+er&}DIDewWJ+RM!n}q?QI`G8_x6o}%#1?R!TW-X!fWZ-kTX5)Bj_=u>Go^>2BT8RA(hqP1ZH+QEAY!HwL|1}l zfwReakY~wwwGRTX$-34)*t2NA`E66MX2s^WGc#8~Ac~Cj@efWO4`YnHDWRiUY;+gx z0ktc=Vo-3{Q?L4o@ee;AdyQgAS>=KKD~R}xzrEp6O*$M`|0Y}0*CozA0@8Xo$=*g* z^mIj&sMn1G5w#%}{3HmL{c*kyRVk{oS-QGhj(ziojGRE1&@Z>cHbI8bi)R`vaaThJ zbDVR@AhkGK;wvZ0Mj?!?G{pJgaow*&x#l{Gi)2>h=w99Gp+F$P$xv$xGhSlB;*15` zE8}_>RM-$t#cU>{?-P_xY)> zNs7NQ&9j83yeVlq@b=$l&+qu$VKYP7@#g$WXS+a)8q+i$R(E1fJ=}Uo1&9!cG|B}H3vetiZs?SOH3_SRH9qtP&UZB~u4jS6;gG)TL zC7Xf#u!2gC?UzLp`ui4dT6LsD#Auf>S%33MA8gE?&K3*jZ()eLGNcXnm~S=S;SIMO ztpd5iPw_q!zyur0pg7ZXT??qz48jIW^@^Yv$J{L7!d#DM*SwHR39@K(G_d(i7nU_W zIg8yuwsa5N7h~@fM0A`C>~p(8Xj8dCI-`G2a`jgvR1Ut_PWkuR)1tRs?a9Aq*ZHgN z?j-a!=%NN}IQd6OhyoCja7hrvUaR6|bRPahN6L_{?x~_ngiNG45FS7eG#f*6#^BUzHQXh~ z9Q9pdU!O8tj)#fvD&=w&e6S~pI5Zis3{dX}4oDOF)+K15o{Tz#o3LYg2SjaU5L2oZ8zZi0R*5#UpTXmvAVGo_aXCAbKKRt<9MSLLs zNm!nOI)l++5l$nftKBH~ev1kibh2UY%p8F~C~_CE;*eQ=7e2q$HvQxr!+! z272Tyr&p#>ZxNQyIVfUX{ZM`T^mE#^Uq_H0zYAVniF0(lAMr2mQL^vxxQeWLW;%-` z?JKA4;djZI5eF@|+m>ndFgfr>0=TJJiMzK`;39jk9|Zd{281k9hvjFt7*E%>58m%% zV}%QT1wr}OSu0xt{+N#6;h2gR!cw1$tyn8wCs}x94A3txpTa=E(Y^=nKU&x4_Z=$@ ze`i>(V{l5XsJ)6e1@L76AK@ZwFa1D*Sspdst+st0*PQg#>X1Et0AoU0?HF#se!$rP1c# zW<@nlmlM-lXk>oNrggGTjC@ogmaJmMfPu2COvTSa<;~;nt3_`I-xtav($Ek2hTcH4 z?`&<<-G0vQm30B$x|)l&NmEPkM2*=~Z1CsbQjCUM$Yzk8S<|wsX)JFSH&3zpUgZ)W zB|7$MZ!^>^f+|&c_Vu3vO_8}V3W#<==bSXQ;6Dh;3YyFGvX1UqKRXl7Mqqix-eW$& zS+W(uK?{sa;~bs}u&*;#T)U@-<#;FLqOA`S^@z zt=GReq+JF#J5>jNnNj+sn;V&X2jp9`R->5CRj@Q#G`N@wL;`d_Xrj%_1d+{fhNSlq zX>$H`S`q2Rrg^qCgxK7Nf}nWoKpai+sodFAeb6`~cx*KCM?CG`?mlCbVSh2&{2mm! zqI|82_u&U5CoQlEO#Y2sO3vvh>RsR1m0j}WC3aN{xG*#AXE02x-DmOYLQG6T#x+0-sIAP48@>siNCLhMLuWgDO>Ok*@1 zsb^CGfk9xw=s@IP-DdK^Rhm^n+rX!qBbU%F5wO>e;vbORc;Y3r+r9MvR&O zrWwe(Lwj)H@ukj8y!PPl&n6=sNzehe1Wn@uF49$71ED)<5CzXA$}p&dW1=gvSB9ZU z3L#5X{tnueU*wQ!-70PSu_+o$#$O&rS{4``*cRAdht{nI10BP!OXkBMz{OSgw8ZIn zPaC!)QDJYZUG`jm66qq9oixdzTNnG)P+g19rbLvN)v$}BJ|*UdEj=qyFUGLPl8=p- z540KB){`R^@&@K#sV=`f8|e6Cd6?-SJX-V*g;21HKwM|2{2_wKhzc=aMg^lKm>3Lm z3@8n{L%=G~5=6xV0#Zsqun9vR+O04eA)Gb{VYT)?MqANmoyR>HZnQWH>&_IkCFpxv z{U>gjXj5|@Y!nZm{1KqDxocngiu#d@YFacNKqonLeAX`bdcK)Jdn)#~?7hf$qf*W~ z;b0GSv2iwjH8CqwQ-%oV|2@q{`6a?wmn3a3@hqAWPo+Sffck`>31c6`$UD4Wl$U8l zCSidjh$0%_qv#(mh{+`}hTZOPp1H8**$sqz3&9)+H5_Jj6RY@ab3Cj48TF7;1vaPLP7Cv7N72bwrvbSiP%h(GUg9BT~kF0f=6KzlRLeG z`q6#BXjVLz<3%(?E_9wn$Y0NQpI`7VuvXC0cZ`N ze%RoYxgp}nR?85aMan4ljih?IsSEzXziQml~?eZnF z?|z6Ud_kCy;P@=rLTK~O$cf;|(9#8zl4W#%$icKJl$T_X>0rv8l@pa0=L?ng-^}HQ zXhn7lf&hW1m_)&m54ykqY?KZK#ioP?rY)b_UaR0LQSWQT8@J~xu|$bT*pFq9{}LQG zZX{no>nkW%NC;14%IBn$k_=;IrDA5H-bj#Hv$erwis3^0lVKeiO*AQjLIQ@0L`AGY z%ybl(U_hanU_MTUw}dSUI4W51d&f? z0K&^)jY>=mhk}E%l;d5bG0Q3}mo`C- z%M};QnczUXOJ%w3zzh*`fhr@ae!uDFmJEFS&OKfHNjvTc+^khf$Vw_Ig63gdV^-an zH@*0PJ~(zkAys{ec9i=-Ut2Quf#oI!oA1tz+TR}~BAv@%T~Ey^RVOm#ywj>m_L6qN zXhVw1oY=5vYNvWD=G(T5Eimv7K}H-0`4RdZNY8?L)NBz=NU$|S%%*soyCJ| zrU!S)0Z-8lo&;t>9oSiX;n00)N~!yH!+^WdyYz5aUXv^E4BxhR8p|Yu@VJuC50U45 zX%t@?uw|q$0;@*XS%D{e^4?gm-e^d8QZSJa1BR1)E_>l6MVtw7e~He2Dd#uNfH&A< zs;jR&Sq>}5q#qgw94*C2IPtVP!6j zz~#`IH1v!s9R?AW@N#3NLmrj;Zv3Y6-QYX8^zQ2^-7?}UP&$cty&BRb4yESfZ|SUB ztG2SCzng2X4lv6bfb4JCJY2I21l}EXDkT*kLHxqhx(HP61s~5R7 zi8Uf9{IzXMygr~gPRWF9>g;6ZQp`Ho2MmWW2fB4C7KOTqFt1A~ z`yba@hX?AfV=M9gVLu{dT)xeUHp5nst8fyaC>vnQQ5LXi1_B+c0Pt~_%2Oorv|1`^ zGd^kOhuZ%e6?GM_0#X5g>)Q|L7=q zdc?fFQG7#yw~V>CHFP{OH?3+a%vn<}l&N;^RTq3S7TS&vtCFrF2BA_KiRGWbG>{uz z+nti^oK7Xb4Ds`ZTKE9>`F5B=5LP7S_4+k*!trD!EQDeXkp{u1` zdz_lDIi4`%Ufm-q&zCj5%<(iBi=?VnqkmXzL!vqzjJIsIh3#rEoVDgem5kazASq2Y z@m=XzT6tP(b9r_%1XCBzg~`yK2yt%xcnAy2OHs!zs;JTWb}Z3uE{VrVEMs%gHjvBw z)4FjkI|ldN6cZL-Z(5gjTJ`I9-*VWoLm8zgI5y8!MkMIL@x0@PfUCk;z^t zJ0gRYpx}qsF})}5oy%T#9d?5#{>VgtJXn3zUd=Oz(69CW=DE)j{ zaF4lin|Gfh6=yutX8KU!Kl&IV|GYdgB116vO?ZKOi1N2{L`^Y_jVmaulvmuHoiJ1_ zLgCBTT1Mx5>mp`N>jkZ~@p`|{P|bTkh%@G@^|wB`^GfpXYz)1{6?d%HxEkm6JAPg! z`z!=F*&+s^z^eZK4B@^q(B}{ZKlb*%cP&IJ)kj68|r z-wx8IgKytE22;n?{%QJ`m_Z%joHB8;5t+3w zuvyNg1-*5pV|N7Z+nG(YYkC-hJpdnE@mI2GYr7(R2#O#(D6zZp2%(;$Kfzl7i{prU zKW!}=zJ30R@X6I<b|zp|cz_qVE}Aei|azP7)n6Z+Cw^ERWUb|!kX zL(rYm2NAZ;h!L1sKE8Q5Oq0-6aEoOB$zA#44O>Ya2U=V zhf-M-MlqMLne$|M;Y3Q`sSFwwtQ1qItvf=^bGLp8RCxrn2A2nx9IBjM>24T#f4@gl zdlny7Y-EO?dA~7KZFQ>4vHxM!A3pufig)Df^Jg6G9cEyU;&uz%p}P7!YEm-mmm?x% zU%$8;8D3I{a}MhL95}+eo@wH$_Tzz+QY;i>>O4e9RWw7=9~PsA1yb;j4@@9pK>FbT z2?EEX2u4PuhYvH~S%(CI^e&qRXtY_9Z=$ED|Y=zI~S1%um_KfhREgd$g zDd~}%@bOkK2mH8u>~xSK<#C>(pfLocnk)E)_+L8`sQQD0pcPpq%13|88*>?Djy>`C zFY?$OdHZx7x6iiTXlw}D3#<55oq?tLhSMM*?uJ1d4?0J401^2E0YL!$cYp%^?*R9o zE5!c{wI+AColp7=K%qMn^_Z?o4x}7|H@T65DBUpF|~e9b8sG*NkBkT-``(9OL_N4^~FVx?|awB%}39B_sjd|_s#jodk<{)^>r_ZB8NS2 z(tQj(r~s${5Ik@=oUoYi;?FyQM(6UdK?VQ%1F`$no~%+UQ%`hkyBo35k40T z5gL$41Pav~nqj^`L1YLtst<@p1@iBQi(!Ei6O73B_wUC6(*MVw<#n ze$LjLEDh%5N?lZD0*2HJg__p^2ki6Niv`{$52M$q(>5ij4smRFWq>I5-dcfDnj8nk zi6>7bXj3y~*Y7cNBqZqPkeeE4QklBEz+g<@$#4<$e(2?7=j1ce0*4Ma?YGyoznih|@X z1c4L)M*#s0WeNKI0YsU0%_DH}$Rv`s>zy#PKFPj7?Jo&g*fN!Og zEE{kROrS~2Hva`7$6LKP`fjaTnytyIa;TxI5*2ueMTKK-IezvMiC~8Wp@`EE+FEr) z`q1qfjpekRlwZTJC&9JifJOxe37N*^6>eTKOHH$k-jh`j>Prn&*ur?g6!R%Sm>GJT zq%4!(r7mFr9&6*-N)t+nR8pPbJ(}H}E}!-zYf3(<2atr;jv6zb6`F4Rt5+7EtmF>G zpC45abPlO2YYyH}kR63qk$~>PK{Y>BQC2in1@+TVE$5`9&$?`~LL*p*O_Q%VqNj?k zIwFRFIX_auW@Yjc?p5Gfm!G1g!?9hIo*^ol;~Jq=E{UjhFUb9lY9q;_lz`xg8V6bx z-)iU_JDb=(Fcmm_pkw`CGx6-9xgQ8;%tNGc(hgA!}xPjWNf}97D{^j4{W|%p5Z_GbCnah~wn^{ddxRI$cYn z8I9h6W_ow(b-${5VSp9`P>u2s&_R-e3lIP{wi1_hA<}}hxOK?5S8fPzAQun8;)95A zl+|eOT*?A{W=RGZjVK`kC*qOi!AWUEiD6s z5oAtd0P|J=06KsOm?3?iKm-7QXE8yFnaG8V?-}Xhf;vYKLcpxO*eN%Tb>0IJECdVy zyvP5i(ag(6S#ydYhm?lQmH#eT056Vlo~o#uYH&-?mC!+EXRRAz0<803!4ftA04(JF zC@N^OWV~F7qQ)EJg)8ZFbkNq zdLS#5ISqzb5q+Tv!cU6gVnD2`&mScnK(S9HT~rl&q*Utbhjb`BC{Xc!~xwP6qKcBQM?n1}Un51{5(_ z7I?}^xi1_XO;O^ZMJ++SYAgsG(P&LniDE{K@@vfSQK-bm+LiDO8pVoDIC?gm_Qf0{ zXk0@mx^oNN6~yob(OT%Ah|;4gEd-mLBbHg_O9t#rqGVD_1=T|k#p(YyX zseQPv>CqfU8~BRc4EZ|DC^VRG^5rZhoCL5ozw~3Ii{;Zem}%i-HKo#+^;_0ab<WEd# zpU}$IJDG>FFu;p-GZYlaqLfLaFpUO8QUC%87=o!7DDf}6e`ucLIWF z^W;~X+`4h`y7OV++V``}!o$C-9|O0~qK=5+?a`Yx^r?Z0th0xvI{sXJ$ z_*AJT3F~h9Tic_tK3F)&U3*nsGk508qbPHhIoT0~iANfzAzQ-Vn%9%rXE*I`gA+GF zwU`ZJJ$~`SuT>5x!)~EZyBn%?EtC}*EH#zJHK1Gpp3AAE(-iQ_;{$uRa;-}}r2<|( zejvevgJBlNVX6p2{DJfj6iqr4-Iy)HNgab%oo2ge;9dClB=&Mljc`m#b`)uyJE#** zSrQkD=dwNbx$%IZW|Wu}LP~BFG@yxMa+Y%{8%YmI?s&T*>`N2qvV?GXZ@J`+Ft#~x zAAp2JwMc9~IGyMgD~tg^Dx3T90UP&s-d0aH0y$CI8`=^^0tISj{TGO>cdI_VeO!?l z*-toQEmEPzdww4>!5CK6LUOFdK!YtIlkGA(6Byza`{E9BC)q&NmZ4b8<2u{S!+w>} z-s4YV@(qoi7}56y;Hl7Oy6Rl+VF!PO{Q0q#Ia0d)v~OBA-UQ`See8rcMW6JWmk)+m zw^xxi!%0b-p2+y{?is(NHs!})tYeWxkPQJYS4pcjS}T2II?gw5g?zhhgO^suCK&oC zk=jINd@nGltVc#F(Z7ZWaLYE9cV1n;%;gdkt?rTF2j!q@sUlBd3{6Wb2mgY%Ds%`C zl2ZO8lXy16Ja~b8&ZpdRz7k#G^5l!^r8CoJ9VXo}Tg6O~j|!hr%icwm-D5oa_;+GN za5CE`C-K&Y?M>2(<~yf2JT2)#Fij1TVAZHRcOnS~3J$)-$^^l5kCu`+w{mUs^at2@q#o zXe@Mb_<4R*88pi+M}x&U9+88DUa9F8c_j8VuRE*uyv3&RX#dyIkrPhzDv)co2yFnz zBn27FE*1pY(liRMKK*@#4}FOH$%rFRmEF}Me!ChBbL5bMrtAXnsff64vX@VgBtiO_ z(0>Y(nJOm444;-oNhs?Q8JI*7Vww_yaybe<)#SuXt!|`%L_{1|8Vk-CSNcoaKN?qE zSc;dLKl0MHTj!ng<|beKnRX1_@w(z0??I9kclV~Es;Gi$m{dt(5->!>s0LBJOP_#L zHDk=Aa53MtN-!g+%F1F0D(WGcm^iv{DFGm$5~(v+6fG@!H?u)%WxRD(gv6Ste|vnf z$)}7RgzbvY26M+fAG`1AMPK*K{W?-O3M;B7hk2t)8U~lMCv`W{K5>jNXRgrIw4|Sy z<3{97Za~-CBa9n)J2n7=MscykM(sRFQ`W6S7iq1i<$?KBG|Nqqwt5^294$YGCnUI0 zD+DX6QOYx_T6yV)hgYT56_+}Y|70&5`y2csd3>@%~vwrVj(Kzi6q zHM4CkVc;%(z(td0wAY)jv)m0C9QJtphv2c@r;$|f^NX^BmJ$=xEpxLIkG90FLo1Ds zt6On#!@5x-ZpGlpQ)wh{aYq@~T>P74b#*Y1&W-AWWu>j2CMu>~buhOeo)n6F9fJfD zJPo&iZ`P~#U?!NwKwALn0<^G9WvVK!49JM(Y|lKswHTXG=wJF8;6kco-#BWVp0D)x z1vWWxC*axv(@)W>}@bdVlZTfKXvhyyycRaO)3j9 zR4gMXKvD+-Rwwg#Lz75~$U%8B9+6X3JlBL{e14W5W3^HD+j&?VqH1-}BBTUn7%1f) z%_Ke-%qX&1J}MO?n3^UHV#LKIt{RXR#OSPu1{W|CG)SSLG)uA4v3J#$Ezxyx_|$RT z+5IobhYW42@fT|vxhJ}dz>C<+VA##z-ns1;b1)Jia0=o&PM8!QVa3h;sV5J2zuE9X z(|bZw^AoFP#Ubq?#f;TNx_N{7Bo{a9045)GvG531IvMl$Cn9<6pdU=SRvi49^;tD7 z&Jn(c3343BzkKnknqkngxM@@(qxWQd7A$e8~<&;KBO_it-$+5 z&$d4Q(*%j^JmbnMpg7dchbE%jKpUq@31~K*! z4LfdLW86f%@qWDI+`(RLjMP%0q6hSK^YYBE=so+CYO>y2jZn5JCz?30mLS<@1gQty z@@F+#sp~F|4uq#nLX+eWoAt9cssnd4XqW7;m638{mUC~k{=&yJ7>=B zd}>Pdw!)9Sgvq08XR{7}dUccAHcFJPZr}a(-q>#aOdq_O5g*O#(b{LZ*{Wfx{lv1? znAF0>vexv=m{7+(-3v$7nPDh4mjBJ2@Z9O+laN8$vyd(cMvFtQI~-iof<9>t+zEj= zUNHX=DPSJ~RxH6pBaud2u-pQ%ytZ>rYbNCfolrb*FO=zr{1P8o9{JPU8%`Nx(Fh*y^aY>zco?LzT1x|yIKjr4 z7=gK-c?97Ok2c)2sSrwnyaq;s7+fO;u?Q;VIkOfP^C+~CG+2sALITN{GzN#jSB9Wm z22n@6KG{4Rpb-s3Hc$(e0)l(S^|zmCBfssyWJoP3(TqSnBLM&61YB19`aLz9Z*xZJ z8`~w_)6B)Qs7Lp8H(9IYH#U1_L3d})`pN_6Q`6;NF1J?}mzQ5x+PZp_Hs6r%osMss z>P}w>ggx&WPtL!-HrcNn=r+6W&~+;D)SA*QWlwx!+wSxZ`}_FCzU^(~Lf*k_tkGK1 zm&@)vJ3G5uKgUjZU)iuR^CUatyJ!l^<&Cu9%Ns(Nk+$`s8>8~w4=iB1>vnf6qgD+y zRUr%4sbH2LT}?Z{0!SD*$Pr9A_@KeDbazL1)S=V{y?e^*vd4kVnEZl#tDbRc9|=!W zj<5MN-ovgZYQsrmBEDNCt*a3fkU}ayI^%1*wb&apnTJu(h(-tnLHsJhdgMKMsko)A z`t{qT8%YeJuqY~VRN)vGu*O4Zae_oDlobmKr@Z*)r-bjpT^B}jWcJ7r35;CTs}v(Ccz*& z#`Ys!eu$+SKO?{Zlo_@C~J|HU$v*lb$5y z;SV|g1JAsnMj}bVq<#`Z)$`N@FI7~6hUT|}##MSgWN%J8)W$G){E@!ZF7pmZ1S$$1 z6&V9wgvi#{YZhvQ79VpEhT_>}lqdc;fotPo-!PyDjv+owDvo`k^O)%@V_{{=9h2Z+{!qeE#sWm%axX<8zGYl6II>E{9=7DuJw)XQ>oFbJ=#a0WLH<&}Coe zAcZS=tPOYv^TdXu^ zRm-=Bt7bwew$Xw&X|f4gpKa2E6Kk%NYO>WDuc&T8*|1rylf+v`N=-B=XGo2;mmf~4 zsv_2s=UUg*o{+O?GSSk)Tkq3s+0Z?;QX`{nS%SmkLPG%5!HvRFV7)(#Umz+i-WN(YI0+?m;^s@%nd|hm}z^x5UoG*Ter9L-S)Zbm+l%Jq*tL6S>6s;U!zFB+?&(b|9r zlSs+u3o+$R8SjvEd31t*2O;$~F|VqPXUxwzggy zx4p=9z4HF%Xv$a%^kOgY|M{!n643ZlkdX9C&)vetKSBEGo$!$ta*4}!0eX=@flb{N zlvM^pf1VMxWO&7?>(2h;d^Sn-j^kjdqV2i>>ZAdC!;v}8{bvn1wY*wd+g3H zzR~~az3xhzEaHWl=~ojR?Li?xkM7vb}} zDDTz8LiOJ=FA$+Q>#ieTwGn{o-pKszgm})3kV4wDS;>?taX6|JZiW2>VoiHw*de|Rl46@LbQxJ%3#F&hadL9pLUDrllsjxle8h+C)24MrKm>-4`@Jaq^8Sn86) z2cc<%l6hKMl;1guS_(xc4;(5Z!RS2?%#Jf-zx`#x=Zl~HX+Glo4qVuOHDDiJzx&W_ zR-=a!cI?v4t7oROOgNf5NS}Zy`zW^V14yk$uM0bPNW@12$p=}EXZ*1!e16%M8Ix!m z_x!lvpSL3ASij=Nd*jCt?KjU&o#pH=zEgU@(c1W@Z9LHtEOaC5bWuoqy!a7k`zW&; zZqt~9u00Fra_shNFPu%ih80;8h61?2aV_>fxh6-=f5VQ|4zg3R{b5VUA2HC^^>jGm z1-UE0qx^+Q>Xi7420KOU1C8V=#TzCzQJ(0v)LpL(1Tt@ieJ!c1CMH}I^fe;KN;D-w zxeLziG~j#*cp8xc0rH9zjM`V-%9cG6S+%N0!_{zLlP0}%BPRZn zbrb)Enwu)_lSsN?*-@=XIJpXE(7nYp(z^Z6-HvdhNsNiQukI4H?*?x-(!=ni)(j?x zeI_QcThZ)i*B`y{?{9~Gu8acY1AtUFc$FHIphW&R73!tcha3f)N8j2XKlrTqy#0$4 zc`|lUEGU3!7P4X?#)Jg2vSm3f6CG!doh4kCi{IS?jMM6PJ6<&Q+C5`Z+B{fH+aq2u zR~!aqNQigzj+JH9PI=_1=CTcpO;g8WIO6En0M;ZO* zwUSK~X#bM!#BTBuM8n@r})bl{YV)O1M}xfgt1*7v*}Xglh80S8F>=) z7kTT^Vhrg+J9n~ScMUw}#^i4_=8>0Ax3wJui%FYQc&!GiKl~+G+}?P$eSFc3Ht%nr zUeA|S!sAEtf?1#xz^?XNi(e){BP3Apsk4DU+sbO}gql5M+jH%B=Nr32R(bk#XNMEP zD&K=+X>^icV-6n4^yQuh>!mr){BQf3e{}ZW@x6|o8AZmvcePw^M>RT9Q+`8xBPFX6 zu)k6F4<9})+76Ctl5AL*DL(HM+l)qn6YC9!+8}e_B;)}k?-=#)Hz?0vMdJR+gim!# zcU!>K2|Rtn2%^bAW_bsB(ov}wC2kIEy2z-6FT5Q;qrMR+%4w|IL4%vfKWsUo2YWVz z24qdahE?LaS|SCO$netHa}CHAj7UwISE*ip6+&p`lTLQV4x2YpWKd{Y#{nmlQTE$+ z0fFL3A+lDOIf*pEqeWt}_d%Lm`6JXcJ?hMaYE6119M;#fG3s=Y=tTJ1!QmD&)0rzA zPRK#PhTs&wUTnsc;v1*^1O>JORB8%RW0)cMK2W~W0Z8V7)%?;zVGJXK1~Qajg373a z7102aFG`}hWeP&d15iL1KKL&%$kDBNdxvzu;dSU&q|gv~Y^IofW1y9GT)%iKC2$Vp z3rytakcp`rJhmZl!ayKS0HxTWk1I(?&GsSnZiullqFk}y(*_+V;x9Q!AAVy|j0Re? zKrPJJKoW70Rm%tIbWS^z?Y!UI?UNz`2oNkaNUJCUVkM;yT5UoKpb$y*JQ>N%qC3P) z<;NybfukhssdXyPXTgN~0;eX*GcQ75B&&NUOslzhKu0gCc#NQ-#2Bk*Yz%6PXZ z-)G0F0XIuPp^+!xxO?!^xlWP&Qy&2`*PoU#+fkt5&l*^!OObLwMP67FpGQfNfq>bY z$ChVf7CJVq>>d+o`SNp5eAL&PuB%(*t5Gg4WC98*$zTL=4v3UV9|0vH0ww??I|eXf zpjH(Fm-N&tiEI-OKhIRI=yIBvWLqR3d8*_i4QF<#6_6&1 zQ3s*e8q{T>UxlsesQoVYcGc~Q**0KCF7+12EOtV>q{c^2hl}Y2I%mVjw*kgbY3{`O zJ(B2J^GXu+nT5x<*B;g^Qw5~xqX46>!kXA{!-ZO1wuXhJo!qI5FDrVA&e2_44u3s< z5Eg(5*TI-eh%SN#$wl4~@qtIdwmu}ABN7dTI=MRdYLy+FXYQ`f>CQP`RbEW5o@-P2 z=;&@J357Z3t%Y&tcWVgVbluT*7Tigd$Az4 znkyZ{7!P=;+9DR(k6%)eJ|?vJs4%6Zq@a{P2wEV>6Vq92N(2HaC}`j>e5#wP>NTwA zQnL2v^4Ym&=fLgkGgo!B$j@>8pPR5O`l{B@Y3b0o2H#Ys&`pv5Q3(chYLgg1~pTyE4 zlNsI#*Kh)XX=rxD4z{a1#!vU;61wNh*w<7|d1d`M@l8WJUH0)e0m<|7P&|&4so1gR zDTCGlLb}}nBzpnC<+O8it7@+8QpT1|WC^dl9>dsDn4T+Pt(^QXBBcmB83F3-#2!J+ zETO9AOpI^|^L(mp3v^k#ixW+n@=!j{*k}5ihWU zQ`pf>$(9%-#i z{}wJ4ZXgOo+=T)?Fd>&$=j<(qSvQFu4xUpDrVhyOoISU)HSSK0bJF3Kc|Y7ED*Wu1 z6%VTz#{`v2_L^1K@}0gP+%us)kc9??!XhG3s}fZ&O6{4WJvr_)dOQ5~W_Q32t2$L= zGPD*!+WFwUy@$5VslluqR(K!X!SvoMrU;kRzBP1D9RYU6U|*t%!lRi?wODE#<%xshpM~ zt%8?Ro6fzOulKKX(h!gZM2v&ynCRh0Hgy3RXJTs!l3l+JJbYF*JyuQD`x=%bl zVSF>Ch5-R0f^or$s$~EdCX{^ecXP5#A$AUNs_=X+Kh;Hfgu-L%8|-LQkQpP9Lage> zStqqea_uB{U51LqC%lNXrLw-2Got}mhO$}uF!x@Mk#?Mqg{|cAHHKeMSrY4f z`lfT3d^K$)yF zibiA1kq)3QK?y#IB6!3RzkPEf=sG|R*gL!PZT{yWrq2898BKI&7qfoclSfVie<2bT zobuA&l>IpPw>FE}%Mp)2@7w~@9|lx?4e#j6x{I#I;txeZ!ASK;?e-Qi(?h!uS{o4# zc8(Dv1qi6vz~8)GGzO>Db0_|j{<>;D$-WdMApJv7!@%F$I^S5Z6l_dM zb6Jec5Fr~reoc_H0q97=*T5C@%Kj%*c2h{>RaylMqQ)lp1!2_WLp^?RHAoP~P^~GZ zXM!i#2~XcnwEkw-uJ%paICDVHzOmWnq-nBgLlna}%Y$tIP1Bu~HKklZK4{ee1P43& z8h}LW3=wF1STx?2tLjv)`r`Y5{=z|44BKji)mjM3@x-Qav&jz(he zWI>ZPMN?`n&$OkY7{Wt_2SIUV6SV7-q!NxKzGJB&Cgh0J;sJF&i!kGlKjwZ)cis;> zQZF%_IQN^6xizd9vMfO+Luk%7l0AhGgqQcDKdHB>fX?=6@gqYZnCOjHrNvL@PG2%A z$v-O~c0mZ;+Eg?UiR7x7|TZ0Tf7u`+p>-PYWAEYWJZFgYJ)<`XA&ZHFtyzFB$^Rtl%TL7cEO(^@kE6dS8S4=|+wa@vBcN^C z&)z-62NT5}co4;+`csFKQe(N$?aANo2h~4Uq;{ za&t9@^p+8N>=(kfJ|8+`IO32ML zjI@|G7N*8Xf>_xi0hS!s+t&)07oU!HxrGR-pn^fn4^H%-%jFnsdw7_X+l}u7gPf5J z;rO{N!;!nVefL~8+7&^4s}gioO1FCr&J*Zp49@(&lCE>kCwtU>t8b6_e~iUaa$}fC zRZ8=qeP;t9jUJmYYpKU1zV38uAIGs}iC2gh;~glIlf9bsuXe2G=zcRPNYcQnDloS@ zjdtoyLJA_04OWEpa>_KAUp3I_uygF+9b6A9LHLOf#>O8C@}x=5^cOxjz)BZhqrCoO z&AZtexr%7oQE@s43cy4rkV^bybz5&z?KW^hUwii3>{F;z6szvs*=j^RqkfLmmdQK; zQ=^>r7mcMH)qqC(d@ZDk$hc{BMl{gUH!LNZ!QeE+Nzrzs-idq(n7KTtjvD6l;ZLlh!f+#GQF1DzkRW@_tfIIkQzz%EUodISvRN~6XRR~o&){R)%tl(g%GZ%Dtx4bSMw3LbO01^ro8Z18zum0)ZmdM1xy!f{``^}_ z%h@8FvI7BU-o?@Mfk>QhkItU39>@ECav#_1ll*rBM1e!v{|HLQN%q(!oRX+se^P#3 z`9nrzOrd!qPi`dzlPJ5iGcC|cfBJ#(cZE-5P}&D%{F%cqR__K#-5?FXUXH|bpY~*@*+}j@G$NA1w~?cT@vl`L125lK)9ah2 z>3=ZKQlBzDr>PcoFC;Gr$lQF4wiWi}|6N@Cr^)v(8Rq`Lv~i!$rEe;`b+|;RJ-5z3 zzV=go;qU!Vbw+O!FFJnidV1>h%aRAT%`dj7qXfi()Au6v zBm@+5{n^`Yq-D{-C@iF^k9n`3;Y#Rn5jyHUw^-o%Mfx^vLP$o9=}mn)n%*T;_FOy>K=%12#dpCt5WA0@)9X);7}1pqyHU z1ri{Mf9R7e=W^dXAL22dwRQO~vU2I{i2-{Utc3_ElDsoILQ z>!>_#?#s#*wYvIZVM|W2tAx~{Q`|YqY^Zok> z(g>498l(xN2tk4Y*}6DSeLVFv=CsjbnY*J^Vn~h^^;)bYe0=&rV&~j8cT zXEb1(Jq<;fAF0lCS`gfmygjg4FWXXv}(Xj+EqHkF|MhxG(fr0i< zEOJ!9!v7tsLX)GAB5|d1LzMok=tn$Bv%~fhGxZM~mmt=(?a3%YIlpt_$A_*|x91jM z);iy4OZe0hKJvS})?8xNrS~tzY^CJ%R9}OnDYAMSSf0mDv8hFO?+mf;A!GX3wd0Lc zZ|OiVp8eP>H_kuyr&5pXz%u7$ODGRd-1yAu=Cj`=yXBvM?2do`vBx3WdH*fDc;R4% zp*jPIn6`&Jk_nq0rq#h~S1AU3AM{(btp2<1Ejr>S8s2cX8iW#u(b`n|u`Bp*dkU0* zJoY>aG2iXNK0B6x0;7*YC@3EbqqG8{2!mR{EP@r2Fr+FD)w;!)Vv%q%`VZ~|8tpyN zE5H6p$IF#U#%<3H`QqKAN|&UR03x1;(+#6I^v2%CFLz+?Dn{nrm$h;1GfIs=MshDd zM|PatIlAg-1gf)XYPTcTzWrZW3=B!@K{Vw|DXT0tF@az$)N6jBnb-}xJsL{0>G5j? z`Y|qVxfG%i6Q`JZ!|2t4hi)t4t=bpKiQkfAzvbaZ$viP{%g*T?(PTV-@0nv&89t<# zVN$bc)r@mFx;5j~2VRE|ZJn~(nUZVXuD>*!^v=%x5C~^!@tl28La?5y-}tJ_C1h(( zNHkcbP?-oWFfjktuLnAt`?GJm z5|QNd;(GfX10nE=ilhMJIaffU+w^BGAI{HBkk=1^N22$QZy!>h8=ap&p81b(oP6zm z!5B=E$RU7|Fmf1;%?<0wAfmO1*pi6(f{+SG~lEk58qH4|40M=0h-Oiev8k6|0nig3AIScxh>~IN_q!5 zOXea&S~-IfHExnecO>+8;-!o$;?ak20prYce$mG6sE;OZb!9vVXdJuRxaG3=3HtnH z%)?CEegXZ&q4P~^<`uf-cm-2zKn^y<>7tNt$O`2sjM#AOZd`ur1W?8hMGL20((-9_ zDpo6~3>B3&Lk$k~{`Y%@8U+?;F}9$NqWDni6wU3&97D{j=dPl~&CCNvO-+po?}+uW zqAy7w3$F(b4dIq;o<0Lb?w}&h_nXw)MNHK+Ynqb%7v9` zH|gYYlLzX4Su5`FXX14ShQ3U>)f@dxG^Us0o=}My)KOYt9g(|kx=7AI#*K==s}&B z{d?@hq-3UYIu$%XYxHDai*yA~&*UqWd;ax^I+cTWNbST|?3yEhF4q@CD=&3K|fca$BkyhaL=fWMWyGScbMv(6uk4H&{EdBxV`)PrCC)H#8KD zmNT(a{o;0=U*rzX-<>1X18&=T#sia0lhDid(5Dw0=)@|iR95NBBflet7c69!pmB5@ z*D=kj6_p%37g*5cBhINMXo>}aRH>xI0R?p1Oa-G66|*s_Ml=Cpl2kA-KQ#{ug;$bjJd%_bZKeZXa?SXq7$50Mci*lbFIT7t49lPoebu(WKr5Hf0F zWdgREHM0VP5zAmf;00=>l+n@kVCi5wB5G;+hu3?bsMmV68J#`V)X&~KQREnJKN*`wuB^5 zex5XDG6X0h@lO1r1Eh}|ztg_x=-xws1n&eTxL#}+vtA|e;DR&&^v)Bp0>FZ1XRT)6 z*&|?BYHG!RSu>7zdI-_`b%_ul2m$XQ2o&#kF$+MT%+H(4d%vC)g0yr7FmKc-zzP5c z%mTn@@BS%lS<~9sMq>(RjrC z`dMm=?U{kcAEkL7vsc?sys{xxB90Sk?as-PV++Ors{n`X&9 zm@I}*S%zS;CN{#M78Q5AL>QQuvz~1G9G`cv&b4l`kOgj+j)ZF~R>6lH`LW zN0V@{Jts+odtIT3auc|$WfIAnNI=dqe7R^Kl}Qsdqppf)v`Umzq%9e}{zIKuw?vOF zC>RY#$DP;IIPs^|;I9(Qs5UE$@5u2ejl^8_QKlh`VU;{liI$OJbZd&TV?&TJ*9nv1 ziW$ZX=Xm7A*h;QR;z_@ZXdFlFcN>HCsV4n@GN&`D>7FXQ*H#++d>MfRS>ra3W+@St z0FoG@h%e40s?M(&v9#j*G%z~WLT$cm^M><&^0Lr2g&@~BM9Vro*_hi>GVcrCv!bjdg*Y=KSw7ePpV=1`8|>fwnhVvE$GmYbST zMJ@{o@Z9Y)$0)6Rk)h*p=w(x>>9_NT#3z)Vtc(PE-6;x^CBs6e47%ZJnP^f>rX21t zgiQIEFgM>m^vcB!mPR5@Zn36DnMA4zTS)U-rFO{4 zp5e6myjDH@X0iK}C6AAy!KXXvLffl)m?W3sHL4D7CV@|KoSBAlL4(HN7<$Y&Y1bIQ zKcwOJ@l!dfb%Gw&q|hc8FUvjWx>~2JLm1d6 z^?p@r-Di_F=;Bm;^#k^xG=Hu`ygV(D&U*W?a9$0JQDDNcm3nRUCIPvAO16P0dihx~ z3&C(!f?$Y+do&7)7Hj(am7XpA!P?0<_hFVUvr@8rVou>ae|1 z22WEZ=3(Jr4xS#nh?;LkJ1gRHm9H1F)NF6ha$aJz5}VbC-Km9UDzoyrv>F0~6Q8jd zVRGbANM*h0NY4<#9PT#$#JIWOsGVHIK3#dncjDVad?%jN+`j3gn(V?}-G0?(@Ny~L z+a$N~Vw6uz%&JMr$oiL=Vx?NwhA(w53}qhC+EL}ry1C_x0s=YFBtBh-%C?pRJ@vYN zns+P1Dt7qI*CnfMPgPZR8-1~6bGi&ZF~)3WKe6?v_f2M3_@MmfvIUIZu!B|(kb7L!RPFXF9`T)CzGrx&Eo@&7(Y({XyLr+(NMi3xaO}|ShEvill z_tOFi@}$BupK|_)`+wvz(MuMGdS5s*@zeFbOzCjPg*mL<&k$erE-*Si*fs zVr2^aBRh3w<_AbIqp}=X7V2#R9fIke{LlS{kudFi8%C5AO!CwKhbOe_wu6cy9ed>u zcZ;=lXCFU*4npD$U)wUXA!!P!)Z^18~6TE z_XoTk#H{Tl*&C^3oy3Vs(~2$gtZ3g`61b&WA?eyBw5x`VX!3f(tXn3=L5GH7qX`XM zpdzhys~W8Kb_#9}X(Gl{Mw2ZK#%gS|rvk$!owxy{uR;g{*VTJD-54e6E)C~<<>>}u z78NBUh@N@^Dlusc4{n9oL(io+sO=}9^lBLVeN5Q!%oHJI=^@V?-m9FrOP1p9k{dL#vktA!-Y`)3(QI`X1u*)J^z2t zF{8kL0Zzbw1B1YSrQa$4{RIL{007^Az5b)1T{r*)_(yjOg%F&D^Hf2Z*rXzz@U=7{ z9Ww+Buo^ToMw5P6Q@^ z5Lpo-fY1U60mxV~<%~bWi|&KP{s$?(LsVY9|#!RAVdQ8q5@qVePB{Akce32oM4Q0>z*J9D9oB5TvYvmMMfp z-ZUH&MyDTDa{vi8fCSnh37y6v`5UaVk_nnDaaOOEEQJLy)0BI{oFI8m9g7zY5bT;#wrnVE9?Zoid%>5n?MFG~Q$&_?{~l_&c4A|e{wgX^NBi`e z+g~XBPT>aqhanFDRIiY1=CFQvz*+lw%*=|<_g_6I1b9yg0DRR90AK-taDb2hb|^Ri zO|$D!xl7!0(mZ79AbFcyxjgWH5(W+4lEqm7Hn;ndfzlb`sCYDgZmf;0p1utN!9m_}@yV*$lWD8mL%?>^(Be~LS$w-L8Eh4+ zt*R&BV^L<;7J~$6oP(Uvj6_VvbC}^3TS~EphISng`oDh$;vmG?5HYU)_%l|$^WEH@b3$@)V*J&5fYVYn0CVf=DTf-SG^1M}ox+M?9= zP=NWLp1>clQDwH|MTo3j`8UE8JLLb_f3|=Fxv8;a**F^BXjJx*W>M(oJRZMRpI(K5 zYr1SsOC9LBSpUZZXRZa`-AQF+An~Mug>uVUOilmFcQr~!&KGutG*w_rlN74jkLnfb z(_xx~k4!M}c&lJYu6ji8%+7}+6BgQ9`a9<8UB~yA`u{6WBAr==2Sm#b6DY@bG*OML z73NE4{lUe(&lR4at0-(!^`CqE?{=O|<&+Wc0K=k|U@Atxt^xf@_;0#(uEKAJ;GQZY zMi{7j5Vxj(y?bX-wa=T3!}b4mfd4+%|8G0|G5w`GIWd0fcY3L?qAk3vlm-#-Jy7y} ziI@=%L#LmzWJygh^8Vg{Hy=#t11e+|#Q#2lOesxhuTx?cAc_t$0@6dEg&?#!TWm|ynNvM z*uQxTofPcN{Zr`Jp4`V{n3KBrVGr`UIHx?)I_Ry$3k~4=)GH$&`f6ux$HIoM+V(l3 z{h0E$SqZ^mN~LVw-2+r&thv%H&QF&eFdmon!zpzEFKY6YxTIi|5oAbGgrVDNvnzfr z>ONwtMA;z$9w#DhU)nW=YP~Sa%_bl0a!d77hwopcdN$0?$DR~Z*aCM^ZtQ<^# zgJ<-yXcIalu*o2W?)-L^<1e56ybqNdM%Wz}-d`zVR}8Vu39C3*xm1aTy87OUC7;i5 zBl}S+Xr?u9r{RsgE3Ys{O3xqqMV0`^*}@NDA;Iv!Z?ByTENd89*DSr@Mc#XFEyMb| z)9|ig5fAfgvpA3t_t|-W;VaJNJkzUy{f*R(6q5$|?#rF?_f(7Z5e5$)eCzT&_!z7K z#>1=H>L+QQ*B8BtfaFGNW?SEg#E2%#8>d|a3(!rrK~s!p392bb#RjT+>mQG)l&U*} zXUKn2{ZL6lkA3&W(>Pj{4jM8d>6%(86eVxuav^@HO$J zI2D{*N3J`;chWX?J>}IF7Di8NFE~+5NL_m~O3FgXRw)9;rILcIG;_C^(gnXqQOcs6 za@SW^jMlgojo%Iw24Kzd(2|nF8u#atYotOJq;s<6e#20q*whPy`WW+(5;Ko^w{6BKD>TIgcy5Hig z>HA}BmlR+DN`+I}6C&Y$$;NUB@~C|uDj@nWWfz)R@P!391X_)f=Zy`LQwfdanhjN` zZw^$vDHV$7>bi?Zf@a6l#bQ`gHRA6i*Q2b1>sc_y7O^ literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 145c2ae2..9117b53b 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -518,6 +518,7 @@ def test_lotv_time(self): def test_37(self): replay = sc2reader.load_replay("test_replays/3.7.0/1.SC2Replay") + replay = sc2reader.load_replay("test_replays/3.7.0/2.SC2Replay") class TestGameEngine(unittest.TestCase): From dbffc7fb6283fca2415c51a8396b6660a04e6def Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 26 Oct 2016 14:46:49 -0400 Subject: [PATCH 077/116] add new abilities and units for 47185 --- sc2reader/data/LotV/47185_abilities.csv | 389 +++++++++++ sc2reader/data/LotV/47185_units.csv | 887 ++++++++++++++++++++++++ sc2reader/data/__init__.py | 2 +- sc2reader/data/ability_lookup.csv | 78 +++ sc2reader/data/unit_lookup.csv | 71 ++ sc2reader/resources.py | 1 + 6 files changed, 1427 insertions(+), 1 deletion(-) create mode 100644 sc2reader/data/LotV/47185_abilities.csv create mode 100644 sc2reader/data/LotV/47185_units.csv diff --git a/sc2reader/data/LotV/47185_abilities.csv b/sc2reader/data/LotV/47185_abilities.csv new file mode 100644 index 00000000..3c366947 --- /dev/null +++ b/sc2reader/data/LotV/47185_abilities.csv @@ -0,0 +1,389 @@ +0,CAbil +1,CAbilEffect +2,CAbilQueueable +3,CAbilProgress +4,CAbilRedirect +5,CAbilArmMagazine +6,CAbilAttack +7,CAbilAugment +8,CAbilBattery +9,CAbilBeacon +10,CAbilBehavior +11,CAbilBuild +12,CAbilBuildable +13,CAbilEffectInstant +14,CAbilEffectTarget +15,CAbilHarvest +16,CAbilInteract +17,CAbilInventory +18,CAbilLearn +19,CAbilMerge +20,CAbilMergeable +21,CAbilMorph +22,CAbilMorphPlacement +23,CAbilMove +24,CAbilPawn +25,CAbilQueue +26,CAbilRally +27,CAbilResearch +28,CAbilRevive +29,CAbilSpecialize +30,CAbilStop +31,CAbilTrain +32,CAbilTransport +33,CAbilWarpable +34,CAbilWarpTrain +35,Taunt +36,stop +38,move +45,attack +59,SprayTerran +60,SprayZerg +61,SprayProtoss +62,SalvageShared +64,GhostHoldFire +65,GhostWeaponsFree +67,Explode +69,FungalGrowth +70,GuardianShield +71,MULERepair +74,Feedback +76,PlacePointDefenseDrone +77,HallucinationArchon +78,HallucinationColossus +79,HallucinationHighTemplar +80,HallucinationImmortal +81,HallucinationPhoenix +82,HallucinationProbe +83,HallucinationStalker +84,HallucinationVoidRay +85,HallucinationWarpPrism +86,HallucinationZealot +87,MULEGather +88,SeekerMissile +89,CalldownMULE +90,GravitonBeam +94,SpawnChangeling +101,Rally +102,ProgressRally +103,RallyCommand +104,RallyNexus +105,RallyHatchery +108,InfestedTerrans +109,NeuralParasite +110,SpawnLarva +111,StimpackMarauder +112,SupplyDrop +115,TimeWarp +118,SCVHarvest +119,ProbeHarvest +121,que1 +122,que5 +123,que5CancelToSelection +125,que5Addon +126,BuildInProgress +127,Repair +130,Stimpack +131,GhostCloak +133,MedivacHeal +134,SiegeMode +135,Unsiege +136,BansheeCloak +137,MedivacTransport +138,ScannerSweep +139,Yamato +140,AssaultMode +141,FighterMode +142,BunkerTransport +143,CommandCenterTransport +144,CommandCenterLiftOff +145,CommandCenterLand +147,BarracksLiftOff +149,FactoryLiftOff +151,StarportLiftOff +152,FactoryLand +153,StarportLand +155,BarracksLand +156,SupplyDepotLower +157,SupplyDepotRaise +170,WarpPrismTransport +175,PsiStorm +176,HangarQueue5 +183,DroneHarvest +185,UpgradeToLair +186,UpgradeToHive +187,UpgradeToGreaterSpire +193,MorphToBroodLord +194,BurrowBanelingDown +195,BurrowBanelingUp +196,BurrowDroneDown +197,BurrowDroneUp +198,BurrowHydraliskDown +199,BurrowHydraliskUp +200,BurrowRoachDown +201,BurrowRoachUp +202,BurrowZerglingDown +203,BurrowZerglingUp +204,BurrowInfestorTerranDown +205,BurrowInfestorTerranUp +206,RedstoneLavaCritterBurrow +207,RedstoneLavaCritterInjuredBurrow +208,RedstoneLavaCritterUnburrow +209,RedstoneLavaCritterInjuredUnburrow +210,OverlordTransport +214,BurrowQueenDown +215,BurrowQueenUp +216,NydusCanalTransport +217,Blink +218,BurrowInfestorDown +219,BurrowInfestorUp +220,MorphToOverseer +221,UpgradeToPlanetaryFortress +224,BurrowUltraliskDown +225,BurrowUltraliskUp +226,UpgradeToOrbital +227,UpgradeToWarpGate +228,MorphBackToGateway +229,OrbitalLiftOff +230,OrbitalCommandLand +231,ForceField +232,PhasingMode +233,TransportMode +237,TacNukeStrike +240,EMP +244,Transfusion +253,AttackRedirect +254,StimpackRedirect +255,StimpackMarauderRedirect +257,StopRedirect +258,GenerateCreep +260,SpineCrawlerUproot +261,SporeCrawlerUproot +262,SpineCrawlerRoot +263,SporeCrawlerRoot +265,BuildAutoTurret +266,ArchonWarp +269,Charge +273,Contaminate +276,que5Passive +277,que5PassiveCancelToSelection +305,DigesterCreepSpray +309,MorphToMothership +334,XelNagaHealingShrine +343,MothershipCoreMassRecall +345,MorphToHellion +355,MorphToHellionTank +363,MorphToSwarmHostBurrowedMP +364,MorphToSwarmHostMP +366,attackProtossBuilding +368,stopProtossBuilding +369,BlindingCloud +371,Yoink +374,ViperConsumeStructure +377,TestZerg +378,VolatileBurstBuilding +385,WidowMineBurrow +386,WidowMineUnburrow +387,WidowMineAttack +388,TornadoMissile +392,BurrowLurkerMPDown +393,BurrowLurkerMPUp +394,UpgradeToLurkerDenMP +395,HallucinationOracle +396,MedivacSpeedBoost +397,ExtendingBridgeNEWide8Out +398,ExtendingBridgeNEWide8 +399,ExtendingBridgeNWWide8Out +400,ExtendingBridgeNWWide8 +401,ExtendingBridgeNEWide10Out +402,ExtendingBridgeNEWide10 +403,ExtendingBridgeNWWide10Out +404,ExtendingBridgeNWWide10 +405,ExtendingBridgeNEWide12Out +406,ExtendingBridgeNEWide12 +407,ExtendingBridgeNWWide12Out +408,ExtendingBridgeNWWide12 +410,CritterFlee +411,OracleRevelation +419,MothershipCorePurifyNexus +420,XelNaga_Caverns_DoorE +421,XelNaga_Caverns_DoorEOpened +422,XelNaga_Caverns_DoorN +423,XelNaga_Caverns_DoorNE +424,XelNaga_Caverns_DoorNEOpened +425,XelNaga_Caverns_DoorNOpened +426,XelNaga_Caverns_DoorNW +427,XelNaga_Caverns_DoorNWOpened +428,XelNaga_Caverns_DoorS +429,XelNaga_Caverns_DoorSE +430,XelNaga_Caverns_DoorSEOpened +431,XelNaga_Caverns_DoorSOpened +432,XelNaga_Caverns_DoorSW +433,XelNaga_Caverns_DoorSWOpened +434,XelNaga_Caverns_DoorW +435,XelNaga_Caverns_DoorWOpened +436,XelNaga_Caverns_Floating_BridgeNE8Out +437,XelNaga_Caverns_Floating_BridgeNE8 +438,XelNaga_Caverns_Floating_BridgeNW8Out +439,XelNaga_Caverns_Floating_BridgeNW8 +440,XelNaga_Caverns_Floating_BridgeNE10Out +441,XelNaga_Caverns_Floating_BridgeNE10 +442,XelNaga_Caverns_Floating_BridgeNW10Out +443,XelNaga_Caverns_Floating_BridgeNW10 +444,XelNaga_Caverns_Floating_BridgeNE12Out +445,XelNaga_Caverns_Floating_BridgeNE12 +446,XelNaga_Caverns_Floating_BridgeNW12Out +447,XelNaga_Caverns_Floating_BridgeNW12 +448,XelNaga_Caverns_Floating_BridgeH8Out +449,XelNaga_Caverns_Floating_BridgeH8 +450,XelNaga_Caverns_Floating_BridgeV8Out +451,XelNaga_Caverns_Floating_BridgeV8 +452,XelNaga_Caverns_Floating_BridgeH10Out +453,XelNaga_Caverns_Floating_BridgeH10 +454,XelNaga_Caverns_Floating_BridgeV10Out +455,XelNaga_Caverns_Floating_BridgeV10 +456,XelNaga_Caverns_Floating_BridgeH12Out +457,XelNaga_Caverns_Floating_BridgeH12 +458,XelNaga_Caverns_Floating_BridgeV12Out +459,XelNaga_Caverns_Floating_BridgeV12 +460,TemporalField +484,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +485,SnowRefinery_Terran_ExtendingBridgeNEShort8 +486,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +487,SnowRefinery_Terran_ExtendingBridgeNWShort8 +501,CausticSpray +503,ImmortalOverload +504,MorphToRavager +505,MorphToLurker +507,ReleaseInterceptors +508,RavagerCorrosiveBile +509,BurrowRavagerDown +510,BurrowRavagerUp +512,PurificationNovaTargeted +514,LockOn +516,LockOnCancel +518,Hyperjump +520,ThorAPMode +521,ThorNormalMode +523,MothershipMassRecall +524,NydusWormTransport +525,OracleWeapon +531,LocustMPFlyingSwoop +532,HallucinationDisruptor +533,HallucinationAdept +534,VoidRaySwarmDamageBoost +535,SeekerDummyChannel +536,AiurLightBridgeNE8Out +537,AiurLightBridgeNE8 +538,AiurLightBridgeNE10Out +539,AiurLightBridgeNE10 +540,AiurLightBridgeNE12Out +541,AiurLightBridgeNE12 +542,AiurLightBridgeNW8Out +543,AiurLightBridgeNW8 +544,AiurLightBridgeNW10Out +545,AiurLightBridgeNW10 +546,AiurLightBridgeNW12Out +547,AiurLightBridgeNW12 +560,ShakurasLightBridgeNE8Out +561,ShakurasLightBridgeNE8 +562,ShakurasLightBridgeNE10Out +563,ShakurasLightBridgeNE10 +564,ShakurasLightBridgeNE12Out +565,ShakurasLightBridgeNE12 +566,ShakurasLightBridgeNW8Out +567,ShakurasLightBridgeNW8 +568,ShakurasLightBridgeNW10Out +569,ShakurasLightBridgeNW10 +570,ShakurasLightBridgeNW12Out +571,ShakurasLightBridgeNW12 +572,VoidMPImmortalReviveRebuild +574,ArbiterMPStasisField +575,ArbiterMPRecall +576,CorsairMPDisruptionWeb +577,MorphToGuardianMP +578,MorphToDevourerMP +579,DefilerMPConsume +580,DefilerMPDarkSwarm +581,DefilerMPPlague +582,DefilerMPBurrow +583,DefilerMPUnburrow +584,QueenMPEnsnare +585,QueenMPSpawnBroodlings +586,QueenMPInfestCommandCenter +594,ParasiticBomb +595,AdeptPhaseShift +598,LurkerHoldFire +599,LurkerRemoveHoldFire +602,LiberatorAGTarget +603,LiberatorAATarget +605,AiurLightBridgeAbandonedNE8Out +606,AiurLightBridgeAbandonedNE8 +607,AiurLightBridgeAbandonedNE10Out +608,AiurLightBridgeAbandonedNE10 +609,AiurLightBridgeAbandonedNE12Out +610,AiurLightBridgeAbandonedNE12 +611,AiurLightBridgeAbandonedNW8Out +612,AiurLightBridgeAbandonedNW8 +613,AiurLightBridgeAbandonedNW10Out +614,AiurLightBridgeAbandonedNW10 +615,AiurLightBridgeAbandonedNW12Out +616,AiurLightBridgeAbandonedNW12 +617,KD8Charge +620,AdeptPhaseShiftCancel +621,AdeptShadePhaseShiftCancel +622,SlaynElementalGrab +624,PortCity_Bridge_UnitNE8Out +625,PortCity_Bridge_UnitNE8 +626,PortCity_Bridge_UnitSE8Out +627,PortCity_Bridge_UnitSE8 +628,PortCity_Bridge_UnitNW8Out +629,PortCity_Bridge_UnitNW8 +630,PortCity_Bridge_UnitSW8Out +631,PortCity_Bridge_UnitSW8 +632,PortCity_Bridge_UnitNE10Out +633,PortCity_Bridge_UnitNE10 +634,PortCity_Bridge_UnitSE10Out +635,PortCity_Bridge_UnitSE10 +636,PortCity_Bridge_UnitNW10Out +637,PortCity_Bridge_UnitNW10 +638,PortCity_Bridge_UnitSW10Out +639,PortCity_Bridge_UnitSW10 +640,PortCity_Bridge_UnitNE12Out +641,PortCity_Bridge_UnitNE12 +642,PortCity_Bridge_UnitSE12Out +643,PortCity_Bridge_UnitSE12 +644,PortCity_Bridge_UnitNW12Out +645,PortCity_Bridge_UnitNW12 +646,PortCity_Bridge_UnitSW12Out +647,PortCity_Bridge_UnitSW12 +648,PortCity_Bridge_UnitN8Out +649,PortCity_Bridge_UnitN8 +650,PortCity_Bridge_UnitS8Out +651,PortCity_Bridge_UnitS8 +652,PortCity_Bridge_UnitE8Out +653,PortCity_Bridge_UnitE8 +653,PowerSourceFast +654,PortCity_Bridge_UnitW8Out +655,PortCity_Bridge_UnitW8 +656,PortCity_Bridge_UnitN10Out +657,PortCity_Bridge_UnitN10 +658,PortCity_Bridge_UnitS10Out +659,PortCity_Bridge_UnitS10 +660,PortCity_Bridge_UnitE10Out +661,PortCity_Bridge_UnitE10 +662,PortCity_Bridge_UnitW10Out +663,PortCity_Bridge_UnitW10 +664,PortCity_Bridge_UnitN12Out +665,PortCity_Bridge_UnitN12 +666,PortCity_Bridge_UnitS12Out +667,PortCity_Bridge_UnitS12 +668,PortCity_Bridge_UnitE12Out +669,PortCity_Bridge_UnitE12 +670,PortCity_Bridge_UnitW12Out +671,PortCity_Bridge_UnitW12 +676,SpawnLocustsTargeted +678,MorphToTransportOverlord +681,ChannelSnipe +1847,WidowMineArmed +2375,IsTransportOverlord diff --git a/sc2reader/data/LotV/47185_units.csv b/sc2reader/data/LotV/47185_units.csv new file mode 100644 index 00000000..4acb67b5 --- /dev/null +++ b/sc2reader/data/LotV/47185_units.csv @@ -0,0 +1,887 @@ +1,System_Snapshot_Dummy +21,Ball +22,StereoscopicOptionsUnit +23,Colossus +24,TechLab +25,Reactor +27,InfestorTerran +28,BanelingCocoon +29,Baneling +30,Mothership +31,PointDefenseDrone +32,Changeling +33,ChangelingZealot +34,ChangelingMarineShield +35,ChangelingMarine +36,ChangelingZerglingWings +37,ChangelingZergling +39,CommandCenter +40,SupplyDepot +41,Refinery +42,Barracks +43,EngineeringBay +44,MissileTurret +45,Bunker +46,SensorTower +47,GhostAcademy +48,Factory +49,Starport +51,Armory +52,FusionCore +53,AutoTurret +54,SiegeTankSieged +55,SiegeTank +56,VikingAssault +57,VikingFighter +58,CommandCenterFlying +59,BarracksTechLab +60,BarracksReactor +61,FactoryTechLab +62,FactoryReactor +63,StarportTechLab +64,StarportReactor +65,FactoryFlying +66,StarportFlying +67,SCV +68,BarracksFlying +69,SupplyDepotLowered +70,Marine +71,Reaper +72,Ghost +73,Marauder +74,Thor +75,Hellion +76,Medivac +77,Banshee +78,Raven +79,Battlecruiser +80,Nuke +81,Nexus +82,Pylon +83,Assimilator +84,Gateway +85,Forge +86,FleetBeacon +87,TwilightCouncil +88,PhotonCannon +89,Stargate +90,TemplarArchive +91,DarkShrine +92,RoboticsBay +93,RoboticsFacility +94,CyberneticsCore +95,Zealot +96,Stalker +97,HighTemplar +98,DarkTemplar +99,Sentry +100,Phoenix +101,Carrier +102,VoidRay +103,WarpPrism +104,Observer +105,Immortal +106,Probe +107,Interceptor +108,Hatchery +109,CreepTumor +110,Extractor +111,SpawningPool +112,EvolutionChamber +113,HydraliskDen +114,Spire +115,UltraliskCavern +116,InfestationPit +117,NydusNetwork +118,BanelingNest +119,RoachWarren +120,SpineCrawler +121,SporeCrawler +122,Lair +123,Hive +124,GreaterSpire +125,Egg +126,Drone +127,Zergling +128,Overlord +129,Hydralisk +130,Mutalisk +131,Ultralisk +132,Roach +133,Infestor +134,Corruptor +135,BroodLordCocoon +136,BroodLord +137,BanelingBurrowed +138,DroneBurrowed +139,HydraliskBurrowed +140,RoachBurrowed +141,ZerglingBurrowed +142,InfestorTerranBurrowed +143,RedstoneLavaCritterBurrowed +144,RedstoneLavaCritterInjuredBurrowed +145,RedstoneLavaCritter +146,RedstoneLavaCritterInjured +147,QueenBurrowed +148,Queen +149,InfestorBurrowed +150,OverlordCocoon +151,Overseer +152,PlanetaryFortress +153,UltraliskBurrowed +154,OrbitalCommand +155,WarpGate +156,OrbitalCommandFlying +157,ForceField +158,WarpPrismPhasing +159,CreepTumorBurrowed +160,CreepTumorQueen +161,SpineCrawlerUprooted +162,SporeCrawlerUprooted +163,Archon +164,NydusCanal +165,BroodlingEscort +166,GhostAlternate +167,GhostNova +168,RichMineralField +169,RichMineralField750 +170,Ursadon +172,XelNagaTower +176,InfestedTerransEgg +177,Larva +178,ReaperPlaceholder +179,MarineACGluescreenDummy +180,FirebatACGluescreenDummy +181,MedicACGluescreenDummy +182,MarauderACGluescreenDummy +183,VultureACGluescreenDummy +184,SiegeTankACGluescreenDummy +185,VikingACGluescreenDummy +186,BansheeACGluescreenDummy +187,BattlecruiserACGluescreenDummy +188,OrbitalCommandACGluescreenDummy +189,BunkerACGluescreenDummy +190,BunkerUpgradedACGluescreenDummy +191,MissileTurretACGluescreenDummy +192,HellbatACGluescreenDummy +193,GoliathACGluescreenDummy +194,CycloneACGluescreenDummy +195,WraithACGluescreenDummy +196,ScienceVesselACGluescreenDummy +197,HerculesACGluescreenDummy +198,ThorACGluescreenDummy +199,PerditionTurretACGluescreenDummy +200,FlamingBettyACGluescreenDummy +201,DevastationTurretACGluescreenDummy +202,BlasterBillyACGluescreenDummy +203,SpinningDizzyACGluescreenDummy +204,ZerglingKerriganACGluescreenDummy +205,RaptorACGluescreenDummy +206,QueenCoopACGluescreenDummy +207,HydraliskACGluescreenDummy +208,HydraliskLurkerACGluescreenDummy +209,MutaliskBroodlordACGluescreenDummy +210,BroodLordACGluescreenDummy +211,UltraliskACGluescreenDummy +212,TorrasqueACGluescreenDummy +213,OverseerACGluescreenDummy +214,LurkerACGluescreenDummy +215,SpineCrawlerACGluescreenDummy +216,SporeCrawlerACGluescreenDummy +217,NydusNetworkACGluescreenDummy +218,OmegaNetworkACGluescreenDummy +219,ZerglingZagaraACGluescreenDummy +220,SwarmlingACGluescreenDummy +221,BanelingACGluescreenDummy +222,SplitterlingACGluescreenDummy +223,AberrationACGluescreenDummy +224,ScourgeACGluescreenDummy +225,CorruptorACGluescreenDummy +226,BileLauncherACGluescreenDummy +227,SwarmQueenACGluescreenDummy +228,RoachACGluescreenDummy +229,RoachVileACGluescreenDummy +230,RavagerACGluescreenDummy +231,SwarmHostACGluescreenDummy +232,MutaliskACGluescreenDummy +233,GuardianACGluescreenDummy +234,DevourerACGluescreenDummy +235,ViperACGluescreenDummy +236,BrutaliskACGluescreenDummy +237,LeviathanACGluescreenDummy +238,ZealotACGluescreenDummy +239,ZealotAiurACGluescreenDummy +240,DragoonACGluescreenDummy +241,HighTemplarACGluescreenDummy +242,ArchonACGluescreenDummy +243,ImmortalACGluescreenDummy +244,ObserverACGluescreenDummy +245,PhoenixAiurACGluescreenDummy +246,ReaverACGluescreenDummy +247,TempestACGluescreenDummy +248,PhotonCannonACGluescreenDummy +249,ZealotVorazunACGluescreenDummy +250,ZealotShakurasACGluescreenDummy +251,StalkerShakurasACGluescreenDummy +252,DarkTemplarShakurasACGluescreenDummy +253,CorsairACGluescreenDummy +254,VoidRayACGluescreenDummy +255,VoidRayShakurasACGluescreenDummy +256,OracleACGluescreenDummy +257,DarkArchonACGluescreenDummy +258,DarkPylonACGluescreenDummy +259,ZealotPurifierACGluescreenDummy +260,SentryPurifierACGluescreenDummy +261,ImmortalKaraxACGluescreenDummy +262,ColossusACGluescreenDummy +263,ColossusPurifierACGluescreenDummy +264,PhoenixPurifierACGluescreenDummy +265,CarrierACGluescreenDummy +266,CarrierAiurACGluescreenDummy +267,KhaydarinMonolithACGluescreenDummy +268,ShieldBatteryACGluescreenDummy +269,EliteMarineACGluescreenDummy +270,MarauderCommandoACGluescreenDummy +271,SpecOpsGhostACGluescreenDummy +272,HellbatRangerACGluescreenDummy +273,StrikeGoliathACGluescreenDummy +274,HeavySiegeTankACGluescreenDummy +275,RaidLiberatorACGluescreenDummy +276,RavenTypeIIACGluescreenDummy +277,CovertBansheeACGluescreenDummy +278,RailgunTurretACGluescreenDummy +279,BlackOpsMissileTurretACGluescreenDummy +280,SupplicantACGluescreenDummy +281,StalkerTaldarimACGluescreenDummy +282,SentryTaldarimACGluescreenDummy +283,HighTemplarTaldarimACGluescreenDummy +284,ImmortalTaldarimACGluescreenDummy +285,ColossusTaldarimACGluescreenDummy +286,WarpPrismTaldarimACGluescreenDummy +287,PhotonCannonTaldarimACGluescreenDummy +289,NeedleSpinesWeapon +290,CorruptionWeapon +291,InfestedTerransWeapon +292,NeuralParasiteWeapon +293,PointDefenseDroneReleaseWeapon +294,HunterSeekerWeapon +295,MULE +297,ThorAAWeapon +298,PunisherGrenadesLMWeapon +299,VikingFighterWeapon +300,ATALaserBatteryLMWeapon +301,ATSLaserBatteryLMWeapon +302,LongboltMissileWeapon +303,D8ChargeWeapon +304,YamatoWeapon +305,IonCannonsWeapon +306,AcidSalivaWeapon +307,SpineCrawlerWeapon +308,SporeCrawlerWeapon +309,GlaiveWurmWeapon +310,GlaiveWurmM2Weapon +311,GlaiveWurmM3Weapon +312,StalkerWeapon +313,EMP2Weapon +314,BacklashRocketsLMWeapon +315,PhotonCannonWeapon +316,ParasiteSporeWeapon +318,Broodling +319,BroodLordBWeapon +322,AutoTurretReleaseWeapon +323,LarvaReleaseMissile +324,AcidSpinesWeapon +325,FrenzyWeapon +326,ContaminateWeapon +338,BeaconRally +339,BeaconArmy +340,BeaconAttack +341,BeaconDefend +342,BeaconHarass +343,BeaconIdle +344,BeaconAuto +345,BeaconDetect +346,BeaconScout +347,BeaconClaim +348,BeaconExpand +349,BeaconCustom1 +350,BeaconCustom2 +351,BeaconCustom3 +352,BeaconCustom4 +353,Adept +359,Rocks2x2NonConjoined +360,FungalGrowthMissile +361,NeuralParasiteTentacleMissile +362,Beacon_Protoss +363,Beacon_ProtossSmall +364,Beacon_Terran +365,Beacon_TerranSmall +366,Beacon_Zerg +367,Beacon_ZergSmall +368,Lyote +369,CarrionBird +370,KarakMale +371,KarakFemale +372,UrsadakFemaleExotic +373,UrsadakMale +374,UrsadakFemale +375,UrsadakCalf +376,UrsadakMaleExotic +377,UtilityBot +378,CommentatorBot1 +379,CommentatorBot2 +380,CommentatorBot3 +381,CommentatorBot4 +382,Scantipede +383,Dog +384,Sheep +385,Cow +386,InfestedTerransEggPlacement +387,InfestorTerransWeapon +388,MineralField +389,VespeneGeyser +390,SpacePlatformGeyser +391,RichVespeneGeyser +392,DestructibleSearchlight +393,DestructibleBullhornLights +394,DestructibleStreetlight +395,DestructibleSpacePlatformSign +396,DestructibleStoreFrontCityProps +397,DestructibleBillboardTall +398,DestructibleBillboardScrollingText +399,DestructibleSpacePlatformBarrier +400,DestructibleSignsDirectional +401,DestructibleSignsConstruction +402,DestructibleSignsFunny +403,DestructibleSignsIcons +404,DestructibleSignsWarning +405,DestructibleGarage +406,DestructibleGarageLarge +407,DestructibleTrafficSignal +408,TrafficSignal +409,BraxisAlphaDestructible1x1 +410,BraxisAlphaDestructible2x2 +411,DestructibleDebris4x4 +412,DestructibleDebris6x6 +413,DestructibleRock2x4Vertical +414,DestructibleRock2x4Horizontal +415,DestructibleRock2x6Vertical +416,DestructibleRock2x6Horizontal +417,DestructibleRock4x4 +418,DestructibleRock6x6 +419,DestructibleRampDiagonalHugeULBR +420,DestructibleRampDiagonalHugeBLUR +421,DestructibleRampVerticalHuge +422,DestructibleRampHorizontalHuge +423,DestructibleDebrisRampDiagonalHugeULBR +424,DestructibleDebrisRampDiagonalHugeBLUR +425,OverlordGenerateCreepKeybind +426,MengskStatueAlone +427,MengskStatue +428,WolfStatue +429,GlobeStatue +430,Weapon +431,GlaiveWurmBounceWeapon +432,BroodLordWeapon +433,BroodLordAWeapon +434,CreepBlocker1x1 +435,PermanentCreepBlocker1x1 +436,PathingBlocker1x1 +437,PathingBlocker2x2 +438,AutoTestAttackTargetGround +439,AutoTestAttackTargetAir +440,AutoTestAttacker +441,HelperEmitterSelectionArrow +442,MultiKillObject +443,ShapeGolfball +444,ShapeCone +445,ShapeCube +446,ShapeCylinder +447,ShapeDodecahedron +448,ShapeIcosahedron +449,ShapeOctahedron +450,ShapePyramid +451,ShapeRoundedCube +452,ShapeSphere +453,ShapeTetrahedron +454,ShapeThickTorus +455,ShapeThinTorus +456,ShapeTorus +457,Shape4PointStar +458,Shape5PointStar +459,Shape6PointStar +460,Shape8PointStar +461,ShapeArrowPointer +462,ShapeBowl +463,ShapeBox +464,ShapeCapsule +465,ShapeCrescentMoon +466,ShapeDecahedron +467,ShapeDiamond +468,ShapeFootball +469,ShapeGemstone +470,ShapeHeart +471,ShapeJack +472,ShapePlusSign +473,ShapeShamrock +474,ShapeSpade +475,ShapeTube +476,ShapeEgg +477,ShapeYenSign +478,ShapeX +479,ShapeWatermelon +480,ShapeWonSign +481,ShapeTennisball +482,ShapeStrawberry +483,ShapeSmileyFace +484,ShapeSoccerball +485,ShapeRainbow +486,ShapeSadFace +487,ShapePoundSign +488,ShapePear +489,ShapePineapple +490,ShapeOrange +491,ShapePeanut +492,ShapeO +493,ShapeLemon +494,ShapeMoneyBag +495,ShapeHorseshoe +496,ShapeHockeyStick +497,ShapeHockeyPuck +498,ShapeHand +499,ShapeGolfClub +500,ShapeGrape +501,ShapeEuroSign +502,ShapeDollarSign +503,ShapeBasketball +504,ShapeCarrot +505,ShapeCherry +506,ShapeBaseball +507,ShapeBaseballBat +508,ShapeBanana +509,ShapeApple +510,ShapeCashLarge +511,ShapeCashMedium +512,ShapeCashSmall +513,ShapeFootballColored +514,ShapeLemonSmall +515,ShapeOrangeSmall +516,ShapeTreasureChestOpen +517,ShapeTreasureChestClosed +518,ShapeWatermelonSmall +519,UnbuildableRocksDestructible +520,UnbuildableBricksDestructible +521,UnbuildablePlatesDestructible +522,Debris2x2NonConjoined +523,EnemyPathingBlocker1x1 +524,EnemyPathingBlocker2x2 +525,EnemyPathingBlocker4x4 +526,EnemyPathingBlocker8x8 +527,EnemyPathingBlocker16x16 +528,ScopeTest +529,SentryACGluescreenDummy +530,MineralField750 +546,HellionTank +547,CollapsibleTerranTowerDebris +548,DebrisRampLeft +549,DebrisRampRight +550,MothershipCore +554,LocustMP +555,CollapsibleRockTowerDebris +556,NydusCanalAttacker +557,NydusCanalCreeper +558,SwarmHostBurrowedMP +559,SwarmHostMP +560,Oracle +561,Tempest +562,WarHound +563,WidowMine +564,Viper +565,WidowMineBurrowed +566,LurkerMPEgg +567,LurkerMP +568,LurkerMPBurrowed +569,LurkerDenMP +570,ExtendingBridgeNEWide8Out +571,ExtendingBridgeNEWide8 +572,ExtendingBridgeNWWide8Out +573,ExtendingBridgeNWWide8 +574,ExtendingBridgeNEWide10Out +575,ExtendingBridgeNEWide10 +576,ExtendingBridgeNWWide10Out +577,ExtendingBridgeNWWide10 +578,ExtendingBridgeNEWide12Out +579,ExtendingBridgeNEWide12 +580,ExtendingBridgeNWWide12Out +581,ExtendingBridgeNWWide12 +583,CollapsibleRockTowerDebrisRampRight +584,CollapsibleRockTowerDebrisRampLeft +585,XelNaga_Caverns_DoorE +586,XelNaga_Caverns_DoorEOpened +587,XelNaga_Caverns_DoorN +588,XelNaga_Caverns_DoorNE +589,XelNaga_Caverns_DoorNEOpened +590,XelNaga_Caverns_DoorNOpened +591,XelNaga_Caverns_DoorNW +592,XelNaga_Caverns_DoorNWOpened +593,XelNaga_Caverns_DoorS +594,XelNaga_Caverns_DoorSE +595,XelNaga_Caverns_DoorSEOpened +596,XelNaga_Caverns_DoorSOpened +597,XelNaga_Caverns_DoorSW +598,XelNaga_Caverns_DoorSWOpened +599,XelNaga_Caverns_DoorW +600,XelNaga_Caverns_DoorWOpened +601,XelNaga_Caverns_Floating_BridgeNE8Out +602,XelNaga_Caverns_Floating_BridgeNE8 +603,XelNaga_Caverns_Floating_BridgeNW8Out +604,XelNaga_Caverns_Floating_BridgeNW8 +605,XelNaga_Caverns_Floating_BridgeNE10Out +606,XelNaga_Caverns_Floating_BridgeNE10 +607,XelNaga_Caverns_Floating_BridgeNW10Out +608,XelNaga_Caverns_Floating_BridgeNW10 +609,XelNaga_Caverns_Floating_BridgeNE12Out +610,XelNaga_Caverns_Floating_BridgeNE12 +611,XelNaga_Caverns_Floating_BridgeNW12Out +612,XelNaga_Caverns_Floating_BridgeNW12 +613,XelNaga_Caverns_Floating_BridgeH8Out +614,XelNaga_Caverns_Floating_BridgeH8 +615,XelNaga_Caverns_Floating_BridgeV8Out +616,XelNaga_Caverns_Floating_BridgeV8 +617,XelNaga_Caverns_Floating_BridgeH10Out +618,XelNaga_Caverns_Floating_BridgeH10 +619,XelNaga_Caverns_Floating_BridgeV10Out +620,XelNaga_Caverns_Floating_BridgeV10 +621,XelNaga_Caverns_Floating_BridgeH12Out +622,XelNaga_Caverns_Floating_BridgeH12 +623,XelNaga_Caverns_Floating_BridgeV12Out +624,XelNaga_Caverns_Floating_BridgeV12 +627,CollapsibleTerranTowerPushUnitRampLeft +628,CollapsibleTerranTowerPushUnitRampRight +631,CollapsibleRockTowerPushUnit +632,CollapsibleTerranTowerPushUnit +633,CollapsibleRockTowerPushUnitRampRight +634,CollapsibleRockTowerPushUnitRampLeft +635,DigesterCreepSprayTargetUnit +636,DigesterCreepSprayUnit +637,NydusCanalAttackerWeapon +638,ViperConsumeStructureWeapon +641,ResourceBlocker +642,TempestWeapon +643,YoinkMissile +647,YoinkVikingAirMissile +649,YoinkVikingGroundMissile +651,YoinkSiegeTankMissile +653,WarHoundWeapon +655,EyeStalkWeapon +658,WidowMineWeapon +659,WidowMineAirWeapon +660,MothershipCoreWeaponWeapon +661,TornadoMissileWeapon +662,TornadoMissileDummyWeapon +663,TalonsMissileWeapon +664,CreepTumorMissile +665,LocustMPEggAMissileWeapon +666,LocustMPEggBMissileWeapon +667,LocustMPWeapon +669,RepulsorCannonWeapon +673,CollapsibleRockTowerDiagonal +674,CollapsibleTerranTowerDiagonal +675,CollapsibleTerranTowerRampLeft +676,CollapsibleTerranTowerRampRight +677,Ice2x2NonConjoined +678,IceProtossCrates +679,ProtossCrates +680,TowerMine +681,PickupPalletGas +682,PickupPalletMinerals +683,PickupScrapSalvage1x1 +684,PickupScrapSalvage2x2 +685,PickupScrapSalvage3x3 +686,RoughTerrain +687,UnbuildableBricksSmallUnit +688,UnbuildablePlatesSmallUnit +689,UnbuildablePlatesUnit +690,UnbuildableRocksSmallUnit +691,XelNagaHealingShrine +692,InvisibleTargetDummy +693,ProtossVespeneGeyser +694,CollapsibleRockTower +695,CollapsibleTerranTower +696,ThornLizard +697,CleaningBot +698,DestructibleRock6x6Weak +699,ProtossSnakeSegmentDemo +700,PhysicsCapsule +701,PhysicsCube +702,PhysicsCylinder +703,PhysicsKnot +704,PhysicsL +705,PhysicsPrimitives +706,PhysicsSphere +707,PhysicsStar +708,CreepBlocker4x4 +709,DestructibleCityDebris2x4Vertical +710,DestructibleCityDebris2x4Horizontal +711,DestructibleCityDebris2x6Vertical +712,DestructibleCityDebris2x6Horizontal +713,DestructibleCityDebris4x4 +714,DestructibleCityDebris6x6 +715,DestructibleCityDebrisHugeDiagonalBLUR +716,DestructibleCityDebrisHugeDiagonalULBR +717,TestZerg +718,PathingBlockerRadius1 +719,DestructibleRockEx12x4Vertical +720,DestructibleRockEx12x4Horizontal +721,DestructibleRockEx12x6Vertical +722,DestructibleRockEx12x6Horizontal +723,DestructibleRockEx14x4 +724,DestructibleRockEx16x6 +725,DestructibleRockEx1DiagonalHugeULBR +726,DestructibleRockEx1DiagonalHugeBLUR +727,DestructibleRockEx1VerticalHuge +728,DestructibleRockEx1HorizontalHuge +729,DestructibleIce2x4Vertical +730,DestructibleIce2x4Horizontal +731,DestructibleIce2x6Vertical +732,DestructibleIce2x6Horizontal +733,DestructibleIce4x4 +734,DestructibleIce6x6 +735,DestructibleIceDiagonalHugeULBR +736,DestructibleIceDiagonalHugeBLUR +737,DestructibleIceVerticalHuge +738,DestructibleIceHorizontalHuge +739,DesertPlanetSearchlight +740,DesertPlanetStreetlight +741,UnbuildableBricksUnit +742,UnbuildableRocksUnit +743,ZerusDestructibleArch +744,Artosilope +745,Anteplott +746,LabBot +747,Crabeetle +748,CollapsibleRockTowerRampRight +749,CollapsibleRockTowerRampLeft +750,LabMineralField +751,LabMineralField750 +767,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +768,SnowRefinery_Terran_ExtendingBridgeNEShort8 +769,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +770,SnowRefinery_Terran_ExtendingBridgeNWShort8 +775,Tarsonis_DoorN +776,Tarsonis_DoorNLowered +777,Tarsonis_DoorNE +778,Tarsonis_DoorNELowered +779,Tarsonis_DoorE +780,Tarsonis_DoorELowered +781,Tarsonis_DoorNW +782,Tarsonis_DoorNWLowered +783,RavagerCocoon +784,Ravager +785,Liberator +786,RavagerBurrowed +788,ThorAP +789,Cyclone +790,LocustMPFlying +791,Disruptor +792,AiurLightBridgeNE8Out +793,AiurLightBridgeNE8 +794,AiurLightBridgeNE10Out +795,AiurLightBridgeNE10 +796,AiurLightBridgeNE12Out +797,AiurLightBridgeNE12 +798,AiurLightBridgeNW8Out +799,AiurLightBridgeNW8 +800,AiurLightBridgeNW10Out +801,AiurLightBridgeNW10 +802,AiurLightBridgeNW12Out +803,AiurLightBridgeNW12 +804,AiurTempleBridgeNE8Out +806,AiurTempleBridgeNE10Out +808,AiurTempleBridgeNE12Out +810,AiurTempleBridgeNW8Out +812,AiurTempleBridgeNW10Out +814,AiurTempleBridgeNW12Out +816,ShakurasLightBridgeNE8Out +817,ShakurasLightBridgeNE8 +818,ShakurasLightBridgeNE10Out +819,ShakurasLightBridgeNE10 +820,ShakurasLightBridgeNE12Out +821,ShakurasLightBridgeNE12 +822,ShakurasLightBridgeNW8Out +823,ShakurasLightBridgeNW8 +824,ShakurasLightBridgeNW10Out +825,ShakurasLightBridgeNW10 +826,ShakurasLightBridgeNW12Out +827,ShakurasLightBridgeNW12 +828,VoidMPImmortalReviveCorpse +829,GuardianCocoonMP +830,GuardianMP +831,DevourerCocoonMP +832,DevourerMP +833,DefilerMPBurrowed +834,DefilerMP +835,OracleStasisTrap +836,DisruptorPhased +837,LiberatorAG +838,AiurLightBridgeAbandonedNE8Out +839,AiurLightBridgeAbandonedNE8 +840,AiurLightBridgeAbandonedNE10Out +841,AiurLightBridgeAbandonedNE10 +842,AiurLightBridgeAbandonedNE12Out +843,AiurLightBridgeAbandonedNE12 +844,AiurLightBridgeAbandonedNW8Out +845,AiurLightBridgeAbandonedNW8 +846,AiurLightBridgeAbandonedNW10Out +847,AiurLightBridgeAbandonedNW10 +848,AiurLightBridgeAbandonedNW12Out +849,AiurLightBridgeAbandonedNW12 +850,CollapsiblePurifierTowerDebris +851,PortCity_Bridge_UnitNE8Out +852,PortCity_Bridge_UnitNE8 +853,PortCity_Bridge_UnitSE8Out +854,PortCity_Bridge_UnitSE8 +855,PortCity_Bridge_UnitNW8Out +856,PortCity_Bridge_UnitNW8 +857,PortCity_Bridge_UnitSW8Out +858,PortCity_Bridge_UnitSW8 +859,PortCity_Bridge_UnitNE10Out +860,PortCity_Bridge_UnitNE10 +861,PortCity_Bridge_UnitSE10Out +862,PortCity_Bridge_UnitSE10 +863,PortCity_Bridge_UnitNW10Out +864,PortCity_Bridge_UnitNW10 +865,PortCity_Bridge_UnitSW10Out +866,PortCity_Bridge_UnitSW10 +867,PortCity_Bridge_UnitNE12Out +868,PortCity_Bridge_UnitNE12 +869,PortCity_Bridge_UnitSE12Out +870,PortCity_Bridge_UnitSE12 +871,PortCity_Bridge_UnitNW12Out +872,PortCity_Bridge_UnitNW12 +873,PortCity_Bridge_UnitSW12Out +874,PortCity_Bridge_UnitSW12 +875,PortCity_Bridge_UnitN8Out +876,PortCity_Bridge_UnitN8 +877,PortCity_Bridge_UnitS8Out +878,PortCity_Bridge_UnitS8 +879,PortCity_Bridge_UnitE8Out +880,PortCity_Bridge_UnitE8 +881,PortCity_Bridge_UnitW8Out +882,PortCity_Bridge_UnitW8 +883,PortCity_Bridge_UnitN10Out +884,PortCity_Bridge_UnitN10 +885,PortCity_Bridge_UnitS10Out +886,PortCity_Bridge_UnitS10 +887,PortCity_Bridge_UnitE10Out +888,PortCity_Bridge_UnitE10 +889,PortCity_Bridge_UnitW10Out +890,PortCity_Bridge_UnitW10 +891,PortCity_Bridge_UnitN12Out +892,PortCity_Bridge_UnitN12 +893,PortCity_Bridge_UnitS12Out +894,PortCity_Bridge_UnitS12 +895,PortCity_Bridge_UnitE12Out +896,PortCity_Bridge_UnitE12 +897,PortCity_Bridge_UnitW12Out +898,PortCity_Bridge_UnitW12 +899,PurifierRichMineralField +900,PurifierRichMineralField750 +915,CollapsiblePurifierTowerPushUnit +917,LocustMPPrecursor +918,ReleaseInterceptorsBeacon +919,AdeptPhaseShift +920,RavagerCorrosiveBileMissile +921,HydraliskImpaleMissile +922,CycloneMissileLargeAir +923,CycloneMissile +924,CycloneMissileLarge +925,ThorAALance +926,OracleWeapon +927,TempestWeaponGround +928,RavagerWeaponMissile +929,ScoutMPAirWeaponLeft +930,ScoutMPAirWeaponRight +931,ArbiterMPWeaponMissile +932,GuardianMPWeapon +933,DevourerMPWeaponMissile +934,DefilerMPDarkSwarmWeapon +935,QueenMPEnsnareMissile +936,QueenMPSpawnBroodlingsMissile +937,LightningBombWeapon +938,HERCPlacement +939,GrappleWeapon +942,CausticSprayMissile +943,ParasiticBombMissile +944,ParasiticBombDummy +945,AdeptWeapon +946,AdeptUpgradeWeapon +947,LiberatorMissile +948,LiberatorDamageMissile +949,LiberatorAGMissile +950,KD8Charge +951,KD8ChargeWeapon +953,SlaynElementalGrabWeapon +954,SlaynElementalGrabAirUnit +955,SlaynElementalGrabGroundUnit +956,SlaynElementalWeapon +961,DestructibleExpeditionGate6x6 +962,DestructibleZergInfestation3x3 +963,HERC +964,Moopy +965,Replicant +966,SeekerMissile +967,AiurTempleBridgeDestructibleNE8Out +968,AiurTempleBridgeDestructibleNE10Out +969,AiurTempleBridgeDestructibleNE12Out +970,AiurTempleBridgeDestructibleNW8Out +971,AiurTempleBridgeDestructibleNW10Out +972,AiurTempleBridgeDestructibleNW12Out +973,AiurTempleBridgeDestructibleSW8Out +974,AiurTempleBridgeDestructibleSW10Out +975,AiurTempleBridgeDestructibleSW12Out +976,AiurTempleBridgeDestructibleSE8Out +977,AiurTempleBridgeDestructibleSE10Out +978,AiurTempleBridgeDestructibleSE12Out +980,FlyoverUnit +981,CorsairMP +982,ScoutMP +984,ArbiterMP +985,ScourgeMP +986,DefilerMPPlagueWeapon +987,QueenMP +988,XelNagaDestructibleRampBlocker6S +989,XelNagaDestructibleRampBlocker6SE +990,XelNagaDestructibleRampBlocker6E +991,XelNagaDestructibleRampBlocker6NE +992,XelNagaDestructibleRampBlocker6N +993,XelNagaDestructibleRampBlocker6NW +994,XelNagaDestructibleRampBlocker6W +995,XelNagaDestructibleRampBlocker6SW +996,XelNagaDestructibleRampBlocker8S +997,XelNagaDestructibleRampBlocker8SE +998,XelNagaDestructibleRampBlocker8E +999,XelNagaDestructibleRampBlocker8NE +1000,XelNagaDestructibleRampBlocker8N +1001,XelNagaDestructibleRampBlocker8NW +1002,XelNagaDestructibleRampBlocker8W +1003,XelNagaDestructibleRampBlocker8SW +1004,ReptileCrate +1005,SlaynSwarmHostSpawnFlyer +1006,SlaynElemental +1007,PurifierVespeneGeyser +1008,ShakurasVespeneGeyser +1009,CollapsiblePurifierTowerDiagonal +1010,CreepOnlyBlocker4x4 +1011,PurifierMineralField +1012,PurifierMineralField750 +1013,Beacon_Nova +1014,Beacon_NovaSmall +1015,Ursula +1016,Elsecaro_Colonist_Hut +1017,TransportOverlordCocoon +1018,OverlordTransport +1019,PylonOvercharged +1020,BypassArmorDrone +1021,AdeptPiercingWeapon +1022,CorrosiveParasiteWeapon diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 5d2071c9..f9ddcb6b 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -406,7 +406,7 @@ def load_build(expansion, version): # Load LotV Data lotv_builds = dict() -for version in ('base', '44401'): +for version in ('base', '44401', '47185'): lotv_builds[version] = load_build('LotV', version) datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds, 'LotV': lotv_builds} diff --git a/sc2reader/data/ability_lookup.csv b/sc2reader/data/ability_lookup.csv index 96e715c0..b91ee5ec 100755 --- a/sc2reader/data/ability_lookup.csv +++ b/sc2reader/data/ability_lookup.csv @@ -566,3 +566,81 @@ SlaynElementalGrab,SlaynElementalGrab PowerSourceFast,PowerSourceFast WidowMineArmed,WidowMineArmed IsTransportOverlord,IsTransportOverlord +ActivateStasisWard,ActivateStasisWard +AdeptPiercingUpgrade,AdeptPiercingUpgrade +BurrowedMove,BurrowedMove +CliffWalk,CliffWalk +CloakingField,CloakingField +CombatDrugs,CombatDrugs +ConcussiveGrenade,ConcussiveGrenade +CycloneLockOnDamageUpgrade,CycloneLockOnDamageUpgrade +Detector,Detector +Disguise,Disguise +ExplosiveShrapnelShells,ExplosiveShrapnelShells +FlyingLocusts,FlyingLocusts +Frenzied,Frenzied +GravitonCatapult,GravitonCatapult +HighCapacityFuelTanks,HighCapacityFuelTanks +ImprovedEnergy,ImprovedEnergy +JetPack,JetPack +LiberatorAGRangeUpgrade,LiberatorAGRangeUpgrade +MutaliskRegeneration,MutaliskRegeneration +PermanentlyCloaked,PermanentlyCloaked +PermanentlyCloakedObserver,PermanentlyCloakedObserver +PermanentlyCloakedStasis,PermanentlyCloakedStasis +PointDefense,PointDefense +RadarField,RadarField +RapidRegeneration,RapidRegeneration +SwarmSeeds,SwarmSeeds +WidowMineBioSplash,WidowMineBioSplash +SprayTerran,SprayTerran +SprayZerg,SprayZerg +SprayProtoss,SprayProtoss +PortCity_Bridge_UnitNE8Out,PortCity_Bridge_UnitNE8Out +PortCity_Bridge_UnitNE8,PortCity_Bridge_UnitNE8 +PortCity_Bridge_UnitSE8Out,PortCity_Bridge_UnitSE8Out +PortCity_Bridge_UnitSE8,PortCity_Bridge_UnitSE8 +PortCity_Bridge_UnitNW8Out,PortCity_Bridge_UnitNW8Out +PortCity_Bridge_UnitNW8,PortCity_Bridge_UnitNW8 +PortCity_Bridge_UnitSW8Out,PortCity_Bridge_UnitSW8Out +PortCity_Bridge_UnitSW8,PortCity_Bridge_UnitSW8 +PortCity_Bridge_UnitNE10Out,PortCity_Bridge_UnitNE10Out +PortCity_Bridge_UnitNE10,PortCity_Bridge_UnitNE10 +PortCity_Bridge_UnitSE10Out,PortCity_Bridge_UnitSE10Out +PortCity_Bridge_UnitSE10,PortCity_Bridge_UnitSE10 +PortCity_Bridge_UnitNW10Out,PortCity_Bridge_UnitNW10Out +PortCity_Bridge_UnitNW10,PortCity_Bridge_UnitNW10 +PortCity_Bridge_UnitSW10Out,PortCity_Bridge_UnitSW10Out +PortCity_Bridge_UnitSW10,PortCity_Bridge_UnitSW10 +PortCity_Bridge_UnitNE12Out,PortCity_Bridge_UnitNE12Out +PortCity_Bridge_UnitNE12,PortCity_Bridge_UnitNE12 +PortCity_Bridge_UnitSE12Out,PortCity_Bridge_UnitSE12Out +PortCity_Bridge_UnitSE12,PortCity_Bridge_UnitSE12 +PortCity_Bridge_UnitNW12Out,PortCity_Bridge_UnitNW12Out +PortCity_Bridge_UnitNW12,PortCity_Bridge_UnitNW12 +PortCity_Bridge_UnitSW12Out,PortCity_Bridge_UnitSW12Out +PortCity_Bridge_UnitSW12,PortCity_Bridge_UnitSW12 +PortCity_Bridge_UnitN8Out,PortCity_Bridge_UnitN8Out +PortCity_Bridge_UnitN8,PortCity_Bridge_UnitN8 +PortCity_Bridge_UnitS8Out,PortCity_Bridge_UnitS8Out +PortCity_Bridge_UnitS8,PortCity_Bridge_UnitS8 +PortCity_Bridge_UnitE8Out,PortCity_Bridge_UnitE8Out +PortCity_Bridge_UnitE8,PortCity_Bridge_UnitE8 +PortCity_Bridge_UnitW8Out,PortCity_Bridge_UnitW8Out +PortCity_Bridge_UnitW8,PortCity_Bridge_UnitW8 +PortCity_Bridge_UnitN10Out,PortCity_Bridge_UnitN10Out +PortCity_Bridge_UnitN10,PortCity_Bridge_UnitN10 +PortCity_Bridge_UnitS10Out,PortCity_Bridge_UnitS10Out +PortCity_Bridge_UnitS10,PortCity_Bridge_UnitS10 +PortCity_Bridge_UnitE10Out,PortCity_Bridge_UnitE10Out +PortCity_Bridge_UnitE10,PortCity_Bridge_UnitE10 +PortCity_Bridge_UnitW10Out,PortCity_Bridge_UnitW10Out +PortCity_Bridge_UnitW10,PortCity_Bridge_UnitW10 +PortCity_Bridge_UnitN12Out,PortCity_Bridge_UnitN12Out +PortCity_Bridge_UnitN12,PortCity_Bridge_UnitN12 +PortCity_Bridge_UnitS12Out,PortCity_Bridge_UnitS12Out +PortCity_Bridge_UnitS12,PortCity_Bridge_UnitS12 +PortCity_Bridge_UnitE12Out,PortCity_Bridge_UnitE12Out +PortCity_Bridge_UnitE12,PortCity_Bridge_UnitE12 +PortCity_Bridge_UnitW12Out,PortCity_Bridge_UnitW12Out +PortCity_Bridge_UnitW12,PortCity_Bridge_UnitW12 diff --git a/sc2reader/data/unit_lookup.csv b/sc2reader/data/unit_lookup.csv index e00ccb93..93385a5b 100755 --- a/sc2reader/data/unit_lookup.csv +++ b/sc2reader/data/unit_lookup.csv @@ -839,3 +839,74 @@ Ursadon,Ursadon Ursula,Ursula PylonOvercharged,PylonOvercharged AdeptPiercingWeapon,AdeptPiercingWeapon +BunkerUpgradedACGluescreenDummy,BunkerUpgradedACGluescreenDummy +EliteMarineACGluescreenDummy,EliteMarineACGluescreenDummy +MarauderCommandoACGluescreenDummy,MarauderCommandoACGluescreenDummy +SpecOpsGhostACGluescreenDummy,SpecOpsGhostACGluescreenDummy +HellbatRangerACGluescreenDummy,HellbatRangerACGluescreenDummy +StrikeGoliathACGluescreenDummy,StrikeGoliathACGluescreenDummy +HeavySiegeTankACGluescreenDummy,HeavySiegeTankACGluescreenDummy +RaidLiberatorACGluescreenDummy,RaidLiberatorACGluescreenDummy +RavenTypeIIACGluescreenDummy,RavenTypeIIACGluescreenDummy +CovertBansheeACGluescreenDummy,CovertBansheeACGluescreenDummy +RailgunTurretACGluescreenDummy,RailgunTurretACGluescreenDummy +BlackOpsMissileTurretACGluescreenDummy,BlackOpsMissileTurretACGluescreenDummy +SupplicantACGluescreenDummy,SupplicantACGluescreenDummy +StalkerTaldarimACGluescreenDummy,StalkerTaldarimACGluescreenDummy +SentryTaldarimACGluescreenDummy,SentryTaldarimACGluescreenDummy +HighTemplarTaldarimACGluescreenDummy,HighTemplarTaldarimACGluescreenDummy +ImmortalTaldarimACGluescreenDummy,ImmortalTaldarimACGluescreenDummy +ColossusTaldarimACGluescreenDummy,ColossusTaldarimACGluescreenDummy +WarpPrismTaldarimACGluescreenDummy,WarpPrismTaldarimACGluescreenDummy +PhotonCannonTaldarimACGluescreenDummy,PhotonCannonTaldarimACGluescreenDummy +PortCity_Bridge_UnitNE8Out,PortCity_Bridge_UnitNE8Out +PortCity_Bridge_UnitNE8,PortCity_Bridge_UnitNE8 +PortCity_Bridge_UnitSE8Out,PortCity_Bridge_UnitSE8Out +PortCity_Bridge_UnitSE8,PortCity_Bridge_UnitSE8 +PortCity_Bridge_UnitNW8Out,PortCity_Bridge_UnitNW8Out +PortCity_Bridge_UnitNW8,PortCity_Bridge_UnitNW8 +PortCity_Bridge_UnitSW8Out,PortCity_Bridge_UnitSW8Out +PortCity_Bridge_UnitSW8,PortCity_Bridge_UnitSW8 +PortCity_Bridge_UnitNE10Out,PortCity_Bridge_UnitNE10Out +PortCity_Bridge_UnitNE10,PortCity_Bridge_UnitNE10 +PortCity_Bridge_UnitSE10Out,PortCity_Bridge_UnitSE10Out +PortCity_Bridge_UnitSE10,PortCity_Bridge_UnitSE10 +PortCity_Bridge_UnitNW10Out,PortCity_Bridge_UnitNW10Out +PortCity_Bridge_UnitNW10,PortCity_Bridge_UnitNW10 +PortCity_Bridge_UnitSW10Out,PortCity_Bridge_UnitSW10Out +PortCity_Bridge_UnitSW10,PortCity_Bridge_UnitSW10 +PortCity_Bridge_UnitNE12Out,PortCity_Bridge_UnitNE12Out +PortCity_Bridge_UnitNE12,PortCity_Bridge_UnitNE12 +PortCity_Bridge_UnitSE12Out,PortCity_Bridge_UnitSE12Out +PortCity_Bridge_UnitSE12,PortCity_Bridge_UnitSE12 +PortCity_Bridge_UnitNW12Out,PortCity_Bridge_UnitNW12Out +PortCity_Bridge_UnitNW12,PortCity_Bridge_UnitNW12 +PortCity_Bridge_UnitSW12Out,PortCity_Bridge_UnitSW12Out +PortCity_Bridge_UnitSW12,PortCity_Bridge_UnitSW12 +PortCity_Bridge_UnitN8Out,PortCity_Bridge_UnitN8Out +PortCity_Bridge_UnitN8,PortCity_Bridge_UnitN8 +PortCity_Bridge_UnitS8Out,PortCity_Bridge_UnitS8Out +PortCity_Bridge_UnitS8,PortCity_Bridge_UnitS8 +PortCity_Bridge_UnitE8Out,PortCity_Bridge_UnitE8Out +PortCity_Bridge_UnitE8,PortCity_Bridge_UnitE8 +PortCity_Bridge_UnitW8Out,PortCity_Bridge_UnitW8Out +PortCity_Bridge_UnitW8,PortCity_Bridge_UnitW8 +PortCity_Bridge_UnitN10Out,PortCity_Bridge_UnitN10Out +PortCity_Bridge_UnitN10,PortCity_Bridge_UnitN10 +PortCity_Bridge_UnitS10Out,PortCity_Bridge_UnitS10Out +PortCity_Bridge_UnitS10,PortCity_Bridge_UnitS10 +PortCity_Bridge_UnitE10Out,PortCity_Bridge_UnitE10Out +PortCity_Bridge_UnitE10,PortCity_Bridge_UnitE10 +PortCity_Bridge_UnitW10Out,PortCity_Bridge_UnitW10Out +PortCity_Bridge_UnitW10,PortCity_Bridge_UnitW10 +PortCity_Bridge_UnitN12Out,PortCity_Bridge_UnitN12Out +PortCity_Bridge_UnitN12,PortCity_Bridge_UnitN12 +PortCity_Bridge_UnitS12Out,PortCity_Bridge_UnitS12Out +PortCity_Bridge_UnitS12,PortCity_Bridge_UnitS12 +PortCity_Bridge_UnitE12Out,PortCity_Bridge_UnitE12Out +PortCity_Bridge_UnitE12,PortCity_Bridge_UnitE12 +PortCity_Bridge_UnitW12Out,PortCity_Bridge_UnitW12Out +PortCity_Bridge_UnitW12,PortCity_Bridge_UnitW12 +DestructibleExpeditionGate6x6,DestructibleExpeditionGate6x6 +DestructibleZergInfestation3x3,DestructibleZergInfestation3x3 +Elsecaro_Colonist_Hut,Elsecaro_Colonist_Hut diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 17dea9e2..fa6daf5a 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -594,6 +594,7 @@ def register_default_datapacks(self): self.register_datapack(datapacks['HotS']['38215'], lambda r: r.expansion == 'HotS' and 38215 <= r.build) self.register_datapack(datapacks['LotV']['base'], lambda r: r.expansion == 'LotV' and 34784 <= r.build) self.register_datapack(datapacks['LotV']['44401'], lambda r: r.expansion == 'LotV' and 44401 <= r.build) + self.register_datapack(datapacks['LotV']['47185'], lambda r: r.expansion == 'LotV' and 47185 <= r.build) # Internal Methods def _get_reader(self, data_file): From e6ca55b28c960771287dac39503655dab1428f61 Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Fri, 18 Nov 2016 15:58:36 -0800 Subject: [PATCH 078/116] fixing tests from graylinkim/ggtracker merge --- sc2reader/engine/plugins/creeptracker.py | 38 +++++++++++++----------- test_replays/test_all.py | 7 +++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/sc2reader/engine/plugins/creeptracker.py b/sc2reader/engine/plugins/creeptracker.py index 25ead4af..14120770 100644 --- a/sc2reader/engine/plugins/creeptracker.py +++ b/sc2reader/engine/plugins/creeptracker.py @@ -5,8 +5,12 @@ from sets import Set except ImportError: Set = set -from PIL.Image import open as PIL_open -from PIL.Image import ANTIALIAS +try: + # required for CreepTracker, but CreepTracker is optional + from PIL.Image import open as PIL_open + from PIL.Image import ANTIALIAS +except ImportError: + pass try: from StringIO import StringIO except ImportError: @@ -43,7 +47,7 @@ def handleUnitDiedEvent(self, event, replay): except Exception as e: print("Whoa! {}".format(e)) pass - + def handleUnitInitEvent(self,event,replay): try: @@ -53,7 +57,7 @@ def handleUnitInitEvent(self,event,replay): except Exception as e: print("Whoa! {}".format(e)) pass - + def handleUnitBornEvent(self,event,replay): try: if event.unit_type_name== "Hatchery": @@ -81,14 +85,14 @@ def handleEndGame(self, event, replay): pass -## The class used to used to calculate the creep spread +## The class used to used to calculate the creep spread class creep_tracker(): def __init__(self,replay): #if the debug option is selected, minimaps will be printed to a file - ##and a stringIO containing the minimap image will be saved for - ##every minite in the game and the minimap with creep highlighted + ##and a stringIO containing the minimap image will be saved for + ##every minite in the game and the minimap with creep highlighted ## will be printed out. - self.debug = replay.opt.debug + self.debug = replay.opt['debug'] ##This list contains creep spread area for each player self.creep_spread_by_minute = dict() ## this list contains a minimap highlighted with creep spread for each player @@ -125,7 +129,7 @@ def __init__(self,replay): # resize height to MAPHEIGHT, and compute new width that # would preserve aspect ratio self.map_width = int(cropsize[0] * (float(self.map_height) / cropsize[1])) - self.mapSize =self.map_height * self.map_width + self.mapSize =self.map_height * self.map_width ## the following parameters are only needed if minimaps have to be printed # minimapSize = ( self.map_width,int(self.map_height) ) @@ -138,10 +142,10 @@ def __init__(self,replay): imageCenter = [(self.map_width/2), self.map_height/2] # this is the scaling factor to go from the SC2 coordinate # system to pixel coordinates - self.image_scale = float(self.map_height) / cropsize[1] + self.image_scale = float(self.map_height) / cropsize[1] self.transX =imageCenter[0] + self.image_scale * (mapCenter[0]) self.transY = imageCenter[1] + self.image_scale * (mapCenter[1]) - + def radius_to_map_positions(self,radius): ## this function converts all radius into map coordinates ## centred around the origin that the creep can exist @@ -180,7 +184,7 @@ def add_to_list(self,player_id,unit_id,unit_location,unit_type,event_time): def remove_from_list(self,unit_id,time_frame): ## This function searches is given a unit ID for every unit who died ## the unit id will be searched in cgu_gen_units for matches - ## if there are any, that unit will be removed from active CGUs + ## if there are any, that unit will be removed from active CGUs ## and appended as a new time frame for player_id in self.creep_gen_units: length_cgu_list = len(self.creep_gen_units[player_id]) @@ -194,7 +198,7 @@ def remove_from_list(self,unit_id,time_frame): self.creep_gen_units_times[player_id].append(time_frame) def cgu_gen_times_to_chunks(self,cgu_time_list): - ## this function returns the index and value of every cgu time + ## this function returns the index and value of every cgu time maximum_cgu_time = max(cgu_time_list) for i in range(0, maximum_cgu_time): a = list(filter(lambda x_y: x_y[1]//60==i , enumerate(cgu_time_list))) @@ -211,7 +215,7 @@ def cgu_in_min_to_cgu_units(self,player_id,cgu_in_minutes): cgu_units.append(self.creep_gen_units[player_id][index]) cgu_max_in_minute = max(cgu_units,key = len) yield cgu_max_in_minute - + def reduce_cgu_per_minute(self,player_id): #the creep_gen_units_lists contains every single time frame #where a CGU is added, @@ -224,7 +228,7 @@ def reduce_cgu_per_minute(self,player_id): self.creep_gen_units_times[player_id] = list(minutes) def get_creep_spread_area(self,player_id): - ## iterates through all cgus and and calculate the area + ## iterates through all cgus and and calculate the area for index,cgu_per_player in enumerate(self.creep_gen_units[player_id]): # convert cgu list into centre of circles and radius cgu_radius = map(lambda x: (x[1], self.unit_name_to_radius[x[2]]),\ @@ -234,7 +238,7 @@ def get_creep_spread_area(self,player_id): creep_area_positions = self.cgu_radius_to_map_positions(cgu_radius,self.radius_to_coordinates) cgu_event_time = self.creep_gen_units_times[player_id][index] cgu_event_time_str=str(int(cgu_event_time//60))+":"+str(cgu_event_time%60) - if self.debug: + if self.debug: self.print_image(creep_area_positions,player_id,cgu_event_time_str) creep_area = len(creep_area_positions) self.creep_spread_by_minute[player_id][cgu_event_time]=\ @@ -251,7 +255,7 @@ def cgu_radius_to_map_positions(self,cgu_radius,radius_to_coordinates): point = cgu[0] radius = cgu[1] ## subtract all radius_to_coordinates with centre of - ## cgu radius to change centre of circle + ## cgu radius to change centre of circle cgu_map_position = map( lambda x:(x[0]+point[0],x[1]+point[1])\ ,self.radius_to_coordinates[radius]) total_points_on_map= total_points_on_map | Set(cgu_map_position) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index f0f9e671..37bc8d38 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -13,6 +13,7 @@ import unittest import sc2reader +from sc2reader.exceptions import CorruptTrackerFileError sc2reader.log_utils.log_to_console("INFO") @@ -395,8 +396,10 @@ def test_creepTracker(self): assert replay.player[2].creep_spread_by_minute[780] == 22.42 def test_bad_unit_ids(self): - replay = sc2reader.load_replay("test_replays/2.0.11.26825/bad_unit_ids_1.SC2Replay", load_level=4) - replay = sc2reader.load_replay("test_replays/2.0.9.26147/bad_unit_ids_2.SC2Replay", load_level=4) + with self.assertRaises(CorruptTrackerFileError): + replay = sc2reader.load_replay("test_replays/2.0.11.26825/bad_unit_ids_1.SC2Replay", load_level=4) + with self.assertRaises(CorruptTrackerFileError): + replay = sc2reader.load_replay("test_replays/2.0.9.26147/bad_unit_ids_2.SC2Replay", load_level=4) def test_daedalus_point(self): replay = sc2reader.load_replay("test_replays/2.0.11.26825/DaedalusPoint.SC2Replay") From c86eb5a6076913373b438e9080424f7f1b546fd7 Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Mon, 28 Nov 2016 14:01:28 -0800 Subject: [PATCH 079/116] fixing more references from the CHANGELOG --- sc2reader/factories/plugins/replay.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index 492052b1..ad465609 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -140,13 +140,13 @@ def SelectionTracker(replay): if debug: logger.info("[{0}] {1} selected {2} units: {3}".format(Length(seconds=event.second), person.name, len(selections[0x0A].objects), selections[0x0A])) - elif event.name == 'SetToHotkeyEvent': + elif event.name == 'SetControlGroupEvent': selections = player_selections[event.frame] selections[event.control_group] = selections[0x0A].copy() if debug: logger.info("[{0}] {1} set hotkey {2} to current selection".format(Length(seconds=event.second), person.name, event.hotkey)) - elif event.name == 'AddToHotkeyEvent': + elif event.name == 'AddToControlGroupEvent': selections = player_selections[event.frame] control_group = selections[event.control_group].copy() error = not control_group.deselect(event.mask_type, event.mask_data) @@ -155,7 +155,7 @@ def SelectionTracker(replay): if debug: logger.info("[{0}] {1} added current selection to hotkey {2}".format(Length(seconds=event.second), person.name, event.hotkey)) - elif event.name == 'GetFromHotkeyEvent': + elif event.name == 'GetControlGroupEvent': selections = player_selections[event.frame] control_group = selections[event.control_group].copy() error = not control_group.deselect(event.mask_type, event.mask_data) From af4d492e402eca39f29c9d092777db9a185df521 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Tue, 6 Dec 2016 13:02:14 -0500 Subject: [PATCH 080/116] bump to 0.8.0, update some URLs and contributor info --- CHANGELOG.rst | 4 ++++ CONTRIBUTORS.txt | 6 ++++-- sc2reader/__init__.py | 2 +- setup.py | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index dce8cf4c..e0bd31ea 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,10 @@ CHANGELOG ============ +0.8.0 - +--------------------------- +* Merged into ggtracker/sc2reader, which mostly means that we have a bunch of parsing fixes. Thanks @StoicLoofah! + 0.7.0 - --------------------------- diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index e53bbcd4..aea5dd40 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -1,8 +1,10 @@ -Author and Maintainer: +Maintainer: + David Joerg - @dsjoerg on github + +Author: Graylin Kim - graylinkim @ github Contributors: - David Joerg - @dsjoerg on github Alexander Hanhikoski - @alexhanh on github Bas Peschier (fizzgig) - @bpeschier on github Jason Dana - @sheutka on github diff --git a/sc2reader/__init__.py b/sc2reader/__init__.py index 8ae84731..0bcf512a 100644 --- a/sc2reader/__init__.py +++ b/sc2reader/__init__.py @@ -20,7 +20,7 @@ """ from __future__ import absolute_import, print_function, unicode_literals, division -__version__ = "0.7.0-pre" +__version__ = "0.8.0" import os import sys diff --git a/setup.py b/setup.py index 47cf417c..6b09d6ab 100644 --- a/setup.py +++ b/setup.py @@ -4,14 +4,14 @@ setuptools.setup( license="MIT", name="sc2reader", - version='0.7.0-pre', + version='0.8.0', keywords=["starcraft 2", "sc2", "replay", "parser"], description="Utility for parsing Starcraft II replay files", long_description=open("README.rst").read()+"\n\n"+open("CHANGELOG.rst").read(), author="Graylin Kim", author_email="graylin.kim@gmail.com", - url="https://github.com/GraylinKim/sc2reader", + url="https://github.com/ggtracker/sc2reader", platforms=["any"], From 8cdc7d2e0e42d9775ec743ee854f4152311ee75a Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Sun, 11 Dec 2016 17:51:05 +0000 Subject: [PATCH 081/116] added support for protocol 48258 --- sc2reader/data/LotV/48258_abilities.csv | 542 ++++++++++++++ sc2reader/data/LotV/48258_units.csv | 897 ++++++++++++++++++++++++ sc2reader/data/__init__.py | 2 +- sc2reader/data/ability_lookup.csv | 184 +++++ sc2reader/data/unit_lookup.csv | 10 + sc2reader/resources.py | 2 + 6 files changed, 1636 insertions(+), 1 deletion(-) create mode 100644 sc2reader/data/LotV/48258_abilities.csv create mode 100644 sc2reader/data/LotV/48258_units.csv diff --git a/sc2reader/data/LotV/48258_abilities.csv b/sc2reader/data/LotV/48258_abilities.csv new file mode 100644 index 00000000..2ca25a08 --- /dev/null +++ b/sc2reader/data/LotV/48258_abilities.csv @@ -0,0 +1,542 @@ +35,Taunt +36,stop +38,move +45,attack +59,SprayTerran +60,SprayZerg +61,SprayProtoss +62,SalvageShared +64,GhostHoldFire +65,GhostWeaponsFree +67,Explode +68,CarrierLaunchSpeedUpgrade +68,PhoenixRangeUpgrade +69,FungalGrowth +70,GuardianShield +71,MULERepair +72,Baneling +74,Feedback +76,PlacePointDefenseDrone +77,HallucinationArchon +78,HallucinationColossus +79,HallucinationHighTemplar +80,HallucinationImmortal +81,HallucinationPhoenix +82,HallucinationProbe +83,HallucinationStalker +84,HallucinationVoidRay +85,HallucinationWarpPrism +86,HallucinationZealot +87,MULEGather +88,SeekerMissile +89,CalldownMULE +90,GravitonBeam +94,SpawnChangeling +101,Rally +102,ProgressRally +103,RallyCommand +104,RallyNexus +105,RallyHatchery +106,GlialReconstitution +106,TunnelingClaws +108,InfestedTerrans +109,NeuralParasite +110,SpawnLarva +111,StimpackMarauder +112,SupplyDrop +115,TimeWarp +116,ChitinousPlating +118,SCVHarvest +119,ProbeHarvest +121,que1 +122,que5 +123,que5CancelToSelection +125,que5Addon +126,BuildInProgress +127,Repair +128,Armory +128,Barracks +128,Bunker +128,CommandCenter +128,EngineeringBay +128,Factory +128,FusionCore +128,GhostAcademy +128,MissileTurret +128,Refinery +128,SensorTower +128,Starport +128,SupplyDepot +130,Stimpack +131,GhostCloak +133,MedivacHeal +134,SiegeMode +135,Unsiege +136,BansheeCloak +137,MedivacTransport +138,ScannerSweep +139,Yamato +140,AssaultMode +141,FighterMode +142,BunkerTransport +143,CommandCenterTransport +144,CommandCenterLiftOff +145,CommandCenterLand +146,BarracksReactor +146,BarracksTechLab +147,BarracksLiftOff +148,FactoryReactor +148,FactoryTechLab +149,FactoryLiftOff +150,StarportReactor +150,StarportTechLab +151,StarportLiftOff +152,FactoryLand +153,StarportLand +154,SCV +155,BarracksLand +156,SupplyDepotLower +157,SupplyDepotRaise +158,Ghost +158,Marauder +158,Marine +158,Reaper +159,Cyclone +159,Hellion +159,HellionTank +159,SiegeTank +159,Thor +159,WidowMine +160,Banshee +160,Battlecruiser +160,Liberator +160,Medivac +160,Raven +160,VikingFighter +161,HiSecAutoTracking +161,NeosteelFrame +161,TerranBuildingArmor +161,TerranInfantryArmorsLevel1 +161,TerranInfantryArmorsLevel2 +161,TerranInfantryArmorsLevel3 +161,TerranInfantryWeaponsLevel1 +161,TerranInfantryWeaponsLevel2 +161,TerranInfantryWeaponsLevel3 +163,Nuke +164,PunisherGrenades +164,ShieldWall +164,Stimpack +165,DrillClaws +165,HighCapacityBarrels +166,BansheeCloak +166,BansheeSpeed +166,LiberatorAGRangeUpgrade +166,MedivacIncreaseSpeedBoost +166,RavenCorvidReactor +166,RavenRecalibratedExplosives +167,PersonalCloaking +168,TerranShipWeaponsLevel1 +168,TerranShipWeaponsLevel2 +168,TerranShipWeaponsLevel3 +168,TerranVehicleAndShipArmorsLevel1 +168,TerranVehicleAndShipArmorsLevel2 +168,TerranVehicleAndShipArmorsLevel3 +168,TerranVehicleWeaponsLevel1 +168,TerranVehicleWeaponsLevel2 +168,TerranVehicleWeaponsLevel3 +169,Assimilator +169,CyberneticsCore +169,DarkShrine +169,FleetBeacon +169,Forge +169,Gateway +169,Nexus +169,PhotonCannon +169,Pylon +169,RoboticsBay +169,RoboticsFacility +169,Stargate +169,TemplarArchive +169,TwilightCouncil +170,WarpPrismTransport +171,Adept +171,DarkTemplar +171,HighTemplar +171,Sentry +171,Stalker +171,Zealot +172,Carrier +172,Oracle +172,Phoenix +172,Tempest +172,VoidRay +173,Colossus +173,Disruptor +173,Immortal +173,Observer +173,WarpPrism +174,Probe +175,PsiStorm +176,HangarQueue5 +178,Interceptor +179,ProtossGroundArmorsLevel1 +179,ProtossGroundArmorsLevel2 +179,ProtossGroundArmorsLevel3 +179,ProtossGroundWeaponsLevel1 +179,ProtossGroundWeaponsLevel2 +179,ProtossGroundWeaponsLevel3 +179,ProtossShieldsLevel1 +179,ProtossShieldsLevel2 +179,ProtossShieldsLevel3 +180,ExtendedThermalLance +180,GraviticDrive +180,ObserverGraviticBooster +181,PsiStormTech +182,BanelingNest +182,EvolutionChamber +182,Extractor +182,Hatchery +182,HydraliskDen +182,InfestationPit +182,NydusNetwork +182,RoachWarren +182,SpawningPool +182,SpineCrawler +182,Spire +182,SporeCrawler +182,UltraliskCavern +183,DroneHarvest +184,ZergGroundArmorsLevel1 +184,ZergGroundArmorsLevel2 +184,ZergGroundArmorsLevel3 +184,ZergMeleeWeaponsLevel1 +184,ZergMeleeWeaponsLevel2 +184,ZergMeleeWeaponsLevel3 +184,ZergMissileWeaponsLevel1 +184,ZergMissileWeaponsLevel2 +184,ZergMissileWeaponsLevel3 +185,UpgradeToLair +186,UpgradeToHive +187,UpgradeToGreaterSpire +188,Burrow +188,overlordspeed +189,zerglingattackspeed +189,zerglingmovementspeed +190,EvolveMuscularAugments +191,ZergFlyerArmorsLevel1 +191,ZergFlyerArmorsLevel2 +191,ZergFlyerArmorsLevel3 +191,ZergFlyerWeaponsLevel1 +191,ZergFlyerWeaponsLevel2 +191,ZergFlyerWeaponsLevel3 +192,Corruptor +192,Drone +192,Hydralisk +192,Infestor +192,Mutalisk +192,Overlord +192,Roach +192,SwarmHostMP +192,Ultralisk +192,Viper +192,Zergling +193,MorphToBroodLord +194,BurrowBanelingDown +195,BurrowBanelingUp +196,BurrowDroneDown +197,BurrowDroneUp +198,BurrowHydraliskDown +199,BurrowHydraliskUp +200,BurrowRoachDown +201,BurrowRoachUp +202,BurrowZerglingDown +203,BurrowZerglingUp +204,BurrowInfestorTerranDown +205,BurrowInfestorTerranUp +206,RedstoneLavaCritterBurrow +207,RedstoneLavaCritterInjuredBurrow +208,RedstoneLavaCritterUnburrow +209,RedstoneLavaCritterInjuredUnburrow +210,OverlordTransport +213,Adept +213,DarkTemplar +213,HighTemplar +213,Sentry +213,Stalker +213,Zealot +214,BurrowQueenDown +215,BurrowQueenUp +216,NydusCanalTransport +217,Blink +218,BurrowInfestorDown +219,BurrowInfestorUp +220,MorphToOverseer +221,UpgradeToPlanetaryFortress +222,InfestorEnergyUpgrade +222,NeuralParasite +223,CentrificalHooks +224,BurrowUltraliskDown +225,BurrowUltraliskUp +226,UpgradeToOrbital +227,UpgradeToWarpGate +228,MorphBackToGateway +229,OrbitalLiftOff +230,OrbitalCommandLand +231,ForceField +232,PhasingMode +233,TransportMode +234,BattlecruiserEnableSpecializations +235,ProtossAirArmorsLevel1 +235,ProtossAirArmorsLevel2 +235,ProtossAirArmorsLevel3 +235,ProtossAirWeaponsLevel1 +235,ProtossAirWeaponsLevel2 +235,ProtossAirWeaponsLevel3 +235,WarpGateResearch +236,AdeptPiercingAttack +236,BlinkTech +236,Charge +237,TacNukeStrike +240,EMP +242,Queen +244,Transfusion +253,AttackRedirect +254,StimpackRedirect +255,StimpackMarauderRedirect +257,StopRedirect +258,GenerateCreep +259,CreepTumorQueen +260,SpineCrawlerUproot +261,SporeCrawlerUproot +262,SpineCrawlerRoot +263,SporeCrawlerRoot +264,CreepTumor +265,BuildAutoTurret +266,ArchonWarp +267,NydusCanal +269,Charge +273,Contaminate +276,que5Passive +277,que5PassiveCancelToSelection +305,DigesterCreepSpray +309,MorphToMothership +312,MothershipCore +334,XelNagaHealingShrine +343,MothershipCoreMassRecall +345,MorphToHellion +355,MorphToHellionTank +363,MorphToSwarmHostBurrowedMP +364,MorphToSwarmHostMP +366,attackProtossBuilding +368,stopProtossBuilding +369,BlindingCloud +371,Yoink +374,ViperConsumeStructure +377,TestZerg +378,VolatileBurstBuilding +385,WidowMineBurrow +386,WidowMineUnburrow +387,WidowMineAttack +388,TornadoMissile +392,BurrowLurkerMPDown +393,BurrowLurkerMPUp +394,UpgradeToLurkerDenMP +395,HallucinationOracle +396,MedivacSpeedBoost +397,ExtendingBridgeNEWide8Out +398,ExtendingBridgeNEWide8 +399,ExtendingBridgeNWWide8Out +400,ExtendingBridgeNWWide8 +401,ExtendingBridgeNEWide10Out +402,ExtendingBridgeNEWide10 +403,ExtendingBridgeNWWide10Out +404,ExtendingBridgeNWWide10 +405,ExtendingBridgeNEWide12Out +406,ExtendingBridgeNEWide12 +407,ExtendingBridgeNWWide12Out +408,ExtendingBridgeNWWide12 +410,CritterFlee +411,OracleRevelation +419,MothershipCorePurifyNexus +420,XelNaga_Caverns_DoorE +421,XelNaga_Caverns_DoorEOpened +422,XelNaga_Caverns_DoorN +423,XelNaga_Caverns_DoorNE +424,XelNaga_Caverns_DoorNEOpened +425,XelNaga_Caverns_DoorNOpened +426,XelNaga_Caverns_DoorNW +427,XelNaga_Caverns_DoorNWOpened +428,XelNaga_Caverns_DoorS +429,XelNaga_Caverns_DoorSE +430,XelNaga_Caverns_DoorSEOpened +431,XelNaga_Caverns_DoorSOpened +432,XelNaga_Caverns_DoorSW +433,XelNaga_Caverns_DoorSWOpened +434,XelNaga_Caverns_DoorW +435,XelNaga_Caverns_DoorWOpened +436,XelNaga_Caverns_Floating_BridgeNE8Out +437,XelNaga_Caverns_Floating_BridgeNE8 +438,XelNaga_Caverns_Floating_BridgeNW8Out +439,XelNaga_Caverns_Floating_BridgeNW8 +440,XelNaga_Caverns_Floating_BridgeNE10Out +441,XelNaga_Caverns_Floating_BridgeNE10 +442,XelNaga_Caverns_Floating_BridgeNW10Out +443,XelNaga_Caverns_Floating_BridgeNW10 +444,XelNaga_Caverns_Floating_BridgeNE12Out +445,XelNaga_Caverns_Floating_BridgeNE12 +446,XelNaga_Caverns_Floating_BridgeNW12Out +447,XelNaga_Caverns_Floating_BridgeNW12 +448,XelNaga_Caverns_Floating_BridgeH8Out +449,XelNaga_Caverns_Floating_BridgeH8 +450,XelNaga_Caverns_Floating_BridgeV8Out +451,XelNaga_Caverns_Floating_BridgeV8 +452,XelNaga_Caverns_Floating_BridgeH10Out +453,XelNaga_Caverns_Floating_BridgeH10 +454,XelNaga_Caverns_Floating_BridgeV10Out +455,XelNaga_Caverns_Floating_BridgeV10 +456,XelNaga_Caverns_Floating_BridgeH12Out +457,XelNaga_Caverns_Floating_BridgeH12 +458,XelNaga_Caverns_Floating_BridgeV12Out +459,XelNaga_Caverns_Floating_BridgeV12 +460,TemporalField +484,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +485,SnowRefinery_Terran_ExtendingBridgeNEShort8 +486,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +487,SnowRefinery_Terran_ExtendingBridgeNWShort8 +509,CausticSpray +512,MorphToRavager +513,MorphToLurker +516,RavagerCorrosiveBile +517,BurrowRavagerDown +518,BurrowRavagerUp +520,PurificationNovaTargeted +522,LockOn +524,LockOnCancel +526,Hyperjump +528,ThorAPMode +529,ThorNormalMode +531,MothershipMassRecall +532,NydusWormTransport +533,OracleWeapon +539,LocustMPFlyingSwoop +540,HallucinationDisruptor +541,HallucinationAdept +542,VoidRaySwarmDamageBoost +543,SeekerDummyChannel +544,AiurLightBridgeNE8Out +545,AiurLightBridgeNE8 +546,AiurLightBridgeNE10Out +547,AiurLightBridgeNE10 +548,AiurLightBridgeNE12Out +549,AiurLightBridgeNE12 +550,AiurLightBridgeNW8Out +551,AiurLightBridgeNW8 +552,AiurLightBridgeNW10Out +553,AiurLightBridgeNW10 +554,AiurLightBridgeNW12Out +555,AiurLightBridgeNW12 +568,ShakurasLightBridgeNE8Out +569,ShakurasLightBridgeNE8 +570,ShakurasLightBridgeNE10Out +571,ShakurasLightBridgeNE10 +572,ShakurasLightBridgeNE12Out +573,ShakurasLightBridgeNE12 +574,ShakurasLightBridgeNW8Out +575,ShakurasLightBridgeNW8 +576,ShakurasLightBridgeNW10Out +577,ShakurasLightBridgeNW10 +578,ShakurasLightBridgeNW12Out +579,ShakurasLightBridgeNW12 +580,VoidMPImmortalReviveRebuild +582,ArbiterMPStasisField +583,ArbiterMPRecall +584,CorsairMPDisruptionWeb +585,MorphToGuardianMP +586,MorphToDevourerMP +587,DefilerMPConsume +588,DefilerMPDarkSwarm +589,DefilerMPPlague +590,DefilerMPBurrow +591,DefilerMPUnburrow +592,QueenMPEnsnare +593,QueenMPSpawnBroodlings +594,QueenMPInfestCommandCenter +598,OracleStasisTrap +602,ParasiticBomb +603,AdeptPhaseShift +606,LurkerHoldFire +607,LurkerRemoveHoldFire +610,LiberatorAGTarget +611,LiberatorAATarget +613,AiurLightBridgeAbandonedNE8Out +614,AiurLightBridgeAbandonedNE8 +615,AiurLightBridgeAbandonedNE10Out +616,AiurLightBridgeAbandonedNE10 +617,AiurLightBridgeAbandonedNE12Out +618,AiurLightBridgeAbandonedNE12 +619,AiurLightBridgeAbandonedNW8Out +620,AiurLightBridgeAbandonedNW8 +621,AiurLightBridgeAbandonedNW10Out +622,AiurLightBridgeAbandonedNW10 +623,AiurLightBridgeAbandonedNW12Out +624,AiurLightBridgeAbandonedNW12 +625,KD8Charge +628,AdeptPhaseShiftCancel +629,AdeptShadePhaseShiftCancel +630,SlaynElementalGrab +632,PortCity_Bridge_UnitNE8Out +633,PortCity_Bridge_UnitNE8 +634,PortCity_Bridge_UnitSE8Out +635,PortCity_Bridge_UnitSE8 +636,PortCity_Bridge_UnitNW8Out +637,PortCity_Bridge_UnitNW8 +638,PortCity_Bridge_UnitSW8Out +639,PortCity_Bridge_UnitSW8 +640,PortCity_Bridge_UnitNE10Out +641,PortCity_Bridge_UnitNE10 +642,PortCity_Bridge_UnitSE10Out +643,PortCity_Bridge_UnitSE10 +644,PortCity_Bridge_UnitNW10Out +645,PortCity_Bridge_UnitNW10 +646,PortCity_Bridge_UnitSW10Out +646,PowerSourceFast +647,PortCity_Bridge_UnitSW10 +648,PortCity_Bridge_UnitNE12Out +649,PortCity_Bridge_UnitNE12 +650,PortCity_Bridge_UnitSE12Out +651,PortCity_Bridge_UnitSE12 +652,PortCity_Bridge_UnitNW12Out +653,PortCity_Bridge_UnitNW12 +654,PortCity_Bridge_UnitSW12Out +655,PortCity_Bridge_UnitSW12 +656,PortCity_Bridge_UnitN8Out +657,PortCity_Bridge_UnitN8 +658,PortCity_Bridge_UnitS8Out +659,PortCity_Bridge_UnitS8 +660,PortCity_Bridge_UnitE8Out +661,PortCity_Bridge_UnitE8 +662,PortCity_Bridge_UnitW8Out +663,PortCity_Bridge_UnitW8 +664,PortCity_Bridge_UnitN10Out +665,PortCity_Bridge_UnitN10 +666,PortCity_Bridge_UnitS10Out +667,PortCity_Bridge_UnitS10 +668,PortCity_Bridge_UnitE10Out +669,PortCity_Bridge_UnitE10 +670,PortCity_Bridge_UnitW10Out +671,PortCity_Bridge_UnitW10 +672,PortCity_Bridge_UnitN12Out +673,PortCity_Bridge_UnitN12 +674,PortCity_Bridge_UnitS12Out +675,PortCity_Bridge_UnitS12 +676,PortCity_Bridge_UnitE12Out +677,PortCity_Bridge_UnitE12 +678,PortCity_Bridge_UnitW12Out +679,PortCity_Bridge_UnitW12 +682,DarkTemplarBlink +686,SpawnLocustsTargeted +688,MorphToTransportOverlord +691,ChannelSnipe +694,DarkTemplarBlinkUpgrade +1843,WidowMineArmed +2378,IsTransportOverlord diff --git a/sc2reader/data/LotV/48258_units.csv b/sc2reader/data/LotV/48258_units.csv new file mode 100644 index 00000000..cc21644b --- /dev/null +++ b/sc2reader/data/LotV/48258_units.csv @@ -0,0 +1,897 @@ +1,System_Snapshot_Dummy +21,Ball +22,StereoscopicOptionsUnit +23,Colossus +24,TechLab +25,Reactor +27,InfestorTerran +28,BanelingCocoon +29,Baneling +30,Mothership +31,PointDefenseDrone +32,Changeling +33,ChangelingZealot +34,ChangelingMarineShield +35,ChangelingMarine +36,ChangelingZerglingWings +37,ChangelingZergling +39,CommandCenter +40,SupplyDepot +41,Refinery +42,Barracks +43,EngineeringBay +44,MissileTurret +45,Bunker +46,SensorTower +47,GhostAcademy +48,Factory +49,Starport +51,Armory +52,FusionCore +53,AutoTurret +54,SiegeTankSieged +55,SiegeTank +56,VikingAssault +57,VikingFighter +58,CommandCenterFlying +59,BarracksTechLab +60,BarracksReactor +61,FactoryTechLab +62,FactoryReactor +63,StarportTechLab +64,StarportReactor +65,FactoryFlying +66,StarportFlying +67,SCV +68,BarracksFlying +69,SupplyDepotLowered +70,Marine +71,Reaper +72,Ghost +73,Marauder +74,Thor +75,Hellion +76,Medivac +77,Banshee +78,Raven +79,Battlecruiser +80,Nuke +81,Nexus +82,Pylon +83,Assimilator +84,Gateway +85,Forge +86,FleetBeacon +87,TwilightCouncil +88,PhotonCannon +89,Stargate +90,TemplarArchive +91,DarkShrine +92,RoboticsBay +93,RoboticsFacility +94,CyberneticsCore +95,Zealot +96,Stalker +97,HighTemplar +98,DarkTemplar +99,Sentry +100,Phoenix +101,Carrier +102,VoidRay +103,WarpPrism +104,Observer +105,Immortal +106,Probe +107,Interceptor +108,Hatchery +109,CreepTumor +110,Extractor +111,SpawningPool +112,EvolutionChamber +113,HydraliskDen +114,Spire +115,UltraliskCavern +116,InfestationPit +117,NydusNetwork +118,BanelingNest +119,RoachWarren +120,SpineCrawler +121,SporeCrawler +122,Lair +123,Hive +124,GreaterSpire +125,Egg +126,Drone +127,Zergling +128,Overlord +129,Hydralisk +130,Mutalisk +131,Ultralisk +132,Roach +133,Infestor +134,Corruptor +135,BroodLordCocoon +136,BroodLord +137,BanelingBurrowed +138,DroneBurrowed +139,HydraliskBurrowed +140,RoachBurrowed +141,ZerglingBurrowed +142,InfestorTerranBurrowed +143,RedstoneLavaCritterBurrowed +144,RedstoneLavaCritterInjuredBurrowed +145,RedstoneLavaCritter +146,RedstoneLavaCritterInjured +147,QueenBurrowed +148,Queen +149,InfestorBurrowed +150,OverlordCocoon +151,Overseer +152,PlanetaryFortress +153,UltraliskBurrowed +154,OrbitalCommand +155,WarpGate +156,OrbitalCommandFlying +157,ForceField +158,WarpPrismPhasing +159,CreepTumorBurrowed +160,CreepTumorQueen +161,SpineCrawlerUprooted +162,SporeCrawlerUprooted +163,Archon +164,NydusCanal +165,BroodlingEscort +166,GhostAlternate +167,GhostNova +168,RichMineralField +169,RichMineralField750 +170,Ursadon +172,XelNagaTower +176,InfestedTerransEgg +177,Larva +178,ReaperPlaceholder +179,MarineACGluescreenDummy +180,FirebatACGluescreenDummy +181,MedicACGluescreenDummy +182,MarauderACGluescreenDummy +183,VultureACGluescreenDummy +184,SiegeTankACGluescreenDummy +185,VikingACGluescreenDummy +186,BansheeACGluescreenDummy +187,BattlecruiserACGluescreenDummy +188,OrbitalCommandACGluescreenDummy +189,BunkerACGluescreenDummy +190,BunkerUpgradedACGluescreenDummy +191,MissileTurretACGluescreenDummy +192,HellbatACGluescreenDummy +193,GoliathACGluescreenDummy +194,CycloneACGluescreenDummy +195,WraithACGluescreenDummy +196,ScienceVesselACGluescreenDummy +197,HerculesACGluescreenDummy +198,ThorACGluescreenDummy +199,PerditionTurretACGluescreenDummy +200,FlamingBettyACGluescreenDummy +201,DevastationTurretACGluescreenDummy +202,BlasterBillyACGluescreenDummy +203,SpinningDizzyACGluescreenDummy +204,ZerglingKerriganACGluescreenDummy +205,RaptorACGluescreenDummy +206,QueenCoopACGluescreenDummy +207,HydraliskACGluescreenDummy +208,HydraliskLurkerACGluescreenDummy +209,MutaliskBroodlordACGluescreenDummy +210,BroodLordACGluescreenDummy +211,UltraliskACGluescreenDummy +212,TorrasqueACGluescreenDummy +213,OverseerACGluescreenDummy +214,LurkerACGluescreenDummy +215,SpineCrawlerACGluescreenDummy +216,SporeCrawlerACGluescreenDummy +217,NydusNetworkACGluescreenDummy +218,OmegaNetworkACGluescreenDummy +219,ZerglingZagaraACGluescreenDummy +220,SwarmlingACGluescreenDummy +221,BanelingACGluescreenDummy +222,SplitterlingACGluescreenDummy +223,AberrationACGluescreenDummy +224,ScourgeACGluescreenDummy +225,CorruptorACGluescreenDummy +226,BileLauncherACGluescreenDummy +227,SwarmQueenACGluescreenDummy +228,RoachACGluescreenDummy +229,RoachVileACGluescreenDummy +230,RavagerACGluescreenDummy +231,SwarmHostACGluescreenDummy +232,MutaliskACGluescreenDummy +233,GuardianACGluescreenDummy +234,DevourerACGluescreenDummy +235,ViperACGluescreenDummy +236,BrutaliskACGluescreenDummy +237,LeviathanACGluescreenDummy +238,ZealotACGluescreenDummy +239,ZealotAiurACGluescreenDummy +240,DragoonACGluescreenDummy +241,HighTemplarACGluescreenDummy +242,ArchonACGluescreenDummy +243,ImmortalACGluescreenDummy +244,ObserverACGluescreenDummy +245,PhoenixAiurACGluescreenDummy +246,ReaverACGluescreenDummy +247,TempestACGluescreenDummy +248,PhotonCannonACGluescreenDummy +249,ZealotVorazunACGluescreenDummy +250,ZealotShakurasACGluescreenDummy +251,StalkerShakurasACGluescreenDummy +252,DarkTemplarShakurasACGluescreenDummy +253,CorsairACGluescreenDummy +254,VoidRayACGluescreenDummy +255,VoidRayShakurasACGluescreenDummy +256,OracleACGluescreenDummy +257,DarkArchonACGluescreenDummy +258,DarkPylonACGluescreenDummy +259,ZealotPurifierACGluescreenDummy +260,SentryPurifierACGluescreenDummy +261,ImmortalKaraxACGluescreenDummy +262,ColossusACGluescreenDummy +263,ColossusPurifierACGluescreenDummy +264,PhoenixPurifierACGluescreenDummy +265,CarrierACGluescreenDummy +266,CarrierAiurACGluescreenDummy +267,KhaydarinMonolithACGluescreenDummy +268,ShieldBatteryACGluescreenDummy +269,EliteMarineACGluescreenDummy +270,MarauderCommandoACGluescreenDummy +271,SpecOpsGhostACGluescreenDummy +272,HellbatRangerACGluescreenDummy +273,StrikeGoliathACGluescreenDummy +274,HeavySiegeTankACGluescreenDummy +275,RaidLiberatorACGluescreenDummy +276,RavenTypeIIACGluescreenDummy +277,CovertBansheeACGluescreenDummy +278,RailgunTurretACGluescreenDummy +279,BlackOpsMissileTurretACGluescreenDummy +280,SupplicantACGluescreenDummy +281,StalkerTaldarimACGluescreenDummy +282,SentryTaldarimACGluescreenDummy +283,HighTemplarTaldarimACGluescreenDummy +284,ImmortalTaldarimACGluescreenDummy +285,ColossusTaldarimACGluescreenDummy +286,WarpPrismTaldarimACGluescreenDummy +287,PhotonCannonTaldarimACGluescreenDummy +289,NeedleSpinesWeapon +290,CorruptionWeapon +291,InfestedTerransWeapon +292,NeuralParasiteWeapon +293,PointDefenseDroneReleaseWeapon +294,HunterSeekerWeapon +295,MULE +297,ThorAAWeapon +298,PunisherGrenadesLMWeapon +299,VikingFighterWeapon +300,ATALaserBatteryLMWeapon +301,ATSLaserBatteryLMWeapon +302,LongboltMissileWeapon +303,D8ChargeWeapon +304,YamatoWeapon +305,IonCannonsWeapon +306,AcidSalivaWeapon +307,SpineCrawlerWeapon +308,SporeCrawlerWeapon +309,GlaiveWurmWeapon +310,GlaiveWurmM2Weapon +311,GlaiveWurmM3Weapon +312,StalkerWeapon +313,EMP2Weapon +314,BacklashRocketsLMWeapon +315,PhotonCannonWeapon +316,ParasiteSporeWeapon +318,Broodling +319,BroodLordBWeapon +322,AutoTurretReleaseWeapon +323,LarvaReleaseMissile +324,AcidSpinesWeapon +325,FrenzyWeapon +326,ContaminateWeapon +338,BeaconRally +339,BeaconArmy +340,BeaconAttack +341,BeaconDefend +342,BeaconHarass +343,BeaconIdle +344,BeaconAuto +345,BeaconDetect +346,BeaconScout +347,BeaconClaim +348,BeaconExpand +349,BeaconCustom1 +350,BeaconCustom2 +351,BeaconCustom3 +352,BeaconCustom4 +353,Adept +359,Rocks2x2NonConjoined +360,FungalGrowthMissile +361,NeuralParasiteTentacleMissile +362,Beacon_Protoss +363,Beacon_ProtossSmall +364,Beacon_Terran +365,Beacon_TerranSmall +366,Beacon_Zerg +367,Beacon_ZergSmall +368,Lyote +369,CarrionBird +370,KarakMale +371,KarakFemale +372,UrsadakFemaleExotic +373,UrsadakMale +374,UrsadakFemale +375,UrsadakCalf +376,UrsadakMaleExotic +377,UtilityBot +378,CommentatorBot1 +379,CommentatorBot2 +380,CommentatorBot3 +381,CommentatorBot4 +382,Scantipede +383,Dog +384,Sheep +385,Cow +386,InfestedTerransEggPlacement +387,InfestorTerransWeapon +388,MineralField +389,VespeneGeyser +390,SpacePlatformGeyser +391,RichVespeneGeyser +392,DestructibleSearchlight +393,DestructibleBullhornLights +394,DestructibleStreetlight +395,DestructibleSpacePlatformSign +396,DestructibleStoreFrontCityProps +397,DestructibleBillboardTall +398,DestructibleBillboardScrollingText +399,DestructibleSpacePlatformBarrier +400,DestructibleSignsDirectional +401,DestructibleSignsConstruction +402,DestructibleSignsFunny +403,DestructibleSignsIcons +404,DestructibleSignsWarning +405,DestructibleGarage +406,DestructibleGarageLarge +407,DestructibleTrafficSignal +408,TrafficSignal +409,BraxisAlphaDestructible1x1 +410,BraxisAlphaDestructible2x2 +411,DestructibleDebris4x4 +412,DestructibleDebris6x6 +413,DestructibleRock2x4Vertical +414,DestructibleRock2x4Horizontal +415,DestructibleRock2x6Vertical +416,DestructibleRock2x6Horizontal +417,DestructibleRock4x4 +418,DestructibleRock6x6 +419,DestructibleRampDiagonalHugeULBR +420,DestructibleRampDiagonalHugeBLUR +421,DestructibleRampVerticalHuge +422,DestructibleRampHorizontalHuge +423,DestructibleDebrisRampDiagonalHugeULBR +424,DestructibleDebrisRampDiagonalHugeBLUR +425,OverlordGenerateCreepKeybind +426,MengskStatueAlone +427,MengskStatue +428,WolfStatue +429,GlobeStatue +430,Weapon +431,GlaiveWurmBounceWeapon +432,BroodLordWeapon +433,BroodLordAWeapon +434,CreepBlocker1x1 +435,PermanentCreepBlocker1x1 +436,PathingBlocker1x1 +437,PathingBlocker2x2 +438,AutoTestAttackTargetGround +439,AutoTestAttackTargetAir +440,AutoTestAttacker +441,HelperEmitterSelectionArrow +442,MultiKillObject +443,ShapeGolfball +444,ShapeCone +445,ShapeCube +446,ShapeCylinder +447,ShapeDodecahedron +448,ShapeIcosahedron +449,ShapeOctahedron +450,ShapePyramid +451,ShapeRoundedCube +452,ShapeSphere +453,ShapeTetrahedron +454,ShapeThickTorus +455,ShapeThinTorus +456,ShapeTorus +457,Shape4PointStar +458,Shape5PointStar +459,Shape6PointStar +460,Shape8PointStar +461,ShapeArrowPointer +462,ShapeBowl +463,ShapeBox +464,ShapeCapsule +465,ShapeCrescentMoon +466,ShapeDecahedron +467,ShapeDiamond +468,ShapeFootball +469,ShapeGemstone +470,ShapeHeart +471,ShapeJack +472,ShapePlusSign +473,ShapeShamrock +474,ShapeSpade +475,ShapeTube +476,ShapeEgg +477,ShapeYenSign +478,ShapeX +479,ShapeWatermelon +480,ShapeWonSign +481,ShapeTennisball +482,ShapeStrawberry +483,ShapeSmileyFace +484,ShapeSoccerball +485,ShapeRainbow +486,ShapeSadFace +487,ShapePoundSign +488,ShapePear +489,ShapePineapple +490,ShapeOrange +491,ShapePeanut +492,ShapeO +493,ShapeLemon +494,ShapeMoneyBag +495,ShapeHorseshoe +496,ShapeHockeyStick +497,ShapeHockeyPuck +498,ShapeHand +499,ShapeGolfClub +500,ShapeGrape +501,ShapeEuroSign +502,ShapeDollarSign +503,ShapeBasketball +504,ShapeCarrot +505,ShapeCherry +506,ShapeBaseball +507,ShapeBaseballBat +508,ShapeBanana +509,ShapeApple +510,ShapeCashLarge +511,ShapeCashMedium +512,ShapeCashSmall +513,ShapeFootballColored +514,ShapeLemonSmall +515,ShapeOrangeSmall +516,ShapeTreasureChestOpen +517,ShapeTreasureChestClosed +518,ShapeWatermelonSmall +519,UnbuildableRocksDestructible +520,UnbuildableBricksDestructible +521,UnbuildablePlatesDestructible +522,Debris2x2NonConjoined +523,EnemyPathingBlocker1x1 +524,EnemyPathingBlocker2x2 +525,EnemyPathingBlocker4x4 +526,EnemyPathingBlocker8x8 +527,EnemyPathingBlocker16x16 +528,ScopeTest +529,SentryACGluescreenDummy +530,MineralField750 +546,HellionTank +547,CollapsibleTerranTowerDebris +548,DebrisRampLeft +549,DebrisRampRight +550,MothershipCore +554,LocustMP +555,CollapsibleRockTowerDebris +556,NydusCanalAttacker +557,NydusCanalCreeper +558,SwarmHostBurrowedMP +559,SwarmHostMP +560,Oracle +561,Tempest +562,WarHound +563,WidowMine +564,Viper +565,WidowMineBurrowed +566,LurkerMPEgg +567,LurkerMP +568,LurkerMPBurrowed +569,LurkerDenMP +570,ExtendingBridgeNEWide8Out +571,ExtendingBridgeNEWide8 +572,ExtendingBridgeNWWide8Out +573,ExtendingBridgeNWWide8 +574,ExtendingBridgeNEWide10Out +575,ExtendingBridgeNEWide10 +576,ExtendingBridgeNWWide10Out +577,ExtendingBridgeNWWide10 +578,ExtendingBridgeNEWide12Out +579,ExtendingBridgeNEWide12 +580,ExtendingBridgeNWWide12Out +581,ExtendingBridgeNWWide12 +583,CollapsibleRockTowerDebrisRampRight +584,CollapsibleRockTowerDebrisRampLeft +585,XelNaga_Caverns_DoorE +586,XelNaga_Caverns_DoorEOpened +587,XelNaga_Caverns_DoorN +588,XelNaga_Caverns_DoorNE +589,XelNaga_Caverns_DoorNEOpened +590,XelNaga_Caverns_DoorNOpened +591,XelNaga_Caverns_DoorNW +592,XelNaga_Caverns_DoorNWOpened +593,XelNaga_Caverns_DoorS +594,XelNaga_Caverns_DoorSE +595,XelNaga_Caverns_DoorSEOpened +596,XelNaga_Caverns_DoorSOpened +597,XelNaga_Caverns_DoorSW +598,XelNaga_Caverns_DoorSWOpened +599,XelNaga_Caverns_DoorW +600,XelNaga_Caverns_DoorWOpened +601,XelNaga_Caverns_Floating_BridgeNE8Out +602,XelNaga_Caverns_Floating_BridgeNE8 +603,XelNaga_Caverns_Floating_BridgeNW8Out +604,XelNaga_Caverns_Floating_BridgeNW8 +605,XelNaga_Caverns_Floating_BridgeNE10Out +606,XelNaga_Caverns_Floating_BridgeNE10 +607,XelNaga_Caverns_Floating_BridgeNW10Out +608,XelNaga_Caverns_Floating_BridgeNW10 +609,XelNaga_Caverns_Floating_BridgeNE12Out +610,XelNaga_Caverns_Floating_BridgeNE12 +611,XelNaga_Caverns_Floating_BridgeNW12Out +612,XelNaga_Caverns_Floating_BridgeNW12 +613,XelNaga_Caverns_Floating_BridgeH8Out +614,XelNaga_Caverns_Floating_BridgeH8 +615,XelNaga_Caverns_Floating_BridgeV8Out +616,XelNaga_Caverns_Floating_BridgeV8 +617,XelNaga_Caverns_Floating_BridgeH10Out +618,XelNaga_Caverns_Floating_BridgeH10 +619,XelNaga_Caverns_Floating_BridgeV10Out +620,XelNaga_Caverns_Floating_BridgeV10 +621,XelNaga_Caverns_Floating_BridgeH12Out +622,XelNaga_Caverns_Floating_BridgeH12 +623,XelNaga_Caverns_Floating_BridgeV12Out +624,XelNaga_Caverns_Floating_BridgeV12 +627,CollapsibleTerranTowerPushUnitRampLeft +628,CollapsibleTerranTowerPushUnitRampRight +631,CollapsibleRockTowerPushUnit +632,CollapsibleTerranTowerPushUnit +633,CollapsibleRockTowerPushUnitRampRight +634,CollapsibleRockTowerPushUnitRampLeft +635,DigesterCreepSprayTargetUnit +636,DigesterCreepSprayUnit +637,NydusCanalAttackerWeapon +638,ViperConsumeStructureWeapon +641,ResourceBlocker +642,TempestWeapon +643,YoinkMissile +647,YoinkVikingAirMissile +649,YoinkVikingGroundMissile +651,YoinkSiegeTankMissile +653,WarHoundWeapon +655,EyeStalkWeapon +658,WidowMineWeapon +659,WidowMineAirWeapon +660,MothershipCoreWeaponWeapon +661,TornadoMissileWeapon +662,TornadoMissileDummyWeapon +663,TalonsMissileWeapon +664,CreepTumorMissile +665,LocustMPEggAMissileWeapon +666,LocustMPEggBMissileWeapon +667,LocustMPWeapon +669,RepulsorCannonWeapon +673,CollapsibleRockTowerDiagonal +674,CollapsibleTerranTowerDiagonal +675,CollapsibleTerranTowerRampLeft +676,CollapsibleTerranTowerRampRight +677,Ice2x2NonConjoined +678,IceProtossCrates +679,ProtossCrates +680,TowerMine +681,PickupPalletGas +682,PickupPalletMinerals +683,PickupScrapSalvage1x1 +684,PickupScrapSalvage2x2 +685,PickupScrapSalvage3x3 +686,RoughTerrain +687,UnbuildableBricksSmallUnit +688,UnbuildablePlatesSmallUnit +689,UnbuildablePlatesUnit +690,UnbuildableRocksSmallUnit +691,XelNagaHealingShrine +692,InvisibleTargetDummy +693,ProtossVespeneGeyser +694,CollapsibleRockTower +695,CollapsibleTerranTower +696,ThornLizard +697,CleaningBot +698,DestructibleRock6x6Weak +699,ProtossSnakeSegmentDemo +700,PhysicsCapsule +701,PhysicsCube +702,PhysicsCylinder +703,PhysicsKnot +704,PhysicsL +705,PhysicsPrimitives +706,PhysicsSphere +707,PhysicsStar +708,CreepBlocker4x4 +709,DestructibleCityDebris2x4Vertical +710,DestructibleCityDebris2x4Horizontal +711,DestructibleCityDebris2x6Vertical +712,DestructibleCityDebris2x6Horizontal +713,DestructibleCityDebris4x4 +714,DestructibleCityDebris6x6 +715,DestructibleCityDebrisHugeDiagonalBLUR +716,DestructibleCityDebrisHugeDiagonalULBR +717,TestZerg +718,PathingBlockerRadius1 +719,DestructibleRockEx12x4Vertical +720,DestructibleRockEx12x4Horizontal +721,DestructibleRockEx12x6Vertical +722,DestructibleRockEx12x6Horizontal +723,DestructibleRockEx14x4 +724,DestructibleRockEx16x6 +725,DestructibleRockEx1DiagonalHugeULBR +726,DestructibleRockEx1DiagonalHugeBLUR +727,DestructibleRockEx1VerticalHuge +728,DestructibleRockEx1HorizontalHuge +729,DestructibleIce2x4Vertical +730,DestructibleIce2x4Horizontal +731,DestructibleIce2x6Vertical +732,DestructibleIce2x6Horizontal +733,DestructibleIce4x4 +734,DestructibleIce6x6 +735,DestructibleIceDiagonalHugeULBR +736,DestructibleIceDiagonalHugeBLUR +737,DestructibleIceVerticalHuge +738,DestructibleIceHorizontalHuge +739,DesertPlanetSearchlight +740,DesertPlanetStreetlight +741,UnbuildableBricksUnit +742,UnbuildableRocksUnit +743,ZerusDestructibleArch +744,Artosilope +745,Anteplott +746,LabBot +747,Crabeetle +748,CollapsibleRockTowerRampRight +749,CollapsibleRockTowerRampLeft +750,LabMineralField +751,LabMineralField750 +767,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +768,SnowRefinery_Terran_ExtendingBridgeNEShort8 +769,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +770,SnowRefinery_Terran_ExtendingBridgeNWShort8 +775,Tarsonis_DoorN +776,Tarsonis_DoorNLowered +777,Tarsonis_DoorNE +778,Tarsonis_DoorNELowered +779,Tarsonis_DoorE +780,Tarsonis_DoorELowered +781,Tarsonis_DoorNW +782,Tarsonis_DoorNWLowered +783,CompoundMansion_DoorN +784,CompoundMansion_DoorNLowered +785,CompoundMansion_DoorNE +786,CompoundMansion_DoorNELowered +787,CompoundMansion_DoorE +788,CompoundMansion_DoorELowered +789,CompoundMansion_DoorNW +790,CompoundMansion_DoorNWLowered +791,RavagerCocoon +792,Ravager +793,Liberator +794,RavagerBurrowed +796,ThorAP +797,Cyclone +798,LocustMPFlying +799,Disruptor +800,AiurLightBridgeNE8Out +801,AiurLightBridgeNE8 +802,AiurLightBridgeNE10Out +803,AiurLightBridgeNE10 +804,AiurLightBridgeNE12Out +805,AiurLightBridgeNE12 +806,AiurLightBridgeNW8Out +807,AiurLightBridgeNW8 +808,AiurLightBridgeNW10Out +809,AiurLightBridgeNW10 +810,AiurLightBridgeNW12Out +811,AiurLightBridgeNW12 +812,AiurTempleBridgeNE8Out +814,AiurTempleBridgeNE10Out +816,AiurTempleBridgeNE12Out +818,AiurTempleBridgeNW8Out +820,AiurTempleBridgeNW10Out +822,AiurTempleBridgeNW12Out +824,ShakurasLightBridgeNE8Out +825,ShakurasLightBridgeNE8 +826,ShakurasLightBridgeNE10Out +827,ShakurasLightBridgeNE10 +828,ShakurasLightBridgeNE12Out +829,ShakurasLightBridgeNE12 +830,ShakurasLightBridgeNW8Out +831,ShakurasLightBridgeNW8 +832,ShakurasLightBridgeNW10Out +833,ShakurasLightBridgeNW10 +834,ShakurasLightBridgeNW12Out +835,ShakurasLightBridgeNW12 +836,VoidMPImmortalReviveCorpse +837,GuardianCocoonMP +838,GuardianMP +839,DevourerCocoonMP +840,DevourerMP +841,DefilerMPBurrowed +842,DefilerMP +843,OracleStasisTrap +844,DisruptorPhased +845,LiberatorAG +846,AiurLightBridgeAbandonedNE8Out +847,AiurLightBridgeAbandonedNE8 +848,AiurLightBridgeAbandonedNE10Out +849,AiurLightBridgeAbandonedNE10 +850,AiurLightBridgeAbandonedNE12Out +851,AiurLightBridgeAbandonedNE12 +852,AiurLightBridgeAbandonedNW8Out +853,AiurLightBridgeAbandonedNW8 +854,AiurLightBridgeAbandonedNW10Out +855,AiurLightBridgeAbandonedNW10 +856,AiurLightBridgeAbandonedNW12Out +857,AiurLightBridgeAbandonedNW12 +858,CollapsiblePurifierTowerDebris +859,PortCity_Bridge_UnitNE8Out +860,PortCity_Bridge_UnitNE8 +861,PortCity_Bridge_UnitSE8Out +862,PortCity_Bridge_UnitSE8 +863,PortCity_Bridge_UnitNW8Out +864,PortCity_Bridge_UnitNW8 +865,PortCity_Bridge_UnitSW8Out +866,PortCity_Bridge_UnitSW8 +867,PortCity_Bridge_UnitNE10Out +868,PortCity_Bridge_UnitNE10 +869,PortCity_Bridge_UnitSE10Out +870,PortCity_Bridge_UnitSE10 +871,PortCity_Bridge_UnitNW10Out +872,PortCity_Bridge_UnitNW10 +873,PortCity_Bridge_UnitSW10Out +874,PortCity_Bridge_UnitSW10 +875,PortCity_Bridge_UnitNE12Out +876,PortCity_Bridge_UnitNE12 +877,PortCity_Bridge_UnitSE12Out +878,PortCity_Bridge_UnitSE12 +879,PortCity_Bridge_UnitNW12Out +880,PortCity_Bridge_UnitNW12 +881,PortCity_Bridge_UnitSW12Out +882,PortCity_Bridge_UnitSW12 +883,PortCity_Bridge_UnitN8Out +884,PortCity_Bridge_UnitN8 +885,PortCity_Bridge_UnitS8Out +886,PortCity_Bridge_UnitS8 +887,PortCity_Bridge_UnitE8Out +888,PortCity_Bridge_UnitE8 +889,PortCity_Bridge_UnitW8Out +890,PortCity_Bridge_UnitW8 +891,PortCity_Bridge_UnitN10Out +892,PortCity_Bridge_UnitN10 +893,PortCity_Bridge_UnitS10Out +894,PortCity_Bridge_UnitS10 +895,PortCity_Bridge_UnitE10Out +896,PortCity_Bridge_UnitE10 +897,PortCity_Bridge_UnitW10Out +898,PortCity_Bridge_UnitW10 +899,PortCity_Bridge_UnitN12Out +900,PortCity_Bridge_UnitN12 +901,PortCity_Bridge_UnitS12Out +902,PortCity_Bridge_UnitS12 +903,PortCity_Bridge_UnitE12Out +904,PortCity_Bridge_UnitE12 +905,PortCity_Bridge_UnitW12Out +906,PortCity_Bridge_UnitW12 +907,PurifierRichMineralField +908,PurifierRichMineralField750 +923,CollapsiblePurifierTowerPushUnit +925,LocustMPPrecursor +926,ReleaseInterceptorsBeacon +927,AdeptPhaseShift +928,RavagerCorrosiveBileMissile +929,HydraliskImpaleMissile +930,CycloneMissileLargeAir +931,CycloneMissile +932,CycloneMissileLarge +933,ThorAALance +934,OracleWeapon +935,TempestWeaponGround +936,RavagerWeaponMissile +937,ScoutMPAirWeaponLeft +938,ScoutMPAirWeaponRight +939,ArbiterMPWeaponMissile +940,GuardianMPWeapon +941,DevourerMPWeaponMissile +942,DefilerMPDarkSwarmWeapon +943,QueenMPEnsnareMissile +944,QueenMPSpawnBroodlingsMissile +945,LightningBombWeapon +946,HERCPlacement +947,GrappleWeapon +950,CausticSprayMissile +951,ParasiticBombMissile +952,ParasiticBombDummy +953,AdeptWeapon +954,AdeptUpgradeWeapon +955,LiberatorMissile +956,LiberatorDamageMissile +957,LiberatorAGMissile +958,KD8Charge +959,KD8ChargeWeapon +961,SlaynElementalGrabWeapon +962,SlaynElementalGrabAirUnit +963,SlaynElementalGrabGroundUnit +964,SlaynElementalWeapon +969,DestructibleExpeditionGate6x6 +970,DestructibleZergInfestation3x3 +971,HERC +972,Moopy +973,Replicant +974,SeekerMissile +975,AiurTempleBridgeDestructibleNE8Out +976,AiurTempleBridgeDestructibleNE10Out +977,AiurTempleBridgeDestructibleNE12Out +978,AiurTempleBridgeDestructibleNW8Out +979,AiurTempleBridgeDestructibleNW10Out +980,AiurTempleBridgeDestructibleNW12Out +981,AiurTempleBridgeDestructibleSW8Out +982,AiurTempleBridgeDestructibleSW10Out +983,AiurTempleBridgeDestructibleSW12Out +984,AiurTempleBridgeDestructibleSE8Out +985,AiurTempleBridgeDestructibleSE10Out +986,AiurTempleBridgeDestructibleSE12Out +988,FlyoverUnit +989,CorsairMP +990,ScoutMP +992,ArbiterMP +993,ScourgeMP +994,DefilerMPPlagueWeapon +995,QueenMP +996,XelNagaDestructibleRampBlocker6S +997,XelNagaDestructibleRampBlocker6SE +998,XelNagaDestructibleRampBlocker6E +999,XelNagaDestructibleRampBlocker6NE +1000,XelNagaDestructibleRampBlocker6N +1001,XelNagaDestructibleRampBlocker6NW +1002,XelNagaDestructibleRampBlocker6W +1003,XelNagaDestructibleRampBlocker6SW +1004,XelNagaDestructibleRampBlocker8S +1005,XelNagaDestructibleRampBlocker8SE +1006,XelNagaDestructibleRampBlocker8E +1007,XelNagaDestructibleRampBlocker8NE +1008,XelNagaDestructibleRampBlocker8N +1009,XelNagaDestructibleRampBlocker8NW +1010,XelNagaDestructibleRampBlocker8W +1011,XelNagaDestructibleRampBlocker8SW +1012,ReptileCrate +1013,SlaynSwarmHostSpawnFlyer +1014,SlaynElemental +1015,PurifierVespeneGeyser +1016,ShakurasVespeneGeyser +1017,CollapsiblePurifierTowerDiagonal +1018,CreepOnlyBlocker4x4 +1019,PurifierMineralField +1020,PurifierMineralField750 +1021,BattleStationMineralField +1022,BattleStationMineralField750 +1023,Beacon_Nova +1024,Beacon_NovaSmall +1025,Ursula +1026,Elsecaro_Colonist_Hut +1027,TransportOverlordCocoon +1028,OverlordTransport +1029,PylonOvercharged +1031,BypassArmorDrone +1032,AdeptPiercingWeapon +1033,CorrosiveParasiteWeapon diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index b0503ce1..a6348f3a 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -406,7 +406,7 @@ def load_build(expansion, version): # Load LotV Data lotv_builds = dict() -for version in ('base', '44401', '47185'): +for version in ('base', '44401', '47185', '48258'): lotv_builds[version] = load_build('LotV', version) datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds, 'LotV': lotv_builds} diff --git a/sc2reader/data/ability_lookup.csv b/sc2reader/data/ability_lookup.csv index b91ee5ec..9267381b 100755 --- a/sc2reader/data/ability_lookup.csv +++ b/sc2reader/data/ability_lookup.csv @@ -644,3 +644,187 @@ PortCity_Bridge_UnitE12Out,PortCity_Bridge_UnitE12Out PortCity_Bridge_UnitE12,PortCity_Bridge_UnitE12 PortCity_Bridge_UnitW12Out,PortCity_Bridge_UnitW12Out PortCity_Bridge_UnitW12,PortCity_Bridge_UnitW12 +CarrierLaunchSpeedUpgrade,CarrierLaunchSpeedUpgrade +PhoenixRangeUpgrade,PhoenixRangeUpgrade +Baneling,Baneling +GlialReconstitution,GlialReconstitution +TunnelingClaws,TunnelingClaws +ChitinousPlating,ChitinousPlating +Armory,Armory +Barracks,Barracks +Bunker,Bunker +CommandCenter,CommandCenter +EngineeringBay,EngineeringBay +Factory,Factory +FusionCore,FusionCore +GhostAcademy,GhostAcademy +MissileTurret,MissileTurret +Refinery,Refinery +SensorTower,SensorTower +Starport,Starport +SupplyDepot,SupplyDepot +BarracksReactor,BarracksReactor +BarracksTechLab,BarracksTechLab +FactoryReactor,FactoryReactor +FactoryTechLab,FactoryTechLab +StarportReactor,StarportReactor +StarportTechLab,StarportTechLab +SCV,SCV +Ghost,Ghost +Marauder,Marauder +Marine,Marine +Reaper,Reaper +Cyclone,Cyclone +Hellion,Hellion +HellionTank,HellionTank +SiegeTank,SiegeTank +Thor,Thor +WidowMine,WidowMine +Banshee,Banshee +Battlecruiser,Battlecruiser +Liberator,Liberator +Medivac,Medivac +Raven,Raven +VikingFighter,VikingFighter +HiSecAutoTracking,HiSecAutoTracking +NeosteelFrame,NeosteelFrame +TerranBuildingArmor,TerranBuildingArmor +TerranInfantryArmorsLevel1,TerranInfantryArmorsLevel1 +TerranInfantryArmorsLevel2,TerranInfantryArmorsLevel2 +TerranInfantryArmorsLevel3,TerranInfantryArmorsLevel3 +TerranInfantryWeaponsLevel1,TerranInfantryWeaponsLevel1 +TerranInfantryWeaponsLevel2,TerranInfantryWeaponsLevel2 +TerranInfantryWeaponsLevel3,TerranInfantryWeaponsLevel3 +Nuke,Nuke +PunisherGrenades,PunisherGrenades +ShieldWall,ShieldWall +DrillClaws,DrillClaws +HighCapacityBarrels,HighCapacityBarrels +BansheeSpeed,BansheeSpeed +MedivacIncreaseSpeedBoost,MedivacIncreaseSpeedBoost +RavenCorvidReactor,RavenCorvidReactor +RavenRecalibratedExplosives,RavenRecalibratedExplosives +PersonalCloaking,PersonalCloaking +TerranShipWeaponsLevel1,TerranShipWeaponsLevel1 +TerranShipWeaponsLevel2,TerranShipWeaponsLevel2 +TerranShipWeaponsLevel3,TerranShipWeaponsLevel3 +TerranVehicleAndShipArmorsLevel1,TerranVehicleAndShipArmorsLevel1 +TerranVehicleAndShipArmorsLevel2,TerranVehicleAndShipArmorsLevel2 +TerranVehicleAndShipArmorsLevel3,TerranVehicleAndShipArmorsLevel3 +TerranVehicleWeaponsLevel1,TerranVehicleWeaponsLevel1 +TerranVehicleWeaponsLevel2,TerranVehicleWeaponsLevel2 +TerranVehicleWeaponsLevel3,TerranVehicleWeaponsLevel3 +Assimilator,Assimilator +CyberneticsCore,CyberneticsCore +DarkShrine,DarkShrine +FleetBeacon,FleetBeacon +Forge,Forge +Gateway,Gateway +Nexus,Nexus +PhotonCannon,PhotonCannon +Pylon,Pylon +RoboticsBay,RoboticsBay +RoboticsFacility,RoboticsFacility +Stargate,Stargate +TemplarArchive,TemplarArchive +TwilightCouncil,TwilightCouncil +Adept,Adept +DarkTemplar,DarkTemplar +HighTemplar,HighTemplar +Sentry,Sentry +Stalker,Stalker +Zealot,Zealot +Carrier,Carrier +Oracle,Oracle +Phoenix,Phoenix +Tempest,Tempest +VoidRay,VoidRay +Colossus,Colossus +Disruptor,Disruptor +Immortal,Immortal +Observer,Observer +WarpPrism,WarpPrism +Probe,Probe +Interceptor,Interceptor +ProtossGroundArmorsLevel1,ProtossGroundArmorsLevel1 +ProtossGroundArmorsLevel2,ProtossGroundArmorsLevel2 +ProtossGroundArmorsLevel3,ProtossGroundArmorsLevel3 +ProtossGroundWeaponsLevel1,ProtossGroundWeaponsLevel1 +ProtossGroundWeaponsLevel2,ProtossGroundWeaponsLevel2 +ProtossGroundWeaponsLevel3,ProtossGroundWeaponsLevel3 +ProtossShieldsLevel1,ProtossShieldsLevel1 +ProtossShieldsLevel2,ProtossShieldsLevel2 +ProtossShieldsLevel3,ProtossShieldsLevel3 +ExtendedThermalLance,ExtendedThermalLance +GraviticDrive,GraviticDrive +ObserverGraviticBooster,ObserverGraviticBooster +PsiStormTech,PsiStormTech +BanelingNest,BanelingNest +EvolutionChamber,EvolutionChamber +Extractor,Extractor +Hatchery,Hatchery +HydraliskDen,HydraliskDen +InfestationPit,InfestationPit +NydusNetwork,NydusNetwork +RoachWarren,RoachWarren +SpawningPool,SpawningPool +SpineCrawler,SpineCrawler +Spire,Spire +SporeCrawler,SporeCrawler +UltraliskCavern,UltraliskCavern +ZergGroundArmorsLevel1,ZergGroundArmorsLevel1 +ZergGroundArmorsLevel2,ZergGroundArmorsLevel2 +ZergGroundArmorsLevel3,ZergGroundArmorsLevel3 +ZergMeleeWeaponsLevel1,ZergMeleeWeaponsLevel1 +ZergMeleeWeaponsLevel2,ZergMeleeWeaponsLevel2 +ZergMeleeWeaponsLevel3,ZergMeleeWeaponsLevel3 +ZergMissileWeaponsLevel1,ZergMissileWeaponsLevel1 +ZergMissileWeaponsLevel2,ZergMissileWeaponsLevel2 +ZergMissileWeaponsLevel3,ZergMissileWeaponsLevel3 +Burrow,Burrow +overlordspeed,overlordspeed +zerglingattackspeed,zerglingattackspeed +zerglingmovementspeed,zerglingmovementspeed +EvolveMuscularAugments,EvolveMuscularAugments +ZergFlyerArmorsLevel1,ZergFlyerArmorsLevel1 +ZergFlyerArmorsLevel2,ZergFlyerArmorsLevel2 +ZergFlyerArmorsLevel3,ZergFlyerArmorsLevel3 +ZergFlyerWeaponsLevel1,ZergFlyerWeaponsLevel1 +ZergFlyerWeaponsLevel2,ZergFlyerWeaponsLevel2 +ZergFlyerWeaponsLevel3,ZergFlyerWeaponsLevel3 +Corruptor,Corruptor +Drone,Drone +Hydralisk,Hydralisk +Infestor,Infestor +Mutalisk,Mutalisk +Overlord,Overlord +Roach,Roach +SwarmHostMP,SwarmHostMP +Ultralisk,Ultralisk +Viper,Viper +Zergling,Zergling +Adept,Adept +DarkTemplar,DarkTemplar +HighTemplar,HighTemplar +Sentry,Sentry +Stalker,Stalker +Zealot,Zealot +InfestorEnergyUpgrade,InfestorEnergyUpgrade +CentrificalHooks,CentrificalHooks +BattlecruiserEnableSpecializations,BattlecruiserEnableSpecializations +ProtossAirArmorsLevel1,ProtossAirArmorsLevel1 +ProtossAirArmorsLevel2,ProtossAirArmorsLevel2 +ProtossAirArmorsLevel3,ProtossAirArmorsLevel3 +ProtossAirWeaponsLevel1,ProtossAirWeaponsLevel1 +ProtossAirWeaponsLevel2,ProtossAirWeaponsLevel2 +ProtossAirWeaponsLevel3,ProtossAirWeaponsLevel3 +WarpGateResearch,WarpGateResearch +AdeptPiercingAttack,AdeptPiercingAttack +BlinkTech,BlinkTech +Queen,Queen +CreepTumorQueen,CreepTumorQueen +CreepTumor,CreepTumor +NydusCanal,NydusCanal +MothershipCore,MothershipCore +DarkTemplarBlink,DarkTemplarBlink +DarkTemplarBlinkUpgrade,DarkTemplarBlinkUpgrade diff --git a/sc2reader/data/unit_lookup.csv b/sc2reader/data/unit_lookup.csv index 93385a5b..48545355 100755 --- a/sc2reader/data/unit_lookup.csv +++ b/sc2reader/data/unit_lookup.csv @@ -910,3 +910,13 @@ PortCity_Bridge_UnitW12,PortCity_Bridge_UnitW12 DestructibleExpeditionGate6x6,DestructibleExpeditionGate6x6 DestructibleZergInfestation3x3,DestructibleZergInfestation3x3 Elsecaro_Colonist_Hut,Elsecaro_Colonist_Hut +CompoundMansion_DoorN,CompoundMansion_DoorN +CompoundMansion_DoorNLowered,CompoundMansion_DoorNLowered +CompoundMansion_DoorNE,CompoundMansion_DoorNE +CompoundMansion_DoorNELowered,CompoundMansion_DoorNELowered +CompoundMansion_DoorE,CompoundMansion_DoorE +CompoundMansion_DoorELowered,CompoundMansion_DoorELowered +CompoundMansion_DoorNW,CompoundMansion_DoorNW +CompoundMansion_DoorNWLowered,CompoundMansion_DoorNWLowered +BattleStationMineralField,BattleStationMineralField +BattleStationMineralField750,BattleStationMineralField750 diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 15d89453..3916109a 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -604,6 +604,8 @@ def register_default_datapacks(self): self.register_datapack(datapacks['LotV']['base'], lambda r: r.expansion == 'LotV' and 34784 <= r.build) self.register_datapack(datapacks['LotV']['44401'], lambda r: r.expansion == 'LotV' and 44401 <= r.build) self.register_datapack(datapacks['LotV']['47185'], lambda r: r.expansion == 'LotV' and 47185 <= r.build) + self.register_datapack(datapacks['LotV']['48258'], lambda r: r.expansion == 'LotV' and 48258 <= r.build) + # Internal Methods def _get_reader(self, data_file): From 3730034a9f2bf0afd9295c882f57d976710e7c90 Mon Sep 17 00:00:00 2001 From: Spencer Krum Date: Wed, 18 Jan 2017 18:04:53 -0800 Subject: [PATCH 082/116] Remove unnecessary print statement --- sc2reader/readers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 8bbd7e9a..a40cd702 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1848,7 +1848,6 @@ def trigger_ping_event(self, data): class GameEventsReader_38996(GameEventsReader_38749): def trigger_ping_event(self, data): - print('yo') return dict( point=dict( x=data.read_uint32() - 2147483648, From 688b65c161560bf94beb02784d8e619e9c19e0b9 Mon Sep 17 00:00:00 2001 From: Spencer Krum Date: Fri, 17 Feb 2017 16:46:14 -0800 Subject: [PATCH 083/116] Update unit_info.json This hasn't been updated in a while. I'm sure the costs for things are out of date as well. But for now I'm adding in new units so that the 'is_army', 'is_worker' and 'is_building' start working again. --- sc2reader/data/unit_info.json | 106 +++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/sc2reader/data/unit_info.json b/sc2reader/data/unit_info.json index 64d2a2ed..81cf8669 100644 --- a/sc2reader/data/unit_info.json +++ b/sc2reader/data/unit_info.json @@ -162,6 +162,18 @@ "vespene": 0, "supply": 0 }, + "lurker": { + "is_army": true, + "minerals": 150, + "vespene": 150, + "supply": 3 + }, + "lurkerden": { + "minerals": 250, + "vespene": 250, + "supply": 0, + "is_building": true + }, "mutalisk": { "is_army": true, "minerals": 100, @@ -210,6 +222,12 @@ "vespene": 0, "supply": 2 }, + "ravager": { + "is_army": true, + "minerals": 75, + "vespene": 25, + "supply": 2 + }, "roach": { "is_army": true, "minerals": 75, @@ -314,6 +332,12 @@ } }, "Protoss": { + "adept": { + "is_army": true, + "minerals": 100, + "vespene": 25, + "supply": 2 + }, "archon": { "is_army": true, "minerals": 175, @@ -356,6 +380,12 @@ "vespene": 125, "supply": 2 }, + "disruptor": { + "is_army": true, + "minerals": 150, + "vespene": 150, + "supply": 3 + }, "fleetbeacon": { "minerals": 300, "vespene": 200, @@ -386,6 +416,12 @@ "vespene": 100, "supply": 4 }, + "interceptor": { + "is_army": true, + "minerals": 10, + "vespene": 0, + "supply": 0 + }, "mothership": { "is_army": true, "minerals": 400, @@ -440,13 +476,19 @@ "supply": 0, "is_building": true }, + "reactor": { + "minerals": 50, + "vespene": 50, + "supply": 0, + "is_building": true + }, "roboticsbay": { "minerals": 200, "vespene": 200, "supply": 0, "is_building": true }, - "robiticsfacility": { + "roboticsfacility": { "minerals": 200, "vespene": 100, "supply": 0, @@ -476,7 +518,7 @@ "vespene": 200, "supply": 4 }, - "templararchives": { + "templararchive": { "minerals": 150, "vespene": 200, "supply": 0, @@ -526,6 +568,12 @@ "supply": 0, "is_building": true }, + "autoturret": { + "is_army": true, + "minerals": 0, + "vespene": 0, + "supply": 0 + }, "banshee": { "is_army": true, "minerals": 150, @@ -538,6 +586,18 @@ "supply": 0, "is_building": true }, + "barrackstechlab": { + "minerals": 50, + "vespene": 25, + "supply": 0, + "is_building": true + }, + "barracksreactor": { + "minerals": 50, + "vespene": 50, + "supply": 0, + "is_building": true + }, "barracksflying": { "minerals": 150, "vespene": 0, @@ -574,6 +634,12 @@ "supply": 0, "is_building": true }, + "cyclone": { + "is_army": true, + "minerals": 150, + "vespene": 100, + "supply": 3 + }, "engineeringbay": { "minerals": 125, "vespene": 0, @@ -592,6 +658,18 @@ "supply": 0, "is_building": true }, + "factoryreactor": { + "minerals": 50, + "vespene": 50, + "supply": 0, + "is_building": true + }, + "factorytechlab": { + "minerals": 50, + "vespene": 25, + "supply": 0, + "is_building": true + }, "fusioncore": { "minerals": 150, "vespene": 150, @@ -640,6 +718,12 @@ "supply": 0, "is_building": true }, + "mule": { + "minerals": 0, + "vespene": 0, + "supply": 0, + "is_worker": true + }, "orbitalcommand": { "minerals": 550, "vespene": 0, @@ -712,6 +796,18 @@ "supply": 0, "is_building": true }, + "starportreactor": { + "minerals": 50, + "vespene": 50, + "supply": 0, + "is_building": true + }, + "starporttechlab": { + "minerals": 50, + "vespene": 25, + "supply": 0, + "is_building": true + }, "supplydepot": { "minerals": 100, "vespene": 0, @@ -724,6 +820,12 @@ "supply": 0, "is_building": true }, + "techlab": { + "minerals": 50, + "vespene": 25, + "supply": 0, + "is_building": true + }, "thor": { "is_army": true, "minerals": 300, From a46e0b6a7a835a6cb6c91f29b8adf76b4c514c49 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Thu, 30 Mar 2017 19:49:28 -0400 Subject: [PATCH 084/116] add failing test for 3.12 replay --- test_replays/3.12/Honorgrounds.SC2Replay | Bin 0 -> 109968 bytes test_replays/test_all.py | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 test_replays/3.12/Honorgrounds.SC2Replay diff --git a/test_replays/3.12/Honorgrounds.SC2Replay b/test_replays/3.12/Honorgrounds.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..8721ec3f133c9867cb924484761ce64458d868af GIT binary patch literal 109968 zcmeGCWpG^0vNZ^|S}kZXTWT?r#Vkv<$YN$@W|oB(Te6s$nQbvMGcz+YSUi5teeZiu zeBZ?Um_HK}bFw2Ucdg2*)sbDXcJAFJBd>rD00IC25CGux*TG-_fFG5d4IG6X4NRR$ zBqT^2P3)}=-0@jhfG|h^Fc1ia1%Yv4!2o#hX%Q^KKMe>Bf(38C1L0wz5MY2nAW1*k z5@!}9H#91Zp_>3{4$8Td~I{vXMJ zjJyJ5@-K6A2^0Vt00ZzXgaY^$Ljg$sV(9-r-{_y1e~hl+zx;6ifBApu$6p-ne|7&A z^tX}!Ul*ePjSBz(I=iOw`?JZynpg(%BrkMhu(|2_A={aL`& zGAeW-WxiT^IW4U2m`K&9Q9#IMMUMI&DvLp4Wr;iAVcMPl9^V8-By}Fn_y3;vAOD{W z{3iqd-^&0D1povE0Kwn@fQ(eu&YxuM1m$I@%$z^*IoUIP7Ikqpa0kM`1Hd348~~ui z3IYS+!S`1^P#_?ZvWcUkfi3Jmqi@ha@F5Tcrhx_X!Gl2vU;q+$5DEnhKm!9YKu}-+ z77*|c1?xW)((aBHR{xtq)xycc+Q9k$k0gDr2^IuIk$1FnwsUg&-z)$SI1mcAW3clo<=rkn4K5`>anK)_dpu z+nT0eZdQyyrHl8LZ(hC)Gv{3uer%@G8Y|EDNRJq{V6`s2qM=&AG+&1vsz(TrfNY3`+n45P<87zR=lbW^dB;xopZGE5o z$tmi;?K8l?erv!#8|rTv{ZC;G_`kQC{!bVB&yM-3^8d;mBd@v76MQ?oX;+cyZsvF) ziYBCK&ch<8L8YW|$ht-k09@($D$C2m_)K!{>-=Oa%A{ikJeGqM@-vlYhYDw*g-IaL zGVFKoR6mLQamgX(Bwa|-U?CD2zzk`juSNExF^NdDJpAPIb6NqG*iY_px(*mV*>g9Tqmxo|H2i;2)z@D0EmXze#Fp zoG>d?TogidiLr1?pk6>xF{`AZKFA`^N)d*Pt%#$p61gWpiKcERCG2+>7{}lfk{I?V z=+2ifHG_Fi+e1SjBpx0TPL6OOe}h;+Ok$fc15aKCApuYx&a>OWPgz zLoo439mi|PT@BQc4gi9n=* zUh#p|aVTC1^r4Es2DkRSsBBD)`T+%bkbAG{=Pw^C{ICMl*g7$w}$LS1^(REUH-P!{YU zJ18Wl$Dm4a7=wie3|!4Nrs?b%g`&X4u*V;g?&^o@p68QfM_Us_I7OR8n_XV(M3HCK z6Z!_9!-s?lYLXuPYs~ZDn0@J}7@@pM(l4KcIeBP%*@zG@q07-Fr3*3}QM+TYWDi5^ zhjy=64MkNm_$Yx=U?FE28ajeFTw>%8!P{Sq*xwn8=4#PNDVCPKJ~!PatQc+z>NBCJ zlF&m9b;hWy%g-EY9rodD?Fg5>?Hz|4xgqt^8Dt7Zgo>YxitFbvgktF*e=x@-L9%n* zDGaF1%2akv`$?yFonEpr^gt)6%XF8s&F;Wd;P>IF2t~BM3dKlI9aeDkcHr_u2s(5* zA^;JfGKsMJ#-YC!*cb|jehNJgwMZ2GIl|XF!kN7&j8iI|=F=_g`5L1s5X z1z~RVw3GG`2(+q(xKJuN0?L{C^+lg{Hu+P^F)Gc&!PMaiz2K$IO#JBmVgscE9l0bt znxqx zW?JHB?-$4su7IkNthf3t&$iWwhB)2&h5u<#Rti%6q+YPPlhhVnA1DWJl&jE-OwEl9C@73~q?9AoP{wRH-y>kC>%Mlo zSuwAHD`1J_yS1?`H_MwhgKiqV%vXY6Y-wNk7;ZXeckU-cHjtGviwQ8)fg<`+gC#R| zm8WscN0hOUe3i`psIvpZ=u_%G)n7dN%&BU^Hf#tpeO`g%eD1!*3S;z=sWXqBaGNOT zqnIL=PDt`FGNQVUe+sPU%;CY5A$u2u2xF5oh+6B5N;ZDbMObbh(theP^k1k1Nt|NU zO?Eg7yh)TJ<&E*I@A7`sl*$pJzQ8lj3KxoK`z*;RsIb^qHw)ov$fx(dVXCPnHah;U zo5tY~w{-)-=jjk@MGUBC*8LF@qEb@9V3oSw9JX~R0`5lrMOiW#|>d3&G`UB{1Qlt6iX3T8HjWG?Z=TYCPB z>Bq~9cg;P2IQkL6xab#XlL`*T)Jd^JfjUKb`=HlxwYAS)d?;TG>3^+DoiJ(fJ0OwQ2o7ZP z9D5$2P~t$U9m)kjg2r6?vw*@i?~zvScO@tkxEAIqZYe!o&_m&JHZ`TexBl79Afm-z zep*Ay;t2?)Ym?aeA-iwh@=NrkHJp?%%(Ag_p{ntz(!1y|i%Ry`QRh&}aHHhSE%K;lkwACIoT1t57SSHQ0HSPmV`KpIEcEQ;jDSZf z5mojigkMg`L#(jS*ECP8cuXdrEdQ^-8vmC-8v_87|GI+p{R;x11^zbX0C?noI{)DR z0C=z@|HPXEU{fHl0?es@N2cQb;u5qRteF7{apdHav*r+}?0?>V0APLD|C#ew!y*4m z&jIGJ{tC*=aUA>{s7f+?g|qGg{KBHX$gqCL=77J!#;}5UGVGJ)(87W-Imb}P0BB(W zeiG!r;`nn#}UTVd3mhTgYu-?`tpX`S+@@K@yK9F>e1a#y);V{)T6U3G~jEW z3|W7S5L`(PF>ZJTBLEt%1TH9<)c_5Jf{^?a1$9Q##Beq)R|H^yAlO1OMDxo`9TW*|^v>!pHeTjV`gKl7aYyka1joD8 z@q}$fcPlU{no8I#66jN|W+`p%{DwMur*p3M2vNb>t0VeiFnx5;ZhJ2*BI&P7q^}AX z5;4?Z&R4k&L}-G;SG`|LTlOjwekz;9n+k%;w$qln#nmdF)Nkz82* zP!(=EIepoZ#ECQ}iOsSZg-K|&z}dU&NY=W7Z3U(Gw4&|ykN3dNd}r+0o({DofB{4X zV8>jhl{A0(Y+91IgB!`WCbeKU1ZuTksX=NnN#Tdp(vaf;$u?-__)Ca@eeD(=o6hlV zpKXh$`cm9VRJPKH6TUU8qQz#!x|UkIC=Bz`#7wU{O4swAapPZjOz=bdlv%SIMHO8o ztHe;G?3GxzFa2>wKe3QC5IQ&zB0q&qt%{|ZBH!qzh>P9~OKQSm76_nWTAGCFW&&`d z14ywF*L7#6xN?5ZV04ImA8YL;x=g?)v;bYun;d_oHs_70Idl>oKd3b?Cy9ZvOaT|g zlTjiy6`Mwxez< zQs@Lv+hH6OT?BkgICdJjc$NJU_aivqW`cfoel@Rswt7ZxWCde-ocuF0w$6{lq%0-h^*FcSQGxEnvx0&SWZ-W@56etu5gb~7X@e@pyc$!|}Eg#13 zeIk2G48HeXpmG1gi6~THb4L2f1PMalJb5`&-0lzm0ErK(h+=`x;r}s_UT?_T{z0~=%n@v*N-N-=^ z|4!SQ*W>ZC_lBKk?cM#^Mg9^VeS6&5TCK;Up4Kk^{Qy_qtS@At&8US~hsTv`sVx;@ zVMt8C9Fjdv;tR!sNyWjY5bCcFE>xNkfUsIHXHo_Gvd>J5<==vOl&1JGEpk}pIQXf| zsnGw{*6d=1GRPcqvle-?{ItIym{cj$IWc~$ekJ+S#2HBPEuE<}nHjh&CxkD81fdER zrV@-sM#dMG|Es~X5D4^aH#-DkD$a_``nPU3hbIv-1jM?>&sb)KW)FpA7KUz9MTydx z8c$~yP7(hMnC36_iN9lqxbrKy%arm#T($uL(55^V@ebjMNj2MVO??{7tdY?&)%_nWJcd!DNzlxTIUU;QWfRj;UNQN zWN?2JX5RrOCy`+V;EIviJ%Tf{?;x-N0(a0;#Sl~x04RpU7rihQ@b|gEkSZAy)a@Zr z+dDHy9YHni@i+e^N7)u^Sj#EwnK4gT_i>hK)5cTBnPSEK(oqVW0=;q|_Q@IP2stH7 zi#!f~IodWQOb%9ilk5*4YAi?35UHt$3f+$sB1lVlfpj4u@-nh{@)cI~4P?}AeMRe| zKPs-HX{f-WNXkJcn$LhF(GXNnue-K0sHa9;1Ae5m3pPO3mlngKk|5GxQa~Tdx4#{d zuNL5}gxiE9QpEwtHDiZqXW1|aDMCD19DUx;sU}5tUQebgNKXKA|n0T)}OTZ5758m_2FA3kqA^EEXA_sQH;Wx z;Yc77^tBcA$KiYn{TVkEaGRSWBLIz<+h8$S`+levO}K2_BJ~@YDoTVj%VW%I9TM%KEMS z`W_fbkG@I%DZnXyUr&VvH{$lgq${RLLHw?>t%1m?A(R5xM4f$poDImJfzG2r;!;x)5}6I*|eAoRIeVM!x& z6ieQt{MVA*5^Py%EUvpu{YH81{FX#*s;xB!QZjdKymkP-T2!)2p{)sKkD(JgkbjIn zzc?W__JfhbCS`3f*w!F~O70+tc z-`bY6rZK@hI}{qJlX>Xxr-zLhT83i!t0_S*(cG?(XkNCJzCnv!Y$36eNR!s9?eGCD z=YkYt7)pOJZaD?HR~!-{#46>9>VuO@+WxJxF_W|VH`KV2gQlf=f8KA(Z;E5m4X`v) z40p`54R-9N!80W_5&@bxt{Ey?ghrgFj!&LWN7YG2?eX;`K4Grx;gu<9JOF@zt6>F# zv3=`Oza?|WQ%79RxkuLXxN!{`NXs<04+^*&&|=xbj_5`*pA$NYFvP+;*29&tsGK5L zc&AE%Gql>=9yX>T6#U=Z=#rb%gUvaW6=(io(?EL$5G)3v#XqC#}cbxtP1&0^w(bID&lh=#(ck)$Ig z0c7Z~FC~jtyt}_d8xmbp5Ri~DbhjW=JGDaT%%~z_K%rsr)KXKD*xn&su#Wnq85F@u z0UZVAWsfJ9ynaxyKuF7EF$;VKN=e>=N^0oc%d=zn&F|9E>cxpyp7*`SRUH^C2`~9% zXoY#f{Uc~Osy5fo?M%Mh0AF&N*t*{Uh-j3}ZXaD?A;{KTL_fXHP5rzLXW zwPa!#xB6FxCEQ=`pqQqn7$6XLoEJG-KqzYRoO)w8v_hr*v(OjcAsqoA3d~HA@Kt9( zCQhGPs!KUc`q^DJnMg_KF<{wmo&*}27i@KU8Nns>*)*D1rLjyv;fX!jw5Eu%IX>x% zg@9h@tRz0GYScsDmKA1%m9kA;Aug-NtzOJ{ZtBu1y%!!W zCWe8kOC+E)SQ+3<7AWc99~72`&l|+1hX3vy^Nj$clftj;A`B9M7C}CY3fdFwYp;Az zIOF*)yy5jZ&98H3=Z2pV6%jikaLx48ofWrfX+dpp)b>OJn?)GG_ns5b20 zIbBuw(R!EdwUCqNQ|3HaD{b5;wse)|MXsxS3eThgI!Xa_nNTW(P3n_`WD+YY?V)I&{ z+Ts_Zp<$E#bR4GImtDR>-j{v7y48i~vZYJ8u9K$=z1nzgo(;d>mvBllcSYZM-I5cO zL~=g3xxTx3B@>XGUm?=<&E#dbs4p{{mE% zVsKCRgKmk$-9lYH5i@Tf!p#jctlduNqk3sSS!9|6rj_t~aey!z z3Ti_;xg!3& z2E)BRz6F7WJgqTXt(6MIMUh5w=bz*o%JNKXc1iAkLDc3|BxTU7L;UD3$`Y=+PEjd-Btyvcr!~KN zo=`rJRBH+=!kbz=j!RPKk`%g@%-G?lib^AtRxaK)6*vDcWhWpSDuQv{rUnn6Nli(P zMVJUX!fy>kcEhBorScl~c_X!kATwScll!6|nRiBp7dVWv^p>KsEEE^v;P^SjdJ8%k zuS)(4o3gCYhKB9AulT$jj<6ksI7LJf5mr_X#kEdy+r^<{C*jok(H^Cv8ZQ$uA72ZG zX)0Y!5Dus2PH1L>BXl?m)Ecmz;5AI_98>k3P_aM)`p|4}RAEbgO&X7wrOi*iFuvFV zo!{)>+jFoHs(?iVyUDCl4UXHB(khZMxk(WYC<$x*qj*N!-?o8R(w<*p!%P}QuKe+;nT~np+DGes|=sp6Rjp$pIw@I>KBjOl8y_^ z2mOYE?W@NWt(A;4Dr%n7Ki=fS-eUKRTlWS>bDA=3OHgheo3iS4WvqB?St!H9!?tWH zM}(N&3?d9;@X97i3Cdlleh5t~pPy0PN!P_TnNcRhdLpJ+ zH~HL%C%r{Aj3pTv?$vt^er|DX!q%1E*pYe0(<~8`M37f_mMlWGEX<8hCf1r9s)&G_ zpU>guwy9$usa)`Azc~5Et#2ZnepUStz!ba^afzS!A$@doLFd)Q@oly+(Nsmpmx9*us*_kY zSEk%I`?N+eru{%igV72;Y|D2daqrm>#C!PwHcQ0!4tC8&|4AdPZ!rAApKH#1+JN6!41gl%@de`o&R@GHj*O>8t@&CT=aEzt0zhnRY+SAv zf8+xRwU<&-%1;OKb_){G77GV3^SiZSlV;y4Z^DOj^nt3YRRF^Z?Oi0x2QxJTo^pX9`B@B)@=z$E>X5XF|Cz6?3<(7kW)QIik29 zIT!mmhEm7f9BaTJ$5#6KbbpkhY9ExOd+J1x3qwevkd7K^-|DJn5|Plm+mU|@q)m=d z#7r^rGg=dxaf|F#`k(HHA4r_A-m_yfcVlk^+*B1ZC07uk7En;C9a9af6{y>mC15( zS~3%A8mnZ^z;4;>B80gWAr+aV!4FXlRmc(T*9fdz*J#eTo~ZcInQ+Fmw@LoOQfy?~ zzr{GMak5ILJ{N_u=Me5+y3WWcc}b6X;P$B_pmo?{exWNtQc|&)%rCO}IK{gBce$I2 zikqp5inCZ}x%Uz7C;k8jyVGxnp(Vwpqm$D`ZPF=)hgs?`Pf?Ua>6bgaLk{G4tlLs7 zOuC&?xo$PQh~Dj|&-784?v2{TVJb#EL$jQ!RXS+_!bKL(K+jt!0Du z#i4v^b!=lr9%*S1hAYrKu!)&m;MMI3}HbZ-r2c}j`RHeflpPQ`P~Op6i!!9F&;d*Dgb z&G(SS{wtLCCWZHnzXVt-5i>emTF3KX{^*Z~#x21P1Lc4#PSwrMoZT%k=sAFP2moAm zXwrrn22%!LlJzS}K5dI^)6vnQng%Sp4E_4`%Oh*|5+}5=(Loc8@gUT^CIm z%};O%KkwK`YW;*vS(bHk>+yAUzhbZIX*DD&u>!7ZSp-5USdD{)!JDHN3($f+E2j6Y zp{kE=RT|5^K>`4TUr-nKG=e@R%pcOW%ExNTd&IUkJA5J{l%ZNF%UsNi7ElSjkPz`T5iOrDD} zKDSHvkca?D(4pkqRX+4XrQ^)hSeU5K+O=`I6%K}1OE}V(4XOduB{{k_3xl3dH3EKZI_uGmy`t4ZHs(;hum zbFWBpNzeHyf(J)^?m>gI?Ts-1CxdF1fw}Q{L2d2gVT<>qnTX;6$18%^SVy?vb?{2t zu;d5p#(T@s^7!yubAmIopPduMae@6egs~nF2zYzJv3<(Lb-YMMV(A@Lg zCtZbtrSk{uXVnJHJqdWU_)-5%2|sQcb+JpITQ#z?H9552po{PA=Z{t2w-5FSUN#Q} zjLT1}U$F`w%PMeFmQaGF?T}BE5}woW-8h;bdw1ETe^8lU+8H4|bHB8=3yr-YanyOc zj(>i>;Xz(ZJG@q@_n$>NaXjbmsGsq{DsTyAsNl1~Bqarrb`6fay-lNm9^*`sMeK{| zt^L}(Tb{9D(s|@e%8s`dt8)VRSyNgLX^$DX3r~{LiTRo{D+beE7unH~Ch`|o)Z^8k zT8nU#xs@`FNrHR*fLFE@VlgpR(h2u16nH&o>Al#a+Utj0!JTj#37^o0qJK>cpYTnv z+bv!5j)rD9f}H0#foymf}$&KAL5tyBgBL8ko5-!jxtF=tEQf(=3Gko zU7sFh3)NbTxga}fb`v*1RSHI1RhHseT*P}o;0I zNT~?A#04Knh`Z2D7FvgeX3@B14$;pyz=ngM z_??x7WVTlzBl{On`SSKOnVwg+IDbu18 zghP$&Z2-6j0fQi29JxDqVVU{w)pIu|R>oYVuxWL(j}!O}Ekh^Oj*hm!uMUJ9JVmJ% zDpL|ZUcVw*z~*tM_E$_k70UJtqy%vUy%_=Z4J@{6>l(@k`?ZJ#ITWm@k>TX26|xdX zyXPN!C1sf5fbdv#hQo_(^KdRoLFo-&MlG&b63`=m?%m~*b$HT~R$c7uXh`9+ksS|* z$>#15;N;V|Iww>cWw^rzK-{RR!}3mC?2(;=(Z>}IFSzjRc65_RWuHj99u)~RiCMQ@ zRx^^6SIv#viN464d6(~bJRBE z!x5tcOaq;}vR#|cvKW!wohrRuTeJ7{Q|+Zl;Q&R#t_e1(>yUn$PubREh~aItpuqzD z+1o`}@Kluhiej@_&sU)l#R6JuN^M*&!`ngLa7>?+QJ{Xvj>~?wqafeMSiQqN>1%ep zh+u`~zU@lq`s8Grtin*7*9tnxV#$Xi3K0?9`HW0OHk#zAWLmUG0p9cLw`kV|Q^5w9 znqJ)E?J>)CM!J$h7g_5%E`|p><*ra!XEU`I&lnxz!c-#DmB0#c=&Ma%sF5DeBr(1d}E3dAekE|BndC7`^C%uj><>|^k61jlUuXH zTbZvZ^PvlU{^IF`jl zu&*`3?Y4fgL)N|am6#ArhaXbkYrf`9DLK7Ku7F?qfuZB=t1a24FV2XVYb};(SW}wr z1&NZszv6T(tRLRC-gyss`fOy~sk>=py3M$ionR#si z#oseZY;5eeA>k@P>Iqt312AxIGv-#KQ(|v0V9n`LIah2Vs5yfxXBq5=RiTCf{@JhZ zSspDb78mF%wB@d-WZUCVU1_Z|Y0#x2|4y8mJ1eBV6sUX#D}j2~8P;uZT8T}+O0}|R z+xLazblYS8oWkSBo?1jmbL~xe++jfJ!|3oRnvfo#)jw&5=$f2T>~;k?@zR#Wx$F^X zzEAt1+&!6-E;^U<2ONki4W1J7glm##-Q%kTHVsVq<1gB?weKGF#OEHU%o!p=oS#LX zz1xE$x&&#ba@^2*nmsh|2qU%aO}~~rFnqm4jhXH`<|5t0v-m8`gSSm~Yfw2AwZquJ zs}WEc?qxg&5t6r^r7r=dfw2`O{4rURnM{YwtpGV|K{|$ylO)=!rrl@ryp}u zAgt>yIbwg&L`%7aFm8HRPdcHi!SF|QFmpHT5%EgHYNz%byn$RlwqNofvt>Yl_{Yc5 zTrO|uz6Sij%AxabL<%mg998FTTrBg@V|REdIsKMU&P>ijK$`mwgHB`w)@&=G4)VoUCT`L48(cAB|Pi>kc@Sp+L zLH^`7K0$Oba}oms&STpWcPqp{=qu=MquuSz91vOZph_vI;w4EbIU4&zqg(J)SPYu_ zTRC3rSKa9*3t3$$-$+ZVl9p4iZw@zjS8-sZg;9Iw7Yj0=4d3>N-ZOquP(AIISo+JsQvOJq#vp_uzCf0p>3MexsdfNzF+$#7wY(*FLQ6{5w3E2`3_ zi!U1!l=M|!S$UNKWqPJSqGzD~=hIh#B`tfO2OTTynb_I5d(DvF!HGBHyMjLXB(>ux zN>N#d&=0O36{N8SpKJoYd@}-FnnUs1a(Jr1d8b(i)9%n&Kp5fc#Uiw7yy#(7mo zVXC7tzCn0w0y&E)HTE6Fb=~^eD!_51n%T`{-PEY8=1Kgx9f}LgVz*U^^<<>oMEQIsNx#3>DYTCTDSre-p0otLIi*iOY|>R*{)FUp~No_lHEj;3dZ zzAP&Jg%u*bYCZjYWILiGNbQj8UO=^rLO8*azbNk0)FHcat65MmFkos*RUR8_8tNt* zzSaC?&2}4?Y_OY`c1wLD)k+HAPkD-+$Yjf(dMy&%Y}MA`Cunsr?i(xJZ7O9_J@R#j z;B(S51667SC+@E)-lXr^q%>CT%5x`=$wxsGh!h8RA<2R| z|DJ9|$;2{#WpFbneZ(h%TU|MO97$_&{TzHA|L)MSI(k;H=h{I}yKn!F12ae;PbCri z1-JX;hUkq+h`H{UJqXid?N3WUBDte_qZB_Jy^;N*9Z$g?znDj(7V! zUya4a!3^=>72n^m^T3^DT-sN#WSyW!0VByq8viY2fb9nqsoIoJTwLY(+4j29v_}RE zU*jlFZu4jI5MNgK6e^b3I${O0UWclkN!>g*ze?Ntu~Wp*x%QbQEBCw36C@DQB7RH^ zoxFj$_8D3phU^dTbWUCOT~;=Tm-9W#!U3cblJWfb908>C>fXByB#LljQTg) zT4FLyb0Bj|c#G{TBPQj@x+~$tbjBD_N#-`;j~hn+3CQumaR{rN=af4Uv6#(Z-Hcwe zLGWP)N@u^rv};wZB!*o|a({@e13nJ)muGb&hB&^WNiW}6l#<}#lgCced6c9T)DY1~ z;akc_?klWDHmuLTFJu2`^hEEWeB3qu&PbV%Nj+HfrP9&i8(W}=*aX?oCbRXe@Udc^ zZs^M~DTA+9fL@eOx;EoC+}bsA9p=xu~h{?2Sw&q>qBn8)J!z_GDoRx?=L zU7xw_so*j=f_;X8Mn>R+iMWx~cU5-Vw?*8w=FFhcduj9?9gH~=fPOjCKN8k(g;Y00 z#+NuTxw^FIEzwwm+0u7xKedTRbXdl~M*iR|JzBI+w5R0=D-0I@{R`IV-3tf)gIXoRL6O9m6`aZa>jZJ* zL7ksm2-uWIhpK9-py942Bg;t7X6N9gBTI3xliA0j^ zzm0I>j*g6j1@AUg|J@f$-ZO&$$MItyLq0F3_}x?2G<7)KU546Tj)C>yG>esIeXNJd zy6#mIQ-LT=DrCVcPfESA%d~G&%3EAJim=_HrN%`sL>FHRy}5{+K-R3=hACy;Ic4{8 zo2q+*vd8AD<<)(w;(T3&Q*u9Ju#W0T^=@;p-5>5x!_oL}Xlo(xc2H2&S9B?`$Y>0h zZqil#;+tGQSw(lst21~YqYIsTC=EeBI=ZQ~536c2QqKZ zDcSZ{dq_O>KMr^-eb)Z-ZWVg+%gNqDK6`7Sr2gP$!@$76@lI$y6lOw z9~`j`U{6GCL*~htQ0xKX2PW_MhXjj92CkFxIaB5GN65!_C!o&agOlZhcwg_U*3r-L~0W@yW`} z>=fKHcLB-J9(RYvd1bzY1tTgQT$CtE&KktFo7Rf^edCqCpD3z&mQa8$im=A`tw%`5 zWw67~zO&(TLCF-5)*E4!^1}BM=MPtv=Z_#0Dk35*C1Pjz@%{JZuW< zg2V;Pa(LBEjVV~tnkABQnG37+BS`T*rxzgpzqF^;M<4nEZXcTGw};C|K77UD;k8w- z4rqEYJDo19+V7EzgAv>TsqivzbiBCL)9_`9LFg%;L^FFBPn5h$XF^Ew4`m7v4mCIPvp(QMg6x%(L1u7%bE&GSC2g= zvNj-4l}F!tAnB>~)pR4JjjpjC_m|QzZXy%o26}R&tjuk*U z*rkhX5asgN_G7Pch0#iUF8&$DSWc(L#`>1_PKNUz9UVVUiLP;$nkKN4VYWY7DfE~o zUu>yB5AOd~?#DnTHeOi^^y+dWn%#@wsgbn4(5lmUuX%E^PzSZ~e`>9v{8>@SNZ|U_ zy+6@53BtfQ+pu!U4=-b&+5kEcNElXkUvpBuNNP+WlgfF|)XKkUpX*RiL76)8ibR&` zq25idv1|wkBqFPK)?1?Gr^*Z&f=q9mQVMH`j>jTn!yCcI#My{*&;yqY3;fj+KSeXd zrWE#7BZ&LI9I#3`b9tu?FUgIqo4yBLJV$DQ8mV^&F`C31q@ZZPTKV75n@Ixe)VYYO zfQ5oS!EYv!pFiYi0V{qeJ?L2)#nzT%bYl4+$cjN^y{G4e>5@966ny~gBQ>1l4xjRd zYwuaz>ibMNufL?)IY~JBHWY~YJgt#UAXfvMwE z8mW!uK3U~g$Bh6~dto+>)M*2rPSy}#Q1meOhW&(3gN3Z4s3ZpsI)t~HIb@0iDV~G; zQw3)fFS~h9Hcwu2*y&tX;GcaoG;;r9pZ5p~ITCJTw21E>MkIDuswG@|#!S7s)Yl{e0joO-@ zbi|9=7cZ&b&YLIN4v|aJ?_hjS)5@BdHe4(Q&1&Ltmesj4GSv4CYk;LC?ePma%7Vxg zDpHj*Xytk`?(e_nKDG6&kh7rmXe8NCD@-1j8q5*!wx`Lhmn9rf`s5$7Cs{a)OVKA( zr7rcE1=)sMTe$>`c`$h- z^>jUJ#ucg^T-qsLkS?Ose)bP*`E4qN1GA^x-!nvIxRQ*ul4$jC8er6K6z^3BPAtE0kz2R%BjUB4Nbq z^}r@C(X6@~Y5s9AIqxBBENZT^Bs)fi{Y%`Zr8{EsGuad_Z?+z?OPH-x#!SQ1b$y^- zTA9H`)1QMg?I|PKxhnMNpUWg6AOs)@DZpX{AOH_)RF)(O>`b8oF^BC-1TxdU+asvs zzv-1Gbr;^YQw*Db>-R&J#4t?_`s2aBJe!R3X84ZqGnMU&DyJQp!fU0!`;x(VlN~?n zX@#FdGR%?j@>50;NKb=k;&vjlytiySUI_B^;-gy9qm2@W0)bU#8glxmXOaU;I{?q# zE=;@f8h^Pc#Xn^mz05~S{Dbv%vELBBidYWMiQ_(nc9dCKr)}p&6YitJqUxNm=0|CK zM?C&JJb&P<#YMxhob?6+QSg1g^P&Qsx17h@3e<}2*Cky3%eUOYOw(#?DfK>Am-XgP zz8ay^ltXC{pJ(_K!3O>AtH!-@NWh`=&t@CgpY@T(5fTT_UbBX`@6m5Mt#}cvP&Qvt z?%dY;T*b8gfb4+`4g}ZLd+T>FBegC;Y-(5t%4M72V6t z`Y9fF7gS`A& zc`~lPE8>vgKm;BaKxgiKMJXG^i^r=`Ox0dywR+fpC|1)rUq)`mTIpV&l>RM5Ql-^e zbzK*PvmngUltRo>tgnO3pbUejU1U*0gM5tQwV{TQ*Gv+E!$0@1Bla3+&maMCRM^Dq z-3oV>WPz%ItKPtY2+)z`cxRw|o3e7&BjaR2Q>Rn*cCl2GJD;{Wx%@!Z?ay^xd% zW@gBgjP5`1{38@KP-AFt=fWa;?ejUyh4{w93`G4zBi6LdBx4xbQMb`x#i)D3g#-qN z?F(fV_Go=cDNVGm{v`kaon4%fI8U?iWPBd>-V|1hg%bD<7eDsHQUCJ;^3hl&e-Z zhC_}#iD-zw_KN5ABKRcwp=0a8jAJGc0D=l&A?D`N6G&jj5?G1X!!ArWe|ua7G~@(( z({WV)Rd1N}$Sru@Uo1SEA|~WLKhfz~RM2%0fW-3to-~_Bvs`tD+r=#Pjl5AEK1s9H z(7v+8+RlO~Q0;9OnK>`wSGXkV&lYrA$`5QjTi;KgFnX`q^iXOl`A-{oc#@7a8*nj$ zBCchHM~`mBZ|22+$i*L&go;fam?Q;00SUuvH%dpy=-T^3?1NV`c=FEC4j(?(R{CSH4sDqWQ6LQM_eF?k)ISB%)FuM| z9`6;Glvv%m=xf412?wXHBzxEO(6h%P4oHw-geV~e=!9~TM&0ET`;qfO_NG7Bf1vJA z1^~DQ1YdSJbH6qnC#;)-9>pTU&WPYc`_NzI4-uKNT-$@z`iB8qYr#$y@6Y%3&QnF zAWnnb71D1Y-JZJcC?&80C3HrtI}QqW3zRdXLUf#%3!q|hVYINV`OzR;BvwtXv5QaH zKdB}vPGcMV`J#>V3U%sabJ%>|qtG%iAxK)nve^E1gE^0R1BDdr@d7jOP4h1@jEoje z%lGD-J!V+a?LPhu4~cg2=)r=2AN+*iGT z9dS_qNe9;#k|uRA1q|Pz4@|RW7TDGEbBW_3HzUJBE(K&PFoqDvLXRx9m&bx)_|raM(TU(Fki-*=v0BxkUt95sL6Gtyl}~Y{Wd& z-cx~qKydNRJ)XW06-1iHuhRuz=}JOmHoZ4PSC=9fIq6XgRRDu4$>^s7u53a>N#oTHcXWC-6^d9JiP()H?TOEh ztkMdv6r0^Cp2m-|Ik?yy{_<^a7*wFd0nq%yj0#_(q9>-OtUn^FYwDiVhoRbzSO^Gy zh@I2YFZxza&A}bL^Fl?COS@sV4HW@pY_~VLd{=)8n5e;dU5+_;UjC(Zz?umx z*EwPIh^a6mb}C}XP_*Z#_&Z}(a|Z%o#FY99z`m-9-F!gw;z~8zwZv1w(#ad;cR}Uv zOy628fCD7=j`0K4&fs&m0b966SiXz`lZjGMEzz82i!4kk3JQ@F5(}dw1xN)|K_aI> z&}!6TK_Fwkfb}(Gg4!!_T00008fB*miZ~~88KHQN=pd9J}bE>HqxIIUC021jua5@te zfHDB1KruLa^lk^L08k197aV|u5FNoFP&gi)z?BprsSqSq@H?Oqsz|D!>%!Vn001Ye z00431sse=+08l8UN+l^IROlj_0RRGNkN^M#z$O3y0GeSjGGHc{nKWRSCYVMb0BF!? zGzNeG0000000A%oPYMkXgwOy4Xwjem000q*iKa$|nhgNZ000000yMyejTsF90MIle z(2M{k02MzI2r!u@(@hj2o`3*=01zT*38{q1lPTg)O-#*5dX1EN6C*=SG}tudV>%&G-T1VnHmF3L?9vr2++vX!3{J|QQ)VkEA(t4hVGI>p?X@tmR4XA0RnrWj$H6Er$ zh9-tJ10YH2r759Aev?o=N2v5o00x1hK+tG3X`lcx02qJ)kZ1q{Km!m1KmY&%qd))v z&;SD?KmZ9fBtSq2009jKgG~Zq7zk*y+pcR&KlEo$U4PCHpkhk!FDSB{1sr5Z2!w!{I&1%Ch(r?}yP!kks>D%HMf(~Ep85o9G$r0_T__PG$Tv487vF^?NZBuz@OZH}P~?A)9+$cHx_c}Q zA=7PD8Stp^_F1(K{Qo}hRCTv_+(y5K_nPB%w>K-wJEj~fE@F!ma2HbkM}u*Hck~`6 z8~ojAXlit48xjj5z!VW6q(lu=Xibt!Y?e~Ar9>2fF(ikz=P-L6b#mDC*nlQBK^YWS zw(4!jV_O<3O=QJljj>RrvrA^BGgii}&Wo?rhDs$^k?P)iqxcH+zW>pKar)k_xsuW- z36e&4$QkE+P}X7+89YN&eP^%MN_g5l&=sHE zr7_fObZu7e2XdPhZSYp0O>PV@zojQ&P9oDT+p|2Rck=w)sXQ5~@2~G2!-H0pr&89V za^z3alH-PI7``=qhfR|smt814yPEq)Iri@>{gPDAX+8~#6jFa6*B4V0ER&6ApFrL@ zx78(?X95PTlJqWHBFmq;X5#~4IXW9M%lXyN;Z@8#SEOq?W4jkk73%&ODt3Schs+p3 zn^%edKb*V&F1{Oge1c-)j)OfvTuGe3 z*eB%@WKQAi8zyQ}L11G|CKD=4(r_LbSW+V`Uc3?u?hJY1F4h@<>3i_Ij$$WbpuYA4 zWTQs!WRBkwuMRdTp>fc+1}m~;y!B7q+| z(Z2#N8>hz8qu8cmUh45y25=0_NvMR_rpf$6i9WabWVFmf{MaAub<;!N*fSj-uQSOu zEQeoMUWmmoVF$Md|IS)$2jT#D&@4|%YY>g`jt_nUJf;E;P*F(jDxxa*dtW(gn0ZDO z-TF^t+thpNEv~3x&~v0t$v2!OXY?f=Iv9MmOBBO~VGA;0WDlKgQ`G2N^X6gSYWr`e zgCAl1AC~KW=4G*;cK#za9tsl+%`%cKu$09OwBe*53nxIOji!wcb=N7GGBdEIm({)t zZ7@7K2=b=8qaMI}Lw^SWeov6u7C2g@Gf=08X(^_3uO8baO^vE+e&qzRZ~5UYkY~wAAj=w(UcIf zs~CC!P=pBVj6RrUAW7s{?;IJcbLRuY^UZ)4@bh{vz$zmH#5M*pYP1i_-`F>Q`K0DfKqjh;cbWs;lD~iXFn(Q}! zTdcOm27(JG=wN=r1-{>~;(X-0Z11vBKQ8j#vtw8Pi}$wE|7TyLuJw9bi>6mK+9zkU z$FsP?pYAltfu>EXIp$ftn}o9>*yyKMX?GpG%((cM(dtr>;3zAa&$RkCQSPw!x>pM? zaa5+&NMeIe3FV48?$(RgvK~Yb?_r}?D=9ycGo5GNsxN)YXr}zmBafq6pUOC&0pqPv zR8yI06!xjm+Km@Eg_8;Cw_)!uJ_wq(@^1NK9)bDz!-?mndGqqr_sJ-c`OJ(krT6G(e+ zCGdjzTrGjIu=IY0`{o?EqH+KN8UW9dx$T9OQv6@i$=p=ZeLk{VP7vE-43N)f?Ev)wz`RAkw|#k zYL;*`n&db}T$`3c^8-+U7A%;Mm{B2cKZsy#XM!EUT!|PG zYyCvT#9)N|EYwpR1P~x1VFD)92M-2~8Xvu1T{oH= z{iYP-bP9$xX+D9Zf{2(As-Y1P5fPG3Nb&&mdd|dQP3!QZAZL4Dh7%``o=axx3$@)e zq@Maab#n%)QQwQFMWCAv&Po&Nu4UAv+v=&QACffqx(mMS%TAJ)bo_z%7y!)wc-7!! zUrFvE9|TJ&@Y8u@#uuLLffR(WwrZAC-9*#unxtpyE1ucLglwd_v%*f>tIuNj^q%9| z1CcDDjK^H*#qnK1XVo$E{gbuLC6@}ke~MIiXr?fy;S4ku*tHVoPl1FP2ge|95CPPZ z00zJr060%!Ht)}j#>RuN+X_w~(GcMrI{p+Pt!`XU=E6L_J5(EHoXlSy5su@+nd*lz z+6C*DtEoN}OcdA1#>+k^LeVLvG!ii*jV^x*_fcWeH`;kCO!Uiw4?Op0i6(VQVV`u; z-3g;BZ>DEncb1_xSjuVW5ro+~#OaQ1!p$znL6nEDQEn$a76ciHRSd75TWbV3>8IqPKfm}83N627dky7VB|maNTn%VrFe_%tm_be>$VP6Jhqn z35g6Ol$7B@!ujJeE?bU$0H}rH_R_i0HPM$&?RM2^=&&wFo}4tTRlM4P!-_PB<%N38Gr-o(&)`=wMp_|U+1oxe;;P#D zheut92C&5mvlvYvLWWp>s*2tqmm9lOLc^vxn-o2(WQw?1M_$7_4!@Xw{ytdj6g8jOn!gA1Rjru6b#rAP9`e6Nl3Ph?xGOtw|M5;Yi&MP zgZ^MXfysaH%#eiLljH0&b#zrLT6hTwRvUzkRVu853N>!KYn_Vgwwy-~hPT`w5X%#d zn^w%H34kL$AV`iy1qA)fnWDaB$uusI66*oN?0Jvhw}TF`#e69bbq{RYGRn<&v_>BZ z(H`1Hl*pcx$N>dab~HVC6;#@4X@?i*AH&K5^SOHvVyu2WOpoX-Y)V453-+ao?y4tw ztg-*69ZG^7Jhj*f69iTbQY(o@NNr|dz+iJ`7AMurT(T;}3+igeOiM3^(bqk)>uR0S z(uQ7-GRlYfWTW&p*24$A_Dv8i-bOtwfjJ1M|`Ub`Q@mvbQso}?7rz|lgj3QVAo z%Yg#+e0>Ic_RWBt6ZGQps&f-j7%wwYkwN_=XSg@5!qMy5yiF+uPvS3A((zR&H=m!l z(uY?D^^@3Oyd_v)H(LG1QPmv_$If4XPy@bv^g3P39T~`~=M&Hkx!lB_I`Z-aFvHl7 zGor##Eg2vUp@~2U6b2rt_;Db^Q6ewM05BSd?3fE=gtkc}kRTd`SxHF}4v|67U=q;R z6oEn3)_|Ihw!ML4#oSdTnpqpb0zk`2FV;s%P%uR?5-=~BNp)Gs)7vJ=B#;AynuI_q z0^k+GZ3#WVlM-!kc9eiH=aE;)PI~jb(qmD;qZw_o&^Y@rIEQgJH+)7o z5i409EySYE3@>8|D5!^WAq(158nnr@Gk_++1Go#*8Ra8U1Z)pK zPf?JV1~lNp1QZbs2pRKUW+ScL_cPm60aALE(5eSu5yT!ngSJ^z4nf6rWUko6HB15O z&tt97z>+$ftJ>Duj!mra4MWY25S_V!b1KVQrY`l`+u_y+F&zi?6T~&JdgLl5|GQ_e2u29Ry3W{SEgiP4%PpJJ=Cv*%=ujrKDF1L1 zr&E@h{N$ohpOi>(u##3>Z7?&vvcE4iK4D89^mX0ZY4o2wrFmgr6*upvT{!ukS1G)< z?L3393AuuujDjsmf*OX%nLeP%327ugbb+loS_m(xCRe(Umdea)7cYNXO(NA{F)?2- zsfs^#u~cVX4pPiD1z=zTIfM`)Vi=vUy8xS4b&R+Te(PPx?A%i`48&+91s13!Sk5jE zXxNDCu%U_pC?bLD`FZ(%FJH!*q0;mEN2DXg*Kqg)>c5cpf1Y%U79j??97zR6O37GW zzpTgP){`is9-e83UDRx5Kmm?20@3L-)DT(w^?QF;kTq<&NNl%s2fQ?(ET1{EBQc8k z6hqGO$Y(};Wu;LcT-n&`de-tL1|dszp)Ej=u$^%@BA`r$;yAd`kH`#$P-n&*G@F!_ zoDY^tVkYr)NrTcFDAA%#Lv>e!4Ty092)Je(gDxS5N+%M`X;SG~=qbOU+c4-88hLSt zgdsDK4pVC=393mk_615#SY+v$ndUj8Q_N{jyz97ZU5y@dD@0lgj9vT;sbjG*ALL=W zad`_boWdC#oL0H{32~K)n#;=}4I~YzivVHR^(P2rF4}8}H-)bUicSa+uw7h(JmMJ{ za|A+Q9x!AM8+~21x{YbUGD^OnEGMtzZDiwNe1J+o@DK@}(%U>U0~EN@bV!0nA^#Q@Oy=HLEsY_l*nCbYYtEzcM^zcX=U7g-Z!88*gBe$55SET9e+E&qj};?Qauih*C)kJu9>subw-b|Kvm9lt;)Y8G`C9A zRx6!04o)Yq#DFjqm)VD|jns@##uT3Ti)XT*nonf5`6|=5#F9SnZDvq3y5w44wt4X` z0ajA7KnWHCL|};l5G95P!=-y`v$h)i{CkaNj{U6FXaDPCw6{1=AJ?>{qFB(WlkGkX zx!;wwWLV4ytFbc`QYXSC?kLz+c3dr{?B}lZa?!ivZhhlI|6hpAMY8K`YTGIZ9ZrYv z$d9^V-N%ysuCZ-(GG_S(c>UV3{9MA>bk_{X$B5dbtYdc3$#Y>^yKWfIwjoCy2B!_v zV3a6HI`&GIDD3>*mw(gd>Zh}jT&Cq#x-QpMbvzlE?Q{4wPKJ5r>QjsqSz%Vz#lZaI zjhWqBHYz)yPpM46VTx%T^o-M9QN8WR)e)x}R)!KG3oJXR0tsqK+hJHmIB97emS?vb z6N4}ducbN66X3JXrpqkp%(vlN?TNzWn;H&UOB)+4fq=D^0U3JtN~?BSi(5HH>sf*i zbCauPp4hpeeWHe}W^P!%vtw$qmpU-5v_&IP0LHl#=B&{Ottqh+P^n0t*ADxL0SYhe?cDZYbFFxNnS6crQe zeR*ZAjk^18)scP^oZ*DeZTRL7qzzT~OJVb*9Ak;uOEHB=%9m%Y87Bl)2>>*NBsujR z>or4RwSu{qLTW8*rQ2MqE=PscdE(26OR+ZjqP-(#bj&t3JSLREP|cLby>AS&`u5;>SC@^I z!FQ&KymZXelNVtzzfWGtt*E=JI`lrGO%zNn>*$Y+sh^J0U%GMm8Xk@QzN-zwhxE$@ zzRz{h=>&)gECCQH22McmKv0qAS)}?Hc@;_nJX?H^hY^2-e*XU_*th|Gut*4;?O{D4 z4mE%U<|1JOr_`)6^O60p8r@7oCs{#ohnx8Lt;8n81U7@ujE`?uy>bVClCg+lOvI8> z5^hGA0+K>&5Tu6LkR>Ep6rFHK*!@cZ4T~g;2_PMN2>`#}-daJkFjlO<^CQOIVI~Fw ziir4xJc~;k4;$ra{$s2?zji|xDL)`raqYnN=xjOAxR_Ev21ZAYXcERN&HWMzN|8~5 zm#L>nVBica{im%RmHu%zPVe|2aFoY;7ru9IsL1Bdxy!qo~dBP{wk0rB2OX97A0(Y zR_uy}?YR!dXRelw)#+F%QQB%9fJUu6Ca9ie%_tBKmdt8<+ zYy!aI(hjFbQuN45f&;8bXdr!&`eZC9O{V;6{O~D5JQ|8xU5i;fuat3BJ{B^ z2n-<@A_sETcZ**W0bY|rE@Tdckmh+Jb*ZEw$OUv1rM*$D_P`NSy293g%D8Q<^I47; z2C^G)+^XEzYf`6K4yyaxQ?Yq0wZjU-Obpif>uuifD^q>;(O+FQ(XKmS2Vq)r#X`go z$8!$#w4nEtsfk+hMh-%tcq%WByK5r$%Y)A=J#}nW*u`(T%TcZ?VQJdZRg%uHo`Yqs zTkF8r3~486s;#rFGk1E{49#Fq4D;U^Jx0Wdlq*681X&DLvE*S|3sP2ZCIAy_SKanP zUu>!7kJm=fSZIK9S)I8i3)xq@!uhQBN?$V0o9onQIRVk1_mB> zNJ47CAV4rO0q1!Rul0Iuu7ASxTp`%+`8xgXWJb%Tao(3b0a_kevzA*4qS^Y;Kni(|@|S5%7ICyntc#``tkd-f zV!7cn)>jseSaKkKC3R8GLV@$9caoamu7N1!4PdH1OG#b!BYigmXr6uSZtOW~3GBVO z^YXT8V@VifxU{q-ucDaIF+-OU=`o8fk-XThtA&+S&pZDP*2Eg^+bXiTf*!!39paw?$dEjS(M#T)2IGQ055FnPOoCu)56~MD#0>@H$@2vp@<-%?GAvhA`gPoljOwAE3?#`5COUQMRn3{Lx zHImP4r#Gf``c$ha(sg5m6v^qOp)rqzm>U6k%{2AnDq4Rtl@i7CyDDgG?VS5Hr5?4K z%X)NApfnXOvu?LgJ2z_@^+;Em1(#m9N^RKQg}M@Pg!^4%D=z!=zhGjjLF7!hhLe~;}j$yB4S1a zrjnj)M=ENlA^WjQ}rV<#MBnYvk< z(C)jWGv7~Gvd!OwX-+*owB)+y+$tAWTvFsVI1Fo42nBmY13E!dF?C>%*3Y`m(_d(Uq@D&ypqyOS>}-%IGdb-FIv zq8Zt#q5f0Rm3>zYx^3u@zH1x{gs`oY8?$Wot_!n`+0Vapv~PDFce@CqseTh^?}TZ+ zT}aqqO6&TVtGwL7+IBMc}vO5j1w%OfLU_@0PqmT`rN>_0_`i=C|H-! z?U9zY9pn0=i$Jjj0fl^Nby5D?-aV!85IzP~X`MmxKM<69#|pQmhF9{AARfp+>F!4N zUG2gzv#|bF;whe67ks~SzB@PfxJ^bkjc|XCak)3cgY5eKGcu+>d3+N~>UET49aPCUF`sOCpIT1>TG9m!G5Lt?(5_`NdQTLJ_4hoQgkRZqtD2!y1p;T~eoRVY3 zMe#04^b@g6C%&kp_J~;s7+69@kv*Sy?7LgeSHh_`Q^Op#JS2AVq=vmSpKQnnbZ*l~ zo_CmmrB49XS2WDrMnH0u00ws*2_S9sIwY`jZ9GKy+)zl-oZTC1rx0GI6t1Uv+i)xyPPYB62EQ7;DBf84%4FCL| zQB-6wu=QBZf7gD;Kanuhcy!{qdgcpi?JzRTnM2az;&y~DHYQI`$&R$OhL(m5`m9$~ z>TznlrEuh`zbas(^0vXt0MQK?q&NSI6aAu5mkA)dDfGTuPmZ zfGF%y+)ARGq>P2OL6IXFQQC>BJ2lfCxUc-;vDhb>*C-^~9DRJomd_0#d^&RIIBT@e zGsth1VFQ`g^3B<=X;LIZt;Npo`p==iTg-9ovpd`u7vaB#VUj`M6EQj_OOWoEQUU4- zC9+A}#P1OHbT{JLPi39Frh0z^u-VbqpiK+PCbT_L{J}=zRNgF#59&4hPK?5YkCGMBcgoqP&CnyyX5K zw*JO^x6LF`)V}$_?I^N5uL7P7#MHA@OEm*Q6~aJfWr(!&4VzX+YjVXqH)|CNX(`l` z0pJl3^L*Z_miQ7f`bVnk8-UmCqN=Lv{f-N=!dctO>l(Cxea~`DqqspvOr1;_CA7Xr zO_C1Gk3TS(lMxm{28KPu4^JylgqRb*6J}IBXLN_^{1y7d4)?j~oc$d~p{duv_m+;= z6=R?BQ^NEGecB$Y@0E)t5M<2?d-*lD>YPZqpQ840{|e#rC=Z<=uqYlbteLQ2yFY0F zZP!@BN49Sgk4)vN5XO_qPvmq*=FRx2Azjl%wZ$?*Z4qa^K}Dnf5|$Uv%jJ9vPS0hz zwR+Cd-=z$WXFpQsY5$6^abES}9kOPs7!dO)QfW3#MCY%ruin*@vgB*C(XKi8Y?yf$ zxXX0oxlat7?`%MCNI$ZF@-L-qFfF}o$pIN*{tj}k3ptm4d(wb2+HCI!x~_iiwU_jz zP(N)y{MvL@#op1N1oP}RD3w9lu(B;Q(*&BAMTQ#6BwBwQk)M;rH&%-(*F`xz>S>zF zkv5s+(7YPw?p%aRxi{Lm)8&R78ktoiTV;40~a z3M6Wz|6HtTnMPVy8zWdD=?DcbU>xC-mxy9+JNF5zpOdX#J6Ft{{Q9dU=322Kx?oss z(LQoV9Ofoa`Phh;6^^H*^>$V&>C#_2`*yFG{4=ktk@8qQ4p2x0lZbY((`U`&#Gaho z-btrqj}G8n*x*<5ddAELlX&mEL`^WbP8fU*PIWh>YT5{(0*MVlKnOAbv_no}Pa%jv znM2`@V30%raIr2B3n!A5bk@tywm^CS0zn{fU0-t`dM>|s>^TP@a06Me9KZZvX0vK;Vfft?q=<|+JkNMc+l#>u`w={SkRRD4uNx8sL|q;TzxJj6ZM(LB&MML} z9?rdv-K##=(mz4qYP6$W-48mDEedot`cQ&z%Fzh3y+Mt%13e&!G@8%H_l52$sS>P*m!RmQ&RGdpmt9j>)qlpULH7;4D6=-jo$ZsRGRvOT zyBh^+n9C1e z>*zgeix{}bYn~ux3^SdeZIJHsfHM)GprQ#HktQOw)T8t|<(8u?2^m2aTA0f)74{Ow zc2SHit*$hofw6=ymJYvBzt`$8IBs`c8dPXN;Xqs$$Apkb%OOLnwWec)UJ-ypf*eC0 zQ~n_S*!D5(BQB1W-!jl|hgRE>OoKA6LE@tP%N%1SfFqusXP^ISeZblMonzxezuLan04^y};Uf-CnKvj93~dQb5X- zfU5U4_F0$Ax%n(iNiCCAzH~V9azqkPf=lF#&?HEjr4|)GMbhCpR7Pf6WfJB&D@m4O zf`TH!WR7+%OjnoH6vc})5|GKCqiWcO4J{u3WuYcUOeUU1_}RTKuUqwb-$}CfpAToF zo3TS&=%#8~wCoybV@9Z*_`;#A*Hpce0eWop+WTG*z$z}u3K#;xK|SZPw!hKeWgxOB zst{5E(e;`q08`g{*aNa_2&3#}3=Ad8S35g@*>@NH@UNI+!! zhc?#l}$~#LNwhbEMk202^hU^XJAQ!rWLyK-Y;t3=z0n zy!RC?$QvNXshEKvgVP}d5WxuVJP9C}j7#mWQ;|S&WQ&9#T*O3z1nau2=pq0oogo8t zcNuf5#(Z1|cz}PPYn4E(%mZWxA&M+&MuTG@b6G@po2Zq(lMqO;16YX6@nS6{490{g z!6&nH?fbV^TX$DqbdW}%K-(5%Dl<7L2%w;FDGOSZSU%E<8Jy;9Xfqj}9x+x)etT-w zzkU0az@asafWWChcwj$S8%!RLad)Q@c2`$(!kp!^kwxn&O5?v~to4Tqb{fxndGYr& z7vkHHFya^u1sELI=G3>YIypoV36R6vRuT4G2Ms&-tEq_=k4(Opa5o4&gCEx+7jHux zb5?Yu6ymjchA$3h4@6JS*ek;PE!IHiFkKUog1eER_J*i7Z~@l|d2u2=K|(P>8qviY zK>%onOmPRqJCSuZE=OlmK_oPh-^b982e{!`-`Oef<8R&o%>qY(1*KRX2sL>NP&YutYQQV85TPJc;$cJDVS3T@cNo9&R=oQq2Aw6`bZi1IeuQ_b?a&xNK9c6=@NQ-5U6cg4NsTnH+}`* zf5bgbFO__zCq#-9F!2}wS9}MzJGl;$`2am3?g&Y$e}M~K?r{5DS#%hS6-^t{BaOsC z1p})fGt&pUF14=hFl5L+vZ(JVGYssK8L%8XG)7Qmft!7UxPgFWU4Y;WwE^zqE%v@N zRzn^@U6v>%v7ny_9~78o%UQeNNP^lWbo!74iiRzKqMN>g0Oxxi*z1qOG_qEFyRH%Oki3_EQXpu zG^|Ka5HxB^3`QwX39Ht~Q~=6=WME++Ak{#pOGqjkl(=(}LZlOKpKCHJ84iZ3Ky|XV zM=`F}8riPF9h4}oJyVunx`mBVt}iGkY0o1EQP;EWuc+Ge8xfcg;-sO`m~SI-f&@iI z1OvjUMw=mv4l@qgYH3NavIFL>rF;UFH4>UlRbp83hPp@?F3U9V;kpxlU|hly zVsgP_Jz`=r@yTpu+M^Z3v7xotTE)bMP!b#nlMA`2iySiyz}T4-Ec zZtQGsfNfIDHOOyS4bCET zKtO1$$4dPi0dTMtB0?gnB4CWTLh#bRPU$K*I$F6frV=;_f@{s~TxHjo321ight*{N zG}bvGim-&qQc8|O`kX(1eSpDKqQfzg6o&l3rbiT@p`&L~%qF#~srz-Mb#_;j08EHx zvR=pw0V1O=sl1T1qUtIi7W$bIBPdkV$^(-yim`Jh$bdcvb{Xrk z?O_9MAAsmsOlH+00>aQe0FW&LOcMdjm|O+`F#E&SB?tcwtUe6~lrm%bkCaZ1us|ND z?uHn226#%2VEXgYBfIL*^B^$cPENw_U_%xoyZDyRmeiLk$JsTPtSpgsNf>cJi_9AE zs}FlIPiyZ3@3L@ZuJ}DssLJI$H{VHfB1}m_J0&oOTFwY@#ZVx8nb{C9u%UDxuqSYN zb^F(i;`*H97$>cZe>13BULxo;n6ki@q5C$yOB%QNUst^B*B_QG?$4Yb#(=VcgV`>= z@klii5Q!G;*)p@Lw9NlyqL`l}cFEr>FkvOEbUO17ew02+40`D#8wWC%4NlCjd))1B zwDMMKdG9bZh6jWUokV>UfiN7sE5ByBBFB!N?p+2DsVaBO0+k|wl5d)16otSWver@p z!XT-zebeu>J?0CH$H4brzqqz6u|5-z6c+D*;KR+~Fijj(Bt{VkplBs9Q9xKpRYi~r zVK=p27D~qA7}^9O8MF*Gfq?)d8TYAY?lk#xJ_%ml-H9E7>C6jc zAu&}0-g)c5fnylVONhD_K{>Vop4mjkNd|vD8LQUt*)GL}*H$zy#e&C^-O-9o!xUK- zC{TdbBGyuX;&7RnD)Ro$ohLTG;d|EI8h=vFm#Ak3w zNdwT&oR}>jTNt$isX$HjVs4zN!mzs=Q=&*>W?~ta%8RC)x&@PPl9KReu3?(VoqhZ3 za>h)}eT*{)A9f4sar&^ze=-@&A*xFxBq8r#XwTfXIPybMypP;ZRI{Q4telWN#4N2{E?-b(Q?z=FasF zoelXlOaspTisE+P?fHW@!m$(MY+jnB*$5+T>5s8l;_ms`O3A1Y#)IHzL+$?sfMwHh zW!uBN5aG58kvt~H#5~c}W&y~I0ZXtOk%<~$-a}W@BLnVjYIJOtRNphk9v~IwLxe>5C#x^g~|u`GQ#0~=_WaJ=?NNy05m__ zg<{XVLun1Dn5e3$5ekZYz83KCok)kjps4Ww9cw+EC)yDc(JVmN5%skL`ExD;h=>6I zi8Nu9hXwwYI{}mBp*-vC5H)$(o7}ha+Nv**FyV};oL#7%;nfG&XohwGXy()ZDS8Bl zk^UWrVdQ?^1LUTE$Lzi)m(jp!2CvxKK>sA}`mZOWbo(airgnuHf^3sDGxt>uoBUt9 zQ#CG!X|*ja4dP0k&76PbsB>w9!`GIF&Sd-Dl&JRozb6t=RIx+UHl2ii_SN#)7n=^svoacy@%trm*Pqu0<&sTe*dE` zR@${tVf50QhCj7A4?54n?pun{Fx2eG?zqAlhgzTU`(6&>7Wsv!T;pl7TQflu7XGUT z6=ee~a6lG$oWP9`-2V|cUlN%u!kfOVaC}6}ag8g>D3?9m>x~V%06oYa}fvZ$R z4$j3B5Rlim&Qy$jGOsuZ_e3ECN*_9yhCdNK&^~Xh`pG%2+og=gx1QB3!;yL1lK#3VB+RwTgu&Br3?g)&SC4E7Z;JLXax zLo^*MGA=I)Q z%cktQUSh`)pHrWBB=~8zVb)-ytwY9rf^>er;p$vX7lw6D8Mdw+4wdy!Uc;bFymd?2 zI!9!hFY-J8XHe_YJDAtz++;(bOPjpaO~Q0cre22qgMYV_Lsr1sFwqzt;|w~gCxy{e zmn5Cr0Mt)G(pUSka>@1?F(7@UCe`W~T%9ro-GL8C%=DSeoH82p(043>(Xb`VoIO>L zo424qH|9>MgyV43KLY>_vIM}8;Lr_E*J>MNknGuiHAbJ5=PYuJFG=(rns3RJyy>hS zc{(wW^YJGRz`*!kx)MQ@VUHxIw?PUKUZN=|2mjU9VdDa2p)?1@RS~7gK!|19W+%jTEDjPB_0Lrnbz%&L8iAZs0mHFE8%B4U?OfDFhxTH+FED-O@;VEi8z^QYfeGMJgmxjM?{6Pve9V|%Qvp3b`T zQJAI6ROD-x5X?U8P?=;D@qsvNoVHfYB(Z`s$H*e<7P3ncW^2_umty)Ce1-=qEUa`L zQw%qGn@(-)UrNLBW1|Tf>nQSWEEf_+!HK<638Il)ap53{w1&0|WP)#DP}%Ck!q&;_ zr&a>Y#WCnl!f|SuUQIen1_&f!AD=>k0{Z216KX2$!U>^@`?IyNRb2#hrxNKjMnc@) z1A2L*8H#jk&AS66oON^Mg`&WaC)!_)Xi)=~*&)$CF=6ceaFJ{n`+sVulAvuc!5qIm z5kxUumM}NOP=siMJ~IA4xvKLycCgPg)4sst5Y1^?cfc!7>-3_fIMWeRbLGCab`PCA zFF|GNIijn>`yofHSdZb=+GQsNY_j0FLN1kbPP^k0%cWw=4&qBEAqRg@uXJXnuEvWQ zz{*#&YCrZj_o#3|uL z4amdvBo3jUcuZm|4uV!Y6dvKDE@Uiv)=dU}F(w3)82e}Qq15v9cQXSDKaY1(kUG?v zILd`2HN0QX6gq~0W(U=n=N_D@+a5=C0zKURy83>48I0$>pJhHrdlv>9w)XV?K1&Yn ziPmrcTG~T;P7HFh1>sQ3&{UXXuuP7dfh^6`4OakL>!Fd!!stT9vTv*frd-QQA9Ka9 z2O$djCOh&hTy}LIui9)an*)d)zcbIQ1^cs#>3k;|h^-QfLnEGJmDz;NxJ(H6|B)Ow zJsru8Z_@L9@9mp+9bN;?lJQluVnEJG$B#W&Sv#({IH; zX6gC!71mT9PkZ-)cQ*SkvcpkCQ|7pm`w^=5R2obsFF{4S zB&rfaw_#8G2wmT7{PogY$!HxNSs=(k6q8L2?W@>&|3NWf>emZcN1L96|2c0FcFLevWZ${^L5*CGB0MMuX{6Z$EFJZ_@Lx{7lw&Ux*Z) z_(V?HH-xPzq0O2%dwlP0cQ$}c6u z3!omEQ3RMKCde^sum<%-gkbmZGGJe5iT8HK1H)#y4VT#VcEV?s92U(p$@K6;_>x{M z6HpmR0f=FTtiEi(Eo=AS1eW|64ZrbQsog-SVcXW$mRVTq1>XWgO!DTpbpEd3f(ZNU zQHqY3%|QD}z9c~Mxh;=zfHd2bWj)CshGMsckV@Ap-x+>*i}07!OaX0wWBUq={js;H zN=$E}kVkk}4G+Lv?_RH?uM)HxNYCHuEg}daM}Z!?VVN{of&f9IuQG1h-63FZ5CS&l zgJv9u;KsY={+W-j=g{YQGkFhZBf5v2mr3|YvUQVo`8C@eXaF7y$M(}jW0Nu^+TuEA zeY_sq0?OL?F4(E>s>rh+NM6@Hb`#T6728K!tL`=0YUA1~R{!)>6*^9&+Qr9B@sZuj zllfM%j#as#OEGr=I75-#NbV%|<6-cA9OI9zhv1 z8dIsuSDV45u(&aZ1<#&fOm_uIrk|ZGOz|q>*!9Q=finT#pSWTYpd{3NJMsWRnuHVmQ@_R#i*5~ce*0``)=4CsK$hlUkQ`|hT4YySrh)TtYXO_n z-n4-t1AyKs?}N}W>7IZ6(D%0nccs^1%r#Zq^iuDGfyV+#>^NP`p&|)UMBNSfG+z!D&zC9E+a*oAyQRDM9{cpP-Ir9~7l!91kRBY6CCn)m$XLk1)SBRu zVrX|ByjodaXW#t)rZ)}dr3T$ zCn;jH3$vd@=I*oHtjWKwH^;+{nZ_wA%rnwMY+1DIi)e5j_^|O8nx?FWoPdam6 z<7xr`(1<=T!>(ZJX-T3$qoy#y?ae{%4w0xAAYFGKYZ|OTh<|Ev&j-+R`PXy|=pKtD z2QxBFZLULFn0EDaI7tNvRtp-lyM@40WHVWe(jNciU>09$5Jeyw&M`L4@{~x8E zQF^D);~;(GrqM5s`fZoWdpvl7IHATdnp)v2Ng${eK*ya88UXJPQzdo#q5t}6jU^g2 zM$AlO#)}1x^}qG4FkCYvA7Ofi{J%R6rD2g7NEBu-{scWRPrjs9 z9+=0y8lJ>FV}=3q{BJ7ghHwj*fKwW7wT)lyia zS~iVsOw?_+T3YZ+_nW}Bo;$f2Ilmf2_c;x=^*DRVhTf_T<_jY^ts zXPj}^;hIiMeNs#wu7YVHIMkjCr}is$oi=8jjcOfB!=*bn(V;%0z4Fxyx(_u^^DU_ zH;(j{!ST5}71;=&kAFj#$?`ofAHHpx$I*jUv(tA{j9pC8p8?%AtcV0d` zo+ryVJC4)QXOIJoAIQL-mjT4;uI=~iznlEE+`9}IvKo0ZJgcR+0IaKT6^vMTD%Z{H zLd1p;C{gXCpx&j0T9~Rjy%MsD$6nqftgi491euWCH*Ss6n@u3SyC^9eT_y5do@ycs zRf$D;=K1Inx|A|xxyL$pXon8@RP{GhI~3dfiaWRHp{M-4M^&@G->}SF?=xc0O|{X* z*xpPEn?zG_qsLe<^OS2x>Ad^Vy)&)Nslw=IbXOj|o0Oa1z({IiS(`#m!3b%qM&8W@ zs#$o*QchZ#SXGNdF_|zkR*0;i+TpRgOzQ%~^$<`tt%ju|RY|RwtXuKlBAT8oZ1o0# zh!tzus-)-mJ9N&)nvE-bsz5O8h~C5KNLt6bTK+$*?)@wfp#kygDC(a48}L=&C@~)I zl0*OQz;GzyARu%EjW8?O+t8>dq1KiEw;G)O`+e_{Vi0HR3D4UeZoQqzvm32V1q%1! zp<-RvZQ)YNWNOl3*~37copSvpBuQGnGX94-(Z@5l#h}4P+wXB(s)w3qo*zC(;g`(1 zza9%Cx-7Tlc`ZAtHBybob?fMTiXLadzpsO>GMh+o?66tk$K-YOiE3@k`)c%0mR zJ_&*x6@0|_5RB17oOSwo{!0b&VV*W+2i!vFX6i(+GhOUmG5+eS}m!(7Xk-5jmay^{^K~36ed$uQ>M@feV1A6DWQpHNC^f| z8&#%*23r_#?+yA$8~sATaAsk`8F~BREC}`;*W&voeoPy-h3;rj6tR#500m;g6hpu5 zYj#q8hTok>r=Z~KvgXr^V8bsiXS@%+1068G{Ri{J@46kIdb6Egxpnb|QZGXCH6234 zl(&dYW{=L53cFMNt}yn9WcwVeeScYtmXf8KIa9S>(P5W?x!JhrepBA~=5IYVCR(Mc z=fkmUeLkxggaD5Sz%V^8??uyZ%;m;!*>Og}X`0>{%&cqk+{hDnmDO*2WdYGypmn?# z=l-7$+u?>883~%7Bd)r@Bbv!P`vbXTJ~nf>wf@GZPy3lIJ<@b&W_ElAc01vek)+0X z>J<9hE3NhZ)^?rU!#94ezaw)dGC_uo951E2_L=^8Xu$(YtD~TxPaoR%0cdedzFMKB z88wzJv?&6Ta%_^Ei2{ZKNJIr8fQwScq%MnG+;2Nd$oyN{G=j381kh zk}w)!j1vUPY)uRzWSNrzpc+V;B{Go`q=?cmV6pVyH|Y1BuTQ7IX77G)w$=KM+i}$Q z{!1<&oAhg$)@v13BJ2@Ok&|N+DN3Tc-M@@u5;eyUQ!aZsrC}`|-1Er?c>Dp+q0IMp zkU!jOq}H|BjCHQ|MjB(N9t)B*Y~zt?i^Tk#WD_H6LB&+5tbKWa*6SW(Y{nE_|BRqB z<`*;4pny1!4%bVH;=~03jE)(Z*mc&Jd*1fbH97S1xI3#Fui*5$8hUsn%4tf)gEyJs zuQ15Y@t)??fA*iX=y~%><6!7HI(i|JUeWeYHon%2h#5<&6oh-KmlVn*f3XUT42+`c zTiGlcrim`9E>BpKxl5+n`$AcOpFseEgCh$F*#K68r%d~S3|99PR8w+ zHK>v#;3Lv&YUnwVK01%m-m5>^a$+|?VsCB*ek2~2WaWInZ*fSGXVWW3KtT75?>Tr_ z_-V-V@#nosKS^CUJVl32L;?@Y)-j4!n$yXc!RS?wDgEhCkksn+qIdftDR_!qrtN#} zs^d_~Jq}(z;I5;X@WwPFl$w&s9w@CAS=KV{@gcWQyoX}I<{g(^QyBEjoWCDhY$fI@ zIb`dQzmB4lQ>>_b@41r5%Z#}3WzyN;!--?@nvBux>yt^Q$$4{>=&!zMJ@QfPDj%+x zhtqPA=$>%zX&r86zL`b{Hx!0CgvChyKhp46XuED3z0VTHQOIykGAW;ej(Gy!sdSIc z^e@h^;>4W4IX(;SZ|+ZvKMK(qwopbWAcQveTpVryAiy{r|?HKdC>d3&E4Kpx5+QYtl=n2}VA)kA9Gs;z|R&WYDp= zIy{Z=FH6{Oe6@5exxM0$=xB3pzUG{LY2=-zUw`VMC=(3lGJxb?@(|f5-M6 zJS|N?SD0C z%Q-n}ogz+I*gWesO!bHx#MU!S>~|D!Y}Pa8AdnQl+dSUJa?=x|$a*H%HhWkF0eXs{}4 z_9cr1VU3?X3t}owV>&~)x?iT>1N~6yTL}Tg^8e-H%j54F5fB~yIyjavnQvy1 zPl|SwogJ*1uWp5cF*@U+$h18nlCF@J!=Hb|x4o?)pk7`g#kUO=6JfJ_p^!T4AX;dl zQ#`%kS;EmWD0_fHGYhJjH=f#~6qusb0*R9vRi;Hq$pG}yGL>)65h{s3v9Z5{eJMe=jErlgob_Ziwo=#NS(AZsJ z&J)bb{VHwSEv?T;C_R_1OE2%HX%^v{^_gi}`9-am$UmP*czG>!ie2jvxtKgrh!FBN zFy2ewWqP)_4wlmDw7T{ScyIU{*CkCCGziw%_KwbVjF4_iisGyyn%SafmXtcLI+9%s zjTK#ictHZtqX0n`CnQwh9(NShJ}$DD5zh;MW2<`#zNaCOc~0JU5schdS&HorVqzl}aE6MRy5yAb>6+mm;uX~whD1FG zpYe1tWU;7aAo#0AP{9`L*-ltcD}X^-wss{l`K7FyBCzxH7AsxQE+ggj5~>*k#?T@u zj0}*ZOyj4N(BV_pw7@)-Ix<*sYA7sPzLN;Ve8eQ<^Cg-m$ z9Drp-81+MyNA?tnB5%G02P>DVvFEcW=o!%b>Xvp%G+bjneD-)OxAeL8 z53!e~V;sunA7f3ms6NFCx?Z!z&z_(R3!&+pC?AeT0td9!?yd7#IY@@}=>6?OD4X!l zeuukec-|OjJ7>mp8`H&PpkyN%KYf~(gFtIpj%;Q7tD)}_7D6b0-IEe_=v*1y7TV(q z9u-l5F7?(6l?-x(Z(Z@aex|R|=r;9wgkEail?YdpT<@yW_hEK~6SmsCcKuFMxft&L`Q>2_u zA;Ek_!{%GtWSdoy9i?3#DgEj2wp5q;6_432NWh%z=kAW3s20G~(JJ_l-*S-QaK!#3 z+fsx#;?V=>zwEJ(g0tq=m}=FsH<^3IwNq`G^hm+u$T~3zW5he_Gml+~8awtc>^c>8!n@lvkcq z-wk33gDzSSAa1p6Qp}-yGiYQCjDrY(mmaToYihJ@JZ2oqYM&+U?y)c-*C+O-XMIv< zu-3EunLZ+F)1!dG91E_|JFSL=^S48=PLVWF^Fs|3=UEKL(xEaSOU6(AZz%j3l>+DH z;G_6bW`8FWe$&Xyq4#?4U4=J69b(6954#52)!QV^ONXG|>yR&x~N~+W0MG zyeHGVkHuFKVccJ083FLXPR7c~qio}^@+M-`qBCpkTbB< zA&F25K#=Ns8ias%+tZQs?}!KQAQvPz2zmQa0p{Q7`?nSbF+Xja1{$=P%!Dy@rN+UZ z^ti5lC?uL1m>MKaRMN zKJQddkem;BYVpr}8N(o7C}@^hyUTq6dr{_35_~nKQE2qcMY58^-O-&V_mcW_3GE`~ zu#6R%9}4D2T@ei`gH4c@KO5acLcPtFLD!JfI=n|kfTF?e#xeDJE<6b%bI_h$mj285 zPYytVWJ2qc_8>FMJk8N>A_TygLkI*0;+ls$`r`dH96e437H<&U{a2e>QMtTL<+v|! zP6Zo7X(iw0^(R_tlCy9fg=KnC`2)=-wf-5hO7a-;^ugaey7XOhIn|#-dU=nY(x#$~ zyXlQgOYlSh^~@KVKo|r=YXA+y(5P3SeI`7SgH^xgXl9eIdn%CJ9vNg(BS@rB1mN>+ zzBa`Su)I8L+u|6~fMpT5rpY=~*@eM4Ml|V+4Ec_Uj7O^7Khq&OBCbpyuSBgJ`XHk# z)kRtpv@l{pgksG~wQ8n^*r1R%Mm%0xF}W#y>aJTL5U)Z9UBf`8J^X4^ygz^K$w68h z#y!)y*}-w@P~ZTy<(bE~Yb?Z?gY)XmcE~4os}Bu8EvdxqByBwW^hRRK>JvJ1 z_iy&L-1>?Zg0?jMx{K$rgrAaK3+g$3H4a&Pfy3jeI@7<(Q6^aCb{tJ~n${RKi4(EW zH`dE18K*-B_vq0C#2aK!EipmkPqoZ3^|L?N&ZcPfzrxWkyL1NBk@L{jfo+JpQzs1N zVW2I&zPVMdogL}+X4v%yU5h~li5=1_ajm|KL}jc4OL+GYB~-hyWQkvG9?(l72U-N5 z>JR#uJY689xp)=LV(o_+0yf<$?qy>IFVn6lXCk(u{oY}`1|=MGavcS@X?-dhn;L#!aRCMf#~>D zoXujbUBk^l;mu+8Mpa+7CXpW_1llbjoKL9#&QBe7gn*jr49+ zLj_`pOLc|5>JNc$n7@K;&ZBH|;Bf@{-ZtXAqsKRJULv+we1KyH8%P(?VT+13QwV_M z8E+2@dbGTR>vL9z51D${I+IGuWPfccS=qQx&SNNVdI)W`!VmCksk-JQAOHuV5XZ%? zS?kZ!di!{?HauY0?(V8Hrnldu;FA|j-));ce&P)RY3|~*ihgLEK9t*7Ru|GX-R3#< zuy{Y~LIy9l=Nk%dIwSND@5F`>2H?5kK0C_Y-)Wt5+*cRl*BlpG`SbWQBExe!eFO&$ z(}@M$f;5O049>6kHn0?hQVTf+liPgbSM*q93_CowIQkVr)%Cibg}oG4y}k-Yqh5i* znSC6ckw+ zqCz}#2-ZZKQd;?78~!)ek&ZEau0z)-BW3byoUXf^p26!+O>_@b{gL`SNY+An_cAr> zkf<;hHt&EPL9hI_^L?2AZ8LLHC-~TQqs8)=*9%vq^om^bkbZ1-#^v=8$dBVbgl{?- zu^@PXI%cJ~aLEaf09dqgzA{6OOR)#QK{wBtY+x^=XNyi1*7h@TR9SksE1JUbzqn~9M7VN^yd8yc6jw& z@C_z4FffLbLLjnK05m7(4j5KmsRzJdU>fp)W;S1lXC7lB{j|tV*A=!n6oR8FMKL7o z_w~wAwC*F$cf`5_1O|=jR@tXnpu_vkSozHx0}YdUgabW+h*M}A?+tXcKnR;URUlB9 z|2M)d{W9tu`s*1WNYsJqzV!~JcdRZK0Uqn$uGOJ?QlXg28pcX3iL#_Bmr+QOoINW< zfA>YIOX28ndpGM4^^GdSsZTvGU?hESd|IUe=F&3Q?~E)$)a*OOsFtXZIYyT75K9|t ze~l%(HH>8!t4SajHE=nVbL(}iU9?0)u%(?(m}S>B)Et6^Vb&=F+3nFzW3#{0n4G74 zzKh&X$%mf~#Ld?t-z{#z3P9kebZF z`4c`H8wKSD+UDdAtwH$JaGfKF2Q?E|*J~c9E8nWJeqGbpBFP#!#%fSKDLw*6pN!xn zVx8pErg(;iA@_*byPtEUSVG(0Hsek&qA(o;Wd6g#I+Gjo4UHNES{-B-$*D1`c>fHc z()K_3^8S}Qdf}cwc~jb_@#16gBCBgWcm@#Sc+K@QFc`mUps`e22c_q~W^@?@pn2&!rx9ck(Jw^eiddekdaWu(Y^|IVVlB`G1 z_*C2Dns}ENHa*Gh+GQL#n1#gMPnGU@er3X=;G!c) zRWxFRtxJ=5CgO=YN;-_8Vc0gQK>IR?)bxO%gRgcrp^7+l7Q1A}F~>6nCfMNIGpDJ- za9p?AzES;}HWTO47vI2pFRobPTDH~Hcr5BM_TFP0k@m6~BMNvMQ?KD1MSzbDj!N1ScX(oP4lD%)YHbY>J+G$4> znVv=oP9bfaCN+zpscC6s;>@q@T9Xmd?em^47k1eAwmf4I|97!%S8t0Ui&Y}0?W5}` zGj@3@&KLa~X!?#bKP3;1kI+og=qxgL-CsWkIPuUU88QIL;D?coowL4pGL^Z(nU^4- zz%eydK@&v=SVtm~nt3p;KtRH2^7YGA>{r;eXDDpZJ(FJ+T_6lWlr54A^+*JXBnSyZ znP|qS2eLgS1JWk z4v?)sl7(|8Ho@ZNHfJ&a`$mVbFF>-(#4m8(}VmO31n>Z9}iNFf3*YT87a0 zB6)dbmJ}P)r7muy{Y=KtZs;s@)80}oJ8fpbg}DMVAPfZtM064c*6QU% z0m3wJ|H2PjY03z5D2xD5;Kkh6y2Kneay#0E+6_S&?4f+)sPp5sSsz46;BJ1LB#HM3 z(S9Sc(+~iKsgVvZbJVz&Yq&xUjLK3E!dC=SE73Kta|xO`G#;{293Ag|-i(-Tdxf#a z!3TJ8z`(j34RstnXw14N9(dTkO9Jq6I!>CDsj}G>UACPh89gc6Bt6k{797chcc+fo zauP$aJWqSa>|QN>*CVOVzx=G0Nm$m3VS(Z2*dI8eb&OEfcBtT+lO4&GGnwRurck9& z(uD?fmdH@;Z2M=k?R{2+&~xh&U4oESW`nyzBJw^f539fMSb=ReS#HS$J0D61r@Qq& zEQE4oPFpIi;zJ5|GD;+QFT{Us&9(Q!H?R54zX(&?9r&JRE){TdFJ#RKK%WD zpBX8n(`Dcl;tSDGp*0V`8b87gkPx8Za^YD!-_I@)1#IB&e1Bt(XN{&+1^c4hxS%H+ zo;7!~-&)L9ZKhGhYH7N*oUi$SIm;0ae#&g@yH=K*$xXKQ1p{HE=+snt|863CkO2_I z;zg_!@3ZL4n92GGce+66p987kXjO8s7qVH zmDZ|3V3~w!q9d!tqf_L_5q465MIaIuGX_aCmX#B22GhgY;#g;lT3U^cl9euLQOWtN zVq(+`FajMiKwaAXY^aS`SQx>nn?o~pul_6;GudX&b7#A>jzqS2KR)w2GEt(emH-Aj zZ<8CE0GNT%;WWOItjAd%B1)&~%pdW`Q0vjr{iiDJ_)#9R(Xf{7X1xq0-(=%5=e!DT z>u($#JeqBH7+5t=zLX3~MWx723$uIejnJ_5yXYv=`2_xvb28IN=m$17t0k)Az#}XC z=6nK-1Oe)?a7pEPd}ua?e<-cH*^h8o7cug~nLUgS<&g3SG=RiPgGB^kNzkP0^S@HQ za2O2Om~ z&#YL(N`B+ZV9u?hSIgVi?_wV1(}t;aPlX^(OVH~uJ@zb^2iX-jHBoDp5-ikbGz)d^ ztoTjR^!x5U!rIPc_mgFncZ?4eCL~g_t!^9R*1^m)r!{<2SxGSS5WQrT4E~U_NBJ>w zd_Dpi2oNM2R7mvyVLU*9*5|aMWfw}zIKA8|BtvLK5XBB)gNB)?VR8O->3&Ng{xk`4 zZlCnUc`2K3`m$5}Gt3-2r6G!Ok4OUr^`uJonWsC#$h+5`y~H(Yy#Tpa zuYYQ{1eP}Alfhpx5#s^j3%o&#h3Lp%Fp%$ffOo|3?C`h1#sOLhM$G#>T1qE6VEs-@ z<9ME|h5r8rNeb_(2j3PvsL|+>ac`Kn9rGwVo_*Zk2VWW$ysv&^5FKo@0>iS;c6*5=-Dr{=ZYBS$Ri)%wHd%k0 zd9Y`naR=RZDHSFSj$C z{4#48enY*I$#+ZMTExWgSUPfU$QB$XRGn^O_P6heq|MPj@z_qpLwsB~3uDY@%!r>D z09oU8OS;9*;B)c;y-0P)vD0&20xCPsrp?pa2(Q^uwctDu2nC&=?{9_5=&Zp2AW)<$ z+C#8LQ-&#{AcwsgjOBr9p5mx>F)^w##VX&E=ILxcNUekbGZ)QoEiEiCH~b($q9L8a zwqT&eWt9Khq;~e@V(q9JW7Y=uvGuGf+YdI;>U#fcj52IBN!@W9WH^oQ!8>w)?4a6} zp}=S+;lN-#`0~;0i@y;UUDoK1eTSy_H!PC+E{3}*ER3WYpGMkocat5_e);w5t)j3x zEK>WeSN+t?RWj}Hd3@jfGv@bmdPpjlo=KTKL@xhkiy8N<{1h zus3TQ`UR;>Hf;Eya1(n3(*rGc8l{W$kxfo}g4Ib5g_-atp#Twg5PGEoVzM?=P zA^S$xf7o8=t+l89Uv*k<2}}NRZpeTgerA#GB1viLgxxqV7mq2Ned6k2S4_D$xJUC{ zbBOl1ss6H?ooQSA7n(Ex1`BTY!tz_~xX>^8vV8djT3+^2hjT>f78|G$^Ap&zj+_0$2ol(?Ezb5 zMAj`Fpa1|lQJ53Z%R@wV8|X^k%XMz4~QqI(U9_UY&%9ZLX!C*0OtgfO-H@?0HPzdo}&UH zWAFQk{L)Q#>3x~;%D1u(X}%5hjEj(fC?ueRn1Hnb(SNj{?Drmxt82@Zvwzs(AG`#*FxWlaRsuJ@#5h&Y9ww0A|HocvX?eWTH4dIiW zrsCEv*3HwsovaixEK<8^hm@mwN!w+BF>PlCplsErK(COtb_$jjFD}{NY0CKL*D;TI zqskK7OzL#P5>j`Xnw<@Wks%^Qtch}yQju@ zi_F`4lVOl|Gz{F$rDu1Y?VZxa-E*0hEIc~84%RmB{RU{*&QLMO4QP4Mrse3IYfERX#6qhYa<|OUz z5gv$;@oOOg2Z$vw09Ny@M=FO#{wD?bnf3NwWt+YC%d|fVAHJE1I7gx5YmDE%#j_Lg zp|5<4L=)jmhIG=9x7WB%G&%~#Ka(&cxqZ-;vY!ATRiG99X%x^60prj}29Qz^4F8fy zbjZa9o{b}f>uaxRA;*#TC*@bXt@M2h_>N(A3|f{7nQ@Kx$e1nX2Z;Ox*hMA zU71E>BFd{v6h)tL-QC>9;aq0&p*3b7W>uyNU9BiFK+!oo$dNu#Y#A>|khghOMb*!F zO0lxWQgzE1!~Mq`XfW+Oa#Ng^sYdREm&!ywDsq^3J#S$qQv1gw5(sG&0AXtl)r8CV zoq6~ZiB+EkjASge+SlQI>rm0Q)y*}ww8prp0vuY?JS$)>B1W9D_hy-l1sTPFA?Z>O z3skCPRwNX*vB=K+cuxb9QF-O-eaD2L6YS56$>eh9&DQ@7hnz-3-TsS{arBV;?)31g z9_0IVxMxJ2r1sShEjsk{gWF);e}T&*>9_jWOh%dU?DldlfT{daEE=yHUz86863_ z8JsF8dE(w#;z2=3tPZ|QNe<)Tcgo7)=5lD{kUAE{H5@O#$2--(7vnS5bLYWe z=_g(h0q*->41@i|FK$yJ>O8Tzo}Bz!`d8?_a7~)1IsYTEKwt9V$B53+p2jU*K*{cA zkq7mM`vLTAz7PsXPY5J2izhZ}(xr98NEqSQ{GyN`-nmjJeUjK%*gf}`Ep_`2tK5w$227R z{DO@Sqb&G(Xyg`3MEdL0`HrT3Q;HhaoE|F1vGCf^%GW?xhm-x5S>oB8G6#}g7bd7! z>Uo{6WVkBELJujqqdYw8`FE>maU(GAuDIHlF}vjAvCjE)(`>Ni?WZPJl<_-kh3fB3 z7IkdY=5qDua7&Gl=Fa~rHK8P5HM!Lj6pHfmO1dJZiI8HfXb2VTI*v$)2@J{RLRKV5 zw0vQ)nKP~QWi5=IjFv?~z)NJZwM@22O5CmEd&t^xX_k)swIGlv=Zos9+uxjyZMZyV zx_q|RI<@p!aG{oB=VISTo&t3`Ro-RgpDf&LuVip`I_FwjEJ#Mi_d{IJ%)M<>$1BmC zjyrMeeQNcm<9_Sqeb>>~%zPh~PWMaZU5s`knU2S%m&nvSz*>VO2&)WCn88M8Ng_0g z3eX`<*zDOsY5;5{Kn9?ufWD-lgl#_8lD3V1=@IIck-ElF3SA^e(>vWKEmt1SPhN!^ z&MQG=>Zx8ehI<}$Iz%I?VVMLE2MZG>$j#q;gS-}DE!(w4CWZ_63 zS#pq&gB&zArU~U^IBjDnbUNoCISxo>3OWh?WM-m$Fyxt%(iiX~7rNu$N7Y1=+U)uW z4E^??guU%lX*^h=lz`7NkP+=qPo5XpfFhw0;tbfdl@QecmI$L{G?D3#A&0ESL`S=8 zR!1>t1{h%6DBf`N;a31pK(N2Al6!YjBwe2w{laQ4TpI}9`q`6y-d7OCr|_ zMPXh6@=#@UZ=z>jb&yHB8f@RSYvK2O{GRW%v82O7@%mWaS2uk=O+Ye&1*Ra6ItE83 zLP21@Yn)O7E(LV}Vm=YsxlQs{?Ke$wBnoJfY*LzGi%v!MaPLq&puT!HiQ&X!ZPD73 zB6}Otl@b8x->fq&cuQBwv#5{+ZngirMCeNW|&*3CFXIHJUj4bgC zAZD8wa`*Y3v4@Dwyw(N=@A{nrq;+UAb+$@eUsoI{b{8Hr<>G#B>#(t?@~Y{+wp`HW zLvc%W1wntnK{5=DQTBZ~A7lM+vN9BW-%F0$EF_l&j{r)U75$lAC|#QvM; zXMoplL|WfANzxwNvPl8bk7fcLedfCL-Q3_P=~ow!fgT;QOw?{~5-o$IPv*2AgN`t4 z(%wVdq@e#puDT!YtcX~9_A>5~gJH6UF!a<`7i?IEraqx(M5dzB!!I1M^blUxHJ*$$qsX`c!pR7 zvBQOE%ic)y5}fk?v72=VGpbv%aUU0pllQO#Tt{TWS`iQurU-?nZh`w9gh3!7TcC)5 zwZs|`XD)@;!mbO2uF%vJX;cuTGPIsR8Ux6lLB;@%;DK)o&>%HAw8Os0r^9~xW$9{8Xw8eq zUq$&63>mlsY!7OAlBH>{9Pj7xGe?c0FcE;va~pgN80Evu zSC3qSTmhCeSy+@ppa@R|Jr-gR{bZ#hkFN1Cm4GA}n^Q-3jPw@XCZ&t63Kf}2@MEV? zOU*P@SG_JDLnz95y&dv=qh_e66Z;ewmL=-xo?AcNo{a&#K$=m_TyPj4q4TSdI-`m5 zoUbc~cZ2ZqS&|ZA1`JUmkxTIPIrjA)bGSKul*DAz({8Q>&Bsx%XkVb5Q^Qi08q50Qs(o)J}an_z)=JH-g zKgv)52r&`9J$oVD>H~x+l)l4ZaAZ=P*@dzM1`}w6a#M~uMHEl5=61#A6 z0|UEVqSqFvZ~EHx>cd9US=Z_z&PLdIBBN!JdnfUd(|H#s0K%gQO^{cH=P~`4@X#g< z0LY?WV9n7*ch~zPV{nQ>I1o6703WHkWz!Tj;D&<9Eo@0V0y@|^E~XF{((VgSk5G(k zUp`!PEEI8L&Lph=Gf{8}(wy3OAyELw9{~LmoBE_unr=d27?3}l$W5?;hB4y%^>{4D zd6(rf_lMtgG)#C#yenK1ZCHqiatt|cD;b-v^e z3o$U`E^Bj?>>;~Zp~f2$(sbyLVIpR$WKAS#mSl*H)3JjAKc*Zi-a|WPpPtqBIFVz6 zho;_!c+}yP&tY=&>L;2($YF+BVPAtn4I)HbNdN9fC-k`t%g{T)TIX%EECwUD-saPV zx(yn_(7*!>QLOfaew>G8@W9KHsP2#bS165hE)xVR+HN5ffD8Z;2of8OOVpo_Gw-Zj zX>PK(<70H^{+jN}jl}BolsKV4cc6Zgj&N?d7{&o*%^X1a7lp?ezSqj~n)ZyDgVQO? z8lx2$s#ZYaj@MUDFCvKQ_IFD%;J4xk#IxHnfktt}kKhFx4jXIGMPZ5}7eeT-Jg-2G z)W1LTkA! z_)#)0#0+}}OGyLD!_v6~&GZD};z@f~(HvIWXe8+>=|6Rkf$GYE3k-oSM>1niDyXWo zax8B2QlIZf@^>RI_|Ro@m29l+cJ$gseN!Wr8(}qK8OQ~!sO!XONDYeN>q_d$lLOhh zb)@of%MDS^2U%VwO)O(Bpo(&|61xOJBlK*~&J(RHcxq9=fq)#x;fkZMIa*gw1xtK` z{1`2Rf`;6V*s5>XqZXb-oT{2W=sT80=~P!?P4SW45Z;dW=Fk^*L+b18eU9sV5- z+pwenKp-1P5uXPj#n#j1Jc}wGMXwd6V5)rfFN|$R;m`qMwe3PuhcuQLNLW|6Rf3M= ziZ{?+q3U=x(F|?(Waw-*5D~FS)r|)2HrL`NaYkDgkXB5!%ULc;n+EwM@H)uSl=l1EJ>XGW=Iw8KD@4a)a~F#2jxld8x@s8wMp-{Urimd-Zjt?c zlS7aWhQIXez7m|V{13LfzIVv@&I1iP z2A~kk_?R^!AYjdCtYG!$g8_UG;T823<$e$5NL=!+lLVD)@tTN(#79W*@(nv4Idr{y z$k2D#x)&7EqXY?~X|0*_R1vH=Yam#eZ;Y2P_nwfGIph8FC{?vV0gqc>)7l!dYU+(S z=YL|ZN?%HJM;9opHFbF0tgW%wHew-EU&iam8E{j*@xd(-tMU*7Y{RH~HiH+%)-#IG z`S)%wQPY+DIBqy-7A^%Pmy5LiTDs8KhE9YWW8v#1YnwQ{6Q_k`%3TNr85A@WEz3v8 zPX{MWFV{q)yX=aH*2MAvVVtU;ZNcNaKP>m?@-wz*Qv5`1)e~ZjtCohe69KJ|o@b#o1;t%f@ zFV6YKC0M2e9Wx)m=3`nUzsZcB8-y{`gPpFPbrm0C}7r3o$`&mwQd)^#x3AyO*RoYmU1R<0&m6*#OG ziaJoDH?;oQaY*omYU%I@*{$&OeIZth{Cn zuYLOY*s5*!N$*Qb&cE*SKZPZ9v|3DFxL;_5$3r*@zWsASinN4z#zjF#hiYE43+wZ2 z&mhpTR9Zo-<13QIK*}h6P29T1b`z`Udwe_m7Uc?KW->ElQQ%BfhNdoC5;2ts2o^=x zUzy}ghC1(Q6gVZwX_ik{OtUKqfCRtn)$ptyhgk!Ay0L;BGX4k4uV+s^>hrM@cU01U z=2^~53TA#u7DeOUhPXzKjgd_DZK4Ts<40P4IsC#0KlnHeer^eiS?mNo;Uf&6ipYr~T_8^QzVhaTYM8TLcFh!eP)*EY+uceyBrR~nw)^B%` z#G-PV(=DN28ENwKvl-o{?qcVg2L3C|!m{zLKGB1{xYS`>Az5<()*OjrjCKQ@Mw*qF z9v~$6gB@+;YYy3_5Uj{ZwO;SJb@P4Dzoqisyz(b9RkP$QtC9tUUF-HKI%GO`0eWHu zaeer>wqe(8_OK*?5l5B6p?zj&02_pk!DcyJI?aQglU=0GhuwFzO`@LCG%x6(Ea4k} z3+{3q>kYH-h0Om;tn4;AwJ+7}93|>1ew9QOZPK|F5ETe44y6|c*uw{Pj0oMHv*@== z02~u%)%VlmZL}KIJAC{HNCbdnXU_QeUp5ol7Qv~ep#+Vu6*udIK_C&oG=n~`U#FNE z9A(wYt5b{f74p>~`#fFTOFGPCDsTMq`aJ;*fhLY%p}3Pq3qyFVVJYRqrXJM&Iq8qO z{3>+M^5tF|RUe2*d^3TjwB4L%lwu5%DOl8Eu+(F(Ssag}_$8r=d1L^=)frtjMXuEZ zm>NC?<*i0%r$_@pJqE@IwI6GitKYkVv(8i@#8O31g;Q2w%ztDc`pIjiIUY&D`qj+q z{U71-XJg36@YQ^vWs|G4EEb}GM3(oud|{};&g7%XSktU>8xN095ejh;yN>K4y{{A$ zrR&7sR`}o5Y*{*Xu>=edmWyT+xRlhSAkVk@vU-jaSoO!=4HCL{jBpkKY$r@6p1~m_ z-mp#f>sw;fsO(LKP8LWYMcZ8*$%zsYd57eBFShwLi9U9(a&<<@2~vB$v2!@tb56GU z8vUC9E!XespWL(%EKnyp#z@dWmPQ&v9LE{@2%##3*D!GF;VXWuPaX6ON0(TOkbF=@wEdF1sQxJ z=9UZv4O$)yy#jxIab0pNGmPq+RgINXjN#@Z@5YXy3EJlv`aUe&$nR zxKjf=6xQXBFtyEbNXIo>Ah(bQW`UNKrO%UWd$HLiv5`Y-tPX*K$0G9JU3%DI@Mr&#*>r;$Plno@+`~0fgw|!Duj68#0$KDpuz25X?QB7X$bX zW`uF)MPLFARM8~xz&%#uV!y6Ea7+M0tgI}kYq-^f7U5_HOA?ax)CpAvGSI>5q*@wL zuxs^l3!%|A46M*17JJ;>7AY=*e*j<{E!`3=cUcF0;{y9ZiKXx5j;&14KwV*%5Tatt z7tp8HL>LPRlnXRT76UrGM{%iV%4h>DGm%p*p`sD5UTE^zV>dg@ASa$3jMvwp4S&Ui z)Q*7gJ_Z|9tpqBVf3Dpw;r2(=NZ>EL-S5&mImAd(iCL6JauHOikylUV)kgAg)@WNZ zuWwwpnY1VJEZ8Ny-)rFY)_t?Zy5(CHwNN2o94K+%neU`Nx(uETw^s~iqS$M7>LIC# z%f|fk>zQyx>#z6`|9eQ$XQ`^=){5F0feocCHDX)iJZ>(Vsju#C<_Z7P{*Y z+v4&i<-lQK25X238I3D|s4pb`*@^07IVn!>lIYdzj$wzCp#*M z{8%Y9rs!hF*1Mmd|EcTlTDzr~X*Jl)Okz4U?B?j4_?Io>zTW%U&Lj8`>)E>gGULB! zLx*UmO=X6hPU4a`Q|_;v2d$a6ZHjG>pF19VB4-u+QyTZ#Pu)5{A=g0T@$)H%$z*r^ zaKW(^wFj>t9!-#$MRuw|-NL4{ZQ@cn?)$z4rVNGkbL*{Koi&dWy6)mLinic8Wwz*6 zvLSbZX9N@54#V@XUx+MUmu-eeNd5<6(bbB@$ME1|Rl)WCo%41dJ*6FT&y1=@x}kd3 zvXutL8NORHvZSD;t+mx=68^>U5Dg5Bzy@GY<=N3nF#}57|05xRhxMAfdF-ZsQr#(9 z(q%+K7R>;0{uFm&wVK&gnjd$q*;puTr&?Pfu#}+2zB#zatmE#cSD2wO?U1RW{gb;G_LYx?_-ICKuNAoJ%Y|b$wKNojtPM zU$Le0R4}nB851&2NJE=S#243#Rq_$0TB(vF#f>2jhVI_)>Bb&c7W<8X#&3wlStur+ zTvq|!8s|F7Yo^=aVye$n0NL@SGGWVikNk`Is~yCS8bOx>MH0>|mO;%kt!{^vRc`)` zFPDe`glXshhgqvpA$mDJkxoawnK z&#%dp)WZ04ovy0OUrkf>`%aqyk7(p!BIcvUt(lm*$Y&f3PFkL<6(|Clz!Rs=jI381 zE(&;2EGn5=FiS1w^}Y3*+=J&fwGZrM3nkGw0o`tIwbSV=n!+-VijHlc9CVjTS)m3A6^wiI0`Vd;a_-wZ|5T|+H`brnt>bk8H zy-j;?48ZPre$QHO{)LCJBZei0PhN6&@AT>V2lO zR9)9)4eRD8n5B0I0u)UgTx_2=!QNC#+CM8@lW3699y`W>#h+yDGBFN~tvuu;un1Kd zNJqyt`X1eT++7CwfNnf4%ayskec^O;fA%M{4tP23L)8|)ZqfF*Q+1byoDUn<^*2d{ z0YPLIMTWAB`AO#8}#SfJkMZ}dt;HK`i)sk7BR{w?L_g}Sl-HG&FMld7MQe3KZ4tcJc zq~pegqr>So+~;yrsvthwDrHc9r*7V1ntH1%2yATiIhxw+ViQ@#YfB>L&*Fksw(lCJ zfcF>soEejv3&Z@0@Bp2+n7`q@t&pMjKrFn8Ov>#z zU}YnvN;Cs#i8B-PchgPt>+9`XZe}_O6>`HT+-nARI>cOu+ezumD@Yh>KY_3hmczf> zLZ~|Z?FLafY*w@lh~P;vA;`2a+NAirWk;D4=-SRUe>pW?wARZhS2)au?$ZU#sT4v2 z#>&YG31!wsTGlMl5H9N{GPHaWtLz{EBnAY?qh3lFXZFOVrg)L@%3#tPzFq1`pB)^p z2e3FC&chHRuB=o91(pgUj+FyebjTtglXW#oYb`4{#V)#5j(ULRs4?@;8`3_qd4ZI` zKejgA+=k4Is8(Nsp^s ziSc!}Qo%#!4NJw+)}fr(=`@$ZxSy-SW}hgIkT55HM?H=QX|5VbLp@}HwSpun3V2o; z05e548850AT9T;%Xg{tTHOB~D3!9s;B`kv-T%xC{v0F!mb0{BGz$N16WpG|y>cM?d z*qIo?TO1V9&p4{Y{Sxy=(1OR}n`18s9T4W%hoSo&tfEBtMw2BzB_c<49jHYEsu~eW zvg%%q+veGcW@lgCc$GPL5wG!;-3`}OjJ}CVT`>+g_8Umd)Etc-RQ+ZImeExcGQ&f6 zOXG1`-=86LNXaRzQ?+#ifO2 zVor_K6hMjo_5b>4BWk~Pu(?tw9(P-d*nFP;aTj!7pte6gnkm3182b75gj8V3AgYdt zjU;LXv5_EK5?TTRMyMkoL8c7hyF#v=lkclD^KvAM87=#H>K?OyE5fK6t5J>@GL?R;z z0SO8qg$O_qix4sZ6C{a*P)P-Mi1QQZVBM`(S24)~E)UgCJ2`I!-5`d&&2qHp2Vge)}1cM+D03<;K z0FcBCkckZtAPhzr5Cla8g*Gf0kN|*?k&ui8kr*@}B^e+R05F6gfB<08jAa=JNSXu? zBLFl&fPzp(0TESEFm8AnF!XnMo&(r$94^aoe*@0-pBKsaZr6=r>xz!zFcY;1Au_f$ zr*qD!&Bk;K-^X25dlnJp9_z-Tk4cJ=s&@GvgI%GMqo{MDKKwn0JSe(OaC0Q$0&#Yv zkeP@i1D=B^d)GTm0>(96&~^%zg_hqL68o2z!36J~X7-G;spsX*?Ru2p-fKHj>IQ_%?fDd_0z1L=3Ds6_?j^}Xe8#r>rf zavRoY*G+v}mFr#zFl*h}xVn1Y_5_#11acl{&A^VA%}-YevD;h#(7<*`$it> zx)lJYn4d_TJo08n1l&DSsyZ0+G&D4vAi|X+w{PNKQn@VjI8m0o9JFK~*RGSHd?uKP~r9JpwjG{f zL_kn=l7O+b4fi{JcIOLhRWzNf)4c5Z0eDZM@KHVmeSn&uprr1nqSAQtdn+h|liWdK zf?~nZtoOg;`BsT*M%nF3yOTtXOO6u6g7~@|9N}?gn9~V;55^QR4cR)-uP`R|?$IOj z>k#*_YL|2q=@fW}X%^>R9p$mjf4TAZvgq$5=>0)diB{em{4rb?rzzFbOwkfltb9i} z@)@!Njp({KC8+u-pw5bqp?n=Q6;*Zd>Afl?qV`a}&&;ZJY%wFb%k17jVXF$rCH4_=L}N_wY|}Dg4DSM1uZmmY=XqF@@$D&zpi=hmFFyrXkiqI4GXZt zvP~hOWEN~&hB)ZvO<9KZ39yB2oVldW+)E6qYNAF)7ru_U5ks!f8(Efz}bB}Q1O zmD!o8tEzHAB;>Z0DdJ>RGihwX8cZ_usc79oV4_VUb{vp}Q^J#(Rz`~;tQRCnNFqzL z$YRCPkg`m&WTQnng4_~;IX2Rhn+>F(q?J0fxm8lwOtNLjbCV7jGbzNYFzG2RHZLY<`x3j#D)nYl=bOcqliszI6yDwAnuxJ^BmcaVpzlLny?(%Yh`0H8m_WT_YqCP70+AvdB_7N^+J>xtAol4^)X| zBtc0UI-01h7FeD`Hd!1`BZO-0ng$6(B%@iEDYDj5u4a}P*awb6)^8#tCsb-kCgsgNn7%BvHfbH2aF&kFUCK%B(3wicaZdAT8WhP$(P21Xy&5F4 z1e-leBpN`WN*iM-dDjCr2vTUIK{+H(1FKdRIw=x{Y3XE5RY;OhQua<{!bOrvOzK%k zAY7o?Hkp#NY0$*uDu=1a>6ZE4kwRC4!&9ompPtA zT&WK|gf%5exl;Cgm0B)W#_If6bFAQc9XL6;L2Q2`g*pW;DV~KUX;CIZJRTgA&C4+2 zg)sRH>}Ao@!a}E{P;rr5=1U}DEi&iERdBVyoVq%x&kZt`R{K3~fn};@l^`f$lP4@E za+N2>MSs%V{Y7!C5zl#vQe;c;ajYtwCEg`oRuFz||LGqevac!J$+`Ox6Tw%a)jp4!x zBjTG>$BvZI2-zGKT_A`xD3D1dz$E~jp@gc7Ar^@wn~>zm4J2Ey2AQCOq|6#pOH!k< z<%`l2F#N<5QV~(tHl(N`Yg8e)T?v6{c4?6<2jZ=cR@B%NY>jMqiX>Lh^$_oswuI2rx~MUR^gR zZ(%hhGoq5)hl!HGl10)Xl9@oXY|&_OYeJxtBK4!r!z;@P5R9Z5C8s7q1j&vB4r4YT zk%I~5(IS$@ZFs#OVeJ2!{;QA4zmMUp9k$srL2yV-21scDkOe-c7AC|i0+A*X2p(XN zVIj;@DL^2ULLCK$tbzs@FrbrfH3klTc5~FBQ-MUxl)*@lNIgQy6k$Z53P%lqTFtJa zmMrlogKBRi;gty_LP#s1&5Dq$Q|gpri*X^KR1mtzFh)ww?}MAq2BvIb?MkHriINay z0udT%In5H_*sw}Y8VLfC1}uX&Qvi~hF--|bNhC6$kdjCna8e}#2?Z2M$gycm;|f9| zOH^A>VIa||W>F}>LYFvlUd6i<7&)PdkxE8HNMlEE)RGpB6M_`rrbfSTYSk2)4@!2C(8rauZiNT&QJy!B^x)CgmsX~Xq%<7S16il z6J;GGLv1CZ1NBB+^y{oRT+?k!d}oGC^b>M8mC|%4|DTYDUJ1BpX3DAv}`M z=yEnXnYt2gdy^M~J7?!)Cq63jR&kOEq)ZeDP*=oi9GXjV6cRxeN=QSDuv&>v*Q(k@ zjF5WYY3=p?H+f#4qv8I@P|?gAljrBYK-5?G76_g@&_dr60G~8x64yMn)TNwet4Xb% zhq`fiy56HGqYFb;+IfM&2K~y@YX9R-{JY*%0013EZqI+x1zptf?Tx348NgwjBeK<| zzhVQ-tE!O-0sABHb3bgMlpa_9VLQ5x4BUxU5pCB{D+}QGNHsuc@+BOljC%*zcq0lY zk<}dh22|5X6DUr@Sb@KWzn$Y{E~|yz)iGFj&v|s?>6r$4j`l3gE+2|;?wST_rTO$a z`@;Y8hI>a6wp}zVkF#v#x1QBz)wSf>HaB444`V)zGzdL`G=g}7c~y%h2MZ%g{&dIV zV31o;>7}6y*!PbfQr5{&jGVV#IJ3`e29>+Eb>fu%M|>fSyC&oe2Wf=bD_q11U0Ggz zrIdzp4~6V3Q%5A3&W)>U;y04{n4HZ z)jNy-M!SVBqn%&A_%aj-cpQDD&bmtt`qzt2E3@aUX&CaLWC%Yzx{k^di{TFdNEiyc zr4IF!luz1sg@bb=W0Yx%&I%!Aq<~hXE>>Z*Q5F#qU&aMuVToX)j`(x8JpcHnSI#_Z z9hgQm$8~SuZkHKza0rDp9jjGzL4q$gbx58jmTSPxdb2W(91%ax}56xjq4s zDCzJ$(^(7`C8363mNRv8)o2(1l(y9wZ@J?J7;JZTb7SDg?YwAjFLB5xdp`V68MTxu zch_FYygqa~2c$rhk@xV5d5Fz2NAlIFR5LaQU?Sx=a|%S*W5fB= z*1$O~C7R%H&3t4VF5F(C;3gS>x1mK?qPxqW1^xsG1_VboeOiTbo1`)oU$flR&w|Px zKD@oDOB{ac?c* zpx|&1KJ2ViyHCq>y>pzq4RBzt+nk(kUJbb@h7634MqwGWOeBy(Sp;9i{0jQ3fn#e| zd&AJt&x~!j1#jJ{vv%bc^nWZoGB(JA7ZvqjRFh)M=L8B`au~yZFwI$0K=i79GQi*m zfGm%`o+u*taCjU1@qK$aCq<1w{X1(}?0?iA7J-5^fHX7} znZ2^xJa}ggAK8!?Z9X^!?)TU_8%rM^>faI_A?1EL=-#w9+OInEyK>}gT+!0C<62Q{ zc}z(GgHd@P08x{V!|}Ri2kgTpWM&M(gEJy7{!i(}K^1zS^!1ix>v1yN{b&6)f@d`Q06_DiK)JK{IE@C&5e~AxANSc=#DttL883O>!rw-9|LvjsR z7B({z)VF^9+1lO=L&{J~1qB6Yyz;A_v`w$Tf|3k339l5`^zmoQ7Ooik9Xx6rCF;5M zVxR^XOP~Si?pDi_A&X*Nw|s{`dlSn?PoS1*frmQSDN*^^W%FbHZ;0bp@qGhy5r{)i z_x<&X`D9Tw()W^?E4w{S&dt{OH+I#ClTGB3?dm9;wUTOy37d<{dH#QS*W2%ws>4Tp zq&~zrbm4z8Pt;q6I&cq+YBKwetnH8`3=+&x@Bbwd!vxR?+4TpN$E~C^TB7{Z6A$Zb z)%SZ{+f_b(Ra8{f9dOQqUuXWh)%dk@txlNdL{5({F9Wo1UfEvB;9D)ut?Zs?Ti#$9 zP^J?Ys51kC?%{Woj(NL0Yqqw9&W}O&{pRoEuhuu+>@|lQZ6*DGANI)dtuppDv+%v{ zzXe#u^>{3i0tGRK6*LLs*KO&y7K`=vu;LJ!bz@CAS{o1*cHcv+?RytKpMP@LiKS`- z(J9(GQGfFhk{Fz?S^=yU;v{2z&7Vz0Uck|BI{s4j;eE`d-5ZT&FQu`{Iq;|@9N*nm zXNRo|(Cyi#8%tBHpqR2nNer!zuR;O@uZqx1P$0X#GFmn@i7mm=B`TeKM@)WJeTzny z&Qxj#eS%Jtk3L1&EYk-=lfO-4EGka$$r95&%}8bd0Kk>-r1}rG$Ro zxji_Qn0l1fqNgj_Tvpa%8q+3K;@w|#Kw*tS1Ny5FrwE1GKD4{x?s9uqc_=kbfDn3) z5yhlVXU<&6Ko6DYGlixp73ZO)`^cwAL!jQw(h-fr^_nw6Zja zu^OlSD}h8}ps`r8E6Jf+#1Gq;r%dv!e(Z(6g z7uqEkHDmiG%-)Q^TX6=_Fkros?JJP6tZidI??ZCyMK_4OjU(b~ogIa|7*QWq?&{Fy z*(7HZ_DB3YN8!4V`SBcmU{sa(orW2^t=D8{vbqJHxy)l`F`nYHUxM4k$evKa9^^@u za|6@R%qo1mdDd?jAROyTsK^-#p-7IPma|>}*oyGkEv1sZBWyq%7 z=QQjFbf}f8-gtp}jn>3<+L;yL1YWOMiYRvhh(hl%G=Ab0ce*Lsvd?cph!57H(%X0u zX*AzNefg}Xe=n5gbyt=Pa{`EA!k!f zWu$7-TEfoGk;8!5g;i#-G!JsS7N_G7S_V_+$xFKCPycO!W%|3B;0Hul^*UJT>f8PP&ys@tP>*@<8fZ z(TrYcD8KwtK;%w(%h+yZteoJycUzt8H8PFfhrRPkv(SHcnTsv$h3D^Osg`MwJ{`EK zAuwRQAC2Qd?fL*g%-LJSxbM~lwEix>irr{q@R7J-7#X6v_BOVZyly<(x<`g`Ir@4w z<(#5w_WX5=pWI9>gjwf3b$K@J!fpLc)^$jICd0Pa?C!dd(nkH2{B`9C@Tjk7%s44a ziml6R`uJNrtZr(s(LkaqDRNN7P!x*=N2^WiEFV7|OGHD?rX37+A$v(ep7W5jmW(f| zFJ&6XhyJY_?r>MY=Wej?DpNc@TzcO*AB4Fy!I<@Sxe7OTSMRzRT0~a*He|I3`U)sm ziZB#lyyaX;7z@cb5IVWTPrBzeP`j1LVWKdk?m5Z-eBho{<$7*X9nUxcc|NXno7_6M zkr{h$EPCUuGoE~PAA+|CCV{G+z zt9ddZ<_LnhBejV4Xc8=00r0TG4C5Hc20ao})qPy;I;Yc6+BXfPP7fdFqpZVOVW{ls zx-gY&)+tv~rwxt9Ien|ghu8{A*+ zsPrUP%;2X;Cv73Yrh?7H>H!Vh_(YVg0us(lXT@rW6q2m;bae@| zS*Ff|I^Hanq2sc~FZK*%y(|w z)j9UgrlrkO3?cx3c*#p;TU1jyiF4Y29A;WbawT(7tz1v#<8vO#|G`rdBqve=xog#s zL;iRP465_1NX2*$a9T96LJ#Y_7?=LC%bOCBMGj6(^HYr^M!~lY*D-YrBuljY1CSME zUX6G6jkpX+F2e|ik8ZNdW&5l(k@cRnoxLNm(L%8AJBsDRP$&_p_OR7Wt*xAQsKi)F z=3Q7~T~qIO#`sK_S-Uuub@=p6tY$!wWPW6Cc_s|XS4fEFNNMT)D|?NozFgloV*#@b z#UJ=xtPf!#4*@GF3PH@wPDh-GDSD}^BcBjfMD_5Qh<*^@EoChcrAnB?s1cI%guR49 z-~R1k4~;~Btt^oa9P2Q4!4$&^m%8J&7IZEt!kn?nJ3R>&Q|rGleIsY!g3%g(o zOBkN92@S$RIu6q4Cv3xc(Kr;~=`8(k=k76qKkS z{=|ih=LKbf3lY8)HOjNQ&Ci^q1*{{E)=B3T$Hdj>M zybBMscI)sXVbQ9^=kjl>v*Bk%mAsr>ZMQ4wz`>r#JN$m1Ue7}x`P@fO?RGu?svLik z$@SMC3O>BwqTeUg<;O3*FU{UcABy5KEBszFNT+mn?)vkX)Ib5-vmVBPa2ohS0K*0@ zFl#y%GQ)1My6}{WP?f%Ot|~`luS<97^Fz3p*77=EBAN04*D_Z<%E}!9x(xvQUHhk1gC^ zV|y;3W4{iyk@~$Ir=mJbJDQvOb1MVzKTh9w*RUc7RT1|(KaDB~uN(3@vmHNc_T01N zZLX64F*Evywj&@1A(J{|XY%F&fFuSKNhFBaKT(PtL)Z0UZUM*cGg`CFCDFt+_&JOD zZG+U8cN2=%i(6%uvhQa&9o=q-dF^jjPT3*Fb_zMH{)}{uhk8bEIVqTT$8f=5#Ul;2 z4f`(A%gvUOjmEfTW9T?Rzp(t-{e6!n1)P4D*{ImqOz*hSme|^PC;A*1J{v9n{dw)p zZ1eqmhfg{6FJ!Taa5sQO4re;}8q2CohX+;OB2N!|cjKwgI|JN(x8nffF$JVT!kj7LzriGP** ztV!K&uT6XApZWCKoV}O?sLMf`rq8{pg0%vA-pFYkkzb2C1xN-DIl$K9$pNr_WicYv zi|Q}OGmuB!u6Tg&g?Pmx04S>EU^pd{&r_Y=odm%uHD`}wrf|oVz4lYS-?wli$&>>- zlo9}g`E7WLAh4aa)hk%A-ANbA!SGT#_?ov}j@g;%XcV8hYL9cgPW*c9A0a?qN(X5g zgZ2+C&f4?{ZStHyRQH#Y>)QoX+LbE`pSb^ah27ZW_hi4*E4%scCw`)0=l+=1Yc@-5 zaaEU^rW7lTS1T~=`2C-5%YEw1b@S_s%RK%MiLJ(MyX&~XZh`LbN3-QyWh0-u)n-a2RpNl{B5!LnSY(sDe$BjV=Cc~~Sz%*)K-XA2;I@axOdn(unU=>R(J{_~m?}SI^5PGc4v;nx#LI()q z07H9}=5qbBhXC4y+aDvLcr0Jj-$VG#7UCAxZpV7h4PQVU4p&nN@N3y$c`SaM4384a z)n~Mnm+IZW%Fg4P@-$kD7soEnFHCLR>Co`E{oMNbo_>0Fo6$sUhS9+asm^w9%OClW z=Qz!3{<>aA@+&>Ol#v)E{+Td^39tu1#JPszm&1?jRXk$%(*SbA59O33oyB=6wWyi$ z=M%-GAPW;k$l-`|MnEgZb`Sg*kFLcfDp#u1ezTZ&lVWox&05xTvwdf|rr$b*^YpNU zt#Hsml<<<5D?^L75r0G#w}*NcKN%Lrr9Ezw0toK(z<+xTMQ$OSiL3tmIjD zdy<@=5zu~f9PevC?C*+@v`Zk@P^Y3Gyhco%<+G*~4dh$IS z?6%R5C*f{dy~W7u^slU~x3>>k+}(=1bAaLw2X}Yp;7*~qYjJmXcemp14yCvhx1t~KeecY7vuCnalG&3z z`6HR^S?l>Bs%O4;$dt5hwmOg%x5{}{wiCM%j+&n|-=|0N>K;CFEvnjPeDcSWU8e;9 zQd`f=xil?!^=uB#CI0XxRf67C7m}XF_cC@(17_L~Kwcvj6OPUZu4I})dp8~bC`?um zbbd)Q(Hr{3DzR=U6p^QmMZU!9A-x@08oOM)UGvT#!6W5vIr5TxI-YD8nIkN7t@m5z za;?+;mGh7GwlIJf)RI+VOKqH8jKe)pPra+)t8l|n6aXoip=*JbgoE( zS-Lgl-)_B?uqk{x;attgZr$kDOGG#_PrI-&aU#s(jOGZ%-?39G{Zux-i`riE!*>UU z)#J%5Gcf26=L*QecX~v)Nz4u-h}m3OEidkt0}M01i6AoraB7rv4vI8>wj2LDTn($} zR<)Tn+;IBi1%>a4K_L&u#Ts;BxZVC?uY$*lIKs}1*S=UiolI62_9C&zGuTVq>GmeP zilHLdEd^m|gK@mvle$#Hk6vJGZqWXYb*3>vO0fNu|Ivc-jbqY9stzs05< z+CTUE%Ak5{RJF+P&r^N{Mc-S(IaVUqtzcvxNGz|$siwIA)0e1IXeMjugfN})V?|By7TGQxTvGTF{s#0HXS3obxt#uxyE(v7#p4!oN&y&LncsR$yPX;-3HC6OUf4uTHbc6 zlFTCW9XkE5CpwKzf@oI?J1;`%Jnx-QS}jiXbhkzpXo{Qz0fuvMNB!!PJ9N}K1|Ngm zcPm!5M7Nu{4eCv+)vdk7Gs(H6@vo&rNU3!En#vjN1pahwmn=?Nnugnv)4itJu^qA8d;tpnMncDEyox`x z&7EXICF%kC5%ce1*_<+X^y5-H%#jcs26 z*K@NR7>{L~0Dg%3mg1ED{-j1LPw)V{V5YIQZT`{?P)k%gvG(s^Wh=34Dni#tsCoPp zI+>bEe&T8FmZ*?0B}A(pqAnM-r~ ziO*Rp-dcg^cI&Q?7?A1|zZCjyuqLd*eObCkV zgINx{5nvq7=nEM%Uar%-xya4OX18d_U#wr}HvXqh{PsWwOG{i9se5+^i!+CH9L86| z(@XVw-oQPU_-UXIL9-8|(1V{HM|M;w&*h|+Z!>={spzCcw*$+5nYAl$-PcW{_=xXe z+Ol?#1~0bsp!`tqmtVL0h*vzpELw1?TU8HNP6Z+VN=Z(~fSd=I_LSDhbPOwrWwNkK zv)4pmOs75ZUNgs;(U`kDS1C80ihye=;F==I-{eBqbaN*Y5liT%Fn7W1_L~F~v9AoL zWD1PJn1`RQhwsbA2btjUYOKGTA0X~GVTq;fnoJYM(rc)}FAM{RPy#%u7S=h#zRf#@ zPlTTn0k=&ip5-Nqa^ulWht=tzH&DCg6Oi1w^5@yJj@cziefGmJFgkc6{N+Luvym)! zOM~Z(5SYG?kNOt8_`*cd@DR_rJSn<<*5Rk_J(>D=`62ta6{Xf&rk6`}@J~%%w-8zN zpk+Yy%1N*8n6W>~J&$);Wk8w7n%RS9+OOf%tt>oPn{i!hZzjSEM5}2JKl?_abus|W z?1rVIclig@J)A*r+x)=+$TWq$S`Jvek$BeNq&79%s1d7= z5M_%Ox2m(>WG%P1J{a__8!^RU-8$w*RJBCS=WWpkoWhUV-@Lsmsduwki^@9 zXFTaE-kfvJq7b5@Hg&2c3r3K~E$*(hJ=xZcA71r-Zfwo>-8Mv-t4S0F`{=%vnquEgBXdVma?zt}&C_E=1hJB06k93QF$<pCC=^|h^G7UvD~fHR#sXto`4^;S_Fl%jCn7{qRNdB{(1`y zCwV&lkG~O7%k<5j1+&45NBbh`mPXr9YcmTaWTcCF5_OsDcC}8L4AcsXv~uDTPH#9a z&jG7>NVUttpGUP$8jvnMb1KD5u&B_Tc~`^xs<}A7KZ1WOWqd;=l%o8KDxbW{+nTh? z+vtA)twODYdW+_}AG!DSwF7c{pxXz7K?5NB$oTZh@)NN>Dz|Suxk~O5`;sF3E?LMJ zpD1dx;1%+cDv;u-VtII?>uP=_zCkkbB&N?KW1_`WjF1($^t2)+7!mXq#a@&IH-4YU zIro^wB1hI|tYSrKxK)jRxt>`!Et{5>*N75?6z?yL&8RNnQAM{`|JRO^*~puqe0Djx z+=QJd8H<8{2?ifu+!8{iDDverAStE%eNm+!t8W2%?g591U5(a1=*wMG{_^`0+Npg~ zL*{5tw(AObTv?j9#u?}t>wi)cDRYnFTwW9g?)GTySP>t8qhU`l`qeM56gE>4&N`-4 zjCEE<_Ya6Aj*g@bO57-c=9tIjUZk`CQz1G^`*lMCk^&#z4aR5Y!+N6Lni0(yNgW}S zH%Y>%9G`Wr#`93R#K2V%(Y5TCelv7_cw}8 zhi2BA4%P`<83L{f56+TI1u#s9#ineSQ%SFoGGwQsg28a%xk0~!&~jlP^x8p5T_BNQCc{O))@pZg0`)wAZUy&`bOBj!#9YxB>Ec zb-DF;tKJVKwuUaCfPha|Dl}V+hGnKx=jqj*{>(SROH&fJ6jMopR!*_-JMNIB;7o?U zoejxjgEqb+!0U&zR8~4$BNHR06%hStJN&T>MGTYEBa^7ET zYAL24LJG0Wbl%h~tc;%EY>?Zqn82z9Z0IKHs;X3PCEIhFi%N^62eb@VFhveRL!<#R zy=5x%3T8hfk~0bken4)fOzh^L411(y8Jbq>8aL-AzkBPJ{P;EzV%Wm#Y7_EpkW;{b z=Dywk%QVSGtDI$OGjC#6Mu?yPyJL95TwJ_)VMdbUujM}=PO6Z1|OSnI4wqayJ$v< z&=rQp`bnS@dHb$dzwcIl5l3HOb*%5VBDAcPBX9WYN%HSkO;E%)oB;szvNrUW;^4y5 z6_(?2b2f_36i+-PU^7dKBEFB{sXuz(i~PcC+`3K`mYa?Xg=2Fa-XF24$E;%&%1wJ>rxI1;9ga}xzq`wce`!# zf18+pV6@_Z*gV+|1msD@Qc z_7_SbL}sFhM2y5V+I&}McazK~i&m;7K*PcYy`1xKmtQoO+XPYmZ-CJjt)#18uwa^tF3`Gv<1}?DzJF ztt{Z-R~?q7#OEh|OSKLv?tYfifwlK8nJOMR=lA)0#ViylXpu(iKDXI6Nr7s!kWVcx zpC6G1czR7p0L}_?C8UZ$zVQl z2GC}jV`y6vKy6!O=}rq-BBhZ*T!#YAZRM%<&>RUkZK2f;W3yI<&4F55%lOgT?1fwQ zcf|krVQYn0ugUv4;#nP8+onP#i7u$c+HS&G6gvQcSt8^r$ok#JOl@MmMYlw+-k+ke zV3a`|w2H51{$}PM+JpBhllu;`!{bOZj8MO|bt>*mSPBi6F{8c}hR+*(MQvEe%F(QqQipIxtuBqVux?#=V9k7F6xs5)3G#k z+Z#pX)>64*WK!{zZzqURoWIypR+};A6C@} z_U-GM{mm)X{nEAI(((!CP!*->*QR>24?{zfNrA6#x=gE?f!UWca#s!&oEO{^^CYiqZ={{_Y)H^WoPiSzyv_7%IUy z**CyqX5__bx9on%F*wT)EQj`lwZ|Nqndx_A#F99(Zd)v}2ytAkz~u(&&6kQt-Xf<$ zN19@n;IUdr8VMC$U>=%WO2l5Ac+S9E8fJIcJzSgjK@}{Co!;I|d+eNEF`nU4LWVseJz^{+##-u zK>hwBHOZ@Kua88|LQW+0z%g+Ekt6ia8jMlo(n`FKlQv36p(5YKao18uDBpIjeeNe# z!#0_R8ZG`J=WJ%L-6{>jc4FXdL0`(i67o2lS%T!Pp}q;gAiRcTv8YyyFMwPdQCwYb zQ=XLd^6rfnB#H3h*11Tf`+uh{>c3M9U0qq$rCexwel7ZrjgT>&Ef z-8zgnPb^b#?=9__Fw>cM$glq1`80~m;`bokcr;lOQTR=4h&bqodq8{j`@T!{lcGIm zatFzBDoyilK}8R;9WppMKhI?QV?Uox{mOu_{N|L?g~lf=zXbDZu8u>VaU*!V053NR zrN#XpIJS(!5dB4hZ=vvGTrWI=L!PKqYU8n*Z>VRNf>^Oq`!%bi@_JhaD@Hx6dA%gA z4`3cOeHf21TUdE$Y(GCL?#dB0%p6TfP>a(@9Ne*+7*4qCvcCGwLb#0KAvAemRvVD? zRy;()6|uwa?I#yxa5-u?HM{oiUL4=6c`GAsyv6_CJl;kaJ6qC7)%pdb)}dHJn+x%} zWfoyW>rgShc3ai*w4~K7T}vEO?LgR48&A5BJ9(z{c3yjcA8|3Ve^$LO7yI?}rP~m~ zqYr>ydY$*?$8iX6hjyy5`vgo6WTNAgLM3#=;^BIsF%A;cE};XW1Ym559oj|ex===a zF~yHKuHBXSAZle3$;JjPri^SA^WV_!$(1Om=fbX3gbbY8Ka70;i4y2H30l|iT&_+V z_*-+O>^tc2m_e4NFoH8-IF4*hRP}2~fDWuwN62KSc_$S=brIRdcKdU8 zG%g{+t|bJf5+d$D{sm&B8Tq@zG4nyb*4U?Gce(ts6=t;VxH3DfV&j>AO<|l|F?~(C z9oP4UR1fWW?jFN%vOmKfuC`3=v|p{dq`S1y;Rm7N{CDupAmS1eQ22KWT9a5rkG^O7 zMdq(VJxg74#NBJ^{v((u=ffFXZG83Br*MFX(fm?JA04Nje64vKqFy+0y>I+7e#e{OCnug@sXeF`gSw$iK&*h`Dy|y@T!OqYm!c2Z=X|Z-f0Ax1x1OT4oss+ zAh?_%ta@=$6@rPfJFp0IuM9<_%zoTh)V+lzaraGfQEIe%Df7wJ$g>@9s7GQ9O2)3) zvC;oCWA8@zr1qqs$9meY|9gE)TGI+jrKDT@7ryiikg})#z@P?L$EiCRhVDpDPX!X* z(SxdUoJIQem>tEMFZG@9mT$xBuo=mIuQ%v4eSriarZ(cLTiXYsHOd6n?3*Wl^DOXn z9h<_I(4-zMV1<$1L=ElFjUY~N+?&@MicvK1t_0%p7O7OoYjR`$$LMRLwgIYT-}fQ> zZ_#0`Lg`n(Z@hGCzarKg@uWcnlc|74gX472#Zs1Y3hFWn$~Z!*y2Z5DzqAqKT?Zj> z3=m1x6y>fCDs(%UL_XdZML9vXB#VX0()$utpvl`o!FchfL#GQhRFfs68Ih?WYw*oU zP9LiV{3wkW&6zYesHfi9dzNFRb+qt=M2Ea+>yFpXc|ozD|2JZ0$J$QP>*DOK9;L;m zq!NdSkOhmDJQ>=9C+4q)q0A4N08vB;CHrVCShaNa9iLm0u-$ckSYG^+=ACV?n#i|V zTa{wlv9$C_0EJLEy931&o7x3LpQ!v(u`>*8UuTBL)E=kKi#E<42-tXox_UQjw@B(- zB>(z}6bjQ>J+>|d|IDG8g$b+&tkwJECMH+-fAP=sbZ`Z}yMx6A8r_|A8v{*e{E3I zoNHP2)x13Yf`hodHDaxt0(~HOAVn$#<1hYdl(p3!Oa0x8IApGp)?eKH04IjIzD!$1 zc+R-$l#wh--Yjidjz{Ms;x+#;au6MPpEmV%t>Rl}Eab}{b`Exb>NK+^h)`c{W+0e6 z6c1A}sJ~6C;91*oj#eZuQ9s#5G9;!+7p%2DUX>K6Hl_})TC^+CNSL2$DzBO^S`00) zCTBGdQL=01?F<^~o)_-vxW4i{-*~Ut@2#}Uy0a&dq6cK`&R$&-IZkuF&q^rgpxVt+ zo1FRKR>^zA4M+SoL@3;cRY{@dttU;T)z)a3;D6rEc*2_+8YEC!#eAhYVuxkIca~u)P9Ox<<{xkB(^h+`tQpy4%9n?!xW?ZZd zT?2OeYw1K$(JcoQ_(GJ4CTy9KR3Q7{ixShQ{qy;Ij>-a%MmAWl$uUEZ89mxbI>-Ch zx!?kSVSrHOKFYa7X8>!YLiaZ68wll|jle3a z#4qJ#l9@7D;u|?BnZz#3J{fpG?I# zGP`VwN!3aA4)cnj99@1!_@X{Xd)F&UW=ZRcL*#|jqsN_arhI)c0%ZCfokN!SAk*~l z$Y?}=KAayDfGan%1X!MiZX5pOcB?C5!8XW4YjD>!$sqZSh&=DG^R6r|bM9igR zr|mCTeTh|?_3nL)=a7nB-d#sWKy(nj^~c$|IuVsMhd_yyekk~%o?$_|g^H3f2P?!z z=76hJUpIW2^)`3Qc47BY{_TNI1jJ0DajXa3-wpPBplVTGD`9)2G!aJ~B%S;v1kJqg zU}UdwOBkncIOXckE-C!Iv#Y1W@NXc;0;50dV@dSNZW`en3004g={4?7fs~&lYjkwG zpwte$T79YH<7H*jIWMM~$HTjqY4aZc@9~j_5l4lX7JP0}lGT`0R)B@>ZIk(up4wG4 z2Cg$H9t!1GFW#PWODHhf{FYv}&$AdC5b2Ons6~ z910h5>j9@Z%ER*d9a8bk{!8(8%Q{hlr@_V!@^qp}PKV`AEeu`vU|B}v_$4PeI2M@c zXDYo=LxIedDMnGs?{)t+kViKyopr)rq@X0t#Ae@<#)!LNAlo`oE8muxd<^_a1WV=~ z@3)maF2fQ<9XNd2*AII6FDR0K)jbmamV%sq+amVqV(ZIWq3E|2=D=xA{E6YO7KJP& znpP{KoM;y$sM@DoM=5~1ngM&bdL2wJ9U=FvF8fqg?a6smLoK1M)V97EZCzy2+Z_=X zga^%uv12Qtt5cAogW8=8_{8KUrzoQR1`u6@a`9i#^O|-A)@>dm0b>vcIWeR8WOKlN zA`{UY7ME-l50$bLS`c}uqio)*oH0%9DA(MY@MGV~e7);8;094(Wc8&3uGic0nZ2pK>W_$DRYpYI`k>+FpyapU z0cA?7dgmpgA5?9%1N#maw1fp+=EgC{cOGW}BGoQCYDBOj%bz~X|#;4@e>MG{szwO|~@9b^FvaL;`j6(f0 zbsrN6;Wnn|40;=j!wYx#)A9ja^^kTB+lc7Y8j0U+x};Q(Z@V|^Vd2_>SAACd3TD$7 zoC%#F=sX97Wl=-$Tmmjpu}1jB?wyTyO~;E%Gs;olL+(I_}8@t3n3I;S9 zno*=xk{M3WAfyONgo$U+BP&$K18h#PA>>h{LTY9V zii>9zSCorV84?vUse*l`A|rDjE`oeu><=st#x{fYtqu&Z7HJ0LMdLm+3?m6+LsXC= zs(ww>fE&h;RV#orWw8ZGrYUh+3{@*tlxq~g@>Q(^u*Rrh4lrcn&~&iiAk;U-B}$a! z>6uAe`df{4gu@GAWGi7-L~l+*5^Al5yW!>Fz0fOy;blUWdrs{U}`k_l_%5u62Wc~3JwzY;ay^-rzhbU9nNF9qi zw~NU6TKYek@f@sJQ5~txG_GsS>BdE!n>rOC*{911=lD1&80jMURG7>Q>M_a36j*3I z2nnJpBvdlN$uz3QoKY8lqbdjclBKbeL)!EV7ST;=4uV4nqHjojyziW!Ytvs?X8(GD zPJbRH0HGausYfty>0zW%3p`7(siki-kkA*^ooJBd%W*bvPGvrMXpsN1q}Aixk(L;; zu1s-}ei&YVIL`W&9kk`z3bVU9V`isB1%2S}97|7qXqqr^QYMIN5EjF{h=A&)W!rja4OY@u$j=YFG9i?E zvfc~zZdiIF@caB|--R4-Ky-*mo*->TxnKr4XjY=fKAB>KK#n7dBRU3LmHjJ1N69RW z$f+-@i5+DhrH5_ns;BEzUDJ%lI0R2e1{oJZ8LXw3GyvmNV}>)Y-om6lT-}Ndv*^ii{piAO28>1SQh=L3!9Xe}~1IehuMY5A& z5oED>nVFm>uUTQw%^o__2ARVpj3b<66cMN?#j}eyWsPybr;=-tvKr%20+mQpJK!SX zGUX_v?21*X@}eo&EvUtl;NkYwRg2W1)-zn7)w6L#F{Bx(Cn0r2iYUv)3)wRt z6$oI8Kq{E9V_($S;i#}6>+&A(&p-9iW($M#4<>PR2b6c+v1Cfy7APDxP(y= zT;#)xalehoY31lM~d4VI(tk5SfpWuuw`>OaW%BTEz-BVwoNt>mpwv zsy53V_#wYjzH@6h=vH~@B#kPE%XVOyMDQy<95%tUGWBiNq?39kKI4LjhDT=r1h1MM z0Lf~okJ(XLxyPktjy`?(&EXdo<-5|o(PT6NWu7v^_oZZ;iJIMQgr~?&GYn{UD^IV% zdSb;iGSGC<-9U-nsP16C3~b{ZpyA=CUY%+uENhlI#7suuPXzL*l9>aW4z}U;)h8Q{ z`v{!nx{7S!q6t(&5^_SH2qmRgdG*3bY=}`}HGpQh3qe-DJSlzvH^wwIq1j6Ol@t4# z4DK()X&$)_b_)Oop=oB=U5N~(eZv~x@9ILM7hj2JtfZC_Su4=NaPOv z}GIC^)i+W6!!h=Y82}l|(w(TrbLQV3mhT{gfHF&-kVfq!zUE6=@ zsJAiMyBGLo!;K&%G3k^Zh9HnXqL86}RLPXy=2JKEjWHOC3ZuoZ1N~&mhJjOh+*rZE?2K#}M-nW&v=+^+Oq*eD?Wk*(yjhw`7s1^1LtQmtfj$W?jt| z>NMfe7yJ1De>eo0U+`PZmQF(hWhn&wCWibDg1ht{3{{my&GCfizAF07kr|b7YdH%W zlGgc62VR0!lR~3i?_fwl4Fx%!3zw(SZ>@~z@ET6E68c(osgqY6tJbTPTNZcK+#c`T zh|T`OzPkuW#5u_v4O<~ZwbLu*X9j%c&$y9pyo0wW)(OICdT;nc zJ?VjNjHJ)_*m!=f^Ak9R4ZcGW%R1bAv79o3<481d#7YxCGU}UElvI!ozQ`dKTeh)i z+kW}SfD`x3;6qK6#qml$kV~@M@K{Z^93$ouWBFxF6OG`rrR}`G9}D` z&KFZ@Vlh3$H+K^PSAKum=SERwMFfS;d*}J%8L7qFSgBpnUHED#M!QnJT7MK7_$M>~ z97}GPEM96xB#M%u^_Jm6aF=LrENCn7yd%+RX$BxiTp0!+LOxYXP@WPQ!Z(y#d)9{wHPr1EB`1_Ex1${b6NN*xvT=blVIB%rC|(X}J} zeZq9ijVCuO53Mmxblta&7&X?8BX@XFRy-D=^(JlaV)Z?4uChKnp`Li9@Q-PijRpfD zI<5;H9+)c#MAd>Ue(}d+Eqb_g<)8t2C0-!!$Vvzvq9fK5dljS45c?ajd2^w=v}o@~ zvJDP$vf0Yij|5X7Dg*bC-So$|YP>aIZh_R}O-R(^fH=O#cTeY^DA}0!ftfRh`)^?d zB|kRi$~?c&1qSpx4WDvU0%-r05n3hlNVazdP&%13&$|TDRpz&LNXkUcRr4)>=fD>N zuM83z#3$TsSrECL9ClRp1Sj5VdCcRt>Yc=(E^yoLLUuT!VIL}lFi#8%`dEX6S9K?ED+>)-ps@XpNw|pb7ezT#q9qPuqB4pGz%wLXS<+ ztYUz(s8f9q3M!&r6AH~b1tk}~PB|5-cie(x2B57XpIy`lXM_Ks38y!W)A7dRf%b@N zdH${)%xB=p2V3 zY1%pqd2;F>;?Gf*{gXq$HCVu$HR&}2J>C5Ff)Xq}OKcUhkBSr_LqJI&3Ag+&OV|3_ z;@ee`kl12<=6QQTMTway!xodKhE22DFZwl)W+d4e2hWAp2kaByTBg449RUT`-9Xxv zW9wcCJdFO=n&WQ+PF%hYK8jLXokI^ZtqUAKGMzE<iJ4A-_@J97neZ9`9+)%*xQkSj$odmljpD<}njO2XxKQzQO{yYn5CEn%05D8Szb z)N00&D~fL3cCn~{rv6}V%ZG{(c*exGe$Vy4P1WH=M9WK}q}p92rpy@VbjX?HOpTdr zbYG1k?Jy{d=g?hj)53z9vtnIpe+{V7zA)ieE%fBEC;I~fq&gc7@vh25=4g*45Y&_v z;Ha&9`(_|w$q$0WI)&CF%(9p{&@R4*q3pSxZ3o)Nv@mNDMan2%Ia2pVw|=5fIo zX!>dN#Fo_M22;F-@mEc6P76-q-WK_Rxai`DKiu87GqsxG_UWZ|+nmE`p}AqFLQ;#B za|3k0oDd^n7nd9uAOv;tD-Kw`pXbXn70|H)hj~T0J4k05E`*?tGKXdjd671dpkgmHs;Kb1lAOEn55CZ*p`=yWPW(WxY~jeflHc` zTxwFbwPSJ78Y^+-x}+X$ot~R_^y}bWTN}W#KiW!s_BWT-2#haNcg}ocef2#-ee3c^ymn-PnEXI}i1k_xxSO2yvF>dNh%(ml%i!&n{A+RHzIcCZPY* zYiRM@{T^i<3qR81^R99iNraG*uW$g%*^d|O>` z$uh3X^^m_Wp5g77q-JuxdWD(jb5euBQ+d*n7zx$phQ zgAzWhQARUH&sKL~>6O<`+9BzJt<}j7uZ6|P6SP~IG4}qPefZHKa=w6**^Xf|r|9j$ z@>;gD6;R$!*L&;rRV7G?kaRKZrhuVIy~e467b9wakO_cB^gdtx4|Ep>Im8ttj(y2G zQ)PMAX2n}j@hC#qjVd$QL?y+8(~IISN9THreW7oSFW!heF@E)Mrex+|;}W3J$tlCO zSCIW4X!1_hiOFW-+Nz8YU0Fue1xr{8@z-CqsLjcDwjigRKhn+MwfFumuw(;5pG=e6 z`Mj=1xQBwUfIy+y{#i{0mZ($%*D5ESEwxXDf>)38&sdoFrMGYFDDSV2fqBS#LK&v4 zNi$N_JuM+Z-%ruiDDzd?2<$sISNGPe=)8th&49!LQywn8h7{qRSST(Q7n26qlJ8? zNBNqC*uL*2Z%KVdz%Dj+)-@`Lpl{ouJfXqVX&S&X(8`MFL;z*ul@d{~w+_~YGOQqt z74x*KGa>q8e~vnHQs>Y|4Ckhgx9#h_qw!E_rDDp={<*^EBm6q}Xj))VV9b}u1wyY1 zu{yCD&=153qm=akCZ3<;Uf`u17ddZVK4{0Hy*Iq{Z;UVPT`kILiXXg!Xf9}!i!2-q zbAtT`@gcEA3g*46Uf|0hYF$Vk{HoJc{(Q={S{JKBq8ur*EHR=!H0k6n|3Hmzp8?M7 ze$%W!-ho+l{aB9dcQx(XZ6ddrgs+T>is7hh2M9-+lSG1Wd{_zd`869Z0art<4lhob zR)pL3>V2&V3owblYKHi2PZi>%-l4|OLH^Ks!VrM~>^b998^Jm#IqcPpdK(FA&d&?8 ztq1b9#{8j}u=z7Snxe{Oecs(l+;M)5Kp6^Z>%Tw`1V6G2x$=}sv{P=kYp|q>-P|8; z|45|Ta;nA4d(+g$CIPJ9fbgn63OBlX-xyP&Nh60b;37d{DbH|9TbnPMK;6#Ya3!9B zRE2Rjjw7)t7vBp%{#<}c5isBjb0YnZjP|^~qsK2EO>V%J%Hpfl#EwVz9QotbN1EoD z+f7so_e=oQs5my=ytNK4DG zu3B~`v_(Yxgs>Szg&uh{Q5`EDHW6)VRc+*}Pw7nn00a>Jd`JOgfWRPJXNhl0asL_k z)~;A}ViEKhk$YRWM9UWTf8NWN{K^M_(D3_sf4S^=d4GR@{`gq`xUBg&t9|YKc=_n< zeR+BBy}W#xg$nrsCF%8+MDx?q&I6;wy#WF^ajY(gzt_4$Dw)LOhcru3=pXJW z!Wujde&A<1IEZdC)g7Zs4v4|34HR7?(XBF{W8a$pgFXLBaESS zg~}$~p$#$(YlnK7V;aDPQJR=kJ*dlRI&rL`pJ(8%2K9dI%TyWLp@# zVGr^ck&D2WbEDA|r)9!}9UV;A3Nq)VPe>aETt%YeIq59BYlS2nr3p_wI)-pY%MY<7 zGUKi5w9KN&0im%j6fW15$3@*~r#UdBd&WfPk+8xyHm^r!JtY0)_T7|C0DwRkYz2S~ z(NYcx!7~nl!BdA(HpZ4j4_8))R>M-42t`v45EoYx2?>_aKvz@N5=S@2(!vfg4hd0) z0U1k#;-O2T1%nf|=z^o3e1ke@+e|b(}9|jJDE5gGnDbwV7KUmIP`BvoQI&gdG zmxxHjE@KKixwS>QTqNhU9I-@w#!Ci}Uygm|XB?qF|wKN7T(j zZh%>w7j(bMQi~}QKqZ5rS2ado4b)-oc$*#xE0&gTw}X!%&4Yz~Mwj0Cz`W8>cEu@5 z9I+Xt-TQxpz*T)>Mn^tpD=-S`LMadgLTpi7F9|K_8`j7){XgtTsMiC3{Y!n-IgB}{Z&rh7%YWjx` zJcaoTt|sJ-=Mw_%V#;AIgB0&s%(LqpEy_H-ETWSuzVdFD3;Vw-gDyAo^%YY}d;)6^ zdX!8*=17N~d(!9c+_=AKHM#I?Lny;0*`=Yd|UTL@HS)gkH$BywTMiTujEVr zXM6k(butfN`tJAf|I5z(r+=@msjjcC{#pNTF*1Dp_n-a5kZ=BpExMM1Snz%ty!*w` z=Tczzbo+1$0CC_7;9k`k+ntWA90l0P+Iv3cNTa-9q1*@5x9td6eV!TDfBWtgGPb=- z^)GI7e_S^4lWy~E@;l@N<~*nIZ9Q!N-N@chyXcuhpu#A$yU$kgl=lbH(tgSN&%Cf| z3L8EbKODMq{>EH%=8`SgGIL;7* ztj+b<=IbHsK_Zcw7vU_%0?a4bS1$57u;+e{M1SD}J zs#D5;RS9y-%L|3gU}KdQsOA6j(NJ>YNYaU_c9?Yabcf=1 z@hALpr4bPsoE-9B%Vg}z_vaLU4On}X#)t5y(d{PXP|Focm8j0f(w(qIkV6B|&>)ei zi+mI54uAsar{D8PN>2k$t$_!HE(;K%;FzC=Dq?Ph!Ggu~Y)o1|WuT(K0r`14vycF@A{aP22vHPSfGmj7zX1`BYm87B z3kL4fD~f_(iz~uPn2j{+!5fY?Z0=S2Ov^GzOTeL}R<#9_MmdCm67gT5Y%*MMMf1%-s_5C|GBs`S zxP?Hv47wuV071B3g&GpRs=P(qY#CeuUL=yRvIMp=P%W#O7oSau`- z4H)|9>gZ@93pNlV+i(f1$}cR0NOGA!CL+d>RGJD11Wc|ctkBe?S|_vt5m;J9wEJ>S z2pgb=5wu3;tc)f%JjAM0QGIUD z!&{#oLzYz3`}dt4v8kd#ShpXOV>#+v2B$X3mrw4`IvveY*`wFOu8(19r&?zD0Ql-<4tYlp5pOo*%p~bA1^C63^@3~%v)NOfH|D3bU zpQ=oWzF;Sj%&~+9TWVuJCAD%ueGAlSeMEClB+6vN4BAa zNs;_m;9zqFSk*sH~2g~p{aHQ`4?NEA!TbonLtxnpSQoQwE{ zwQ380354$W9XVqREvrD4z1G+UOk8oCBRP9C{v)sMCqUaB%B z`&cX%hI|b`zjGm(90^8C}nj8(h0O6{d4>uBxA3-)=f2{i~DtQh>*#pP?BxlrSjTm~=Y&P;9b z&uX!n$Bc%jJNn=KH>;W-r_G~wtI6?|h2{Pd{Up`HTa&X9LFv^oo34)gsI^{PbOIX3?X>na@s3M!XG;%PtBhK{u(jR2#v&mBg*(lJsE~t<9Yc?F+d` z&khXp0<^|clgIZA?!yW7H)34(twzpuJkB6%$NvXYK&-zVljltOds_-Ko%eS1t9J~J zN*>WZo~FD-4*vwAJ$QkIu;h9wx%oj(1RQKyb-tJk4J5@%RjNip7`&85Xl zsi+ALn?qNmm;ovBLsI!jDB$@lrXqLk)L_zc|KQQ<{|I~N1k_g>+0Li+2CH_ zY;9rS;^1xYzPHx;j`d;c#}9JyaG_OL#0`d|;1K~+Un6hI3J5Bwpu}QD1Vn-iWL65KP*|$PRw{xlL`4Nu7^xVF3{h4i6k`z>DxxG+RTPMb zsEDcvqNt+ZJ&=Sj2rv~xPdj0ii&iE57;Ut6cQGumv4kV1k3qP>t^!FAK`;yx1o03% zHj}Y9PIkvpZ5R1%35bG zl$Xz@fmDQLOmI-7k~|JBZ;8aSf9wA*uZ{2D;p^#j{qCktqz=#gIDfx@Q}!+6U+-pO zR@#V_DO8~-%X$**bV%4AH_LGOA@RWI`TI|T?V?FNI#U_{x&lnWnowv$0s))!1P;Ow zH~Zg{+V+2c-}d*rO*Q=y|7Rq8pTGBN{@>SsWJl6JNc}!Ec7$r<5!2M68vzwHN0r=? z!MaHjskW%7`MrM=#NNH4qB{Hg&Cfq~H6 z=!FiCOm1$YmV2A5IQ|3|5NQb{r4A@XG#XX`nk9*~3Xo)u62nCcCdDa{!ekny1`t#k zx^6`fSVmzYY~0HPEIr^LdL{sk-@7^|SC^s4T3VJ~`Q~)4i(745YF%W79+Ntit!9!% zB#bm0B9m2VnV^OCd>zGjz3+(@Np zW)mCflsQ9+tee_%E2r1-wu?B@kf}(@?kyWkPC9$rYzh z+Udow7)&&QLk$8PwYSN?BB-knnkhBCD9Lj(@A#7vkt1lL6JHa9X^hCdn}S1IZ4n^^ z0+B3Ch0h(W99Olkg26&%0H#BM>3TdG_pNB|X5jQpCkYA5AEkPh6 z5a`y~0?1NeGKy_(@NzjKiXksb+4i=$?b^#}wzUGB%$)d-ZO5g6fU$y5bbe4u5)a)q)q&NItGGV@M!Wf zS3vdo^gSf^CEAfIr#p4^*xXLvbWoyJH6(Q$X8|=;R@iWovOSK`*p(NF;)gR7DqYvt z$Xt!RdIORr+tSW~E_Nxo9+WWz5rbb&w4F?Pxeyo!X9}ol7-*D8|0K^{t9*9N?#BFK-`b48MhQj zy{>eZMc; zSBH(~VKJjP>&GRM}@t8#9&cCS-aS*@dciC!4bG`IX9dezE_>QX~rasH?V zx6J1IkwX!OlNEV3kYuTu#`RqlrIHEkGkex=Ia+qKrF&A$!U8{TJHVXIujURqnADu=C64GTgO3X}LkfIgrQd`%!ccjSv?>+oZ-m&CrT z{E)vzo&CvP6Smvi?imr7Bv|Zkm)u&>kA1GO&bkL-5lxLWSjCRHw;UWsAa4mkxHWJ` zBDsAg(OXsCh&rwj(R4+&XT{YrqeEyj0O=duSkI?IXj~+D^xX>dz;NWv?5DE`nS&xz z-ehdLxAE16y^oHMu5a^Ue(s#Iz?-U3Ayr6J83LtA1SCo&BuKB3TTj|?Kn#u!Y2u!O zBGQ#rZqz^?coGt2ew=%_X#-YR=6beLhYOs5>r@0^&%`q%IG6-3Ml!*Xfitz2D$ljmFwlpVk}w5MXg0MG6G@Iulj7bE9ONi&RQx!Qfk+Gi zpn?S;KG-y@L@JVzXkfHK6rmu1Py!M_q6j1+!pTC!NHRAh5K=TUWWZ1up-c)P?F5iB z%Lv2o{fFB6TRo%?k@dL`%1=}3Q-K7G59V6>?S0qmW%gSA2ESpixQ7?PO+L3iXW?Zv zY58`Z<>8HMR8d7FN+_Z|vR?~zzlXr@KOe6$C+)r~8s1LUz+ssOj2$43KS6p2DMa&R zhmVm)*ThtQM$)ku>!{sI=jQ$*4D!0(KY4!}2JFGBwu-+!%B-zdfu^MUJaoVKtyTHf z-0^SS@+tglp=7%WQb~4qCr{ws9^EMC!02ft(xkAJ&?um~$X2f=@;>1IZ;?mh{TI9V zcaHfcJt{!732h?GKa(?R3*_C=?s(SjoxLMEB@&i5+XhhS+arV>&U99gfr1<9>Gez{ zy52xgM96_f>fCrSE(X;Oqg@%O3&UjKcMrOn0h1E*0elCa2-WTX3x#*x!~*|@Pa+Q zF8+y%%&ykQ%gbFOnRvJ+5WlP4hBiZ0Uo`VR?GP-+q+|@i8JU1J86l9Xo(llPXb7d* z%CiMvEJ+58vkzq@A-XPGmtD8V8Y00gTeO9#pfPrEw=!hwl^BQDb1G!22wD6`wB^8| zdOPZ~5DebPL!%K^K(1q`WTs9qCS(x#jI1y_ap>0u`C5~l>rz?>4rUqtnp3%rM@a-Yq!x@z>;4s%@Vh`}`a;W^#ybzo_eN zr`};WAa4})(VG*d&94=mut4*n>NDD$hqcKE$x0?WJ(OJya`yHo1M;4{ap2BAs`z=I zrEj{~F!V7GPCcyIL@Um{8xOTJx1UvhNMAhA6&uVSdTh~|X~iGg$P|>p=0G)=jCgrb zkB7XFxxC%z8>rIiZOqT{GRDlmt*#s(D2W$EC=E_3XP7}AM) zA(mu8G@;(k>oRXko#A_BV@Z8gD4CZjjj%k_v8f@3dZOv=&CgRL96``dY!MB%^{CsO zt0y4@>cvacz=EgEoUJUzO_88#A?);d6@{3@%nc_q6moa`Nz+%Y%%6!=k4Z-5Y0WY? z$VXWlFsHDUQcTk$5v*HN@AL6XP`3T$)5V+ zg-ENtI7=bMk?!{T-XD9%?s+*}u8%)=@$YgsKL`JzegfN2S;3^!~;6L{ZD7B*6VnE{r=AW{{Mr+;_&#qp9ho2Hzs{c@*jQuGS24`c zKYwcVvwUrPW78pI_?r9bObj3*nE@ zpRe7vcjC!EV2naz0A-5f60y8jVaA%oHsw`?$ z1%y$Il?os%L?VciSuB&bHQUYnSw(CH+|n}{zvj)@dO-mh5$bLn*Hk$)xEg>xpTN=*HGsh zZ*+t0)U!5E_lA}f10eC}<|dYQ(vl#b_yB7GRHw;hQFLwd$vYLS4bP8i!P z&{t-BOjczMTSAhUð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 literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 37bc8d38..4510fa48 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -530,6 +530,14 @@ def test_37(self): replay = sc2reader.load_replay("test_replays/3.7.0/1.SC2Replay") replay = sc2reader.load_replay("test_replays/3.7.0/2.SC2Replay") + def test_312(self): + for replayfilename in [ + "test_replays/3.12/Honorgrounds.SC2Replay", + ]: + factory = sc2reader.factories.SC2Factory() + replay =factory.load_replay(replayfilename,load_level=0) + replay =factory.load_replay(replayfilename,load_level=1) + class TestGameEngine(unittest.TestCase): class TestEvent(object): From d46a21e3b7681483e221382b4c7b22c6d960a89e Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Thu, 30 Mar 2017 22:03:16 -0400 Subject: [PATCH 085/116] process reward_overrides properly for the first time ever, hopefully this fixes https://github.com/ggtracker/ggtrackerstack/issues/58 --- sc2reader/readers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index a40cd702..cc2e3b2e 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -123,7 +123,7 @@ def __call__(self, data, replay): tandem_id=data.read_bits(4) if replay.base_build >= 39576 and data.read_bool() else None, commander_mastery_level=data.read_uint32() if replay.base_build >= 42932 else None, commander_mastery_talents=[data.read_uint32() for i in range(data.read_bits(3))] if replay.base_build >= 42932 else None, - reward_overrides=[data.read_unit32() for i in range(data.read_bits(17))] if replay.base_build >= 47185 else None, + reward_overrides=[[data.read_uint32(), [data.read_uint32() for i in range(data.read_bits(17))]] for j in range(data.read_bits(17))] if replay.base_build >= 47185 else None, ) for i in range(data.read_bits(5))], random_seed=data.read_uint32(), host_user_id=data.read_bits(4) if data.read_bool() else None, From ef9496b2f0fc742c5b4a54b2ec690e54ec799899 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 00:42:18 +0100 Subject: [PATCH 086/116] Added script to generate [build]_abilities.csv file from balance data exports. --- generate_abilities.py | 87 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 generate_abilities.py diff --git a/generate_abilities.py b/generate_abilities.py new file mode 100644 index 00000000..83356e5d --- /dev/null +++ b/generate_abilities.py @@ -0,0 +1,87 @@ +import argparse +import collections +import csv +import glob +import os +import xml.etree.ElementTree + + +def generate_abilities(balance_data_path): + abilities = {} + + for xml_file_path in glob.glob(os.path.join(balance_data_path, "*.xml")): + tree = xml.etree.ElementTree.parse(xml_file_path) + root = tree.getroot() + + for ability_element in root.findall("./abilities/ability"): + if ability_element.get("index") and ability_element.get("id"): + abilities[ability_element.get("index")] = ability_element.get("id") + + unit_name = root.get("id") + + build_unit_element = root.find("./builds/unit") + if build_unit_element: + build_ability_index = build_unit_element.get("ability") + + if unit_name == "SCV": + build_ability_name = "TerranBuild" + elif unit_name == "Probe": + build_ability_name = "ProtossBuild" + elif unit_name == "Drone": + build_ability_name = "ZergBuild" + else: + build_ability_name = "{}Build".format(unit_name) + + if build_ability_index: + abilities[build_ability_index] = build_ability_name + + train_unit_elements = root.findall("./trains/unit") + if train_unit_elements: + train_ability_index = train_unit_elements[0].get("ability") + + if train_ability_index: + abilities[train_ability_index] = "{}Train".format(unit_name) + + # Handle cases where a unit can train other units using multiple ability indices. + # The Nexus is currently the only known example. + for element in train_unit_elements[1:]: + element_ability_index = element.get("ability") + trained_unit_name = element.get("id") + + if element_ability_index != train_ability_index and trained_unit_name: + train_ability_index = element_ability_index + + abilities[train_ability_index] = "{}Train{}".format(unit_name, trained_unit_name) + + research_upgrade_element = root.find("./researches/upgrade") + if research_upgrade_element: + research_ability_index = research_upgrade_element.get("ability") + research_ability_name = "{}Research".format(unit_name) + + abilities[research_ability_index] = research_ability_name + + return collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) + + +def main(): + parser = argparse.ArgumentParser(description='Generate a [BUILD]_abilities.csv file from exported balance data.') + parser.add_argument('build_version', metavar='BUILD_VERSION', type=int, + help='the build version of the balance data export') + parser.add_argument('balance_data_path', metavar='BALANCE_DATA_PATH', type=str, + help='the path to the balance data export') + + args = parser.parse_args() + + abilities = generate_abilities(args.balance_data_path) + + if not abilities: + raise ValueError("No balance data found at provided balance data path.") + + with open('{}_abilities.csv'.format(args.build_version), 'w', newline='') as csvfile: + csv_writer = csv.writer(csvfile, delimiter=',') + for ability_index, ability_name in abilities.items(): + csv_writer.writerow([ability_index, ability_name]) + + +if __name__ == "__main__": + main() From b9e46284cab8ad7d7d4eb8091b30cf162415873b Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 01:13:00 +0100 Subject: [PATCH 087/116] Replaced ability generation script with full build data generation script --- ...ate_abilities.py => generate_build_data.py | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) rename generate_abilities.py => generate_build_data.py (73%) diff --git a/generate_abilities.py b/generate_build_data.py similarity index 73% rename from generate_abilities.py rename to generate_build_data.py index 83356e5d..3f039b38 100644 --- a/generate_abilities.py +++ b/generate_build_data.py @@ -6,8 +6,9 @@ import xml.etree.ElementTree -def generate_abilities(balance_data_path): +def generate_build_data(balance_data_path): abilities = {} + units = {} for xml_file_path in glob.glob(os.path.join(balance_data_path, "*.xml")): tree = xml.etree.ElementTree.parse(xml_file_path) @@ -19,8 +20,13 @@ def generate_abilities(balance_data_path): unit_name = root.get("id") + meta_element = root.find("./meta") + + if unit_name and meta_element is not None and meta_element.get("index"): + units[meta_element.get("index")] = unit_name + build_unit_element = root.find("./builds/unit") - if build_unit_element: + if build_unit_element is not None: build_ability_index = build_unit_element.get("ability") if unit_name == "SCV": @@ -54,17 +60,21 @@ def generate_abilities(balance_data_path): abilities[train_ability_index] = "{}Train{}".format(unit_name, trained_unit_name) research_upgrade_element = root.find("./researches/upgrade") - if research_upgrade_element: + if research_upgrade_element is not None: research_ability_index = research_upgrade_element.get("ability") research_ability_name = "{}Research".format(unit_name) abilities[research_ability_index] = research_ability_name - return collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) + sorted_abilities = collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) + sorted_units = collections.OrderedDict(sorted(units.items(), key=lambda x: int(x[0]))) + + return sorted_units, sorted_abilities def main(): - parser = argparse.ArgumentParser(description='Generate a [BUILD]_abilities.csv file from exported balance data.') + parser = argparse.ArgumentParser(description='Generate [BUILD_VERSION]_abilities.csv and [BUILD_VERSION]_units.csv' + ' files from exported balance data.') parser.add_argument('build_version', metavar='BUILD_VERSION', type=int, help='the build version of the balance data export') parser.add_argument('balance_data_path', metavar='BALANCE_DATA_PATH', type=str, @@ -72,11 +82,16 @@ def main(): args = parser.parse_args() - abilities = generate_abilities(args.balance_data_path) + units, abilities = generate_build_data(args.balance_data_path) - if not abilities: + if not units or not abilities: raise ValueError("No balance data found at provided balance data path.") + with open('{}_units.csv'.format(args.build_version), 'w', newline='') as csvfile: + csv_writer = csv.writer(csvfile, delimiter=',') + for unit_index, unit_name in units.items(): + csv_writer.writerow([unit_index, unit_name]) + with open('{}_abilities.csv'.format(args.build_version), 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile, delimiter=',') for ability_index, ability_name in abilities.items(): From 8ea0c3f42660f0be27375931d9d6a3fe84678051 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 02:49:08 +0100 Subject: [PATCH 088/116] Extended build data generation script to also generate ability_lookup.csv and unit_lookup.csv --- generate_build_data.py | 162 +++++++++++++++++++++++++++++++++-------- 1 file changed, 132 insertions(+), 30 deletions(-) diff --git a/generate_build_data.py b/generate_build_data.py index 3f039b38..d277d59a 100644 --- a/generate_build_data.py +++ b/generate_build_data.py @@ -10,71 +10,160 @@ def generate_build_data(balance_data_path): abilities = {} units = {} + ability_lookup = {} + for xml_file_path in glob.glob(os.path.join(balance_data_path, "*.xml")): tree = xml.etree.ElementTree.parse(xml_file_path) root = tree.getroot() for ability_element in root.findall("./abilities/ability"): - if ability_element.get("index") and ability_element.get("id"): - abilities[ability_element.get("index")] = ability_element.get("id") + ability_name = ability_element.get("id") + if ability_element.get("index") and ability_name: + abilities[ability_element.get("index")] = ability_name + + if ability_name not in ability_lookup: + ability_lookup[ability_name] = [] + + for command_element in ability_element.findall("./command"): + command_id = command_element.get("id") + command_index_str = command_element.get("index") + + if command_id and command_index_str: + command_index = int(command_index_str) - unit_name = root.get("id") + # Pad potential gaps in command indices with empty strings + while len(ability_lookup[ability_name]) <= command_index: + ability_lookup[ability_name].append("") + + command_name = command_id if command_id != "Execute" else ability_name + ability_lookup[ability_name][command_index] = command_name + + unit_id = root.get("id") meta_element = root.find("./meta") - if unit_name and meta_element is not None and meta_element.get("index"): - units[meta_element.get("index")] = unit_name + if unit_id and meta_element is not None and meta_element.get("index"): + units[meta_element.get("index")] = unit_id - build_unit_element = root.find("./builds/unit") - if build_unit_element is not None: - build_ability_index = build_unit_element.get("ability") + build_unit_elements = root.findall("./builds/unit") + if build_unit_elements: + build_ability_index = build_unit_elements[0].get("ability") - if unit_name == "SCV": + if unit_id == "SCV": build_ability_name = "TerranBuild" - elif unit_name == "Probe": + elif unit_id == "Probe": build_ability_name = "ProtossBuild" - elif unit_name == "Drone": + elif unit_id == "Drone": build_ability_name = "ZergBuild" else: - build_ability_name = "{}Build".format(unit_name) + build_ability_name = "{}Build".format(unit_id) if build_ability_index: abilities[build_ability_index] = build_ability_name + if build_ability_name not in ability_lookup: + ability_lookup[build_ability_name] = [] + + for element in build_unit_elements: + built_unit_id = element.get("id") + command_index_str = element.get("index") + + if built_unit_id and command_index_str: + command_index = int(command_index_str) + + # Pad potential gaps in command indices with empty strings + while len(ability_lookup[build_ability_name]) <= command_index: + ability_lookup[build_ability_name].append("") + + build_command_name = "Build{}".format(built_unit_id) + ability_lookup[build_ability_name][command_index] = build_command_name + train_unit_elements = root.findall("./trains/unit") if train_unit_elements: train_ability_index = train_unit_elements[0].get("ability") if train_ability_index: - abilities[train_ability_index] = "{}Train".format(unit_name) + train_ability_name = "{}Train".format(unit_id) + abilities[train_ability_index] = train_ability_name + + if train_ability_name not in ability_lookup: + ability_lookup[train_ability_name] = [] - # Handle cases where a unit can train other units using multiple ability indices. - # The Nexus is currently the only known example. - for element in train_unit_elements[1:]: + for element in train_unit_elements: element_ability_index = element.get("ability") trained_unit_name = element.get("id") - if element_ability_index != train_ability_index and trained_unit_name: - train_ability_index = element_ability_index + if trained_unit_name: + # Handle cases where a unit can train other units using multiple ability indices. + # The Nexus is currently the only known example. + if element_ability_index != train_ability_index: + train_ability_index = element_ability_index + + train_ability_name = "{}Train{}".format(unit_id, trained_unit_name) + abilities[train_ability_index] = train_ability_name + + if train_ability_name not in ability_lookup: + ability_lookup[train_ability_name] = [] + + command_index_str = element.get("index") + + if command_index_str: + command_index = int(command_index_str) - abilities[train_ability_index] = "{}Train{}".format(unit_name, trained_unit_name) + # Pad potential gaps in command indices with empty strings + while len(ability_lookup[train_ability_name]) <= command_index: + ability_lookup[train_ability_name].append("") - research_upgrade_element = root.find("./researches/upgrade") - if research_upgrade_element is not None: - research_ability_index = research_upgrade_element.get("ability") - research_ability_name = "{}Research".format(unit_name) + ability_lookup[train_ability_name][command_index] = train_ability_name + else: + command_index_str = element.get("index") + + if command_index_str: + command_index = int(command_index_str) + + # Pad potential gaps in command indices with empty strings + while len(ability_lookup[train_ability_name]) <= command_index: + ability_lookup[train_ability_name].append("") + + train_command_name = "Train{}".format(trained_unit_name) + ability_lookup[train_ability_name][command_index] = train_command_name + + research_upgrade_elements = root.findall("./researches/upgrade") + if research_upgrade_elements: + research_ability_index = research_upgrade_elements[0].get("ability") + research_ability_name = "{}Research".format(unit_id) abilities[research_ability_index] = research_ability_name - sorted_abilities = collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) + if research_ability_name not in ability_lookup: + ability_lookup[research_ability_name] = [] + + for element in research_upgrade_elements: + researched_upgrade_id = element.get("id") + command_index_str = element.get("index") + + if researched_upgrade_id and command_index_str: + command_index = int(command_index_str) + + # Pad potential gaps in command indices with empty strings + while len(ability_lookup[research_ability_name]) <= command_index: + ability_lookup[research_ability_name].append("") + + research_command_name = "Research{}".format(researched_upgrade_id) + ability_lookup[research_ability_name][command_index] = research_command_name + sorted_units = collections.OrderedDict(sorted(units.items(), key=lambda x: int(x[0]))) + sorted_abilities = collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) + + unit_lookup = [[unit_name, unit_name] for _, unit_name in sorted_units.items()] - return sorted_units, sorted_abilities + return sorted_units, sorted_abilities, unit_lookup, ability_lookup def main(): - parser = argparse.ArgumentParser(description='Generate [BUILD_VERSION]_abilities.csv and [BUILD_VERSION]_units.csv' - ' files from exported balance data.') + parser = argparse.ArgumentParser(description='Generate [BUILD_VERSION]_abilities.csv, [BUILD_VERSION]_units.csv,' + ' ability_lookup.csv and unit_lookup.csv files from exported balance' + ' data.') parser.add_argument('build_version', metavar='BUILD_VERSION', type=int, help='the build version of the balance data export') parser.add_argument('balance_data_path', metavar='BALANCE_DATA_PATH', type=str, @@ -82,21 +171,34 @@ def main(): args = parser.parse_args() - units, abilities = generate_build_data(args.balance_data_path) + units, abilities, unit_lookup, ability_lookup = generate_build_data(args.balance_data_path) if not units or not abilities: + parser.print_help() + print("\n") + raise ValueError("No balance data found at provided balance data path.") with open('{}_units.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',') + csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) for unit_index, unit_name in units.items(): csv_writer.writerow([unit_index, unit_name]) with open('{}_abilities.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',') + csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) for ability_index, ability_name in abilities.items(): csv_writer.writerow([ability_index, ability_name]) + with open('unit_lookup.csv'.format(args.build_version), 'w', newline='') as csvfile: + csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) + for lookup_entry in unit_lookup: + csv_writer.writerow(lookup_entry) + + with open('ability_lookup.csv'.format(args.build_version), 'w', newline='') as csvfile: + csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) + for ability_name, commands in ability_lookup.items(): + csv_writer.writerow([ability_name] + commands) + if __name__ == "__main__": main() From a778a228f3bab6f560be37708e1b343c1550ac58 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 18:04:18 +0100 Subject: [PATCH 089/116] Build data generation script now merges new build data with existing build data correctly It also now takes the sc2reader project dir as a parameter and writes build data files directly to correct locations in the sc2reader project --- generate_build_data.py | 81 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/generate_build_data.py b/generate_build_data.py index d277d59a..06b66961 100644 --- a/generate_build_data.py +++ b/generate_build_data.py @@ -155,23 +155,51 @@ def generate_build_data(balance_data_path): sorted_units = collections.OrderedDict(sorted(units.items(), key=lambda x: int(x[0]))) sorted_abilities = collections.OrderedDict(sorted(abilities.items(), key=lambda x: int(x[0]))) - unit_lookup = [[unit_name, unit_name] for _, unit_name in sorted_units.items()] + unit_lookup = dict((unit_name, unit_name) for _, unit_name in sorted_units.items()) return sorted_units, sorted_abilities, unit_lookup, ability_lookup +def combine_lookups(old_unit_lookup, old_ability_lookup, new_unit_lookup, new_ability_lookup): + unit_lookup = collections.OrderedDict(old_unit_lookup) + ability_lookup = collections.OrderedDict(old_ability_lookup) + + # Just straightforwardly add any missing units + unit_lookup.update(new_unit_lookup) + + # When merging old and new ability lookups, prefer to overwrite old cell data with new cell data when merging rows + # in the case of a key clash, but preserve old cell data if cell is empty in new ability lookup table + for ability_name, commands in new_ability_lookup.items(): + if ability_name not in ability_lookup: + ability_lookup[ability_name] = commands + else: + for i, command in enumerate(commands): + # Pad potential gaps with empty commands + while len(ability_lookup[ability_name]) <= i: + ability_lookup[ability_name].append("") + + if command != "": + ability_lookup[ability_name][i] = command + + return unit_lookup, ability_lookup + + def main(): - parser = argparse.ArgumentParser(description='Generate [BUILD_VERSION]_abilities.csv, [BUILD_VERSION]_units.csv,' - ' ability_lookup.csv and unit_lookup.csv files from exported balance' - ' data.') + parser = argparse.ArgumentParser(description='Generate and install new [BUILD_VERSION]_abilities.csv, ' + '[BUILD_VERSION]_units.csv, and update ability_lookup.csv and ' + 'unit_lookup.csv files with any new units and ability commands.') + parser.add_argument('expansion', metavar='EXPANSION', type=str, choices=['WoL', 'HotS', 'LotV'], + help='the expansion level of the balance data export, one of \'WoL\', \'HotS\', or \'LotV\'') parser.add_argument('build_version', metavar='BUILD_VERSION', type=int, help='the build version of the balance data export') parser.add_argument('balance_data_path', metavar='BALANCE_DATA_PATH', type=str, help='the path to the balance data export') + parser.add_argument('project_path', metavar='SC2READER_PROJECT_PATH', type=str, + help='the path to the root of the sc2reader project directory') args = parser.parse_args() - units, abilities, unit_lookup, ability_lookup = generate_build_data(args.balance_data_path) + units, abilities, new_unit_lookup, new_ability_lookup = generate_build_data(args.balance_data_path) if not units or not abilities: parser.print_help() @@ -179,23 +207,46 @@ def main(): raise ValueError("No balance data found at provided balance data path.") - with open('{}_units.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) + unit_lookup_path = os.path.join(args.project_path, 'sc2reader', 'data', 'unit_lookup.csv') + with open(unit_lookup_path, 'r') as file: + csv_reader = csv.reader(file, delimiter=',', lineterminator=os.linesep) + old_unit_lookup = collections.OrderedDict([(row[0], row[1]) for row in csv_reader if len(row) > 1]) + + ability_lookup_path = os.path.join(args.project_path, 'sc2reader', 'data', 'ability_lookup.csv') + with open(ability_lookup_path, 'r') as file: + csv_reader = csv.reader(file, delimiter=',', lineterminator=os.linesep) + old_ability_lookup = collections.OrderedDict([(row[0], row[1:]) for row in csv_reader if len(row) > 0]) + + if not old_unit_lookup or not old_ability_lookup: + parser.print_help() + print("\n") + + raise ValueError("Could not find existing unit or ability lookups. Is the sc2reader project path correct?") + + unit_lookup, ability_lookup = combine_lookups( + old_unit_lookup, old_ability_lookup, new_unit_lookup, new_ability_lookup) + + units_file_path = os.path.join( + args.project_path, 'sc2reader', 'data', args.expansion, '{}_units.csv'.format(args.build_version)) + with open(units_file_path, 'w') as file: + csv_writer = csv.writer(file, delimiter=',', lineterminator=os.linesep) for unit_index, unit_name in units.items(): csv_writer.writerow([unit_index, unit_name]) - with open('{}_abilities.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) + abilities_file_path = os.path.join( + args.project_path, 'sc2reader', 'data', args.expansion, '{}_abilities.csv'.format(args.build_version)) + with open(abilities_file_path, 'w') as file: + csv_writer = csv.writer(file, delimiter=',', lineterminator=os.linesep) for ability_index, ability_name in abilities.items(): csv_writer.writerow([ability_index, ability_name]) - with open('unit_lookup.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) - for lookup_entry in unit_lookup: - csv_writer.writerow(lookup_entry) + with open(unit_lookup_path, 'w') as file: + csv_writer = csv.writer(file, delimiter=',', lineterminator=os.linesep) + for entry in unit_lookup.items(): + csv_writer.writerow(list(entry)) - with open('ability_lookup.csv'.format(args.build_version), 'w', newline='') as csvfile: - csv_writer = csv.writer(csvfile, delimiter=',', lineterminator=os.linesep) + with open(ability_lookup_path, 'w') as file: + csv_writer = csv.writer(file, delimiter=',', lineterminator=os.linesep) for ability_name, commands in ability_lookup.items(): csv_writer.writerow([ability_name] + commands) From 494831a8a6556c098e76eb2fdbb018192ca642ae Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 18:33:20 +0100 Subject: [PATCH 090/116] Fixed oversight with build data generation script which could overwrite existing non-standard unit names, potentially breaking downstream clients. --- generate_build_data.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/generate_build_data.py b/generate_build_data.py index 06b66961..02db9216 100644 --- a/generate_build_data.py +++ b/generate_build_data.py @@ -164,9 +164,14 @@ def combine_lookups(old_unit_lookup, old_ability_lookup, new_unit_lookup, new_ab unit_lookup = collections.OrderedDict(old_unit_lookup) ability_lookup = collections.OrderedDict(old_ability_lookup) - # Just straightforwardly add any missing units + # First just straightforwardly add any missing units unit_lookup.update(new_unit_lookup) + # Doing this step allows us to preserve any non-standard unit names in the old build data that may have been + # overwritten in the new build data. This allows us to retain support for downstream clients using the existing + # unit names. + unit_lookup.update(old_unit_lookup) + # When merging old and new ability lookups, prefer to overwrite old cell data with new cell data when merging rows # in the case of a key clash, but preserve old cell data if cell is empty in new ability lookup table for ability_name, commands in new_ability_lookup.items(): From 44526f62a77df76193fdc9998b316555d35e7d53 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 20:02:41 +0100 Subject: [PATCH 091/116] Updated HOWTO on how to support new sc2 build versions --- sc2reader/data/HOWTO | 18 ------------------ sc2reader/data/HOWTO.md | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 18 deletions(-) delete mode 100644 sc2reader/data/HOWTO create mode 100644 sc2reader/data/HOWTO.md diff --git a/sc2reader/data/HOWTO b/sc2reader/data/HOWTO deleted file mode 100644 index ba734b5b..00000000 --- a/sc2reader/data/HOWTO +++ /dev/null @@ -1,18 +0,0 @@ -Sometimes when a new version comes out, such as (3.4.0) 44401, Bliz will update the ids used to identify units and abilities. - -See dsjoerg's commits on Jul 13, 2016 to see what you need to modify to handle something like that: https://github.com/ggtracker/sc2reader/commits/upstream - -1 use the Galaxy Editor and Export Balance Data. -2 To create the ability CSV file: ```find Balance\ Data -print0 | xargs -0 grep -h ' `Export Balance Data...` and select the expansion level for the balance data you wish to add, then select the directory which you wish to export the balance data to. +2. Find out the build version this balance data correlates to. One method of doing this is to navigate to the s2protocol repo (https://github.com/Blizzard/s2protocol) and looking at the version of the latest protocol. +At the time of writing, the latest build version is 53644. +3. Execute `sc2reader/generate_build_data.py`, passing the expansion level selected in step 1, the build version determined in step 2, the directory the balance data was exported to in step 1, and the sc2reader project root directory as parameters. +e.g. `python3 sc2reader/generate_build_data.py LotV 53644 balance_data/ sc2reader/` +This will generate the necessary data files to support the new build version (namely, `53644_abilities.csv`, `53644_units.csv`, and updated versions of `ability_lookup.csv` and `unit_lookup.csv`). +4. Finally, modify `sc2reader/data/__init__.py` and `sc2reader/resources.py` to register support for the new build version. From 65acc3bf618afbfa58c6db69b30f316d44e81315 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 9 Jun 2017 20:19:06 +0100 Subject: [PATCH 092/116] Add support for build version 53644 replays --- sc2reader/data/LotV/53644_abilities.csv | 399 ++++++++++ sc2reader/data/LotV/53644_units.csv | 934 ++++++++++++++++++++++++ sc2reader/data/__init__.py | 2 +- sc2reader/data/ability_lookup.csv | 371 +++++----- sc2reader/data/unit_lookup.csv | 37 + sc2reader/resources.py | 1 + 6 files changed, 1567 insertions(+), 177 deletions(-) create mode 100644 sc2reader/data/LotV/53644_abilities.csv create mode 100644 sc2reader/data/LotV/53644_units.csv diff --git a/sc2reader/data/LotV/53644_abilities.csv b/sc2reader/data/LotV/53644_abilities.csv new file mode 100644 index 00000000..112b8bd7 --- /dev/null +++ b/sc2reader/data/LotV/53644_abilities.csv @@ -0,0 +1,399 @@ +35,Taunt +36,stop +38,move +45,attack +60,SprayTerran +61,SprayZerg +62,SprayProtoss +63,SalvageShared +65,GhostHoldFire +66,GhostWeaponsFree +68,Explode +69,FleetBeaconResearch +70,FungalGrowth +71,GuardianShield +72,MULERepair +73,ZerglingTrain +75,Feedback +77,PlacePointDefenseDrone +78,HallucinationArchon +79,HallucinationColossus +80,HallucinationHighTemplar +81,HallucinationImmortal +82,HallucinationPhoenix +83,HallucinationProbe +84,HallucinationStalker +85,HallucinationVoidRay +86,HallucinationWarpPrism +87,HallucinationZealot +88,MULEGather +89,SeekerMissile +90,CalldownMULE +91,GravitonBeam +95,SpawnChangeling +102,Rally +103,ProgressRally +104,RallyCommand +105,RallyNexus +106,RallyHatchery +107,RoachWarrenResearch +109,InfestedTerrans +110,NeuralParasite +111,SpawnLarva +112,StimpackMarauder +113,SupplyDrop +116,TimeWarp +117,UltraliskCavernResearch +119,SCVHarvest +120,ProbeHarvest +122,que1 +123,que5 +124,que5CancelToSelection +126,que5Addon +127,BuildInProgress +128,Repair +129,TerranBuild +131,Stimpack +132,GhostCloak +134,MedivacHeal +135,SiegeMode +136,Unsiege +137,BansheeCloak +138,MedivacTransport +139,ScannerSweep +140,Yamato +141,AssaultMode +142,FighterMode +143,BunkerTransport +144,CommandCenterTransport +145,CommandCenterLiftOff +146,CommandCenterLand +147,BarracksFlyingBuild +148,BarracksLiftOff +149,FactoryFlyingBuild +150,FactoryLiftOff +151,StarportFlyingBuild +152,StarportLiftOff +153,FactoryLand +154,StarportLand +155,PlanetaryFortressTrain +156,BarracksLand +157,SupplyDepotLower +158,SupplyDepotRaise +159,BarracksTrain +160,FactoryTrain +161,StarportTrain +162,EngineeringBayResearch +164,GhostAcademyTrain +165,BarracksTechLabResearch +166,FactoryTechLabResearch +167,StarportTechLabResearch +168,GhostAcademyResearch +169,ArmoryResearch +170,ProtossBuild +171,WarpPrismTransport +172,GatewayTrain +173,StargateTrain +174,RoboticsFacilityTrain +175,NexusTrain +176,PsiStorm +177,HangarQueue5 +179,CarrierTrain +180,ForgeResearch +181,RoboticsBayResearch +182,TemplarArchiveResearch +183,ZergBuild +184,DroneHarvest +185,EvolutionChamberResearch +186,UpgradeToLair +187,UpgradeToHive +188,UpgradeToGreaterSpire +189,LairResearch +190,SpawningPoolResearch +191,LurkerDenMPResearch +192,SpireResearch +193,LarvaTrain +194,MorphToBroodLord +195,BurrowBanelingDown +196,BurrowBanelingUp +197,BurrowDroneDown +198,BurrowDroneUp +199,BurrowHydraliskDown +200,BurrowHydraliskUp +201,BurrowRoachDown +202,BurrowRoachUp +203,BurrowZerglingDown +204,BurrowZerglingUp +205,BurrowInfestorTerranDown +206,BurrowInfestorTerranUp +207,RedstoneLavaCritterBurrow +208,RedstoneLavaCritterInjuredBurrow +209,RedstoneLavaCritterUnburrow +210,RedstoneLavaCritterInjuredUnburrow +211,OverlordTransport +214,WarpGateTrain +215,BurrowQueenDown +216,BurrowQueenUp +217,NydusCanalTransport +218,Blink +219,BurrowInfestorDown +220,BurrowInfestorUp +221,MorphToOverseer +222,UpgradeToPlanetaryFortress +223,InfestationPitResearch +224,BanelingNestResearch +225,BurrowUltraliskDown +226,BurrowUltraliskUp +227,UpgradeToOrbital +228,UpgradeToWarpGate +229,MorphBackToGateway +230,OrbitalLiftOff +231,OrbitalCommandLand +232,ForceField +233,PhasingMode +234,TransportMode +235,FusionCoreResearch +236,CyberneticsCoreResearch +237,TwilightCouncilResearch +238,TacNukeStrike +241,EMP +243,LairTrain +245,Transfusion +254,AttackRedirect +255,StimpackRedirect +256,StimpackMarauderRedirect +258,StopRedirect +259,GenerateCreep +260,QueenBuild +261,SpineCrawlerUproot +262,SporeCrawlerUproot +263,SpineCrawlerRoot +264,SporeCrawlerRoot +265,CreepTumorBurrowedBuild +266,BuildAutoTurret +267,ArchonWarp +268,NydusNetworkBuild +270,Charge +274,Contaminate +277,que5Passive +278,que5PassiveCancelToSelection +306,DigesterCreepSpray +310,MorphToMothership +313,NexusTrainMothershipCore +335,XelNagaHealingShrine +344,MothershipCoreMassRecall +346,MorphToHellion +356,MorphToHellionTank +364,MorphToSwarmHostBurrowedMP +365,MorphToSwarmHostMP +367,attackProtossBuilding +369,stopProtossBuilding +370,BlindingCloud +372,Yoink +375,ViperConsumeStructure +378,TestZerg +379,VolatileBurstBuilding +386,WidowMineBurrow +387,WidowMineUnburrow +388,WidowMineAttack +389,TornadoMissile +393,BurrowLurkerMPDown +394,BurrowLurkerMPUp +395,UpgradeToLurkerDenMP +396,HallucinationOracle +397,MedivacSpeedBoost +398,ExtendingBridgeNEWide8Out +399,ExtendingBridgeNEWide8 +400,ExtendingBridgeNWWide8Out +401,ExtendingBridgeNWWide8 +402,ExtendingBridgeNEWide10Out +403,ExtendingBridgeNEWide10 +404,ExtendingBridgeNWWide10Out +405,ExtendingBridgeNWWide10 +406,ExtendingBridgeNEWide12Out +407,ExtendingBridgeNEWide12 +408,ExtendingBridgeNWWide12Out +409,ExtendingBridgeNWWide12 +411,CritterFlee +412,OracleRevelation +420,MothershipCorePurifyNexus +421,XelNaga_Caverns_DoorE +422,XelNaga_Caverns_DoorEOpened +423,XelNaga_Caverns_DoorN +424,XelNaga_Caverns_DoorNE +425,XelNaga_Caverns_DoorNEOpened +426,XelNaga_Caverns_DoorNOpened +427,XelNaga_Caverns_DoorNW +428,XelNaga_Caverns_DoorNWOpened +429,XelNaga_Caverns_DoorS +430,XelNaga_Caverns_DoorSE +431,XelNaga_Caverns_DoorSEOpened +432,XelNaga_Caverns_DoorSOpened +433,XelNaga_Caverns_DoorSW +434,XelNaga_Caverns_DoorSWOpened +435,XelNaga_Caverns_DoorW +436,XelNaga_Caverns_DoorWOpened +437,XelNaga_Caverns_Floating_BridgeNE8Out +438,XelNaga_Caverns_Floating_BridgeNE8 +439,XelNaga_Caverns_Floating_BridgeNW8Out +440,XelNaga_Caverns_Floating_BridgeNW8 +441,XelNaga_Caverns_Floating_BridgeNE10Out +442,XelNaga_Caverns_Floating_BridgeNE10 +443,XelNaga_Caverns_Floating_BridgeNW10Out +444,XelNaga_Caverns_Floating_BridgeNW10 +445,XelNaga_Caverns_Floating_BridgeNE12Out +446,XelNaga_Caverns_Floating_BridgeNE12 +447,XelNaga_Caverns_Floating_BridgeNW12Out +448,XelNaga_Caverns_Floating_BridgeNW12 +449,XelNaga_Caverns_Floating_BridgeH8Out +450,XelNaga_Caverns_Floating_BridgeH8 +451,XelNaga_Caverns_Floating_BridgeV8Out +452,XelNaga_Caverns_Floating_BridgeV8 +453,XelNaga_Caverns_Floating_BridgeH10Out +454,XelNaga_Caverns_Floating_BridgeH10 +455,XelNaga_Caverns_Floating_BridgeV10Out +456,XelNaga_Caverns_Floating_BridgeV10 +457,XelNaga_Caverns_Floating_BridgeH12Out +458,XelNaga_Caverns_Floating_BridgeH12 +459,XelNaga_Caverns_Floating_BridgeV12Out +460,XelNaga_Caverns_Floating_BridgeV12 +461,TemporalField +485,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +486,SnowRefinery_Terran_ExtendingBridgeNEShort8 +487,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +488,SnowRefinery_Terran_ExtendingBridgeNWShort8 +510,CausticSpray +513,MorphToRavager +514,MorphToLurker +517,RavagerCorrosiveBile +518,BurrowRavagerDown +519,BurrowRavagerUp +521,PurificationNovaTargeted +523,LockOn +525,LockOnCancel +527,Hyperjump +529,ThorAPMode +530,ThorNormalMode +532,MothershipMassRecall +533,NydusWormTransport +534,OracleWeapon +540,LocustMPFlyingSwoop +541,HallucinationDisruptor +542,HallucinationAdept +543,VoidRaySwarmDamageBoost +544,SeekerDummyChannel +545,AiurLightBridgeNE8Out +546,AiurLightBridgeNE8 +547,AiurLightBridgeNE10Out +548,AiurLightBridgeNE10 +549,AiurLightBridgeNE12Out +550,AiurLightBridgeNE12 +551,AiurLightBridgeNW8Out +552,AiurLightBridgeNW8 +553,AiurLightBridgeNW10Out +554,AiurLightBridgeNW10 +555,AiurLightBridgeNW12Out +556,AiurLightBridgeNW12 +569,ShakurasLightBridgeNE8Out +570,ShakurasLightBridgeNE8 +571,ShakurasLightBridgeNE10Out +572,ShakurasLightBridgeNE10 +573,ShakurasLightBridgeNE12Out +574,ShakurasLightBridgeNE12 +575,ShakurasLightBridgeNW8Out +576,ShakurasLightBridgeNW8 +577,ShakurasLightBridgeNW10Out +578,ShakurasLightBridgeNW10 +579,ShakurasLightBridgeNW12Out +580,ShakurasLightBridgeNW12 +581,VoidMPImmortalReviveRebuild +583,ArbiterMPStasisField +584,ArbiterMPRecall +585,CorsairMPDisruptionWeb +586,MorphToGuardianMP +587,MorphToDevourerMP +588,DefilerMPConsume +589,DefilerMPDarkSwarm +590,DefilerMPPlague +591,DefilerMPBurrow +592,DefilerMPUnburrow +593,QueenMPEnsnare +594,QueenMPSpawnBroodlings +595,QueenMPInfestCommandCenter +599,OracleBuild +603,ParasiticBomb +604,AdeptPhaseShift +607,LurkerHoldFire +608,LurkerRemoveHoldFire +611,LiberatorAGTarget +612,LiberatorAATarget +614,AiurLightBridgeAbandonedNE8Out +615,AiurLightBridgeAbandonedNE8 +616,AiurLightBridgeAbandonedNE10Out +617,AiurLightBridgeAbandonedNE10 +618,AiurLightBridgeAbandonedNE12Out +619,AiurLightBridgeAbandonedNE12 +620,AiurLightBridgeAbandonedNW8Out +621,AiurLightBridgeAbandonedNW8 +622,AiurLightBridgeAbandonedNW10Out +623,AiurLightBridgeAbandonedNW10 +624,AiurLightBridgeAbandonedNW12Out +625,AiurLightBridgeAbandonedNW12 +626,KD8Charge +629,AdeptPhaseShiftCancel +630,AdeptShadePhaseShiftCancel +631,SlaynElementalGrab +633,PortCity_Bridge_UnitNE8Out +634,PortCity_Bridge_UnitNE8 +635,PortCity_Bridge_UnitSE8Out +636,PortCity_Bridge_UnitSE8 +637,PortCity_Bridge_UnitNW8Out +638,PortCity_Bridge_UnitNW8 +639,PortCity_Bridge_UnitSW8Out +640,PortCity_Bridge_UnitSW8 +641,PortCity_Bridge_UnitNE10Out +642,PortCity_Bridge_UnitNE10 +643,PortCity_Bridge_UnitSE10Out +644,PortCity_Bridge_UnitSE10 +645,PortCity_Bridge_UnitNW10Out +646,PortCity_Bridge_UnitNW10 +647,PortCity_Bridge_UnitSW10Out +648,PortCity_Bridge_UnitSW10 +649,PortCity_Bridge_UnitNE12Out +650,PortCity_Bridge_UnitNE12 +651,PortCity_Bridge_UnitSE12Out +652,PortCity_Bridge_UnitSE12 +653,PortCity_Bridge_UnitNW12Out +654,PortCity_Bridge_UnitNW12 +655,PortCity_Bridge_UnitSW12Out +656,PortCity_Bridge_UnitSW12 +657,PortCity_Bridge_UnitN8Out +658,PortCity_Bridge_UnitN8 +659,PortCity_Bridge_UnitS8Out +660,PortCity_Bridge_UnitS8 +661,PortCity_Bridge_UnitE8Out +662,PortCity_Bridge_UnitE8 +663,PortCity_Bridge_UnitW8Out +664,PortCity_Bridge_UnitW8 +665,PortCity_Bridge_UnitN10Out +666,PortCity_Bridge_UnitN10 +667,PortCity_Bridge_UnitS10Out +668,PortCity_Bridge_UnitS10 +669,PortCity_Bridge_UnitE10Out +670,PortCity_Bridge_UnitE10 +671,PortCity_Bridge_UnitW10Out +672,PortCity_Bridge_UnitW10 +673,PortCity_Bridge_UnitN12Out +674,PortCity_Bridge_UnitN12 +675,PortCity_Bridge_UnitS12Out +676,PortCity_Bridge_UnitS12 +677,PortCity_Bridge_UnitE12Out +678,PortCity_Bridge_UnitE12 +679,PortCity_Bridge_UnitW12Out +680,PortCity_Bridge_UnitW12 +683,DarkTemplarBlink +687,SpawnLocustsTargeted +688,VoidRaySwarmDamageBoostCancel +690,MorphToTransportOverlord +693,ChannelSnipe +696,DarkShrineResearch diff --git a/sc2reader/data/LotV/53644_units.csv b/sc2reader/data/LotV/53644_units.csv new file mode 100644 index 00000000..b0c4522f --- /dev/null +++ b/sc2reader/data/LotV/53644_units.csv @@ -0,0 +1,934 @@ +1,System_Snapshot_Dummy +21,Ball +22,StereoscopicOptionsUnit +23,Colossus +24,TechLab +25,Reactor +27,InfestorTerran +28,BanelingCocoon +29,Baneling +30,Mothership +31,PointDefenseDrone +32,Changeling +33,ChangelingZealot +34,ChangelingMarineShield +35,ChangelingMarine +36,ChangelingZerglingWings +37,ChangelingZergling +39,CommandCenter +40,SupplyDepot +41,Refinery +42,Barracks +43,EngineeringBay +44,MissileTurret +45,Bunker +46,SensorTower +47,GhostAcademy +48,Factory +49,Starport +51,Armory +52,FusionCore +53,AutoTurret +54,SiegeTankSieged +55,SiegeTank +56,VikingAssault +57,VikingFighter +58,CommandCenterFlying +59,BarracksTechLab +60,BarracksReactor +61,FactoryTechLab +62,FactoryReactor +63,StarportTechLab +64,StarportReactor +65,FactoryFlying +66,StarportFlying +67,SCV +68,BarracksFlying +69,SupplyDepotLowered +70,Marine +71,Reaper +72,Ghost +73,Marauder +74,Thor +75,Hellion +76,Medivac +77,Banshee +78,Raven +79,Battlecruiser +80,Nuke +81,Nexus +82,Pylon +83,Assimilator +84,Gateway +85,Forge +86,FleetBeacon +87,TwilightCouncil +88,PhotonCannon +89,Stargate +90,TemplarArchive +91,DarkShrine +92,RoboticsBay +93,RoboticsFacility +94,CyberneticsCore +95,Zealot +96,Stalker +97,HighTemplar +98,DarkTemplar +99,Sentry +100,Phoenix +101,Carrier +102,VoidRay +103,WarpPrism +104,Observer +105,Immortal +106,Probe +107,Interceptor +108,Hatchery +109,CreepTumor +110,Extractor +111,SpawningPool +112,EvolutionChamber +113,HydraliskDen +114,Spire +115,UltraliskCavern +116,InfestationPit +117,NydusNetwork +118,BanelingNest +119,RoachWarren +120,SpineCrawler +121,SporeCrawler +122,Lair +123,Hive +124,GreaterSpire +125,Egg +126,Drone +127,Zergling +128,Overlord +129,Hydralisk +130,Mutalisk +131,Ultralisk +132,Roach +133,Infestor +134,Corruptor +135,BroodLordCocoon +136,BroodLord +137,BanelingBurrowed +138,DroneBurrowed +139,HydraliskBurrowed +140,RoachBurrowed +141,ZerglingBurrowed +142,InfestorTerranBurrowed +143,RedstoneLavaCritterBurrowed +144,RedstoneLavaCritterInjuredBurrowed +145,RedstoneLavaCritter +146,RedstoneLavaCritterInjured +147,QueenBurrowed +148,Queen +149,InfestorBurrowed +150,OverlordCocoon +151,Overseer +152,PlanetaryFortress +153,UltraliskBurrowed +154,OrbitalCommand +155,WarpGate +156,OrbitalCommandFlying +157,ForceField +158,WarpPrismPhasing +159,CreepTumorBurrowed +160,CreepTumorQueen +161,SpineCrawlerUprooted +162,SporeCrawlerUprooted +163,Archon +164,NydusCanal +165,BroodlingEscort +166,GhostAlternate +167,GhostNova +168,RichMineralField +169,RichMineralField750 +170,Ursadon +172,XelNagaTower +176,InfestedTerransEgg +177,Larva +178,ReaperPlaceholder +179,MarineACGluescreenDummy +180,FirebatACGluescreenDummy +181,MedicACGluescreenDummy +182,MarauderACGluescreenDummy +183,VultureACGluescreenDummy +184,SiegeTankACGluescreenDummy +185,VikingACGluescreenDummy +186,BansheeACGluescreenDummy +187,BattlecruiserACGluescreenDummy +188,OrbitalCommandACGluescreenDummy +189,BunkerACGluescreenDummy +190,BunkerUpgradedACGluescreenDummy +191,MissileTurretACGluescreenDummy +192,HellbatACGluescreenDummy +193,GoliathACGluescreenDummy +194,CycloneACGluescreenDummy +195,WraithACGluescreenDummy +196,ScienceVesselACGluescreenDummy +197,HerculesACGluescreenDummy +198,ThorACGluescreenDummy +199,PerditionTurretACGluescreenDummy +200,FlamingBettyACGluescreenDummy +201,DevastationTurretACGluescreenDummy +202,BlasterBillyACGluescreenDummy +203,SpinningDizzyACGluescreenDummy +204,ZerglingKerriganACGluescreenDummy +205,RaptorACGluescreenDummy +206,QueenCoopACGluescreenDummy +207,HydraliskACGluescreenDummy +208,HydraliskLurkerACGluescreenDummy +209,MutaliskBroodlordACGluescreenDummy +210,BroodLordACGluescreenDummy +211,UltraliskACGluescreenDummy +212,TorrasqueACGluescreenDummy +213,OverseerACGluescreenDummy +214,LurkerACGluescreenDummy +215,SpineCrawlerACGluescreenDummy +216,SporeCrawlerACGluescreenDummy +217,NydusNetworkACGluescreenDummy +218,OmegaNetworkACGluescreenDummy +219,ZerglingZagaraACGluescreenDummy +220,SwarmlingACGluescreenDummy +221,BanelingACGluescreenDummy +222,SplitterlingACGluescreenDummy +223,AberrationACGluescreenDummy +224,ScourgeACGluescreenDummy +225,CorruptorACGluescreenDummy +226,BileLauncherACGluescreenDummy +227,SwarmQueenACGluescreenDummy +228,RoachACGluescreenDummy +229,RoachVileACGluescreenDummy +230,RavagerACGluescreenDummy +231,SwarmHostACGluescreenDummy +232,MutaliskACGluescreenDummy +233,GuardianACGluescreenDummy +234,DevourerACGluescreenDummy +235,ViperACGluescreenDummy +236,BrutaliskACGluescreenDummy +237,LeviathanACGluescreenDummy +238,ZealotACGluescreenDummy +239,ZealotAiurACGluescreenDummy +240,DragoonACGluescreenDummy +241,HighTemplarACGluescreenDummy +242,ArchonACGluescreenDummy +243,ImmortalACGluescreenDummy +244,ObserverACGluescreenDummy +245,PhoenixAiurACGluescreenDummy +246,ReaverACGluescreenDummy +247,TempestACGluescreenDummy +248,PhotonCannonACGluescreenDummy +249,ZealotVorazunACGluescreenDummy +250,ZealotShakurasACGluescreenDummy +251,StalkerShakurasACGluescreenDummy +252,DarkTemplarShakurasACGluescreenDummy +253,CorsairACGluescreenDummy +254,VoidRayACGluescreenDummy +255,VoidRayShakurasACGluescreenDummy +256,OracleACGluescreenDummy +257,DarkArchonACGluescreenDummy +258,DarkPylonACGluescreenDummy +259,ZealotPurifierACGluescreenDummy +260,SentryPurifierACGluescreenDummy +261,ImmortalKaraxACGluescreenDummy +262,ColossusACGluescreenDummy +263,ColossusPurifierACGluescreenDummy +264,PhoenixPurifierACGluescreenDummy +265,CarrierACGluescreenDummy +266,CarrierAiurACGluescreenDummy +267,KhaydarinMonolithACGluescreenDummy +268,ShieldBatteryACGluescreenDummy +269,EliteMarineACGluescreenDummy +270,MarauderCommandoACGluescreenDummy +271,SpecOpsGhostACGluescreenDummy +272,HellbatRangerACGluescreenDummy +273,StrikeGoliathACGluescreenDummy +274,HeavySiegeTankACGluescreenDummy +275,RaidLiberatorACGluescreenDummy +276,RavenTypeIIACGluescreenDummy +277,CovertBansheeACGluescreenDummy +278,RailgunTurretACGluescreenDummy +279,BlackOpsMissileTurretACGluescreenDummy +280,SupplicantACGluescreenDummy +281,StalkerTaldarimACGluescreenDummy +282,SentryTaldarimACGluescreenDummy +283,HighTemplarTaldarimACGluescreenDummy +284,ImmortalTaldarimACGluescreenDummy +285,ColossusTaldarimACGluescreenDummy +286,WarpPrismTaldarimACGluescreenDummy +287,PhotonCannonTaldarimACGluescreenDummy +288,StukovInfestedCivilianACGluescreenDummy +289,StukovInfestedMarineACGluescreenDummy +290,StukovInfestedSiegeTankACGluescreenDummy +291,StukovInfestedDiamondbackACGluescreenDummy +292,StukovInfestedBansheeACGluescreenDummy +293,SILiberatorACGluescreenDummy +294,StukovInfestedBunkerACGluescreenDummy +295,StukovInfestedMissileTurretACGluescreenDummy +296,StukovBroodQueenACGluescreenDummy +297,ZealotFenixACGluescreenDummy +298,SentryFenixACGluescreenDummy +299,AdeptFenixACGluescreenDummy +300,ImmortalFenixACGluescreenDummy +301,ColossusFenixACGluescreenDummy +302,DisruptorACGluescreenDummy +303,ObserverFenixACGluescreenDummy +304,ScoutACGluescreenDummy +305,CarrierFenixACGluescreenDummy +306,PhotonCannonFenixACGluescreenDummy +308,NeedleSpinesWeapon +309,CorruptionWeapon +310,InfestedTerransWeapon +311,NeuralParasiteWeapon +312,PointDefenseDroneReleaseWeapon +313,HunterSeekerWeapon +314,MULE +316,ThorAAWeapon +317,PunisherGrenadesLMWeapon +318,VikingFighterWeapon +319,ATALaserBatteryLMWeapon +320,ATSLaserBatteryLMWeapon +321,LongboltMissileWeapon +322,D8ChargeWeapon +323,YamatoWeapon +324,IonCannonsWeapon +325,AcidSalivaWeapon +326,SpineCrawlerWeapon +327,SporeCrawlerWeapon +328,GlaiveWurmWeapon +329,GlaiveWurmM2Weapon +330,GlaiveWurmM3Weapon +331,StalkerWeapon +332,EMP2Weapon +333,BacklashRocketsLMWeapon +334,PhotonCannonWeapon +335,ParasiteSporeWeapon +337,Broodling +338,BroodLordBWeapon +341,AutoTurretReleaseWeapon +342,LarvaReleaseMissile +343,AcidSpinesWeapon +344,FrenzyWeapon +345,ContaminateWeapon +357,BeaconRally +358,BeaconArmy +359,BeaconAttack +360,BeaconDefend +361,BeaconHarass +362,BeaconIdle +363,BeaconAuto +364,BeaconDetect +365,BeaconScout +366,BeaconClaim +367,BeaconExpand +368,BeaconCustom1 +369,BeaconCustom2 +370,BeaconCustom3 +371,BeaconCustom4 +372,Adept +373,Ravager +379,Rocks2x2NonConjoined +380,FungalGrowthMissile +381,NeuralParasiteTentacleMissile +382,Beacon_Protoss +383,Beacon_ProtossSmall +384,Beacon_Terran +385,Beacon_TerranSmall +386,Beacon_Zerg +387,Beacon_ZergSmall +388,Lyote +389,CarrionBird +390,KarakMale +391,KarakFemale +392,UrsadakFemaleExotic +393,UrsadakMale +394,UrsadakFemale +395,UrsadakCalf +396,UrsadakMaleExotic +397,UtilityBot +398,CommentatorBot1 +399,CommentatorBot2 +400,CommentatorBot3 +401,CommentatorBot4 +402,Scantipede +403,Dog +404,Sheep +405,Cow +406,InfestedTerransEggPlacement +407,InfestorTerransWeapon +408,MineralField +409,VespeneGeyser +410,SpacePlatformGeyser +411,RichVespeneGeyser +412,DestructibleSearchlight +413,DestructibleBullhornLights +414,DestructibleStreetlight +415,DestructibleSpacePlatformSign +416,DestructibleStoreFrontCityProps +417,DestructibleBillboardTall +418,DestructibleBillboardScrollingText +419,DestructibleSpacePlatformBarrier +420,DestructibleSignsDirectional +421,DestructibleSignsConstruction +422,DestructibleSignsFunny +423,DestructibleSignsIcons +424,DestructibleSignsWarning +425,DestructibleGarage +426,DestructibleGarageLarge +427,DestructibleTrafficSignal +428,TrafficSignal +429,BraxisAlphaDestructible1x1 +430,BraxisAlphaDestructible2x2 +431,DestructibleDebris4x4 +432,DestructibleDebris6x6 +433,DestructibleRock2x4Vertical +434,DestructibleRock2x4Horizontal +435,DestructibleRock2x6Vertical +436,DestructibleRock2x6Horizontal +437,DestructibleRock4x4 +438,DestructibleRock6x6 +439,DestructibleRampDiagonalHugeULBR +440,DestructibleRampDiagonalHugeBLUR +441,DestructibleRampVerticalHuge +442,DestructibleRampHorizontalHuge +443,DestructibleDebrisRampDiagonalHugeULBR +444,DestructibleDebrisRampDiagonalHugeBLUR +445,OverlordGenerateCreepKeybind +446,MengskStatueAlone +447,MengskStatue +448,WolfStatue +449,GlobeStatue +450,Weapon +451,GlaiveWurmBounceWeapon +452,BroodLordWeapon +453,BroodLordAWeapon +454,CreepBlocker1x1 +455,PermanentCreepBlocker1x1 +456,PathingBlocker1x1 +457,PathingBlocker2x2 +458,AutoTestAttackTargetGround +459,AutoTestAttackTargetAir +460,AutoTestAttacker +461,HelperEmitterSelectionArrow +462,MultiKillObject +463,ShapeGolfball +464,ShapeCone +465,ShapeCube +466,ShapeCylinder +467,ShapeDodecahedron +468,ShapeIcosahedron +469,ShapeOctahedron +470,ShapePyramid +471,ShapeRoundedCube +472,ShapeSphere +473,ShapeTetrahedron +474,ShapeThickTorus +475,ShapeThinTorus +476,ShapeTorus +477,Shape4PointStar +478,Shape5PointStar +479,Shape6PointStar +480,Shape8PointStar +481,ShapeArrowPointer +482,ShapeBowl +483,ShapeBox +484,ShapeCapsule +485,ShapeCrescentMoon +486,ShapeDecahedron +487,ShapeDiamond +488,ShapeFootball +489,ShapeGemstone +490,ShapeHeart +491,ShapeJack +492,ShapePlusSign +493,ShapeShamrock +494,ShapeSpade +495,ShapeTube +496,ShapeEgg +497,ShapeYenSign +498,ShapeX +499,ShapeWatermelon +500,ShapeWonSign +501,ShapeTennisball +502,ShapeStrawberry +503,ShapeSmileyFace +504,ShapeSoccerball +505,ShapeRainbow +506,ShapeSadFace +507,ShapePoundSign +508,ShapePear +509,ShapePineapple +510,ShapeOrange +511,ShapePeanut +512,ShapeO +513,ShapeLemon +514,ShapeMoneyBag +515,ShapeHorseshoe +516,ShapeHockeyStick +517,ShapeHockeyPuck +518,ShapeHand +519,ShapeGolfClub +520,ShapeGrape +521,ShapeEuroSign +522,ShapeDollarSign +523,ShapeBasketball +524,ShapeCarrot +525,ShapeCherry +526,ShapeBaseball +527,ShapeBaseballBat +528,ShapeBanana +529,ShapeApple +530,ShapeCashLarge +531,ShapeCashMedium +532,ShapeCashSmall +533,ShapeFootballColored +534,ShapeLemonSmall +535,ShapeOrangeSmall +536,ShapeTreasureChestOpen +537,ShapeTreasureChestClosed +538,ShapeWatermelonSmall +539,UnbuildableRocksDestructible +540,UnbuildableBricksDestructible +541,UnbuildablePlatesDestructible +542,Debris2x2NonConjoined +543,EnemyPathingBlocker1x1 +544,EnemyPathingBlocker2x2 +545,EnemyPathingBlocker4x4 +546,EnemyPathingBlocker8x8 +547,EnemyPathingBlocker16x16 +548,ScopeTest +549,SentryACGluescreenDummy +550,StukovInfestedTrooperACGluescreenDummy +551,MineralField750 +567,HellionTank +568,CollapsibleTerranTowerDebris +569,DebrisRampLeft +570,DebrisRampRight +571,MothershipCore +575,LocustMP +576,CollapsibleRockTowerDebris +577,NydusCanalAttacker +578,NydusCanalCreeper +579,SwarmHostBurrowedMP +580,SwarmHostMP +581,Oracle +582,Tempest +583,WarHound +584,WidowMine +585,Viper +586,WidowMineBurrowed +587,LurkerMPEgg +588,LurkerMP +589,LurkerMPBurrowed +590,LurkerDenMP +591,ExtendingBridgeNEWide8Out +592,ExtendingBridgeNEWide8 +593,ExtendingBridgeNWWide8Out +594,ExtendingBridgeNWWide8 +595,ExtendingBridgeNEWide10Out +596,ExtendingBridgeNEWide10 +597,ExtendingBridgeNWWide10Out +598,ExtendingBridgeNWWide10 +599,ExtendingBridgeNEWide12Out +600,ExtendingBridgeNEWide12 +601,ExtendingBridgeNWWide12Out +602,ExtendingBridgeNWWide12 +604,CollapsibleRockTowerDebrisRampRight +605,CollapsibleRockTowerDebrisRampLeft +606,XelNaga_Caverns_DoorE +607,XelNaga_Caverns_DoorEOpened +608,XelNaga_Caverns_DoorN +609,XelNaga_Caverns_DoorNE +610,XelNaga_Caverns_DoorNEOpened +611,XelNaga_Caverns_DoorNOpened +612,XelNaga_Caverns_DoorNW +613,XelNaga_Caverns_DoorNWOpened +614,XelNaga_Caverns_DoorS +615,XelNaga_Caverns_DoorSE +616,XelNaga_Caverns_DoorSEOpened +617,XelNaga_Caverns_DoorSOpened +618,XelNaga_Caverns_DoorSW +619,XelNaga_Caverns_DoorSWOpened +620,XelNaga_Caverns_DoorW +621,XelNaga_Caverns_DoorWOpened +622,XelNaga_Caverns_Floating_BridgeNE8Out +623,XelNaga_Caverns_Floating_BridgeNE8 +624,XelNaga_Caverns_Floating_BridgeNW8Out +625,XelNaga_Caverns_Floating_BridgeNW8 +626,XelNaga_Caverns_Floating_BridgeNE10Out +627,XelNaga_Caverns_Floating_BridgeNE10 +628,XelNaga_Caverns_Floating_BridgeNW10Out +629,XelNaga_Caverns_Floating_BridgeNW10 +630,XelNaga_Caverns_Floating_BridgeNE12Out +631,XelNaga_Caverns_Floating_BridgeNE12 +632,XelNaga_Caverns_Floating_BridgeNW12Out +633,XelNaga_Caverns_Floating_BridgeNW12 +634,XelNaga_Caverns_Floating_BridgeH8Out +635,XelNaga_Caverns_Floating_BridgeH8 +636,XelNaga_Caverns_Floating_BridgeV8Out +637,XelNaga_Caverns_Floating_BridgeV8 +638,XelNaga_Caverns_Floating_BridgeH10Out +639,XelNaga_Caverns_Floating_BridgeH10 +640,XelNaga_Caverns_Floating_BridgeV10Out +641,XelNaga_Caverns_Floating_BridgeV10 +642,XelNaga_Caverns_Floating_BridgeH12Out +643,XelNaga_Caverns_Floating_BridgeH12 +644,XelNaga_Caverns_Floating_BridgeV12Out +645,XelNaga_Caverns_Floating_BridgeV12 +648,CollapsibleTerranTowerPushUnitRampLeft +649,CollapsibleTerranTowerPushUnitRampRight +652,CollapsibleRockTowerPushUnit +653,CollapsibleTerranTowerPushUnit +654,CollapsibleRockTowerPushUnitRampRight +655,CollapsibleRockTowerPushUnitRampLeft +656,DigesterCreepSprayTargetUnit +657,DigesterCreepSprayUnit +658,NydusCanalAttackerWeapon +659,ViperConsumeStructureWeapon +662,ResourceBlocker +663,TempestWeapon +664,YoinkMissile +668,YoinkVikingAirMissile +670,YoinkVikingGroundMissile +672,YoinkSiegeTankMissile +674,WarHoundWeapon +676,EyeStalkWeapon +679,WidowMineWeapon +680,WidowMineAirWeapon +681,MothershipCoreWeaponWeapon +682,TornadoMissileWeapon +683,TornadoMissileDummyWeapon +684,TalonsMissileWeapon +685,CreepTumorMissile +686,LocustMPEggAMissileWeapon +687,LocustMPEggBMissileWeapon +688,LocustMPWeapon +690,RepulsorCannonWeapon +694,CollapsibleRockTowerDiagonal +695,CollapsibleTerranTowerDiagonal +696,CollapsibleTerranTowerRampLeft +697,CollapsibleTerranTowerRampRight +698,Ice2x2NonConjoined +699,IceProtossCrates +700,ProtossCrates +701,TowerMine +702,PickupPalletGas +703,PickupPalletMinerals +704,PickupScrapSalvage1x1 +705,PickupScrapSalvage2x2 +706,PickupScrapSalvage3x3 +707,RoughTerrain +708,UnbuildableBricksSmallUnit +709,UnbuildablePlatesSmallUnit +710,UnbuildablePlatesUnit +711,UnbuildableRocksSmallUnit +712,XelNagaHealingShrine +713,InvisibleTargetDummy +714,ProtossVespeneGeyser +715,CollapsibleRockTower +716,CollapsibleTerranTower +717,ThornLizard +718,CleaningBot +719,DestructibleRock6x6Weak +720,ProtossSnakeSegmentDemo +721,PhysicsCapsule +722,PhysicsCube +723,PhysicsCylinder +724,PhysicsKnot +725,PhysicsL +726,PhysicsPrimitives +727,PhysicsSphere +728,PhysicsStar +729,CreepBlocker4x4 +730,DestructibleCityDebris2x4Vertical +731,DestructibleCityDebris2x4Horizontal +732,DestructibleCityDebris2x6Vertical +733,DestructibleCityDebris2x6Horizontal +734,DestructibleCityDebris4x4 +735,DestructibleCityDebris6x6 +736,DestructibleCityDebrisHugeDiagonalBLUR +737,DestructibleCityDebrisHugeDiagonalULBR +738,TestZerg +739,PathingBlockerRadius1 +740,DestructibleRockEx12x4Vertical +741,DestructibleRockEx12x4Horizontal +742,DestructibleRockEx12x6Vertical +743,DestructibleRockEx12x6Horizontal +744,DestructibleRockEx14x4 +745,DestructibleRockEx16x6 +746,DestructibleRockEx1DiagonalHugeULBR +747,DestructibleRockEx1DiagonalHugeBLUR +748,DestructibleRockEx1VerticalHuge +749,DestructibleRockEx1HorizontalHuge +750,DestructibleIce2x4Vertical +751,DestructibleIce2x4Horizontal +752,DestructibleIce2x6Vertical +753,DestructibleIce2x6Horizontal +754,DestructibleIce4x4 +755,DestructibleIce6x6 +756,DestructibleIceDiagonalHugeULBR +757,DestructibleIceDiagonalHugeBLUR +758,DestructibleIceVerticalHuge +759,DestructibleIceHorizontalHuge +760,DesertPlanetSearchlight +761,DesertPlanetStreetlight +762,UnbuildableBricksUnit +763,UnbuildableRocksUnit +764,ZerusDestructibleArch +765,Artosilope +766,Anteplott +767,LabBot +768,Crabeetle +769,CollapsibleRockTowerRampRight +770,CollapsibleRockTowerRampLeft +771,LabMineralField +772,LabMineralField750 +788,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +789,SnowRefinery_Terran_ExtendingBridgeNEShort8 +790,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +791,SnowRefinery_Terran_ExtendingBridgeNWShort8 +796,Tarsonis_DoorN +797,Tarsonis_DoorNLowered +798,Tarsonis_DoorNE +799,Tarsonis_DoorNELowered +800,Tarsonis_DoorE +801,Tarsonis_DoorELowered +802,Tarsonis_DoorNW +803,Tarsonis_DoorNWLowered +804,CompoundMansion_DoorN +805,CompoundMansion_DoorNLowered +806,CompoundMansion_DoorNE +807,CompoundMansion_DoorNELowered +808,CompoundMansion_DoorE +809,CompoundMansion_DoorELowered +810,CompoundMansion_DoorNW +811,CompoundMansion_DoorNWLowered +812,RavagerCocoon +813,Liberator +814,RavagerBurrowed +816,ThorAP +817,Cyclone +818,LocustMPFlying +819,Disruptor +820,AiurLightBridgeNE8Out +821,AiurLightBridgeNE8 +822,AiurLightBridgeNE10Out +823,AiurLightBridgeNE10 +824,AiurLightBridgeNE12Out +825,AiurLightBridgeNE12 +826,AiurLightBridgeNW8Out +827,AiurLightBridgeNW8 +828,AiurLightBridgeNW10Out +829,AiurLightBridgeNW10 +830,AiurLightBridgeNW12Out +831,AiurLightBridgeNW12 +832,AiurTempleBridgeNE8Out +834,AiurTempleBridgeNE10Out +836,AiurTempleBridgeNE12Out +838,AiurTempleBridgeNW8Out +840,AiurTempleBridgeNW10Out +842,AiurTempleBridgeNW12Out +844,ShakurasLightBridgeNE8Out +845,ShakurasLightBridgeNE8 +846,ShakurasLightBridgeNE10Out +847,ShakurasLightBridgeNE10 +848,ShakurasLightBridgeNE12Out +849,ShakurasLightBridgeNE12 +850,ShakurasLightBridgeNW8Out +851,ShakurasLightBridgeNW8 +852,ShakurasLightBridgeNW10Out +853,ShakurasLightBridgeNW10 +854,ShakurasLightBridgeNW12Out +855,ShakurasLightBridgeNW12 +856,VoidMPImmortalReviveCorpse +857,GuardianCocoonMP +858,GuardianMP +859,DevourerCocoonMP +860,DevourerMP +861,DefilerMPBurrowed +862,DefilerMP +863,OracleStasisTrap +864,DisruptorPhased +865,LiberatorAG +866,AiurLightBridgeAbandonedNE8Out +867,AiurLightBridgeAbandonedNE8 +868,AiurLightBridgeAbandonedNE10Out +869,AiurLightBridgeAbandonedNE10 +870,AiurLightBridgeAbandonedNE12Out +871,AiurLightBridgeAbandonedNE12 +872,AiurLightBridgeAbandonedNW8Out +873,AiurLightBridgeAbandonedNW8 +874,AiurLightBridgeAbandonedNW10Out +875,AiurLightBridgeAbandonedNW10 +876,AiurLightBridgeAbandonedNW12Out +877,AiurLightBridgeAbandonedNW12 +878,CollapsiblePurifierTowerDebris +879,PortCity_Bridge_UnitNE8Out +880,PortCity_Bridge_UnitNE8 +881,PortCity_Bridge_UnitSE8Out +882,PortCity_Bridge_UnitSE8 +883,PortCity_Bridge_UnitNW8Out +884,PortCity_Bridge_UnitNW8 +885,PortCity_Bridge_UnitSW8Out +886,PortCity_Bridge_UnitSW8 +887,PortCity_Bridge_UnitNE10Out +888,PortCity_Bridge_UnitNE10 +889,PortCity_Bridge_UnitSE10Out +890,PortCity_Bridge_UnitSE10 +891,PortCity_Bridge_UnitNW10Out +892,PortCity_Bridge_UnitNW10 +893,PortCity_Bridge_UnitSW10Out +894,PortCity_Bridge_UnitSW10 +895,PortCity_Bridge_UnitNE12Out +896,PortCity_Bridge_UnitNE12 +897,PortCity_Bridge_UnitSE12Out +898,PortCity_Bridge_UnitSE12 +899,PortCity_Bridge_UnitNW12Out +900,PortCity_Bridge_UnitNW12 +901,PortCity_Bridge_UnitSW12Out +902,PortCity_Bridge_UnitSW12 +903,PortCity_Bridge_UnitN8Out +904,PortCity_Bridge_UnitN8 +905,PortCity_Bridge_UnitS8Out +906,PortCity_Bridge_UnitS8 +907,PortCity_Bridge_UnitE8Out +908,PortCity_Bridge_UnitE8 +909,PortCity_Bridge_UnitW8Out +910,PortCity_Bridge_UnitW8 +911,PortCity_Bridge_UnitN10Out +912,PortCity_Bridge_UnitN10 +913,PortCity_Bridge_UnitS10Out +914,PortCity_Bridge_UnitS10 +915,PortCity_Bridge_UnitE10Out +916,PortCity_Bridge_UnitE10 +917,PortCity_Bridge_UnitW10Out +918,PortCity_Bridge_UnitW10 +919,PortCity_Bridge_UnitN12Out +920,PortCity_Bridge_UnitN12 +921,PortCity_Bridge_UnitS12Out +922,PortCity_Bridge_UnitS12 +923,PortCity_Bridge_UnitE12Out +924,PortCity_Bridge_UnitE12 +925,PortCity_Bridge_UnitW12Out +926,PortCity_Bridge_UnitW12 +927,PurifierRichMineralField +928,PurifierRichMineralField750 +943,CollapsiblePurifierTowerPushUnit +945,LocustMPPrecursor +946,ReleaseInterceptorsBeacon +947,AdeptPhaseShift +948,RavagerCorrosiveBileMissile +949,HydraliskImpaleMissile +950,CycloneMissileLargeAir +951,CycloneMissile +952,CycloneMissileLarge +953,ThorAALance +954,OracleWeapon +955,TempestWeaponGround +956,RavagerWeaponMissile +957,ScoutMPAirWeaponLeft +958,ScoutMPAirWeaponRight +959,ArbiterMPWeaponMissile +960,GuardianMPWeapon +961,DevourerMPWeaponMissile +962,DefilerMPDarkSwarmWeapon +963,QueenMPEnsnareMissile +964,QueenMPSpawnBroodlingsMissile +965,LightningBombWeapon +966,HERCPlacement +967,GrappleWeapon +970,CausticSprayMissile +971,ParasiticBombMissile +972,ParasiticBombDummy +973,AdeptWeapon +974,AdeptUpgradeWeapon +975,LiberatorMissile +976,LiberatorDamageMissile +977,LiberatorAGMissile +978,KD8Charge +979,KD8ChargeWeapon +981,SlaynElementalGrabWeapon +982,SlaynElementalGrabAirUnit +983,SlaynElementalGrabGroundUnit +984,SlaynElementalWeapon +989,DestructibleExpeditionGate6x6 +990,DestructibleZergInfestation3x3 +991,HERC +992,Moopy +993,Replicant +994,SeekerMissile +995,AiurTempleBridgeDestructibleNE8Out +996,AiurTempleBridgeDestructibleNE10Out +997,AiurTempleBridgeDestructibleNE12Out +998,AiurTempleBridgeDestructibleNW8Out +999,AiurTempleBridgeDestructibleNW10Out +1000,AiurTempleBridgeDestructibleNW12Out +1001,AiurTempleBridgeDestructibleSW8Out +1002,AiurTempleBridgeDestructibleSW10Out +1003,AiurTempleBridgeDestructibleSW12Out +1004,AiurTempleBridgeDestructibleSE8Out +1005,AiurTempleBridgeDestructibleSE10Out +1006,AiurTempleBridgeDestructibleSE12Out +1008,FlyoverUnit +1009,CorsairMP +1010,ScoutMP +1012,ArbiterMP +1013,ScourgeMP +1014,DefilerMPPlagueWeapon +1015,QueenMP +1016,XelNagaDestructibleRampBlocker6S +1017,XelNagaDestructibleRampBlocker6SE +1018,XelNagaDestructibleRampBlocker6E +1019,XelNagaDestructibleRampBlocker6NE +1020,XelNagaDestructibleRampBlocker6N +1021,XelNagaDestructibleRampBlocker6NW +1022,XelNagaDestructibleRampBlocker6W +1023,XelNagaDestructibleRampBlocker6SW +1024,XelNagaDestructibleRampBlocker8S +1025,XelNagaDestructibleRampBlocker8SE +1026,XelNagaDestructibleRampBlocker8E +1027,XelNagaDestructibleRampBlocker8NE +1028,XelNagaDestructibleRampBlocker8N +1029,XelNagaDestructibleRampBlocker8NW +1030,XelNagaDestructibleRampBlocker8W +1031,XelNagaDestructibleRampBlocker8SW +1032,XelNagaDestructibleBlocker6S +1033,XelNagaDestructibleBlocker6SE +1034,XelNagaDestructibleBlocker6E +1035,XelNagaDestructibleBlocker6NE +1036,XelNagaDestructibleBlocker6N +1037,XelNagaDestructibleBlocker6NW +1038,XelNagaDestructibleBlocker6W +1039,XelNagaDestructibleBlocker6SW +1040,XelNagaDestructibleBlocker8S +1041,XelNagaDestructibleBlocker8SE +1042,XelNagaDestructibleBlocker8E +1043,XelNagaDestructibleBlocker8NE +1044,XelNagaDestructibleBlocker8N +1045,XelNagaDestructibleBlocker8NW +1046,XelNagaDestructibleBlocker8W +1047,XelNagaDestructibleBlocker8SW +1048,ReptileCrate +1049,SlaynSwarmHostSpawnFlyer +1050,SlaynElemental +1051,PurifierVespeneGeyser +1052,ShakurasVespeneGeyser +1053,CollapsiblePurifierTowerDiagonal +1054,CreepOnlyBlocker4x4 +1055,PurifierMineralField +1056,PurifierMineralField750 +1057,BattleStationMineralField +1058,BattleStationMineralField750 +1059,Beacon_Nova +1060,Beacon_NovaSmall +1061,Ursula +1062,Elsecaro_Colonist_Hut +1063,SnowGlazeStarterMP +1064,TransportOverlordCocoon +1065,OverlordTransport +1066,PylonOvercharged +1068,BypassArmorDrone +1069,AdeptPiercingWeapon +1070,CorrosiveParasiteWeapon diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index a6348f3a..730818de 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -406,7 +406,7 @@ def load_build(expansion, version): # Load LotV Data lotv_builds = dict() -for version in ('base', '44401', '47185', '48258'): +for version in ('base', '44401', '47185', '48258', '53644'): lotv_builds[version] = load_build('LotV', version) datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds, 'LotV': lotv_builds} diff --git a/sc2reader/data/ability_lookup.csv b/sc2reader/data/ability_lookup.csv index 9267381b..a3351e1f 100755 --- a/sc2reader/data/ability_lookup.csv +++ b/sc2reader/data/ability_lookup.csv @@ -1,18 +1,18 @@ 250mmStrikeCannons,250mmStrikeCannons,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Cancel250mmStrikeCannons, -ArchonWarp,ArchonWarpSelection,ArchonWarpTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ArchonWarp,SelectedUnits,ArchonWarpTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ArmSiloWithNuke,BuildNuke,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelNuke, -ArmoryResearch,,,UpgradeVehiclePlating1,UpgradeVehiclePlating2,UpgradeVehiclePlating3,UpgradeVehicleWeapons1,UpgradeVehicleWeapons2,UpgradeVehicleWeapons3,UpgradeShipPlating1,UpgradeShipPlating2,UpgradeShipPlating3,UpgradeShipWeapons1,UpgradeShipWeapons2,UpgradeShipWeapons3,,,,,,,,,,,,,,,,,CancelArmoryResearch, +ArmoryResearch,,,UpgradeVehiclePlating1,UpgradeVehiclePlating2,UpgradeVehiclePlating3,ResearchTerranVehicleWeaponsLevel1,ResearchTerranVehicleWeaponsLevel2,ResearchTerranVehicleWeaponsLevel3,UpgradeShipPlating1,UpgradeShipPlating2,UpgradeShipPlating3,ResearchTerranShipWeaponsLevel1,ResearchTerranShipWeaponsLevel2,ResearchTerranShipWeaponsLevel3,ResearchTerranVehicleAndShipArmorsLevel1,ResearchTerranVehicleAndShipArmorsLevel2,ResearchTerranVehicleAndShipArmorsLevel3,,,,,,,,,,,,,,CancelArmoryResearch, AssaultMode,AssaultMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -AttackRedirect,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +AttackRedirect,AttackRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AttackWarpPrism,AttackWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BanelingNestResearch,EvolveCentrifugalHooks,EvolveTunnelingJaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBanelingNestResearch, -BansheeCloak,CloakBanshee,DecloakBanshee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BanelingNestResearch,ResearchCentrificalHooks,EvolveTunnelingJaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBanelingNestResearch, +BansheeCloak,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksAddOns,TechLabBarracks,ReactorBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksAddon, -BarracksLand,LandBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BarracksLiftOff,LiftBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BarracksLand,BarracksLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BarracksLiftOff,BarracksLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksReactorMorph,BuildReactorBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksTechLabMorph,BuildTechLabBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BarracksTechLabResearch,ResearchStimpack,ResearchCombatShield,ResearchConcussiveShells,ResearchCombatDrugs,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTechLabResearch, +BarracksTechLabResearch,ResearchStimpack,ResearchShieldWall,ResearchPunisherGrenades,ResearchCombatDrugs,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTechLabResearch, BarracksTrain,TrainMarine,TrainReaper,TrainGhost,TrainMarauder,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTrain, Beacon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Blink,Blink,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -21,35 +21,35 @@ BridgeRetract,BridgeRetract,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BroodLordHangar,BuildBroodling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BroodLordQueue2,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildAutoTurret,BuildAutoTurret,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BuildInProgress,CancelBuilding,HaltBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BuildInProgress,Cancel,Halt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildNydusCanal,BuildNydusWorm,SummonNydusDestroyer,SummonCreepTower,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelNydusNetworkBuild, BuildinProgressNydusCanal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildingShield,BuildingShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildingStasis,PhaseShift,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BunkerTransport,LoadTargetBunker,UnloadAllBunker,UnloadTargetBunker,UnloadUnitBunker,LoadAllBunker,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowBanelingDown,BurrowBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowBanelingUp,UnburrowBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BunkerTransport,Load,UnloadAll,UnloadTargetBunker,UnloadUnitBunker,LoadAllBunker,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowBanelingDown,BurrowBanelingDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowBanelingUp,BurrowBanelingUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeMP,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeRevD,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeTrial,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowCreepTumorDown,BurrowCreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowDroneDown,BurrowDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowDroneUp,UnburrowDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowHydraliskDown,BurrowHydralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowHydraliskUp,UnburrowHydralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorDown,BurrowInfestor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorTerranDown,BurrowInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorTerranUp,UnburrowInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorUp,UnburrowInfestor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowDroneDown,BurrowDroneDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowDroneUp,BurrowDroneUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowHydraliskDown,BurrowHydraliskDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowHydraliskUp,BurrowHydraliskUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorDown,BurrowInfestorDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorTerranDown,BurrowInfestorTerranDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorTerranUp,BurrowInfestorTerranUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorUp,BurrowInfestorUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowProtector,BlindingCloud,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowQueenDown,BurrowQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowQueenUp,UnburrowQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowRoachDown,BurrowRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowRoachUp,UnburrowRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowUltraliskDown,BurrowUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowUltraliskUp,UnburrowUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowZerglingDown,BurrowZergling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowZerglingUp,UnburrowZergling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowQueenDown,BurrowQueenDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowQueenUp,BurrowQueenUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowRoachDown,BurrowRoachDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowRoachUp,BurrowRoachUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowUltraliskDown,BurrowUltraliskDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowUltraliskUp,BurrowUltraliskUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowZerglingDown,BurrowZerglingDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowZerglingUp,BurrowZerglingUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilArmMagazine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilAttack,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilAugment,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -88,16 +88,16 @@ CalldownMULE,CalldownMULE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CarrierHangar,BuildInterceptor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Charge,Charge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Clone,Clone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CommandCenterLand,LandCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CommandCenterLiftOff,LiftCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterLand,CommandCenterLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterLiftOff,CommandCenterLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CommandCenterTrain,TrainSCV,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCommandCenterTrain, -CommandCenterTransport,LoadTargetCommandCenter,UnloadAllCommandCenter,UnloadTargetCommandCenter,UnloadUnitCommandCenter,LoadAllCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterTransport,Load,UnloadAll,UnloadTargetCommandCenter,UnloadUnitCommandCenter,LoadAll,,,,,,,,,,,,,,,,,,,,,,,,,,, Contaminate,Contaminate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Corruption,Corruption,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCorruption, CreepTumorBuild,BuildCreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, CritterFlee,CritterFlee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CyberneticsCoreResearch,UpgradeAirWeapons1,UpgradeAirWeapons2,UpgradeAirWeapons3,UpgradeAirArmor1,UpgradeAirArmor2,UpgradeAirArmor3,ResearchWarpGate,,,ResearchHallucination,,,,,,,,,,,,,,,,,,,,,CancelCyberneticsCoreResearch, -DigesterCreepSpray,CreepSpray,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CyberneticsCoreResearch,ResearchProtossAirWeaponsLevel1,ResearchProtossAirWeaponsLevel2,ResearchProtossAirWeaponsLevel3,ResearchProtossAirArmorsLevel1,ResearchProtossAirArmorsLevel2,ResearchProtossAirArmorsLevel3,ResearchWarpGateResearch,,,ResearchHallucination,,,,,,,,,,,,,,,,,,,,,CancelCyberneticsCoreResearch, +DigesterCreepSpray,DigesterCreepSpray,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DigesterTransport,LoadTargetDigester,UnloadAllDigester,UnloadTargetDigester,UnloadUnitDigester,LoadAllDigester,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsMarineWithShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsMarineWithoutShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -105,112 +105,112 @@ DisguiseAsZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsZerglingWithWings,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsZerglingWithoutWings,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseChangeling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DroneHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -EMP,EMPRound,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -EngineeringBayResearch,ResearchHiSecAutoTracking,UpgradeStructureArmor,UpgradeTerranInfantryWeapons1,UpgradeTerranInfantryWeapons2,UpgradeTerranInfantryWeapons3,ResearchNeosteelFrame,UpgradeTerranInfantryArmor1,UpgradeTerranInfantryArmor2,UpgradeTerranInfantryArmor3,,,,,,,,,,,,,,,,,,,,,,CancelEngineeringBayResearch, +DroneHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +EMP,EMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +EngineeringBayResearch,ResearchHiSecAutoTracking,ResearchTerranBuildingArmor,ResearchTerranInfantryWeaponsLevel1,ResearchTerranInfantryWeaponsLevel2,ResearchTerranInfantryWeaponsLevel3,ResearchNeosteelFrame,ResearchTerranInfantryArmorsLevel1,ResearchTerranInfantryArmorsLevel2,ResearchTerranInfantryArmorsLevel3,,,,,,,,,,,,,,,,,,,,,,CancelEngineeringBayResearch, Explode,Explode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide10Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide12Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNEWide8Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide10Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide12Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ExtendingBridgeNWWide8Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide10,ExtendingBridgeNEWide10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide10Out,ExtendingBridgeNEWide10Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide12,ExtendingBridgeNEWide12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide12Out,ExtendingBridgeNEWide12Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide8,ExtendingBridgeNEWide8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNEWide8Out,ExtendingBridgeNEWide8Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide10,ExtendingBridgeNWWide10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide10Out,ExtendingBridgeNWWide10Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide12,ExtendingBridgeNWWide12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide12Out,ExtendingBridgeNWWide12Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide8,ExtendingBridgeNWWide8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ExtendingBridgeNWWide8Out,ExtendingBridgeNWWide8Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, EyeStalk,EyeStalk,CancelEyeStalk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryAddOns,BuildTechLabFactory,BuildReactorFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryAddOn, -FactoryLand,LandFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FactoryLiftOff,LiftFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +FactoryLand,FactoryLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +FactoryLiftOff,FactoryLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryReactorMorph,BuildReactorFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryTechLabMorph,BuildTechLabFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FactoryTechLabResearch,ResearchSiegeTech,ResearchInfernalPreIgniter,Research250mmStrikeCannons,ResearchTransformationServos,ResearchDrillingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryTechLabResearch, -FactoryTrain,,BuildSiegeTank,,,BuildThor,BuildHellion,BuildBattleHellion,,,,,,BuildWarHound,,,,,,,,,,,,BuildWidowMine,,,,,,CancelFactoryTrain, +FactoryTechLabResearch,ResearchSiegeTech,ResearchHighCapacityBarrels,Research250mmStrikeCannons,ResearchTransformationServos,ResearchDrillClaws,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryTechLabResearch, +FactoryTrain,,TrainSiegeTank,,,TrainThor,TrainHellion,TrainHellionTank,TrainCyclone,,,,,BuildWarHound,,,,,,,,,,,,TrainWidowMine,,,,,,CancelFactoryTrain, Feedback,Feedback,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FighterMode,FighterMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FleetBeaconResearch,ResearchFluxVanes,ResearchGravitonCatapult,ResearchAnionPulseCrystals,,ResearchBosonicCore,ResearchGravitySling,,,,,,,,,,,,,,,,,,,,,,,,,CancelFleetBeaconResearch, +FleetBeaconResearch,ResearchCarrierLaunchSpeedUpgrade,ResearchGravitonCatapult,ResearchPhoenixRangeUpgrade,,ResearchBosonicCore,ResearchGravitySling,,,,,,,,,,,,,,,,,,,,,,,,,CancelFleetBeaconResearch, FlyerShield,FlyerShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ForceField,ForceField,CancelForceField,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ForgeResearch,UpgradeGroundWeapons1,UpgradeGroundWeapons2,UpgradeGroundWeapons3,UpgradeGroundArmor1,UpgradeGroundArmor2,UpgradeGroundArmor3,UpgradeShields1,UpgradeShields2,UpgradesShields3,,,,,,,,,,,,,,,,,,,,,,CancelForgeResearch, +ForgeResearch,ResearchProtossGroundWeaponsLevel1,ResearchProtossGroundWeaponsLevel2,ResearchProtossGroundWeaponsLevel3,ResearchProtossGroundArmorsLevel1,ResearchProtossGroundArmorsLevel2,ResearchProtossGroundArmorsLevel3,ResearchProtossShieldsLevel1,ResearchProtossShieldsLevel2,ResearchProtossShieldsLevel3,,,,,,,,,,,,,,,,,,,,,,CancelForgeResearch, Frenzy,Frenzy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FungalGrowth,FungalGrowth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FusionCoreResearch,ResearchWeaponRefit,ResearchBehemothReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFusionCoreResearch, -GatewayTrain,TrainZealot,TrainStalker,,TrainHighTemplar,TrainDarkTemplar,TrainSentry,,,,,,,,,,,,,,,,,,,,,,,,,CancelGatewayTrain, -GenerateCreep,GenerateCreep,StopGenerateCreep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +FusionCoreResearch,ResearchBattlecruiserEnableSpecializations,ResearchBehemothReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFusionCoreResearch, +GatewayTrain,TrainZealot,TrainStalker,,TrainHighTemplar,TrainDarkTemplar,TrainSentry,TrainAdept,,,,,,,,,,,,,,,,,,,,,,,,CancelGatewayTrain, +GenerateCreep,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, GhostAcademyResearch,ResearchPersonalCloaking,ResearchMoebiusReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelGhostAcademyResearch, -GhostCloak,CloakGhost,DecloakGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GhostHoldFire,HoldFireGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GhostWeaponsFree,GWeaponsFreeGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GravitonBeam,GravitonBeam,CancelGravitonBeam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostCloak,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostHoldFire,GhostHoldFire,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostWeaponsFree,GhostWeaponsFree,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GravitonBeam,GravitonBeam,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, GuardianShield,GuardianShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationArchon,HallucinateArchon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationColossus,HallucinateColossus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationHighTemplar,HallucinateHighTemplar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationImmortal,HallucinateImmortal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationOracle,HallucinateOracle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationPhoenix,HallucinatePhoenix,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationProbe,HallucinateProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationStalker,HallucinateStalker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationVoidRay,HallucinateVoidRay,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationWarpPrism,HallucinateWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationZealot,HallucinateZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationArchon,HallucinationArchon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationColossus,HallucinationColossus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationHighTemplar,HallucinationHighTemplar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationImmortal,HallucinationImmortal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationOracle,HallucinationOracle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationPhoenix,HallucinationPhoenix,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationProbe,HallucinationProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationStalker,HallucinationStalker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationVoidRay,HallucinationVoidRay,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationWarpPrism,HallucinationWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationZealot,HallucinationZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HangarQueue5,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HerdInteract,Herd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HoldFire,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HydraliskDenResearch,,,EvolveGroovedSpines,EvolveMuscularAugments,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelHydraliskDenResearch, -InfestationPitResearch,,,EvolvePathogenGlands,EvolveNeuralParasite,EvolveEnduringLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,CancelInfestationPitResearch, -InfestedTerrans,SpawnInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HydraliskDenResearch,,ResearchEvolveMuscularAugments,EvolveGroovedSpines,EvolveMuscularAugments,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelHydraliskDenResearch, +InfestationPitResearch,,,ResearchInfestorEnergyUpgrade,ResearchNeuralParasite,EvolveEnduringLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,CancelInfestationPitResearch, +InfestedTerrans,InfestedTerrans,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, InfestedTerransLayEgg,SpawnInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, InvulnerabilityShield,InvulnerabilityShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -LairResearch,,EvolvePneumatizedCarapace,EvolveVentralSacs,EvolveBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelLairResearch, -LarvaTrain,MorphDrone,MorphZergling,MorphOverlord,MorphHydralisk,MorphMutalisk,,MorphUltralisk,,,MorphRoach,MorphInfestor,MorphCorruptor,MorphViper,,MorphSwarmHost,,,,,,,,,,,,,,,,CancelLarvaTrain, +LairResearch,,Researchoverlordspeed,EvolveVentralSacs,ResearchBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelLairResearch, +LarvaTrain,TrainDrone,TrainZergling,TrainOverlord,TrainHydralisk,TrainMutalisk,,TrainUltralisk,,,TrainRoach,TrainInfestor,TrainCorruptor,TrainViper,,TrainSwarmHostMP,,,,,,,,,,,,,,,,CancelLarvaTrain, Leech,Leech,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LocustTrain,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MULEGather,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MULEGather,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MULERepair,MULERepair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MassRecall,MassRecallMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MassiveKnockover,MassiveKnockover,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MaxiumThrust,MaxiumThrust,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MedivacHeal,HealMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MedivacHeal,MedivacHeal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MedivacSpeedBoost,MedivacSpeedBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MedivacTransport,LoadTargetMedivac,UnloadAllMedivac,UnloadTargetMedivac,UnloadUnitMedivac,LoadAllMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,, +MedivacTransport,Load,UnloadAllMedivac,UnloadAt,UnloadUnitMedivac,LoadAllMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,, MercCompoundResearch,,,,ResearchNitroPacks,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mergeable,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MetalGateDefaultLower,MetalGateDefaultLower,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MetalGateDefaultRaise,MetalGateDefaultRaise,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphBackToGateway,TransformToGateway,CancelTransformToGateway,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToBroodLord,MorphToBroodLord,CancelMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphBackToGateway,MorphBackToGateway,CancelTransformToGateway,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToBroodLord,MorphToBroodLord,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebris,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToHellion,StrikeMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToHellionTank,BattleMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToHellion,MorphToHellion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToHellionTank,MorphToHellionTank,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToInfestedTerran,MorphToInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToMothership,UpgradeToMothership,CancelUpgradeToMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToOverseer,MorphToOverseer,CancelMorphToOverseer,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToSwarmHostBurrowedMP,BurrowSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToSwarmHostMP,UnburrowSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToMothership,MorphToMothership,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToOverseer,MorphToOverseer,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToSwarmHostBurrowedMP,MorphToSwarmHostBurrowedMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToSwarmHostMP,MorphToSwarmHostMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphZerglingToBaneling,MorphToBaneling,CancelMorphToBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreEnergize,Energize,CancelEnergize,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MothershipCoreMassRecall,MassRecallMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MothershipCoreMassRecall,MothershipCoreMassRecall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreTeleport,Teleport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreWeapon,Purify,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipStasis,Stasis,CancelStasis,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -NeuralParasite,InfestorNeuralParasite,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +NeuralParasite,NeuralParasite,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusInvulnerability,InvulnerabilityNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusPhaseShift,PhaseShiftNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusTrain,TrainProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainProbe, NexusTrainMothership,TrainMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothership, -NexusTrainMothershipCore,TrainMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothershipCore, -NydusCanalTransport,LoadTargetNydus,UnloadAllNydus,UnloadTargetNydus,UnloadUnitNydus,LoadAllNydus,,,,,,,,,,,,,,,,,,,,,,,,,,, +NexusTrainMothershipCore,NexusTrainMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothershipCore, +NydusCanalTransport,Load,UnloadAll,UnloadTargetNydus,UnloadUnitNydus,LoadAllNydus,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleCloakField,CloakField,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleNormalMode,FlightMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OracleRevelation,Revelation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OracleRevelation,OracleRevelation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleRevelationMode,RevelationMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OrbitalCommandLand,LandOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OrbitalLiftOff,LiftOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OverlordTransport,LoadTargetOverlord,UnloadAllOverlord,UnloadTargetOverlord,UnloadUnitOverlord,LoadAllOverlord,,,,,,,,,,,,,,,,,,,,,,,,,,, +OrbitalCommandLand,OrbitalCommandLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OrbitalLiftOff,OrbitalLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OverlordTransport,Load,UnloadAllOverlord,UnloadAt,UnloadUnitOverlord,LoadAllOverlord,,,,,,,,,,,,,,,,,,,,,,,,,,, PhaseShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PhaseShift,PhaseShiftNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PhasingMode,PhasingMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -219,27 +219,27 @@ PickupPalletMinerals,PickupPalletMinerals,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapLarge,PickupScrapLarge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapMedium,PickupScrapMedium,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapSmall,PickupScrapSmall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -PlacePointDefenseDrone,BuildPointDefenseDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ProbeHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ProgressRally,SetRallyPoint,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +PlacePointDefenseDrone,PlacePointDefenseDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ProbeHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ProgressRally,Rally1,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ProtossBuild,BuildNexus,BuildPylon,BuildAssimilator,BuildGateway,BuildForge,BuildFleetBeacon,BuildTwilightCouncil,BuildPhotonCannon,,BuildStargate,BuildTemplarArchive,BuildDarkShrine,BuildRoboticsBay,BuildRoboticsFacility,BuildCyberneticsCore,,,,,,,,,,,,,,,,CancelProtossBuild, ProtossBuildingQueue,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -PsiStorm,PsionicStorm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -QueenBuild,CreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, +PsiStorm,PsiStorm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +QueenBuild,BuildCreepTumorQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, QueenFly,QueenFly,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, QueenLand,QueenLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Rally,SetRallyPoint,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyCommand,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyHatchery,SetUnitRally,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyNexus,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Rally,Rally1,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyCommand,Rally1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyHatchery,Rally1,Rally2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyNexus,Rally1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RavenBuild,BuildAutoTurret,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRavenBuild, ReactorMorph,ReactorMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterBurrow,BurrowRedstoneLavaCritter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterInjuredBurrow,BurrowRedstoneLavaCritterInjured,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterInjuredUnburrow,UnburrowRedstoneLavaCritterInjured,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterUnburrow,UnburrowRedstoneLavaCritter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterBurrow,RedstoneLavaCritterBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterInjuredBurrow,RedstoneLavaCritterInjuredBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterInjuredUnburrow,RedstoneLavaCritterInjuredUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterUnburrow,RedstoneLavaCritterUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Refund,Salvage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Repair,SCVRepair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Repair,Repair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ResourceBlocker,MineralShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ResourceStun,Entomb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RestoreShields,RestoreShields,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -247,10 +247,10 @@ ReviveSelf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfAtTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfOnCreep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfReplaceTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RoachWarrenResearch,,EvolveGlialReconstitution,EvolveTunnelingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoachWarrenResearch, -RoboticsBayResearch,,ResearchGraviticBoosters,ResearchGraviticDrive,,,ResearchExtendedThermalLance,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoboticsBayResearch, -RoboticsFacilityTrain,TrainWarpPrism,TrainObserver,TrainColossus,TrainImmortal,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoboticsFacilityTrain, -SCVHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RoachWarrenResearch,,ResearchGlialReconstitution,ResearchTunnelingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoachWarrenResearch, +RoboticsBayResearch,,ResearchObserverGraviticBooster,ResearchGraviticDrive,,,ResearchExtendedThermalLance,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoboticsBayResearch, +RoboticsFacilityTrain,TrainWarpPrism,TrainObserver,TrainColossus,TrainImmortal,,,,,,,,,,,,,,,TrainDisruptor,,,,,,,,,,,,CancelRoboticsFacilityTrain, +SCVHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Sacrifice,Sacrifice,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Salvage,Salvage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageBaneling,SalvageBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -267,7 +267,7 @@ SalvageQueen,SalvageQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageQueenRefund,SalvageQueenRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageRoach,SalvageRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageRoachRefund,SalvageRoachRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SalvageShared,SalvageShared,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SalvageShared,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageSwarmHost,SalvageSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageSwarmHostRefund,SalvageSwarmHostRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageUltralisk,SalvageUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -288,31 +288,31 @@ SpawnChangeling,SpawnChangeling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnChangelingTarget,SpawnChangelingTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnInfestedTerran,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnLarva,SpawnLarva,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpawningPoolResearch,EvolveAdrenalGlands,EvolveMetabolicBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpawningPoolResearch, +SpawningPoolResearch,Researchzerglingattackspeed,Researchzerglingmovementspeed,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpawningPoolResearch, SpectreShield,SpectreShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpineCrawlerRoot,RootSpineCrawler,CancelRootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpineCrawlerUproot,UprootSpineCrawler,CancelUprootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpireResearch,EvolveFlyerAttacks1,EvolveFlyerAttacks2,EvolveFlyerAttacks3,EvolveFlyerCarapace1,EvolveFlyerCarapace2,EvolveFlyerCarapace3,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpireResearch, -SporeCrawlerRoot,RootSporeCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRootSporeCrawler, -SporeCrawlerUproot,UprootSporeCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUprootSporeCrawler, +SpineCrawlerRoot,SpineCrawlerRoot,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SpineCrawlerUproot,SpineCrawlerUproot,CancelUprootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SpireResearch,ResearchZergFlyerWeaponsLevel1,ResearchZergFlyerWeaponsLevel2,ResearchZergFlyerWeaponsLevel3,ResearchZergFlyerArmorsLevel1,ResearchZergFlyerArmorsLevel2,ResearchZergFlyerArmorsLevel3,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpireResearch, +SporeCrawlerRoot,SporeCrawlerRoot,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRootSporeCrawler, +SporeCrawlerUproot,SporeCrawlerUproot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUprootSporeCrawler, StargateTrain,TrainPhoenix,TrainCarrier,TrainCarrier,,TrainVoidRay,,,,TrainOracle,TrainTempest,,,,,,,,,,,,,,,,,,,,,CancelStargateTrain, StarportAddOns,BuildTechLabStarport,BuildReactorStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportAddon, -StarportLand,LandStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StarportLiftOff,LiftStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportLand,StarportLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportLiftOff,StarportLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StarportReactorMorph,StarportReactorMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StarportTechLabMorph,StarportTechLabMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StarportTechLabResearch,ResearchCloakingField,,ResearchCaduceusReactor,ResearchCorvidReactor,,,ResearchSeekerMissile,ResearchDurableMaterials,,,,,,,,,,,,,,,,,,,,,,,CancelStarportTechLabResearch, -StarportTrain,TrainMedivac,TrainBanshee,TrainRaven,TrainBattlecruiser,TrainViking,,,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportTrain, -Stimpack,UseStimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StimpackMarauder,UseStimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StimpackMarauderRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StimpackRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StopRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDepotLower,LowerSupplyDepot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDepotRaise,RaiseSupplyDepot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDrop,ExtraSupplies,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportTechLabResearch,ResearchBansheeCloak,,ResearchCaduceusReactor,ResearchRavenCorvidReactor,,,ResearchSeekerMissile,ResearchDurableMaterials,,ResearchBansheeSpeed,,,,ResearchRavenRecalibratedExplosives,ResearchMedivacIncreaseSpeedBoost,ResearchLiberatorAGRangeUpgrade,,,,,,,,,,,,,,,CancelStarportTechLabResearch, +StarportTrain,TrainMedivac,TrainBanshee,TrainRaven,TrainBattlecruiser,TrainVikingFighter,,TrainLiberator,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportTrain, +Stimpack,Stimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StimpackMarauder,StimpackMarauder,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StimpackMarauderRedirect,StimpackMarauderRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StimpackRedirect,StimpackRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StopRedirect,StopRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDepotLower,SupplyDepotLower,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDepotRaise,SupplyDepotRaise,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDrop,SupplyDrop,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SwarmHostSpawnLocusts,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TacNukeStrike,TacticalNukeStrike,CancelTacticalNukeStrike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TacNukeStrike,TacNukeStrike,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Taunt,Taunt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TechLabMorph,TechLabMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TemplarArchivesResearch,ResearchKhaydarinAmulet,,,,ResearchPsiStorm,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTemplarArchivesResearch, @@ -322,42 +322,42 @@ TerranBuild,BuildCommandCenter,BuildSupplyDepot,BuildRefinery,BuildBarracks,Buil TerranBuildingLand,LandTerranBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TerranBuildingLiftOff,LiftTerranBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TestZerg,TestZerg,CancelTestZerg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TimeWarp,ChronoBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TornadoMissile,HaywireMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TimeWarp,TimeWarp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TornadoMissile,TornadoMissile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TowerCapture,TowerCapture,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TrainQueen,TrainQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainQueen, -Transfusion,QueenTransfusion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Transfusion,Transfusion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TransportMode,TransportMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TwilightCouncilResearch,ResearchCharge,ResearchBlink,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTwilightCouncilResearch, -UltraliskCavernResearch,,,EvolveChitinousPlating,EvolveBurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUltraliskCavernResearch, +TwilightCouncilResearch,ResearchCharge,ResearchBlinkTech,ResearchAdeptPiercingAttack,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTwilightCouncilResearch, +UltraliskCavernResearch,,,ResearchChitinousPlating,EvolveBurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUltraliskCavernResearch, UltraliskWeaponCooldown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Unsiege,TankMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToGreaterSpire,MorphToGreaterSpire,CancelMorphToGreaterSpire,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToHive,UpgradeToHive,CancelUpgradeToHive,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToLair,UpgradeToLair,CancelUpgradeToLair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToOrbital,UpgradeToOrbitalCommand,CancelUpgradeToOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToPlanetaryFortress,UpgradeToPlanetaryFortress,CancelUpgradeToPlanetaryFortress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToWarpGate,TransformToWarpGate,CancelTransformToWarpGate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ViperConsumeStructure,Consume,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -VolatileBurstBuilding,DisableVolatileBurst,EnableVolatileBurst,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Unsiege,Unsiege,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToGreaterSpire,UpgradeToGreaterSpire,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToHive,UpgradeToHive,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToLair,UpgradeToLair,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToOrbital,UpgradeToOrbital,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToPlanetaryFortress,UpgradeToPlanetaryFortress,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToWarpGate,UpgradeToWarpGate,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ViperConsumeStructure,ViperConsumeStructure,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +VolatileBurstBuilding,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Vortex,Vortex,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WarpGateTrain,WarpInZealot,WarpInStalker,,WarpInHighTemplar,WarpInDarkTemplar,WarpInSentry,,,,,,,,,,,,,,,,,,,,,,,,,CancelWarpIn, -WarpPrismTransport,LoadTarget,UnloadAllWarpPrism,UnloadTargetWarpPrism,UnloadUnitWarpPrism,LoadAllWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,, +WarpGateTrain,TrainZealot,TrainStalker,,TrainHighTemplar,TrainDarkTemplar,TrainSentry,TrainAdept,,,,,,,,,,,,,,,,,,,,,,,,CancelWarpIn, +WarpPrismTransport,Load,UnloadAllWarpPrism,UnloadAt,UnloadUnitWarpPrism,LoadAllWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,, Warpable,CancelWarpIn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineAttack,AttackWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineBurrow,BurrowWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineUnburrow,UnburrowWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineAttack,WidowMineAttack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineBurrow,WidowMineBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineUnburrow,WidowMineUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, WormholeTransit,WormholeTransit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, XelNagaHealingShrine,XelNagaHealingShrine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Yamato,YamatoGun,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Yoink,Abduct,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Yamato,Yamato,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Yoink,Yoink,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ZergBuild,BuildHatchery,CreepTumor,BuildExtractor,BuildSpawningPool,BuildEvolutionChamber,BuildHydraliskDen,BuildSpire,BuildUltraliskCavern,BuildInfestationPit,BuildNydusNetwork,BuildBanelingNest,,,BuildRoachWarren,BuildSpineCrawler,BuildSporeCrawler,,,,,Digester,,,,,,,,,,CancelZergBuild, -attack,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -attackProtossBuilding,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +attack,attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +attackProtossBuilding,attackProtossBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, burrowedBanelingStop,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, burrowedStop,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, evolutionchamberresearch,EvolveMeleeAttacks1,EvolveMeleeAttacks2,EvolveMeleeAttacks3,EvolveGroundCarapace1,EvolveGroundCarapace2,EvolveGroundCarapace3,EvolveMissileAttacks1,EvolveMissileAttacks2,EvolveMissileAttacks3,,,,,,,,,,,,,,,,,,,,,,CancelEvolutionChamberResearch, -move,Move,Patrol,HoldPosition,ScanMove,Turn,,,,,,,,,,,,,,,,,,,,,,,,,,, +move,Move,Patrol,HoldPos,AcquireMove,Turn,,,,,,,,,,,,,,,,,,,,,,,,,,, que1,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, que5,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, que5Addon,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -378,9 +378,9 @@ ViperConsume,ViperConsume,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ViperConsumeMinerals,ViperConsumeMinerals,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LurkerAspectMPFromHydraliskBurrowed,LurkerAspectMPFromHydraliskBurrowed,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LurkerAspectMP,LurkerAspect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowLurkerMPDown,BurrowLurker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowLurkerMPUp,UnburrowLurker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToLurkerDenMP,UpgradeToLurkerDenMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowLurkerMPDown,BurrowLurkerMPDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowLurkerMPUp,BurrowLurkerMPUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToLurkerDenMP,UpgradeToLurkerDenMP,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebrisRampRight,MorphToCollapsibleRockTowerDebrisRampRight,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebrisRampLeft,MorphToCollapsibleRockTowerDebrisRampLeft,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, VoidSiphon,VoidSiphon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -392,10 +392,10 @@ ArmorpiercingMissiles,ArmorpiercingMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ExplosiveMissiles,ExplosiveMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LightofAiur,Envision,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipMassRecall,MothershipMassRecall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OracleWeapon,OracleWeapon,OracleWeaponOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OracleWeapon,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PulsarBeam,PulsarBeam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PulsarCannon,PulsarCannon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -VoidRaySwarmDamageBoost,PrismaticAlignment,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +VoidRaySwarmDamageBoost,VoidRaySwarmDamageBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SeekerDummyChannel,SeekerDummyChannel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, XelNaga_Caverns_DoorDefaultOpen,XelNaga_Caverns_DoorDefaultOpen XelNaga_Caverns_DoorDefaultClose,XelNaga_Caverns_DoorDefaultClose @@ -442,8 +442,8 @@ XelNaga_Caverns_Floating_BridgeV12,XelNaga_Caverns_Floating_BridgeV12 CausticSpray,CausticSpray OracleCloakingFieldTargeted,OracleCloakingFieldTargeted ImmortalOverload,ImmortalOverload -MorphToRavager,MorphToRavager -MorphToLurker,MorphToLurker +MorphToRavager,MorphToRavager,Cancel +MorphToLurker,MorphToLurker,Cancel OraclePhaseShift,OraclePhaseShift ReleaseInterceptors,ReleaseInterceptors RavagerCorrosiveBile,RavagerCorrosiveBile @@ -457,8 +457,8 @@ CorruptionBomb,CorruptionBomb Hyperjump,Hyperjump Overcharge,Overcharge ThorAPMode,ThorAPMode -ThorNormalMode,ThorNormalMode -NydusWormTransport,NydusWormTransport +ThorNormalMode,ThorNormalMode,Cancel +NydusWormTransport,Load,UnloadAll VoidSwarmHostSpawnLocust,VoidSwarmHostSpawnLocust LocustMPFlyingMorphToGround,LocustMPFlyingMorphToGround LocustMPMorphToAir,LocustMPMorphToAir @@ -482,8 +482,8 @@ VoidMPImmortalReviveDeath,VoidMPImmortalReviveDeath ArbiterMPStasisField,ArbiterMPStasisField ArbiterMPRecall,ArbiterMPRecall CorsairMPDisruptionWeb,CorsairMPDisruptionWeb -MorphToGuardianMP,MorphToGuardianMP -MorphToDevourerMP,MorphToDevourerMP +MorphToGuardianMP,MorphToGuardianMP,Cancel +MorphToDevourerMP,MorphToDevourerMP,Cancel DefilerMPConsume,DefilerMPConsume DefilerMPDarkSwarm,DefilerMPDarkSwarm DefilerMPPlague,DefilerMPPlague @@ -515,7 +515,7 @@ AdeptShadePhaseShiftCancel,AdeptShadePhaseShiftCancel LaunchInterceptors,LaunchInterceptors SpawnLocustsTargeted,SpawnLocustsTargeted LocustMPFlyingSwoopAttack,LocustMPFlyingSwoopAttack -MorphToTransportOverlord,MorphToTransportOverlord +MorphToTransportOverlord,MorphToTransportOverlord,Cancel BypassArmor,BypassArmor BypassArmorDroneCU,BypassArmorDroneCU ChannelSnipe,ChannelSnipe @@ -803,12 +803,6 @@ SwarmHostMP,SwarmHostMP Ultralisk,Ultralisk Viper,Viper Zergling,Zergling -Adept,Adept -DarkTemplar,DarkTemplar -HighTemplar,HighTemplar -Sentry,Sentry -Stalker,Stalker -Zealot,Zealot InfestorEnergyUpgrade,InfestorEnergyUpgrade CentrificalHooks,CentrificalHooks BattlecruiserEnableSpecializations,BattlecruiserEnableSpecializations @@ -828,3 +822,28 @@ NydusCanal,NydusCanal MothershipCore,MothershipCore DarkTemplarBlink,DarkTemplarBlink DarkTemplarBlinkUpgrade,DarkTemplarBlinkUpgrade +BarracksFlyingBuild,BuildBarracksTechLab,BuildBarracksReactor +VoidRaySwarmDamageBoostCancel,VoidRaySwarmDamageBoostCancel +OrbitalCommandTrain,TrainSCV +TemplarArchiveResearch,,,,,ResearchPsiStormTech +ZerglingTrain,TrainBaneling +FactoryFlyingBuild,BuildFactoryTechLab,BuildFactoryReactor +OracleBuild,BuildOracleStasisTrap +HiveResearch,,Researchoverlordspeed,,ResearchBurrow +CreepTumorBurrowedBuild,BuildCreepTumor +HatcheryTrain,TrainQueen +PlanetaryFortressTrain,TrainSCV +BarracksBuild,BuildBarracksTechLab,BuildBarracksReactor +DarkShrineResearch,ResearchDarkTemplarBlinkUpgrade +GreaterSpireResearch,ResearchZergFlyerWeaponsLevel1,ResearchZergFlyerWeaponsLevel2,ResearchZergFlyerWeaponsLevel3,ResearchZergFlyerArmorsLevel1,ResearchZergFlyerArmorsLevel2,ResearchZergFlyerArmorsLevel3 +EvolutionChamberResearch,ResearchZergMeleeWeaponsLevel1,ResearchZergMeleeWeaponsLevel2,ResearchZergMeleeWeaponsLevel3,ResearchZergGroundArmorsLevel1,ResearchZergGroundArmorsLevel2,ResearchZergGroundArmorsLevel3,ResearchZergMissileWeaponsLevel1,ResearchZergMissileWeaponsLevel2,ResearchZergMissileWeaponsLevel3 +HiveTrain,TrainQueen +LurkerDenMPResearch,,ResearchEvolveMuscularAugments +CarrierTrain,TrainInterceptor +GhostAcademyTrain,TrainNuke +StarportFlyingBuild,BuildStarportTechLab,BuildStarportReactor +StarportBuild,BuildStarportTechLab,BuildStarportReactor +FactoryBuild,BuildFactoryTechLab,BuildFactoryReactor +NydusNetworkBuild,BuildNydusCanal +HatcheryResearch,,Researchoverlordspeed,,ResearchBurrow +LairTrain,TrainQueen diff --git a/sc2reader/data/unit_lookup.csv b/sc2reader/data/unit_lookup.csv index 48545355..974a32ad 100755 --- a/sc2reader/data/unit_lookup.csv +++ b/sc2reader/data/unit_lookup.csv @@ -920,3 +920,40 @@ CompoundMansion_DoorNW,CompoundMansion_DoorNW CompoundMansion_DoorNWLowered,CompoundMansion_DoorNWLowered BattleStationMineralField,BattleStationMineralField BattleStationMineralField750,BattleStationMineralField750 +ImmortalFenixACGluescreenDummy,ImmortalFenixACGluescreenDummy +XelNagaDestructibleBlocker8NE,XelNagaDestructibleBlocker8NE +SILiberatorACGluescreenDummy,SILiberatorACGluescreenDummy +XelNagaDestructibleBlocker6SW,XelNagaDestructibleBlocker6SW +XelNagaDestructibleBlocker8N,XelNagaDestructibleBlocker8N +StukovInfestedCivilianACGluescreenDummy,StukovInfestedCivilianACGluescreenDummy +ObserverFenixACGluescreenDummy,ObserverFenixACGluescreenDummy +XelNagaDestructibleBlocker6NW,XelNagaDestructibleBlocker6NW +XelNagaDestructibleBlocker8S,XelNagaDestructibleBlocker8S +StukovInfestedDiamondbackACGluescreenDummy,StukovInfestedDiamondbackACGluescreenDummy +SentryFenixACGluescreenDummy,SentryFenixACGluescreenDummy +XelNagaDestructibleBlocker8SE,XelNagaDestructibleBlocker8SE +XelNagaDestructibleBlocker6S,XelNagaDestructibleBlocker6S +XelNagaDestructibleBlocker8W,XelNagaDestructibleBlocker8W +StukovBroodQueenACGluescreenDummy,StukovBroodQueenACGluescreenDummy +XelNagaDestructibleBlocker6SE,XelNagaDestructibleBlocker6SE +SnowGlazeStarterMP,SnowGlazeStarterMP +XelNagaDestructibleBlocker6E,XelNagaDestructibleBlocker6E +StukovInfestedMarineACGluescreenDummy,StukovInfestedMarineACGluescreenDummy +XelNagaDestructibleBlocker6NE,XelNagaDestructibleBlocker6NE +StukovInfestedSiegeTankACGluescreenDummy,StukovInfestedSiegeTankACGluescreenDummy +ZealotFenixACGluescreenDummy,ZealotFenixACGluescreenDummy +DisruptorACGluescreenDummy,DisruptorACGluescreenDummy +XelNagaDestructibleBlocker8SW,XelNagaDestructibleBlocker8SW +ScoutACGluescreenDummy,ScoutACGluescreenDummy +XelNagaDestructibleBlocker8E,XelNagaDestructibleBlocker8E +XelNagaDestructibleBlocker6N,XelNagaDestructibleBlocker6N +AdeptFenixACGluescreenDummy,AdeptFenixACGluescreenDummy +StukovInfestedTrooperACGluescreenDummy,StukovInfestedTrooperACGluescreenDummy +CarrierFenixACGluescreenDummy,CarrierFenixACGluescreenDummy +ColossusFenixACGluescreenDummy,ColossusFenixACGluescreenDummy +StukovInfestedMissileTurretACGluescreenDummy,StukovInfestedMissileTurretACGluescreenDummy +XelNagaDestructibleBlocker8NW,XelNagaDestructibleBlocker8NW +PhotonCannonFenixACGluescreenDummy,PhotonCannonFenixACGluescreenDummy +StukovInfestedBunkerACGluescreenDummy,StukovInfestedBunkerACGluescreenDummy +StukovInfestedBansheeACGluescreenDummy,StukovInfestedBansheeACGluescreenDummy +XelNagaDestructibleBlocker6W,XelNagaDestructibleBlocker6W diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 3916109a..a44f7bfc 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -605,6 +605,7 @@ def register_default_datapacks(self): self.register_datapack(datapacks['LotV']['44401'], lambda r: r.expansion == 'LotV' and 44401 <= r.build) self.register_datapack(datapacks['LotV']['47185'], lambda r: r.expansion == 'LotV' and 47185 <= r.build) self.register_datapack(datapacks['LotV']['48258'], lambda r: r.expansion == 'LotV' and 48258 <= r.build) + self.register_datapack(datapacks['LotV']['53644'], lambda r: r.expansion == 'LotV' and 53644 <= r.build) # Internal Methods From 73cb79c6c2a4e9d9ae22f281f886450558eb17c6 Mon Sep 17 00:00:00 2001 From: Cameron Copland Date: Tue, 13 Jun 2017 12:21:18 -0400 Subject: [PATCH 093/116] Updated two files so that update target point event is actually read - and it operates similar to the UpdateTargetUnitEvent handler. --- sc2reader/events/game.py | 10 ++++++++++ sc2reader/readers.py | 19 +++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 0f0e2220..bac26d94 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -329,6 +329,16 @@ def __init__(self, frame, pid, data): #: The location of the target. Available for TargetPoint and TargetUnit type events self.location = (self.x, self.y, self.z) +class UpdateTargetPointCommandEvent(TargetPointCommandEvent): + """ + Extends :class: 'TargetPointCommandEvent' + + This event is generated when the user changes the point of a unit. Appears to happen + when a unit is moving and it is given a new command. It's possible there are other + instances of this occurring. + + """ + name = 'UpdateTargetPointCommandEvent' class UpdateTargetUnitCommandEvent(TargetUnitCommandEvent): """ diff --git a/sc2reader/readers.py b/sc2reader/readers.py index cc2e3b2e..4df01681 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1525,7 +1525,7 @@ def __init__(self): 25: (None, self.command_manager_reset_event), # Re-using this old number 61: (None, self.trigger_hotkey_pressed_event), 103: (None, self.command_manager_state_event), - 104: (None, self.command_update_target_point_event), + 104: (UpdateTargetPointCommandEvent, self.command_update_target_point_event), 105: (UpdateTargetUnitCommandEvent, self.command_update_target_unit_event), 106: (None, self.trigger_anim_length_query_by_name_event), 107: (None, self.trigger_anim_length_query_by_props_event), @@ -1588,11 +1588,18 @@ def command_manager_state_event(self, data): def command_update_target_point_event(self, data): return dict( - target=dict( - x=data.read_bits(20), - y=data.read_bits(20), - z=data.read_uint32() - 2147483648, - ) + flags=0, # fill me with previous TargetPointEvent.flags + ability=None, # fill me with previous TargetPointEvent.ability + data=('TargetPoint', dict( + point=dict( + x=data.read_bits(20), + y=data.read_bits(20), + z=data.read_bits(32) - 2147483648, + ), + )), + sequence=0, # fill me with previous TargetPointEvent.flags + other_unit_tag=None, # fill me with previous TargetPointEvent.flags + unit_group=None, # fill me with previous TargetPointEvent.flags ) def command_update_target_unit_event(self, data): From 1db695b2979728a1f43ea848f8ab4b8901b6c1b1 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Thu, 15 Jun 2017 15:30:31 +0100 Subject: [PATCH 094/116] Preserve old command names in ability lookup --- sc2reader/data/ability_lookup.csv | 330 +++++++++++++++--------------- 1 file changed, 165 insertions(+), 165 deletions(-) diff --git a/sc2reader/data/ability_lookup.csv b/sc2reader/data/ability_lookup.csv index a3351e1f..882bf017 100755 --- a/sc2reader/data/ability_lookup.csv +++ b/sc2reader/data/ability_lookup.csv @@ -1,18 +1,18 @@ 250mmStrikeCannons,250mmStrikeCannons,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Cancel250mmStrikeCannons, -ArchonWarp,SelectedUnits,ArchonWarpTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ArchonWarp,ArchonWarpSelection,ArchonWarpTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ArmSiloWithNuke,BuildNuke,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelNuke, -ArmoryResearch,,,UpgradeVehiclePlating1,UpgradeVehiclePlating2,UpgradeVehiclePlating3,ResearchTerranVehicleWeaponsLevel1,ResearchTerranVehicleWeaponsLevel2,ResearchTerranVehicleWeaponsLevel3,UpgradeShipPlating1,UpgradeShipPlating2,UpgradeShipPlating3,ResearchTerranShipWeaponsLevel1,ResearchTerranShipWeaponsLevel2,ResearchTerranShipWeaponsLevel3,ResearchTerranVehicleAndShipArmorsLevel1,ResearchTerranVehicleAndShipArmorsLevel2,ResearchTerranVehicleAndShipArmorsLevel3,,,,,,,,,,,,,,CancelArmoryResearch, +ArmoryResearch,,,UpgradeVehiclePlating1,UpgradeVehiclePlating2,UpgradeVehiclePlating3,UpgradeVehicleWeapons1,UpgradeVehicleWeapons2,UpgradeVehicleWeapons3,UpgradeShipPlating1,UpgradeShipPlating2,UpgradeShipPlating3,UpgradeShipWeapons1,UpgradeShipWeapons2,UpgradeShipWeapons3,ResearchTerranVehicleAndShipArmorsLevel1,ResearchTerranVehicleAndShipArmorsLevel2,ResearchTerranVehicleAndShipArmorsLevel3,,,,,,,,,,,,,,CancelArmoryResearch, AssaultMode,AssaultMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -AttackRedirect,AttackRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +AttackRedirect,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AttackWarpPrism,AttackWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BanelingNestResearch,ResearchCentrificalHooks,EvolveTunnelingJaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBanelingNestResearch, -BansheeCloak,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BanelingNestResearch,EvolveCentrifugalHooks,EvolveTunnelingJaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBanelingNestResearch, +BansheeCloak,CloakBanshee,DecloakBanshee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksAddOns,TechLabBarracks,ReactorBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksAddon, -BarracksLand,BarracksLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BarracksLiftOff,BarracksLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BarracksLand,LandBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BarracksLiftOff,LiftBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksReactorMorph,BuildReactorBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BarracksTechLabMorph,BuildTechLabBarracks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BarracksTechLabResearch,ResearchStimpack,ResearchShieldWall,ResearchPunisherGrenades,ResearchCombatDrugs,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTechLabResearch, +BarracksTechLabResearch,ResearchStimpack,ResearchCombatShield,ResearchConcussiveShells,ResearchCombatDrugs,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTechLabResearch, BarracksTrain,TrainMarine,TrainReaper,TrainGhost,TrainMarauder,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelBarracksTrain, Beacon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Blink,Blink,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -21,35 +21,35 @@ BridgeRetract,BridgeRetract,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BroodLordHangar,BuildBroodling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BroodLordQueue2,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildAutoTurret,BuildAutoTurret,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BuildInProgress,Cancel,Halt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BuildInProgress,CancelBuilding,HaltBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildNydusCanal,BuildNydusWorm,SummonNydusDestroyer,SummonCreepTower,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelNydusNetworkBuild, BuildinProgressNydusCanal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildingShield,BuildingShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BuildingStasis,PhaseShift,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BunkerTransport,Load,UnloadAll,UnloadTargetBunker,UnloadUnitBunker,LoadAllBunker,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowBanelingDown,BurrowBanelingDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowBanelingUp,BurrowBanelingUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BunkerTransport,LoadTargetBunker,UnloadAllBunker,UnloadTargetBunker,UnloadUnitBunker,LoadAllBunker,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowBanelingDown,BurrowBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowBanelingUp,UnburrowBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeMP,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeRevD,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowChargeTrial,BurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowCreepTumorDown,BurrowCreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowDroneDown,BurrowDroneDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowDroneUp,BurrowDroneUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowHydraliskDown,BurrowHydraliskDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowHydraliskUp,BurrowHydraliskUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorDown,BurrowInfestorDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorTerranDown,BurrowInfestorTerranDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorTerranUp,BurrowInfestorTerranUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowInfestorUp,BurrowInfestorUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowDroneDown,BurrowDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowDroneUp,UnburrowDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowHydraliskDown,BurrowHydralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowHydraliskUp,UnburrowHydralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorDown,BurrowInfestor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorTerranDown,BurrowInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorTerranUp,UnburrowInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowInfestorUp,UnburrowInfestor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, BurrowProtector,BlindingCloud,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowQueenDown,BurrowQueenDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowQueenUp,BurrowQueenUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowRoachDown,BurrowRoachDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowRoachUp,BurrowRoachUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowUltraliskDown,BurrowUltraliskDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowUltraliskUp,BurrowUltraliskUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowZerglingDown,BurrowZerglingDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowZerglingUp,BurrowZerglingUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowQueenDown,BurrowQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowQueenUp,UnburrowQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowRoachDown,BurrowRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowRoachUp,UnburrowRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowUltraliskDown,BurrowUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowUltraliskUp,UnburrowUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowZerglingDown,BurrowZergling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowZerglingUp,UnburrowZergling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilArmMagazine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilAttack,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CAbilAugment,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -88,16 +88,16 @@ CalldownMULE,CalldownMULE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CarrierHangar,BuildInterceptor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Charge,Charge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Clone,Clone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CommandCenterLand,CommandCenterLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CommandCenterLiftOff,CommandCenterLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterLand,LandCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterLiftOff,LiftCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CommandCenterTrain,TrainSCV,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCommandCenterTrain, -CommandCenterTransport,Load,UnloadAll,UnloadTargetCommandCenter,UnloadUnitCommandCenter,LoadAll,,,,,,,,,,,,,,,,,,,,,,,,,,, +CommandCenterTransport,LoadTargetCommandCenter,UnloadAllCommandCenter,UnloadTargetCommandCenter,UnloadUnitCommandCenter,LoadAllCommandCenter,,,,,,,,,,,,,,,,,,,,,,,,,,, Contaminate,Contaminate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Corruption,Corruption,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCorruption, CreepTumorBuild,BuildCreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, CritterFlee,CritterFlee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -CyberneticsCoreResearch,ResearchProtossAirWeaponsLevel1,ResearchProtossAirWeaponsLevel2,ResearchProtossAirWeaponsLevel3,ResearchProtossAirArmorsLevel1,ResearchProtossAirArmorsLevel2,ResearchProtossAirArmorsLevel3,ResearchWarpGateResearch,,,ResearchHallucination,,,,,,,,,,,,,,,,,,,,,CancelCyberneticsCoreResearch, -DigesterCreepSpray,DigesterCreepSpray,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +CyberneticsCoreResearch,UpgradeAirWeapons1,UpgradeAirWeapons2,UpgradeAirWeapons3,UpgradeAirArmor1,UpgradeAirArmor2,UpgradeAirArmor3,ResearchWarpGate,,,ResearchHallucination,,,,,,,,,,,,,,,,,,,,,CancelCyberneticsCoreResearch, +DigesterCreepSpray,CreepSpray,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DigesterTransport,LoadTargetDigester,UnloadAllDigester,UnloadTargetDigester,UnloadUnitDigester,LoadAllDigester,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsMarineWithShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsMarineWithoutShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -105,9 +105,9 @@ DisguiseAsZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsZerglingWithWings,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseAsZerglingWithoutWings,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, DisguiseChangeling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -DroneHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -EMP,EMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -EngineeringBayResearch,ResearchHiSecAutoTracking,ResearchTerranBuildingArmor,ResearchTerranInfantryWeaponsLevel1,ResearchTerranInfantryWeaponsLevel2,ResearchTerranInfantryWeaponsLevel3,ResearchNeosteelFrame,ResearchTerranInfantryArmorsLevel1,ResearchTerranInfantryArmorsLevel2,ResearchTerranInfantryArmorsLevel3,,,,,,,,,,,,,,,,,,,,,,CancelEngineeringBayResearch, +DroneHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +EMP,EMPRound,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +EngineeringBayResearch,ResearchHiSecAutoTracking,UpgradeStructureArmor,UpgradeTerranInfantryWeapons1,UpgradeTerranInfantryWeapons2,UpgradeTerranInfantryWeapons3,ResearchNeosteelFrame,UpgradeTerranInfantryArmor1,UpgradeTerranInfantryArmor2,UpgradeTerranInfantryArmor3,,,,,,,,,,,,,,,,,,,,,,CancelEngineeringBayResearch, Explode,Explode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ExtendingBridgeNEWide10,ExtendingBridgeNEWide10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ExtendingBridgeNEWide10Out,ExtendingBridgeNEWide10Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -123,94 +123,94 @@ ExtendingBridgeNWWide8,ExtendingBridgeNWWide8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ExtendingBridgeNWWide8Out,ExtendingBridgeNWWide8Out,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, EyeStalk,EyeStalk,CancelEyeStalk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryAddOns,BuildTechLabFactory,BuildReactorFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryAddOn, -FactoryLand,FactoryLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FactoryLiftOff,FactoryLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +FactoryLand,LandFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +FactoryLiftOff,LiftFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryReactorMorph,BuildReactorFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FactoryTechLabMorph,BuildTechLabFactory,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FactoryTechLabResearch,ResearchSiegeTech,ResearchHighCapacityBarrels,Research250mmStrikeCannons,ResearchTransformationServos,ResearchDrillClaws,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryTechLabResearch, -FactoryTrain,,TrainSiegeTank,,,TrainThor,TrainHellion,TrainHellionTank,TrainCyclone,,,,,BuildWarHound,,,,,,,,,,,,TrainWidowMine,,,,,,CancelFactoryTrain, +FactoryTechLabResearch,ResearchSiegeTech,ResearchInfernalPreIgniter,Research250mmStrikeCannons,ResearchTransformationServos,ResearchDrillingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFactoryTechLabResearch, +FactoryTrain,,BuildSiegeTank,,,BuildThor,BuildHellion,BuildBattleHellion,TrainCyclone,,,,,BuildWarHound,,,,,,,,,,,,BuildWidowMine,,,,,,CancelFactoryTrain, Feedback,Feedback,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FighterMode,FighterMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FleetBeaconResearch,ResearchCarrierLaunchSpeedUpgrade,ResearchGravitonCatapult,ResearchPhoenixRangeUpgrade,,ResearchBosonicCore,ResearchGravitySling,,,,,,,,,,,,,,,,,,,,,,,,,CancelFleetBeaconResearch, +FleetBeaconResearch,ResearchFluxVanes,ResearchGravitonCatapult,ResearchAnionPulseCrystals,,ResearchBosonicCore,ResearchGravitySling,,,,,,,,,,,,,,,,,,,,,,,,,CancelFleetBeaconResearch, FlyerShield,FlyerShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ForceField,ForceField,CancelForceField,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ForgeResearch,ResearchProtossGroundWeaponsLevel1,ResearchProtossGroundWeaponsLevel2,ResearchProtossGroundWeaponsLevel3,ResearchProtossGroundArmorsLevel1,ResearchProtossGroundArmorsLevel2,ResearchProtossGroundArmorsLevel3,ResearchProtossShieldsLevel1,ResearchProtossShieldsLevel2,ResearchProtossShieldsLevel3,,,,,,,,,,,,,,,,,,,,,,CancelForgeResearch, +ForgeResearch,UpgradeGroundWeapons1,UpgradeGroundWeapons2,UpgradeGroundWeapons3,UpgradeGroundArmor1,UpgradeGroundArmor2,UpgradeGroundArmor3,UpgradeShields1,UpgradeShields2,UpgradesShields3,,,,,,,,,,,,,,,,,,,,,,CancelForgeResearch, Frenzy,Frenzy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FungalGrowth,FungalGrowth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -FusionCoreResearch,ResearchBattlecruiserEnableSpecializations,ResearchBehemothReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFusionCoreResearch, +FusionCoreResearch,ResearchWeaponRefit,ResearchBehemothReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelFusionCoreResearch, GatewayTrain,TrainZealot,TrainStalker,,TrainHighTemplar,TrainDarkTemplar,TrainSentry,TrainAdept,,,,,,,,,,,,,,,,,,,,,,,,CancelGatewayTrain, -GenerateCreep,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GenerateCreep,GenerateCreep,StopGenerateCreep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, GhostAcademyResearch,ResearchPersonalCloaking,ResearchMoebiusReactor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelGhostAcademyResearch, -GhostCloak,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GhostHoldFire,GhostHoldFire,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GhostWeaponsFree,GhostWeaponsFree,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -GravitonBeam,GravitonBeam,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostCloak,CloakGhost,DecloakGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostHoldFire,HoldFireGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GhostWeaponsFree,GWeaponsFreeGhost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +GravitonBeam,GravitonBeam,CancelGravitonBeam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, GuardianShield,GuardianShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationArchon,HallucinationArchon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationColossus,HallucinationColossus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationHighTemplar,HallucinationHighTemplar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationImmortal,HallucinationImmortal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationOracle,HallucinationOracle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationPhoenix,HallucinationPhoenix,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationProbe,HallucinationProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationStalker,HallucinationStalker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationVoidRay,HallucinationVoidRay,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationWarpPrism,HallucinationWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -HallucinationZealot,HallucinationZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationArchon,HallucinateArchon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationColossus,HallucinateColossus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationHighTemplar,HallucinateHighTemplar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationImmortal,HallucinateImmortal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationOracle,HallucinateOracle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationPhoenix,HallucinatePhoenix,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationProbe,HallucinateProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationStalker,HallucinateStalker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationVoidRay,HallucinateVoidRay,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationWarpPrism,HallucinateWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +HallucinationZealot,HallucinateZealot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HangarQueue5,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HerdInteract,Herd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HoldFire,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, HydraliskDenResearch,,ResearchEvolveMuscularAugments,EvolveGroovedSpines,EvolveMuscularAugments,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelHydraliskDenResearch, -InfestationPitResearch,,,ResearchInfestorEnergyUpgrade,ResearchNeuralParasite,EvolveEnduringLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,CancelInfestationPitResearch, -InfestedTerrans,InfestedTerrans,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +InfestationPitResearch,,,EvolvePathogenGlands,EvolveNeuralParasite,EvolveEnduringLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,CancelInfestationPitResearch, +InfestedTerrans,SpawnInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, InfestedTerransLayEgg,SpawnInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, InvulnerabilityShield,InvulnerabilityShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -LairResearch,,Researchoverlordspeed,EvolveVentralSacs,ResearchBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelLairResearch, -LarvaTrain,TrainDrone,TrainZergling,TrainOverlord,TrainHydralisk,TrainMutalisk,,TrainUltralisk,,,TrainRoach,TrainInfestor,TrainCorruptor,TrainViper,,TrainSwarmHostMP,,,,,,,,,,,,,,,,CancelLarvaTrain, +LairResearch,,EvolvePneumatizedCarapace,EvolveVentralSacs,EvolveBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelLairResearch, +LarvaTrain,MorphDrone,MorphZergling,MorphOverlord,MorphHydralisk,MorphMutalisk,,MorphUltralisk,,,MorphRoach,MorphInfestor,MorphCorruptor,MorphViper,,MorphSwarmHost,,,,,,,,,,,,,,,,CancelLarvaTrain, Leech,Leech,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LocustTrain,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MULEGather,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MULEGather,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MULERepair,MULERepair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MassRecall,MassRecallMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MassiveKnockover,MassiveKnockover,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MaxiumThrust,MaxiumThrust,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MedivacHeal,MedivacHeal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MedivacHeal,HealMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MedivacSpeedBoost,MedivacSpeedBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MedivacTransport,Load,UnloadAllMedivac,UnloadAt,UnloadUnitMedivac,LoadAllMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,, +MedivacTransport,LoadTargetMedivac,UnloadAllMedivac,UnloadTargetMedivac,UnloadUnitMedivac,LoadAllMedivac,,,,,,,,,,,,,,,,,,,,,,,,,,, MercCompoundResearch,,,,ResearchNitroPacks,,,,,,,,,,,,,,,,,,,,,,,,,,,, Mergeable,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MetalGateDefaultLower,MetalGateDefaultLower,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MetalGateDefaultRaise,MetalGateDefaultRaise,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphBackToGateway,MorphBackToGateway,CancelTransformToGateway,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToBroodLord,MorphToBroodLord,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphBackToGateway,TransformToGateway,CancelTransformToGateway,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToBroodLord,MorphToBroodLord,CancelMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebris,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToHellion,MorphToHellion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToHellionTank,MorphToHellionTank,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToHellion,StrikeMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToHellionTank,BattleMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToInfestedTerran,MorphToInfestedTerran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToMothership,MorphToMothership,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToOverseer,MorphToOverseer,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToSwarmHostBurrowedMP,MorphToSwarmHostBurrowedMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MorphToSwarmHostMP,MorphToSwarmHostMP,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToMothership,UpgradeToMothership,CancelUpgradeToMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToOverseer,MorphToOverseer,CancelMorphToOverseer,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToSwarmHostBurrowedMP,BurrowSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MorphToSwarmHostMP,UnburrowSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphZerglingToBaneling,MorphToBaneling,CancelMorphToBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreEnergize,Energize,CancelEnergize,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -MothershipCoreMassRecall,MothershipCoreMassRecall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +MothershipCoreMassRecall,MassRecallMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreTeleport,Teleport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipCoreWeapon,Purify,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipStasis,Stasis,CancelStasis,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -NeuralParasite,NeuralParasite,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +NeuralParasite,InfestorNeuralParasite,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusInvulnerability,InvulnerabilityNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusPhaseShift,PhaseShiftNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, NexusTrain,TrainProbe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainProbe, NexusTrainMothership,TrainMothership,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothership, -NexusTrainMothershipCore,NexusTrainMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothershipCore, -NydusCanalTransport,Load,UnloadAll,UnloadTargetNydus,UnloadUnitNydus,LoadAllNydus,,,,,,,,,,,,,,,,,,,,,,,,,,, +NexusTrainMothershipCore,TrainMothershipCore,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainMothershipCore, +NydusCanalTransport,LoadTargetNydus,UnloadAllNydus,UnloadTargetNydus,UnloadUnitNydus,LoadAllNydus,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleCloakField,CloakField,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleNormalMode,FlightMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OracleRevelation,OracleRevelation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OracleRevelation,Revelation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, OracleRevelationMode,RevelationMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OrbitalCommandLand,OrbitalCommandLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OrbitalLiftOff,OrbitalLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OverlordTransport,Load,UnloadAllOverlord,UnloadAt,UnloadUnitOverlord,LoadAllOverlord,,,,,,,,,,,,,,,,,,,,,,,,,,, +OrbitalCommandLand,LandOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OrbitalLiftOff,LiftOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OverlordTransport,LoadTargetOverlord,UnloadAllOverlord,UnloadTargetOverlord,UnloadUnitOverlord,LoadAllOverlord,,,,,,,,,,,,,,,,,,,,,,,,,,, PhaseShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PhaseShift,PhaseShiftNexus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PhasingMode,PhasingMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -219,27 +219,27 @@ PickupPalletMinerals,PickupPalletMinerals,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapLarge,PickupScrapLarge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapMedium,PickupScrapMedium,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PickupScrapSmall,PickupScrapSmall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -PlacePointDefenseDrone,PlacePointDefenseDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ProbeHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ProgressRally,Rally1,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +PlacePointDefenseDrone,BuildPointDefenseDrone,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ProbeHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ProgressRally,SetRallyPoint,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ProtossBuild,BuildNexus,BuildPylon,BuildAssimilator,BuildGateway,BuildForge,BuildFleetBeacon,BuildTwilightCouncil,BuildPhotonCannon,,BuildStargate,BuildTemplarArchive,BuildDarkShrine,BuildRoboticsBay,BuildRoboticsFacility,BuildCyberneticsCore,,,,,,,,,,,,,,,,CancelProtossBuild, ProtossBuildingQueue,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -PsiStorm,PsiStorm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -QueenBuild,BuildCreepTumorQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, +PsiStorm,PsionicStorm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +QueenBuild,CreepTumor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelCreepTumor, QueenFly,QueenFly,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, QueenLand,QueenLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Rally,Rally1,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyCommand,Rally1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyHatchery,Rally1,Rally2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RallyNexus,Rally1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Rally,SetRallyPoint,SetRallyPointExtra1,SetRallyPointExtra2,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyCommand,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyHatchery,SetUnitRally,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RallyNexus,SetWorkerRally,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RavenBuild,BuildAutoTurret,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRavenBuild, ReactorMorph,ReactorMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterBurrow,RedstoneLavaCritterBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterInjuredBurrow,RedstoneLavaCritterInjuredBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterInjuredUnburrow,RedstoneLavaCritterInjuredUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RedstoneLavaCritterUnburrow,RedstoneLavaCritterUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterBurrow,BurrowRedstoneLavaCritter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterInjuredBurrow,BurrowRedstoneLavaCritterInjured,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterInjuredUnburrow,UnburrowRedstoneLavaCritterInjured,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +RedstoneLavaCritterUnburrow,UnburrowRedstoneLavaCritter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Refund,Salvage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Repair,Repair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Repair,SCVRepair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ResourceBlocker,MineralShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ResourceStun,Entomb,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RestoreShields,RestoreShields,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -247,10 +247,10 @@ ReviveSelf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfAtTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfOnCreep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ReviveSelfReplaceTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -RoachWarrenResearch,,ResearchGlialReconstitution,ResearchTunnelingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoachWarrenResearch, -RoboticsBayResearch,,ResearchObserverGraviticBooster,ResearchGraviticDrive,,,ResearchExtendedThermalLance,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoboticsBayResearch, +RoachWarrenResearch,,EvolveGlialReconstitution,EvolveTunnelingClaws,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoachWarrenResearch, +RoboticsBayResearch,,ResearchGraviticBoosters,ResearchGraviticDrive,,,ResearchExtendedThermalLance,,,,,,,,,,,,,,,,,,,,,,,,,CancelRoboticsBayResearch, RoboticsFacilityTrain,TrainWarpPrism,TrainObserver,TrainColossus,TrainImmortal,,,,,,,,,,,,,,,TrainDisruptor,,,,,,,,,,,,CancelRoboticsFacilityTrain, -SCVHarvest,Gather,Return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SCVHarvest,Gather,ReturnCargo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Sacrifice,Sacrifice,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Salvage,Salvage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageBaneling,SalvageBaneling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -267,7 +267,7 @@ SalvageQueen,SalvageQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageQueenRefund,SalvageQueenRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageRoach,SalvageRoach,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageRoachRefund,SalvageRoachRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SalvageShared,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SalvageShared,SalvageShared,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageSwarmHost,SalvageSwarmHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageSwarmHostRefund,SalvageSwarmHostRefund,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SalvageUltralisk,SalvageUltralisk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -288,31 +288,31 @@ SpawnChangeling,SpawnChangeling,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnChangelingTarget,SpawnChangelingTarget,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnInfestedTerran,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SpawnLarva,SpawnLarva,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpawningPoolResearch,Researchzerglingattackspeed,Researchzerglingmovementspeed,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpawningPoolResearch, +SpawningPoolResearch,EvolveAdrenalGlands,EvolveMetabolicBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpawningPoolResearch, SpectreShield,SpectreShield,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpineCrawlerRoot,SpineCrawlerRoot,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpineCrawlerUproot,SpineCrawlerUproot,CancelUprootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SpireResearch,ResearchZergFlyerWeaponsLevel1,ResearchZergFlyerWeaponsLevel2,ResearchZergFlyerWeaponsLevel3,ResearchZergFlyerArmorsLevel1,ResearchZergFlyerArmorsLevel2,ResearchZergFlyerArmorsLevel3,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpireResearch, -SporeCrawlerRoot,SporeCrawlerRoot,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRootSporeCrawler, -SporeCrawlerUproot,SporeCrawlerUproot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUprootSporeCrawler, +SpineCrawlerRoot,RootSpineCrawler,CancelRootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SpineCrawlerUproot,UprootSpineCrawler,CancelUprootSpineCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SpireResearch,EvolveFlyerAttacks1,EvolveFlyerAttacks2,EvolveFlyerAttacks3,EvolveFlyerCarapace1,EvolveFlyerCarapace2,EvolveFlyerCarapace3,,,,,,,,,,,,,,,,,,,,,,,,,CancelSpireResearch, +SporeCrawlerRoot,RootSporeCrawler,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelRootSporeCrawler, +SporeCrawlerUproot,UprootSporeCrawler,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUprootSporeCrawler, StargateTrain,TrainPhoenix,TrainCarrier,TrainCarrier,,TrainVoidRay,,,,TrainOracle,TrainTempest,,,,,,,,,,,,,,,,,,,,,CancelStargateTrain, StarportAddOns,BuildTechLabStarport,BuildReactorStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportAddon, -StarportLand,StarportLand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StarportLiftOff,StarportLiftOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportLand,LandStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportLiftOff,LiftStarport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StarportReactorMorph,StarportReactorMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StarportTechLabMorph,StarportTechLabMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StarportTechLabResearch,ResearchBansheeCloak,,ResearchCaduceusReactor,ResearchRavenCorvidReactor,,,ResearchSeekerMissile,ResearchDurableMaterials,,ResearchBansheeSpeed,,,,ResearchRavenRecalibratedExplosives,ResearchMedivacIncreaseSpeedBoost,ResearchLiberatorAGRangeUpgrade,,,,,,,,,,,,,,,CancelStarportTechLabResearch, -StarportTrain,TrainMedivac,TrainBanshee,TrainRaven,TrainBattlecruiser,TrainVikingFighter,,TrainLiberator,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportTrain, -Stimpack,Stimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -StimpackMarauder,StimpackMarauder,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StarportTechLabResearch,ResearchCloakingField,,ResearchCaduceusReactor,ResearchCorvidReactor,,,ResearchSeekerMissile,ResearchDurableMaterials,,ResearchBansheeSpeed,,,,ResearchRavenRecalibratedExplosives,ResearchMedivacIncreaseSpeedBoost,ResearchLiberatorAGRangeUpgrade,,,,,,,,,,,,,,,CancelStarportTechLabResearch, +StarportTrain,TrainMedivac,TrainBanshee,TrainRaven,TrainBattlecruiser,TrainViking,,TrainLiberator,,,,,,,,,,,,,,,,,,,,,,,,CancelStarportTrain, +Stimpack,UseStimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +StimpackMarauder,UseStimpack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StimpackMarauderRedirect,StimpackMarauderRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StimpackRedirect,StimpackRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, StopRedirect,StopRedirect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDepotLower,SupplyDepotLower,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDepotRaise,SupplyDepotRaise,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -SupplyDrop,SupplyDrop,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDepotLower,LowerSupplyDepot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDepotRaise,RaiseSupplyDepot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +SupplyDrop,ExtraSupplies,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SwarmHostSpawnLocusts,SpawnLocusts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TacNukeStrike,TacNukeStrike,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TacNukeStrike,TacticalNukeStrike,CancelTacticalNukeStrike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Taunt,Taunt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TechLabMorph,TechLabMorph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TemplarArchivesResearch,ResearchKhaydarinAmulet,,,,ResearchPsiStorm,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTemplarArchivesResearch, @@ -322,42 +322,42 @@ TerranBuild,BuildCommandCenter,BuildSupplyDepot,BuildRefinery,BuildBarracks,Buil TerranBuildingLand,LandTerranBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TerranBuildingLiftOff,LiftTerranBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TestZerg,TestZerg,CancelTestZerg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TimeWarp,TimeWarp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TornadoMissile,TornadoMissile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TimeWarp,ChronoBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +TornadoMissile,HaywireMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TowerCapture,TowerCapture,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TrainQueen,TrainQueen,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTrainQueen, -Transfusion,Transfusion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Transfusion,QueenTransfusion,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, TransportMode,TransportMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -TwilightCouncilResearch,ResearchCharge,ResearchBlinkTech,ResearchAdeptPiercingAttack,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTwilightCouncilResearch, -UltraliskCavernResearch,,,ResearchChitinousPlating,EvolveBurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUltraliskCavernResearch, +TwilightCouncilResearch,ResearchCharge,ResearchBlink,ResearchAdeptPiercingAttack,,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelTwilightCouncilResearch, +UltraliskCavernResearch,,,EvolveChitinousPlating,EvolveBurrowCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,CancelUltraliskCavernResearch, UltraliskWeaponCooldown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Unsiege,Unsiege,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToGreaterSpire,UpgradeToGreaterSpire,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToHive,UpgradeToHive,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToLair,UpgradeToLair,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToOrbital,UpgradeToOrbital,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToPlanetaryFortress,UpgradeToPlanetaryFortress,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -UpgradeToWarpGate,UpgradeToWarpGate,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -ViperConsumeStructure,ViperConsumeStructure,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -VolatileBurstBuilding,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Unsiege,TankMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToGreaterSpire,MorphToGreaterSpire,CancelMorphToGreaterSpire,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToHive,UpgradeToHive,CancelUpgradeToHive,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToLair,UpgradeToLair,CancelUpgradeToLair,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToOrbital,UpgradeToOrbitalCommand,CancelUpgradeToOrbitalCommand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToPlanetaryFortress,UpgradeToPlanetaryFortress,CancelUpgradeToPlanetaryFortress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +UpgradeToWarpGate,TransformToWarpGate,CancelTransformToWarpGate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ViperConsumeStructure,Consume,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +VolatileBurstBuilding,DisableVolatileBurst,EnableVolatileBurst,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Vortex,Vortex,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WarpGateTrain,TrainZealot,TrainStalker,,TrainHighTemplar,TrainDarkTemplar,TrainSentry,TrainAdept,,,,,,,,,,,,,,,,,,,,,,,,CancelWarpIn, -WarpPrismTransport,Load,UnloadAllWarpPrism,UnloadAt,UnloadUnitWarpPrism,LoadAllWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,, +WarpGateTrain,WarpInZealot,WarpInStalker,,WarpInHighTemplar,WarpInDarkTemplar,WarpInSentry,TrainAdept,,,,,,,,,,,,,,,,,,,,,,,,CancelWarpIn, +WarpPrismTransport,LoadTarget,UnloadAllWarpPrism,UnloadTargetWarpPrism,UnloadUnitWarpPrism,LoadAllWarpPrism,,,,,,,,,,,,,,,,,,,,,,,,,,, Warpable,CancelWarpIn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineAttack,WidowMineAttack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineBurrow,WidowMineBurrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -WidowMineUnburrow,WidowMineUnburrow,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineAttack,AttackWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineBurrow,BurrowWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +WidowMineUnburrow,UnburrowWidowMine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, WormholeTransit,WormholeTransit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, XelNagaHealingShrine,XelNagaHealingShrine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Yamato,Yamato,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -Yoink,Yoink,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Yamato,YamatoGun,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Yoink,Abduct,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ZergBuild,BuildHatchery,CreepTumor,BuildExtractor,BuildSpawningPool,BuildEvolutionChamber,BuildHydraliskDen,BuildSpire,BuildUltraliskCavern,BuildInfestationPit,BuildNydusNetwork,BuildBanelingNest,,,BuildRoachWarren,BuildSpineCrawler,BuildSporeCrawler,,,,,Digester,,,,,,,,,,CancelZergBuild, -attack,attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -attackProtossBuilding,attackProtossBuilding,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +attack,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +attackProtossBuilding,Attack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, burrowedBanelingStop,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, burrowedStop,Stop,HoldFire,Cheer,Dance,,,,,,,,,,,,,,,,,,,,,,,,,,,, evolutionchamberresearch,EvolveMeleeAttacks1,EvolveMeleeAttacks2,EvolveMeleeAttacks3,EvolveGroundCarapace1,EvolveGroundCarapace2,EvolveGroundCarapace3,EvolveMissileAttacks1,EvolveMissileAttacks2,EvolveMissileAttacks3,,,,,,,,,,,,,,,,,,,,,,CancelEvolutionChamberResearch, -move,Move,Patrol,HoldPos,AcquireMove,Turn,,,,,,,,,,,,,,,,,,,,,,,,,,, +move,Move,Patrol,HoldPosition,ScanMove,Turn,,,,,,,,,,,,,,,,,,,,,,,,,,, que1,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, que5,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, que5Addon,CancelLast,CancelSlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -378,8 +378,8 @@ ViperConsume,ViperConsume,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ViperConsumeMinerals,ViperConsumeMinerals,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LurkerAspectMPFromHydraliskBurrowed,LurkerAspectMPFromHydraliskBurrowed,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LurkerAspectMP,LurkerAspect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowLurkerMPDown,BurrowLurkerMPDown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -BurrowLurkerMPUp,BurrowLurkerMPUp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowLurkerMPDown,BurrowLurker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +BurrowLurkerMPUp,UnburrowLurker,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, UpgradeToLurkerDenMP,UpgradeToLurkerDenMP,Cancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebrisRampRight,MorphToCollapsibleRockTowerDebrisRampRight,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MorphToCollapsibleRockTowerDebrisRampLeft,MorphToCollapsibleRockTowerDebrisRampLeft,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -392,10 +392,10 @@ ArmorpiercingMissiles,ArmorpiercingMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ExplosiveMissiles,ExplosiveMissiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LightofAiur,Envision,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MothershipMassRecall,MothershipMassRecall,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -OracleWeapon,On,Off,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +OracleWeapon,OracleWeapon,OracleWeaponOff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PulsarBeam,PulsarBeam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, PulsarCannon,PulsarCannon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -VoidRaySwarmDamageBoost,VoidRaySwarmDamageBoost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +VoidRaySwarmDamageBoost,PrismaticAlignment,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, SeekerDummyChannel,SeekerDummyChannel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, XelNaga_Caverns_DoorDefaultOpen,XelNaga_Caverns_DoorDefaultOpen XelNaga_Caverns_DoorDefaultClose,XelNaga_Caverns_DoorDefaultClose @@ -458,7 +458,7 @@ Hyperjump,Hyperjump Overcharge,Overcharge ThorAPMode,ThorAPMode ThorNormalMode,ThorNormalMode,Cancel -NydusWormTransport,Load,UnloadAll +NydusWormTransport,NydusWormTransport,UnloadAll VoidSwarmHostSpawnLocust,VoidSwarmHostSpawnLocust LocustMPFlyingMorphToGround,LocustMPFlyingMorphToGround LocustMPMorphToAir,LocustMPMorphToAir @@ -822,28 +822,28 @@ NydusCanal,NydusCanal MothershipCore,MothershipCore DarkTemplarBlink,DarkTemplarBlink DarkTemplarBlinkUpgrade,DarkTemplarBlinkUpgrade -BarracksFlyingBuild,BuildBarracksTechLab,BuildBarracksReactor -VoidRaySwarmDamageBoostCancel,VoidRaySwarmDamageBoostCancel +CarrierTrain,TrainInterceptor +PlanetaryFortressTrain,TrainSCV +LurkerDenMPResearch,,ResearchEvolveMuscularAugments +FactoryBuild,BuildFactoryTechLab,BuildFactoryReactor +LairTrain,TrainQueen +HiveTrain,TrainQueen OrbitalCommandTrain,TrainSCV -TemplarArchiveResearch,,,,,ResearchPsiStormTech -ZerglingTrain,TrainBaneling -FactoryFlyingBuild,BuildFactoryTechLab,BuildFactoryReactor -OracleBuild,BuildOracleStasisTrap -HiveResearch,,Researchoverlordspeed,,ResearchBurrow -CreepTumorBurrowedBuild,BuildCreepTumor HatcheryTrain,TrainQueen -PlanetaryFortressTrain,TrainSCV +StarportBuild,BuildStarportTechLab,BuildStarportReactor BarracksBuild,BuildBarracksTechLab,BuildBarracksReactor -DarkShrineResearch,ResearchDarkTemplarBlinkUpgrade -GreaterSpireResearch,ResearchZergFlyerWeaponsLevel1,ResearchZergFlyerWeaponsLevel2,ResearchZergFlyerWeaponsLevel3,ResearchZergFlyerArmorsLevel1,ResearchZergFlyerArmorsLevel2,ResearchZergFlyerArmorsLevel3 -EvolutionChamberResearch,ResearchZergMeleeWeaponsLevel1,ResearchZergMeleeWeaponsLevel2,ResearchZergMeleeWeaponsLevel3,ResearchZergGroundArmorsLevel1,ResearchZergGroundArmorsLevel2,ResearchZergGroundArmorsLevel3,ResearchZergMissileWeaponsLevel1,ResearchZergMissileWeaponsLevel2,ResearchZergMissileWeaponsLevel3 -HiveTrain,TrainQueen -LurkerDenMPResearch,,ResearchEvolveMuscularAugments -CarrierTrain,TrainInterceptor -GhostAcademyTrain,TrainNuke +FactoryFlyingBuild,BuildFactoryTechLab,BuildFactoryReactor StarportFlyingBuild,BuildStarportTechLab,BuildStarportReactor -StarportBuild,BuildStarportTechLab,BuildStarportReactor -FactoryBuild,BuildFactoryTechLab,BuildFactoryReactor -NydusNetworkBuild,BuildNydusCanal +GhostAcademyTrain,TrainNuke +EvolutionChamberResearch,ResearchZergMeleeWeaponsLevel1,ResearchZergMeleeWeaponsLevel2,ResearchZergMeleeWeaponsLevel3,ResearchZergGroundArmorsLevel1,ResearchZergGroundArmorsLevel2,ResearchZergGroundArmorsLevel3,ResearchZergMissileWeaponsLevel1,ResearchZergMissileWeaponsLevel2,ResearchZergMissileWeaponsLevel3 +HiveResearch,,Researchoverlordspeed,,ResearchBurrow +OracleBuild,BuildOracleStasisTrap +GreaterSpireResearch,ResearchZergFlyerWeaponsLevel1,ResearchZergFlyerWeaponsLevel2,ResearchZergFlyerWeaponsLevel3,ResearchZergFlyerArmorsLevel1,ResearchZergFlyerArmorsLevel2,ResearchZergFlyerArmorsLevel3 +DarkShrineResearch,ResearchDarkTemplarBlinkUpgrade +CreepTumorBurrowedBuild,BuildCreepTumor +TemplarArchiveResearch,,,,,ResearchPsiStormTech +VoidRaySwarmDamageBoostCancel,VoidRaySwarmDamageBoostCancel +ZerglingTrain,TrainBaneling HatcheryResearch,,Researchoverlordspeed,,ResearchBurrow -LairTrain,TrainQueen +BarracksFlyingBuild,BuildBarracksTechLab,BuildBarracksReactor +NydusNetworkBuild,BuildNydusCanal From bfc62a91591c2b7c7c95696e13d8e0cb836d1cf6 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Thu, 15 Jun 2017 16:03:51 +0100 Subject: [PATCH 095/116] Update build data generation script so that it preserves existing command names --- generate_build_data.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generate_build_data.py b/generate_build_data.py index 02db9216..b56a72eb 100644 --- a/generate_build_data.py +++ b/generate_build_data.py @@ -172,8 +172,8 @@ def combine_lookups(old_unit_lookup, old_ability_lookup, new_unit_lookup, new_ab # unit names. unit_lookup.update(old_unit_lookup) - # When merging old and new ability lookups, prefer to overwrite old cell data with new cell data when merging rows - # in the case of a key clash, but preserve old cell data if cell is empty in new ability lookup table + # When merging old and new ability lookups, prefer to preserve old cell data over new cell data when merging rows + # in the case of a key clash, but use new cell data if old cell data is empty. for ability_name, commands in new_ability_lookup.items(): if ability_name not in ability_lookup: ability_lookup[ability_name] = commands @@ -183,7 +183,7 @@ def combine_lookups(old_unit_lookup, old_ability_lookup, new_unit_lookup, new_ab while len(ability_lookup[ability_name]) <= i: ability_lookup[ability_name].append("") - if command != "": + if ability_lookup[ability_name][i] == "": ability_lookup[ability_name][i] = command return unit_lookup, ability_lookup From 39e81bc494e4bfe1efc4f67d4d294f9536d24487 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 21 Jun 2017 18:33:03 -0400 Subject: [PATCH 096/116] broken test showing that 54518 replays cant be processed --- test_replays/3.14.0.54518/1.SC2Replay | Bin 0 -> 49433 bytes test_replays/3.14.0.54518/2.SC2Replay | Bin 0 -> 89588 bytes test_replays/3.14.0.54518/3.SC2Replay | Bin 0 -> 80785 bytes test_replays/test_all.py | 9 +++++++++ 4 files changed, 9 insertions(+) create mode 100644 test_replays/3.14.0.54518/1.SC2Replay create mode 100644 test_replays/3.14.0.54518/2.SC2Replay create mode 100644 test_replays/3.14.0.54518/3.SC2Replay diff --git a/test_replays/3.14.0.54518/1.SC2Replay b/test_replays/3.14.0.54518/1.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..b7ea0118d389b6cbe081c57a2eada852492d3686 GIT binary patch literal 49433 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 literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 4510fa48..b0e3f937 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -538,6 +538,15 @@ def test_312(self): replay =factory.load_replay(replayfilename,load_level=0) replay =factory.load_replay(replayfilename,load_level=1) + def test_54518(self): + for replayfilename in [ + "test_replays/3.14.0.54518/1.SC2Replay", + "test_replays/3.14.0.54518/2.SC2Replay", + "test_replays/3.14.0.54518/3.SC2Replay", + ]: + factory = sc2reader.factories.SC2Factory() + replay =factory.load_replay(replayfilename) + class TestGameEngine(unittest.TestCase): class TestEvent(object): From abe4797a306a797c93217fb17e0c0987a72031a6 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 21 Jun 2017 19:02:42 -0400 Subject: [PATCH 097/116] correctly process 54518 replays --- sc2reader/readers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index cc2e3b2e..91bd4344 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -35,6 +35,7 @@ def __call__(self, data, replay): skin=data.read_aligned_string(data.read_bits(9)) if replay.base_build >= 34784 else None, mount=data.read_aligned_string(data.read_bits(9)) if replay.base_build >= 34784 else None, toon_handle=data.read_aligned_string(data.read_bits(7)) if replay.base_build >= 34784 else None, + scaled_rating=data.read_uint32()-2147483648 if replay.base_build >= 54518 and data.read_bool() else None, ) for i in range(data.read_bits(5))], game_description=dict( @@ -89,6 +90,7 @@ def __call__(self, data, replay): is_blizzardMap=data.read_bool(), is_premade_ffa=data.read_bool(), is_coop_mode=data.read_bool() if replay.base_build >= 23925 else None, + is_realtime_mode=data.read_bool() if replay.base_build >= 54518 else None, ), lobby_state=dict( From 169751d77dd4f6dc0065582ab3140b2e3f6367d9 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 21 Jun 2017 19:02:54 -0400 Subject: [PATCH 098/116] better test-running instructions --- README.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 790eead9..ddf38006 100644 --- a/README.rst +++ b/README.rst @@ -268,9 +268,7 @@ To run the tests just use:: When repeatedly running tests it can be very helpful to make sure you've set a local cache directory to prevent long fetch times from battle.net:: - export SC2READER_CACHE_DIR=local_cache - # or - SC2READER_CACHE_DIR=local_cache python test_replays/test_all.py + SC2READER_CACHE_DIR=local_cache PYTHONPATH=. python -m unittest test_replays.test_all To run just one test: From 41790bca0e927d4734ae43599bc391a47b785119 Mon Sep 17 00:00:00 2001 From: Hugo Wainwright Date: Fri, 23 Jun 2017 15:15:03 +0100 Subject: [PATCH 099/116] support build 54724 units and abilities --- sc2reader/data/LotV/54724_abilities.csv | 399 ++++++++++ sc2reader/data/LotV/54724_units.csv | 935 ++++++++++++++++++++++++ sc2reader/data/__init__.py | 2 +- sc2reader/data/unit_lookup.csv | 1 + sc2reader/resources.py | 1 + 5 files changed, 1337 insertions(+), 1 deletion(-) create mode 100644 sc2reader/data/LotV/54724_abilities.csv create mode 100644 sc2reader/data/LotV/54724_units.csv diff --git a/sc2reader/data/LotV/54724_abilities.csv b/sc2reader/data/LotV/54724_abilities.csv new file mode 100644 index 00000000..112b8bd7 --- /dev/null +++ b/sc2reader/data/LotV/54724_abilities.csv @@ -0,0 +1,399 @@ +35,Taunt +36,stop +38,move +45,attack +60,SprayTerran +61,SprayZerg +62,SprayProtoss +63,SalvageShared +65,GhostHoldFire +66,GhostWeaponsFree +68,Explode +69,FleetBeaconResearch +70,FungalGrowth +71,GuardianShield +72,MULERepair +73,ZerglingTrain +75,Feedback +77,PlacePointDefenseDrone +78,HallucinationArchon +79,HallucinationColossus +80,HallucinationHighTemplar +81,HallucinationImmortal +82,HallucinationPhoenix +83,HallucinationProbe +84,HallucinationStalker +85,HallucinationVoidRay +86,HallucinationWarpPrism +87,HallucinationZealot +88,MULEGather +89,SeekerMissile +90,CalldownMULE +91,GravitonBeam +95,SpawnChangeling +102,Rally +103,ProgressRally +104,RallyCommand +105,RallyNexus +106,RallyHatchery +107,RoachWarrenResearch +109,InfestedTerrans +110,NeuralParasite +111,SpawnLarva +112,StimpackMarauder +113,SupplyDrop +116,TimeWarp +117,UltraliskCavernResearch +119,SCVHarvest +120,ProbeHarvest +122,que1 +123,que5 +124,que5CancelToSelection +126,que5Addon +127,BuildInProgress +128,Repair +129,TerranBuild +131,Stimpack +132,GhostCloak +134,MedivacHeal +135,SiegeMode +136,Unsiege +137,BansheeCloak +138,MedivacTransport +139,ScannerSweep +140,Yamato +141,AssaultMode +142,FighterMode +143,BunkerTransport +144,CommandCenterTransport +145,CommandCenterLiftOff +146,CommandCenterLand +147,BarracksFlyingBuild +148,BarracksLiftOff +149,FactoryFlyingBuild +150,FactoryLiftOff +151,StarportFlyingBuild +152,StarportLiftOff +153,FactoryLand +154,StarportLand +155,PlanetaryFortressTrain +156,BarracksLand +157,SupplyDepotLower +158,SupplyDepotRaise +159,BarracksTrain +160,FactoryTrain +161,StarportTrain +162,EngineeringBayResearch +164,GhostAcademyTrain +165,BarracksTechLabResearch +166,FactoryTechLabResearch +167,StarportTechLabResearch +168,GhostAcademyResearch +169,ArmoryResearch +170,ProtossBuild +171,WarpPrismTransport +172,GatewayTrain +173,StargateTrain +174,RoboticsFacilityTrain +175,NexusTrain +176,PsiStorm +177,HangarQueue5 +179,CarrierTrain +180,ForgeResearch +181,RoboticsBayResearch +182,TemplarArchiveResearch +183,ZergBuild +184,DroneHarvest +185,EvolutionChamberResearch +186,UpgradeToLair +187,UpgradeToHive +188,UpgradeToGreaterSpire +189,LairResearch +190,SpawningPoolResearch +191,LurkerDenMPResearch +192,SpireResearch +193,LarvaTrain +194,MorphToBroodLord +195,BurrowBanelingDown +196,BurrowBanelingUp +197,BurrowDroneDown +198,BurrowDroneUp +199,BurrowHydraliskDown +200,BurrowHydraliskUp +201,BurrowRoachDown +202,BurrowRoachUp +203,BurrowZerglingDown +204,BurrowZerglingUp +205,BurrowInfestorTerranDown +206,BurrowInfestorTerranUp +207,RedstoneLavaCritterBurrow +208,RedstoneLavaCritterInjuredBurrow +209,RedstoneLavaCritterUnburrow +210,RedstoneLavaCritterInjuredUnburrow +211,OverlordTransport +214,WarpGateTrain +215,BurrowQueenDown +216,BurrowQueenUp +217,NydusCanalTransport +218,Blink +219,BurrowInfestorDown +220,BurrowInfestorUp +221,MorphToOverseer +222,UpgradeToPlanetaryFortress +223,InfestationPitResearch +224,BanelingNestResearch +225,BurrowUltraliskDown +226,BurrowUltraliskUp +227,UpgradeToOrbital +228,UpgradeToWarpGate +229,MorphBackToGateway +230,OrbitalLiftOff +231,OrbitalCommandLand +232,ForceField +233,PhasingMode +234,TransportMode +235,FusionCoreResearch +236,CyberneticsCoreResearch +237,TwilightCouncilResearch +238,TacNukeStrike +241,EMP +243,LairTrain +245,Transfusion +254,AttackRedirect +255,StimpackRedirect +256,StimpackMarauderRedirect +258,StopRedirect +259,GenerateCreep +260,QueenBuild +261,SpineCrawlerUproot +262,SporeCrawlerUproot +263,SpineCrawlerRoot +264,SporeCrawlerRoot +265,CreepTumorBurrowedBuild +266,BuildAutoTurret +267,ArchonWarp +268,NydusNetworkBuild +270,Charge +274,Contaminate +277,que5Passive +278,que5PassiveCancelToSelection +306,DigesterCreepSpray +310,MorphToMothership +313,NexusTrainMothershipCore +335,XelNagaHealingShrine +344,MothershipCoreMassRecall +346,MorphToHellion +356,MorphToHellionTank +364,MorphToSwarmHostBurrowedMP +365,MorphToSwarmHostMP +367,attackProtossBuilding +369,stopProtossBuilding +370,BlindingCloud +372,Yoink +375,ViperConsumeStructure +378,TestZerg +379,VolatileBurstBuilding +386,WidowMineBurrow +387,WidowMineUnburrow +388,WidowMineAttack +389,TornadoMissile +393,BurrowLurkerMPDown +394,BurrowLurkerMPUp +395,UpgradeToLurkerDenMP +396,HallucinationOracle +397,MedivacSpeedBoost +398,ExtendingBridgeNEWide8Out +399,ExtendingBridgeNEWide8 +400,ExtendingBridgeNWWide8Out +401,ExtendingBridgeNWWide8 +402,ExtendingBridgeNEWide10Out +403,ExtendingBridgeNEWide10 +404,ExtendingBridgeNWWide10Out +405,ExtendingBridgeNWWide10 +406,ExtendingBridgeNEWide12Out +407,ExtendingBridgeNEWide12 +408,ExtendingBridgeNWWide12Out +409,ExtendingBridgeNWWide12 +411,CritterFlee +412,OracleRevelation +420,MothershipCorePurifyNexus +421,XelNaga_Caverns_DoorE +422,XelNaga_Caverns_DoorEOpened +423,XelNaga_Caverns_DoorN +424,XelNaga_Caverns_DoorNE +425,XelNaga_Caverns_DoorNEOpened +426,XelNaga_Caverns_DoorNOpened +427,XelNaga_Caverns_DoorNW +428,XelNaga_Caverns_DoorNWOpened +429,XelNaga_Caverns_DoorS +430,XelNaga_Caverns_DoorSE +431,XelNaga_Caverns_DoorSEOpened +432,XelNaga_Caverns_DoorSOpened +433,XelNaga_Caverns_DoorSW +434,XelNaga_Caverns_DoorSWOpened +435,XelNaga_Caverns_DoorW +436,XelNaga_Caverns_DoorWOpened +437,XelNaga_Caverns_Floating_BridgeNE8Out +438,XelNaga_Caverns_Floating_BridgeNE8 +439,XelNaga_Caverns_Floating_BridgeNW8Out +440,XelNaga_Caverns_Floating_BridgeNW8 +441,XelNaga_Caverns_Floating_BridgeNE10Out +442,XelNaga_Caverns_Floating_BridgeNE10 +443,XelNaga_Caverns_Floating_BridgeNW10Out +444,XelNaga_Caverns_Floating_BridgeNW10 +445,XelNaga_Caverns_Floating_BridgeNE12Out +446,XelNaga_Caverns_Floating_BridgeNE12 +447,XelNaga_Caverns_Floating_BridgeNW12Out +448,XelNaga_Caverns_Floating_BridgeNW12 +449,XelNaga_Caverns_Floating_BridgeH8Out +450,XelNaga_Caverns_Floating_BridgeH8 +451,XelNaga_Caverns_Floating_BridgeV8Out +452,XelNaga_Caverns_Floating_BridgeV8 +453,XelNaga_Caverns_Floating_BridgeH10Out +454,XelNaga_Caverns_Floating_BridgeH10 +455,XelNaga_Caverns_Floating_BridgeV10Out +456,XelNaga_Caverns_Floating_BridgeV10 +457,XelNaga_Caverns_Floating_BridgeH12Out +458,XelNaga_Caverns_Floating_BridgeH12 +459,XelNaga_Caverns_Floating_BridgeV12Out +460,XelNaga_Caverns_Floating_BridgeV12 +461,TemporalField +485,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +486,SnowRefinery_Terran_ExtendingBridgeNEShort8 +487,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +488,SnowRefinery_Terran_ExtendingBridgeNWShort8 +510,CausticSpray +513,MorphToRavager +514,MorphToLurker +517,RavagerCorrosiveBile +518,BurrowRavagerDown +519,BurrowRavagerUp +521,PurificationNovaTargeted +523,LockOn +525,LockOnCancel +527,Hyperjump +529,ThorAPMode +530,ThorNormalMode +532,MothershipMassRecall +533,NydusWormTransport +534,OracleWeapon +540,LocustMPFlyingSwoop +541,HallucinationDisruptor +542,HallucinationAdept +543,VoidRaySwarmDamageBoost +544,SeekerDummyChannel +545,AiurLightBridgeNE8Out +546,AiurLightBridgeNE8 +547,AiurLightBridgeNE10Out +548,AiurLightBridgeNE10 +549,AiurLightBridgeNE12Out +550,AiurLightBridgeNE12 +551,AiurLightBridgeNW8Out +552,AiurLightBridgeNW8 +553,AiurLightBridgeNW10Out +554,AiurLightBridgeNW10 +555,AiurLightBridgeNW12Out +556,AiurLightBridgeNW12 +569,ShakurasLightBridgeNE8Out +570,ShakurasLightBridgeNE8 +571,ShakurasLightBridgeNE10Out +572,ShakurasLightBridgeNE10 +573,ShakurasLightBridgeNE12Out +574,ShakurasLightBridgeNE12 +575,ShakurasLightBridgeNW8Out +576,ShakurasLightBridgeNW8 +577,ShakurasLightBridgeNW10Out +578,ShakurasLightBridgeNW10 +579,ShakurasLightBridgeNW12Out +580,ShakurasLightBridgeNW12 +581,VoidMPImmortalReviveRebuild +583,ArbiterMPStasisField +584,ArbiterMPRecall +585,CorsairMPDisruptionWeb +586,MorphToGuardianMP +587,MorphToDevourerMP +588,DefilerMPConsume +589,DefilerMPDarkSwarm +590,DefilerMPPlague +591,DefilerMPBurrow +592,DefilerMPUnburrow +593,QueenMPEnsnare +594,QueenMPSpawnBroodlings +595,QueenMPInfestCommandCenter +599,OracleBuild +603,ParasiticBomb +604,AdeptPhaseShift +607,LurkerHoldFire +608,LurkerRemoveHoldFire +611,LiberatorAGTarget +612,LiberatorAATarget +614,AiurLightBridgeAbandonedNE8Out +615,AiurLightBridgeAbandonedNE8 +616,AiurLightBridgeAbandonedNE10Out +617,AiurLightBridgeAbandonedNE10 +618,AiurLightBridgeAbandonedNE12Out +619,AiurLightBridgeAbandonedNE12 +620,AiurLightBridgeAbandonedNW8Out +621,AiurLightBridgeAbandonedNW8 +622,AiurLightBridgeAbandonedNW10Out +623,AiurLightBridgeAbandonedNW10 +624,AiurLightBridgeAbandonedNW12Out +625,AiurLightBridgeAbandonedNW12 +626,KD8Charge +629,AdeptPhaseShiftCancel +630,AdeptShadePhaseShiftCancel +631,SlaynElementalGrab +633,PortCity_Bridge_UnitNE8Out +634,PortCity_Bridge_UnitNE8 +635,PortCity_Bridge_UnitSE8Out +636,PortCity_Bridge_UnitSE8 +637,PortCity_Bridge_UnitNW8Out +638,PortCity_Bridge_UnitNW8 +639,PortCity_Bridge_UnitSW8Out +640,PortCity_Bridge_UnitSW8 +641,PortCity_Bridge_UnitNE10Out +642,PortCity_Bridge_UnitNE10 +643,PortCity_Bridge_UnitSE10Out +644,PortCity_Bridge_UnitSE10 +645,PortCity_Bridge_UnitNW10Out +646,PortCity_Bridge_UnitNW10 +647,PortCity_Bridge_UnitSW10Out +648,PortCity_Bridge_UnitSW10 +649,PortCity_Bridge_UnitNE12Out +650,PortCity_Bridge_UnitNE12 +651,PortCity_Bridge_UnitSE12Out +652,PortCity_Bridge_UnitSE12 +653,PortCity_Bridge_UnitNW12Out +654,PortCity_Bridge_UnitNW12 +655,PortCity_Bridge_UnitSW12Out +656,PortCity_Bridge_UnitSW12 +657,PortCity_Bridge_UnitN8Out +658,PortCity_Bridge_UnitN8 +659,PortCity_Bridge_UnitS8Out +660,PortCity_Bridge_UnitS8 +661,PortCity_Bridge_UnitE8Out +662,PortCity_Bridge_UnitE8 +663,PortCity_Bridge_UnitW8Out +664,PortCity_Bridge_UnitW8 +665,PortCity_Bridge_UnitN10Out +666,PortCity_Bridge_UnitN10 +667,PortCity_Bridge_UnitS10Out +668,PortCity_Bridge_UnitS10 +669,PortCity_Bridge_UnitE10Out +670,PortCity_Bridge_UnitE10 +671,PortCity_Bridge_UnitW10Out +672,PortCity_Bridge_UnitW10 +673,PortCity_Bridge_UnitN12Out +674,PortCity_Bridge_UnitN12 +675,PortCity_Bridge_UnitS12Out +676,PortCity_Bridge_UnitS12 +677,PortCity_Bridge_UnitE12Out +678,PortCity_Bridge_UnitE12 +679,PortCity_Bridge_UnitW12Out +680,PortCity_Bridge_UnitW12 +683,DarkTemplarBlink +687,SpawnLocustsTargeted +688,VoidRaySwarmDamageBoostCancel +690,MorphToTransportOverlord +693,ChannelSnipe +696,DarkShrineResearch diff --git a/sc2reader/data/LotV/54724_units.csv b/sc2reader/data/LotV/54724_units.csv new file mode 100644 index 00000000..cc769def --- /dev/null +++ b/sc2reader/data/LotV/54724_units.csv @@ -0,0 +1,935 @@ +1,System_Snapshot_Dummy +21,Ball +22,StereoscopicOptionsUnit +23,Colossus +24,TechLab +25,Reactor +27,InfestorTerran +28,BanelingCocoon +29,Baneling +30,Mothership +31,PointDefenseDrone +32,Changeling +33,ChangelingZealot +34,ChangelingMarineShield +35,ChangelingMarine +36,ChangelingZerglingWings +37,ChangelingZergling +39,CommandCenter +40,SupplyDepot +41,Refinery +42,Barracks +43,EngineeringBay +44,MissileTurret +45,Bunker +46,SensorTower +47,GhostAcademy +48,Factory +49,Starport +51,Armory +52,FusionCore +53,AutoTurret +54,SiegeTankSieged +55,SiegeTank +56,VikingAssault +57,VikingFighter +58,CommandCenterFlying +59,BarracksTechLab +60,BarracksReactor +61,FactoryTechLab +62,FactoryReactor +63,StarportTechLab +64,StarportReactor +65,FactoryFlying +66,StarportFlying +67,SCV +68,BarracksFlying +69,SupplyDepotLowered +70,Marine +71,Reaper +72,Ghost +73,Marauder +74,Thor +75,Hellion +76,Medivac +77,Banshee +78,Raven +79,Battlecruiser +80,Nuke +81,Nexus +82,Pylon +83,Assimilator +84,Gateway +85,Forge +86,FleetBeacon +87,TwilightCouncil +88,PhotonCannon +89,Stargate +90,TemplarArchive +91,DarkShrine +92,RoboticsBay +93,RoboticsFacility +94,CyberneticsCore +95,Zealot +96,Stalker +97,HighTemplar +98,DarkTemplar +99,Sentry +100,Phoenix +101,Carrier +102,VoidRay +103,WarpPrism +104,Observer +105,Immortal +106,Probe +107,Interceptor +108,Hatchery +109,CreepTumor +110,Extractor +111,SpawningPool +112,EvolutionChamber +113,HydraliskDen +114,Spire +115,UltraliskCavern +116,InfestationPit +117,NydusNetwork +118,BanelingNest +119,RoachWarren +120,SpineCrawler +121,SporeCrawler +122,Lair +123,Hive +124,GreaterSpire +125,Egg +126,Drone +127,Zergling +128,Overlord +129,Hydralisk +130,Mutalisk +131,Ultralisk +132,Roach +133,Infestor +134,Corruptor +135,BroodLordCocoon +136,BroodLord +137,BanelingBurrowed +138,DroneBurrowed +139,HydraliskBurrowed +140,RoachBurrowed +141,ZerglingBurrowed +142,InfestorTerranBurrowed +143,RedstoneLavaCritterBurrowed +144,RedstoneLavaCritterInjuredBurrowed +145,RedstoneLavaCritter +146,RedstoneLavaCritterInjured +147,QueenBurrowed +148,Queen +149,InfestorBurrowed +150,OverlordCocoon +151,Overseer +152,PlanetaryFortress +153,UltraliskBurrowed +154,OrbitalCommand +155,WarpGate +156,OrbitalCommandFlying +157,ForceField +158,WarpPrismPhasing +159,CreepTumorBurrowed +160,CreepTumorQueen +161,SpineCrawlerUprooted +162,SporeCrawlerUprooted +163,Archon +164,NydusCanal +165,BroodlingEscort +166,GhostAlternate +167,GhostNova +168,RichMineralField +169,RichMineralField750 +170,Ursadon +172,XelNagaTower +176,InfestedTerransEgg +177,Larva +178,ReaperPlaceholder +179,MarineACGluescreenDummy +180,FirebatACGluescreenDummy +181,MedicACGluescreenDummy +182,MarauderACGluescreenDummy +183,VultureACGluescreenDummy +184,SiegeTankACGluescreenDummy +185,VikingACGluescreenDummy +186,BansheeACGluescreenDummy +187,BattlecruiserACGluescreenDummy +188,OrbitalCommandACGluescreenDummy +189,BunkerACGluescreenDummy +190,BunkerUpgradedACGluescreenDummy +191,MissileTurretACGluescreenDummy +192,HellbatACGluescreenDummy +193,GoliathACGluescreenDummy +194,CycloneACGluescreenDummy +195,WraithACGluescreenDummy +196,ScienceVesselACGluescreenDummy +197,HerculesACGluescreenDummy +198,ThorACGluescreenDummy +199,PerditionTurretACGluescreenDummy +200,FlamingBettyACGluescreenDummy +201,DevastationTurretACGluescreenDummy +202,BlasterBillyACGluescreenDummy +203,SpinningDizzyACGluescreenDummy +204,ZerglingKerriganACGluescreenDummy +205,RaptorACGluescreenDummy +206,QueenCoopACGluescreenDummy +207,HydraliskACGluescreenDummy +208,HydraliskLurkerACGluescreenDummy +209,MutaliskBroodlordACGluescreenDummy +210,BroodLordACGluescreenDummy +211,UltraliskACGluescreenDummy +212,TorrasqueACGluescreenDummy +213,OverseerACGluescreenDummy +214,LurkerACGluescreenDummy +215,SpineCrawlerACGluescreenDummy +216,SporeCrawlerACGluescreenDummy +217,NydusNetworkACGluescreenDummy +218,OmegaNetworkACGluescreenDummy +219,ZerglingZagaraACGluescreenDummy +220,SwarmlingACGluescreenDummy +221,BanelingACGluescreenDummy +222,SplitterlingACGluescreenDummy +223,AberrationACGluescreenDummy +224,ScourgeACGluescreenDummy +225,CorruptorACGluescreenDummy +226,BileLauncherACGluescreenDummy +227,SwarmQueenACGluescreenDummy +228,RoachACGluescreenDummy +229,RoachVileACGluescreenDummy +230,RavagerACGluescreenDummy +231,SwarmHostACGluescreenDummy +232,MutaliskACGluescreenDummy +233,GuardianACGluescreenDummy +234,DevourerACGluescreenDummy +235,ViperACGluescreenDummy +236,BrutaliskACGluescreenDummy +237,LeviathanACGluescreenDummy +238,ZealotACGluescreenDummy +239,ZealotAiurACGluescreenDummy +240,DragoonACGluescreenDummy +241,HighTemplarACGluescreenDummy +242,ArchonACGluescreenDummy +243,ImmortalACGluescreenDummy +244,ObserverACGluescreenDummy +245,PhoenixAiurACGluescreenDummy +246,ReaverACGluescreenDummy +247,TempestACGluescreenDummy +248,PhotonCannonACGluescreenDummy +249,ZealotVorazunACGluescreenDummy +250,ZealotShakurasACGluescreenDummy +251,StalkerShakurasACGluescreenDummy +252,DarkTemplarShakurasACGluescreenDummy +253,CorsairACGluescreenDummy +254,VoidRayACGluescreenDummy +255,VoidRayShakurasACGluescreenDummy +256,OracleACGluescreenDummy +257,DarkArchonACGluescreenDummy +258,DarkPylonACGluescreenDummy +259,ZealotPurifierACGluescreenDummy +260,SentryPurifierACGluescreenDummy +261,ImmortalKaraxACGluescreenDummy +262,ColossusACGluescreenDummy +263,ColossusPurifierACGluescreenDummy +264,PhoenixPurifierACGluescreenDummy +265,CarrierACGluescreenDummy +266,CarrierAiurACGluescreenDummy +267,KhaydarinMonolithACGluescreenDummy +268,ShieldBatteryACGluescreenDummy +269,EliteMarineACGluescreenDummy +270,MarauderCommandoACGluescreenDummy +271,SpecOpsGhostACGluescreenDummy +272,HellbatRangerACGluescreenDummy +273,StrikeGoliathACGluescreenDummy +274,HeavySiegeTankACGluescreenDummy +275,RaidLiberatorACGluescreenDummy +276,RavenTypeIIACGluescreenDummy +277,CovertBansheeACGluescreenDummy +278,RailgunTurretACGluescreenDummy +279,BlackOpsMissileTurretACGluescreenDummy +280,SupplicantACGluescreenDummy +281,StalkerTaldarimACGluescreenDummy +282,SentryTaldarimACGluescreenDummy +283,HighTemplarTaldarimACGluescreenDummy +284,ImmortalTaldarimACGluescreenDummy +285,ColossusTaldarimACGluescreenDummy +286,WarpPrismTaldarimACGluescreenDummy +287,PhotonCannonTaldarimACGluescreenDummy +288,StukovInfestedCivilianACGluescreenDummy +289,StukovInfestedMarineACGluescreenDummy +290,StukovInfestedSiegeTankACGluescreenDummy +291,StukovInfestedDiamondbackACGluescreenDummy +292,StukovInfestedBansheeACGluescreenDummy +293,SILiberatorACGluescreenDummy +294,StukovInfestedBunkerACGluescreenDummy +295,StukovInfestedMissileTurretACGluescreenDummy +296,StukovBroodQueenACGluescreenDummy +297,ZealotFenixACGluescreenDummy +298,SentryFenixACGluescreenDummy +299,AdeptFenixACGluescreenDummy +300,ImmortalFenixACGluescreenDummy +301,ColossusFenixACGluescreenDummy +302,DisruptorACGluescreenDummy +303,ObserverFenixACGluescreenDummy +304,ScoutACGluescreenDummy +305,CarrierFenixACGluescreenDummy +306,PhotonCannonFenixACGluescreenDummy +308,NeedleSpinesWeapon +309,CorruptionWeapon +310,InfestedTerransWeapon +311,NeuralParasiteWeapon +312,PointDefenseDroneReleaseWeapon +313,HunterSeekerWeapon +314,MULE +316,ThorAAWeapon +317,PunisherGrenadesLMWeapon +318,VikingFighterWeapon +319,ATALaserBatteryLMWeapon +320,ATSLaserBatteryLMWeapon +321,LongboltMissileWeapon +322,D8ChargeWeapon +323,YamatoWeapon +324,IonCannonsWeapon +325,AcidSalivaWeapon +326,SpineCrawlerWeapon +327,SporeCrawlerWeapon +328,GlaiveWurmWeapon +329,GlaiveWurmM2Weapon +330,GlaiveWurmM3Weapon +331,StalkerWeapon +332,EMP2Weapon +333,BacklashRocketsLMWeapon +334,PhotonCannonWeapon +335,ParasiteSporeWeapon +337,Broodling +338,BroodLordBWeapon +341,AutoTurretReleaseWeapon +342,LarvaReleaseMissile +343,AcidSpinesWeapon +344,FrenzyWeapon +345,ContaminateWeapon +357,BeaconRally +358,BeaconArmy +359,BeaconAttack +360,BeaconDefend +361,BeaconHarass +362,BeaconIdle +363,BeaconAuto +364,BeaconDetect +365,BeaconScout +366,BeaconClaim +367,BeaconExpand +368,BeaconCustom1 +369,BeaconCustom2 +370,BeaconCustom3 +371,BeaconCustom4 +372,Adept +373,Ravager +374,VikingSkinPreview +380,Rocks2x2NonConjoined +381,FungalGrowthMissile +382,NeuralParasiteTentacleMissile +383,Beacon_Protoss +384,Beacon_ProtossSmall +385,Beacon_Terran +386,Beacon_TerranSmall +387,Beacon_Zerg +388,Beacon_ZergSmall +389,Lyote +390,CarrionBird +391,KarakMale +392,KarakFemale +393,UrsadakFemaleExotic +394,UrsadakMale +395,UrsadakFemale +396,UrsadakCalf +397,UrsadakMaleExotic +398,UtilityBot +399,CommentatorBot1 +400,CommentatorBot2 +401,CommentatorBot3 +402,CommentatorBot4 +403,Scantipede +404,Dog +405,Sheep +406,Cow +407,InfestedTerransEggPlacement +408,InfestorTerransWeapon +409,MineralField +410,VespeneGeyser +411,SpacePlatformGeyser +412,RichVespeneGeyser +413,DestructibleSearchlight +414,DestructibleBullhornLights +415,DestructibleStreetlight +416,DestructibleSpacePlatformSign +417,DestructibleStoreFrontCityProps +418,DestructibleBillboardTall +419,DestructibleBillboardScrollingText +420,DestructibleSpacePlatformBarrier +421,DestructibleSignsDirectional +422,DestructibleSignsConstruction +423,DestructibleSignsFunny +424,DestructibleSignsIcons +425,DestructibleSignsWarning +426,DestructibleGarage +427,DestructibleGarageLarge +428,DestructibleTrafficSignal +429,TrafficSignal +430,BraxisAlphaDestructible1x1 +431,BraxisAlphaDestructible2x2 +432,DestructibleDebris4x4 +433,DestructibleDebris6x6 +434,DestructibleRock2x4Vertical +435,DestructibleRock2x4Horizontal +436,DestructibleRock2x6Vertical +437,DestructibleRock2x6Horizontal +438,DestructibleRock4x4 +439,DestructibleRock6x6 +440,DestructibleRampDiagonalHugeULBR +441,DestructibleRampDiagonalHugeBLUR +442,DestructibleRampVerticalHuge +443,DestructibleRampHorizontalHuge +444,DestructibleDebrisRampDiagonalHugeULBR +445,DestructibleDebrisRampDiagonalHugeBLUR +446,OverlordGenerateCreepKeybind +447,MengskStatueAlone +448,MengskStatue +449,WolfStatue +450,GlobeStatue +451,Weapon +452,GlaiveWurmBounceWeapon +453,BroodLordWeapon +454,BroodLordAWeapon +455,CreepBlocker1x1 +456,PermanentCreepBlocker1x1 +457,PathingBlocker1x1 +458,PathingBlocker2x2 +459,AutoTestAttackTargetGround +460,AutoTestAttackTargetAir +461,AutoTestAttacker +462,HelperEmitterSelectionArrow +463,MultiKillObject +464,ShapeGolfball +465,ShapeCone +466,ShapeCube +467,ShapeCylinder +468,ShapeDodecahedron +469,ShapeIcosahedron +470,ShapeOctahedron +471,ShapePyramid +472,ShapeRoundedCube +473,ShapeSphere +474,ShapeTetrahedron +475,ShapeThickTorus +476,ShapeThinTorus +477,ShapeTorus +478,Shape4PointStar +479,Shape5PointStar +480,Shape6PointStar +481,Shape8PointStar +482,ShapeArrowPointer +483,ShapeBowl +484,ShapeBox +485,ShapeCapsule +486,ShapeCrescentMoon +487,ShapeDecahedron +488,ShapeDiamond +489,ShapeFootball +490,ShapeGemstone +491,ShapeHeart +492,ShapeJack +493,ShapePlusSign +494,ShapeShamrock +495,ShapeSpade +496,ShapeTube +497,ShapeEgg +498,ShapeYenSign +499,ShapeX +500,ShapeWatermelon +501,ShapeWonSign +502,ShapeTennisball +503,ShapeStrawberry +504,ShapeSmileyFace +505,ShapeSoccerball +506,ShapeRainbow +507,ShapeSadFace +508,ShapePoundSign +509,ShapePear +510,ShapePineapple +511,ShapeOrange +512,ShapePeanut +513,ShapeO +514,ShapeLemon +515,ShapeMoneyBag +516,ShapeHorseshoe +517,ShapeHockeyStick +518,ShapeHockeyPuck +519,ShapeHand +520,ShapeGolfClub +521,ShapeGrape +522,ShapeEuroSign +523,ShapeDollarSign +524,ShapeBasketball +525,ShapeCarrot +526,ShapeCherry +527,ShapeBaseball +528,ShapeBaseballBat +529,ShapeBanana +530,ShapeApple +531,ShapeCashLarge +532,ShapeCashMedium +533,ShapeCashSmall +534,ShapeFootballColored +535,ShapeLemonSmall +536,ShapeOrangeSmall +537,ShapeTreasureChestOpen +538,ShapeTreasureChestClosed +539,ShapeWatermelonSmall +540,UnbuildableRocksDestructible +541,UnbuildableBricksDestructible +542,UnbuildablePlatesDestructible +543,Debris2x2NonConjoined +544,EnemyPathingBlocker1x1 +545,EnemyPathingBlocker2x2 +546,EnemyPathingBlocker4x4 +547,EnemyPathingBlocker8x8 +548,EnemyPathingBlocker16x16 +549,ScopeTest +550,SentryACGluescreenDummy +551,StukovInfestedTrooperACGluescreenDummy +552,MineralField750 +568,HellionTank +569,CollapsibleTerranTowerDebris +570,DebrisRampLeft +571,DebrisRampRight +572,MothershipCore +576,LocustMP +577,CollapsibleRockTowerDebris +578,NydusCanalAttacker +579,NydusCanalCreeper +580,SwarmHostBurrowedMP +581,SwarmHostMP +582,Oracle +583,Tempest +584,WarHound +585,WidowMine +586,Viper +587,WidowMineBurrowed +588,LurkerMPEgg +589,LurkerMP +590,LurkerMPBurrowed +591,LurkerDenMP +592,ExtendingBridgeNEWide8Out +593,ExtendingBridgeNEWide8 +594,ExtendingBridgeNWWide8Out +595,ExtendingBridgeNWWide8 +596,ExtendingBridgeNEWide10Out +597,ExtendingBridgeNEWide10 +598,ExtendingBridgeNWWide10Out +599,ExtendingBridgeNWWide10 +600,ExtendingBridgeNEWide12Out +601,ExtendingBridgeNEWide12 +602,ExtendingBridgeNWWide12Out +603,ExtendingBridgeNWWide12 +605,CollapsibleRockTowerDebrisRampRight +606,CollapsibleRockTowerDebrisRampLeft +607,XelNaga_Caverns_DoorE +608,XelNaga_Caverns_DoorEOpened +609,XelNaga_Caverns_DoorN +610,XelNaga_Caverns_DoorNE +611,XelNaga_Caverns_DoorNEOpened +612,XelNaga_Caverns_DoorNOpened +613,XelNaga_Caverns_DoorNW +614,XelNaga_Caverns_DoorNWOpened +615,XelNaga_Caverns_DoorS +616,XelNaga_Caverns_DoorSE +617,XelNaga_Caverns_DoorSEOpened +618,XelNaga_Caverns_DoorSOpened +619,XelNaga_Caverns_DoorSW +620,XelNaga_Caverns_DoorSWOpened +621,XelNaga_Caverns_DoorW +622,XelNaga_Caverns_DoorWOpened +623,XelNaga_Caverns_Floating_BridgeNE8Out +624,XelNaga_Caverns_Floating_BridgeNE8 +625,XelNaga_Caverns_Floating_BridgeNW8Out +626,XelNaga_Caverns_Floating_BridgeNW8 +627,XelNaga_Caverns_Floating_BridgeNE10Out +628,XelNaga_Caverns_Floating_BridgeNE10 +629,XelNaga_Caverns_Floating_BridgeNW10Out +630,XelNaga_Caverns_Floating_BridgeNW10 +631,XelNaga_Caverns_Floating_BridgeNE12Out +632,XelNaga_Caverns_Floating_BridgeNE12 +633,XelNaga_Caverns_Floating_BridgeNW12Out +634,XelNaga_Caverns_Floating_BridgeNW12 +635,XelNaga_Caverns_Floating_BridgeH8Out +636,XelNaga_Caverns_Floating_BridgeH8 +637,XelNaga_Caverns_Floating_BridgeV8Out +638,XelNaga_Caverns_Floating_BridgeV8 +639,XelNaga_Caverns_Floating_BridgeH10Out +640,XelNaga_Caverns_Floating_BridgeH10 +641,XelNaga_Caverns_Floating_BridgeV10Out +642,XelNaga_Caverns_Floating_BridgeV10 +643,XelNaga_Caverns_Floating_BridgeH12Out +644,XelNaga_Caverns_Floating_BridgeH12 +645,XelNaga_Caverns_Floating_BridgeV12Out +646,XelNaga_Caverns_Floating_BridgeV12 +649,CollapsibleTerranTowerPushUnitRampLeft +650,CollapsibleTerranTowerPushUnitRampRight +653,CollapsibleRockTowerPushUnit +654,CollapsibleTerranTowerPushUnit +655,CollapsibleRockTowerPushUnitRampRight +656,CollapsibleRockTowerPushUnitRampLeft +657,DigesterCreepSprayTargetUnit +658,DigesterCreepSprayUnit +659,NydusCanalAttackerWeapon +660,ViperConsumeStructureWeapon +663,ResourceBlocker +664,TempestWeapon +665,YoinkMissile +669,YoinkVikingAirMissile +671,YoinkVikingGroundMissile +673,YoinkSiegeTankMissile +675,WarHoundWeapon +677,EyeStalkWeapon +680,WidowMineWeapon +681,WidowMineAirWeapon +682,MothershipCoreWeaponWeapon +683,TornadoMissileWeapon +684,TornadoMissileDummyWeapon +685,TalonsMissileWeapon +686,CreepTumorMissile +687,LocustMPEggAMissileWeapon +688,LocustMPEggBMissileWeapon +689,LocustMPWeapon +691,RepulsorCannonWeapon +695,CollapsibleRockTowerDiagonal +696,CollapsibleTerranTowerDiagonal +697,CollapsibleTerranTowerRampLeft +698,CollapsibleTerranTowerRampRight +699,Ice2x2NonConjoined +700,IceProtossCrates +701,ProtossCrates +702,TowerMine +703,PickupPalletGas +704,PickupPalletMinerals +705,PickupScrapSalvage1x1 +706,PickupScrapSalvage2x2 +707,PickupScrapSalvage3x3 +708,RoughTerrain +709,UnbuildableBricksSmallUnit +710,UnbuildablePlatesSmallUnit +711,UnbuildablePlatesUnit +712,UnbuildableRocksSmallUnit +713,XelNagaHealingShrine +714,InvisibleTargetDummy +715,ProtossVespeneGeyser +716,CollapsibleRockTower +717,CollapsibleTerranTower +718,ThornLizard +719,CleaningBot +720,DestructibleRock6x6Weak +721,ProtossSnakeSegmentDemo +722,PhysicsCapsule +723,PhysicsCube +724,PhysicsCylinder +725,PhysicsKnot +726,PhysicsL +727,PhysicsPrimitives +728,PhysicsSphere +729,PhysicsStar +730,CreepBlocker4x4 +731,DestructibleCityDebris2x4Vertical +732,DestructibleCityDebris2x4Horizontal +733,DestructibleCityDebris2x6Vertical +734,DestructibleCityDebris2x6Horizontal +735,DestructibleCityDebris4x4 +736,DestructibleCityDebris6x6 +737,DestructibleCityDebrisHugeDiagonalBLUR +738,DestructibleCityDebrisHugeDiagonalULBR +739,TestZerg +740,PathingBlockerRadius1 +741,DestructibleRockEx12x4Vertical +742,DestructibleRockEx12x4Horizontal +743,DestructibleRockEx12x6Vertical +744,DestructibleRockEx12x6Horizontal +745,DestructibleRockEx14x4 +746,DestructibleRockEx16x6 +747,DestructibleRockEx1DiagonalHugeULBR +748,DestructibleRockEx1DiagonalHugeBLUR +749,DestructibleRockEx1VerticalHuge +750,DestructibleRockEx1HorizontalHuge +751,DestructibleIce2x4Vertical +752,DestructibleIce2x4Horizontal +753,DestructibleIce2x6Vertical +754,DestructibleIce2x6Horizontal +755,DestructibleIce4x4 +756,DestructibleIce6x6 +757,DestructibleIceDiagonalHugeULBR +758,DestructibleIceDiagonalHugeBLUR +759,DestructibleIceVerticalHuge +760,DestructibleIceHorizontalHuge +761,DesertPlanetSearchlight +762,DesertPlanetStreetlight +763,UnbuildableBricksUnit +764,UnbuildableRocksUnit +765,ZerusDestructibleArch +766,Artosilope +767,Anteplott +768,LabBot +769,Crabeetle +770,CollapsibleRockTowerRampRight +771,CollapsibleRockTowerRampLeft +772,LabMineralField +773,LabMineralField750 +789,SnowRefinery_Terran_ExtendingBridgeNEShort8Out +790,SnowRefinery_Terran_ExtendingBridgeNEShort8 +791,SnowRefinery_Terran_ExtendingBridgeNWShort8Out +792,SnowRefinery_Terran_ExtendingBridgeNWShort8 +797,Tarsonis_DoorN +798,Tarsonis_DoorNLowered +799,Tarsonis_DoorNE +800,Tarsonis_DoorNELowered +801,Tarsonis_DoorE +802,Tarsonis_DoorELowered +803,Tarsonis_DoorNW +804,Tarsonis_DoorNWLowered +805,CompoundMansion_DoorN +806,CompoundMansion_DoorNLowered +807,CompoundMansion_DoorNE +808,CompoundMansion_DoorNELowered +809,CompoundMansion_DoorE +810,CompoundMansion_DoorELowered +811,CompoundMansion_DoorNW +812,CompoundMansion_DoorNWLowered +813,RavagerCocoon +814,Liberator +815,RavagerBurrowed +817,ThorAP +818,Cyclone +819,LocustMPFlying +820,Disruptor +821,AiurLightBridgeNE8Out +822,AiurLightBridgeNE8 +823,AiurLightBridgeNE10Out +824,AiurLightBridgeNE10 +825,AiurLightBridgeNE12Out +826,AiurLightBridgeNE12 +827,AiurLightBridgeNW8Out +828,AiurLightBridgeNW8 +829,AiurLightBridgeNW10Out +830,AiurLightBridgeNW10 +831,AiurLightBridgeNW12Out +832,AiurLightBridgeNW12 +833,AiurTempleBridgeNE8Out +835,AiurTempleBridgeNE10Out +837,AiurTempleBridgeNE12Out +839,AiurTempleBridgeNW8Out +841,AiurTempleBridgeNW10Out +843,AiurTempleBridgeNW12Out +845,ShakurasLightBridgeNE8Out +846,ShakurasLightBridgeNE8 +847,ShakurasLightBridgeNE10Out +848,ShakurasLightBridgeNE10 +849,ShakurasLightBridgeNE12Out +850,ShakurasLightBridgeNE12 +851,ShakurasLightBridgeNW8Out +852,ShakurasLightBridgeNW8 +853,ShakurasLightBridgeNW10Out +854,ShakurasLightBridgeNW10 +855,ShakurasLightBridgeNW12Out +856,ShakurasLightBridgeNW12 +857,VoidMPImmortalReviveCorpse +858,GuardianCocoonMP +859,GuardianMP +860,DevourerCocoonMP +861,DevourerMP +862,DefilerMPBurrowed +863,DefilerMP +864,OracleStasisTrap +865,DisruptorPhased +866,LiberatorAG +867,AiurLightBridgeAbandonedNE8Out +868,AiurLightBridgeAbandonedNE8 +869,AiurLightBridgeAbandonedNE10Out +870,AiurLightBridgeAbandonedNE10 +871,AiurLightBridgeAbandonedNE12Out +872,AiurLightBridgeAbandonedNE12 +873,AiurLightBridgeAbandonedNW8Out +874,AiurLightBridgeAbandonedNW8 +875,AiurLightBridgeAbandonedNW10Out +876,AiurLightBridgeAbandonedNW10 +877,AiurLightBridgeAbandonedNW12Out +878,AiurLightBridgeAbandonedNW12 +879,CollapsiblePurifierTowerDebris +880,PortCity_Bridge_UnitNE8Out +881,PortCity_Bridge_UnitNE8 +882,PortCity_Bridge_UnitSE8Out +883,PortCity_Bridge_UnitSE8 +884,PortCity_Bridge_UnitNW8Out +885,PortCity_Bridge_UnitNW8 +886,PortCity_Bridge_UnitSW8Out +887,PortCity_Bridge_UnitSW8 +888,PortCity_Bridge_UnitNE10Out +889,PortCity_Bridge_UnitNE10 +890,PortCity_Bridge_UnitSE10Out +891,PortCity_Bridge_UnitSE10 +892,PortCity_Bridge_UnitNW10Out +893,PortCity_Bridge_UnitNW10 +894,PortCity_Bridge_UnitSW10Out +895,PortCity_Bridge_UnitSW10 +896,PortCity_Bridge_UnitNE12Out +897,PortCity_Bridge_UnitNE12 +898,PortCity_Bridge_UnitSE12Out +899,PortCity_Bridge_UnitSE12 +900,PortCity_Bridge_UnitNW12Out +901,PortCity_Bridge_UnitNW12 +902,PortCity_Bridge_UnitSW12Out +903,PortCity_Bridge_UnitSW12 +904,PortCity_Bridge_UnitN8Out +905,PortCity_Bridge_UnitN8 +906,PortCity_Bridge_UnitS8Out +907,PortCity_Bridge_UnitS8 +908,PortCity_Bridge_UnitE8Out +909,PortCity_Bridge_UnitE8 +910,PortCity_Bridge_UnitW8Out +911,PortCity_Bridge_UnitW8 +912,PortCity_Bridge_UnitN10Out +913,PortCity_Bridge_UnitN10 +914,PortCity_Bridge_UnitS10Out +915,PortCity_Bridge_UnitS10 +916,PortCity_Bridge_UnitE10Out +917,PortCity_Bridge_UnitE10 +918,PortCity_Bridge_UnitW10Out +919,PortCity_Bridge_UnitW10 +920,PortCity_Bridge_UnitN12Out +921,PortCity_Bridge_UnitN12 +922,PortCity_Bridge_UnitS12Out +923,PortCity_Bridge_UnitS12 +924,PortCity_Bridge_UnitE12Out +925,PortCity_Bridge_UnitE12 +926,PortCity_Bridge_UnitW12Out +927,PortCity_Bridge_UnitW12 +928,PurifierRichMineralField +929,PurifierRichMineralField750 +944,CollapsiblePurifierTowerPushUnit +946,LocustMPPrecursor +947,ReleaseInterceptorsBeacon +948,AdeptPhaseShift +949,RavagerCorrosiveBileMissile +950,HydraliskImpaleMissile +951,CycloneMissileLargeAir +952,CycloneMissile +953,CycloneMissileLarge +954,ThorAALance +955,OracleWeapon +956,TempestWeaponGround +957,RavagerWeaponMissile +958,ScoutMPAirWeaponLeft +959,ScoutMPAirWeaponRight +960,ArbiterMPWeaponMissile +961,GuardianMPWeapon +962,DevourerMPWeaponMissile +963,DefilerMPDarkSwarmWeapon +964,QueenMPEnsnareMissile +965,QueenMPSpawnBroodlingsMissile +966,LightningBombWeapon +967,HERCPlacement +968,GrappleWeapon +971,CausticSprayMissile +972,ParasiticBombMissile +973,ParasiticBombDummy +974,AdeptWeapon +975,AdeptUpgradeWeapon +976,LiberatorMissile +977,LiberatorDamageMissile +978,LiberatorAGMissile +979,KD8Charge +980,KD8ChargeWeapon +982,SlaynElementalGrabWeapon +983,SlaynElementalGrabAirUnit +984,SlaynElementalGrabGroundUnit +985,SlaynElementalWeapon +990,DestructibleExpeditionGate6x6 +991,DestructibleZergInfestation3x3 +992,HERC +993,Moopy +994,Replicant +995,SeekerMissile +996,AiurTempleBridgeDestructibleNE8Out +997,AiurTempleBridgeDestructibleNE10Out +998,AiurTempleBridgeDestructibleNE12Out +999,AiurTempleBridgeDestructibleNW8Out +1000,AiurTempleBridgeDestructibleNW10Out +1001,AiurTempleBridgeDestructibleNW12Out +1002,AiurTempleBridgeDestructibleSW8Out +1003,AiurTempleBridgeDestructibleSW10Out +1004,AiurTempleBridgeDestructibleSW12Out +1005,AiurTempleBridgeDestructibleSE8Out +1006,AiurTempleBridgeDestructibleSE10Out +1007,AiurTempleBridgeDestructibleSE12Out +1009,FlyoverUnit +1010,CorsairMP +1011,ScoutMP +1013,ArbiterMP +1014,ScourgeMP +1015,DefilerMPPlagueWeapon +1016,QueenMP +1017,XelNagaDestructibleRampBlocker6S +1018,XelNagaDestructibleRampBlocker6SE +1019,XelNagaDestructibleRampBlocker6E +1020,XelNagaDestructibleRampBlocker6NE +1021,XelNagaDestructibleRampBlocker6N +1022,XelNagaDestructibleRampBlocker6NW +1023,XelNagaDestructibleRampBlocker6W +1024,XelNagaDestructibleRampBlocker6SW +1025,XelNagaDestructibleRampBlocker8S +1026,XelNagaDestructibleRampBlocker8SE +1027,XelNagaDestructibleRampBlocker8E +1028,XelNagaDestructibleRampBlocker8NE +1029,XelNagaDestructibleRampBlocker8N +1030,XelNagaDestructibleRampBlocker8NW +1031,XelNagaDestructibleRampBlocker8W +1032,XelNagaDestructibleRampBlocker8SW +1033,XelNagaDestructibleBlocker6S +1034,XelNagaDestructibleBlocker6SE +1035,XelNagaDestructibleBlocker6E +1036,XelNagaDestructibleBlocker6NE +1037,XelNagaDestructibleBlocker6N +1038,XelNagaDestructibleBlocker6NW +1039,XelNagaDestructibleBlocker6W +1040,XelNagaDestructibleBlocker6SW +1041,XelNagaDestructibleBlocker8S +1042,XelNagaDestructibleBlocker8SE +1043,XelNagaDestructibleBlocker8E +1044,XelNagaDestructibleBlocker8NE +1045,XelNagaDestructibleBlocker8N +1046,XelNagaDestructibleBlocker8NW +1047,XelNagaDestructibleBlocker8W +1048,XelNagaDestructibleBlocker8SW +1049,ReptileCrate +1050,SlaynSwarmHostSpawnFlyer +1051,SlaynElemental +1052,PurifierVespeneGeyser +1053,ShakurasVespeneGeyser +1054,CollapsiblePurifierTowerDiagonal +1055,CreepOnlyBlocker4x4 +1056,PurifierMineralField +1057,PurifierMineralField750 +1058,BattleStationMineralField +1059,BattleStationMineralField750 +1060,Beacon_Nova +1061,Beacon_NovaSmall +1062,Ursula +1063,Elsecaro_Colonist_Hut +1064,SnowGlazeStarterMP +1065,TransportOverlordCocoon +1066,OverlordTransport +1067,PylonOvercharged +1069,BypassArmorDrone +1070,AdeptPiercingWeapon +1071,CorrosiveParasiteWeapon diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 730818de..032d913d 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -406,7 +406,7 @@ def load_build(expansion, version): # Load LotV Data lotv_builds = dict() -for version in ('base', '44401', '47185', '48258', '53644'): +for version in ('base', '44401', '47185', '48258', '53644', '54724'): lotv_builds[version] = load_build('LotV', version) datapacks = builds = {'WoL': wol_builds, 'HotS': hots_builds, 'LotV': lotv_builds} diff --git a/sc2reader/data/unit_lookup.csv b/sc2reader/data/unit_lookup.csv index 974a32ad..185048f6 100755 --- a/sc2reader/data/unit_lookup.csv +++ b/sc2reader/data/unit_lookup.csv @@ -957,3 +957,4 @@ PhotonCannonFenixACGluescreenDummy,PhotonCannonFenixACGluescreenDummy StukovInfestedBunkerACGluescreenDummy,StukovInfestedBunkerACGluescreenDummy StukovInfestedBansheeACGluescreenDummy,StukovInfestedBansheeACGluescreenDummy XelNagaDestructibleBlocker6W,XelNagaDestructibleBlocker6W +VikingSkinPreview,VikingSkinPreview diff --git a/sc2reader/resources.py b/sc2reader/resources.py index a44f7bfc..a494f428 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -606,6 +606,7 @@ def register_default_datapacks(self): self.register_datapack(datapacks['LotV']['47185'], lambda r: r.expansion == 'LotV' and 47185 <= r.build) self.register_datapack(datapacks['LotV']['48258'], lambda r: r.expansion == 'LotV' and 48258 <= r.build) self.register_datapack(datapacks['LotV']['53644'], lambda r: r.expansion == 'LotV' and 53644 <= r.build) + self.register_datapack(datapacks['LotV']['54724'], lambda r: r.expansion == 'LotV' and 54724 <= r.build) # Internal Methods From b0327d7e373750fc9cab7e1d40e310a25cfc4096 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 16:42:48 +0200 Subject: [PATCH 100/116] Add flake8 to testing Python 3.3 goes [EOL](https://docs.python.org/devguide/index.html#branchstatus) in a few weeks so drop it from testing and add Python 3.6. --- .travis.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index b1319cc2..1fc93c94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,13 +2,18 @@ language: python python: - 2.6 - 2.7 - - 3.2 - - 3.3 + - 3.4 + - 3.6 - pypy install: - python setup.py develop - - pip install coveralls + - pip install coveralls hacking - mkdir local_cache +before_script: + # stop the build if there are Python syntax errors or undefined names + - time flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + - time flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics script: - SC2READER_CACHE_DIR=local_cache coverage run --source=sc2reader test_replays/test_all.py - SC2READER_CACHE_DIR=local_cache coverage run --source=sc2reader --append test_s2gs/test_all.py From 2ecd0b397a79471b96cf6c44cc118e550e629e76 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:22:04 +0200 Subject: [PATCH 101/116] print() function for Python 3 --- new_units.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/new_units.py b/new_units.py index afe58f27..e0d80118 100644 --- a/new_units.py +++ b/new_units.py @@ -18,10 +18,10 @@ for line in new_units: new_unit_name = line.strip().split(',')[1] if new_unit_name not in UNIT_LOOKUP: - print "{0},{1}".format(new_unit_name,new_unit_name) + print("{0},{1}".format(new_unit_name,new_unit_name)) -print -print +print('') +print('') ABIL_LOOKUP = dict() for entry in pkgutil.get_data('sc2reader.data', 'ability_lookup.csv').split('\n'): @@ -33,4 +33,4 @@ for line in new_abilities: new_ability_name = line.strip().split(',')[1] if new_ability_name not in ABIL_LOOKUP: - print "{0},{1}".format(new_ability_name,new_ability_name) + print("{0},{1}".format(new_ability_name,new_ability_name)) From 0648ba183f923f7a7ac86c6eee30e26351595697 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:25:00 +0200 Subject: [PATCH 102/116] Define print() function and raw_input for Python 3 --- examples/sc2autosave.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/sc2autosave.py b/examples/sc2autosave.py index fc40bb98..e5220f38 100755 --- a/examples/sc2autosave.py +++ b/examples/sc2autosave.py @@ -168,6 +168,11 @@ import sc2reader +try: + raw_input # Python 3 +except NameError: + raw_input = input # Python 3 + def run(args): #Reset wipes the destination clean so we can start over. @@ -367,12 +372,12 @@ def reset(args): elif not os.path.isdir(args.dest): exit("Cannot reset, destination must be directory: {0}", args.dest) - print 'About to reset directory: {0}\nAll files and subdirectories will be removed.'.format(args.dest) + print('About to reset directory: {0}\nAll files and subdirectories will be removed.'.format(args.dest)) choice = raw_input('Proceed anyway? (y/n) ') if choice.lower() == 'y': args.log.write('Removing old directory: {0}\n'.format(args.dest)) if not args.dryrun: - print args.dest + print(args.dest) shutil.rmtree(args.dest) else: sys.exit("Script Aborted") @@ -511,7 +516,7 @@ def main(): try: run(parser.parse_args()) except KeyboardInterrupt: - print "\n\nScript Interupted. Process Aborting" + print("\n\nScript Interupted. Process Aborting") if __name__ == '__main__': main() From 8da92252b68a0830a5eb1cd74cacca77ca237fc3 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:26:11 +0200 Subject: [PATCH 103/116] Define print() function for Python 3 --- examples/sc2store.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/sc2store.py b/examples/sc2store.py index cb8995c0..55ff22b0 100755 --- a/examples/sc2store.py +++ b/examples/sc2store.py @@ -172,15 +172,15 @@ def main(): for path in args.paths: for file_name in sc2reader.utils.get_files(path, depth=0): - print "CREATING: {0}".format(file_name) + print("CREATING: {0}".format(file_name)) db.add(Game(sc2reader.read_file(file_name), db)) db.commit() - print list(db.query(distinct(Person.name)).all()) + print(list(db.query(distinct(Person.name)).all())) #for row in db.query(distinct(Person.name)).all(): - # print row + # print(row) def load_session(args): From 5f91a2aea9ab30dbbbeb47bdc8b8649ff4ce11d2 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:28:28 +0200 Subject: [PATCH 104/116] Define raw_input for Python 3 --- sc2reader/scripts/sc2attributes.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sc2reader/scripts/sc2attributes.py b/sc2reader/scripts/sc2attributes.py index a318848f..da0160e9 100644 --- a/sc2reader/scripts/sc2attributes.py +++ b/sc2reader/scripts/sc2attributes.py @@ -38,6 +38,11 @@ import sc2reader +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + decisions = dict() From ad762662e31d20041897f5bcef9ac202b28774bf Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:29:48 +0200 Subject: [PATCH 105/116] fix typo --- examples/sc2autosave.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/sc2autosave.py b/examples/sc2autosave.py index e5220f38..eb6b48e4 100755 --- a/examples/sc2autosave.py +++ b/examples/sc2autosave.py @@ -169,7 +169,7 @@ import sc2reader try: - raw_input # Python 3 + raw_input # Python 2 except NameError: raw_input = input # Python 3 From 99e633f152201ab23ab6a2d768fdca713e949a23 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:42:00 +0200 Subject: [PATCH 106/116] Define cmp() for Python 3 https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons --- sc2reader/data/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 032d913d..9d43d762 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -11,6 +11,11 @@ from sc2reader.log_utils import loggable +try: + cmp # Python 2 +except NameError: + cmp = lambda a, b: (a > b) - (a < b) # noqa Python 3 + ABIL_LOOKUP = dict() for entry in pkgutil.get_data('sc2reader.data', 'ability_lookup.csv').decode('utf8').split('\n'): if not entry: From 7be34b7f1c50efe9ee4f8caa2391a9cf8e1ff66b Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:50:15 +0200 Subject: [PATCH 107/116] Add hacking to get flake8 plus plugins --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 7e2fba5e..4e8c8b6d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ +hacking Pillow From e51c262308496e1ab1b1c5c5adfeef6e2dc39063 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 17:51:58 +0200 Subject: [PATCH 108/116] Add flake8 to the testing --- circle.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/circle.yml b/circle.yml index 2110527b..47c5b3cc 100644 --- a/circle.yml +++ b/circle.yml @@ -8,5 +8,7 @@ general: - old_master test: override: + - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics + - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - python -m unittest discover test_replays - python -m unittest discover test_s2gs From f5823861c694f47c1785140cf6074cbc1ac50845 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 18:04:39 +0200 Subject: [PATCH 109/116] Add Python 2.7 and 3.6 to the testing and flake8 as well --- circle.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/circle.yml b/circle.yml index 47c5b3cc..1a9b7f8a 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,6 @@ +machine: + post: + - pyenv global 2.7.13 3.6.2 general: branches: ignore: @@ -7,8 +10,12 @@ general: - master - old_master test: - override: - - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics - - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - python -m unittest discover test_replays - - python -m unittest discover test_s2gs + override: + - python2.7 -m flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics + - python2.7 -m flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - python2.7 -m python -m unittest discover test_replays + - python2.7 -m python -m unittest discover test_s2gs + - python3.6 -m flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics + - python3.6 -m flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - python3.6 -m python -m unittest discover test_replays + - python3.6 -m python -m unittest discover test_s2gs From 89750b6426d0155c8eaa6dddf3adf599115ff5d3 Mon Sep 17 00:00:00 2001 From: cclauss Date: Tue, 22 Aug 2017 23:58:43 +0200 Subject: [PATCH 110/116] print() function for Python 3 --- test_replays/test_all.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index b0e3f937..64134571 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -386,8 +386,8 @@ def test_creepTracker(self): if replay.player[player_id].play_race == "Zerg": assert replay.player[player_id].max_creep_spread[1] >0 assert replay.player[player_id].creep_spread_by_minute[0] >0 -# print "MCS", replay.player[player_id].max_creep_spread -# print "CSBM", replay.player[player_id].creep_spread_by_minute +# print("MCS", replay.player[player_id].max_creep_spread) +# print("CSBM", replay.player[player_id].creep_spread_by_minute) replay =factory.load_replay("test_replays/2.0.8.25605/ggtracker_3621402.SC2Replay",load_map= True,engine=pluginEngine,load_level=4) @@ -449,7 +449,7 @@ def test_30(self): def test_31(self): for i in range(1,5): - print "DOING {}".format(i) + print("DOING {}".format(i)) replay = sc2reader.load_replay("test_replays/3.1.0/{}.SC2Replay".format(i)) def test_30_map(self): @@ -467,7 +467,7 @@ def test_30_apms(self): replay = factory.load_replay("test_replays/3.0.0.38215/fourth.SC2Replay") for player in replay.players: if player.name == 'Owl': - print player.name, player.avg_apm + print(player.name, player.avg_apm) self.assertTrue(player.avg_apm > 110) def test_38749(self): @@ -489,7 +489,7 @@ def test_funny_minerals(self): itemlist = xmldoc.getElementsByTagName('ObjectUnit') mineralPosStrs = [ou.attributes['Position'].value for ou in itemlist if 'MineralField' in ou.attributes['UnitType'].value] mineralFieldNames = list(set([ou.attributes['UnitType'].value for ou in itemlist if 'MineralField' in ou.attributes['UnitType'].value])) - #print mineralFieldNames + # print(mineralFieldNames) self.assertTrue(len(mineralPosStrs) > 0) def test_dusk(self): From 6b2ce4be6edf742e932ea41798cf473fe25ab4ec Mon Sep 17 00:00:00 2001 From: cclauss Date: Wed, 23 Aug 2017 00:02:56 +0200 Subject: [PATCH 111/116] Be explicit about the error for flake8 --- sc2reader/engine/plugins/context.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index c83336d2..6b5362bc 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -39,7 +39,7 @@ def handleCommandEvent(self, event, replay): for player in replay.players: try: event.logger.error("\t"+unicode(player).encode('ascii', 'ignore')) - except: + except NameError: # unicode() is not defined in Python 3 event.logger.error("\t"+player.__str__()) self.logger.error("{0}\t{1}\tMissing ability {2:X} from {3}".format(event.frame, event.player.name, event.ability_id, replay.datapack.__class__.__name__)) From 26435ef4b4aaba683d9b21a77b0cb1481ac36bb0 Mon Sep 17 00:00:00 2001 From: cclauss Date: Wed, 23 Aug 2017 01:36:56 +0200 Subject: [PATCH 112/116] Python 2.7.12 instead of 2.7.13 --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 1a9b7f8a..e1545b9c 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,6 @@ machine: post: - - pyenv global 2.7.13 3.6.2 + - pyenv global 2.7.12 3.6.2 general: branches: ignore: From 1baa866add1d9b3eef4a89e903d7d4f882a06fbf Mon Sep 17 00:00:00 2001 From: cclauss Date: Wed, 23 Aug 2017 02:06:32 +0200 Subject: [PATCH 113/116] pip install hacking ; pip3 install hacking --- circle.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/circle.yml b/circle.yml index e1545b9c..2b4dbe8d 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,12 @@ machine: post: - pyenv global 2.7.12 3.6.2 +dependencies: + pre: + - pip install --upgrade pip + - pip3 install --upgrade pip + - pip install hacking + - pip3 install hacking general: branches: ignore: From a15a5f56d9e3aa5df2dfa211ab6afa77a4b5e4d7 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Mon, 18 Sep 2017 11:07:42 -0400 Subject: [PATCH 114/116] test demonstrating that we can parse the replay mentioned in #190 --- test_replays/3.16/AbyssalReef.SC2Replay | Bin 0 -> 71972 bytes test_replays/test_all.py | 7 +++++++ 2 files changed, 7 insertions(+) create mode 100644 test_replays/3.16/AbyssalReef.SC2Replay diff --git a/test_replays/3.16/AbyssalReef.SC2Replay b/test_replays/3.16/AbyssalReef.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..b5ef3e2e5baeb19f7e0f07b2719e900d22ef3437 GIT binary patch literal 71972 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 Date: Sun, 12 Nov 2017 17:49:13 -0500 Subject: [PATCH 115/116] Corrected mispelling of 'collection' --- docs/source/articles/whatsinareplay.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/articles/whatsinareplay.rst b/docs/source/articles/whatsinareplay.rst index a9b690c6..5acf6ea4 100644 --- a/docs/source/articles/whatsinareplay.rst +++ b/docs/source/articles/whatsinareplay.rst @@ -41,7 +41,7 @@ This file was introduced in 2.0.4 and is unncessary for the Starcraft II to repr What isn't in a replay? -------------------------- -Replays are specifically designed to only include data essential to recreate the game. Game state is not recorded because the game engine can recreate it based off the other information. That means no player resource counts, colleciton rates, supply values, vision, unit positions, unit deaths, etc. Information that you are super interested in probably is not directly recorded. Fortunately since 2.0.4 tracker events now record some of this information; prior to that patch we had to run our own simulations to guess at most of the data. +Replays are specifically designed to only include data essential to recreate the game. Game state is not recorded because the game engine can recreate it based off the other information. That means no player resource counts, collection rates, supply values, vision, unit positions, unit deaths, etc. Information that you are super interested in probably is not directly recorded. Fortunately since 2.0.4 tracker events now record some of this information; prior to that patch we had to run our own simulations to guess at most of the data. The other important aspect of this is that instead of completely describing all of the game data (unit data, ability data, map info, etc), replays maintain a list of dependencies. These dependencies might look like this: From ddf2a3e2044d90400dc6679e1457ef767c82e989 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 27 Apr 2018 09:59:01 +0200 Subject: [PATCH 116/116] build 64469 support --- sc2reader/readers.py | 41 +++++++++++++++++++++++++++++++++++++++++ sc2reader/resources.py | 3 ++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 26a2279c..237c4512 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1876,6 +1876,47 @@ def trigger_ping_event(self, data): option=data.read_uint32() - 2147483648, ) +class GameEventsReader_64469(GameEventsReader_38749): + + def command_event(self, data): + return dict( + flags=data.read_bits(26), + ability=dict( + ability_link=data.read_uint16(), + ability_command_index=data.read_bits(5), + ability_command_data=data.read_uint8() if data.read_bool() else None, + ) if data.read_bool() else None, + data={ # Choice + 0: lambda: ('None', None), + 1: lambda: ('TargetPoint', dict( + point=dict( + x=data.read_bits(20), + y=data.read_bits(20), + z=data.read_uint32() - 2147483648, + ) + )), + 2: lambda: ('TargetUnit', dict( + flags=data.read_uint16(), + timer=data.read_uint8(), + unit_tag=data.read_uint32(), + unit_link=data.read_uint16(), + control_player_id=data.read_bits(4) if data.read_bool() else None, + upkeep_player_id=data.read_bits(4) if data.read_bool() else None, + point=dict( + x=data.read_bits(20), + y=data.read_bits(20), + z=data.read_uint32() - 2147483648, + ), + )), + 3: lambda: ('Data', dict( + data=data.read_uint32() + )), + }[data.read_bits(2)](), + sequence=data.read_uint32() + 1, + other_unit_tag=data.read_uint32() if data.read_bool() else None, + unit_group=data.read_uint32() if data.read_bool() else None, + ) + class TrackerEventsReader(object): def __init__(self): diff --git a/sc2reader/resources.py b/sc2reader/resources.py index a494f428..046849a5 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -585,7 +585,8 @@ def register_default_readers(self): self.register_reader('replay.game.events', readers.GameEventsReader_36442(), lambda r: 36442 <= r.base_build < 38215) self.register_reader('replay.game.events', readers.GameEventsReader_38215(), lambda r: 38215 <= r.base_build < 38749) self.register_reader('replay.game.events', readers.GameEventsReader_38749(), lambda r: 38749 <= r.base_build < 38996) - self.register_reader('replay.game.events', readers.GameEventsReader_38996(), lambda r: 38996 <= r.base_build) + self.register_reader('replay.game.events', readers.GameEventsReader_38996(), lambda r: 38996 <= r.base_build < 64469) + self.register_reader('replay.game.events', readers.GameEventsReader_64469(), lambda r: 64469 <= r.base_build) self.register_reader('replay.game.events', readers.GameEventsReader_HotSBeta(), lambda r: r.versions[1] == 2 and r.build < 24247) def register_default_datapacks(self):

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%0D2_Sa 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 IlGYFY3sV=Xi2wiq literal 0 HcmV?d00001 diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 81c5eadd..2b3b28f1 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -15,6 +15,7 @@ sc2reader.log_utils.log_to_console("INFO") +print("YO YO YO THIS IS FOR REAL") class TestReplays(unittest.TestCase): @@ -369,6 +370,8 @@ def test_daedalus_point(self): def test_reloaded(self): replay = sc2reader.load_replay("test_replays/2.1.3.28667/Habitation Station LE (54).SC2Replay") + def test_214(self): + replay = sc2reader.load_replay("test_replays/2.1.4/Catallena LE.SC2Replay", load_level=4) class TestGameEngine(unittest.TestCase): From 6f30900c70a4d5ac95abb11bf98fe8a61f949cad Mon Sep 17 00:00:00 2001 From: David Joerg Date: Fri, 26 Sep 2014 12:09:07 -0400 Subject: [PATCH 039/116] fix for 2.1.4 --- sc2reader/readers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index e3434fd7..65cc3d5e 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -95,6 +95,7 @@ def __call__(self, data, replay): ai_build=data.read_bits(7) if replay.base_build >= 23925 else None, handicap=data.read_bits(7), observe=data.read_bits(2), + logo_index=data.read_uint32() if replay.base_build >= 32283 else None, working_set_slot_id=data.read_uint8() if replay.base_build >= 24764 and data.read_bool() else None, rewards=[data.read_uint32() for i in range(data.read_bits(6 if replay.base_build >= 24764 else 5))], toon_handle=data.read_aligned_string(data.read_bits(7)) if replay.base_build >= 17266 else None, From 6580ebb3584bdbdbd65f8feb9a9089d68b809cb9 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 28 Dec 2014 23:26:42 -0500 Subject: [PATCH 040/116] Fix various issues related to issue #180. --- sc2reader/engine/plugins/context.py | 4 ++-- sc2reader/scripts/sc2parse.py | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index e978ea1f..4bead0b9 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -28,7 +28,7 @@ def handleCommandEvent(self, event, replay): if not getattr(replay, 'marked_error', None): replay.marked_error = True event.logger.error(replay.filename) - event.logger.error("Release String: "+replay.release_string) + event.logger.error("Release String: " + replay.release_string) for player in replay.players: event.logger.error("\t{0}".format(player)) @@ -254,7 +254,7 @@ def load_message_game_player(self, event, replay): event.player = replay.human[event.pid] event.player.events.append(event) elif event.pid != 16: - self.logger.error("Bad pid ({0}) for event {1} at {2} [{3}].".format(event.pid, event.__class__, Length(seconds=event.second), event.frames)) + self.logger.error("Bad pid ({0}) for event {1} at {2} [{3}].".format(event.pid, event.__class__, Length(seconds=event.second), event.frame)) else: pass # This is a global event diff --git a/sc2reader/scripts/sc2parse.py b/sc2reader/scripts/sc2parse.py index d0808340..8885c671 100755 --- a/sc2reader/scripts/sc2parse.py +++ b/sc2reader/scripts/sc2parse.py @@ -66,10 +66,10 @@ def main(): print("") print(path) print('{build} - {real_type} on {map_name} - Played {start_time}'.format(**e.replay.__dict__)) - print('[ERROR]', e.message) + print('[ERROR] {}', e) for event in e.game_events[-5:]: print('{0} - {1}'.format(hex(event.type), event.bytes.encode('hex'))) - print(e.buffer.read_range(e.location, e.location+50).encode('hex')) + print(e.buffer.read_range(e.location, e.location + 50).encode('hex')) print except Exception as e: print("") @@ -77,20 +77,20 @@ def main(): try: replay = sc2reader.load_replay(path, debug=True, load_level=2) print('{build} - {real_type} on {map_name} - Played {start_time}'.format(**replay.__dict__)) - print('[ERROR] {0}'.format(e.message)) + print('[ERROR] {0}'.format(e)) for pid, attributes in replay.attributes.items(): print("{0} {1}".format(pid, attributes)) - for pid, info in enumerate(replay.raw_data['replay.details'].players): + for pid, info in enumerate(replay.players): print("{0} {1}".format(pid, info)) - for message in replay.raw_data['replay.message.events'].messages: + for message in replay.messages: print("{0} {1}".format(message.pid, message.text)) traceback.print_exc() print("") except Exception as e2: replay = sc2reader.load_replay(path, debug=True, load_level=0) print('Total failure parsing {release_string}'.format(**replay.__dict__)) - print('[ERROR] {0}'.format(e.message)) - print('[ERROR] {0}'.format(e2.message)) + print('[ERROR] {0}'.format(e)) + print('[ERROR] {0}'.format(e2)) traceback.print_exc() print From 0dbe56191137c773ff717842ccbc9b28b3b4d677 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 29 Dec 2014 02:29:05 -0500 Subject: [PATCH 041/116] Fix gameheart plugin handling of teams and observers. Closes #174. --- sc2reader/engine/plugins/gameheart.py | 3 +++ sc2reader/objects.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sc2reader/engine/plugins/gameheart.py b/sc2reader/engine/plugins/gameheart.py index 2812f5b1..08bfc67e 100644 --- a/sc2reader/engine/plugins/gameheart.py +++ b/sc2reader/engine/plugins/gameheart.py @@ -69,6 +69,9 @@ def fix_events(self, replay, start_frame): def fix_entities(self, replay, actual_players): # Change the players that aren't playing into observers for p in [p for p in replay.players if p.pid not in actual_players]: + # Fix the slot data to be accurate + p.slot_data['observe'] = 1 + p.slot_data['team_id'] = None obs = Observer(p.sid, p.slot_data, p.uid, p.init_data, p.pid) # Because these obs start the game as players the client diff --git a/sc2reader/objects.py b/sc2reader/objects.py index 684c8180..711203a6 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -101,7 +101,9 @@ def __init__(self, sid, slot_data): self.handicap = slot_data['handicap'] #: The entity's team number. None for observers - self.team_id = slot_data['team_id']+1 + self.team_id = None + if slot_data['team_id'] is not None: + self.team_id = slot_data['team_id'] + 1 #: A flag indicating if the person is a human or computer #: Really just a shortcut for isinstance(entity, User) From 83d38092ad2c80f86a1b4324022038f1a4f044e2 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 29 Dec 2014 02:30:38 -0500 Subject: [PATCH 042/116] Add option to print observers to sc2printer. --- sc2reader/scripts/sc2printer.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/sc2reader/scripts/sc2printer.py b/sc2reader/scripts/sc2printer.py index 5a1bf94e..c780d16e 100755 --- a/sc2reader/scripts/sc2printer.py +++ b/sc2reader/scripts/sc2printer.py @@ -28,6 +28,11 @@ def printReplay(filepath, arguments): print(" Team {0}\t{1} ({2})".format(team.number, team.players[0].name, team.players[0].pick_race[0])) for player in team.players[1:]: print(" \t{0} ({1})".format(player.name, player.pick_race[0])) + if arguments.observers: + print(" Observers:") + for observer in replay.observers: + print(" {0}".format(observer.name)) + if arguments.messages: print(" Messages:") for message in replay.messages: @@ -43,9 +48,9 @@ def printReplay(filepath, arguments): print("\nVersion {0} replay:\n\t{1}".format(e.replay.release_string, e.replay.filepath)) print("\t{0}, Type={1:X}".format(e.msg, e.type)) print("\tPrevious Event: {0}".format(prev.name)) - print("\t\t"+prev.bytes.encode('hex')) + print("\t\t" + prev.bytes.encode('hex')) print("\tFollowing Bytes:") - print("\t\t"+e.buffer.read_range(e.location, e.location+30).encode('hex')) + print("\t\t" + e.buffer.read_range(e.location, e.location + 30).encode('hex')) print("Error with '{0}': ".format(filepath)) print(e) except Exception as e: @@ -92,13 +97,15 @@ def main(): shared_args = parser.add_argument_group('Shared Arguments') shared_args.add_argument('--date', action="store_true", default=True, - help="print(game date [default on]") + help="print game date [default on]") shared_args.add_argument('--length', action="store_true", default=False, - help="print(game duration mm:ss in game time (not real time) [default off]") + help="print game duration mm:ss in game time (not real time) [default off]") shared_args.add_argument('--map', action="store_true", default=True, - help="print(map name [default on]") + help="print map name [default on]") shared_args.add_argument('--teams', action="store_true", default=True, - help="print(teams, their players, and the race matchup [default on]") + help="print teams, their players, and the race matchup [default on]") + shared_args.add_argument('--observers', action="store_true", default=True, + help="print observers") replay_args = parser.add_argument_group('Replay Options') replay_args.add_argument('--messages', action="store_true", default=False, From 26c569e501bdac7af9a84fd342bdebceb4d62f55 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 29 Dec 2014 16:09:55 -0500 Subject: [PATCH 043/116] Harden up the code for processing s2ma files. --- sc2reader/resources.py | 60 ++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 44a26c7a..50b47623 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -612,17 +612,20 @@ def __getstate__(self): class Map(Resource): url_template = 'http://{0}.depot.battle.net:1119/{1}.s2ma' - #: The localized (only enUS supported right now) map name - name = str() + def __init__(self, map_file, filename=None, region=None, map_hash=None, **options): + super(Map, self).__init__(map_file, filename, **options) - #: The map's author - author = str() + #: The localized (only enUS supported right now) map name. + self.name = str() - #: The map description as written by author - description = str() + #: The localized (only enUS supported right now) map author. + self.author = str() - def __init__(self, map_file, filename=None, region=None, map_hash=None, **options): - super(Map, self).__init__(map_file, filename, **options) + #: The localized (only enUS supported right now) map description. + self.description = str() + + #: The localized (only enUS supported right now) map website. + self.website = str() #: The unique hash used to identify this map on bnet's depots. self.hash = map_hash @@ -643,9 +646,9 @@ def __init__(self, map_file, filename=None, region=None, map_hash=None, **option # Clearly this isn't a great solution but we can't be throwing exceptions # just because US English wasn't a concern of the map author. # TODO: Make this work regardless of the localizations available. - game_strings = self.archive.read_file('enUS.SC2Data\LocalizedData\GameStrings.txt').decode('utf8') - if game_strings: - for line in game_strings.split('\r\n'): + game_strings_file = self.archive.read_file('enUS.SC2Data\LocalizedData\GameStrings.txt') + if game_strings_file: + for line in game_strings_file.decode('utf8').split('\r\n'): if len(line) == 0: continue @@ -660,21 +663,26 @@ def __init__(self, map_file, filename=None, region=None, map_hash=None, **option self.website = value #: A reference to the map's :class:`~sc2reader.objects.MapInfo` object - self.map_info = MapInfo(self.archive.read_file('MapInfo')) - - doc_info = ElementTree.fromstring(self.archive.read_file('DocumentInfo').decode('utf8')) - - icon_path_node = doc_info.find('Icon/Value') - #: (Optional) The path to the icon for the map, relative to the archive root - self.icon_path = icon_path_node.text if icon_path_node is not None else None - - #: (Optional) The icon image for the map in tga format - self.icon = self.archive.read_file(self.icon_path) if self.icon_path is not None else None - - #: A list of module names this map depends on - self.dependencies = list() - for dependency_node in doc_info.findall('Dependencies/Value'): - self.dependencies.append(dependency_node.text) + self.map_info = None + map_info_file = self.archive.read_file('MapInfo') + if map_info_file: + self.map_info = MapInfo(map_info_file) + + doc_info_file = self.archive.read_file('DocumentInfo') + if doc_info_file: + doc_info = ElementTree.fromstring(doc_info_file.decode('utf8')) + + icon_path_node = doc_info.find('Icon/Value') + #: (Optional) The path to the icon for the map, relative to the archive root + self.icon_path = icon_path_node.text if icon_path_node is not None else None + + #: (Optional) The icon image for the map in tga format + self.icon = self.archive.read_file(self.icon_path) if self.icon_path is not None else None + + #: A list of module names this map depends on + self.dependencies = list() + for dependency_node in doc_info.findall('Dependencies/Value'): + self.dependencies.append(dependency_node.text) @classmethod def get_url(cls, region, map_hash): From 6c48e8a93216c9371b6b935029d1c8e92da850dd Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 29 Dec 2014 17:15:16 -0500 Subject: [PATCH 044/116] This is a polish translation. --- sc2reader/constants.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sc2reader/constants.py b/sc2reader/constants.py index 7b701dee..43c2d66e 100644 --- a/sc2reader/constants.py +++ b/sc2reader/constants.py @@ -23,7 +23,7 @@ '프로토스': 'Protoss', '저그': 'Zerg', - # ??eu + # plPL 'Terranie': 'Terran', 'Protosi': 'Protoss', 'Zergi': 'Zerg', @@ -126,6 +126,7 @@ 1: 'kr', 2: 'tw', }, + # Taiwan - appear to both map to same place 'tw': { 1: 'kr', From a194b677c5f702c6d122cb956a076a39b324478f Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Wed, 31 Dec 2014 14:06:55 -0500 Subject: [PATCH 045/116] Remove PersonDict and AttributeDict implementations. --- sc2reader/factories/plugins/replay.py | 2 +- sc2reader/factories/sc2factory.py | 4 +-- sc2reader/readers.py | 2 +- sc2reader/resources.py | 30 ++++++++-------- sc2reader/utils.py | 52 ++------------------------- 5 files changed, 22 insertions(+), 68 deletions(-) diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index f6b19e79..ccf29401 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -123,7 +123,7 @@ def APMTracker(replay): @plugin def SelectionTracker(replay): - debug = replay.opt.debug + debug = replay.opt['debug'] logger = log_utils.get_logger(SelectionTracker) for person in replay.entities: diff --git a/sc2reader/factories/sc2factory.py b/sc2reader/factories/sc2factory.py index 7518767b..36020b2d 100644 --- a/sc2reader/factories/sc2factory.py +++ b/sc2reader/factories/sc2factory.py @@ -156,7 +156,7 @@ def _get_plugins(self, cls): return plugins def _get_options(self, cls, **new_options): - options = utils.AttributeDict() + options = dict() for opt_cls, cls_options in self.options.items(): if issubclass(cls, opt_cls): options.update(cls_options) @@ -175,7 +175,7 @@ def _load_resources(self, resources, options=None, **new_options): yield self._load_resource(resource, options=options) def load_remote_resource_contents(self, resource, **options): - self.logger.info("Fetching remote resource: "+resource) + self.logger.info("Fetching remote resource: " + resource) return urlopen(resource).read() def load_local_resource_contents(self, location, **options): diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 65cc3d5e..ad539a0c 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -297,7 +297,7 @@ def __call__(self, data, replay): # method short cuts, avoid dict lookups EVENT_DISPATCH = self.EVENT_DISPATCH - debug = replay.opt.debug + debug = replay.opt['debug'] tell = data.tell read_frames = data.read_frames read_bits = data.read_bits diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 50b47623..0aedcffd 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -23,7 +23,7 @@ class Resource(object): def __init__(self, file_object, filename=None, factory=None, **options): self.factory = factory - self.opt = utils.AttributeDict(options) + self.opt = options self.logger = log_utils.get_logger(self.__class__) self.filename = filename or getattr(file_object, 'name', 'Unavailable') @@ -137,7 +137,7 @@ class Replay(Resource): #: A dual key dict mapping player names and numbers to #: :class:`Player` objects - player = utils.PersonDict() + player = dict() #: A list of :class:`Observer` objects from the game observers = list() @@ -148,7 +148,7 @@ class Replay(Resource): #: A dual key dict mapping :class:`Person` object to their #: person id's and names - person = utils.PersonDict() + person = dict() #: A list of :class:`Person` objects from the game representing #: only the human players from the :attr:`people` list @@ -214,11 +214,11 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en self.events = list() self.teams, self.team = list(), dict() - self.player = utils.PersonDict() - self.observer = utils.PersonDict() - self.human = utils.PersonDict() - self.computer = utils.PersonDict() - self.entity = utils.PersonDict() + self.player = dict() + self.observer = dict() + self.human = dict() + self.computer = dict() + self.entity = dict() self.players = list() self.observers = list() # Unordered list of Observer @@ -599,7 +599,7 @@ def _read_data(self, data_file, reader): data = utils.extract_data_file(data_file, self.archive) if data: self.raw_data[data_file] = reader(data, self) - elif self.opt.debug and data_file not in ['replay.message.events', 'replay.tracker.events']: + elif self.opt['debug'] and data_file not in ['replay.message.events', 'replay.tracker.events']: raise ValueError("{0} not found in archive".format(data_file)) def __getstate__(self): @@ -862,7 +862,7 @@ def load_translations(self): self.lang_sheets = dict() self.translations = dict() for lang, files in self.localization_urls.items(): - if lang != self.opt.lang: + if lang != self.opt['lang']: continue sheets = list() @@ -873,9 +873,9 @@ def load_translations(self): for uid, (sheet, item) in self.id_map.items(): if sheet < len(sheets) and item in sheets[sheet]: translation[uid] = sheets[sheet][item] - elif self.opt.debug: + elif self.opt['debug']: msg = "No {0} translation for sheet {1}, item {2}" - raise SC2ReaderLocalizationError(msg.format(self.opt.lang, sheet, item)) + raise SC2ReaderLocalizationError(msg.format(self.opt['lang'], sheet, item)) else: translation[uid] = "Unknown" @@ -883,7 +883,7 @@ def load_translations(self): self.translations[lang] = translation def load_map_info(self): - map_strings = self.lang_sheets[self.opt.lang][-1] + map_strings = self.lang_sheets[self.opt['lang']][-1] self.map_name = map_strings[1] self.map_description = map_strings[2] self.map_tileset = map_strings[3] @@ -942,7 +942,7 @@ def use_property(prop, player=None): activated[(prop.id, player)] = use return use - translation = self.translations[self.opt.lang] + translation = self.translations[self.opt['lang']] for uid, prop in properties.items(): name = translation.get(uid, "Unknown") if prop.is_lobby: @@ -956,7 +956,7 @@ def use_property(prop, player=None): self.player_settings[index][name] = translation[(uid, value)] def load_player_stats(self): - translation = self.translations[self.opt.lang] + translation = self.translations[self.opt['lang']] stat_items = sum([p[0] for p in self.parts[3:]], []) diff --git a/sc2reader/utils.py b/sc2reader/utils.py index e728c983..44634de7 100644 --- a/sc2reader/utils.py +++ b/sc2reader/utils.py @@ -48,57 +48,11 @@ def __str__(self): return self.url -class PersonDict(dict): - """ - Deprecated! - - Supports lookup on both the player name and player id - - :: - - person = PersonDict() - person[1] = Player(1,"ShadesofGray") - me = person.name("ShadesofGray") - del person[me.pid] - - Delete is supported on the player id only - """ - def __init__(self): - super(PersonDict, self).__init__() - self._key_map = dict() - - def name(self, player_name): - """ deprecated because it is possible for multiple players to have the same name. """ - return self[self._key_map[player_name]] - - def __setitem__(self, key, value): - self._key_map[value.name] = key - super(PersonDict, self).__setitem__(key, value) - - def windows_to_unix(windows_time): # This windows timestamp measures the number of 100 nanosecond periods since # January 1st, 1601. First we subtract the number of nanosecond periods from # 1601-1970, then we divide by 10^7 to bring it back to seconds. - return int((windows_time-116444735995904000)/10**7) - - -class AttributeDict(dict): - """ - Support access to dictionary items via the dot syntax as though they - were class attributes. Also support setting new keys via dot syntax. - """ - def __getattr__(self, name): - try: - return self[name] - except KeyError: - raise AttributeError('No such attribute {0}'.format(name)) - - def __setattr__(self, name, value): - self[name] = value - - def copy(self): - return AttributeDict(self.items()) + return int((windows_time - 116444735995904000) / 10 ** 7) @loggable @@ -252,12 +206,12 @@ class Length(timedelta): @property def hours(self): """ The number of hours in represented. """ - return self.seconds//3600 + return self.seconds // 3600 @property def mins(self): """ The number of minutes in excess of the hours. """ - return self.seconds//60 % 60 + return self.seconds // 60 % 60 @property def secs(self): From 3e1cea3759a912775f45d45ab6f5eb12ee307f1f Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 5 Jan 2015 10:53:50 -0500 Subject: [PATCH 046/116] Remove dead code. --- sc2reader/utils.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sc2reader/utils.py b/sc2reader/utils.py index 44634de7..2ee3d382 100644 --- a/sc2reader/utils.py +++ b/sc2reader/utils.py @@ -151,12 +151,6 @@ def recovery_attempt(): raise MPQError("Unable to extract file: {0}".format(data_file), e) -def merged_dict(a, b): - c = a.copy() - c.update(b) - return c - - def get_files(path, exclude=list(), depth=-1, followlinks=False, extension=None, **extras): """ Retrieves files from the given path with configurable behavior. From 722ae4f16430c023bafa32fa69a1773909b1f867 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Mon, 5 Jan 2015 10:54:47 -0500 Subject: [PATCH 047/116] Bump version to a pre-release (for clarity). --- sc2reader/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sc2reader/__init__.py b/sc2reader/__init__.py index 040febcb..8ae84731 100644 --- a/sc2reader/__init__.py +++ b/sc2reader/__init__.py @@ -20,7 +20,7 @@ """ from __future__ import absolute_import, print_function, unicode_literals, division -__version__ = "0.6.4" +__version__ = "0.7.0-pre" import os import sys diff --git a/setup.py b/setup.py index c9dee97d..9e4b3f82 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setuptools.setup( license="MIT", name="sc2reader", - version='0.6.4', + version='0.7.0-pre', keywords=["starcraft 2", "sc2", "replay", "parser"], description="Utility for parsing Starcraft II replay files", long_description=open("README.rst").read()+"\n\n"+open("CHANGELOG.rst").read(), From c5d22d68ba802f36068ed7199cc157ee0521819b Mon Sep 17 00:00:00 2001 From: Kevin Leung Date: Wed, 11 Feb 2015 10:51:15 -0800 Subject: [PATCH 048/116] decoding this so that it reads as a string not bytes in python 3 --- sc2reader/events/tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 5466d4d5..41b5c2f2 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -442,7 +442,7 @@ def __init__(self, frames, data, build): self.player = None #: The name of the upgrade - self.upgrade_type_name = data[1] + self.upgrade_type_name = data[1].decode('utf8') #: The number of times this upgrade as been researched self.count = data[2] From 20156ecd41d03cb581071dc74e23b63a3fffe2f0 Mon Sep 17 00:00:00 2001 From: Graylin Kim Date: Sun, 15 Mar 2015 13:46:32 -0400 Subject: [PATCH 049/116] Fix ancient typo in struct decoder. refs #184 --- sc2reader/decoders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2reader/decoders.py b/sc2reader/decoders.py index 63324649..b2ff35f9 100644 --- a/sc2reader/decoders.py +++ b/sc2reader/decoders.py @@ -368,7 +368,7 @@ def read_struct(self, datatype=None): data = self._buffer.read_bytes(4) # self.read_uint32() elif datatype == 0x08: # u64 - data = self._buffer.read_unit64() + data = self._buffer.read_uint64() elif datatype == 0x09: # vint data = self.read_vint() From 2139abc8b7c4fa27f74b26919b0c9a2d367a4163 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 7 Oct 2015 10:25:40 -0400 Subject: [PATCH 050/116] remove debugging print statement --- test_replays/test_all.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/test_replays/test_all.py b/test_replays/test_all.py index 2b3b28f1..32fd00e9 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -15,8 +15,6 @@ sc2reader.log_utils.log_to_console("INFO") -print("YO YO YO THIS IS FOR REAL") - class TestReplays(unittest.TestCase): def test_teams(self): From d69feb4e0be597581040588193579d29e8241431 Mon Sep 17 00:00:00 2001 From: dsjoerg Date: Wed, 7 Oct 2015 10:26:01 -0400 Subject: [PATCH 051/116] add failing test for 3.0 --- test_replays/3.0.0.38215/first.SC2Replay | Bin 0 -> 82735 bytes test_replays/test_all.py | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 test_replays/3.0.0.38215/first.SC2Replay diff --git a/test_replays/3.0.0.38215/first.SC2Replay b/test_replays/3.0.0.38215/first.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..373abc281c175d761b1cd76b0e9e0847fa6351bd GIT binary patch literal 82735 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%0Dq1U`;qn$u36EtnP`9ah;J{3wQ2J1>SbOQSs)?ku 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