From e82ba13b8b192a633330c190c9b771f628b024bd Mon Sep 17 00:00:00 2001 From: FlightControl Date: Mon, 6 Jun 2016 13:43:32 +0200 Subject: [PATCH] Publishing a working version :-) --- Moose Development/Moose/Base.lua | 32 +- Moose Development/Moose/Database.lua | 61 +- Moose Development/Moose/Point.lua | 195 + Moose Development/Moose/Spawn.lua | 13 +- Moose Development/Moose/Static.lua | 81 + Moose Development/Moose/Unit.lua | 2 +- Moose Development/Moose/Zone.lua | 130 +- .../l10n/DEFAULT/Moose.lua | 17619 +--------------- Moose Mission Setup/Moose.lua | 17619 +--------------- .../Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz | Bin 204111 -> 98334 bytes .../Moose_Test_DATABASE.miz | Bin 143859 -> 38082 bytes .../Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz | Bin 139295 -> 33518 bytes .../Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz | Bin 164950 -> 59173 bytes .../Moose_Test_MISSILETRAINER.miz | Bin 224244 -> 118467 bytes .../Moose_Test_SEAD/MOOSE_Test_SEAD.miz | Bin 131548 -> 25771 bytes .../Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz | Bin 160750 -> 54986 bytes .../MOOSE_Test_SPAWN_Repeat.miz | Bin 131109 -> 25332 bytes .../MOOSE_Test_TASK_Pickup_and_Deploy.miz | Bin 137710 -> 31933 bytes .../Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz | Bin 146729 -> 40952 bytes .../Moose_Test_ZONE/Moose_Test_ZONE.lua | 19 + .../Moose_Test_ZONE/Moose_Test_ZONE.miz | Bin 0 -> 20873 bytes .../Moose_Test_ZONE_POLYGON.lua | 14 +- .../Moose_Test_ZONE_POLYGON.miz | Bin 126214 -> 21605 bytes .../Moose_Test_ZONE_RADIUS.lua | 20 + .../Moose_Test_ZONE_RADIUS.miz | Bin 0 -> 21030 bytes .../Moose_Test_ZONE_UNIT.lua | 25 + .../Moose_Test_ZONE_UNIT.miz | Bin 0 -> 20909 bytes Moose Training/Documentation/Airbase.html | 2 + Moose Training/Documentation/Base.html | 34 +- Moose Training/Documentation/CARGO.html | 2 + Moose Training/Documentation/CleanUp.html | 2 + Moose Training/Documentation/Client.html | 2 + Moose Training/Documentation/DCSAirbase.html | 2 + .../Documentation/DCSCoalitionObject.html | 2 + Moose Training/Documentation/DCSCommand.html | 2 + .../Documentation/DCSController.html | 2 + Moose Training/Documentation/DCSGroup.html | 2 + Moose Training/Documentation/DCSObject.html | 2 + Moose Training/Documentation/DCSTask.html | 2 + Moose Training/Documentation/DCSTypes.html | 2 + Moose Training/Documentation/DCSUnit.html | 2 + Moose Training/Documentation/DCSWorld.html | 2 + Moose Training/Documentation/DCStimer.html | 2 + Moose Training/Documentation/DEPLOYTASK.html | 2 + .../Documentation/DESTROYBASETASK.html | 2 + .../Documentation/DESTROYGROUPSTASK.html | 2 + .../Documentation/DESTROYRADARSTASK.html | 2 + .../Documentation/DESTROYUNITTYPESTASK.html | 2 + Moose Training/Documentation/Database.html | 162 +- Moose Training/Documentation/Escort.html | 2 + Moose Training/Documentation/Event.html | 2 + Moose Training/Documentation/GOHOMETASK.html | 2 + Moose Training/Documentation/Group.html | 2 + Moose Training/Documentation/GroupSet.html | 2 + Moose Training/Documentation/MISSION.html | 2 + Moose Training/Documentation/MOVEMENT.html | 2 + Moose Training/Documentation/Menu.html | 2 + Moose Training/Documentation/Message.html | 2 + .../Documentation/MissileTrainer.html | 2 + Moose Training/Documentation/NOTASK.html | 2 + Moose Training/Documentation/PICKUPTASK.html | 2 + Moose Training/Documentation/Point.html | 826 + Moose Training/Documentation/ROUTETASK.html | 2 + Moose Training/Documentation/STAGE.html | 2 + Moose Training/Documentation/Scheduler.html | 2 + Moose Training/Documentation/Scoring.html | 2 + Moose Training/Documentation/Sead.html | 2 + Moose Training/Documentation/Set.html | 2 + Moose Training/Documentation/Spawn.html | 2 + Moose Training/Documentation/Static.html | 253 + .../Documentation/StaticObject.html | 2 + Moose Training/Documentation/TASK.html | 2 + Moose Training/Documentation/Unit.html | 2 + Moose Training/Documentation/UnitSet.html | 2 + Moose Training/Documentation/Zone.html | 182 +- Moose Training/Documentation/env.html | 2 + Moose Training/Documentation/index.html | 14 + Moose Training/Documentation/land.html | 2 + Moose Training/Documentation/routines.html | 2 + ...art 1 - Use zones with GROUP and UNIT.pptx | Bin 788485 -> 675898 bytes 80 files changed, 2137 insertions(+), 35256 deletions(-) create mode 100644 Moose Development/Moose/Point.lua create mode 100644 Moose Development/Moose/Static.lua create mode 100644 Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua create mode 100644 Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz create mode 100644 Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua create mode 100644 Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz create mode 100644 Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.lua create mode 100644 Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz create mode 100644 Moose Training/Documentation/Point.html create mode 100644 Moose Training/Documentation/Static.html diff --git a/Moose Development/Moose/Base.lua b/Moose Development/Moose/Base.lua index 3586673d1..10f5cf4dc 100644 --- a/Moose Development/Moose/Base.lua +++ b/Moose Development/Moose/Base.lua @@ -380,12 +380,12 @@ end --- Trace a function call. Must be at the beginning of the function logic. -- @param #BASE self -- @param Arguments A #table or any field. -function BASE:F( Arguments ) +function BASE:F( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) local Function = "function" if DebugInfoCurrent.name then @@ -408,8 +408,11 @@ end -- @param Arguments A #table or any field. function BASE:F2( Arguments ) + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + if _TraceLevel >= 2 then - self:F( Arguments ) + self:F( Arguments, DebugInfoCurrent, DebugInfoFrom ) end end @@ -419,8 +422,11 @@ end -- @param Arguments A #table or any field. function BASE:F3( Arguments ) + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + if _TraceLevel >= 3 then - self:F( Arguments ) + self:F( Arguments, DebugInfoCurrent, DebugInfoFrom ) end end @@ -428,12 +434,12 @@ end --- Trace a function logic. Can be anywhere within the function logic. -- @param #BASE self -- @param Arguments A #table or any field. -function BASE:T( Arguments ) +function BASE:T( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) + local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) + local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) local Function = "function" if DebugInfoCurrent.name then @@ -456,8 +462,11 @@ end -- @param Arguments A #table or any field. function BASE:T2( Arguments ) + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + if _TraceLevel >= 2 then - self:T( Arguments ) + self:T( Arguments, DebugInfoCurrent, DebugInfoFrom ) end end @@ -467,8 +476,11 @@ end -- @param Arguments A #table or any field. function BASE:T3( Arguments ) + local DebugInfoCurrent = debug.getinfo( 2, "nl" ) + local DebugInfoFrom = debug.getinfo( 3, "l" ) + if _TraceLevel >= 3 then - self:T( Arguments ) + self:T( Arguments, DebugInfoCurrent, DebugInfoFrom ) end end diff --git a/Moose Development/Moose/Database.lua b/Moose Development/Moose/Database.lua index 66febcae9..656df9bf0 100644 --- a/Moose Development/Moose/Database.lua +++ b/Moose Development/Moose/Database.lua @@ -36,9 +36,11 @@ Include.File( "Routines" ) Include.File( "Base" ) Include.File( "Menu" ) Include.File( "Group" ) +Include.File( "Static" ) Include.File( "Unit" ) Include.File( "Event" ) Include.File( "Client" ) +Include.File( "Scheduler" ) --- DATABASE class @@ -54,7 +56,9 @@ DATABASE = { }, DCSUnits = {}, DCSGroups = {}, + DCSStatics = {}, UNITS = {}, + STATICS = {}, GROUPS = {}, PLAYERS = {}, PLAYERSALIVE = {}, @@ -100,7 +104,8 @@ function DATABASE:New() _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) self:_RegisterTemplates() - self:_RegisterDatabase() + self:_RegisterGroupsAndUnits() + self:_RegisterStatics() self:_RegisterPlayers() return self @@ -133,6 +138,32 @@ function DATABASE:DeleteUnit( DCSUnitName ) self.DCSUnits[DCSUnitName] = nil end +--- Adds a Static based on the Static Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddStatic( DCSStatic, DCSStaticName ) + + self.DCSStatics[DCSStaticName] = DCSStatic + self.STATICS[DCSStaticName] = STATIC:Register( DCSStaticName ) +end + + +--- Deletes a Static from the DATABASE based on the Static Name. +-- @param #DATABASE self +function DATABASE:DeleteStatic( DCSStaticName ) + + self.DCSStatics[DCSStaticName] = nil +end + +--- Finds a STATIC based on the StaticName. +-- @param #DATABASE self +-- @param #string StaticName +-- @return Static#STATIC The found STATIC. +function DATABASE:FindStatic( StaticName ) + + local StaticFound = self.STATICS[StaticName] + return StaticFound +end + --- Finds a CLIENT based on the ClientName. -- @param #DATABASE self @@ -220,6 +251,8 @@ function DATABASE:Spawn( SpawnTemplate ) SpawnTemplate.SpawnCategoryID = nil self:_RegisterTemplate( SpawnTemplate ) + + self:T3( SpawnTemplate ) coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) -- Restore @@ -227,7 +260,6 @@ function DATABASE:Spawn( SpawnTemplate ) SpawnTemplate.SpawnCountryID = SpawnCountryID SpawnTemplate.SpawnCategoryID = SpawnCategoryID - local SpawnGroup = GROUP:Register( SpawnTemplate.name ) return SpawnGroup end @@ -320,10 +352,10 @@ function DATABASE:_RegisterPlayers() end ---- Private method that registers all datapoints within in the mission. +--- Private method that registers all Groups and Units within in the mission. -- @param #DATABASE self -- @return #DATABASE self -function DATABASE:_RegisterDatabase() +function DATABASE:_RegisterGroupsAndUnits() local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } for CoalitionId, CoalitionData in pairs( CoalitionsData ) do @@ -356,6 +388,27 @@ function DATABASE:_RegisterDatabase() return self end +function DATABASE:_RegisterStatics() + + local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSStaticId, DCSStatic in pairs( CoalitionData ) do + + if DCSStatic:isExist() then + local DCSStaticName = DCSStatic:getName() + + self:E( { "Register Static:", DCSStatic, DCSStaticName } ) + self:AddStatic( DCSStatic, DCSStaticName ) + else + self:E( { "Static does not exist: ", DCSStatic } ) + end + end + end + + return self +end + + --- Events --- Handles the OnBirth event for the alive units set. diff --git a/Moose Development/Moose/Point.lua b/Moose Development/Moose/Point.lua new file mode 100644 index 000000000..e0dfa6cdb --- /dev/null +++ b/Moose Development/Moose/Point.lua @@ -0,0 +1,195 @@ +--- This module contains the POINT classes. +-- +-- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} +-- =============================================== +-- The @{Point#POINT_VEC3} class defines a 3D point in the simulator. +-- +-- 1.1) POINT_VEC3 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC3.New}(): a 3D point. +-- +-- 2) @{Point#POINT_VEC2} class, extends @{Point#POINT_VEC3} +-- ========================================================= +-- The @{Point#POINT_VEC2} class defines a 2D point in the simulator. The height coordinate (if needed) will be the land height + an optional added height specified. +-- +-- 2.1) POINT_VEC2 constructor +-- --------------------------- +-- +-- A new POINT instance can be created with: +-- +-- * @{#POINT_VEC2.New}(): a 2D point. +-- +-- @module Point +-- @author FlightControl + +Include.File( "Routines" ) +Include.File( "Base" ) +Include.File( "Point" ) + +--- The POINT_VEC3 class +-- @type POINT_VEC3 +-- @extends Base#BASE +-- @field #POINT_VEC3.SmokeColor SmokeColor +-- @field #POINT_VEC3.FlareColor FlareColor +POINT_VEC3 = { + ClassName = "POINT_VEC3", + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + } + +--- SmokeColor +-- @type POINT_VEC3.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue + +--- FlareColor +-- @type POINT_VEC3.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + +-- Constructor. + +--- Create a new POINT_VEC3 object. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. +-- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. +-- @return Point#POINT_VEC3 +function POINT_VEC3:New( x, y, z ) + + local self = BASE:Inherit( self, BASE:New() ) + self:F2( { x, y, z } ) + self.PointVec3 = { x = x, y = y, z = z } + return self +end + +--- Smokes the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.SmokeColor SmokeColor +function POINT_VEC3:Smoke( SmokeColor ) + self:F2( { SmokeColor, self.PointVec3 } ) + trigger.action.smoke( self.PointVec3, SmokeColor ) +end + +--- Smoke the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeGreen() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Green ) +end + +--- Smoke the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeRed() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Red ) +end + +--- Smoke the POINT_VEC3 White. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeWhite() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.White ) +end + +--- Smoke the POINT_VEC3 Orange. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeOrange() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Orange ) +end + +--- Smoke the POINT_VEC3 Blue. +-- @param #POINT_VEC3 self +function POINT_VEC3:SmokeBlue() + self:F2() + self:Smoke( POINT_VEC3.SmokeColor.Blue ) +end + +--- Flares the point in a color. +-- @param #POINT_VEC3 self +-- @param Point#POINT_VEC3.FlareColor +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:Flare( FlareColor, Azimuth ) + self:F2( { FlareColor, self.PointVec3 } ) + trigger.action.signalFlare( self.PointVec3, FlareColor, Azimuth and Azimuth or 0 ) +end + +--- Flare the POINT_VEC3 White. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareWhite( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.White, Azimuth ) +end + +--- Flare the POINT_VEC3 Yellow. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareYellow( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Yellow, Azimuth ) +end + +--- Flare the POINT_VEC3 Green. +-- @param #POINT_VEC3 self +-- @param DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. +function POINT_VEC3:FlareGreen( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Green, Azimuth ) +end + +--- Flare the POINT_VEC3 Red. +-- @param #POINT_VEC3 self +function POINT_VEC3:FlareRed( Azimuth ) + self:F2( Azimuth ) + self:Flare( POINT_VEC3.FlareColor.Red, Azimuth ) +end + + +--- The POINT_VEC2 class +-- @type POINT_VEC2 +-- @extends Point#POINT_VEC3 +POINT_VEC2 = { + ClassName = "POINT_VEC2", + } + +--- Create a new POINT_VEC2 object. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. +-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing to the Right. +-- @param DCSTypes#Distance LandHeightAdd (optional) The default height if required to be evaluated will be the land height of the x, y coordinate. You can specify an extra height to be added to the land height. +-- @return Point#POINT_VEC2 +function POINT_VEC2:New( x, y, LandHeightAdd ) + + local LandHeight = land.getHeight( { ["x"] = x, ["y"] = y } ) + if LandHeightAdd then + LandHeight = LandHeight + LandHeightAdd + end + + local self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) + self:F2( { x, y, LandHeightAdd } ) + + return self +end + + diff --git a/Moose Development/Moose/Spawn.lua b/Moose Development/Moose/Spawn.lua index 9ea27a16a..8c63ae23c 100644 --- a/Moose Development/Moose/Spawn.lua +++ b/Moose Development/Moose/Spawn.lua @@ -473,6 +473,12 @@ function SPAWN:SpawnWithIndex( SpawnIndex ) end self.SpawnGroups[self.SpawnIndex].Spawned = true + + local SpawnGroup = self.SpawnGroups[self.SpawnIndex].Group -- Group#GROUP + local Route = SpawnGroup:GetTaskRoute() + SpawnGroup:Route(Route) + + return self.SpawnGroups[self.SpawnIndex].Group else --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) @@ -980,11 +986,12 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) SpawnTemplate.groupId = nil - SpawnTemplate.lateActivation = false + --SpawnTemplate.lateActivation = false + SpawnTemplate.lateActivation = false -- TODO BUGFIX if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then self:T( "For ground units, visible needs to be false..." ) - SpawnTemplate.visible = false + SpawnTemplate.visible = false -- TODO BUGFIX end if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then @@ -1032,7 +1039,7 @@ end -- @param #number SpawnIndex -- @return #SPAWN self function SPAWN:_RandomizeTemplate( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) + self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeTemplate } ) if self.SpawnRandomizeTemplate then self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] diff --git a/Moose Development/Moose/Static.lua b/Moose Development/Moose/Static.lua new file mode 100644 index 000000000..ba6467023 --- /dev/null +++ b/Moose Development/Moose/Static.lua @@ -0,0 +1,81 @@ +--- This module contains the STATIC class. +-- +-- 1) @{Static#STATIC} class, extends @{Unit#UNIT} +-- =============================================== +-- Statics are **Static Units** defined within the Mission Editor. +-- Note that Statics are almost the same as Units, but they don't have a controller. +-- The @{Static#STATIC} class is a wrapper class to handle the DCS Static objects: +-- +-- * Wraps the DCS Static objects. +-- * Support all DCS Static APIs. +-- * Enhance with Static specific APIs not in the DCS API set. +-- +-- 1.1) STATIC reference methods +-- ----------------------------- +-- For each DCS Static will have a STATIC wrapper object (instance) within the _@{DATABASE} object. +-- This is done at the beginning of the mission (when the mission starts). +-- +-- The STATIC class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +-- using the Static Name. +-- +-- Another thing to know is that STATIC objects do not "contain" the DCS Static object. +-- The STATIc methods will reference the DCS Static object by name when it is needed during API execution. +-- If the DCS Static object does not exist or is nil, the STATIC methods will return nil and log an exception in the DCS.log file. +-- +-- The STATIc class provides the following functions to retrieve quickly the relevant STATIC instance: +-- +-- * @{#STATIC.FindByName}(): Find a STATIC instance from the _DATABASE object using a DCS Static name. +-- +-- IMPORTANT: ONE SHOULD NEVER SANATIZE these STATIC OBJECT REFERENCES! (make the STATIC object references nil). +-- +-- @module Static +-- @author FlightControl + +Include.File( "Routines" ) +Include.File( "Base" ) +Include.File( "Message" ) + + +--- The STATIC class +-- @type STATIC +-- @extends Unit#UNIT +STATIC = { + ClassName = "STATIC", +} + + +--- Finds a STATIC from the _DATABASE using the relevant Static Name. +-- As an optional parameter, a briefing text can be given also. +-- @param #STATIC self +-- @param #string StaticName Name of the DCS **Static** as defined within the Mission Editor. +-- @return #STATIC +function STATIC:FindByName( StaticName ) + local StaticFound = _DATABASE:FindStatic( StaticName ) + + if StaticFound then + StaticFound:F( { StaticName } ) + + return StaticFound + end + + error( "STATIC not found for: " .. StaticName ) +end + +function STATIC:Register( StaticName ) + local self = BASE:Inherit( self, UNIT:Register( StaticName ) ) + + self:F( StaticName ) + + return self +end + + +function STATIC:GetDCSUnit() + local DCSStatic = StaticObject.getByName( self.UnitName ) + + if DCSStatic then + return DCSStatic + end + + return nil +end diff --git a/Moose Development/Moose/Unit.lua b/Moose Development/Moose/Unit.lua index a4da510e2..cdb8a43f8 100644 --- a/Moose Development/Moose/Unit.lua +++ b/Moose Development/Moose/Unit.lua @@ -535,7 +535,7 @@ function UNIT:GetPointVec2() UnitPointVec2.x = UnitPointVec3.x UnitPointVec2.y = UnitPointVec3.z - self:T3( UnitPointVec2 ) + self:T2( UnitPointVec2 ) return UnitPointVec2 end diff --git a/Moose Development/Moose/Zone.lua b/Moose Development/Moose/Zone.lua index 5ea17eee4..a27c3f1df 100644 --- a/Moose Development/Moose/Zone.lua +++ b/Moose Development/Moose/Zone.lua @@ -65,16 +65,21 @@ Include.File( "Routines" ) Include.File( "Base" ) Include.File( "Message" ) +Include.File( "Point" ) --- The ZONE_BASE class -- @type ZONE_BASE --- @Extends Base#BASE +-- @extends Base#BASE ZONE_BASE = { ClassName = "ZONE_BASE", } - + +--- ZONE_BASE constructor +-- @param #ZONE_BASE self +-- @param #string ZoneName Name of the zone. +-- @return #ZONE_BASE self function ZONE_BASE:New( ZoneName ) local self = BASE:Inherit( self, BASE:New() ) self:F( ZoneName ) @@ -106,21 +111,30 @@ function ZONE_BASE:IsPointVec3InZone( PointVec3 ) return InZone end +--- Smokes the zone boundaries in a color. +-- @param #ZONE_BASE self +-- @param SmokeColor The smoke color. +function ZONE_BASE:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + +end + --- The ZONE_RADIUS class, defined by a zone name, a location and a radius. -- @type ZONE_RADIUS -- @field DCSTypes#Vec2 PointVec2 The current location of the zone. -- @field DCSTypes#Distance Radius The radius of the zone. --- @Extends Zone#ZONE_BASE +-- @extends Zone#ZONE_BASE ZONE_RADIUS = { ClassName="ZONE_RADIUS", } --- Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius. -- @param #ZONE_RADIUS self +-- @param #string ZoneName Name of the zone. -- @param DCSTypes#Vec2 PointVec2 The location of the zone. -- @param DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_RADIUS +-- @return #ZONE_RADIUS self function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) self:F( { ZoneName, PointVec2, Radius } ) @@ -131,6 +145,59 @@ function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) return self end +--- Smokes the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @param #number Points (optional) The amount of points in the circle. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:SmokeZone( SmokeColor, Points ) + self:F2( SmokeColor ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Smoke( SmokeColor ) + end + + return self +end + + +--- Flares the zone boundaries in a color. +-- @param #ZONE_RADIUS self +-- @param #POINT_VEC3.FlareColor FlareColor The flare color. +-- @param #number Points (optional) The amount of points in the circle. +-- @param DCSTypes#Azimuth Azimuth (optional) Azimuth The azimuth of the flare. +-- @return #ZONE_RADIUS self +function ZONE_RADIUS:FlareZone( FlareColor, Points, Azimuth ) + self:F2( { FlareColor, Azimuth } ) + + local Point = {} + local PointVec2 = self:GetPointVec2() + + Points = Points and Points or 360 + + local Angle + local RadialBase = math.pi*2 + + for Angle = 0, 360, 360 / Points do + local Radial = Angle * RadialBase / 360 + Point.x = PointVec2.x + math.cos( Radial ) * self:GetRadius() + Point.y = PointVec2.y + math.sin( Radial ) * self:GetRadius() + POINT_VEC2:New( Point.x, Point.y ):Flare( FlareColor, Azimuth ) + end + + return self +end --- Returns the radius of the zone. -- @param #ZONE_RADIUS self @@ -197,14 +264,17 @@ function ZONE_RADIUS:GetPointVec3( Height ) return PointVec3 end + --- Returns if a location is within the zone. -- @param #ZONE_RADIUS self -- @param DCSTypes#Vec2 PointVec2 The location to test. -- @return #boolean true if the location is within the zone. function ZONE_RADIUS:IsPointVec2InZone( PointVec2 ) self:F2( PointVec2 ) + + local ZonePointVec2 = self:GetPointVec2() - if (( PointVec2.x - self.PointVec2.x )^2 + ( PointVec2.y - self.PointVec2.y ) ^2 ) ^ 0.5 <= self.Radius then + if (( PointVec2.x - ZonePointVec2.x )^2 + ( PointVec2.y - ZonePointVec2.y ) ^2 ) ^ 0.5 <= self:GetRadius() then return true end @@ -218,7 +288,7 @@ end function ZONE_RADIUS:IsPointVec3InZone( PointVec3 ) self:F2( PointVec3 ) - local InZone = self:IsPointVec3InZone( { x = PointVec3.x, y = PointVec3.z } ) + local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) return InZone end @@ -230,10 +300,11 @@ function ZONE_RADIUS:GetRandomPointVec2() self:F( self.ZoneName ) local Point = {} + local PointVec2 = self:GetPointVec2() local angle = math.random() * math.pi*2; - Point.x = self.PointVec2.x + math.cos( angle ) * math.random() * self.Radius; - Point.y = self.PointVec2.y + math.sin( angle ) * math.random() * self.Radius; + Point.x = PointVec2.x + math.cos( angle ) * math.random() * self:GetRadius(); + Point.y = PointVec2.y + math.sin( angle ) * math.random() * self:GetRadius(); self:T( { Point } ) @@ -244,7 +315,7 @@ end --- The ZONE class, defined by the zone name as defined within the Mission Editor. The location and the radius are automatically collected from the mission settings. -- @type ZONE --- @Extends Zone#ZONE_RADIUS +-- @extends Zone#ZONE_RADIUS ZONE = { ClassName="ZONE", } @@ -263,7 +334,7 @@ function ZONE:New( ZoneName ) return nil end - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.x, y = Zone.y }, Zone.radius ) ) + local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.point.x, y = Zone.point.z }, Zone.radius ) ) self:F( ZoneName ) self.Zone = Zone @@ -272,11 +343,10 @@ function ZONE:New( ZoneName ) end - --- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. -- @type ZONE_UNIT -- @field Unit#UNIT ZoneUNIT --- @Extends Zone#ZONE_RADIUS +-- @extends Zone#ZONE_RADIUS ZONE_UNIT = { ClassName="ZONE_UNIT", } @@ -313,7 +383,7 @@ end --- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. -- @type ZONE_POLYGON --- @Extends Zone#ZONE_BASE +-- @extends Zone#ZONE_BASE ZONE_POLYGON = { ClassName="ZONE_POLYGON", } @@ -342,6 +412,40 @@ function ZONE_POLYGON:New( ZoneName, ZoneGroup ) return self end +--- Smokes the zone boundaries in a color. +-- @param #ZONE_POLYGON self +-- @param #POINT_VEC3.SmokeColor SmokeColor The smoke color. +-- @return #ZONE_POLYGON self +function ZONE_POLYGON:SmokeZone( SmokeColor ) + self:F2( SmokeColor ) + + local i + local j + local Segments = 10 + + i = 1 + j = #self.Polygon + + while i <= #self.Polygon do + self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) + + local DeltaX = self.Polygon[j].x - self.Polygon[i].x + local DeltaY = self.Polygon[j].y - self.Polygon[i].y + + for Segment = 0, Segments do -- We divide each line in 5 segments and smoke a point on the line. + local PointX = self.Polygon[i].x + ( Segment * DeltaX / Segments ) + local PointY = self.Polygon[i].y + ( Segment * DeltaY / Segments ) + POINT_VEC2:New( PointX, PointY ):Smoke( SmokeColor ) + end + j = i + i = i + 1 + end + + return self +end + + + --- Returns if a location is within the zone. -- @param #ZONE_POLYGON self diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index 7db8a5175..114a0f7fe 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,6 @@ -env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160605_0003' ) +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160605_2147' ) + local base = _G env.info("Loading MOOSE " .. base.timer.getAbsTime() ) @@ -11,9 +12,27 @@ Include.Path = function() end Include.File = function( IncludeFile ) + if not Include.Files[ IncludeFile ] then + Include.Files[IncludeFile] = IncludeFile + env.info( "Include:" .. IncludeFile .. " from " .. Include.ProgramPath ) + local f = assert( base.loadfile( Include.ProgramPath .. IncludeFile .. ".lua" ) ) + if f == nil then + env.info( "Include:" .. IncludeFile .. " from " .. Include.MissionPath ) + local f = assert( base.loadfile( Include.MissionPath .. IncludeFile .. ".lua" ) ) + if f == nil then + error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) + else + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.MissionPath ) + return f() + end + else + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) + return f() + end + end end -Include.ProgramPath = "Scripts/Moose/Moose/" +Include.ProgramPath = "Scripts/Moose/" Include.MissionPath = Include.Path() env.info( "Include.ProgramPath = " .. Include.ProgramPath) @@ -23,17596 +42,4 @@ Include.Files = {} Include.File( "Moose" ) -env.info("Loaded MOOSE Include Engine") ---- Various routines --- @module routines --- @author Flightcontrol - ---Include.File( "Trace" ) ---Include.File( "Message" ) - - -env.setErrorMessageBoxEnabled(false) - ---- Extract of MIST functions. --- @author Grimes - -routines = {} - - --- don't change these -routines.majorVersion = 3 -routines.minorVersion = 3 -routines.build = 22 - ------------------------------------------------------------------------------------------------------------------ - ----------------------------------------------------------------------------------------------- --- Utils- conversion, Lua utils, etc. -routines.utils = {} - ---from http://lua-users.org/wiki/CopyTable -routines.utils.deepCopy = function(object) - local lookup_table = {} - local function _copy(object) - if type(object) ~= "table" then - return object - elseif lookup_table[object] then - return lookup_table[object] - end - local new_table = {} - lookup_table[object] = new_table - for index, value in pairs(object) do - new_table[_copy(index)] = _copy(value) - end - return setmetatable(new_table, getmetatable(object)) - end - local objectreturn = _copy(object) - return objectreturn -end - - --- porting in Slmod's serialize_slmod2 -routines.utils.oneLineSerialize = function(tbl) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function - - lookup_table = {} - - local function _Serialize( tbl ) - - if type(tbl) == 'table' then --function only works for tables! - - if lookup_table[tbl] then - return lookup_table[object] - end - - local tbl_str = {} - - lookup_table[tbl] = tbl_str - - tbl_str[#tbl_str + 1] = '{' - - for ind,val in pairs(tbl) do -- serialize its fields - local ind_str = {} - if type(ind) == "number" then - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = tostring(ind) - ind_str[#ind_str + 1] = ']=' - else --must be a string - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) - ind_str[#ind_str + 1] = ']=' - end - - local val_str = {} - if ((type(val) == 'number') or (type(val) == 'boolean')) then - val_str[#val_str + 1] = tostring(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'string' then - val_str[#val_str + 1] = routines.utils.basicSerialize(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'nil' then -- won't ever happen, right? - val_str[#val_str + 1] = 'nil,' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'table' then - if ind == "__index" then - -- tbl_str[#tbl_str + 1] = "__index" - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else - - val_str[#val_str + 1] = _Serialize(val) - val_str[#val_str + 1] = ',' --I think this is right, I just added it - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - end - elseif type(val) == 'function' then - -- tbl_str[#tbl_str + 1] = "function " .. tostring(ind) - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else --- env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) --- env.info( debug.traceback() ) - end - - end - tbl_str[#tbl_str + 1] = '}' - return table.concat(tbl_str) - else - return tostring(tbl) - end - end - - local objectreturn = _Serialize(tbl) - return objectreturn -end - ---porting in Slmod's "safestring" basic serialize -routines.utils.basicSerialize = function(s) - if s == nil then - return "\"\"" - else - if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then - return tostring(s) - elseif type(s) == 'string' then - s = string.format('%q', s) - return s - end - end -end - - -routines.utils.toDegree = function(angle) - return angle*180/math.pi -end - -routines.utils.toRadian = function(angle) - return angle*math.pi/180 -end - -routines.utils.metersToNM = function(meters) - return meters/1852 -end - -routines.utils.metersToFeet = function(meters) - return meters/0.3048 -end - -routines.utils.NMToMeters = function(NM) - return NM*1852 -end - -routines.utils.feetToMeters = function(feet) - return feet*0.3048 -end - -routines.utils.mpsToKnots = function(mps) - return mps*3600/1852 -end - -routines.utils.mpsToKmph = function(mps) - return mps*3.6 -end - -routines.utils.knotsToMps = function(knots) - return knots*1852/3600 -end - -routines.utils.kmphToMps = function(kmph) - return kmph/3.6 -end - -function routines.utils.makeVec2(Vec3) - if Vec3.z then - return {x = Vec3.x, y = Vec3.z} - else - return {x = Vec3.x, y = Vec3.y} -- it was actually already vec2. - end -end - -function routines.utils.makeVec3(Vec2, y) - if not Vec2.z then - if not y then - y = 0 - end - return {x = Vec2.x, y = y, z = Vec2.y} - else - return {x = Vec2.x, y = Vec2.y, z = Vec2.z} -- it was already Vec3, actually. - end -end - -function routines.utils.makeVec3GL(Vec2, offset) - local adj = offset or 0 - - if not Vec2.z then - return {x = Vec2.x, y = (land.getHeight(Vec2) + adj), z = Vec2.y} - else - return {x = Vec2.x, y = (land.getHeight({x = Vec2.x, y = Vec2.z}) + adj), z = Vec2.z} - end -end - -routines.utils.zoneToVec3 = function(zone) - local new = {} - if type(zone) == 'table' and zone.point then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - elseif type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - if zone then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - end - end -end - --- gets heading-error corrected direction from point along vector vec. -function routines.utils.getDir(vec, point) - local dir = math.atan2(vec.z, vec.x) - dir = dir + routines.getNorthCorrection(point) - if dir < 0 then - dir = dir + 2*math.pi -- put dir in range of 0 to 2*pi - end - return dir -end - --- gets distance in meters between two points (2 dimensional) -function routines.utils.get2DDist(point1, point2) - point1 = routines.utils.makeVec3(point1) - point2 = routines.utils.makeVec3(point2) - return routines.vec.mag({x = point1.x - point2.x, y = 0, z = point1.z - point2.z}) -end - --- gets distance in meters between two points (3 dimensional) -function routines.utils.get3DDist(point1, point2) - return routines.vec.mag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z}) -end - - - --- From http://lua-users.org/wiki/SimpleRound --- use negative idp for rounding ahead of decimal place, positive for rounding after decimal place -routines.utils.round = function(num, idp) - local mult = 10^(idp or 0) - return math.floor(num * mult + 0.5) / mult -end - --- porting in Slmod's dostring -routines.utils.dostring = function(s) - local f, err = loadstring(s) - if f then - return true, f() - else - return false, err - end -end - - ---3D Vector manipulation -routines.vec = {} - -routines.vec.add = function(vec1, vec2) - return {x = vec1.x + vec2.x, y = vec1.y + vec2.y, z = vec1.z + vec2.z} -end - -routines.vec.sub = function(vec1, vec2) - return {x = vec1.x - vec2.x, y = vec1.y - vec2.y, z = vec1.z - vec2.z} -end - -routines.vec.scalarMult = function(vec, mult) - return {x = vec.x*mult, y = vec.y*mult, z = vec.z*mult} -end - -routines.vec.scalar_mult = routines.vec.scalarMult - -routines.vec.dp = function(vec1, vec2) - return vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z -end - -routines.vec.cp = function(vec1, vec2) - return { x = vec1.y*vec2.z - vec1.z*vec2.y, y = vec1.z*vec2.x - vec1.x*vec2.z, z = vec1.x*vec2.y - vec1.y*vec2.x} -end - -routines.vec.mag = function(vec) - return (vec.x^2 + vec.y^2 + vec.z^2)^0.5 -end - -routines.vec.getUnitVec = function(vec) - local mag = routines.vec.mag(vec) - return { x = vec.x/mag, y = vec.y/mag, z = vec.z/mag } -end - -routines.vec.rotateVec2 = function(vec2, theta) - return { x = vec2.x*math.cos(theta) - vec2.y*math.sin(theta), y = vec2.x*math.sin(theta) + vec2.y*math.cos(theta)} -end ---------------------------------------------------------------------------------------------------------------------------- - - - - --- acc- the accuracy of each easting/northing. 0, 1, 2, 3, 4, or 5. -routines.tostringMGRS = function(MGRS, acc) - if acc == 0 then - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph - else - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Easting/(10^(5-acc)), 0)) - .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Northing/(10^(5-acc)), 0)) - end -end - ---[[acc: -in DM: decimal point of minutes. -In DMS: decimal point of seconds. -position after the decimal of the least significant digit: -So: -42.32 - acc of 2. -]] -routines.tostringLL = function(lat, lon, acc, DMS) - - local latHemi, lonHemi - if lat > 0 then - latHemi = 'N' - else - latHemi = 'S' - end - - if lon > 0 then - lonHemi = 'E' - else - lonHemi = 'W' - end - - lat = math.abs(lat) - lon = math.abs(lon) - - local latDeg = math.floor(lat) - local latMin = (lat - latDeg)*60 - - local lonDeg = math.floor(lon) - local lonMin = (lon - lonDeg)*60 - - if DMS then -- degrees, minutes, and seconds. - local oldLatMin = latMin - latMin = math.floor(latMin) - local latSec = routines.utils.round((oldLatMin - latMin)*60, acc) - - local oldLonMin = lonMin - lonMin = math.floor(lonMin) - local lonSec = routines.utils.round((oldLonMin - lonMin)*60, acc) - - if latSec == 60 then - latSec = 0 - latMin = latMin + 1 - end - - if lonSec == 60 then - lonSec = 0 - lonMin = lonMin + 1 - end - - local secFrmtStr -- create the formatting string for the seconds place - if acc <= 0 then -- no decimal place. - secFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi - - else -- degrees, decimal minutes. - latMin = routines.utils.round(latMin, acc) - lonMin = routines.utils.round(lonMin, acc) - - if latMin == 60 then - latMin = 0 - latDeg = latDeg + 1 - end - - if lonMin == 60 then - lonMin = 0 - lonDeg = lonDeg + 1 - end - - local minFrmtStr -- create the formatting string for the minutes place - if acc <= 0 then -- no decimal place. - minFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi - - end -end - ---[[ required: az - radian - required: dist - meters - optional: alt - meters (set to false or nil if you don't want to use it). - optional: metric - set true to get dist and alt in km and m. - precision will always be nearest degree and NM or km.]] -routines.tostringBR = function(az, dist, alt, metric) - az = routines.utils.round(routines.utils.toDegree(az), 0) - - if metric then - dist = routines.utils.round(dist/1000, 2) - else - dist = routines.utils.round(routines.utils.metersToNM(dist), 2) - end - - local s = string.format('%03d', az) .. ' for ' .. dist - - if alt then - if metric then - s = s .. ' at ' .. routines.utils.round(alt, 0) - else - s = s .. ' at ' .. routines.utils.round(routines.utils.metersToFeet(alt), 0) - end - end - return s -end - -routines.getNorthCorrection = function(point) --gets the correction needed for true north - if not point.z then --Vec2; convert to Vec3 - point.z = point.y - point.y = 0 - end - local lat, lon = coord.LOtoLL(point) - local north_posit = coord.LLtoLO(lat + 1, lon) - return math.atan2(north_posit.z - point.z, north_posit.x - point.x) -end - - --- the main area -do - -- THE MAIN FUNCTION -- Accessed 100 times/sec. - routines.main = function() - timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) --reschedule first in case of Lua error - ---------------------------------------------------------------------------------------------------------- - --area to add new stuff in - - routines.do_scheduled_functions() - end -- end of routines.main - - timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) - -end - - -do - local idNum = 0 - - --Simplified event handler - routines.addEventHandler = function(f) --id is optional! - local handler = {} - idNum = idNum + 1 - handler.id = idNum - handler.f = f - handler.onEvent = function(self, event) - self.f(event) - end - world.addEventHandler(handler) - end - - routines.removeEventHandler = function(id) - for key, handler in pairs(world.eventHandlers) do - if handler.id and handler.id == id then - world.eventHandlers[key] = nil - return true - end - end - return false - end -end - --- need to return a Vec3 or Vec2? -function routines.getRandPointInCircle(point, radius, innerRadius) - local theta = 2*math.pi*math.random() - local rad = math.random() + math.random() - if rad > 1 then - rad = 2 - rad - end - - local radMult - if innerRadius and innerRadius <= radius then - radMult = (radius - innerRadius)*rad + innerRadius - else - radMult = radius*rad - end - - if not point.z then --might as well work with vec2/3 - point.z = point.y - end - - local rndCoord - if radius > 0 then - rndCoord = {x = math.cos(theta)*radMult + point.x, y = math.sin(theta)*radMult + point.z} - else - rndCoord = {x = point.x, y = point.z} - end - return rndCoord -end - -routines.goRoute = function(group, path) - local misTask = { - id = 'Mission', - params = { - route = { - points = routines.utils.deepCopy(path), - }, - }, - } - if type(group) == 'string' then - group = Group.getByName(group) - end - local groupCon = group:getController() - if groupCon then - groupCon:setTask(misTask) - return true - end - - Controller.setTask(groupCon, misTask) - return false -end - - --- Useful atomic functions from mist, ported. - -routines.ground = {} -routines.fixedWing = {} -routines.heli = {} - -routines.ground.buildWP = function(point, overRideForm, overRideSpeed) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - local form, speed - - if point.speed and not overRideSpeed then - wp.speed = point.speed - elseif type(overRideSpeed) == 'number' then - wp.speed = overRideSpeed - else - wp.speed = routines.utils.kmphToMps(20) - end - - if point.form and not overRideForm then - form = point.form - else - form = overRideForm - end - - if not form then - wp.action = 'Cone' - else - form = string.lower(form) - if form == 'off_road' or form == 'off road' then - wp.action = 'Off Road' - elseif form == 'on_road' or form == 'on road' then - wp.action = 'On Road' - elseif form == 'rank' or form == 'line_abrest' or form == 'line abrest' or form == 'lineabrest'then - wp.action = 'Rank' - elseif form == 'cone' then - wp.action = 'Cone' - elseif form == 'diamond' then - wp.action = 'Diamond' - elseif form == 'vee' then - wp.action = 'Vee' - elseif form == 'echelon_left' or form == 'echelon left' or form == 'echelonl' then - wp.action = 'EchelonL' - elseif form == 'echelon_right' or form == 'echelon right' or form == 'echelonr' then - wp.action = 'EchelonR' - else - wp.action = 'Cone' -- if nothing matched - end - end - - wp.type = 'Turning Point' - - return wp - -end - -routines.fixedWing.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 2000 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(500) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.heli.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 500 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(200) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.groupToRandomPoint = function(vars) - local group = vars.group --Required - local point = vars.point --required - local radius = vars.radius or 0 - local innerRadius = vars.innerRadius - local form = vars.form or 'Cone' - local heading = vars.heading or math.random()*2*math.pi - local headingDegrees = vars.headingDegrees - local speed = vars.speed or routines.utils.kmphToMps(20) - - - local useRoads - if not vars.disableRoads then - useRoads = true - else - useRoads = false - end - - local path = {} - - if headingDegrees then - heading = headingDegrees*math.pi/180 - end - - if heading >= 2*math.pi then - heading = heading - 2*math.pi - end - - local rndCoord = routines.getRandPointInCircle(point, radius, innerRadius) - - local offset = {} - local posStart = routines.getLeadPos(group) - - offset.x = routines.utils.round(math.sin(heading - (math.pi/2)) * 50 + rndCoord.x, 3) - offset.z = routines.utils.round(math.cos(heading + (math.pi/2)) * 50 + rndCoord.y, 3) - path[#path + 1] = routines.ground.buildWP(posStart, form, speed) - - - if useRoads == true and ((point.x - posStart.x)^2 + (point.z - posStart.z)^2)^0.5 > radius * 1.3 then - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 11, ['z'] = posStart.z + 11}, 'off_road', speed) - path[#path + 1] = routines.ground.buildWP(posStart, 'on_road', speed) - path[#path + 1] = routines.ground.buildWP(offset, 'on_road', speed) - else - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 25, ['z'] = posStart.z + 25}, form, speed) - end - - path[#path + 1] = routines.ground.buildWP(offset, form, speed) - path[#path + 1] = routines.ground.buildWP(rndCoord, form, speed) - - routines.goRoute(group, path) - - return -end - -routines.groupRandomDistSelf = function(gpData, dist, form, heading, speed) - local pos = routines.getLeadPos(gpData) - local fakeZone = {} - fakeZone.radius = dist or math.random(300, 1000) - fakeZone.point = {x = pos.x, y, pos.y, z = pos.z} - routines.groupToRandomZone(gpData, fakeZone, form, heading, speed) - - return -end - -routines.groupToRandomZone = function(gpData, zone, form, heading, speed) - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - if type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - elseif type(zone) == 'table' and not zone.radius then - zone = trigger.misc.getZone(zone[math.random(1, #zone)]) - end - - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.radius = zone.radius - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.point = routines.utils.zoneToVec3(zone) - - routines.groupToRandomPoint(vars) - - return -end - -routines.isTerrainValid = function(coord, terrainTypes) -- vec2/3 and enum or table of acceptable terrain types - if coord.z then - coord.y = coord.z - end - local typeConverted = {} - - if type(terrainTypes) == 'string' then -- if its a string it does this check - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(terrainTypes) or string.lower(constData) == string.lower(terrainTypes) then - table.insert(typeConverted, constId) - end - end - elseif type(terrainTypes) == 'table' then -- if its a table it does this check - for typeId, typeData in pairs(terrainTypes) do - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(typeData) or string.lower(constData) == string.lower(typeId) then - table.insert(typeConverted, constId) - end - end - end - end - for validIndex, validData in pairs(typeConverted) do - if land.getSurfaceType(coord) == land.SurfaceType[validData] then - return true - end - end - return false -end - -routines.groupToPoint = function(gpData, point, form, heading, speed, useRoads) - if type(point) == 'string' then - point = trigger.misc.getZone(point) - end - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.disableRoads = useRoads - vars.point = routines.utils.zoneToVec3(point) - routines.groupToRandomPoint(vars) - - return -end - - -routines.getLeadPos = function(group) - if type(group) == 'string' then -- group name - group = Group.getByName(group) - end - - local units = group:getUnits() - - local leader = units[1] - if not leader then -- SHOULD be good, but if there is a bug, this code future-proofs it then. - local lowestInd = math.huge - for ind, unit in pairs(units) do - if ind < lowestInd then - lowestInd = ind - leader = unit - end - end - end - if leader and Unit.isExist(leader) then -- maybe a little too paranoid now... - return leader:getPosition().p - end -end - ---[[ vars for routines.getMGRSString: -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -]] -routines.getMGRSString = function(vars) - local units = vars.units - local acc = vars.acc or 5 - local avgPos = routines.getAvgPos(units) - if avgPos then - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(avgPos)), acc) - end -end - ---[[ vars for routines.getLLString -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. - - -]] -routines.getLLString = function(vars) - local units = vars.units - local acc = vars.acc or 3 - local DMS = vars.DMS - local avgPos = routines.getAvgPos(units) - if avgPos then - local lat, lon = coord.LOtoLL(avgPos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - ---[[ -vars.zone - table of a zone name. -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRStringZone = function(vars) - local zone = trigger.misc.getZone( vars.zone ) - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - if zone then - local vec = {x = zone.point.x - ref.x, y = zone.point.y - ref.y, z = zone.point.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(zone.point, ref) - if alt then - alt = zone.y - end - return routines.tostringBR(dir, dist, alt, metric) - else - env.info( 'routines.getBRStringZone: error: zone is nil' ) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRString = function(vars) - local units = vars.units - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - local avgPos = routines.getAvgPos(units) - if avgPos then - local vec = {x = avgPos.x - ref.x, y = avgPos.y - ref.y, z = avgPos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(avgPos, ref) - if alt then - alt = avgPos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - - --- Returns the Vec3 coordinates of the average position of the concentration of units most in the heading direction. ---[[ vars for routines.getLeadingPos: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -]] -routines.getLeadingPos = function(vars) - local units = vars.units - local heading = vars.heading - local radius = vars.radius - if vars.headingDegrees then - heading = routines.utils.toRadian(vars.headingDegrees) - end - - local unitPosTbl = {} - for i = 1, #units do - local unit = Unit.getByName(units[i]) - if unit and unit:isExist() then - unitPosTbl[#unitPosTbl + 1] = unit:getPosition().p - end - end - if #unitPosTbl > 0 then -- one more more units found. - -- first, find the unit most in the heading direction - local maxPos = -math.huge - - local maxPosInd -- maxPos - the furthest in direction defined by heading; maxPosInd = - for i = 1, #unitPosTbl do - local rotatedVec2 = routines.vec.rotateVec2(routines.utils.makeVec2(unitPosTbl[i]), heading) - if (not maxPos) or maxPos < rotatedVec2.x then - maxPos = rotatedVec2.x - maxPosInd = i - end - end - - --now, get all the units around this unit... - local avgPos - if radius then - local maxUnitPos = unitPosTbl[maxPosInd] - local avgx, avgy, avgz, totNum = 0, 0, 0, 0 - for i = 1, #unitPosTbl do - if routines.utils.get2DDist(maxUnitPos, unitPosTbl[i]) <= radius then - avgx = avgx + unitPosTbl[i].x - avgy = avgy + unitPosTbl[i].y - avgz = avgz + unitPosTbl[i].z - totNum = totNum + 1 - end - end - avgPos = { x = avgx/totNum, y = avgy/totNum, z = avgz/totNum} - else - avgPos = unitPosTbl[maxPosInd] - end - - return avgPos - end -end - - ---[[ vars for routines.getLeadingMGRSString: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number, 0 to 5. -]] -routines.getLeadingMGRSString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 5 - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(pos)), acc) - end -end - ---[[ vars for routines.getLeadingLLString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. -]] -routines.getLeadingLLString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 3 - local DMS = vars.DMS - local lat, lon = coord.LOtoLL(pos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - - - ---[[ vars for routines.getLeadingBRString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.metric - boolean, if true, use km instead of NM. -vars.alt - boolean, if true, include altitude. -vars.ref - vec3/vec2 reference point. -]] -routines.getLeadingBRString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local ref = vars.ref - local alt = vars.alt - local metric = vars.metric - - local vec = {x = pos.x - ref.x, y = pos.y - ref.y, z = pos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(pos, ref) - if alt then - alt = pos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - ---[[ vars for routines.message.add - vars.text = 'Hello World' - vars.displayTime = 20 - vars.msgFor = {coa = {'red'}, countries = {'Ukraine', 'Georgia'}, unitTypes = {'A-10C'}} - -]] - ---[[ vars for routines.msgMGRS -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgMGRS = function(vars) - local units = vars.units - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getMGRSString{units = units, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - ---[[ vars for routines.msgLL -vars.units - table of unit names (NOT unitNameTable- maybe this should change) (Yes). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLLString{units = units, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local alt = vars.alt - local metric = vars.metric - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getBRString{units = units, ref = ref, alt = alt, metric = metric} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - --------------------------------------------------------------------------------------------- --- basically, just sub-types of routines.msgBR... saves folks the work of getting the ref point. ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - string red, blue -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBullseye = function(vars) - if string.lower(vars.ref) == 'red' then - vars.ref = routines.DBs.missionData.bullseye.red - routines.msgBR(vars) - elseif string.lower(vars.ref) == 'blue' then - vars.ref = routines.DBs.missionData.bullseye.blue - routines.msgBR(vars) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - unit name of reference point -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] - -routines.msgBRA = function(vars) - if Unit.getByName(vars.ref) then - vars.ref = Unit.getByName(vars.ref):getPosition().p - if not vars.alt then - vars.alt = true - end - routines.msgBR(vars) - end -end --------------------------------------------------------------------------------------------- - ---[[ vars for routines.msgLeadingMGRS: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number, 0 to 5. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingMGRS = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingMGRSString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - - -end ---[[ vars for routines.msgLeadingLL: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. (optional) -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingLLString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - ---[[ -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.metric - boolean, if true, use km instead of NM. (optional) -vars.alt - boolean, if true, include altitude. (optional) -vars.ref - vec3/vec2 reference point. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local metric = vars.metric - local alt = vars.alt - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingBRString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, metric = metric, alt = alt, ref = ref} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - - -function spairs(t, order) - -- collect the keys - local keys = {} - for k in pairs(t) do keys[#keys+1] = k end - - -- if order function given, sort by it by passing the table and keys a, b, - -- otherwise just sort the keys - if order then - table.sort(keys, function(a,b) return order(t, a, b) end) - else - table.sort(keys) - end - - -- return the iterator function - local i = 0 - return function() - i = i + 1 - if keys[i] then - return keys[i], t[keys[i]] - end - end -end - - -function routines.IsPartOfGroupInZones( CargoGroup, LandingZones ) ---trace.f() - - local CurrentZoneID = nil - - if CargoGroup then - local CargoUnits = CargoGroup:getUnits() - for CargoUnitID, CargoUnit in pairs( CargoUnits ) do - if CargoUnit and CargoUnit:getLife() >= 1.0 then - CurrentZoneID = routines.IsUnitInZones( CargoUnit, LandingZones ) - if CurrentZoneID then - break - end - end - end - end - ---trace.r( "", "", { CurrentZoneID } ) - return CurrentZoneID -end - - - -function routines.IsUnitInZones( TransportUnit, LandingZones ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - -function routines.IsUnitNearZonesRadius( TransportUnit, LandingZones, ZoneRadius ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - - -function routines.IsStaticInZones( TransportStatic, LandingZones ) ---trace.f() - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local TransportStaticPos = TransportStatic:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - ---trace.r( "", "", { TransportZoneResult } ) - return TransportZoneResult -end - - -function routines.IsUnitInRadius( CargoUnit, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local CargoPos = CargoUnit:getPosition().p - local ReferenceP = ReferencePosition.p - - if (((CargoPos.x - ReferenceP.x)^2 + (CargoPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - end - - return Valid -end - -function routines.IsPartOfGroupInRadius( CargoGroup, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - Valid = routines.ValidateGroup( CargoGroup, "CargoGroup", Valid ) - - -- fill-up some local variables to support further calculations to determine location of units within the zone - local CargoUnits = CargoGroup:getUnits() - for CargoUnitId, CargoUnit in pairs( CargoUnits ) do - local CargoUnitPos = CargoUnit:getPosition().p --- env.info( 'routines.IsPartOfGroupInRadius: CargoUnitPos.x = ' .. CargoUnitPos.x .. ' CargoUnitPos.z = ' .. CargoUnitPos.z ) - local ReferenceP = ReferencePosition.p --- env.info( 'routines.IsPartOfGroupInRadius: ReferenceGroupPos.x = ' .. ReferenceGroupPos.x .. ' ReferenceGroupPos.z = ' .. ReferenceGroupPos.z ) - - if ((( CargoUnitPos.x - ReferenceP.x)^2 + (CargoUnitPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - break - end - end - - return Valid -end - - -function routines.ValidateString( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "string" then - if Variable == "" then - error( "routines.ValidateString: error: " .. VariableName .. " must be filled out!" ) - Valid = false - end - else - error( "routines.ValidateString: error: " .. VariableName .. " is not a string." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateNumber( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "number" then - else - error( "routines.ValidateNumber: error: " .. VariableName .. " is not a number." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid - -end - -function routines.ValidateGroup( Variable, VariableName, Valid ) ---trace.f() - - if Variable == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateZone( LandingZones, VariableName, Valid ) ---trace.f() - - if LandingZones == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - if trigger.misc.getZone( LandingZoneName ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZoneName .. " does not exist!" ) - Valid = false - break - end - end - else - if trigger.misc.getZone( LandingZones ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZones .. " does not exist!" ) - Valid = false - end - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateEnumeration( Variable, VariableName, Enum, Valid ) ---trace.f() - - local ValidVariable = false - - for EnumId, EnumData in pairs( Enum ) do - if Variable == EnumData then - ValidVariable = true - break - end - end - - if ValidVariable then - else - error( 'TransportValidateEnum: " .. VariableName .. " is not a valid type.' .. Variable ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.getGroupRoute(groupIdent, task) -- same as getGroupPoints but returns speed and formation type along with vec2 of point} - -- refactor to search by groupId and allow groupId and groupName as inputs - local gpId = groupIdent - if type(groupIdent) == 'string' and not tonumber(groupIdent) then - gpId = _DATABASE.Templates.Groups[groupIdent].groupId - end - - for coa_name, coa_data in pairs(env.mission.coalition) do - if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - for obj_type_name, obj_type_data in pairs(cntry_data) do - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" then -- only these types have points - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - for group_num, group_data in pairs(obj_type_data.group) do - if group_data and group_data.groupId == gpId then -- this is the group we are looking for - if group_data.route and group_data.route.points and #group_data.route.points > 0 then - local points = {} - - for point_num, point in pairs(group_data.route.points) do - local routeData = {} - if not point.point then - routeData.x = point.x - routeData.y = point.y - else - routeData.point = point.point --it's possible that the ME could move to the point = Vec2 notation. - end - routeData.form = point.action - routeData.speed = point.speed - routeData.alt = point.alt - routeData.alt_type = point.alt_type - routeData.airdromeId = point.airdromeId - routeData.helipadId = point.helipadId - routeData.type = point.type - routeData.action = point.action - if task then - routeData.task = point.task - end - points[point_num] = routeData - end - - return points - end - return - end --if group_data and group_data.name and group_data.name == 'groupname' - end --for group_num, group_data in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do -end - -routines.ground.patrolRoute = function(vars) - - - local tempRoute = {} - local useRoute = {} - local gpData = vars.gpData - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - local useGroupRoute - if not vars.useGroupRoute then - useGroupRoute = vars.gpData - else - useGroupRoute = vars.useGroupRoute - end - local routeProvided = false - if not vars.route then - if useGroupRoute then - tempRoute = routines.getGroupRoute(useGroupRoute) - end - else - useRoute = vars.route - local posStart = routines.getLeadPos(gpData) - useRoute[1] = routines.ground.buildWP(posStart, useRoute[1].action, useRoute[1].speed) - routeProvided = true - end - - - local overRideSpeed = vars.speed or 'default' - local pType = vars.pType - local offRoadForm = vars.offRoadForm or 'default' - local onRoadForm = vars.onRoadForm or 'default' - - if routeProvided == false and #tempRoute > 0 then - local posStart = routines.getLeadPos(gpData) - - - useRoute[#useRoute + 1] = routines.ground.buildWP(posStart, offRoadForm, overRideSpeed) - for i = 1, #tempRoute do - local tempForm = tempRoute[i].action - local tempSpeed = tempRoute[i].speed - - if offRoadForm == 'default' then - tempForm = tempRoute[i].action - end - if onRoadForm == 'default' then - onRoadForm = 'On Road' - end - if (string.lower(tempRoute[i].action) == 'on road' or string.lower(tempRoute[i].action) == 'onroad' or string.lower(tempRoute[i].action) == 'on_road') then - tempForm = onRoadForm - else - tempForm = offRoadForm - end - - if type(overRideSpeed) == 'number' then - tempSpeed = overRideSpeed - end - - - useRoute[#useRoute + 1] = routines.ground.buildWP(tempRoute[i], tempForm, tempSpeed) - end - - if pType and string.lower(pType) == 'doubleback' then - local curRoute = routines.utils.deepCopy(useRoute) - for i = #curRoute, 2, -1 do - useRoute[#useRoute + 1] = routines.ground.buildWP(curRoute[i], curRoute[i].action, curRoute[i].speed) - end - end - - useRoute[1].action = useRoute[#useRoute].action -- make it so the first WP matches the last WP - end - - local cTask3 = {} - local newPatrol = {} - newPatrol.route = useRoute - newPatrol.gpData = gpData:getName() - cTask3[#cTask3 + 1] = 'routines.ground.patrolRoute(' - cTask3[#cTask3 + 1] = routines.utils.oneLineSerialize(newPatrol) - cTask3[#cTask3 + 1] = ')' - cTask3 = table.concat(cTask3) - local tempTask = { - id = 'WrappedAction', - params = { - action = { - id = 'Script', - params = { - command = cTask3, - - }, - }, - }, - } - - - useRoute[#useRoute].task = tempTask - routines.goRoute(gpData, useRoute) - - return -end - -routines.ground.patrol = function(gpData, pType, form, speed) - local vars = {} - - if type(gpData) == 'table' and gpData:getName() then - gpData = gpData:getName() - end - - vars.useGroupRoute = gpData - vars.gpData = gpData - vars.pType = pType - vars.offRoadForm = form - vars.speed = speed - - routines.ground.patrolRoute(vars) - - return -end - -function routines.GetUnitHeight( CheckUnit ) ---trace.f( "routines" ) - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = UnitPoint.x, y = UnitPoint.z } - local UnitHeight = UnitPoint.y - - local LandHeight = land.getHeight( UnitPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - --trace.f( "routines", "Unit Height = " .. UnitHeight - LandHeight ) - - return UnitHeight - LandHeight - -end - - - -Su34Status = { status = {} } -boardMsgRed = { statusMsg = "" } -boardMsgAll = { timeMsg = "" } -SpawnSettings = {} -Su34MenuPath = {} -Su34Menus = 0 - - -function Su34AttackCarlVinson(groupName) ---trace.menu("", "Su34AttackCarlVinson") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupCarlVinson = Group.getByName("US Carl Vinson #001") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupCarlVinson ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupCarlVinson:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 1 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking carrier Carl Vinson. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackWest(groupName) ---trace.f("","Su34AttackWest") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipWest1 = Group.getByName("US Ship West #001") - local groupShipWest2 = Group.getByName("US Ship West #002") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipWest1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - if groupShipWest2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 2 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the west. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackNorth(groupName) ---trace.menu("","Su34AttackNorth") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipNorth1 = Group.getByName("US Ship North #001") - local groupShipNorth2 = Group.getByName("US Ship North #002") - local groupShipNorth3 = Group.getByName("US Ship North #003") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipNorth1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth3 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth3:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - Su34Status.status[groupName] = 3 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the north. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Orbit(groupName) ---trace.menu("","Su34Orbit") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - controllerSu34:pushTask( {id = 'ControlledTask', params = { task = { id = 'Orbit', params = { pattern = AI.Task.OrbitPattern.RACE_TRACK } }, stopCondition = { duration = 600 } } } ) - Su34Status.status[groupName] = 4 - MessageToRed( string.format('%s: ',groupName) .. 'In orbit and awaiting further instructions. ', 10, 'RedStatus' .. groupName ) -end - -function Su34TakeOff(groupName) ---trace.menu("","Su34TakeOff") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 8 - MessageToRed( string.format('%s: ',groupName) .. 'Take-Off. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Hold(groupName) ---trace.menu("","Su34Hold") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 5 - MessageToRed( string.format('%s: ',groupName) .. 'Holding Weapons. ', 10, 'RedStatus' .. groupName ) -end - -function Su34RTB(groupName) ---trace.menu("","Su34RTB") - Su34Status.status[groupName] = 6 - MessageToRed( string.format('%s: ',groupName) .. 'Return to Krasnodar. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Destroyed(groupName) ---trace.menu("","Su34Destroyed") - Su34Status.status[groupName] = 7 - MessageToRed( string.format('%s: ',groupName) .. 'Destroyed. ', 30, 'RedStatus' .. groupName ) -end - -function GroupAlive( groupName ) ---trace.menu("","GroupAlive") - local groupTest = Group.getByName( groupName ) - - local groupExists = false - - if groupTest then - groupExists = groupTest:isExist() - end - - --trace.r( "", "", { groupExists } ) - return groupExists -end - -function Su34IsDead() ---trace.f() - -end - -function Su34OverviewStatus() ---trace.menu("","Su34OverviewStatus") - local msg = "" - local currentStatus = 0 - local Exists = false - - for groupName, currentStatus in pairs(Su34Status.status) do - - env.info(('Su34 Overview Status: GroupName = ' .. groupName )) - Alive = GroupAlive( groupName ) - - if Alive then - if currentStatus == 1 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking carrier Carl Vinson. " - elseif currentStatus == 2 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking supporting ships in the west. " - elseif currentStatus == 3 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking invading ships in the north. " - elseif currentStatus == 4 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "In orbit and awaiting further instructions. " - elseif currentStatus == 5 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Holding Weapons. " - elseif currentStatus == 6 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Return to Krasnodar. " - elseif currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - elseif currentStatus == 8 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Take-Off. " - end - else - if currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - else - Su34Destroyed(groupName) - end - end - end - - boardMsgRed.statusMsg = msg -end - - -function UpdateBoardMsg() ---trace.f() - Su34OverviewStatus() - MessageToRed( boardMsgRed.statusMsg, 15, 'RedStatus' ) -end - -function MusicReset( flg ) ---trace.f() - trigger.action.setUserFlag(95,flg) -end - -function PlaneActivate(groupNameFormat, flg) ---trace.f() - local groupName = groupNameFormat .. string.format("#%03d", trigger.misc.getUserFlag(flg)) - --trigger.action.outText(groupName,10) - trigger.action.activateGroup(Group.getByName(groupName)) -end - -function Su34Menu(groupName) ---trace.f() - - --env.info(( 'Su34Menu(' .. groupName .. ')' )) - local groupSu34 = Group.getByName( groupName ) - - if Su34Status.status[groupName] == 1 or - Su34Status.status[groupName] == 2 or - Su34Status.status[groupName] == 3 or - Su34Status.status[groupName] == 4 or - Su34Status.status[groupName] == 5 then - if Su34MenuPath[groupName] == nil then - if planeMenuPath == nil then - planeMenuPath = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "SU-34 anti-ship flights", - nil - ) - end - Su34MenuPath[groupName] = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "Flight " .. groupName, - planeMenuPath - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack carrier Carl Vinson", - Su34MenuPath[groupName], - Su34AttackCarlVinson, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the west", - Su34MenuPath[groupName], - Su34AttackWest, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the north", - Su34MenuPath[groupName], - Su34AttackNorth, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Hold position and await instructions", - Su34MenuPath[groupName], - Su34Orbit, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Report status", - Su34MenuPath[groupName], - Su34OverviewStatus - ) - end - else - if Su34MenuPath[groupName] then - missionCommands.removeItemForCoalition(coalition.side.RED, Su34MenuPath[groupName]) - end - end -end - ---- Obsolete function, but kept to rework in framework. - -function ChooseInfantry ( TeleportPrefixTable, TeleportMax ) ---trace.f("Spawn") - --env.info(( 'ChooseInfantry: ' )) - - TeleportPrefixTableCount = #TeleportPrefixTable - TeleportPrefixTableIndex = math.random( 1, TeleportPrefixTableCount ) - - --env.info(( 'ChooseInfantry: TeleportPrefixTableIndex = ' .. TeleportPrefixTableIndex .. ' TeleportPrefixTableCount = ' .. TeleportPrefixTableCount .. ' TeleportMax = ' .. TeleportMax )) - - local TeleportFound = false - local TeleportLoop = true - local Index = TeleportPrefixTableIndex - local TeleportPrefix = '' - - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableCount then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 1 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - - if TeleportFound == false then - TeleportLoop = true - Index = 1 - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableIndex then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 2 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - end - - local TeleportGroupName = '' - if TeleportFound == true then - TeleportGroupName = TeleportPrefix .. string.format("#%03d", SpawnSettings[TeleportPrefix]['SpawnCount'] ) - else - TeleportGroupName = '' - end - - --env.info(('ChooseInfantry: TeleportGroupName = ' .. TeleportGroupName )) - --env.info(('ChooseInfantry: return')) - - return TeleportGroupName -end - -SpawnedInfantry = 0 - -function LandCarrier ( CarrierGroup, LandingZonePrefix ) ---trace.f() - --env.info(( 'LandCarrier: ' )) - --env.info(( 'LandCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'LandCarrier: LandingZone = ' .. LandingZonePrefix )) - - local controllerGroup = CarrierGroup:getController() - - local LandingZone = trigger.misc.getZone(LandingZonePrefix) - local LandingZonePos = {} - LandingZonePos.x = LandingZone.point.x + math.random(LandingZone.radius * -1, LandingZone.radius) - LandingZonePos.y = LandingZone.point.z + math.random(LandingZone.radius * -1, LandingZone.radius) - - controllerGroup:pushTask( { id = 'Land', params = { point = LandingZonePos, durationFlag = true, duration = 10 } } ) - - --env.info(( 'LandCarrier: end' )) -end - -EscortCount = 0 -function EscortCarrier ( CarrierGroup, EscortPrefix, EscortLastWayPoint, EscortEngagementDistanceMax, EscortTargetTypes ) ---trace.f() - --env.info(( 'EscortCarrier: ' )) - --env.info(( 'EscortCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'EscortCarrier: EscortPrefix = ' .. EscortPrefix )) - - local CarrierName = CarrierGroup:getName() - - local EscortMission = {} - local CarrierMission = {} - - local EscortMission = SpawnMissionGroup( EscortPrefix ) - local CarrierMission = SpawnMissionGroup( CarrierGroup:getName() ) - - if EscortMission ~= nil and CarrierMission ~= nil then - - EscortCount = EscortCount + 1 - EscortMissionName = string.format( EscortPrefix .. '#Escort %s', CarrierName ) - EscortMission.name = EscortMissionName - EscortMission.groupId = nil - EscortMission.lateActivation = false - EscortMission.taskSelected = false - - local EscortUnits = #EscortMission.units - for u = 1, EscortUnits do - EscortMission.units[u].name = string.format( EscortPrefix .. '#Escort %s %02d', CarrierName, u ) - EscortMission.units[u].unitId = nil - end - - - EscortMission.route.points[1].task = { id = "ComboTask", - params = - { - tasks = - { - [1] = - { - enabled = true, - auto = false, - id = "Escort", - number = 1, - params = - { - lastWptIndexFlagChangedManually = false, - groupId = CarrierGroup:getID(), - lastWptIndex = nil, - lastWptIndexFlag = false, - engagementDistMax = EscortEngagementDistanceMax, - targetTypes = EscortTargetTypes, - pos = - { - y = 20, - x = 20, - z = 0, - } -- end of ["pos"] - } -- end of ["params"] - } -- end of [1] - } -- end of ["tasks"] - } -- end of ["params"] - } -- end of ["task"] - - SpawnGroupAdd( EscortPrefix, EscortMission ) - - end -end - -function SendMessageToCarrier( CarrierGroup, CarrierMessage ) ---trace.f() - - if CarrierGroup ~= nil then - MessageToGroup( CarrierGroup, CarrierMessage, 30, 'Carrier/' .. CarrierGroup:getName() ) - end - -end - -function MessageToGroup( MsgGroup, MsgText, MsgTime, MsgName ) ---trace.f() - - if type(MsgGroup) == 'string' then - --env.info( 'MessageToGroup: Converted MsgGroup string "' .. MsgGroup .. '" into a Group structure.' ) - MsgGroup = Group.getByName( MsgGroup ) - end - - if MsgGroup ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { MsgGroup:getUnits()[1]:getName() } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - --env.info(('MessageToGroup: Message sent to ' .. MsgGroup:getUnits()[1]:getName() .. ' -> ' .. MsgText )) - end -end - -function MessageToUnit( UnitName, MsgText, MsgTime, MsgName ) ---trace.f() - - if UnitName ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { UnitName } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - end -end - -function MessageToAll( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "Message", MsgTime, MsgName ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE ) -end - -function MessageToRed( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "To Red Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED ) -end - -function MessageToBlue( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "To Blue Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED ) -end - -function getCarrierHeight( CarrierGroup ) ---trace.f() - - if CarrierGroup ~= nil then - if table.getn(CarrierGroup:getUnits()) == 1 then - local CarrierUnit = CarrierGroup:getUnits()[1] - local CurrentPoint = CarrierUnit:getPoint() - - local CurrentPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local CarrierHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return CarrierHeight - LandHeight - else - return 999999 - end - else - return 999999 - end - -end - -function GetUnitHeight( CheckUnit ) ---trace.f() - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local UnitHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return UnitHeight - LandHeight - -end - - -_MusicTable = {} -_MusicTable.Files = {} -_MusicTable.Queue = {} -_MusicTable.FileCnt = 0 - - -function MusicRegister( SndRef, SndFile, SndTime ) ---trace.f() - - env.info(( 'MusicRegister: SndRef = ' .. SndRef )) - env.info(( 'MusicRegister: SndFile = ' .. SndFile )) - env.info(( 'MusicRegister: SndTime = ' .. SndTime )) - - - _MusicTable.FileCnt = _MusicTable.FileCnt + 1 - - _MusicTable.Files[_MusicTable.FileCnt] = {} - _MusicTable.Files[_MusicTable.FileCnt].Ref = SndRef - _MusicTable.Files[_MusicTable.FileCnt].File = SndFile - _MusicTable.Files[_MusicTable.FileCnt].Time = SndTime - - if not _MusicTable.Function then - _MusicTable.Function = routines.scheduleFunction( MusicScheduler, { }, timer.getTime() + 10, 10) - end - -end - -function MusicToPlayer( SndRef, PlayerName, SndContinue ) ---trace.f() - - --env.info(( 'MusicToPlayer: SndRef = ' .. SndRef )) - - local PlayerUnits = AlivePlayerUnits() - for PlayerUnitIdx, PlayerUnit in pairs(PlayerUnits) do - local PlayerUnitName = PlayerUnit:getPlayerName() - --env.info(( 'MusicToPlayer: PlayerUnitName = ' .. PlayerUnitName )) - if PlayerName == PlayerUnitName then - PlayerGroup = PlayerUnit:getGroup() - if PlayerGroup then - --env.info(( 'MusicToPlayer: PlayerGroup = ' .. PlayerGroup:getName() )) - MusicToGroup( SndRef, PlayerGroup, SndContinue ) - end - break - end - end - - --env.info(( 'MusicToPlayer: end' )) - -end - -function MusicToGroup( SndRef, SndGroup, SndContinue ) ---trace.f() - - --env.info(( 'MusicToGroup: SndRef = ' .. SndRef )) - - if SndGroup ~= nil then - if _MusicTable and _MusicTable.FileCnt > 0 then - if SndGroup:isExist() then - if MusicCanStart(SndGroup:getUnit(1):getPlayerName()) then - --env.info(( 'MusicToGroup: OK for Sound.' )) - local SndIdx = 0 - if SndRef == '' then - --env.info(( 'MusicToGroup: SndRef as empty. Queueing at random.' )) - SndIdx = math.random( 1, _MusicTable.FileCnt ) - else - for SndIdx = 1, _MusicTable.FileCnt do - if _MusicTable.Files[SndIdx].Ref == SndRef then - break - end - end - end - --env.info(( 'MusicToGroup: SndIdx = ' .. SndIdx )) - --env.info(( 'MusicToGroup: Queueing Music ' .. _MusicTable.Files[SndIdx].File .. ' for Group ' .. SndGroup:getID() )) - trigger.action.outSoundForGroup( SndGroup:getID(), _MusicTable.Files[SndIdx].File ) - MessageToGroup( SndGroup, 'Playing ' .. _MusicTable.Files[SndIdx].File, 15, 'Music-' .. SndGroup:getUnit(1):getPlayerName() ) - - local SndQueueRef = SndGroup:getUnit(1):getPlayerName() - if _MusicTable.Queue[SndQueueRef] == nil then - _MusicTable.Queue[SndQueueRef] = {} - end - _MusicTable.Queue[SndQueueRef].Start = timer.getTime() - _MusicTable.Queue[SndQueueRef].PlayerName = SndGroup:getUnit(1):getPlayerName() - _MusicTable.Queue[SndQueueRef].Group = SndGroup - _MusicTable.Queue[SndQueueRef].ID = SndGroup:getID() - _MusicTable.Queue[SndQueueRef].Ref = SndIdx - _MusicTable.Queue[SndQueueRef].Continue = SndContinue - _MusicTable.Queue[SndQueueRef].Type = Group - end - end - end - end -end - -function MusicCanStart(PlayerName) ---trace.f() - - --env.info(( 'MusicCanStart:' )) - - local MusicOut = false - - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicCanStart: PlayerName = ' .. PlayerName )) - local PlayerFound = false - local MusicStart = 0 - local MusicTime = 0 - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.PlayerName == PlayerName then - PlayerFound = true - MusicStart = SndQueue.Start - MusicTime = _MusicTable.Files[SndQueue.Ref].Time - break - end - end - if PlayerFound then - --env.info(( 'MusicCanStart: MusicStart = ' .. MusicStart )) - --env.info(( 'MusicCanStart: MusicTime = ' .. MusicTime )) - --env.info(( 'MusicCanStart: timer.getTime() = ' .. timer.getTime() )) - - if MusicStart + MusicTime <= timer.getTime() then - MusicOut = true - end - else - MusicOut = true - end - end - - if MusicOut then - --env.info(( 'MusicCanStart: true' )) - else - --env.info(( 'MusicCanStart: false' )) - end - - return MusicOut -end - -function MusicScheduler() ---trace.scheduled("", "MusicScheduler") - - --env.info(( 'MusicScheduler:' )) - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicScheduler: Walking Sound Queue.')) - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.Continue then - if MusicCanStart(SndQueue.PlayerName) then - --env.info(('MusicScheduler: MusicToGroup')) - MusicToPlayer( '', SndQueue.PlayerName, true ) - end - end - end - end - -end - - -env.info(( 'Init: Scripts Loaded v1.1' )) - ---- BASE classes. --- --- @{#BASE} class --- ============== --- The @{#BASE} class is the super class for most of the classes defined within MOOSE. --- --- It handles: --- --- * The construction and inheritance of child classes. --- * The tracing of objects during mission execution within the DCS.log file (under saved games folder). --- --- Note: Normally you would not use the BASE class unless you are extending the MOOSE framework with new classes. --- --- BASE Trace functionality --- ======================== --- The BASE class contains trace methods to trace progress within a mission execution of a certain object. --- Note that these trace methods are inherited by each MOOSE class interiting BASE. --- As such, each object created from derived class from BASE can use the tracing functions to trace its execution. --- --- Trace a function call --- --------------------- --- There are basically 3 types of tracing methods available within BASE: --- --- * @{#BASE.F}: Trace the beginning of a function and its given parameters. --- * @{#BASE.T}: Trace further logic within a function giving optional variables or parameters. --- * @{#BASE.E}: Trace an execption within a function giving optional variables or parameters. An exception will always be traced. --- --- Tracing levels --- -------------- --- There are 3 tracing levels within MOOSE. --- These tracing levels were defined to avoid bulks of tracing to be generated by lots of objects. --- --- As such, the F and T methods have additional variants to trace level 2 and 3 respectively: --- --- * @{#BASE.F2}: Trace the beginning of a function and its given parameters with tracing level 2. --- * @{#BASE.F3}: Trace the beginning of a function and its given parameters with tracing level 3. --- * @{#BASE.T2}: Trace further logic within a function giving optional variables or parameters with tracing level 2. --- * @{#BASE.T3}: Trace further logic within a function giving optional variables or parameters with tracing level 3. --- --- BASE Inheritance support --- ======================== --- The following methods are available to support inheritance: --- --- * @{#BASE.Inherit}: Inherits from a class. --- * @{#BASE.Inherited}: Returns the parent class from the class. --- --- Future --- ====== --- Further methods may be added to BASE whenever there is a need to make "overall" functions available within MOOSE. --- --- ==== --- --- @module Base --- @author FlightControl - -Include.File( "Routines" ) - -local _TraceOn = true -local _TraceLevel = 1 -local _TraceClass = { - --DATABASE = true, - --SEAD = true, - --DESTROYBASETASK = true, - --MOVEMENT = true, - --SPAWN = true, - --STAGE = true, - --ZONE = true, - --GROUP = true, - --UNIT = true, - --CLIENT = true, - --CARGO = true, - --CARGO_GROUP = true, - --CARGO_PACKAGE = true, - --CARGO_SLINGLOAD = true, - --CARGO_ZONE = true, - --CLEANUP = true, - --MENU_CLIENT = true, - --MENU_CLIENT_COMMAND = true, - --ESCORT = true, - } -local _TraceClassMethod = {} - ---- The BASE Class --- @type BASE --- @field ClassName The name of the class. --- @field ClassID The ID number of the class. -BASE = { - ClassName = "BASE", - ClassID = 0, - Events = {} -} - ---- The Formation Class --- @type FORMATION --- @field Cone A cone formation. -FORMATION = { - Cone = "Cone" -} - - - ---- The base constructor. This is the top top class of all classed defined within the MOOSE. --- Any new class needs to be derived from this class for proper inheritance. --- @param #BASE self --- @return #BASE The new instance of the BASE class. --- @usage --- function TASK:New() --- --- local self = BASE:Inherit( self, BASE:New() ) --- --- -- assign Task default values during construction --- self.TaskBriefing = "Task: No Task." --- self.Time = timer.getTime() --- self.ExecuteStage = _TransportExecuteStage.NONE --- --- return self --- end --- @todo need to investigate if the deepCopy is really needed... Don't think so. -function BASE:New() - local Child = routines.utils.deepCopy( self ) - local Parent = {} - setmetatable( Child, Parent ) - Child.__index = Child - self.ClassID = self.ClassID + 1 - Child.ClassID = self.ClassID - --Child.AddEvent( Child, S_EVENT_BIRTH, Child.EventBirth ) - return Child -end - ---- This is the worker method to inherit from a parent class. --- @param #BASE self --- @param Child is the Child class that inherits. --- @param #BASE Parent is the Parent class that the Child inherits from. --- @return #BASE Child -function BASE:Inherit( Child, Parent ) - local Child = routines.utils.deepCopy( Child ) - local Parent = routines.utils.deepCopy( Parent ) - if Child ~= nil then - setmetatable( Child, Parent ) - Child.__index = Child - end - --Child.ClassName = Child.ClassName .. '.' .. Child.ClassID - self:T( 'Inherited from ' .. Parent.ClassName ) - return Child -end - ---- This is the worker method to retrieve the Parent class. --- @param #BASE self --- @param #BASE Child is the Child class from which the Parent class needs to be retrieved. --- @return #BASE -function BASE:Inherited( Child ) - local Parent = getmetatable( Child ) --- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName ) - return Parent -end - ---- Get the ClassName + ClassID of the class instance. --- The ClassName + ClassID is formatted as '%s#%09d'. --- @param #BASE self --- @return #string The ClassName + ClassID of the class instance. -function BASE:GetClassNameAndID() - return string.format( '%s#%09d', self:GetClassName(), self:GetClassID() ) -end - ---- Get the ClassName of the class instance. --- @param #BASE self --- @return #string The ClassName of the class instance. -function BASE:GetClassName() - return self.ClassName -end - ---- Get the ClassID of the class instance. --- @param #BASE self --- @return #string The ClassID of the class instance. -function BASE:GetClassID() - return self.ClassID -end - ---- Set a new listener for the class. --- @param self --- @param DCSTypes#Event Event --- @param #function EventFunction --- @return #BASE -function BASE:AddEvent( Event, EventFunction ) - self:F( Event ) - - self.Events[#self.Events+1] = {} - self.Events[#self.Events].Event = Event - self.Events[#self.Events].EventFunction = EventFunction - self.Events[#self.Events].EventEnabled = false - - return self -end - ---- Returns the event dispatcher --- @param #BASE self --- @return Event#EVENT -function BASE:Event() - - return _EVENTDISPATCHER -end - - - - - ---- Enable the event listeners for the class. --- @param #BASE self --- @return #BASE -function BASE:EnableEvents() - self:F( #self.Events ) - - for EventID, Event in pairs( self.Events ) do - Event.Self = self - Event.EventEnabled = true - end - self.Events.Handler = world.addEventHandler( self ) - - return self -end - - ---- Disable the event listeners for the class. --- @param #BASE self --- @return #BASE -function BASE:DisableEvents() - self:F() - - world.removeEventHandler( self ) - for EventID, Event in pairs( self.Events ) do - Event.Self = nil - Event.EventEnabled = false - end - - return self -end - - -local BaseEventCodes = { - "S_EVENT_SHOT", - "S_EVENT_HIT", - "S_EVENT_TAKEOFF", - "S_EVENT_LAND", - "S_EVENT_CRASH", - "S_EVENT_EJECTION", - "S_EVENT_REFUELING", - "S_EVENT_DEAD", - "S_EVENT_PILOT_DEAD", - "S_EVENT_BASE_CAPTURED", - "S_EVENT_MISSION_START", - "S_EVENT_MISSION_END", - "S_EVENT_TOOK_CONTROL", - "S_EVENT_REFUELING_STOP", - "S_EVENT_BIRTH", - "S_EVENT_HUMAN_FAILURE", - "S_EVENT_ENGINE_STARTUP", - "S_EVENT_ENGINE_SHUTDOWN", - "S_EVENT_PLAYER_ENTER_UNIT", - "S_EVENT_PLAYER_LEAVE_UNIT", - "S_EVENT_PLAYER_COMMENT", - "S_EVENT_SHOOTING_START", - "S_EVENT_SHOOTING_END", - "S_EVENT_MAX", -} - ---onEvent( {[1]="S_EVENT_BIRTH",[2]={["subPlace"]=5,["time"]=0,["initiator"]={["id_"]=16884480,},["place"]={["id_"]=5000040,},["id"]=15,["IniUnitName"]="US F-15C@RAMP-Air Support Mountains#001-01",},} --- Event = { --- id = enum world.event, --- time = Time, --- initiator = Unit, --- target = Unit, --- place = Unit, --- subPlace = enum world.BirthPlace, --- weapon = Weapon --- } - ---- Creation of a Birth Event. --- @param #BASE self --- @param DCSTypes#Time EventTime The time stamp of the event. --- @param DCSObject#Object Initiator The initiating object of the event. --- @param #string IniUnitName The initiating unit name. --- @param place --- @param subplace -function BASE:CreateEventBirth( EventTime, Initiator, IniUnitName, place, subplace ) - self:F( { EventTime, Initiator, IniUnitName, place, subplace } ) - - local Event = { - id = world.event.S_EVENT_BIRTH, - time = EventTime, - initiator = Initiator, - IniUnitName = IniUnitName, - place = place, - subplace = subplace - } - - world.onEvent( Event ) -end - ---- Creation of a Crash Event. --- @param #BASE self --- @param DCSTypes#Time EventTime The time stamp of the event. --- @param DCSObject#Object Initiator The initiating object of the event. -function BASE:CreateEventCrash( EventTime, Initiator ) - self:F( { EventTime, Initiator } ) - - local Event = { - id = world.event.S_EVENT_CRASH, - time = EventTime, - initiator = Initiator, - } - - world.onEvent( Event ) -end - --- TODO: Complete DCSTypes#Event structure. ---- The main event handling function... This function captures all events generated for the class. --- @param #BASE self --- @param DCSTypes#Event event -function BASE:onEvent(event) - --self:F( { BaseEventCodes[event.id], event } ) - - if self then - for EventID, EventObject in pairs( self.Events ) do - if EventObject.EventEnabled then - --env.info( 'onEvent Table EventObject.Self = ' .. tostring(EventObject.Self) ) - --env.info( 'onEvent event.id = ' .. tostring(event.id) ) - --env.info( 'onEvent EventObject.Event = ' .. tostring(EventObject.Event) ) - if event.id == EventObject.Event then - if self == EventObject.Self then - if event.initiator and event.initiator:isExist() then - event.IniUnitName = event.initiator:getName() - end - if event.target and event.target:isExist() then - event.TgtUnitName = event.target:getName() - end - --self:T( { BaseEventCodes[event.id], event } ) - --EventObject.EventFunction( self, event ) - end - end - end - end - end -end - --- Trace section - --- Log a trace (only shown when trace is on) --- TODO: Make trace function using variable parameters. - ---- Set trace level --- @param #BASE self --- @param #number Level -function BASE:TraceLevel( Level ) - _TraceLevel = Level - self:E( "Tracing level " .. Level ) -end - ---- Set tracing for a class --- @param #BASE self --- @param #string Class -function BASE:TraceClass( Class ) - _TraceClass[Class] = true - _TraceClassMethod[Class] = {} - self:E( "Tracing class " .. Class ) -end - ---- Set tracing for a specific method of class --- @param #BASE self --- @param #string Class --- @param #string Method -function BASE:TraceClassMethod( Class, Method ) - if not _TraceClassMethod[Class] then - _TraceClassMethod[Class] = {} - _TraceClassMethod[Class].Method = {} - end - _TraceClassMethod[Class].Method[Method] = true - self:E( "Tracing method " .. Method .. " of class " .. Class ) -end - ---- Trace a function call. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F( Arguments ) - - if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "F", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function call level 2. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F2( Arguments ) - - if _TraceLevel >= 2 then - self:F( Arguments ) - end - -end - ---- Trace a function call level 3. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F3( Arguments ) - - if _TraceLevel >= 3 then - self:F( Arguments ) - end - -end - ---- Trace a function logic. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T( Arguments ) - - if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s" , LineCurrent, LineFrom, "T", self.ClassName, self.ClassID, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function logic level 2. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T2( Arguments ) - - if _TraceLevel >= 2 then - self:T( Arguments ) - end - -end - ---- Trace a function logic level 3. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T3( Arguments ) - - if _TraceLevel >= 3 then - self:T( Arguments ) - end - -end - ---- Log an exception which will be traced always. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:E( Arguments ) - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = -1 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "E", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) -end - - - ---- Models time events calling event handing functions. --- --- @{SCHEDULER} class --- =================== --- The @{SCHEDULER} class models time events calling given event handling functions. --- --- SCHEDULER constructor --- ===================== --- The SCHEDULER class is quite easy to use: --- --- * @{#SCHEDULER.New}: Setup a new scheduler and start it with the specified parameters. --- --- SCHEDULER timer methods --- ======================= --- The SCHEDULER can be stopped and restarted with the following methods: --- --- * @{#SCHEDULER.Start}: (Re-)Start the scheduler. --- * @{#SCHEDULER.Start}: Stop the scheduler. --- --- @module Scheduler --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) - - ---- The SCHEDULER class --- @type SCHEDULER --- @extends Base#BASE -SCHEDULER = { - ClassName = "SCHEDULER", -} - - ---- Constructor. --- @param #SCHEDULER self --- @param #table TimeEventObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. --- @param #function TimeEventFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in TimeEventFunctionArguments. --- @param #table TimeEventFunctionArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. --- @param #number StartSeconds Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. --- @param #number RepeatSecondsInterval Specifies the interval in seconds when the scheduler will call the event function. --- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. --- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. --- @return #SCHEDULER self -function SCHEDULER:New( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( { TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) - - self.TimeEventObject = TimeEventObject - self.TimeEventFunction = TimeEventFunction - self.TimeEventFunctionArguments = TimeEventFunctionArguments - self.StartSeconds = StartSeconds - - if RepeatSecondsInterval then - self.RepeatSecondsInterval = RepeatSecondsInterval - else - self.RepeatSecondsInterval = 0 - end - - if RandomizationFactor then - self.RandomizationFactor = RandomizationFactor - else - self.RandomizationFactor = 0 - end - - if StopSeconds then - self.StopSeconds = StopSeconds - end - - self.Repeat = false - - self.StartTime = timer.getTime() - - self:Start() - - return self -end - ---- (Re-)Starts the scheduler. --- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Start() - self:F2( self.TimeEventObject ) - - self.Repeat = true - timer.scheduleFunction( self._Scheduler, self, timer.getTime() + self.StartSeconds + .01 ) - - return self -end - ---- Stops the scheduler. --- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Stop() - self:F2( self.TimeEventObject ) - - self.Repeat = false - - return self -end - --- Private Functions - -function SCHEDULER:_Scheduler() - self:F2( self.TimeEventFunctionArguments ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in SCHEDULER function:" .. errmsg ) - env.info( debug.traceback() ) - - return errmsg - end - - local Status, Result - if self.TimeEventObject then - Status, Result = xpcall( function() return self.TimeEventFunction( self.TimeEventObject, unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) - else - Status, Result = xpcall( function() return self.TimeEventFunction( unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) - end - - self:T( { Status, Result } ) - - if Status and ( ( not Result ) or ( Result and Result ~= false ) ) then - if self.Repeat and ( not self.StopSeconds or ( self.StopSeconds and timer.getTime() <= self.StartTime + self.StopSeconds ) ) then - timer.scheduleFunction( - self._Scheduler, - self, - timer.getTime() + self.RepeatSecondsInterval + math.random( - ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ), ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ) ) + 0.01 - ) - end - end - -end - - - - - - - - ---- The EVENT class models an efficient event handling process between other classes and its units, weapons. --- @module Event --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) - ---- The EVENT structure --- @type EVENT --- @field #EVENT.Events Events -EVENT = { - ClassName = "EVENT", - ClassID = 0, -} - -local _EVENTCODES = { - "S_EVENT_SHOT", - "S_EVENT_HIT", - "S_EVENT_TAKEOFF", - "S_EVENT_LAND", - "S_EVENT_CRASH", - "S_EVENT_EJECTION", - "S_EVENT_REFUELING", - "S_EVENT_DEAD", - "S_EVENT_PILOT_DEAD", - "S_EVENT_BASE_CAPTURED", - "S_EVENT_MISSION_START", - "S_EVENT_MISSION_END", - "S_EVENT_TOOK_CONTROL", - "S_EVENT_REFUELING_STOP", - "S_EVENT_BIRTH", - "S_EVENT_HUMAN_FAILURE", - "S_EVENT_ENGINE_STARTUP", - "S_EVENT_ENGINE_SHUTDOWN", - "S_EVENT_PLAYER_ENTER_UNIT", - "S_EVENT_PLAYER_LEAVE_UNIT", - "S_EVENT_PLAYER_COMMENT", - "S_EVENT_SHOOTING_START", - "S_EVENT_SHOOTING_END", - "S_EVENT_MAX", -} - ---- The Event structure --- @type EVENTDATA --- @field id --- @field initiator --- @field target --- @field weapon --- @field IniDCSUnit --- @field IniDCSUnitName --- @field IniDCSGroup --- @field IniDCSGroupName --- @field TgtDCSUnit --- @field TgtDCSUnitName --- @field TgtDCSGroup --- @field TgtDCSGroupName --- @field Weapon --- @field WeaponName --- @field WeaponTgtDCSUnit - ---- The Events structure --- @type EVENT.Events --- @field #number IniUnit - -function EVENT:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F2() - self.EventHandler = world.addEventHandler( self ) - return self -end - -function EVENT:EventText( EventID ) - - local EventText = _EVENTCODES[EventID] - - return EventText -end - - ---- Initializes the Events structure for the event --- @param #EVENT self --- @param DCSWorld#world.event EventID --- @param #string EventClass --- @return #EVENT.Events -function EVENT:Init( EventID, EventClass ) - self:F3( { _EVENTCODES[EventID], EventClass } ) - if not self.Events[EventID] then - self.Events[EventID] = {} - end - if not self.Events[EventID][EventClass] then - self.Events[EventID][EventClass] = {} - end - return self.Events[EventID][EventClass] -end - - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @param #function OnEventFunction --- @return #EVENT -function EVENT:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, OnEventFunction ) - self:F2( EventTemplate.name ) - - for EventUnitID, EventUnit in pairs( EventTemplate.units ) do - OnEventFunction( self, EventUnit.name, EventFunction, EventSelf ) - end - return self -end - ---- Set a new listener for an S_EVENT_X event independent from a unit or a weapon. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventGeneric( EventFunction, EventSelf, EventID ) - self:F2( { EventID } ) - - local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) - Event.EventFunction = EventFunction - Event.EventSelf = EventSelf - return self -end - - ---- Set a new listener for an S_EVENT_X event --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, EventID ) - self:F2( EventDCSUnitName ) - - local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) - if not Event.IniUnit then - Event.IniUnit = {} - end - Event.IniUnit[EventDCSUnitName] = {} - Event.IniUnit[EventDCSUnitName].EventFunction = EventFunction - Event.IniUnit[EventDCSUnitName].EventSelf = EventSelf - return self -end - - ---- Create an OnBirth event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnBirthForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnBirthForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_BIRTH event, and registers the unit born. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnBirth( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) - - return self -end - ---- Set a new listener for an S_EVENT_BIRTH event. --- @param #EVENT self --- @param #string EventDCSUnitName The id of the unit for the event to be handled. --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnBirthForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) - - return self -end - ---- Create an OnCrash event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnCrashForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnCrashForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_CRASH event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnCrash( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_CRASH ) - - return self -end - ---- Set a new listener for an S_EVENT_CRASH event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnCrashForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_CRASH ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnDeadForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnDeadForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_DEAD event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnDead( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_DEAD ) - - return self -end - - ---- Set a new listener for an S_EVENT_DEAD event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_DEAD ) - - return self -end - ---- Set a new listener for an S_EVENT_PILOT_DEAD event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPilotDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_PILOT_DEAD ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnLandForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnLandForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_LAND event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnLandForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_LAND ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnTakeOffForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnTakeOffForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_TAKEOFF event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnTakeOffForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_TAKEOFF ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineShutDownForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnEngineShutDownForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_ENGINE_SHUTDOWN event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineShutDownForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_SHUTDOWN ) - - return self -end - ---- Set a new listener for an S_EVENT_ENGINE_STARTUP event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineStartUpForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_STARTUP ) - - return self -end - ---- Set a new listener for an S_EVENT_SHOT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnShot( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_SHOT ) - - return self -end - ---- Set a new listener for an S_EVENT_SHOT event for a unit. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnShotForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_SHOT ) - - return self -end - ---- Set a new listener for an S_EVENT_HIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnHit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_HIT ) - - return self -end - ---- Set a new listener for an S_EVENT_HIT event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnHitForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_HIT ) - - return self -end - ---- Set a new listener for an S_EVENT_PLAYER_ENTER_UNIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPlayerEnterUnit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_ENTER_UNIT ) - - return self -end - ---- Set a new listener for an S_EVENT_PLAYER_LEAVE_UNIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPlayerLeaveUnit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_LEAVE_UNIT ) - - return self -end - - - -function EVENT:onEvent( Event ) - self:F2( { _EVENTCODES[Event.id], Event } ) - - if self and self.Events and self.Events[Event.id] then - if Event.initiator and Event.initiator:getCategory() == Object.Category.UNIT then - Event.IniDCSUnit = Event.initiator - Event.IniDCSGroup = Event.IniDCSUnit:getGroup() - Event.IniDCSUnitName = Event.IniDCSUnit:getName() - Event.IniDCSGroupName = "" - if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then - Event.IniDCSGroupName = Event.IniDCSGroup:getName() - end - end - if Event.target then - if Event.target and Event.target:getCategory() == Object.Category.UNIT then - Event.TgtDCSUnit = Event.target - Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() - Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() - Event.TgtDCSGroupName = "" - if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then - Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() - end - end - end - if Event.weapon then - Event.Weapon = Event.weapon - Event.WeaponName = Event.Weapon:getTypeName() - --Event.WeaponTgtDCSUnit = Event.Weapon:getTarget() - end - self:E( { _EVENTCODES[Event.id], Event } ) - for ClassName, EventData in pairs( self.Events[Event.id] ) do - if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then - self:T2( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } ) - EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event ) - else - if Event.IniDCSUnit and not EventData.IniUnit then - self:T2( { "Calling event function for class ", ClassName } ) - EventData.EventFunction( EventData.EventSelf, Event ) - end - end - end - end -end - ---- Encapsulation of DCS World Menu system in a set of MENU classes. --- @module Menu - -Include.File( "Routines" ) -Include.File( "Base" ) - ---- The MENU class --- @type MENU --- @extends Base#BASE -MENU = { - ClassName = "MENU", - MenuPath = nil, - MenuText = "", - MenuParentPath = nil -} - ---- -function MENU:New( MenuText, MenuParentPath ) - - -- Arrange meta tables - local Child = BASE:Inherit( self, BASE:New() ) - - Child.MenuPath = nil - Child.MenuText = MenuText - Child.MenuParentPath = MenuParentPath - return Child -end - ---- The COMMANDMENU class --- @type COMMANDMENU --- @extends Menu#MENU -COMMANDMENU = { - ClassName = "COMMANDMENU", - CommandMenuFunction = nil, - CommandMenuArgument = nil -} - -function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = nil - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - Child.CommandMenuFunction = CommandMenuFunction - Child.CommandMenuArgument = CommandMenuArgument - return Child -end - ---- The SUBMENU class --- @type SUBMENU --- @extends Menu#MENU -SUBMENU = { - ClassName = "SUBMENU" -} - -function SUBMENU:New( MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = nil - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath ) - return Child -end - --- This local variable is used to cache the menus registered under clients. --- Menus don't dissapear when clients are destroyed and restarted. --- So every menu for a client created must be tracked so that program logic accidentally does not create --- the same menus twice during initialization logic. --- These menu classes are handling this logic with this variable. -local _MENUCLIENTS = {} - ---- The MENU_CLIENT class --- @type MENU_CLIENT --- @extends Menu#MENU -MENU_CLIENT = { - ClassName = "MENU_CLIENT" -} - ---- Creates a new menu item for a group --- @param self --- @param Client#CLIENT MenuClient The Client owning the menu. --- @param #string MenuText The text for the menu. --- @param #table ParentMenu The parent menu. --- @return #MENU_CLIENT self -function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - self:F( { MenuClient, MenuText, ParentMenu } ) - - self.MenuClient = MenuClient - self.MenuClientGroupID = MenuClient:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath ) - MenuPath[MenuPathID] = self.MenuPath - - self:T( { MenuClient:GetClientGroupName(), self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - return self -end - ---- Removes the sub menus recursively of this MENU_CLIENT. --- @param #MENU_CLIENT self --- @return #MENU_CLIENT self -function MENU_CLIENT:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - -end - ---- Removes the sub menus recursively of this MENU_CLIENT. --- @param #MENU_CLIENT self --- @return #MENU_CLIENT self -function MENU_CLIENT:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end - - ---- The MENU_CLIENT_COMMAND class --- @type MENU_CLIENT_COMMAND --- @extends Menu#MENU -MENU_CLIENT_COMMAND = { - ClassName = "MENU_CLIENT_COMMAND" -} - ---- Creates a new radio command item for a group --- @param self --- @param Client#CLIENT MenuClient The Client owning the menu. --- @param MenuText The text for the menu. --- @param ParentMenu The parent menu. --- @param CommandMenuFunction A function that is called when the menu key is pressed. --- @param CommandMenuArgument An argument for the function. --- @return Menu#MENU_CLIENT_COMMAND self -function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - self.MenuClient = MenuClient - self.MenuClientGroupID = MenuClient:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - MenuPath[MenuPathID] = self.MenuPath - - self.CommandMenuFunction = CommandMenuFunction - self.CommandMenuArgument = CommandMenuArgument - - ParentMenu.Menus[self.MenuPath] = self - - return self -end - -function MENU_CLIENT_COMMAND:Remove() - self:F( self.MenuPath ) - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end - - ---- The MENU_COALITION class --- @type MENU_COALITION --- @extends Menu#MENU -MENU_COALITION = { - ClassName = "MENU_COALITION" -} - ---- Creates a new coalition menu item --- @param #MENU_COALITION self --- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. --- @param #string MenuText The text for the menu. --- @param #table ParentMenu The parent menu. --- @return #MENU_COALITION self -function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - self:F( { MenuCoalition, MenuText, ParentMenu } ) - - self.MenuCoalition = MenuCoalition - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - self:T( { MenuParentPath, MenuText } ) - - self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) - - self:T( { self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - return self -end - ---- Removes the sub menus recursively of this MENU_COALITION. --- @param #MENU_COALITION self --- @return #MENU_COALITION self -function MENU_COALITION:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - -end - ---- Removes the sub menus recursively of this MENU_COALITION. --- @param #MENU_COALITION self --- @return #MENU_COALITION self -function MENU_COALITION:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - - return nil -end - - ---- The MENU_COALITION_COMMAND class --- @type MENU_COALITION_COMMAND --- @extends Menu#MENU -MENU_COALITION_COMMAND = { - ClassName = "MENU_COALITION_COMMAND" -} - ---- Creates a new radio command item for a group --- @param #MENU_COALITION_COMMAND self --- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. --- @param MenuText The text for the menu. --- @param ParentMenu The parent menu. --- @param CommandMenuFunction A function that is called when the menu key is pressed. --- @param CommandMenuArgument An argument for the function. --- @return #MENU_COALITION_COMMAND self -function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - self.MenuCoalition = MenuCoalition - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) - - self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - - self.CommandMenuFunction = CommandMenuFunction - self.CommandMenuArgument = CommandMenuArgument - - ParentMenu.Menus[self.MenuPath] = self - - return self -end - ---- Removes a radio command item for a coalition --- @param #MENU_COALITION_COMMAND self --- @return #MENU_COALITION_COMMAND self -function MENU_COALITION_COMMAND:Remove() - self:F( self.MenuPath ) - - missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end ---- GROUP class. --- --- @{GROUP} class --- ============== --- The @{GROUP} class is a wrapper class to handle the DCS Group objects: --- --- * Support all DCS Group APIs. --- * Enhance with Group specific APIs not in the DCS Group API set. --- * Handle local Group Controller. --- * Manage the "state" of the DCS Group. --- --- --- GROUP reference methods --- ======================= --- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{SPAWN} class). --- --- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Group or the DCS GroupName. --- --- Another thing to know is that GROUP objects do not "contain" the DCS Group object. --- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. --- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and log an exception in the DCS.log file. --- --- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: --- --- * @{#GROUP.Find}(): Find a GROUP instance from the _DATABASE object using a DCS Group object. --- * @{#GROUP.FindByName}(): Find a GROUP instance from the _DATABASE object using a DCS Group name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil). --- @module Group --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) -Include.File( "Unit" ) - ---- The GROUP class --- @type GROUP --- @extends Base#BASE --- @field DCSGroup#Group DCSGroup The DCS group class. --- @field #string GroupName The name of the group. -GROUP = { - ClassName = "GROUP", - GroupName = "", - GroupID = 0, - Controller = nil, - DCSGroup = nil, - WayPointFunctions = {}, -} - ---- A DCSGroup --- @type DCSGroup --- @field id_ The ID of the group in DCS - ---- Create a new GROUP from a DCSGroup --- @param #GROUP self --- @param DCSGroup#Group GroupName The DCS Group name --- @return #GROUP self -function GROUP:Register( GroupName ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( GroupName ) - self.GroupName = GroupName - return self -end - --- Reference methods. - ---- Find the GROUP wrapper class instance using the DCS Group. --- @param #GROUP self --- @param DCSGroup#Group DCSGroup The DCS Group. --- @return #GROUP The GROUP. -function GROUP:Find( DCSGroup ) - - local GroupName = DCSGroup:getName() -- Group#GROUP - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - ---- Find the created GROUP using the DCS Group Name. --- @param #GROUP self --- @param #string GroupName The DCS Group Name. --- @return #GROUP The GROUP. -function GROUP:FindByName( GroupName ) - - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - --- DCS Group methods support. - ---- Returns the DCS Group. --- @param #GROUP self --- @return DCSGroup#Group The DCS Group. -function GROUP:GetDCSGroup() - local DCSGroup = Group.getByName( self.GroupName ) - - if DCSGroup then - return DCSGroup - end - - return nil -end - - ---- Returns if the DCS Group is alive. --- When the group exists at run-time, this method will return true, otherwise false. --- @param #GROUP self --- @return #boolean true if the DCS Group is alive. -function GROUP:IsAlive() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupIsAlive = DCSGroup:isExist() - self:T3( GroupIsAlive ) - return GroupIsAlive - end - - return nil -end - ---- Destroys the DCS Group and all of its DCS Units. --- Note that this destroy method also raises a destroy event at run-time. --- So all event listeners will catch the destroy event of this DCS Group. --- @param #GROUP self -function GROUP:Destroy() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - self:CreateEventCrash( timer.getTime(), UnitData ) - end - DCSGroup:destroy() - DCSGroup = nil - end - - return nil -end - ---- Returns category of the DCS Group. --- @param #GROUP self --- @return DCSGroup#Group.Category The category ID -function GROUP:GetCategory() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - return GroupCategory - end - - return nil -end - ---- Returns the category name of the DCS Group. --- @param #GROUP self --- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship -function GROUP:GetCategoryName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local CategoryNames = { - [Group.Category.AIRPLANE] = "Airplane", - [Group.Category.HELICOPTER] = "Helicopter", - [Group.Category.GROUND] = "Ground Unit", - [Group.Category.SHIP] = "Ship", - } - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - - return CategoryNames[GroupCategory] - end - - return nil -end - - ---- Returns the coalition of the DCS Group. --- @param #GROUP self --- @return DCSCoalitionObject#coalition.side The coalition side of the DCS Group. -function GROUP:GetCoalition() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCoalition = DCSGroup:getCoalition() - self:T3( GroupCoalition ) - return GroupCoalition - end - - return nil -end - ---- Returns the country of the DCS Group. --- @param #GROUP self --- @return DCScountry#country.id The country identifier. --- @return #nil The DCS Group is not existing or alive. -function GROUP:GetCountry() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCountry = DCSGroup:getUnit(1):getCountry() - self:T3( GroupCountry ) - return GroupCountry - end - - return nil -end - ---- Returns the name of the DCS Group. --- @param #GROUP self --- @return #string The DCS Group name. -function GROUP:GetName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupName = DCSGroup:getName() - self:T3( GroupName ) - return GroupName - end - - return nil -end - ---- Returns the DCS Group identifier. --- @param #GROUP self --- @return #number The identifier of the DCS Group. -function GROUP:GetID() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupID = DCSGroup:getID() - self:T3( GroupID ) - return GroupID - end - - return nil -end - ---- Returns the UNIT wrapper class with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the UNIT wrapper class to be returned. --- @return Unit#UNIT The UNIT wrapper class. -function GROUP:GetUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local UnitFound = UNIT:Find( DCSGroup:getUnit( UnitNumber ) ) - self:T3( UnitFound.UnitName ) - self:T2( UnitFound ) - return UnitFound - end - - return nil -end - ---- Returns the DCS Unit with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the DCS Unit to be returned. --- @return DCSUnit#Unit The DCS Unit. -function GROUP:GetDCSUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnitFound = DCSGroup:getUnit( UnitNumber ) - self:T3( DCSUnitFound ) - return DCSUnitFound - end - - return nil -end - ---- Returns current size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed the size of the DCS Group is changed. --- @param #GROUP self --- @return #number The DCS Group size. -function GROUP:GetSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupSize = DCSGroup:getSize() - self:T3( GroupSize ) - return GroupSize - end - - return nil -end - ---- ---- Returns the initial size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed, the initial size of the DCS Group is unchanged. --- @param #GROUP self --- @return #number The DCS Group initial size. -function GROUP:GetInitialSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupInitialSize = DCSGroup:getInitialSize() - self:T3( GroupInitialSize ) - return GroupInitialSize - end - - return nil -end - ---- Returns the UNITs wrappers of the DCS Units of the DCS Group. --- @param #GROUP self --- @return #table The UNITs wrappers. -function GROUP:GetUnits() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnits = DCSGroup:getUnits() - local Units = {} - for Index, UnitData in pairs( DCSUnits ) do - Units[#Units+1] = UNIT:Find( UnitData ) - end - self:T3( Units ) - return Units - end - - return nil -end - - ---- Returns the DCS Units of the DCS Group. --- @param #GROUP self --- @return #table The DCS Units. -function GROUP:GetDCSUnits() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnits = DCSGroup:getUnits() - self:T3( DCSUnits ) - return DCSUnits - end - - return nil -end - ---- Get the controller for the GROUP. --- @param #GROUP self --- @return DCSController#Controller -function GROUP:_GetController() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupController = DCSGroup:getController() - self:T3( GroupController ) - return GroupController - end - - return nil -end - - ---- Retrieve the group mission and allow to place function hooks within the mission waypoint plan. --- Use the method @{Group#GROUP:WayPointFunction} to define the hook functions for specific waypoints. --- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. --- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED! --- @param #GROUP self --- @return #GROUP -function GROUP:WayPointInitialize() - - self.WayPoints = self:GetTaskRoute() - - return self -end - - ---- Registers a waypoint function that will be executed when the group moves over the WayPoint. --- @param #GROUP self --- @param #number WayPoint The waypoint number. Note that the start waypoint on the route is WayPoint 1! --- @param #number WayPointIndex When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions. --- @param #function WayPointFunction The waypoint function to be called when the group moves over the waypoint. The waypoint function takes variable parameters. --- @return #GROUP -function GROUP:WayPointFunction( WayPoint, WayPointIndex, WayPointFunction, ... ) - self:F2( { WayPoint, WayPointIndex, WayPointFunction } ) - - table.insert( self.WayPoints[WayPoint].task.params.tasks, WayPointIndex ) - self.WayPoints[WayPoint].task.params.tasks[WayPointIndex] = self:TaskFunction( WayPoint, WayPointIndex, WayPointFunction, arg ) - return self -end - - -function GROUP:TaskFunction( WayPoint, WayPointIndex, FunctionString, FunctionArguments ) - - local DCSTask - - local DCSScript = {} - DCSScript[#DCSScript+1] = "local MissionGroup = GROUP:Find( ... ) " - - if FunctionArguments.n > 0 then - DCSScript[#DCSScript+1] = FunctionString .. "( MissionGroup, " .. table.concat( FunctionArguments, "," ) .. ")" - else - DCSScript[#DCSScript+1] = FunctionString .. "( MissionGroup )" - end - - DCSTask = self:TaskWrappedAction( - self:CommandDoScript( - table.concat( DCSScript ) - ), WayPointIndex - ) - - self:T3( DCSTask ) - - return DCSTask - -end - - - ---- Executes the WayPoint plan. --- The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. --- Note that when the WayPoint parameter is used, the new start mission waypoint of the group will be 1! --- @param #GROUP self --- @param #number WayPoint The WayPoint from where to execute the mission. --- @param #number WaitTime The amount seconds to wait before initiating the mission. --- @return #GROUP -function GROUP:WayPointExecute( WayPoint, WaitTime ) - - if not WayPoint then - WayPoint = 1 - end - - -- When starting the mission from a certain point, the TaskPoints need to be deleted before the given WayPoint. - for TaskPointID = 1, WayPoint - 1 do - table.remove( self.WayPoints, 1 ) - end - - self:T3( self.WayPoints ) - - self:SetTask( self:TaskRoute( self.WayPoints ), WaitTime ) - - return self -end - - ---- Activates a GROUP. --- @param #GROUP self -function GROUP:Activate() - self:F2( { self.GroupName } ) - trigger.action.activateGroup( self:GetDCSGroup() ) - return self:GetDCSGroup() -end - - ---- Gets the type name of the group. --- @param #GROUP self --- @return #string The type name of the group. -function GROUP:GetTypeName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupTypeName = DCSGroup:getUnit(1):getTypeName() - self:T3( GroupTypeName ) - return( GroupTypeName ) - end - - return nil -end - ---- Gets the CallSign of the first DCS Unit of the DCS Group. --- @param #GROUP self --- @return #string The CallSign of the first DCS Unit of the DCS Group. -function GROUP:GetCallsign() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCallSign = DCSGroup:getUnit(1):getCallsign() - self:T3( GroupCallSign ) - return GroupCallSign - end - - return nil -end - ---- Returns the current point (Vec2 vector) of the first DCS Unit in the DCS Group. --- @return DCSTypes#Vec2 Current Vec2 point of the first DCS Unit of the DCS Group. -function GROUP:GetPointVec2() - self:F2( self.GroupName ) - - local GroupPointVec2 = self:GetUnit(1):GetPointVec2() - self:T3( GroupPointVec2 ) - return GroupPointVec2 -end - ---- Returns the current point (Vec3 vector) of the first DCS Unit in the DCS Group. --- @return DCSTypes#Vec3 Current Vec3 point of the first DCS Unit of the DCS Group. -function GROUP:GetPointVec3() - self:F2( self.GroupName ) - - local GroupPointVec3 = self:GetUnit(1):GetPointVec3() - self:T3( GroupPointVec3 ) - return GroupPointVec3 -end - - - --- Is Functions - ---- Returns if all units of the group are within a @{Zone#ZONE}. --- @param #GROUP self --- @param Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE} -function GROUP:IsCompletelyInZone( Zone ) - self:F2( { self.GroupName, Zone } ) - - for UnitID, UnitData in pairs( self:GetUnits() ) do - local Unit = UnitData -- Unit#UNIT - if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then - else - return false - end - end - - return true -end - ---- Returns if the group is of an air category. --- If the group is a helicopter or a plane, then this method will return true, otherwise false. --- @param #GROUP self --- @return #boolean Air category evaluation result. -function GROUP:IsAir() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local IsAirResult = DCSGroup:getCategory() == Group.Category.AIRPLANE or DCSGroup:getCategory() == Group.Category.HELICOPTER - self:T3( IsAirResult ) - return IsAirResult - end - - return nil -end - ---- Returns if the DCS Group contains Helicopters. --- @param #GROUP self --- @return #boolean true if DCS Group contains Helicopters. -function GROUP:IsHelicopter() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.HELICOPTER - end - - return nil -end - ---- Returns if the DCS Group contains AirPlanes. --- @param #GROUP self --- @return #boolean true if DCS Group contains AirPlanes. -function GROUP:IsAirPlane() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.AIRPLANE - end - - return nil -end - ---- Returns if the DCS Group contains Ground troops. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ground troops. -function GROUP:IsGround() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.GROUND - end - - return nil -end - ---- Returns if the DCS Group contains Ships. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ships. -function GROUP:IsShip() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.SHIP - end - - return nil -end - ---- Returns if all units of the group are on the ground or landed. --- If all units of this group are on the ground, this function will return true, otherwise false. --- @param #GROUP self --- @return #boolean All units on the ground result. -function GROUP:AllOnGround() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local AllOnGroundResult = true - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - if UnitData:inAir() then - AllOnGroundResult = false - end - end - - self:T3( AllOnGroundResult ) - return AllOnGroundResult - end - - return nil -end - ---- Returns the current maximum velocity of the group. --- Each unit within the group gets evaluated, and the maximum velocity (= the unit which is going the fastest) is returned. --- @param #GROUP self --- @return #number Maximum velocity found. -function GROUP:GetMaxVelocity() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local MaxVelocity = 0 - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - - local Velocity = UnitData:getVelocity() - local VelocityTotal = math.abs( Velocity.x ) + math.abs( Velocity.y ) + math.abs( Velocity.z ) - - if VelocityTotal < MaxVelocity then - MaxVelocity = VelocityTotal - end - end - - return MaxVelocity - end - - return nil -end - ---- Returns the current minimum height of the group. --- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. --- @param #GROUP self --- @return #number Minimum height found. -function GROUP:GetMinHeight() - self:F2() - -end - ---- Returns the current maximum height of the group. --- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. --- @param #GROUP self --- @return #number Maximum height found. -function GROUP:GetMaxHeight() - self:F2() - -end - --- Tasks - ---- Popping current Task from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:PopCurrentTask() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - Controller:popTask() - return self - end - - return nil -end - ---- Pushing Task on the queue from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:PushTask( DCSTask, WaitTime ) - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - - -- When a group SPAWNs, it takes about a second to get the group in the simulator. Setting tasks to unspawned groups provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Group. - -- Controller:pushTask( DCSTask ) - - if WaitTime then - --routines.scheduleFunction( Controller.pushTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) - SCHEDULER:New( Controller, Controller.pushTask, { DCSTask }, WaitTime ) - else - Controller:pushTask( DCSTask ) - end - - return self - end - - return nil -end - ---- Clearing the Task Queue and Setting the Task on the queue from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:SetTask( DCSTask, WaitTime ) - self:F2( { DCSTask } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - - local Controller = self:_GetController() - - -- When a group SPAWNs, it takes about a second to get the group in the simulator. Setting tasks to unspawned groups provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Group. - -- Controller.setTask( Controller, DCSTask ) - - if not WaitTime then - WaitTime = 1 - end - --routines.scheduleFunction( Controller.setTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) - SCHEDULER:New( Controller, Controller.setTask, { DCSTask }, WaitTime ) - - return self - end - - return nil -end - - ---- Return a condition section for a controlled task --- @param #GROUP self --- @param DCSTime#Time time --- @param #string userFlag --- @param #boolean userFlagValue --- @param #string condition --- @param DCSTime#Time duration --- @param #number lastWayPoint --- return DCSTask#Task -function GROUP:TaskCondition( time, userFlag, userFlagValue, condition, duration, lastWayPoint ) - self:F2( { time, userFlag, userFlagValue, condition, duration, lastWayPoint } ) - - local DCSStopCondition = {} - DCSStopCondition.time = time - DCSStopCondition.userFlag = userFlag - DCSStopCondition.userFlagValue = userFlagValue - DCSStopCondition.condition = condition - DCSStopCondition.duration = duration - DCSStopCondition.lastWayPoint = lastWayPoint - - self:T3( { DCSStopCondition } ) - return DCSStopCondition -end - ---- Return a Controlled Task taking a Task and a TaskCondition --- @param #GROUP self --- @param DCSTask#Task DCSTask --- @param #DCSStopCondition DCSStopCondition --- @return DCSTask#Task -function GROUP:TaskControlled( DCSTask, DCSStopCondition ) - self:F2( { DCSTask, DCSStopCondition } ) - - local DCSTaskControlled - - DCSTaskControlled = { - id = 'ControlledTask', - params = { - task = DCSTask, - stopCondition = DCSStopCondition - } - } - - self:T3( { DCSTaskControlled } ) - return DCSTaskControlled -end - ---- Return a Combo Task taking an array of Tasks --- @param #GROUP self --- @param DCSTask#TaskArray DCSTasks Array of @{DCSTask#Task} --- @return DCSTask#Task -function GROUP:TaskCombo( DCSTasks ) - self:F2( { DCSTasks } ) - - local DCSTaskCombo - - DCSTaskCombo = { - id = 'ComboTask', - params = { - tasks = DCSTasks - } - } - - self:T3( { DCSTaskCombo } ) - return DCSTaskCombo -end - ---- Return a WrappedAction Task taking a Command --- @param #GROUP self --- @param DCSCommand#Command DCSCommand --- @return DCSTask#Task -function GROUP:TaskWrappedAction( DCSCommand, Index ) - self:F2( { DCSCommand } ) - - local DCSTaskWrappedAction - - DCSTaskWrappedAction = { - id = "WrappedAction", - enabled = true, - number = Index, - auto = false, - params = { - action = DCSCommand, - }, - } - - self:T3( { DCSTaskWrappedAction } ) - return DCSTaskWrappedAction -end - ---- Executes a command action --- @param #GROUP self --- @param DCSCommand#Command DCSCommand --- @return #GROUP self -function GROUP:SetCommand( DCSCommand ) - self:F2( DCSCommand ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - Controller:setCommand( DCSCommand ) - return self - end - - return nil -end - ---- Perform a switch waypoint command --- @param #GROUP self --- @param #number FromWayPoint --- @param #number ToWayPoint --- @return DCSTask#Task -function GROUP:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) - self:F2( { FromWayPoint, ToWayPoint, Index } ) - - local CommandSwitchWayPoint = { - id = 'SwitchWaypoint', - params = { - fromWaypointIndex = FromWayPoint, - goToWaypointIndex = ToWayPoint, - }, - } - - self:T3( { CommandSwitchWayPoint } ) - return CommandSwitchWayPoint -end - - --- TASKS FOR AIR GROUPS - - ---- (AIR) Attack a Group. --- @param #GROUP self --- @param Group#GROUP AttackGroup The Group to be attacked. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackGroup( AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.GroupName, AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- AttackGroup = { - -- id = 'AttackGroup', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Attack the Unit. --- @param #GROUP self --- @param Unit#UNIT AttackUnit The unit. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackUnit( AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack ) - self:F2( { self.GroupName, AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack } ) - - -- AttackUnit = { - -- id = 'AttackUnit', - -- params = { - -- unitId = Unit.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend - -- attackQty = number, - -- direction = Azimuth, - -- attackQtyLimit = boolean, - -- groupAttack = boolean, - -- } - -- } - - local DCSTask - DCSTask = { id = 'AttackUnit', - params = { - unitId = AttackUnit:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - attackQtyLimit = AttackQtyLimit, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Delivering weapon at the point on the ground. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point to deliver weapon at. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) Desired quantity of passes. The parameter is not the same in AttackGroup and AttackUnit tasks. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskBombing( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- Bombing = { --- id = 'Bombing', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'Bombing', - params = { - point = PointVec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point to hold the position. --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #GROUP self -function GROUP:TaskOrbitCircleAtVec2( Point, Altitude, Speed ) - self:F2( { self.GroupName, Point, Altitude, Speed } ) - - -- pattern = enum AI.Task.OribtPattern, - -- point = Vec2, - -- point2 = Vec2, - -- speed = Distance, - -- altitude = Distance - - local LandHeight = land.getHeight( Point ) - - self:T3( { LandHeight } ) - - local DCSTask = { id = 'Orbit', - params = { pattern = AI.Task.OrbitPattern.CIRCLE, - point = Point, - speed = Speed, - altitude = Altitude + LandHeight - } - } - - - -- local AITask = { id = 'ControlledTask', - -- params = { task = { id = 'Orbit', - -- params = { pattern = AI.Task.OrbitPattern.CIRCLE, - -- point = Point, - -- speed = Speed, - -- altitude = Altitude + LandHeight - -- } - -- }, - -- stopCondition = { duration = Duration - -- } - -- } - -- } - -- ) - - return DCSTask -end - ---- (AIR) Orbit at the current position of the first unit of the group at a specified alititude --- @param #GROUP self --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #GROUP self -function GROUP:TaskOrbitCircle( Altitude, Speed ) - self:F2( { self.GroupName, Altitude, Speed } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupPoint = self:GetPointVec2() - return self:TaskOrbitCircleAtVec2( GroupPoint, Altitude, Speed ) - end - - return nil -end - - - ---- (AIR) Hold position at the current position of the first unit of the group. --- @param #GROUP self --- @param #number Duration The maximum duration in seconds to hold the position. --- @return #GROUP self -function GROUP:TaskHoldPosition() - self:F2( { self.GroupName } ) - - return self:TaskOrbitCircle( 30, 10 ) -end - - - - ---- (AIR) Attacking the map object (building, structure, e.t.c). --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackMapObject( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- AttackMapObject = { --- id = 'AttackMapObject', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'AttackMapObject', - params = { - point = PointVec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Delivering weapon on the runway. --- @param #GROUP self --- @param Airbase#AIRBASE Airbase Airbase to attack. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskBombingRunway( Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- BombingRunway = { --- id = 'BombingRunway', --- params = { --- runwayId = AirdromeId, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'BombingRunway', - params = { - point = Airbase:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Refueling from the nearest tanker. No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskRefueling() - self:F2( { self.GroupName } ) - --- Refueling = { --- id = 'Refueling', --- params = {} --- } - - local DCSTask - DCSTask = { id = 'Refueling', - params = { - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR HELICOPTER) Landing at the ground. For helicopters only. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #GROUP self -function GROUP:TaskLandAtVec2( Point, Duration ) - self:F2( { self.GroupName, Point, Duration } ) - --- Land = { --- id= 'Land', --- params = { --- point = Vec2, --- durationFlag = boolean, --- duration = Time --- } --- } - - local DCSTask - if Duration and Duration > 0 then - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = true, - duration = Duration, - }, - } - else - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = false, - }, - } - end - - self:T3( DCSTask ) - return DCSTask -end - ---- (AIR) Land the group at a @{Zone#ZONE). --- @param #GROUP self --- @param Zone#ZONE Zone The zone where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #GROUP self -function GROUP:TaskLandAtZone( Zone, Duration, RandomPoint ) - self:F2( { self.GroupName, Zone, Duration, RandomPoint } ) - - local Point - if RandomPoint then - Point = Zone:GetRandomPointVec2() - else - Point = Zone:GetPointVec2() - end - - local DCSTask = self:TaskLandAtVec2( Point, Duration ) - - self:T3( DCSTask ) - return DCSTask -end - ---- (AIR) Following another airborne group. --- The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. --- If another group is on land the unit / group will orbit around. --- @param #GROUP self --- @param Group#GROUP FollowGroup The group to be followed. --- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another group. Once reached the unit / group Follow task is finished. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFollow( FollowGroup, PointVec3, LastWaypointIndex ) - self:F2( { self.GroupName, FollowGroup, PointVec3, LastWaypointIndex } ) - --- Follow = { --- id = 'Follow', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number --- } --- } - - local LastWaypointIndexFlag = nil - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { id = 'Follow', - params = { - groupId = FollowGroup:GetID(), - pos = PointVec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Escort another airborne group. --- The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. --- The unit / group will also protect that group from threats of specified types. --- @param #GROUP self --- @param Group#GROUP EscortGroup The group to be escorted. --- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another group. Once reached the unit / group Follow task is finished. --- @param #number EngagementDistanceMax Maximal distance from escorted group to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax. --- @param DCSTypes#AttributeNameArray TargetTypes Array of AttributeName that is contains threat categories allowed to engage. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskEscort( FollowGroup, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes ) - self:F2( { self.GroupName, FollowGroup, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes } ) - --- Escort = { --- id = 'Escort', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number, --- engagementDistMax = Distance, --- targetTypes = array of AttributeName, --- } --- } - - local LastWaypointIndexFlag = nil - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { id = 'Follow', - params = { - groupId = FollowGroup:GetID(), - pos = PointVec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex, - engagementDistMax = EngagementDistance, - targetTypes = TargetTypes, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - --- GROUND TASKS - ---- (GROUND) Fire at a VEC2 point until ammunition is finished. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 The point to fire at. --- @param DCSTypes#Distance Radius The radius of the zone to deploy the fire at. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFireAtPoint( PointVec2, Radius ) - self:F2( { self.GroupName, PointVec2, Radius } ) - - -- FireAtPoint = { - -- id = 'FireAtPoint', - -- params = { - -- point = Vec2, - -- radius = Distance, - -- } - -- } - - local DCSTask - DCSTask = { id = 'FireAtPoint', - params = { - point = PointVec2, - radius = Radius, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (GROUND) Hold ground group from moving. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskHold() - self:F2( { self.GroupName } ) - --- Hold = { --- id = 'Hold', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Hold', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - --- TASKS FOR AIRBORNE AND GROUND UNITS/GROUPS - ---- (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param Group#GROUP AttackGroup Target GROUP. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFAC_AttackGroup( AttackGroup, WeaponType, Designation, Datalink ) - self:F2( { self.GroupName, AttackGroup, WeaponType, Designation, Datalink } ) - --- FAC_AttackGroup = { --- id = 'FAC_AttackGroup', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - --- EN-ROUTE TASKS FOR AIRBORNE GROUPS - ---- (AIR) Engaging targets of defined types. --- @param #GROUP self --- @param DCSTypes#Distance Distance Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored. --- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageTargets( Distance, TargetTypes, Priority ) - self:F2( { self.GroupName, Distance, TargetTypes, Priority } ) - --- EngageTargets ={ --- id = 'EngageTargets', --- params = { --- maxDist = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargets', - params = { - maxDist = Distance, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Engaging a targets of defined types at circle-shaped zone. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the zone. --- @param DCSTypes#Distance Radius Radius of the zone. --- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageTargets( PointVec2, Radius, TargetTypes, Priority ) - self:F2( { self.GroupName, PointVec2, Radius, TargetTypes, Priority } ) - --- EngageTargetsInZone = { --- id = 'EngageTargetsInZone', --- params = { --- point = Vec2, --- zoneRadius = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargetsInZone', - params = { - point = PointVec2, - zoneRadius = Radius, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Engaging a group. The task does not assign the target group to the unit/group to attack now; it just allows the unit/group to engage the target group as well as other assigned targets. --- @param #GROUP self --- @param Group#GROUP AttackGroup The Group to be attacked. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageGroup( AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.GroupName, AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- EngageGroup = { - -- id = 'EngageGroup ', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- priority = number, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'EngageGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - priority = Priority, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Attack the Unit. --- @param #GROUP self --- @param Unit#UNIT AttackUnit The UNIT. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageUnit( AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack ) - self:F2( { self.GroupName, AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack } ) - - -- EngageUnit = { - -- id = 'EngageUnit', - -- params = { - -- unitId = Unit.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend - -- attackQty = number, - -- direction = Azimuth, - -- attackQtyLimit = boolean, - -- groupAttack = boolean, - -- priority = number, - -- } - -- } - - local DCSTask - DCSTask = { id = 'EngageUnit', - params = { - unitId = AttackUnit:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - attackQtyLimit = AttackQtyLimit, - groupAttack = GroupAttack, - priority = Priority, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskAWACS( ) - self:F2( { self.GroupName } ) - --- AWACS = { --- id = 'AWACS', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'AWACS', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Aircraft will act as a tanker for friendly units. No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskTanker( ) - self:F2( { self.GroupName } ) - --- Tanker = { --- id = 'Tanker', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Tanker', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for ground units/groups - ---- (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts). No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEWR( ) - self:F2( { self.GroupName } ) - --- EWR = { --- id = 'EWR', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'EWR', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for airborne and ground units/groups - ---- (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose the target (enemy ground group) as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param Group#GROUP AttackGroup Target GROUP. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskFAC_EngageGroup( AttackGroup, Priority, WeaponType, Designation, Datalink ) - self:F2( { self.GroupName, AttackGroup, WeaponType, Priority, Designation, Datalink } ) - --- FAC_EngageGroup = { --- id = 'FAC_EngageGroup', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean, --- priority = number, --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_EngageGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - priority = Priority, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose a targets (enemy ground group) around as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param DCSTypes#Distance Radius The maximal distance from the FAC to a target. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskFAC( Radius, Priority ) - self:F2( { self.GroupName, Radius, Priority } ) - --- FAC = { --- id = 'FAC', --- params = { --- radius = Distance, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'FAC', - params = { - radius = Radius, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - - - ---- Move the group to a Vec2 Point, wait for a defined duration and embark a group. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to wait. --- @param #number Duration The duration in seconds to wait. --- @param #GROUP EmbarkingGroup The group to be embarked. --- @return DCSTask#Task The DCS task structure -function GROUP:TaskEmbarkingAtVec2( Point, Duration, EmbarkingGroup ) - self:F2( { self.GroupName, Point, Duration, EmbarkingGroup.DCSGroup } ) - - local DCSTask - DCSTask = { id = 'Embarking', - params = { x = Point.x, - y = Point.y, - duration = Duration, - groupsForEmbarking = { EmbarkingGroup.GroupID }, - durationFlag = true, - distributionFlag = false, - distribution = {}, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Move to a defined Vec2 Point, and embark to a group when arrived within a defined Radius. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to wait. --- @param #number Radius The radius of the embarking zone around the Point. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskEmbarkToTransportAtVec2( Point, Radius ) - self:F2( { self.GroupName, Point, Radius } ) - - local DCSTask --DCSTask#Task - DCSTask = { id = 'EmbarkToTransport', - params = { x = Point.x, - y = Point.y, - zoneRadius = Radius, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Return a Misson task from a mission template. --- @param #GROUP self --- @param #table TaskMission A table containing the mission task. --- @return DCSTask#Task -function GROUP:TaskMission( TaskMission ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { TaskMission, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Return a Misson task to follow a given route defined by Points. --- @param #GROUP self --- @param #table Points A table of route points. --- @return DCSTask#Task -function GROUP:TaskRoute( Points ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Make the DCS Group to fly to a given point and hover. --- @param #GROUP self --- @param DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #GROUP self -function GROUP:TaskRouteToVec2( Point, Speed ) - self:F2( { Point, Speed } ) - - local GroupPoint = self:GetUnit( 1 ):GetPointVec2() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.y - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - ---- Make the DCS Group to fly to a given point and hover. --- @param #GROUP self --- @param DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #GROUP self -function GROUP:TaskRouteToVec3( Point, Speed ) - self:F2( { Point, Speed } ) - - local GroupPoint = self:GetUnit( 1 ):GetPointVec3() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.z - PointFrom.alt = GroupPoint.y - PointFrom.alt_type = "BARO" - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.z - PointTo.alt = Point.y - PointTo.alt_type = "BARO" - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - - - ---- Make the group to follow a given route. --- @param #GROUP self --- @param #table GoPoints A table of Route Points. --- @return #GROUP self -function GROUP:Route( GoPoints ) - self:F2( GoPoints ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Points = routines.utils.deepCopy( GoPoints ) - local MissionTask = { id = 'Mission', params = { route = { points = Points, }, }, } - local Controller = self:_GetController() - --Controller.setTask( Controller, MissionTask ) - --routines.scheduleFunction( Controller.setTask, { Controller, MissionTask}, timer.getTime() + 1 ) - SCHEDULER:New( Controller, Controller.setTask, { MissionTask }, 1 ) - return self - end - - return nil -end - - - ---- Route the group to a given zone. --- The group final destination point can be randomized. --- A speed can be given in km/h. --- A given formation can be given. --- @param #GROUP self --- @param Zone#ZONE Zone The zone where to route to. --- @param #boolean Randomize Defines whether to target point gets randomized within the Zone. --- @param #number Speed The speed. --- @param Base#FORMATION Formation The formation string. -function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) - self:F2( Zone ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - - local GroupPoint = self:GetPointVec2() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Cone" - PointFrom.speed = 20 / 1.6 - - - local PointTo = {} - local ZonePoint - - if Randomize then - ZonePoint = Zone:GetRandomPointVec2() - else - ZonePoint = Zone:GetPointVec2() - end - - PointTo.x = ZonePoint.x - PointTo.y = ZonePoint.y - PointTo.type = "Turning Point" - - if Formation then - PointTo.action = Formation - else - PointTo.action = "Cone" - end - - if Speed then - PointTo.speed = Speed - else - PointTo.speed = 20 / 1.6 - end - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self - end - - return nil -end - --- Commands - ---- Do Script command --- @param #GROUP self --- @param #string DoScript --- @return #DCSCommand -function GROUP:CommandDoScript( DoScript ) - - local DCSDoScript = { - id = "Script", - params = { - command = DoScript, - }, - } - - self:T3( DCSDoScript ) - return DCSDoScript -end - - ---- Return the mission template of the group. --- @param #GROUP self --- @return #table The MissionTemplate -function GROUP:GetTaskMission() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template ) -end - ---- Return the mission route of the group. --- @param #GROUP self --- @return #table The mission route defined by points. -function GROUP:GetTaskRoute() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template.route.points ) -end - ---- Return the route of a group by using the @{Database#DATABASE} class. --- @param #GROUP self --- @param #number Begin The route point from where the copy will start. The base route point is 0. --- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. --- @param #boolean Randomize Randomization of the route, when true. --- @param #number Radius When randomization is on, the randomization is within the radius. -function GROUP:CopyRoute( Begin, End, Randomize, Radius ) - self:F2( { Begin, End } ) - - local Points = {} - - -- Could be a Spawned Group - local GroupName = string.match( self:GetName(), ".*#" ) - if GroupName then - GroupName = GroupName:sub( 1, -2 ) - else - GroupName = self:GetName() - end - - self:T3( { GroupName } ) - - local Template = _DATABASE.Templates.Groups[GroupName].Template - - if Template then - if not Begin then - Begin = 0 - end - if not End then - End = 0 - end - - for TPointID = Begin + 1, #Template.route.points - End do - if Template.route.points[TPointID] then - Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) - if Randomize then - if not Radius then - Radius = 500 - end - Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) - Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) - end - end - end - return Points - end - - return nil -end - - -function GROUP:GetDetectedTargets() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - return self:_GetController():getDetectedTargets() - end - - return nil -end - -function GROUP:IsTargetDetected( DCSObject ) - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - - local TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - = self:_GetController().isTargetDetected( self:_GetController(), DCSObject, - Controller.Detection.VISUAL, - Controller.Detection.OPTIC, - Controller.Detection.RADAR, - Controller.Detection.IRST, - Controller.Detection.RWR, - Controller.Detection.DLINK - ) - return TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - end - - return nil -end - --- Options - ---- Can the GROUP hold their weapons? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEHoldFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Holding weapons. --- @param Group#GROUP self --- @return Group#GROUP self -function GROUP:OptionROEHoldFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack returning on enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEReturnFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Return fire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEReturnFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack designated targets? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEOpenFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Openfire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEOpenFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack targets of opportunity? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEWeaponFreePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Weapon free. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEWeaponFree() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) - end - - return self - end - - return nil -end - ---- Can the GROUP ignore enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTNoReactionPossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- No evasion on enemy threats. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTNoReaction() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade using passive defenses? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTPassiveDefensePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Evasion passive defense. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTPassiveDefense() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade on enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTEvadeFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTEvadeFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade on fire using vertical manoeuvres? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTVerticalPossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire using vertical manoeuvres. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTVertical() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - end - - return self - end - - return nil -end - --- Message APIs - ---- Returns a message for a coalition or a client. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. --- @return Message#MESSAGE -function GROUP:Message( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - return MESSAGE:New( Message, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")", Duration, self:GetClassNameAndID() ) - end - - return nil -end - ---- Send a message to all coalitions. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. -function GROUP:MessageToAll( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToAll() - end - - return nil -end - ---- Send a message to the red coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTYpes#Duration Duration The duration of the message. -function GROUP:MessageToRed( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToRed() - end - - return nil -end - ---- Send a message to the blue coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. -function GROUP:MessageToBlue( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToBlue() - end - - return nil -end - ---- Send a message to a client. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. --- @param Client#CLIENT Client The client object receiving the message. -function GROUP:MessageToClient( Message, Duration, Client ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToClient( Client ) - end - - return nil -end ---- UNIT Class --- --- @{UNIT} class --- ============== --- The @{UNIT} class is a wrapper class to handle the DCS Unit objects: --- --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Unit API set. --- * Handle local Unit Controller. --- * Manage the "state" of the DCS Unit. --- --- --- UNIT reference methods --- ====================== --- For each DCS Unit object alive within a running mission, a UNIT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Unit objects are spawned (using the @{SPAWN} class). --- --- The UNIT class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that UNIT objects do not "contain" the DCS Unit object. --- The UNIT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the UNIT methods will return nil and log an exception in the DCS.log file. --- --- The UNIT class provides the following functions to retrieve quickly the relevant UNIT instance: --- --- * @{#UNIT.Find}(): Find a UNIT instance from the _DATABASE object using a DCS Unit object. --- * @{#UNIT.FindByName}(): Find a UNIT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these UNIT OBJECT REFERENCES! (make the UNIT object references nil). --- --- DCS UNIT APIs --- ============= --- The DCS Unit APIs are used extensively within MOOSE. The UNIT class has for each DCS Unit API a corresponding method. --- To be able to distinguish easily in your code the difference between a UNIT API call and a DCS Unit API call, --- the first letter of the method is also capitalized. So, by example, the DCS Unit method @{DCSUnit#Unit.getName}() --- is implemented in the UNIT class as @{#UNIT.GetName}(). --- --- Additional UNIT APIs --- ==================== --- The UNIT class comes with additional methods. Find below a summary. --- --- Smoke, Flare Units --- ------------------ --- The UNIT class provides methods to smoke or flare units easily. --- The @{#UNIT.SmokeBlue}(), @{#UNIT.SmokeGreen}(),@{#UNIT.SmokeOrange}(), @{#UNIT.SmokeRed}(), @{#UNIT.SmokeRed}() methods --- will smoke the unit in the corresponding color. Note that smoking a unit is done at the current position of the DCS Unit. --- When the DCS Unit moves for whatever reason, the smoking will still continue! --- The @{#UNIT.FlareGreen}(), @{#UNIT.FlareRed}(), @{#UNIT.FlareWhite}(), @{#UNIT.FlareYellow}() --- methods will fire off a flare in the air with the corresponding color. Note that a flare is a one-off shot and its effect is of very short duration. --- --- Position, Point --- --------------- --- The UNIT class provides methods to obtain the current point or position of the DCS Unit. --- The @{#UNIT.GetPointVec2}(), @{#UNIT.GetPointVec3}() will obtain the current location of the DCS Unit in a Vec2 (2D) or a Vec3 (3D) vector respectively. --- If you want to obtain the complete 3D position including oriëntation and direction vectors, consult the @{#UNIT.GetPositionVec3}() method respectively. --- --- Alive --- ----- --- The @{#UNIT.IsAlive}(), @{#UNIT.IsActive}() methods determines if the DCS Unit is alive, meaning, it is existing and active. --- --- Test for other units in radius --- ------------------------------ --- One can test if another DCS Unit is within a given radius of the current DCS Unit, by using the @{#UNIT.OtherUnitInRadius}() method. --- --- More functions will be added --- ---------------------------- --- During the MOOSE development, more functions will be added. A complete list of the current functions is below. --- --- --- --- --- @module Unit --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) - ---- The UNIT class --- @type UNIT --- @extends Base#BASE --- @field #UNIT.FlareColor FlareColor --- @field #UNIT.SmokeColor SmokeColor -UNIT = { - ClassName="UNIT", - CategoryName = { - [Unit.Category.AIRPLANE] = "Airplane", - [Unit.Category.HELICOPTER] = "Helicoper", - [Unit.Category.GROUND_UNIT] = "Ground Unit", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - }, - FlareColor = { - Green = trigger.flareColor.Green, - Red = trigger.flareColor.Red, - White = trigger.flareColor.White, - Yellow = trigger.flareColor.Yellow - }, - SmokeColor = { - Green = trigger.smokeColor.Green, - Red = trigger.smokeColor.Red, - White = trigger.smokeColor.White, - Orange = trigger.smokeColor.Orange, - Blue = trigger.smokeColor.Blue - }, - } - ---- FlareColor --- @type UNIT.FlareColor --- @field Green --- @field Red --- @field White --- @field Yellow - ---- SmokeColor --- @type UNIT.SmokeColor --- @field Green --- @field Red --- @field White --- @field Orange --- @field Blue - --- Registration. - ---- Create a new UNIT from DCSUnit. --- @param #UNIT self --- @param DCSUnit#Unit DCSUnit --- @param Database#DATABASE Database --- @return Unit#UNIT -function UNIT:Register( UnitName ) - - local self = BASE:Inherit( self, BASE:New() ) - self:F2( UnitName ) - self.UnitName = UnitName - return self -end - --- Reference methods. - ---- Finds a UNIT from the _DATABASE using a DCSUnit object. --- @param #UNIT self --- @param DCSUnit#Unit DCSUnit An existing DCS Unit object reference. --- @return Unit#UNIT self -function UNIT:Find( DCSUnit ) - - local UnitName = DCSUnit:getName() - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - ---- Find a UNIT in the _DATABASE using the name of an existing DCS Unit. --- @param #UNIT self --- @param #string UnitName The Unit Name. --- @return Unit#UNIT self -function UNIT:FindByName( UnitName ) - - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - -function UNIT:GetDCSUnit() - local DCSUnit = Unit.getByName( self.UnitName ) - - if DCSUnit then - return DCSUnit - end - - return nil -end - ---- Returns coalition of the Unit. --- @param Unit#UNIT self --- @return DCSCoalitionObject#coalition.side The side of the coalition. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCoalition() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCoalition = DCSUnit:getCoalition() - self:T3( UnitCoalition ) - return UnitCoalition - end - - return nil -end - ---- Returns country of the Unit. --- @param Unit#UNIT self --- @return DCScountry#country.id The country identifier. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCountry() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCountry = DCSUnit:getCountry() - self:T3( UnitCountry ) - return UnitCountry - end - - return nil -end - - ---- Returns DCS Unit object name. --- The function provides access to non-activated units too. --- @param Unit#UNIT self --- @return #string The name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitName = self.UnitName - return UnitName - end - - return nil -end - - ---- Returns if the unit is alive. --- @param Unit#UNIT self --- @return #boolean true if Unit is alive. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:IsAlive() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitIsAlive = DCSUnit:isExist() - return UnitIsAlive - end - - return false -end - ---- Returns if the unit is activated. --- @param Unit#UNIT self --- @return #boolean true if Unit is activated. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:IsActive() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - - local UnitIsActive = DCSUnit:isActive() - return UnitIsActive - end - - return nil -end - ---- Returns name of the player that control the unit or nil if the unit is controlled by A.I. --- @param Unit#UNIT self --- @return #string Player Name --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPlayerName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - - local PlayerName = DCSUnit:getPlayerName() - if PlayerName == nil then - PlayerName = "" - end - return PlayerName - end - - return nil -end - ---- Returns the unit's unique identifier. --- @param Unit#UNIT self --- @return DCSUnit#Unit.ID Unit ID --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetID() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitID = DCSUnit:getID() - return UnitID - end - - return nil -end - ---- Returns the unit's number in the group. --- The number is the same number the unit has in ME. --- It may not be changed during the mission. --- If any unit in the group is destroyed, the numbers of another units will not be changed. --- @param Unit#UNIT self --- @return #number The Unit number. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetNumber() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitNumber = DCSUnit:getNumber() - return UnitNumber - end - - return nil -end - ---- Returns the unit's group if it exist and nil otherwise. --- @param Unit#UNIT self --- @return Group#GROUP The Group of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetGroup() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitGroup = DCSUnit:getGroup() - return UnitGroup - end - - return nil -end - - ---- Returns the unit's callsign - the localized string. --- @param Unit#UNIT self --- @return #string The Callsign of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCallSign() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCallSign = DCSUnit:getCallsign() - return UnitCallSign - end - - return nil -end - ---- Returns the unit's health. Dead units has health <= 1.0. --- @param Unit#UNIT self --- @return #number The Unit's health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitLife = DCSUnit:getLife() - return UnitLife - end - - return nil -end - ---- Returns the Unit's initial health. --- @param Unit#UNIT self --- @return #number The Unit's initial health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife0() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitLife0 = DCSUnit:getLife0() - return UnitLife0 - end - - return nil -end - ---- Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks. If there are additional fuel tanks the value may be greater than 1.0. --- @param Unit#UNIT self --- @return #number The relative amount of fuel (from 0.0 to 1.0). --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetFuel() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitFuel = DCSUnit:getFuel() - return UnitFuel - end - - return nil -end - ---- Returns the Unit's ammunition. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Ammo --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetAmmo() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitAmmo = DCSUnit:getAmmo() - return UnitAmmo - end - - return nil -end - ---- Returns the unit sensors. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Sensors --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetSensors() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitSensors = DCSUnit:getSensors() - return UnitSensors - end - - return nil -end - --- Need to add here a function per sensortype --- unit:hasSensors(Unit.SensorType.RADAR, Unit.RadarType.AS) - ---- Returns two values: --- --- * First value indicates if at least one of the unit's radar(s) is on. --- * Second value is the object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @param Unit#UNIT self --- @return #boolean Indicates if at least one of the unit's radar(s) is on. --- @return DCSObject#Object The object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetRadar() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitRadarOn, UnitRadarObject = DCSUnit:getRadar() - return UnitRadarOn, UnitRadarObject - end - - return nil, nil -end - --- Need to add here functions to check if radar is on and which object etc. - ---- Returns unit descriptor. Descriptor type depends on unit category. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Desc The Unit descriptor. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetDesc() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitDesc = DCSUnit:getDesc() - return UnitDesc - end - - return nil -end - - ---- Returns the type name of the DCS Unit. --- @param Unit#UNIT self --- @return #string The type name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetTypeName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitTypeName = DCSUnit:getTypeName() - self:T3( UnitTypeName ) - return UnitTypeName - end - - return nil -end - - - ---- Returns the prefix name of the DCS Unit. A prefix name is a part of the name before a '#'-sign. --- DCS Units spawned with the @{SPAWN} class contain a '#'-sign to indicate the end of the (base) DCS Unit name. --- The spawn sequence number and unit number are contained within the name after the '#' sign. --- @param Unit#UNIT self --- @return #string The name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPrefix() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPrefix = string.match( self.UnitName, ".*#" ):sub( 1, -2 ) - self:T3( UnitPrefix ) - return UnitPrefix - end - - return nil -end - - - ---- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Vec2 The 2D point vector of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPointVec2() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPosition().p - - local UnitPointVec2 = {} - UnitPointVec2.x = UnitPointVec3.x - UnitPointVec2.y = UnitPointVec3.z - - self:T3( UnitPointVec2 ) - return UnitPointVec2 - end - - return nil -end - - ---- Returns the @{DCSTypes#Vec3} vector indicating the point in 3D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Vec3 The 3D point vector of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPointVec3() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPosition().p - self:T3( UnitPointVec3 ) - return UnitPointVec3 - end - - return nil -end - ---- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Position The 3D position vectors of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPositionVec3() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPosition = DCSUnit:getPosition() - self:T3( UnitPosition ) - return UnitPosition - end - - return nil -end - ---- Returns the DCS Unit velocity vector. --- @param Unit#UNIT self --- @return DCSTypes#Vec3 The velocity vector --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetVelocity() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitVelocityVec3 = DCSUnit:getVelocity() - self:T3( UnitVelocityVec3 ) - return UnitVelocityVec3 - end - - return nil -end - ---- Returns true if the DCS Unit is in the air. --- @param Unit#UNIT self --- @return #boolean true if in the air. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:InAir() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitInAir = DCSUnit:inAir() - self:T3( UnitInAir ) - return UnitInAir - end - - return nil -end - ---- Returns the altitude of the DCS Unit. --- @param Unit#UNIT self --- @return DCSTypes#Distance The altitude of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetAltitude() - self:F2() - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPoint() --DCSTypes#Vec3 - return UnitPointVec3.y - end - - return nil -end - ---- Returns true if there is an **other** DCS Unit within a radius of the current 2D point of the DCS Unit. --- @param Unit#UNIT self --- @param Unit#UNIT AwaitUnit The other UNIT wrapper object. --- @param Radius The radius in meters with the DCS Unit in the centre. --- @return true If the other DCS Unit is within the radius of the 2D point of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:OtherUnitInRadius( AwaitUnit, Radius ) - self:F2( { self.UnitName, AwaitUnit.UnitName, Radius } ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPos = self:GetPointVec3() - local AwaitUnitPos = AwaitUnit:GetPointVec3() - - if (((UnitPos.x - AwaitUnitPos.x)^2 + (UnitPos.z - AwaitUnitPos.z)^2)^0.5 <= Radius) then - self:T3( "true" ) - return true - else - self:T3( "false" ) - return false - end - end - - return nil -end - ---- Returns the DCS Unit category name as defined within the DCS Unit Descriptor. --- @param Unit#UNIT self --- @return #string The DCS Unit Category Name -function UNIT:GetCategoryName() - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCategoryName = self.CategoryName[ self:GetDesc().category ] - return UnitCategoryName - end - - return nil -end - ---- Signal a flare at the position of the UNIT. --- @param #UNIT self -function UNIT:Flare( FlareColor ) - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), FlareColor , 0 ) -end - ---- Signal a white flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareWhite() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.White , 0 ) -end - ---- Signal a yellow flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareYellow() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Yellow , 0 ) -end - ---- Signal a green flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareGreen() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Green , 0 ) -end - ---- Signal a red flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareRed() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Red, 0 ) -end - ---- Smoke the UNIT. --- @param #UNIT self -function UNIT:Smoke( SmokeColor ) - self:F2() - trigger.action.smoke( self:GetPointVec3(), SmokeColor ) -end - ---- Smoke the UNIT Green. --- @param #UNIT self -function UNIT:SmokeGreen() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Green ) -end - ---- Smoke the UNIT Red. --- @param #UNIT self -function UNIT:SmokeRed() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Red ) -end - ---- Smoke the UNIT White. --- @param #UNIT self -function UNIT:SmokeWhite() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.White ) -end - ---- Smoke the UNIT Orange. --- @param #UNIT self -function UNIT:SmokeOrange() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Orange ) -end - ---- Smoke the UNIT Blue. --- @param #UNIT self -function UNIT:SmokeBlue() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Blue ) -end - --- Is methods - ---- Returns if the unit is of an air category. --- If the unit is a helicopter or a plane, then this method will return true, otherwise false. --- @param #UNIT self --- @return #boolean Air category evaluation result. -function UNIT:IsAir() - self:F2() - - local UnitDescriptor = self.DCSUnit:getDesc() - self:T3( { UnitDescriptor.category, Unit.Category.AIRPLANE, Unit.Category.HELICOPTER } ) - - local IsAirResult = ( UnitDescriptor.category == Unit.Category.AIRPLANE ) or ( UnitDescriptor.category == Unit.Category.HELICOPTER ) - - self:T3( IsAirResult ) - return IsAirResult -end - ---- ZONE Classes --- ============= --- This module contains the ZONE classes, inherited from @{Zone#ZONE_BASE}. --- There are essentially two core functions that zones accomodate: --- --- * Test if an object is within the zone boundaries. --- * Provide the zone behaviour. Some zones are static, while others are moveable. --- --- The object classes are using the zone classes to test the zone boundaries, which can take various forms: --- --- * Test if completely within the zone. --- * Test if partly within the zone (for @{Group#GROUP} objects). --- * Test if not in the zone. --- * Distance to the nearest intersecting point of the zone. --- * Distance to the center of the zone. --- * ... --- --- Each of these ZONE classes have a zone name, and specific parameters defining the zone type: --- --- * @{Zone#ZONE_BASE}: The ZONE_BASE class defining the base for all other zone classes. --- * @{Zone#ZONE_RADIUS}: The ZONE_RADIUS class defined by a zone name, a location and a radius. --- * @{Zone#ZONE}: The ZONE class, defined by the zone name as defined within the Mission Editor. --- * @{Zone#ZONE_UNIT}: The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- * @{Zone#ZONE_POLYGON}: The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- --- Polymorphic methods --- =================== --- Each zone implements two polymorphic functions defined in @{Zone#ZONE_BASE}: --- --- * @{#ZONE_BASE.IsPointVec2InZone}: Returns if a location is within the zone. --- * @{#ZONE_BASE.IsPointVec3InZone}: Returns if a point is within the zone. --- --- @module Zone --- @author FlightControl - - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) - - - ---- The ZONE_BASE class --- @type ZONE_BASE --- @Extends Base#BASE -ZONE_BASE = { - ClassName = "ZONE_BASE", - } - -function ZONE_BASE:New( ZoneName ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( ZoneName ) - - self.ZoneName = ZoneName - - return self -end - ---- Returns if a location is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_BASE:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec3 PointVec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_BASE:IsPointVec3InZone( PointVec3 ) - self:F2( PointVec3 ) - - local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) - - return InZone -end - - ---- The ZONE_RADIUS class, defined by a zone name, a location and a radius. --- @type ZONE_RADIUS --- @field DCSTypes#Vec2 PointVec2 The current location of the zone. --- @field DCSTypes#Distance Radius The radius of the zone. --- @Extends Zone#ZONE_BASE -ZONE_RADIUS = { - ClassName="ZONE_RADIUS", - } - ---- Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location of the zone. --- @param DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_RADIUS -function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) - self:F( { ZoneName, PointVec2, Radius } ) - - self.Radius = Radius - self.PointVec2 = PointVec2 - - return self -end - - ---- Returns the radius of the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:GetRadius() - self:F2( self.ZoneName ) - - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Sets the radius of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Distance Radius The radius of the zone. --- @return DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:SetRadius( Radius ) - self:F2( self.ZoneName ) - - self.Radius = Radius - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Returns the location of the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Vec2 The location of the zone. -function ZONE_RADIUS:GetPointVec2() - self:F2( self.ZoneName ) - - self:T2( { self.PointVec2 } ) - - return self.PointVec2 -end - ---- Sets the location of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The new location of the zone. --- @return DCSTypes#Vec2 The new location of the zone. -function ZONE_RADIUS:SetPointVec2( PointVec2 ) - self:F2( self.ZoneName ) - - self.PointVec2 = PointVec2 - - self:T2( { self.PointVec2 } ) - - return self.PointVec2 -end - ---- Returns the point of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return DCSTypes#Vec3 The point of the zone. -function ZONE_RADIUS:GetPointVec3( Height ) - self:F2( self.ZoneName ) - - local PointVec2 = self:GetPointVec2() - - local PointVec3 = { x = PointVec2.x, y = land.getHeight( self:GetPointVec2() ) + Height, z = PointVec2.y } - - self:T2( { PointVec3 } ) - - return PointVec3 -end - ---- Returns if a location is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_RADIUS:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - if (( PointVec2.x - self.PointVec2.x )^2 + ( PointVec2.y - self.PointVec2.y ) ^2 ) ^ 0.5 <= self.Radius then - return true - end - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec3 PointVec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_RADIUS:IsPointVec3InZone( PointVec3 ) - self:F2( PointVec3 ) - - local InZone = self:IsPointVec3InZone( { x = PointVec3.x, y = PointVec3.z } ) - - return InZone -end - ---- Returns a random location within the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Vec2 The random location within the zone. -function ZONE_RADIUS:GetRandomPointVec2() - self:F( self.ZoneName ) - - local Point = {} - - local angle = math.random() * math.pi*2; - Point.x = self.PointVec2.x + math.cos( angle ) * math.random() * self.Radius; - Point.y = self.PointVec2.y + math.sin( angle ) * math.random() * self.Radius; - - self:T( { Point } ) - - return Point -end - - - ---- The ZONE class, defined by the zone name as defined within the Mission Editor. The location and the radius are automatically collected from the mission settings. --- @type ZONE --- @Extends Zone#ZONE_RADIUS -ZONE = { - ClassName="ZONE", - } - - ---- Constructor of ZONE, taking the zone name. --- @param #ZONE self --- @param #string ZoneName The name of the zone as defined within the mission editor. --- @return #ZONE -function ZONE:New( ZoneName ) - - local Zone = trigger.misc.getZone( ZoneName ) - - if not Zone then - error( "Zone " .. ZoneName .. " does not exist." ) - return nil - end - - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.x, y = Zone.y }, Zone.radius ) ) - self:F( ZoneName ) - - self.Zone = Zone - - return self -end - - - ---- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- @type ZONE_UNIT --- @field Unit#UNIT ZoneUNIT --- @Extends Zone#ZONE_RADIUS -ZONE_UNIT = { - ClassName="ZONE_UNIT", - } - ---- Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius. --- @param #ZONE_UNIT self --- @param #string ZoneName Name of the zone. --- @param Unit#UNIT ZoneUNIT The unit as the center of the zone. --- @param DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_UNIT self -function ZONE_UNIT:New( ZoneName, ZoneUNIT, Radius ) - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneUNIT:GetPointVec2(), Radius ) ) - self:F( { ZoneName, ZoneUNIT:GetPointVec2(), Radius } ) - - self.ZoneUNIT = ZoneUNIT - - return self -end - - ---- Returns the current location of the @{Unit#UNIT}. --- @param #ZONE_UNIT self --- @return DCSTypes#Vec2 The location of the zone based on the @{Unit#UNIT}location. -function ZONE_UNIT:GetPointVec2() - self:F( self.ZoneName ) - - local ZonePointVec2 = self.ZoneUNIT:GetPointVec2() - - self:T( { ZonePointVec2 } ) - - return ZonePointVec2 -end - - ---- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- @type ZONE_POLYGON --- @Extends Zone#ZONE_BASE -ZONE_POLYGON = { - ClassName="ZONE_POLYGON", - } - ---- Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the @{Group#GROUP} defined within the Mission Editor. --- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON. --- @param #ZONE_POLYGON self --- @param #string ZoneName Name of the zone. --- @param Group#GROUP ZoneGroup The GROUP waypoints as defined within the Mission Editor define the polygon shape. --- @return #ZONE_POLYGON self -function ZONE_POLYGON:New( ZoneName, ZoneGroup ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) - self:F( { ZoneName, ZoneGroup } ) - - local GroupPoints = ZoneGroup:GetTaskRoute() - local i = 0 - - self.Polygon = {} - - for i = 1, #GroupPoints do - self.Polygon[i] = {} - self.Polygon[i].x = GroupPoints[i].x - self.Polygon[i].y = GroupPoints[i].y - end - - return self -end - - ---- Returns if a location is within the zone. --- @param #ZONE_POLYGON self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_POLYGON:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - local i - local j - local c = false - - i = 1 - j = #self.Polygon - - while i < #self.Polygon do - j = i - i = i + 1 - self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) - if ( ( ( self.Polygon[i].y > PointVec2.y ) ~= ( self.Polygon[j].y > PointVec2.y ) ) and - ( PointVec2.x < ( self.Polygon[j].x - self.Polygon[i].x ) * ( PointVec2.y - self.Polygon[i].y ) / ( self.Polygon[j].y - self.Polygon[i].y ) + self.Polygon[i].x ) - ) then - c = not c - end - self:T( { "c = ", c } ) - end - - return c -end - ---- The CLIENT models client units in multi player missions. --- --- @{#CLIENT} class --- ================ --- Clients are those **Units** defined within the Mission Editor that have the skillset defined as __Client__ or __Player__. --- Note that clients are NOT the same as Units, they are NOT necessarily alive. --- The @{CLIENT} class is a wrapper class to handle the DCS Unit objects that have the skillset defined as __Client__ or __Player__: --- --- * Wraps the DCS Unit objects with skill level set to Player or Client. --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Group API set. --- * When player joins Unit, execute alive init logic. --- * Handles messages to players. --- * Manage the "state" of the DCS Unit. --- --- Clients are being used by the @{MISSION} class to follow players and register their successes. --- --- CLIENT reference methods --- ======================= --- For each DCS Unit having skill level Player or Client, a CLIENT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts). --- --- The CLIENT class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that CLIENT objects do not "contain" the DCS Unit object. --- The CLIENT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the CLIENT methods will return nil and log an exception in the DCS.log file. --- --- The CLIENT class provides the following functions to retrieve quickly the relevant CLIENT instance: --- --- * @{#CLIENT.Find}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit object. --- * @{#CLIENT.FindByName}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these CLIENT OBJECT REFERENCES! (make the CLIENT object references nil). --- --- @module Client --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Cargo" ) -Include.File( "Message" ) - - ---- The CLIENT class --- @type CLIENT --- @extends Unit#UNIT -CLIENT = { - ONBOARDSIDE = { - NONE = 0, - LEFT = 1, - RIGHT = 2, - BACK = 3, - FRONT = 4 - }, - ClassName = "CLIENT", - ClientName = nil, - ClientAlive = false, - ClientTransport = false, - ClientBriefingShown = false, - _Menus = {}, - _Tasks = {}, - Messages = { - } -} - - ---- Finds a CLIENT from the _DATABASE using the relevant DCS Unit. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:Find( DCSUnit ) - local ClientName = DCSUnit:getName() - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( ClientName ) - return ClientFound - end - - error( "CLIENT not found for: " .. ClientName ) -end - - ---- Finds a CLIENT from the _DATABASE using the relevant Client Unit Name. --- As an optional parameter, a briefing text can be given also. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:FindByName( ClientName, ClientBriefing ) - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( { ClientName, ClientBriefing } ) - ClientFound:AddBriefing( ClientBriefing ) - ClientFound.MessageSwitch = true - - return ClientFound - end - - error( "CLIENT not found for: " .. ClientName ) -end - -function CLIENT:Register( ClientName ) - local self = BASE:Inherit( self, UNIT:Register( ClientName ) ) - - self:F( ClientName ) - self.ClientName = ClientName - self.MessageSwitch = true - self.ClientAlive2 = false - - --self.AliveCheckScheduler = routines.scheduleFunction( self._AliveCheckScheduler, { self }, timer.getTime() + 1, 5 ) - self.AliveCheckScheduler = SCHEDULER:New( self, self._AliveCheckScheduler, {}, 1, 5 ) - - return self -end - - ---- Transport defines that the Client is a Transport. Transports show cargo. --- @param #CLIENT self --- @return #CLIENT -function CLIENT:Transport() - self:F() - - self.ClientTransport = true - return self -end - ---- AddBriefing adds a briefing to a CLIENT when a player joins a mission. --- @param #CLIENT self --- @param #string ClientBriefing is the text defining the Mission briefing. --- @return #CLIENT self -function CLIENT:AddBriefing( ClientBriefing ) - self:F( ClientBriefing ) - self.ClientBriefing = ClientBriefing - self.ClientBriefingShown = false - - return self -end - ---- Show the briefing of a CLIENT. --- @param #CLIENT self --- @return #CLIENT self -function CLIENT:ShowBriefing() - self:F( { self.ClientName, self.ClientBriefingShown } ) - - if not self.ClientBriefingShown then - self.ClientBriefingShown = true - local Briefing = "" - if self.ClientBriefing then - Briefing = Briefing .. self.ClientBriefing - end - Briefing = Briefing .. " Press [LEFT ALT]+[B] to view the complete mission briefing." - self:Message( Briefing, 60, self.ClientName .. '/ClientBriefing', "Briefing" ) - end - - return self -end - ---- Show the mission briefing of a MISSION to the CLIENT. --- @param #CLIENT self --- @param #string MissionBriefing --- @return #CLIENT self -function CLIENT:ShowMissionBriefing( MissionBriefing ) - self:F( { self.ClientName } ) - - if MissionBriefing then - self:Message( MissionBriefing, 60, self.ClientName .. '/MissionBriefing', "Mission Briefing" ) - end - - return self -end - - - ---- Resets a CLIENT. --- @param #CLIENT self --- @param #string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client. -function CLIENT:Reset( ClientName ) - self:F() - self._Menus = {} -end - --- Is Functions - ---- Checks if the CLIENT is a multi-seated UNIT. --- @param #CLIENT self --- @return #boolean true if multi-seated. -function CLIENT:IsMultiSeated() - self:F( self.ClientName ) - - local ClientMultiSeatedTypes = { - ["Mi-8MT"] = "Mi-8MT", - ["UH-1H"] = "UH-1H", - ["P-51B"] = "P-51B" - } - - if self:IsAlive() then - local ClientTypeName = self:GetClientGroupUnit():GetTypeName() - if ClientMultiSeatedTypes[ClientTypeName] then - return true - end - end - - return false -end - ---- Checks for a client alive event and calls a function on a continuous basis. --- @param #CLIENT self --- @param #function CallBack Function. --- @return #CLIENT -function CLIENT:Alive( CallBack, ... ) - self:F() - - self.ClientCallBack = CallBack - self.ClientParameters = arg - - return self -end - ---- @param #CLIENT self -function CLIENT:_AliveCheckScheduler() - self:F( { self.ClientName, self.ClientAlive2, self.ClientBriefingShown } ) - - if self:IsAlive() then -- Polymorphic call of UNIT - if self.ClientAlive2 == false then - self:ShowBriefing() - if self.ClientCallBack then - self:T("Calling Callback function") - self.ClientCallBack( self, unpack( self.ClientParameters ) ) - end - self.ClientAlive2 = true - end - else - if self.ClientAlive2 == true then - self.ClientAlive2 = false - end - end - - return true -end - ---- Return the DCSGroup of a Client. --- This function is modified to deal with a couple of bugs in DCS 1.5.3 --- @param #CLIENT self --- @return DCSGroup#Group -function CLIENT:GetDCSGroup() - self:F3() - --- local ClientData = Group.getByName( self.ClientName ) --- if ClientData and ClientData:isExist() then --- self:T( self.ClientName .. " : group found!" ) --- return ClientData --- else --- return nil --- end - - local ClientUnit = Unit.getByName( self.ClientName ) - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - self:T3( { "CoalitionData:", CoalitionData } ) - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - - --self:E(self.ClientName) - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() and UnitData:getGroup():isExist() then - if ClientGroup:getID() == UnitData:getGroup():getID() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - self.ClientGroupID = ClientGroup:getID() - self.ClientGroupName = ClientGroup:getName() - return ClientGroup - end - else - -- Now we need to resolve the bugs in DCS 1.5 ... - -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) - self:T3( "Bug 1.5 logic" ) - local ClientGroupTemplate = _DATABASE.Templates.Units[self.ClientName].GroupTemplate - self.ClientGroupID = ClientGroupTemplate.groupId - self.ClientGroupName = _DATABASE.Templates.Units[self.ClientName].GroupName - self:T3( self.ClientName .. " : group found in bug 1.5 resolvement logic!" ) - return ClientGroup - end - -- else - -- error( "Client " .. self.ClientName .. " not found!" ) - end - else - --self:E( { "Client not found!", self.ClientName } ) - end - end - end - end - - -- For non player clients - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - return ClientGroup - end - end - end - - self.ClientGroupID = nil - self.ClientGroupUnit = nil - - return nil -end - - --- TODO: Check DCSTypes#Group.ID ---- Get the group ID of the client. --- @param #CLIENT self --- @return DCSTypes#Group.ID -function CLIENT:GetClientGroupID() - - local ClientGroup = self:GetDCSGroup() - - --self:E( self.ClientGroupID ) -- Determined in GetDCSGroup() - return self.ClientGroupID -end - - ---- Get the name of the group of the client. --- @param #CLIENT self --- @return #string -function CLIENT:GetClientGroupName() - - local ClientGroup = self:GetDCSGroup() - - self:T( self.ClientGroupName ) -- Determined in GetDCSGroup() - return self.ClientGroupName -end - ---- Returns the UNIT of the CLIENT. --- @param #CLIENT self --- @return Unit#UNIT -function CLIENT:GetClientGroupUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - self:T( self.ClientDCSUnit ) - if ClientDCSUnit and ClientDCSUnit:isExist() then - local ClientUnit = _DATABASE:FindUnit( self.ClientName ) - self:T2( ClientUnit ) - return ClientUnit - end -end - ---- Returns the DCSUnit of the CLIENT. --- @param #CLIENT self --- @return DCSTypes#Unit -function CLIENT:GetClientGroupDCSUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - if ClientDCSUnit and ClientDCSUnit:isExist() then - self:T2( ClientDCSUnit ) - return ClientDCSUnit - end -end - - ---- Evaluates if the CLIENT is a transport. --- @param #CLIENT self --- @return #boolean true is a transport. -function CLIENT:IsTransport() - self:F() - return self.ClientTransport -end - ---- Shows the @{Cargo#CARGO} contained within the CLIENT to the player as a message. --- The @{Cargo#CARGO} is shown using the @{Message#MESSAGE} distribution system. --- @param #CLIENT self -function CLIENT:ShowCargo() - self:F() - - local CargoMsg = "" - - for CargoName, Cargo in pairs( CARGOS ) do - if self == Cargo:IsLoadedInClient() then - CargoMsg = CargoMsg .. Cargo.CargoName .. " Type:" .. Cargo.CargoType .. " Weight: " .. Cargo.CargoWeight .. "\n" - end - end - - if CargoMsg == "" then - CargoMsg = "empty" - end - - self:Message( CargoMsg, 15, self.ClientName .. "/Cargo", "Co-Pilot: Cargo Status", 30 ) - -end - --- TODO (1) I urgently need to revise this. ---- A local function called by the DCS World Menu system to switch off messages. -function CLIENT.SwitchMessages( PrmTable ) - PrmTable[1].MessageSwitch = PrmTable[2] -end - ---- The main message driver for the CLIENT. --- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system. --- @param #CLIENT self --- @param #string Message is the text describing the message. --- @param #number MessageDuration is the duration in seconds that the Message should be displayed. --- @param #string MessageId is a text identifying the Message in the MessageQueue. The Message system overwrites Messages with the same MessageId --- @param #string MessageCategory is the category of the message (the title). --- @param #number MessageInterval is the interval in seconds between the display of the @{Message#MESSAGE} when the CLIENT is in the air. -function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, MessageInterval ) - self:F( { Message, MessageDuration, MessageId, MessageCategory, MessageInterval } ) - - if not self.MenuMessages then - if self:GetClientGroupID() then - self.MenuMessages = MENU_CLIENT:New( self, 'Messages' ) - self.MenuRouteMessageOn = MENU_CLIENT_COMMAND:New( self, 'Messages On', self.MenuMessages, CLIENT.SwitchMessages, { self, true } ) - self.MenuRouteMessageOff = MENU_CLIENT_COMMAND:New( self,'Messages Off', self.MenuMessages, CLIENT.SwitchMessages, { self, false } ) - end - end - - if self.MessageSwitch == true then - if MessageCategory == nil then - MessageCategory = "Messages" - end - if self.Messages[MessageId] == nil then - self.Messages[MessageId] = {} - self.Messages[MessageId].MessageId = MessageId - self.Messages[MessageId].MessageTime = timer.getTime() - self.Messages[MessageId].MessageDuration = MessageDuration - if MessageInterval == nil then - self.Messages[MessageId].MessageInterval = 600 - else - self.Messages[MessageId].MessageInterval = MessageInterval - end - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - else - if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then - if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + 10 then - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - self.Messages[MessageId].MessageTime = timer.getTime() - end - else - if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + self.Messages[MessageId].MessageInterval then - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - self.Messages[MessageId].MessageTime = timer.getTime() - end - end - end - end -end ---- Manage the mission database. --- --- @{#DATABASE} class --- ================== --- Mission designers can use the DATABASE class to refer to: --- --- * UNITS --- * GROUPS --- * players --- * alive players --- * CLIENTS --- * alive CLIENTS --- --- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Gruop templates as defined within the Mission Editor. --- --- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. --- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. --- --- DATABASE iterators: --- =================== --- You can iterate the database with the available iterator methods. --- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the DATABASE: --- --- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. --- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayer}: Calls a function for each player it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayerAlive}: Calls a function for each alive player it finds within the DATABASE. --- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. --- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. --- --- @module Database --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Menu" ) -Include.File( "Group" ) -Include.File( "Unit" ) -Include.File( "Event" ) -Include.File( "Client" ) - - ---- DATABASE class --- @type DATABASE --- @extends Base#BASE -DATABASE = { - ClassName = "DATABASE", - Templates = { - Units = {}, - Groups = {}, - ClientsByName = {}, - ClientsByID = {}, - }, - DCSUnits = {}, - DCSGroups = {}, - UNITS = {}, - GROUPS = {}, - PLAYERS = {}, - PLAYERSALIVE = {}, - CLIENTS = {}, - CLIENTSALIVE = {}, - NavPoints = {}, -} - -local _DATABASECoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _DATABASECategory = - { - [Unit.Category.AIRPLANE] = "Plane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Vehicle", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - - ---- Creates a new DATABASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #DATABASE self --- @return #DATABASE --- @usage --- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. --- DBObject = DATABASE:New() -function DATABASE:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - - _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) - _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) - - - -- Follow alive players and clients - _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) - _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) - - self:_RegisterTemplates() - self:_RegisterDatabase() - self:_RegisterPlayers() - - return self -end - ---- Finds a Unit based on the Unit Name. --- @param #DATABASE self --- @param #string UnitName --- @return Unit#UNIT The found Unit. -function DATABASE:FindUnit( UnitName ) - - local UnitFound = self.UNITS[UnitName] - return UnitFound -end - - ---- Adds a Unit based on the Unit Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddUnit( DCSUnit, DCSUnitName ) - - self.DCSUnits[DCSUnitName] = DCSUnit - self.UNITS[DCSUnitName] = UNIT:Register( DCSUnitName ) -end - - ---- Deletes a Unit from the DATABASE based on the Unit Name. --- @param #DATABASE self -function DATABASE:DeleteUnit( DCSUnitName ) - - self.DCSUnits[DCSUnitName] = nil -end - - ---- Finds a CLIENT based on the ClientName. --- @param #DATABASE self --- @param #string ClientName --- @return Client#CLIENT The found CLIENT. -function DATABASE:FindClient( ClientName ) - - local ClientFound = self.CLIENTS[ClientName] - return ClientFound -end - - ---- Adds a CLIENT based on the ClientName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddClient( ClientName ) - - self.CLIENTS[ClientName] = CLIENT:Register( ClientName ) - self:E( self.CLIENTS[ClientName]:GetClassNameAndID() ) -end - - ---- Finds a GROUP based on the GroupName. --- @param #DATABASE self --- @param #string GroupName --- @return Group#GROUP The found GROUP. -function DATABASE:FindGroup( GroupName ) - - local GroupFound = self.GROUPS[GroupName] - return GroupFound -end - - ---- Adds a GROUP based on the GroupName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddGroup( DCSGroup, GroupName ) - - self.DCSGroups[GroupName] = DCSGroup - self.GROUPS[GroupName] = GROUP:Register( GroupName ) -end - ---- Adds a player based on the Player Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddPlayer( UnitName, PlayerName ) - - if PlayerName then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self.PLAYERS[PlayerName] = PlayerName - self.PLAYERSALIVE[PlayerName] = PlayerName - self.CLIENTSALIVE[PlayerName] = self:FindClient( UnitName ) - end -end - ---- Deletes a player from the DATABASE based on the Player Name. --- @param #DATABASE self -function DATABASE:DeletePlayer( PlayerName ) - - if PlayerName then - self:E( { "Clean player:", PlayerName } ) - self.PLAYERSALIVE[PlayerName] = nil - self.CLIENTSALIVE[PlayerName] = nil - end -end - - ---- Instantiate new Groups within the DCSRTE. --- This method expects EXACTLY the same structure as a structure within the ME, and needs 2 additional fields defined: --- SpawnCountryID, SpawnCategoryID --- This method is used by the SPAWN class. --- @param #DATABASE self --- @param #table SpawnTemplate --- @return #DATABASE self -function DATABASE:Spawn( SpawnTemplate ) - self:F2( SpawnTemplate.name ) - - self:T2( { SpawnTemplate.SpawnCountryID, SpawnTemplate.SpawnCategoryID } ) - - -- Copy the spawn variables of the template in temporary storage, nullify, and restore the spawn variables. - local SpawnCoalitionID = SpawnTemplate.SpawnCoalitionID - local SpawnCountryID = SpawnTemplate.SpawnCountryID - local SpawnCategoryID = SpawnTemplate.SpawnCategoryID - - -- Nullify - SpawnTemplate.SpawnCoalitionID = nil - SpawnTemplate.SpawnCountryID = nil - SpawnTemplate.SpawnCategoryID = nil - - self:_RegisterTemplate( SpawnTemplate ) - coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) - - -- Restore - SpawnTemplate.SpawnCoalitionID = SpawnCoalitionID - SpawnTemplate.SpawnCountryID = SpawnCountryID - SpawnTemplate.SpawnCategoryID = SpawnCategoryID - - - local SpawnGroup = GROUP:Register( SpawnTemplate.name ) - return SpawnGroup -end - ---- Set a status to a Group within the Database, this to check crossing events for example. -function DATABASE:SetStatusGroup( GroupName, Status ) - self:F2( Status ) - - self.Templates.Groups[GroupName].Status = Status -end - ---- Get a status to a Group within the Database, this to check crossing events for example. -function DATABASE:GetStatusGroup( GroupName ) - self:F2( Status ) - - if self.Templates.Groups[GroupName] then - return self.Templates.Groups[GroupName].Status - else - return "" - end -end - - ---- Private method that registers new Group Templates within the DATABASE Object. --- @param #DATABASE self --- @param #table GroupTemplate --- @return #DATABASE self -function DATABASE:_RegisterTemplate( GroupTemplate ) - - local GroupTemplateName = env.getValueDictByKey(GroupTemplate.name) - - if not self.Templates.Groups[GroupTemplateName] then - self.Templates.Groups[GroupTemplateName] = {} - self.Templates.Groups[GroupTemplateName].Status = nil - end - - -- Delete the spans from the route, it is not needed and takes memory. - if GroupTemplate.route and GroupTemplate.route.spans then - GroupTemplate.route.spans = nil - end - - self.Templates.Groups[GroupTemplateName].GroupName = GroupTemplateName - self.Templates.Groups[GroupTemplateName].Template = GroupTemplate - self.Templates.Groups[GroupTemplateName].groupId = GroupTemplate.groupId - self.Templates.Groups[GroupTemplateName].UnitCount = #GroupTemplate.units - self.Templates.Groups[GroupTemplateName].Units = GroupTemplate.units - - self:T2( { "Group", self.Templates.Groups[GroupTemplateName].GroupName, self.Templates.Groups[GroupTemplateName].UnitCount } ) - - for unit_num, UnitTemplate in pairs( GroupTemplate.units ) do - - local UnitTemplateName = env.getValueDictByKey(UnitTemplate.name) - self.Templates.Units[UnitTemplateName] = {} - self.Templates.Units[UnitTemplateName].UnitName = UnitTemplateName - self.Templates.Units[UnitTemplateName].Template = UnitTemplate - self.Templates.Units[UnitTemplateName].GroupName = GroupTemplateName - self.Templates.Units[UnitTemplateName].GroupTemplate = GroupTemplate - self.Templates.Units[UnitTemplateName].GroupId = GroupTemplate.groupId - self:E( {"skill",UnitTemplate.skill}) - if UnitTemplate.skill and (UnitTemplate.skill == "Client" or UnitTemplate.skill == "Player") then - self.Templates.ClientsByName[UnitTemplateName] = UnitTemplate - self.Templates.ClientsByID[UnitTemplate.unitId] = UnitTemplate - end - self:E( { "Unit", self.Templates.Units[UnitTemplateName].UnitName } ) - end -end - - ---- Private method that registers all alive players in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterPlayers() - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - local UnitName = UnitData:getName() - local PlayerName = UnitData:getPlayerName() - if not self.PLAYERS[PlayerName] then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self:AddPlayer( UnitName, PlayerName ) - end - end - end - end - - return self -end - - ---- Private method that registers all datapoints within in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterDatabase() - - local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for DCSGroupId, DCSGroup in pairs( CoalitionData ) do - - if DCSGroup:isExist() then - local DCSGroupName = DCSGroup:getName() - - self:E( { "Register Group:", DCSGroup, DCSGroupName } ) - self:AddGroup( DCSGroup, DCSGroupName ) - - for DCSUnitId, DCSUnit in pairs( DCSGroup:getUnits() ) do - - local DCSUnitName = DCSUnit:getName() - self:E( { "Register Unit:", DCSUnit, DCSUnitName } ) - self:AddUnit( DCSUnit, DCSUnitName ) - end - else - self:E( { "Group does not exist: ", DCSGroup } ) - end - - end - end - - for ClientName, ClientTemplate in pairs( self.Templates.ClientsByName ) do - self:E( { "Adding Client:", ClientName } ) - self:AddClient( ClientName ) - end - - return self -end - ---- Events - ---- Handles the OnBirth event for the alive units set. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnBirth( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - self:AddUnit( Event.IniDCSUnit, Event.IniDCSUnitName ) - self:AddGroup( Event.IniDCSGroup, Event.IniDCSGroupName ) - self:_EventOnPlayerEnterUnit( Event ) - end -end - - ---- Handles the OnDead or OnCrash event for alive units set. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnDeadOrCrash( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - if self.DCSUnits[Event.IniDCSUnitName] then - self:DeleteUnit( Event.IniDCSUnitName ) - -- add logic to correctly remove a group once all units are destroyed... - end - end -end - - ---- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnPlayerEnterUnit( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if not self.PLAYERSALIVE[PlayerName] then - self:AddPlayer( Event.IniDCSUnitName, PlayerName ) - end - end -end - - ---- Handles the OnPlayerLeaveUnit event to clean the active players table. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnPlayerLeaveUnit( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if self.PLAYERSALIVE[PlayerName] then - self:DeletePlayer( PlayerName ) - end - end -end - ---- Iterators - ---- Iterate the DATABASE and call an iterator function for the given set, providing the Object for each element within the set and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. --- @return #DATABASE self -function DATABASE:ForEach( IteratorFunction, arg, Set ) - self:F2( arg ) - - local function CoRoutine() - local Count = 0 - for ObjectID, Object in pairs( Set ) do - self:T2( Object ) - IteratorFunction( Object, unpack( arg ) ) - Count = Count + 1 - if Count % 10 == 0 then - coroutine.yield( false ) - end - end - return true - end - - local co = coroutine.create( CoRoutine ) - - local function Schedule() - - local status, res = coroutine.resume( co ) - self:T2( { status, res } ) - - if status == false then - error( res ) - end - if res == false then - return true -- resume next time the loop - end - - return false - end - - local Scheduler = SCHEDULER:New( self, Schedule, {}, 0.001, 0.001, 0 ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** unit, providing the DCSUnit and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive unit in the database. The function needs to accept a DCSUnit parameter. --- @return #DATABASE self -function DATABASE:ForEachDCSUnit( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.DCSUnits ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** UNIT, providing the UNIT and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachUnit( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.UNITS ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the database. The function needs to accept a GROUP parameter. --- @return #DATABASE self -function DATABASE:ForEachGroup( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.GROUPS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each player, providing the player name and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. --- @return #DATABASE self -function DATABASE:ForEachPlayer( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** player, providing the Unit of the player and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachPlayerAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERSALIVE ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClient( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTS ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each **ALIVE** CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClientAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTSALIVE ) - - return self -end - - -function DATABASE:_RegisterTemplates() - self:F2() - - self.Navpoints = {} - self.UNITS = {} - --Build routines.db.units and self.Navpoints - for coa_name, coa_data in pairs(env.mission.coalition) do - - if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then - --self.Units[coa_name] = {} - - ---------------------------------------------- - -- build nav points DB - self.Navpoints[coa_name] = {} - if coa_data.nav_points then --navpoints - for nav_ind, nav_data in pairs(coa_data.nav_points) do - - if type(nav_data) == 'table' then - self.Navpoints[coa_name][nav_ind] = routines.utils.deepCopy(nav_data) - - self.Navpoints[coa_name][nav_ind]['name'] = nav_data.callsignStr -- name is a little bit more self-explanatory. - self.Navpoints[coa_name][nav_ind]['point'] = {} -- point is used by SSE, support it. - self.Navpoints[coa_name][nav_ind]['point']['x'] = nav_data.x - self.Navpoints[coa_name][nav_ind]['point']['y'] = 0 - self.Navpoints[coa_name][nav_ind]['point']['z'] = nav_data.y - end - end - end - ------------------------------------------------- - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - - local countryName = string.lower(cntry_data.name) - --self.Units[coa_name][countryName] = {} - --self.Units[coa_name][countryName]["countryId"] = cntry_data.id - - if type(cntry_data) == 'table' then --just making sure - - for obj_type_name, obj_type_data in pairs(cntry_data) do - - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check - - local category = obj_type_name - - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - - --self.Units[coa_name][countryName][category] = {} - - for group_num, GroupTemplate in pairs(obj_type_data.group) do - - if GroupTemplate and GroupTemplate.units and type(GroupTemplate.units) == 'table' then --making sure again- this is a valid group - self:_RegisterTemplate( GroupTemplate ) - end --if GroupTemplate and GroupTemplate.units then - end --for group_num, GroupTemplate in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --if type(cntry_data) == 'table' then - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do - - return self -end - - - - ---- The main include file for the MOOSE system. - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Event" ) - --- The order of the declarations is important here. Don't touch it. - ---- Declare the event dispatcher based on the EVENT class -_EVENTDISPATCHER = EVENT:New() -- #EVENT - ---- Declare the main database object, which is used internally by the MOOSE classes. -_DATABASE = DATABASE:New() -- Database#DATABASE - ---- Scoring system for MOOSE. --- This scoring class calculates the hits and kills that players make within a simulation session. --- Scoring is calculated using a defined algorithm. --- With a small change in MissionScripting.lua, the scoring can also be logged in a CSV file, that can then be uploaded --- to a database or a BI tool to publish the scoring results to the player community. --- @module Scoring --- @author FlightControl - - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Menu" ) -Include.File( "Group" ) -Include.File( "Event" ) - - ---- The Scoring class --- @type SCORING --- @field Players A collection of the current players that have joined the game. --- @extends Base#BASE -SCORING = { - ClassName = "SCORING", - ClassID = 0, - Players = {}, -} - -local _SCORINGCoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _SCORINGCategory = - { - [Unit.Category.AIRPLANE] = "Plane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Vehicle", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - ---- Creates a new SCORING object to administer the scoring achieved by players. --- @param #SCORING self --- @param #string GameName The name of the game. This name is also logged in the CSV score file. --- @return #SCORING self --- @usage --- -- Define a new scoring object for the mission Gori Valley. --- ScoringObject = SCORING:New( "Gori Valley" ) -function SCORING:New( GameName ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - - if GameName then - self.GameName = GameName - else - error( "A game name must be given to register the scoring results" ) - end - - - _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnHit( self._EventOnHit, self ) - - --self.SchedulerId = routines.scheduleFunction( SCORING._FollowPlayersScheduled, { self }, 0, 5 ) - self.SchedulerId = SCHEDULER:New( self, self._FollowPlayersScheduled, {}, 0, 5 ) - - self:ScoreMenu() - - return self - -end - ---- Creates a score radio menu. Can be accessed using Radio -> F10. --- @param #SCORING self --- @return #SCORING self -function SCORING:ScoreMenu() - self.Menu = SUBMENU:New( 'Scoring' ) - self.AllScoresMenu = COMMANDMENU:New( 'Score All Active Players', self.Menu, SCORING.ReportScoreAll, self ) - --- = COMMANDMENU:New('Your Current Score', ReportScore, SCORING.ReportScorePlayer, self ) - return self -end - ---- Follows new players entering Clients within the DCSRTE. --- TODO: Need to see if i can catch this also with an event. It will eliminate the schedule ... -function SCORING:_FollowPlayersScheduled() - self:F3( "_FollowPlayersScheduled" ) - - local ClientUnit = 0 - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers(coalition.side.RED), AlivePlayersBlue = coalition.getPlayers(coalition.side.BLUE) } - local unitId - local unitData - local AlivePlayerUnits = {} - - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - self:T3( { "_FollowPlayersScheduled", CoalitionData } ) - for UnitId, UnitData in pairs( CoalitionData ) do - self:_AddPlayerFromUnit( UnitData ) - end - end - - return true -end - - ---- Track DEAD or CRASH events for the scoring. --- @param #SCORING self --- @param Event#EVENTDATA Event -function SCORING:_EventOnDeadOrCrash( Event ) - self:F( { Event } ) - - local TargetUnit = nil - local TargetGroup = nil - local TargetUnitName = "" - local TargetGroupName = "" - local TargetPlayerName = "" - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - TargetUnit = Event.IniDCSUnit - TargetUnitName = Event.IniDCSUnitName - TargetGroup = Event.IniDCSGroup - TargetGroupName = Event.IniDCSGroupName - TargetPlayerName = TargetUnit:getPlayerName() - - TargetCoalition = TargetUnit:getCoalition() - --TargetCategory = TargetUnit:getCategory() - TargetCategory = TargetUnit:getDesc().category -- Workaround - TargetType = TargetUnit:getTypeName() - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType } ) - end - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Something got killed" ) - - -- Some variables - local InitUnitName = PlayerData.UnitName - local InitUnitType = PlayerData.UnitType - local InitCoalition = PlayerData.UnitCoalition - local InitCategory = PlayerData.UnitCategory - local InitUnitCoalition = _SCORINGCoalition[InitCoalition] - local InitUnitCategory = _SCORINGCategory[InitCategory] - - self:T( { InitUnitName, InitUnitType, InitUnitCoalition, InitCoalition, InitUnitCategory, InitCategory } ) - - -- What is he hitting? - if TargetCategory then - if PlayerData and PlayerData.Hit and PlayerData.Hit[TargetCategory] and PlayerData.Hit[TargetCategory][TargetUnitName] then -- Was there a hit for this unit for this player before registered??? - if not PlayerData.Kill[TargetCategory] then - PlayerData.Kill[TargetCategory] = {} - end - if not PlayerData.Kill[TargetCategory][TargetType] then - PlayerData.Kill[TargetCategory][TargetType] = {} - PlayerData.Kill[TargetCategory][TargetType].Score = 0 - PlayerData.Kill[TargetCategory][TargetType].ScoreKill = 0 - PlayerData.Kill[TargetCategory][TargetType].Penalty = 0 - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = 0 - end - - if InitCoalition == TargetCoalition then - PlayerData.Penalty = PlayerData.Penalty + 25 - PlayerData.Kill[TargetCategory][TargetType].Penalty = PlayerData.Kill[TargetCategory][TargetType].Penalty + 25 - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = PlayerData.Kill[TargetCategory][TargetType].PenaltyKill + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty .. - ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, - "", 5, "/PENALTY" .. PlayerName .. "/" .. InitUnitName ):ToAll() - self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - PlayerData.Score = PlayerData.Score + 10 - PlayerData.Kill[TargetCategory][TargetType].Score = PlayerData.Kill[TargetCategory][TargetType].Score + 10 - PlayerData.Kill[TargetCategory][TargetType].ScoreKill = PlayerData.Kill[TargetCategory][TargetType].ScoreKill + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score .. - ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, - "", 5, "/SCORE" .. PlayerName .. "/" .. InitUnitName ):ToAll() - self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - end - end - end - end -end - - - ---- Add a new player entering a Unit. -function SCORING:_AddPlayerFromUnit( UnitData ) - self:F( UnitData ) - - if UnitData and UnitData:isExist() then - local UnitName = UnitData:getName() - local PlayerName = UnitData:getPlayerName() - local UnitDesc = UnitData:getDesc() - local UnitCategory = UnitDesc.category - local UnitCoalition = UnitData:getCoalition() - local UnitTypeName = UnitData:getTypeName() - - self:T( { PlayerName, UnitName, UnitCategory, UnitCoalition, UnitTypeName } ) - - if self.Players[PlayerName] == nil then -- I believe this is the place where a Player gets a life in a mission when he enters a unit ... - self.Players[PlayerName] = {} - self.Players[PlayerName].Hit = {} - self.Players[PlayerName].Kill = {} - self.Players[PlayerName].Mission = {} - - -- for CategoryID, CategoryName in pairs( SCORINGCategory ) do - -- self.Players[PlayerName].Hit[CategoryID] = {} - -- self.Players[PlayerName].Kill[CategoryID] = {} - -- end - self.Players[PlayerName].HitPlayers = {} - self.Players[PlayerName].HitUnits = {} - self.Players[PlayerName].Score = 0 - self.Players[PlayerName].Penalty = 0 - self.Players[PlayerName].PenaltyCoalition = 0 - self.Players[PlayerName].PenaltyWarning = 0 - end - - if not self.Players[PlayerName].UnitCoalition then - self.Players[PlayerName].UnitCoalition = UnitCoalition - else - if self.Players[PlayerName].UnitCoalition ~= UnitCoalition then - self.Players[PlayerName].Penalty = self.Players[PlayerName].Penalty + 50 - self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] .. - "(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.", - "", - 2, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType, - UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() ) - end - end - self.Players[PlayerName].UnitName = UnitName - self.Players[PlayerName].UnitCoalition = UnitCoalition - self.Players[PlayerName].UnitCategory = UnitCategory - self.Players[PlayerName].UnitType = UnitTypeName - - if self.Players[PlayerName].Penalty > 100 then - if self.Players[PlayerName].PenaltyWarning < 1 then - MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty, - "", - 30, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1 - end - end - - if self.Players[PlayerName].Penalty > 150 then - ClientGroup = GROUP:NewFromDCSUnit( UnitData ) - ClientGroup:Destroy() - MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", - "", - 10, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - end - - end -end - - ---- Registers Scores the players completing a Mission Task. -function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score ) - self:F( { PlayerUnit, MissionName, Score } ) - - local PlayerName = PlayerUnit:getPlayerName() - - if not self.Players[PlayerName].Mission[MissionName] then - self.Players[PlayerName].Mission[MissionName] = {} - self.Players[PlayerName].Mission[MissionName].ScoreTask = 0 - self.Players[PlayerName].Mission[MissionName].ScoreMission = 0 - end - - self:T( PlayerName ) - self:T( self.Players[PlayerName].Mission[MissionName] ) - - self.Players[PlayerName].Score = self.Players[PlayerName].Score + Score - self.Players[PlayerName].Mission[MissionName].ScoreTask = self.Players[PlayerName].Mission[MissionName].ScoreTask + Score - - MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " .. - Score .. " Score points added.", - "", 20, "/SCORETASK" .. PlayerName ):ToAll() - - self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() ) -end - - ---- Registers Mission Scores for possible multiple players that contributed in the Mission. -function SCORING:_AddMissionScore( MissionName, Score ) - self:F( { MissionName, Score } ) - - for PlayerName, PlayerData in pairs( self.Players ) do - - if PlayerData.Mission[MissionName] then - PlayerData.Score = PlayerData.Score + Score - PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score - MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " .. - Score .. " Score points added.", - "", 20, "/SCOREMISSION" .. PlayerName ):ToAll() - self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score ) - end - end -end - ---- Handles the OnHit event for the scoring. --- @param #SCORING self --- @param Event#EVENTDATA Event -function SCORING:_EventOnHit( Event ) - self:F( { Event } ) - - local InitUnit = nil - local InitUnitName = "" - local InitGroup = nil - local InitGroupName = "" - local InitPlayerName = nil - - local InitCoalition = nil - local InitCategory = nil - local InitType = nil - local InitUnitCoalition = nil - local InitUnitCategory = nil - local InitUnitType = nil - - local TargetUnit = nil - local TargetUnitName = "" - local TargetGroup = nil - local TargetGroupName = "" - local TargetPlayerName = "" - - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - InitUnit = Event.IniDCSUnit - InitUnitName = Event.IniDCSUnitName - InitGroup = Event.IniDCSGroup - InitGroupName = Event.IniDCSGroupName - InitPlayerName = InitUnit:getPlayerName() - - InitCoalition = InitUnit:getCoalition() - --TODO: Workaround Client DCS Bug - --InitCategory = InitUnit:getCategory() - InitCategory = InitUnit:getDesc().category - InitType = InitUnit:getTypeName() - - InitUnitCoalition = _SCORINGCoalition[InitCoalition] - InitUnitCategory = _SCORINGCategory[InitCategory] - InitUnitType = InitType - - self:T( { InitUnitName, InitGroupName, InitPlayerName, InitCoalition, InitCategory, InitType , InitUnitCoalition, InitUnitCategory, InitUnitType } ) - end - - - if Event.TgtDCSUnit then - - TargetUnit = Event.TgtDCSUnit - TargetUnitName = Event.TgtDCSUnitName - TargetGroup = Event.TgtDCSGroup - TargetGroupName = Event.TgtDCSGroupName - TargetPlayerName = TargetUnit:getPlayerName() - - TargetCoalition = TargetUnit:getCoalition() - --TODO: Workaround Client DCS Bug - --TargetCategory = TargetUnit:getCategory() - TargetCategory = TargetUnit:getDesc().category - TargetType = TargetUnit:getTypeName() - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType, TargetUnitCoalition, TargetUnitCategory, TargetUnitType } ) - end - - if InitPlayerName ~= nil then -- It is a player that is hitting something - self:_AddPlayerFromUnit( InitUnit ) - if self.Players[InitPlayerName] then -- This should normally not happen, but i'll test it anyway. - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - self:_AddPlayerFromUnit( TargetUnit ) - self.Players[InitPlayerName].HitPlayers = self.Players[InitPlayerName].HitPlayers + 1 - end - - self:T( "Hitting Something" ) - -- What is he hitting? - if TargetCategory then - if not self.Players[InitPlayerName].Hit[TargetCategory] then - self.Players[InitPlayerName].Hit[TargetCategory] = {} - end - if not self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] then - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] = {} - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = 0 - end - local Score = 0 - if InitCoalition == TargetCoalition then - self.Players[InitPlayerName].Penalty = self.Players[InitPlayerName].Penalty + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit + 1 - MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty .. - ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, - "", - 2, - "/PENALTY" .. InitPlayerName .. "/" .. InitUnitName - ):ToAll() - self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - self.Players[InitPlayerName].Score = self.Players[InitPlayerName].Score + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score + 1 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit + 1 - MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score .. - ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, - "", - 2, - "/SCORE" .. InitPlayerName .. "/" .. InitUnitName - ):ToAll() - self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - end - end - elseif InitPlayerName == nil then -- It is an AI hitting a player??? - - end -end - - -function SCORING:ReportScoreAll() - - env.info( "Hello World " ) - - local ScoreMessage = "" - local PlayerMessage = "" - - self:T( "Score Report" ) - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local PlayerScore = 0 - local PlayerPenalty = 0 - - ScoreMessage = ":\n" - - local ScoreMessageHits = "" - - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( CategoryName ) - if PlayerData.Hit[CategoryID] then - local Score = 0 - local ScoreHit = 0 - local Penalty = 0 - local PenaltyHit = 0 - self:T( "Hit scores exist for player " .. PlayerName ) - for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do - Score = Score + UnitData.Score - ScoreHit = ScoreHit + UnitData.ScoreHit - Penalty = Penalty + UnitData.Penalty - PenaltyHit = UnitData.PenaltyHit - end - local ScoreMessageHit = string.format( "%s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageHit ) - ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageHits ~= "" then - ScoreMessage = ScoreMessage .. " Hits: " .. ScoreMessageHits .. "\n" - end - - local ScoreMessageKills = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( "Kill scores exist for player " .. PlayerName ) - if PlayerData.Kill[CategoryID] then - local Score = 0 - local ScoreKill = 0 - local Penalty = 0 - local PenaltyKill = 0 - - for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do - Score = Score + UnitData.Score - ScoreKill = ScoreKill + UnitData.ScoreKill - Penalty = Penalty + UnitData.Penalty - PenaltyKill = PenaltyKill + UnitData.PenaltyKill - end - - local ScoreMessageKill = string.format( " %s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageKill ) - ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill - - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageKills ~= "" then - ScoreMessage = ScoreMessage .. " Kills: " .. ScoreMessageKills .. "\n" - end - - local ScoreMessageCoalitionChangePenalties = "" - if PlayerData.PenaltyCoalition ~= 0 then - ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) - PlayerPenalty = PlayerPenalty + PlayerData.Penalty - end - if ScoreMessageCoalitionChangePenalties ~= "" then - ScoreMessage = ScoreMessage .. " Coalition Penalties: " .. ScoreMessageCoalitionChangePenalties .. "\n" - end - - local ScoreMessageMission = "" - local ScoreMission = 0 - local ScoreTask = 0 - for MissionName, MissionData in pairs( PlayerData.Mission ) do - ScoreMission = ScoreMission + MissionData.ScoreMission - ScoreTask = ScoreTask + MissionData.ScoreTask - ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " - end - PlayerScore = PlayerScore + ScoreMission + ScoreTask - - if ScoreMessageMission ~= "" then - ScoreMessage = ScoreMessage .. " Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ")\n" - end - - PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) - end - end - MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll() -end - - -function SCORING:ReportScorePlayer() - - env.info( "Hello World " ) - - local ScoreMessage = "" - local PlayerMessage = "" - - self:T( "Score Report" ) - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local PlayerScore = 0 - local PlayerPenalty = 0 - - ScoreMessage = "" - - local ScoreMessageHits = "" - - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( CategoryName ) - if PlayerData.Hit[CategoryID] then - local Score = 0 - local ScoreHit = 0 - local Penalty = 0 - local PenaltyHit = 0 - self:T( "Hit scores exist for player " .. PlayerName ) - for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do - Score = Score + UnitData.Score - ScoreHit = ScoreHit + UnitData.ScoreHit - Penalty = Penalty + UnitData.Penalty - PenaltyHit = UnitData.PenaltyHit - end - local ScoreMessageHit = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreHit, PenaltyHit ) - self:T( ScoreMessageHit ) - ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageHits ~= "" then - ScoreMessage = ScoreMessage .. "\n Hits: " .. ScoreMessageHits .. " " - end - - local ScoreMessageKills = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( "Kill scores exist for player " .. PlayerName ) - if PlayerData.Kill[CategoryID] then - local Score = 0 - local ScoreKill = 0 - local Penalty = 0 - local PenaltyKill = 0 - - for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do - Score = Score + UnitData.Score - ScoreKill = ScoreKill + UnitData.ScoreKill - Penalty = Penalty + UnitData.Penalty - PenaltyKill = PenaltyKill + UnitData.PenaltyKill - end - - local ScoreMessageKill = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreKill, PenaltyKill ) - self:T( ScoreMessageKill ) - ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill - - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageKills ~= "" then - ScoreMessage = ScoreMessage .. "\n Kills: " .. ScoreMessageKills .. " " - end - - local ScoreMessageCoalitionChangePenalties = "" - if PlayerData.PenaltyCoalition ~= 0 then - ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) - PlayerPenalty = PlayerPenalty + PlayerData.Penalty - end - if ScoreMessageCoalitionChangePenalties ~= "" then - ScoreMessage = ScoreMessage .. "\n Coalition: " .. ScoreMessageCoalitionChangePenalties .. " " - end - - local ScoreMessageMission = "" - local ScoreMission = 0 - local ScoreTask = 0 - for MissionName, MissionData in pairs( PlayerData.Mission ) do - ScoreMission = ScoreMission + MissionData.ScoreMission - ScoreTask = ScoreTask + MissionData.ScoreTask - ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " - end - PlayerScore = PlayerScore + ScoreMission + ScoreTask - - if ScoreMessageMission ~= "" then - ScoreMessage = ScoreMessage .. "\n Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ") " - end - - PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) - end - end - MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll() - -end - - -function SCORING:SecondsToClock(sSeconds) - local nSeconds = sSeconds - if nSeconds == 0 then - --return nil; - return "00:00:00"; - else - nHours = string.format("%02.f", math.floor(nSeconds/3600)); - nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); - nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); - return nHours..":"..nMins..":"..nSecs - end -end - ---- Opens a score CSV file to log the scores. --- @param #SCORING self --- @param #string ScoringCSV --- @return #SCORING self --- @usage --- -- Open a new CSV file to log the scores of the game Gori Valley. Let the name of the CSV file begin with "Player Scores". --- ScoringObject = SCORING:New( "Gori Valley" ) --- ScoringObject:OpenCSV( "Player Scores" ) -function SCORING:OpenCSV( ScoringCSV ) - self:F( ScoringCSV ) - - if lfs and io and os then - if ScoringCSV then - self.ScoringCSV = ScoringCSV - local fdir = lfs.writedir() .. [[Logs\]] .. self.ScoringCSV .. " " .. os.date( "%Y-%m-%d %H-%M-%S" ) .. ".csv" - - self.CSVFile, self.err = io.open( fdir, "w+" ) - if not self.CSVFile then - error( "Error: Cannot open CSV file in " .. lfs.writedir() ) - end - - self.CSVFile:write( '"GameName","RunTime","Time","PlayerName","ScoreType","PlayerUnitCoaltion","PlayerUnitCategory","PlayerUnitType","PlayerUnitName","TargetUnitCoalition","TargetUnitCategory","TargetUnitType","TargetUnitName","Times","Score"\n' ) - - self.RunTime = os.date("%y-%m-%d_%H-%M-%S") - else - error( "A string containing the CSV file name must be given." ) - end - else - self:E( "The MissionScripting.lua file has not been changed to allow lfs, io and os modules to be used..." ) - end - return self -end - - ---- Registers a score for a player. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @param #string ScoreType The type of the score. --- @param #string ScoreTimes The amount of scores achieved. --- @param #string ScoreAmount The score given. --- @param #string PlayerUnitName The unit name of the player. --- @param #string PlayerUnitCoalition The coalition of the player unit. --- @param #string PlayerUnitCategory The category of the player unit. --- @param #string PlayerUnitType The type of the player unit. --- @param #string TargetUnitName The name of the target unit. --- @param #string TargetUnitCoalition The coalition of the target unit. --- @param #string TargetUnitCategory The category of the target unit. --- @param #string TargetUnitType The type of the target unit. --- @return #SCORING self -function SCORING:ScoreCSV( PlayerName, ScoreType, ScoreTimes, ScoreAmount, PlayerUnitName, PlayerUnitCoalition, PlayerUnitCategory, PlayerUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - --write statistic information to file - local ScoreTime = self:SecondsToClock( timer.getTime() ) - PlayerName = PlayerName:gsub( '"', '_' ) - - if PlayerUnitName and PlayerUnitName ~= '' then - local PlayerUnit = Unit.getByName( PlayerUnitName ) - - if PlayerUnit then - if not PlayerUnitCategory then - --PlayerUnitCategory = SCORINGCategory[PlayerUnit:getCategory()] - PlayerUnitCategory = _SCORINGCategory[PlayerUnit:getDesc().category] - end - - if not PlayerUnitCoalition then - PlayerUnitCoalition = _SCORINGCoalition[PlayerUnit:getCoalition()] - end - - if not PlayerUnitType then - PlayerUnitType = PlayerUnit:getTypeName() - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - - if not TargetUnitCoalition then - TargetUnitCoalition = '' - end - - if not TargetUnitCategory then - TargetUnitCategory = '' - end - - if not TargetUnitType then - TargetUnitType = '' - end - - if not TargetUnitName then - TargetUnitName = '' - end - - if lfs and io and os then - self.CSVFile:write( - '"' .. self.GameName .. '"' .. ',' .. - '"' .. self.RunTime .. '"' .. ',' .. - '' .. ScoreTime .. '' .. ',' .. - '"' .. PlayerName .. '"' .. ',' .. - '"' .. ScoreType .. '"' .. ',' .. - '"' .. PlayerUnitCoalition .. '"' .. ',' .. - '"' .. PlayerUnitCategory .. '"' .. ',' .. - '"' .. PlayerUnitType .. '"' .. ',' .. - '"' .. PlayerUnitName .. '"' .. ',' .. - '"' .. TargetUnitCoalition .. '"' .. ',' .. - '"' .. TargetUnitCategory .. '"' .. ',' .. - '"' .. TargetUnitType .. '"' .. ',' .. - '"' .. TargetUnitName .. '"' .. ',' .. - '' .. ScoreTimes .. '' .. ',' .. - '' .. ScoreAmount - ) - - self.CSVFile:write( "\n" ) - end -end - - -function SCORING:CloseCSV() - if lfs and io and os then - self.CSVFile:close() - end -end - ---- CARGO Classes --- @module CARGO - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) -Include.File( "Scheduler" ) - - ---- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player". --- These clients are defined within the Mission Orchestration Framework (MOF) - -CARGOS = {} - - -CARGO_ZONE = { - ClassName="CARGO_ZONE", - CargoZoneName = '', - CargoHostUnitName = '', - SIGNAL = { - TYPE = { - SMOKE = { ID = 1, TEXT = "smoke" }, - FLARE = { ID = 2, TEXT = "flare" } - }, - COLOR = { - GREEN = { ID = 1, TRIGGERCOLOR = trigger.smokeColor.Green, TEXT = "A green" }, - RED = { ID = 2, TRIGGERCOLOR = trigger.smokeColor.Red, TEXT = "A red" }, - WHITE = { ID = 3, TRIGGERCOLOR = trigger.smokeColor.White, TEXT = "A white" }, - ORANGE = { ID = 4, TRIGGERCOLOR = trigger.smokeColor.Orange, TEXT = "An orange" }, - BLUE = { ID = 5, TRIGGERCOLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, - YELLOW = { ID = 6, TRIGGERCOLOR = trigger.flareColor.Yellow, TEXT = "A yellow" } - } - } -} - ---- Creates a new zone where cargo can be collected or deployed. --- The zone functionality is useful to smoke or indicate routes for cargo pickups or deployments. --- Provide the zone name as declared in the mission file into the CargoZoneName in the :New method. --- An optional parameter is the CargoHostName, which is a Group declared with Late Activation switched on in the mission file. --- The CargoHostName is the "host" of the cargo zone: --- --- * It will smoke the zone position when a client is approaching the zone. --- * Depending on the cargo type, it will assist in the delivery of the cargo by driving to and from the client. --- --- @param #CARGO_ZONE self --- @param #string CargoZoneName The name of the zone as declared within the mission editor. --- @param #string CargoHostName The name of the Group "hosting" the zone. The Group MUST NOT be a static, and must be a "mobile" unit. -function CARGO_ZONE:New( CargoZoneName, CargoHostName ) local self = BASE:Inherit( self, ZONE:New( CargoZoneName ) ) - self:F( { CargoZoneName, CargoHostName } ) - - self.CargoZoneName = CargoZoneName - self.SignalHeight = 2 - --self.CargoZone = trigger.misc.getZone( CargoZoneName ) - - - if CargoHostName then - self.CargoHostName = CargoHostName - end - - self:T( self.CargoZoneName ) - - return self -end - -function CARGO_ZONE:Spawn() - self:F( self.CargoHostName ) - - if self.CargoHostName then -- Only spawn a host in the zone when there is one given as a parameter in the New function. - if self.CargoHostSpawn then - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() - if CargoHostGroup and CargoHostGroup:IsAlive() then - else - self.CargoHostSpawn:ReSpawn( 1 ) - end - else - self:T( "Initialize CargoHostSpawn" ) - self.CargoHostSpawn = SPAWN:New( self.CargoHostName ):Limit( 1, 1 ) - self.CargoHostSpawn:ReSpawn( 1 ) - end - end - - return self -end - -function CARGO_ZONE:GetHostUnit() - self:F( self ) - - if self.CargoHostName then - - -- A Host has been given, signal the host - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() - local CargoHostUnit - if CargoHostGroup and CargoHostGroup:IsAlive() then - CargoHostUnit = CargoHostGroup:GetUnit(1) - else - CargoHostUnit = StaticObject.getByName( self.CargoHostName ) - end - - return CargoHostUnit - end - - return nil -end - -function CARGO_ZONE:ReportCargosToClient( Client, CargoType ) - self:F() - - local SignalUnit = self:GetHostUnit() - - if SignalUnit then - - local SignalUnitTypeName = SignalUnit:getTypeName() - - local HostMessage = "" - - local IsCargo = false - for CargoID, Cargo in pairs( CARGOS ) do - if Cargo.CargoType == Task.CargoType then - if Cargo:IsStatusNone() then - HostMessage = HostMessage .. " - " .. Cargo.CargoName .. " - " .. Cargo.CargoType .. " (" .. Cargo.Weight .. "kg)" .. "\n" - IsCargo = true - end - end - end - - if not IsCargo then - HostMessage = "No Cargo Available." - end - - Client:Message( HostMessage, 20, Mission.Name .. "/StageHosts." .. SignalUnitTypeName, SignalUnitTypeName .. ": Reporting Cargo", 10 ) - end -end - - -function CARGO_ZONE:Signal() - self:F() - - local Signalled = false - - if self.SignalType then - - if self.CargoHostName then - - -- A Host has been given, signal the host - - local SignalUnit = self:GetHostUnit() - - if SignalUnit then - - self:T( 'Signalling Unit' ) - local SignalVehiclePos = SignalUnit:GetPointVec3() - SignalVehiclePos.y = SignalVehiclePos.y + 2 - - if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then - - trigger.action.smoke( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR ) - Signalled = true - - elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then - - trigger.action.signalFlare( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR , 0 ) - Signalled = false - - end - end - - else - - local ZonePointVec3 = self:GetPointVec3( self.SignalHeight ) -- Get the zone position + the landheight + 2 meters - - if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then - - trigger.action.smoke( ZonePointVec3, self.SignalColor.TRIGGERCOLOR ) - Signalled = true - - elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then - trigger.action.signalFlare( ZonePointVec3, self.SignalColor.TRIGGERCOLOR, 0 ) - Signalled = false - - end - end - end - - return Signalled - -end - -function CARGO_ZONE:WhiteSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:BlueSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.BLUE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:RedSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:OrangeSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.ORANGE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:GreenSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - - -function CARGO_ZONE:WhiteFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:RedFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:GreenFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:YellowFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.YELLOW - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - - -function CARGO_ZONE:GetCargoHostUnit() - self:F( self ) - - if self.CargoHostSpawn then - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex(1) - if CargoHostGroup and CargoHostGroup:IsAlive() then - local CargoHostUnit = CargoHostGroup:GetUnit(1) - if CargoHostUnit and CargoHostUnit:IsAlive() then - return CargoHostUnit - end - end - end - - return nil -end - -function CARGO_ZONE:GetCargoZoneName() - self:F() - - return self.CargoZoneName -end - -CARGO = { - ClassName = "CARGO", - STATUS = { - NONE = 0, - LOADED = 1, - UNLOADED = 2, - LOADING = 3 - }, - CargoClient = nil -} - ---- Add Cargo to the mission... Cargo functionality needs to be reworked a bit, so this is still under construction. I need to make a CARGO Class... -function CARGO:New( CargoType, CargoName, CargoWeight ) local self = BASE:Inherit( self, BASE:New() ) - self:F( { CargoType, CargoName, CargoWeight } ) - - - self.CargoType = CargoType - self.CargoName = CargoName - self.CargoWeight = CargoWeight - - self:StatusNone() - - return self -end - -function CARGO:Spawn( Client ) - self:F() - - return self - -end - -function CARGO:IsNear( Client, LandingZone ) - self:F() - - local Near = true - - return Near - -end - - -function CARGO:IsLoadingToClient() - self:F() - - if self:IsStatusLoading() then - return self.CargoClient - end - - return nil - -end - - -function CARGO:IsLoadedInClient() - self:F() - - if self:IsStatusLoaded() then - return self.CargoClient - end - - return nil - -end - - -function CARGO:UnLoad( Client, TargetZoneName ) - self:F() - - self:StatusUnLoaded() - - return self -end - -function CARGO:OnBoard( Client, LandingZone ) - self:F() - - local Valid = true - - self.CargoClient = Client - local ClientUnit = Client:GetClientGroupDCSUnit() - - return Valid -end - -function CARGO:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = true - - return OnBoarded -end - -function CARGO:Load( Client ) - self:F() - - self:StatusLoaded( Client ) - - return self -end - -function CARGO:IsLandingRequired() - self:F() - return true -end - -function CARGO:IsSlingLoad() - self:F() - return false -end - - -function CARGO:StatusNone() - self:F() - - self.CargoClient = nil - self.CargoStatus = CARGO.STATUS.NONE - - return self -end - -function CARGO:StatusLoading( Client ) - self:F() - - self.CargoClient = Client - self.CargoStatus = CARGO.STATUS.LOADING - self:T( "Cargo " .. self.CargoName .. " loading to Client: " .. self.CargoClient:GetClientGroupName() ) - - return self -end - -function CARGO:StatusLoaded( Client ) - self:F() - - self.CargoClient = Client - self.CargoStatus = CARGO.STATUS.LOADED - self:T( "Cargo " .. self.CargoName .. " loaded in Client: " .. self.CargoClient:GetClientGroupName() ) - - return self -end - -function CARGO:StatusUnLoaded() - self:F() - - self.CargoClient = nil - self.CargoStatus = CARGO.STATUS.UNLOADED - - return self -end - - -function CARGO:IsStatusNone() - self:F() - - return self.CargoStatus == CARGO.STATUS.NONE -end - -function CARGO:IsStatusLoading() - self:F() - - return self.CargoStatus == CARGO.STATUS.LOADING -end - -function CARGO:IsStatusLoaded() - self:F() - - return self.CargoStatus == CARGO.STATUS.LOADED -end - -function CARGO:IsStatusUnLoaded() - self:F() - - return self.CargoStatus == CARGO.STATUS.UNLOADED -end - - -CARGO_GROUP = { - ClassName = "CARGO_GROUP" -} - - -function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } ) - - self.CargoSpawn = SPAWN:NewWithAlias( CargoGroupTemplate, CargoName ) - self.CargoZone = CargoZone - - CARGOS[self.CargoName] = self - - return self - -end - -function CARGO_GROUP:Spawn( Client ) - self:F( { Client } ) - - local SpawnCargo = true - - if self:IsStatusNone() then - local CargoGroup = Group.getByName( self.CargoName ) - if CargoGroup and CargoGroup:isExist() then - SpawnCargo = false - end - - elseif self:IsStatusLoading() then - - local Client = self:IsLoadingToClient() - if Client and Client:GetDCSGroup() then - SpawnCargo = false - else - local CargoGroup = Group.getByName( self.CargoName ) - if CargoGroup and CargoGroup:isExist() then - SpawnCargo = false - end - end - - elseif self:IsStatusLoaded() then - - local ClientLoaded = self:IsLoadedInClient() - -- Now test if another Client is alive (not this one), and it has the CARGO, then this cargo does not need to be initialized and spawned. - if ClientLoaded and ClientLoaded ~= Client then - local ClientGroup = Client:GetDCSGroup() - if ClientLoaded:GetClientGroupDCSUnit() and ClientLoaded:GetClientGroupDCSUnit():isExist() then - SpawnCargo = false - else - self:StatusNone() - end - else - -- Same Client, but now in initialize, so set back the status to None. - self:StatusNone() - end - - elseif self:IsStatusUnLoaded() then - - SpawnCargo = false - - end - - if SpawnCargo then - if self.CargoZone:GetCargoHostUnit() then - --- ReSpawn the Cargo from the CargoHost - self.CargoGroupName = self.CargoSpawn:SpawnFromUnit( self.CargoZone:GetCargoHostUnit(), 60, 30, 1 ):GetName() - else - --- ReSpawn the Cargo in the CargoZone without a host ... - self:T( self.CargoZone ) - self.CargoGroupName = self.CargoSpawn:SpawnInZone( self.CargoZone, true, 1 ):GetName() - end - self:StatusNone() - end - - self:T( { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } ) - - return self -end - -function CARGO_GROUP:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - if self.CargoGroupName then - local CargoGroup = Group.getByName( self.CargoGroupName ) - if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 250 ) then - Near = true - end - end - - return Near - -end - - -function CARGO_GROUP:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - local ClientUnit = Client:GetClientGroupDCSUnit() - - local CarrierPos = ClientUnit:getPoint() - local CarrierPosMove = ClientUnit:getPoint() - local CarrierPosOnBoard = ClientUnit:getPoint() - - local CargoGroup = Group.getByName( self.CargoGroupName ) - - local CargoUnit = CargoGroup:getUnit(1) - local CargoPos = CargoUnit:getPoint() - - self.CargoInAir = CargoUnit:inAir() - - self:T( self.CargoInAir ) - - -- Only move the group to the carrier when the cargo is not in the air - -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). - if not self.CargoInAir then - - local Points = {} - - self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) - self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) - - Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) - - self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) - - if OnBoardSide == nil then - OnBoardSide = CLIENT.ONBOARDSIDE.NONE - end - - if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then - - self:T( "TransportCargoOnBoard: Onboarding LEFT" ) - CarrierPosMove.z = CarrierPosMove.z - 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then - - self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) - CarrierPosMove.z = CarrierPosMove.z + 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then - - self:T( "TransportCargoOnBoard: Onboarding BACK" ) - CarrierPosMove.x = CarrierPosMove.x - 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then - - self:T( "TransportCargoOnBoard: Onboarding CENTRAL" ) - Points[#Points+1] = routines.ground.buildWP( CarrierPos, "Cone", 10 ) - - end - self:T( "TransportCargoOnBoard: Routing " .. self.CargoGroupName ) - - --routines.scheduleFunction( routines.goRoute, { self.CargoGroupName, Points}, timer.getTime() + 4 ) - SCHEDULER:New( self, routines.goRoute, { self.CargoGroupName, Points}, 4 ) - end - - self:StatusLoading( Client ) - - return Valid - -end - - -function CARGO_GROUP:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - local CargoGroup = Group.getByName( self.CargoGroupName ) - - if not self.CargoInAir then - if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 25 ) then - CargoGroup:destroy() - self:StatusLoaded( Client ) - OnBoarded = true - end - else - CargoGroup:destroy() - self:StatusLoaded( Client ) - OnBoarded = true - end - - return OnBoarded -end - - -function CARGO_GROUP:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - - local CargoGroup = self.CargoSpawn:SpawnFromUnit( Client:GetClientGroupUnit(), 60, 30 ) - - self.CargoGroupName = CargoGroup:GetName() - self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) - - CargoGroup:TaskRouteToZone( ZONE:New( TargetZoneName ), true ) - - self:StatusUnLoaded() - - return self -end - - -CARGO_PACKAGE = { - ClassName = "CARGO_PACKAGE" -} - - -function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClient ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoClient } ) - - self.CargoClient = CargoClient - - CARGOS[self.CargoName] = self - - return self - -end - - -function CARGO_PACKAGE:Spawn( Client ) - self:F( { self, Client } ) - - -- this needs to be checked thoroughly - - local CargoClientGroup = self.CargoClient:GetDCSGroup() - if not CargoClientGroup then - if not self.CargoClientSpawn then - self.CargoClientSpawn = SPAWN:New( self.CargoClient:GetClientGroupName() ):Limit( 1, 1 ) - end - self.CargoClientSpawn:ReSpawn( 1 ) - end - - local SpawnCargo = true - - if self:IsStatusNone() then - - elseif self:IsStatusLoading() or self:IsStatusLoaded() then - - local CargoClientLoaded = self:IsLoadedInClient() - if CargoClientLoaded and CargoClientLoaded:GetDCSGroup() then - SpawnCargo = false - end - - elseif self:IsStatusUnLoaded() then - - SpawnCargo = false - - else - - end - - if SpawnCargo then - self:StatusLoaded( self.CargoClient ) - end - - return self -end - - -function CARGO_PACKAGE:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - if self.CargoClient and self.CargoClient:GetDCSGroup() then - self:T( self.CargoClient.ClientName ) - self:T( 'Client Exists.' ) - - if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), Client:GetPositionVec3(), 150 ) then - Near = true - end - end - - return Near - -end - - -function CARGO_PACKAGE:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - local ClientUnit = Client:GetClientGroupDCSUnit() - - local CarrierPos = ClientUnit:getPoint() - local CarrierPosMove = ClientUnit:getPoint() - local CarrierPosOnBoard = ClientUnit:getPoint() - local CarrierPosMoveAway = ClientUnit:getPoint() - - local CargoHostGroup = self.CargoClient:GetDCSGroup() - local CargoHostName = self.CargoClient:GetDCSGroup():getName() - - local CargoHostUnits = CargoHostGroup:getUnits() - local CargoPos = CargoHostUnits[1]:getPoint() - - local Points = {} - - self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) - self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) - - Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) - - self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) - - if OnBoardSide == nil then - OnBoardSide = CLIENT.ONBOARDSIDE.NONE - end - - if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then - - self:T( "TransportCargoOnBoard: Onboarding LEFT" ) - CarrierPosMove.z = CarrierPosMove.z - 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 - CarrierPosMoveAway.z = CarrierPosMoveAway.z - 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then - - self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) - CarrierPosMove.z = CarrierPosMove.z + 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 - CarrierPosMoveAway.z = CarrierPosMoveAway.z + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then - - self:T( "TransportCargoOnBoard: Onboarding BACK" ) - CarrierPosMove.x = CarrierPosMove.x - 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x - 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - end - self:T( "Routing " .. CargoHostName ) - - --routines.scheduleFunction( routines.goRoute, { CargoHostName, Points}, timer.getTime() + 4 ) - SCHEDULER:New( self, routines.goRoute, { CargoHostName, Points }, 4 ) - - return Valid - -end - - -function CARGO_PACKAGE:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - if self.CargoClient and self.CargoClient:GetDCSGroup() then - if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), self.CargoClient:GetPositionVec3(), 10 ) then - - -- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough. - self:StatusLoaded( Client ) - - -- All done, onboarded the Cargo to the new Client. - OnBoarded = true - end - end - - return OnBoarded -end - - -function CARGO_PACKAGE:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - --self:T( 'self.CargoHostName = ' .. self.CargoHostName ) - - --self.CargoSpawn:FromCarrier( Client:GetDCSGroup(), TargetZoneName, self.CargoHostName ) - self:StatusUnLoaded() - - return Cargo -end - - -CARGO_SLINGLOAD = { - ClassName = "CARGO_SLINGLOAD" -} - - -function CARGO_SLINGLOAD:New( CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID ) - local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } ) - - self.CargoHostName = CargoHostName - - -- Cargo will be initialized around the CargoZone position. - self.CargoZone = CargoZone - - self.CargoCount = 0 - self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) - - -- The country ID needs to be correctly set. - self.CargoCountryID = CargoCountryID - - CARGOS[self.CargoName] = self - - return self - -end - - -function CARGO_SLINGLOAD:IsLandingRequired() - self:F() - return false -end - - -function CARGO_SLINGLOAD:IsSlingLoad() - self:F() - return true -end - - -function CARGO_SLINGLOAD:Spawn( Client ) - self:F( { self, Client } ) - - local Zone = trigger.misc.getZone( self.CargoZone ) - - local ZonePos = {} - ZonePos.x = Zone.point.x + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) - ZonePos.y = Zone.point.z + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) - - self:T( "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y ) - - --[[ - -- This does not work in 1.5.2. - CargoStatic = StaticObject.getByName( self.CargoName ) - if CargoStatic then - CargoStatic:destroy() - end - --]] - - CargoStatic = StaticObject.getByName( self.CargoStaticName ) - - if CargoStatic and CargoStatic:isExist() then - CargoStatic:destroy() - end - - -- I need to make every time a new cargo due to bugs in 1.5.2. - - self.CargoCount = self.CargoCount + 1 - self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) - - local CargoTemplate = { - ["category"] = "Cargo", - ["shape_name"] = "ab-212_cargo", - ["type"] = "Cargo1", - ["x"] = ZonePos.x, - ["y"] = ZonePos.y, - ["mass"] = self.CargoWeight, - ["name"] = self.CargoStaticName, - ["canCargo"] = true, - ["heading"] = 0, - } - - coalition.addStaticObject( self.CargoCountryID, CargoTemplate ) - --- end - - return self -end - - -function CARGO_SLINGLOAD:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - return Near -end - - -function CARGO_SLINGLOAD:IsInLandingZone( Client, LandingZone ) - self:F() - - local Near = false - - local CargoStaticUnit = StaticObject.getByName( self.CargoName ) - if CargoStaticUnit then - if routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then - Near = true - end - end - - return Near -end - - -function CARGO_SLINGLOAD:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - - return Valid -end - - -function CARGO_SLINGLOAD:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - local CargoStaticUnit = StaticObject.getByName( self.CargoName ) - if CargoStaticUnit then - if not routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then - OnBoarded = true - end - end - - return OnBoarded -end - - -function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) - - self:StatusUnLoaded() - - return Cargo -end ---- Message System to display Messages for Clients and Coalitions or All. --- Messages are grouped on the display panel per Category to improve readability for the players. --- Messages are shown on the display panel for an amount of seconds, and will then disappear. --- Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel. --- Messages are created with MESSAGE:@{New}(). --- Messages are sent to Clients with MESSAGE:@{ToClient}(). --- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}(). --- Messages are sent to All Players with MESSAGE:@{ToAll}(). --- @module Message - -Include.File( "Base" ) - ---- The MESSAGE class --- @type MESSAGE -MESSAGE = { - ClassName = "MESSAGE", - MessageCategory = 0, - MessageID = 0, -} - - ---- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients. --- @param self --- @param #string MessageText is the text of the Message. --- @param #string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability. --- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel. --- @param #string MessageID is a string expressing the ID of the Message. --- @return #MESSAGE --- @usage --- -- Create a series of new Messages. --- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score". --- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) -function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { MessageText, MessageCategory, MessageDuration, MessageID } ) - - -- When no messagecategory is given, we don't show it as a title... - if MessageCategory and MessageCategory ~= "" then - self.MessageCategory = MessageCategory .. ": " - else - self.MessageCategory = "" - end - - self.MessageDuration = MessageDuration - self.MessageID = MessageID - self.MessageTime = timer.getTime() - self.MessageText = MessageText - - self.MessageSent = false - self.MessageGroup = false - self.MessageCoalition = false - - return self -end - ---- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player". --- @param #MESSAGE self --- @param Client#CLIENT Client is the Group of the Client. --- @return #MESSAGE --- @usage --- -- Send the 2 messages created with the @{New} method to the Client Group. --- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1. --- ClientGroup = Group.getByName( "ClientGroup" ) --- --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) --- MessageClient1:ToClient( ClientGroup ) --- MessageClient2:ToClient( ClientGroup ) -function MESSAGE:ToClient( Client ) - self:F( Client ) - - if Client and Client:GetClientGroupID() then - - local ClientGroupID = Client:GetClientGroupID() - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to the Blue coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the BLUE coalition. --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageBLUE:ToBlue() -function MESSAGE:ToBlue() - self:F() - - self:ToCoalition( coalition.side.BLUE ) - - return self -end - ---- Sends a MESSAGE to the Red Coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToRed() -function MESSAGE:ToRed( ) - self:F() - - self:ToCoalition( coalition.side.RED ) - - return self -end - ---- Sends a MESSAGE to a Coalition. --- @param #MESSAGE self --- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToCoalition( coalition.side.RED ) -function MESSAGE:ToCoalition( CoalitionSide ) - self:F( CoalitionSide ) - - if CoalitionSide then - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForCoalition( CoalitionSide, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to all players. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created to all players. --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) --- MessageAll:ToAll() -function MESSAGE:ToAll() - self:F() - - self:ToCoalition( coalition.side.RED ) - self:ToCoalition( coalition.side.BLUE ) - - return self -end - - - ---- The MESSAGEQUEUE class --- @type MESSAGEQUEUE -MESSAGEQUEUE = { - ClientGroups = {}, - CoalitionSides = {} -} - -function MESSAGEQUEUE:New( RefreshInterval ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { RefreshInterval } ) - - self.RefreshInterval = RefreshInterval - - --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval ) - self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval ) - - return self -end - ---- This function is called automatically by the MESSAGEQUEUE scheduler. -function MESSAGEQUEUE:_DisplayMessages() - - -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...). - for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do - for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do - if MessageData.MessageSent == false then - --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageSent = true - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - end - - -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition. - -- Because the Client messages will overwrite the Coalition messages (for that Client). - for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do - for MessageID, MessageData in pairs( ClientGroupData.Messages ) do - if MessageData.MessageGroup == false then - trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageGroup = true - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - - -- Now check if the Client also has messages that belong to the Coalition of the Client... - for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do - for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do - local CoalitionGroup = Group.getByName( ClientGroupName ) - if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then - if MessageData.MessageCoalition == false then - trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageCoalition = true - end - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - end - end - - return true -end - ---- The _MessageQueue object is created when the MESSAGE class module is loaded. ---_MessageQueue = MESSAGEQUEUE:New( 0.5 ) - ---- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer. --- @module STAGE --- @author Flightcontrol - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The STAGE class --- @type -STAGE = { - ClassName = "STAGE", - MSG = { ID = "None", TIME = 10 }, - FREQUENCY = { NONE = 0, ONCE = 1, REPEAT = -1 }, - - Name = "NoStage", - StageType = '', - WaitTime = 1, - Frequency = 1, - MessageCount = 0, - MessageInterval = 15, - MessageShown = {}, - MessageShow = false, - MessageFlash = false -} - - -function STAGE:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F() - return self -end - -function STAGE:Execute( Mission, Client, Task ) - - local Valid = true - - return Valid -end - -function STAGE:Executing( Mission, Client, Task ) - -end - -function STAGE:Validate( Mission, Client, Task ) - local Valid = true - - return Valid -end - - -STAGEBRIEF = { - ClassName = "BRIEF", - MSG = { ID = "Brief", TIME = 1 }, - Name = "Brief", - StageBriefingTime = 0, - StageBriefingDuration = 1 -} - -function STAGEBRIEF:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Execute --- @param #STAGEBRIEF self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task --- @return #boolean -function STAGEBRIEF:Execute( Mission, Client, Task ) - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - self:F() - Client:ShowMissionBriefing( Mission.MissionBriefing ) - self.StageBriefingTime = timer.getTime() - return Valid -end - -function STAGEBRIEF:Validate( Mission, Client, Task ) - local Valid = STAGE:Validate( Mission, Client, Task ) - self:T() - - if timer.getTime() - self.StageBriefingTime <= self.StageBriefingDuration then - return 0 - else - self.StageBriefingTime = timer.getTime() - return 1 - end - -end - - -STAGESTART = { - ClassName = "START", - MSG = { ID = "Start", TIME = 1 }, - Name = "Start", - StageStartTime = 0, - StageStartDuration = 1 -} - -function STAGESTART:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGESTART:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - if Task.TaskBriefing then - Client:Message( Task.TaskBriefing, 30, Mission.Name .. "/Stage", "Command" ) - else - Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, Mission.Name .. "/Stage", "Command" ) - end - self.StageStartTime = timer.getTime() - return Valid -end - -function STAGESTART:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - if timer.getTime() - self.StageStartTime <= self.StageStartDuration then - return 0 - else - self.StageStartTime = timer.getTime() - return 1 - end - - return 1 - -end - -STAGE_CARGO_LOAD = { - ClassName = "STAGE_CARGO_LOAD" -} - -function STAGE_CARGO_LOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGE_CARGO_LOAD:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - for LoadCargoID, LoadCargo in pairs( Task.Cargos.LoadCargos ) do - LoadCargo:Load( Client ) - end - - if Mission.MissionReportFlash and Client:IsTransport() then - Client:ShowCargo() - end - - return Valid -end - -function STAGE_CARGO_LOAD:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - return 1 -end - - -STAGE_CARGO_INIT = { - ClassName = "STAGE_CARGO_INIT" -} - -function STAGE_CARGO_INIT:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGE_CARGO_INIT:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - for InitLandingZoneID, InitLandingZone in pairs( Task.LandingZones.LandingZones ) do - self:T( InitLandingZone ) - InitLandingZone:Spawn() - end - - - self:T( Task.Cargos.InitCargos ) - for InitCargoID, InitCargoData in pairs( Task.Cargos.InitCargos ) do - self:T( { InitCargoData } ) - InitCargoData:Spawn( Client ) - end - - return Valid -end - - -function STAGE_CARGO_INIT:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - return 1 -end - - - -STAGEROUTE = { - ClassName = "STAGEROUTE", - MSG = { ID = "Route", TIME = 5 }, - Frequency = STAGE.FREQUENCY.REPEAT, - Name = "Route" -} - -function STAGEROUTE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - self.MessageSwitch = true - return self -end - - ---- Execute the routing. --- @param #STAGEROUTE self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEROUTE:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - local RouteMessage = "Fly to: " - self:T( Task.LandingZones ) - for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do - RouteMessage = RouteMessage .. "\n " .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km.' - end - - if Client:IsMultiSeated() then - Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Co-Pilot", 20 ) - else - Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Command", 20 ) - end - - - if Mission.MissionReportFlash and Client:IsTransport() then - Client:ShowCargo() - end - - return Valid -end - -function STAGEROUTE:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - -- check if the Client is in the landing zone - self:T( Task.LandingZones.LandingZoneNames ) - Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) - - if Task.CurrentLandingZoneName then - - Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone - Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] - - if Task.CurrentCargoZone then - if not Task.Signalled then - Task.Signalled = Task.CurrentCargoZone:Signal() - end - end - - self:T( 1 ) - return 1 - end - - self:T( 0 ) - return 0 -end - - - -STAGELANDING = { - ClassName = "STAGELANDING", - MSG = { ID = "Landing", TIME = 10 }, - Name = "Landing", - Signalled = false -} - -function STAGELANDING:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Execute the landing coordination. --- @param #STAGELANDING self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGELANDING:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Co-Pilot", 10 ) - else - Client:Message( "You have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Command", 10 ) - end - - Task.HostUnit = Task.CurrentCargoZone:GetHostUnit() - - self:T( { Task.HostUnit } ) - - if Task.HostUnit then - - Task.HostUnitName = Task.HostUnit:GetPrefix() - Task.HostUnitTypeName = Task.HostUnit:GetTypeName() - - local HostMessage = "" - Task.CargoNames = "" - - local IsFirst = true - - for CargoID, Cargo in pairs( CARGOS ) do - if Cargo.CargoType == Task.CargoType then - - if Cargo:IsLandingRequired() then - self:T( "Task for cargo " .. Cargo.CargoType .. " requires landing.") - Task.IsLandingRequired = true - end - - if Cargo:IsSlingLoad() then - self:T( "Task for cargo " .. Cargo.CargoType .. " is a slingload.") - Task.IsSlingLoad = true - end - - if IsFirst then - IsFirst = false - Task.CargoNames = Task.CargoNames .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" - else - Task.CargoNames = Task.CargoNames .. "; " .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" - end - end - end - - if Task.IsLandingRequired then - HostMessage = "Land the helicopter to " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." - else - HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." - end - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( HostMessage, self.MSG.TIME, Mission.Name .. "/STAGELANDING.EXEC." .. Host, Host, 10 ) - - end -end - -function STAGELANDING:Validate( Mission, Client, Task ) - self:F() - - Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) - if Task.CurrentLandingZoneName then - - -- Client is in de landing zone. - self:T( Task.CurrentLandingZoneName ) - - Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone - Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] - - if Task.CurrentCargoZone then - if not Task.Signalled then - Task.Signalled = Task.CurrentCargoZone:Signal() - end - end - else - if Task.CurrentLandingZone then - Task.CurrentLandingZone = nil - end - if Task.CurrentCargoZone then - Task.CurrentCargoZone = nil - end - Task.Signalled = false - Task:RemoveCargoMenus( Client ) - self:T( -1 ) - return -1 - end - - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and not Client:GetClientGroupDCSUnit():inAir() then - self:T( 1 ) - Task.IsInAirTestRequired = true - return 1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and DCSUnitVelocity <= 0.05 and DCSUnitHeight <= Task.CurrentCargoZone.SignalHeight then - self:T( 1 ) - Task.IsInAirTestRequired = false - return 1 - end - - self:T( 0 ) - return 0 -end - -STAGELANDED = { - ClassName = "STAGELANDED", - MSG = { ID = "Land", TIME = 10 }, - Name = "Landed", - MenusAdded = false -} - -function STAGELANDED:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGELANDED:Execute( Mission, Client, Task ) - self:F() - - if Task.IsLandingRequired then - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( 'You have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.', - self.MSG.TIME, Mission.Name .. "/STAGELANDED.EXEC" .. Host, Host ) - - if not self.MenusAdded then - Task.Cargo = nil - Task:RemoveCargoMenus( Client ) - Task:AddCargoMenus( Client, CARGOS, 250 ) - end - end -end - - - -function STAGELANDED:Validate( Mission, Client, Task ) - self:F() - - if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - self:T( "Client is not anymore in the landing zone, go back to stage Route, and remove cargo menus." ) - Task.Signalled = false - Task:RemoveCargoMenus( Client ) - self:T( -2 ) - return -2 - end - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then - self:T( "Client went back in the air. Go back to stage Landing." ) - self:T( -1 ) - return -1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then - self:T( "It seems the Client went back in the air and over the boundary limits. Go back to stage Landing." ) - self:T( -1 ) - return -1 - end - - -- Wait until cargo is selected from the menu. - if Task.IsLandingRequired then - if not Task.Cargo then - self:T( 0 ) - return 0 - end - end - - self:T( 1 ) - return 1 -end - -STAGEUNLOAD = { - ClassName = "STAGEUNLOAD", - MSG = { ID = "Unload", TIME = 10 }, - Name = "Unload" -} - -function STAGEUNLOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Coordinate UnLoading --- @param #STAGEUNLOAD self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEUNLOAD:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Co-Pilot" ) - else - Client:Message( 'You are unloading the ' .. Task.CargoType .. ' ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Command" ) - end - Task:RemoveCargoMenus( Client ) -end - -function STAGEUNLOAD:Executing( Mission, Client, Task ) - self:F() - env.info( 'STAGEUNLOAD:Executing() Task.Cargo.CargoName = ' .. Task.Cargo.CargoName ) - - local TargetZoneName - - if Task.TargetZoneName then - TargetZoneName = Task.TargetZoneName - else - TargetZoneName = Task.CurrentLandingZoneName - end - - if Task.Cargo:UnLoad( Client, TargetZoneName ) then - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - if Mission.MissionReportFlash then - Client:ShowCargo() - end - end -end - ---- Validate UnLoading --- @param #STAGEUNLOAD self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEUNLOAD:Validate( Mission, Client, Task ) - self:F() - env.info( 'STAGEUNLOAD:Validate()' ) - - if routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - else - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task:RemoveCargoMenus( Client ) - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" ) - end - return 1 - end - - if not Client:GetClientGroupDCSUnit():inAir() then - else - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task:RemoveCargoMenus( Client ) - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" ) - end - return 1 - end - - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Command" ) - end - Task:RemoveCargoMenus( Client ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission. - return 1 - end - - return 1 -end - -STAGELOAD = { - ClassName = "STAGELOAD", - MSG = { ID = "Load", TIME = 10 }, - Name = "Load" -} - -function STAGELOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGELOAD:Execute( Mission, Client, Task ) - self:F() - - if not Task.IsSlingLoad then - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - _TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.EXEC." .. Host, Host ) - - -- Route the cargo to the Carrier - - Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide ) - Task.ExecuteStage = _TransportExecuteStage.EXECUTING - else - Task.ExecuteStage = _TransportExecuteStage.EXECUTING - end -end - -function STAGELOAD:Executing( Mission, Client, Task ) - self:F() - - -- If the Cargo is ready to be loaded, load it into the Client. - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - if not Task.IsSlingLoad then - self:T( Task.Cargo.CargoName) - - if Task.Cargo:OnBoarded( Client, Task.CurrentCargoZone ) then - - -- Load the Cargo onto the Client - Task.Cargo:Load( Client ) - - -- Message to the pilot that cargo has been loaded. - Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.", - 20, Mission.Name .. "/STAGELANDING.LOADING1." .. Host, Host ) - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - - Client:ShowCargo() - end - else - Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.", - _TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.LOADING.1." .. Host, Host , 10 ) - for CargoID, Cargo in pairs( CARGOS ) do - self:T( "Cargo.CargoName = " .. Cargo.CargoName ) - - if Cargo:IsSlingLoad() then - local CargoStatic = StaticObject.getByName( Cargo.CargoStaticName ) - if CargoStatic then - self:T( "Cargo is found in the DCS simulator.") - local CargoStaticPosition = CargoStatic:getPosition().p - self:T( "Cargo Position x = " .. CargoStaticPosition.x .. ", y = " .. CargoStaticPosition.y .. ", z = " .. CargoStaticPosition.z ) - local CargoStaticHeight = routines.GetUnitHeight( CargoStatic ) - if CargoStaticHeight > 5 then - self:T( "Cargo is airborne.") - Cargo:StatusLoaded() - Task.Cargo = Cargo - Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.', - self.MSG.TIME, Mission.Name .. "/STAGELANDING.LOADING.2." .. Host, Host ) - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - break - end - else - self:T( "Cargo not found in the DCS simulator." ) - end - end - end - end - -end - -function STAGELOAD:Validate( Mission, Client, Task ) - self:F() - - self:T( "Task.CurrentLandingZoneName = " .. Task.CurrentLandingZoneName ) - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - if not Task.IsSlingLoad then - if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - Task:RemoveCargoMenus( Client ) - Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.3." .. Host, Host ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) - self:T( 1 ) - return 1 - end - - else - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName ) - if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then - Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.4." .. Host, Host ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 ) - self:T( 1 ) - return 1 - end - end - - end - - - self:T( 0 ) - return 0 -end - - -STAGEDONE = { - ClassName = "STAGEDONE", - MSG = { ID = "Done", TIME = 10 }, - Name = "Done" -} - -function STAGEDONE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'AI' - return self -end - -function STAGEDONE:Execute( Mission, Client, Task ) - self:F() - -end - -function STAGEDONE:Validate( Mission, Client, Task ) - self:F() - - Task:Done() - - return 0 -end - -STAGEARRIVE = { - ClassName = "STAGEARRIVE", - MSG = { ID = "Arrive", TIME = 10 }, - Name = "Arrive" -} - -function STAGEARRIVE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - - ---- Execute Arrival --- @param #STAGEARRIVE self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEARRIVE:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Co-Pilot" ) - else - Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Command" ) - end - -end - -function STAGEARRIVE:Validate( Mission, Client, Task ) - self:F() - - Task.CurrentLandingZoneID = routines.IsUnitInZones( Client:GetClientGroupDCSUnit(), Task.LandingZones ) - if ( Task.CurrentLandingZoneID ) then - else - return -1 - end - - return 1 -end - -STAGEGROUPSDESTROYED = { - ClassName = "STAGEGROUPSDESTROYED", - DestroyGroupSize = -1, - Frequency = STAGE.FREQUENCY.REPEAT, - MSG = { ID = "DestroyGroup", TIME = 10 }, - Name = "GroupsDestroyed" -} - -function STAGEGROUPSDESTROYED:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'AI' - return self -end - ---function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) --- --- Client:Message( 'Task: Still ' .. DestroyGroupSize .. " of " .. Task.DestroyGroupCount .. " " .. Task.DestroyGroupType .. " to be destroyed!", self.MSG.TIME, Mission.Name .. "/Stage" ) --- ---end - -function STAGEGROUPSDESTROYED:Validate( Mission, Client, Task ) - self:F() - - if Task.MissionTask:IsGoalReached() then - return 1 - else - return 0 - end -end - -function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) - self:F() - self:T( { Task.ClassName, Task.Destroyed } ) - --env.info( 'Event Table Task = ' .. tostring(Task) ) - -end - - - - - - - - - - - - - ---[[ - _TransportStage: Defines the different stages of which of transport missions can be in. This table is internal and is used to control the sequence of messages, actions and flow. - - - _TransportStage.START - - _TransportStage.ROUTE - - _TransportStage.LAND - - _TransportStage.EXECUTE - - _TransportStage.DONE - - _TransportStage.REMOVE ---]] -_TransportStage = { - HOLD = "HOLD", - START = "START", - ROUTE = "ROUTE", - LANDING = "LANDING", - LANDED = "LANDED", - EXECUTING = "EXECUTING", - LOAD = "LOAD", - UNLOAD = "UNLOAD", - DONE = "DONE", - NEXT = "NEXT" -} - -_TransportStageMsgTime = { - HOLD = 10, - START = 60, - ROUTE = 5, - LANDING = 10, - LANDED = 30, - EXECUTING = 30, - LOAD = 30, - UNLOAD = 30, - DONE = 30, - NEXT = 0 -} - -_TransportStageTime = { - HOLD = 10, - START = 5, - ROUTE = 5, - LANDING = 1, - LANDED = 1, - EXECUTING = 5, - LOAD = 5, - UNLOAD = 5, - DONE = 1, - NEXT = 0 -} - -_TransportStageAction = { - REPEAT = -1, - NONE = 0, - ONCE = 1 -} ---- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited. --- @module TASK - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Stage" ) - ---- The TASK class --- @type TASK --- @extends Base#BASE -TASK = { - - -- Defines the different signal types with a Task. - SIGNAL = { - COLOR = { - RED = { ID = 1, COLOR = trigger.smokeColor.Red, TEXT = "A red" }, - GREEN = { ID = 2, COLOR = trigger.smokeColor.Green, TEXT = "A green" }, - BLUE = { ID = 3, COLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, - WHITE = { ID = 4, COLOR = trigger.smokeColor.White, TEXT = "A white" }, - ORANGE = { ID = 5, COLOR = trigger.smokeColor.Orange, TEXT = "An orange" } - }, - TYPE = { - SMOKE = { ID = 1, TEXT = "smoke" }, - FLARE = { ID = 2, TEXT = "flare" } - } - }, - ClassName = "TASK", - Mission = {}, -- Owning mission of the Task - Name = '', - Stages = {}, - Stage = {}, - Cargos = { - InitCargos = {}, - LoadCargos = {} - }, - LandingZones = { - LandingZoneNames = {}, - LandingZones = {} - }, - ActiveStage = 0, - TaskDone = false, - TaskFailed = false, - GoalTasks = {} -} - ---- Instantiates a new TASK Base. Should never be used. Interface Class. --- @return TASK -function TASK:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F() - - -- assign Task default values during construction - self.TaskBriefing = "Task: No Task." - self.Time = timer.getTime() - self.ExecuteStage = _TransportExecuteStage.NONE - - return self -end - -function TASK:SetStage( StageSequenceIncrement ) - self:F( { StageSequenceIncrement } ) - - local Valid = false - if StageSequenceIncrement ~= 0 then - self.ActiveStage = self.ActiveStage + StageSequenceIncrement - if 1 <= self.ActiveStage and self.ActiveStage <= #self.Stages then - self.Stage = self.Stages[self.ActiveStage] - self:T( { self.Stage.Name } ) - self.Frequency = self.Stage.Frequency - Valid = true - else - Valid = false - env.info( "TASK:SetStage() self.ActiveStage is smaller or larger than self.Stages array. self.ActiveStage = " .. self.ActiveStage ) - end - end - self.Time = timer.getTime() - return Valid -end - -function TASK:Init() - self:F() - self.ActiveStage = 0 - self:SetStage(1) - self.TaskDone = false - self.TaskFailed = false -end - - ---- Get progress of a TASK. --- @return string GoalsText -function TASK:GetGoalProgress() - self:F2() - - local GoalsText = "" - for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do - local Goals = self:GetGoalCompletion( GoalVerb ) - if Goals and Goals ~= "" then - Goals = '(' .. Goals .. ')' - else - Goals = '( - )' - end - GoalsText = GoalsText .. GoalVerb .. ': ' .. self:GetGoalCount(GoalVerb) .. ' goals ' .. Goals .. ' of ' .. self:GetGoalTotal(GoalVerb) .. ' goals completed (' .. self:GetGoalPercentage(GoalVerb) .. '%); ' - end - - if GoalsText == "" then - GoalsText = "( - )" - end - - return GoalsText -end - ---- Show progress of a TASK. --- @param MISSION Mission Group structure describing the Mission. --- @param CLIENT Client Group structure describing the Client. -function TASK:ShowGoalProgress( Mission, Client ) - self:F2() - - local GoalsText = "" - for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do - if Mission:IsCompleted() then - else - local Goals = self:GetGoalCompletion( GoalVerb ) - if Goals and Goals ~= "" then - else - Goals = "-" - end - GoalsText = GoalsText .. self:GetGoalProgress() - end - end - - if Mission.MissionReportFlash or Mission.MissionReportShow then - Client:Message( GoalsText, 10, "/TASKPROGRESS" .. self.ClassName, "Mission Command: Task Status", 30 ) - end -end - ---- Sets a TASK to status Done. -function TASK:Done() - self:F2() - self.TaskDone = true -end - ---- Returns if a TASK is done. --- @return bool -function TASK:IsDone() - self:F2( self.TaskDone ) - return self.TaskDone -end - ---- Sets a TASK to status failed. -function TASK:Failed() - self:F() - self.TaskFailed = true -end - ---- Returns if a TASk has failed. --- @return bool -function TASK:IsFailed() - self:F2( self.TaskFailed ) - return self.TaskFailed -end - -function TASK:Reset( Mission, Client ) - self:F2() - self.ExecuteStage = _TransportExecuteStage.NONE -end - ---- Returns the Goals of a TASK --- @return @table Goals -function TASK:GetGoals() - return self.GoalTasks -end - ---- Returns if a TASK has Goal(s). --- @param #TASK self --- @param #string GoalVerb is the name of the Goal of the TASK. --- @return bool -function TASK:Goal( GoalVerb ) - self:F2( { GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - self:T2( {self.GoalTasks[GoalVerb] } ) - if self.GoalTasks[GoalVerb] and self.GoalTasks[GoalVerb].GoalTotal > 0 then - return true - else - return false - end -end - ---- Sets the total Goals to be achieved of the Goal Name --- @param number GoalTotal is the number of times the GoalVerb needs to be achieved. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. -function TASK:SetGoalTotal( GoalTotal, GoalVerb ) - self:F2( { GoalTotal, GoalVerb } ) - - if not GoalVerb then - GoalVerb = self.GoalVerb - end - self.GoalTasks[GoalVerb] = {} - self.GoalTasks[GoalVerb].Goals = {} - self.GoalTasks[GoalVerb].GoalTotal = GoalTotal - self.GoalTasks[GoalVerb].GoalCount = 0 - return self -end - ---- Gets the total of Goals to be achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. -function TASK:GetGoalTotal( GoalVerb ) - self:F2( { GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return self.GoalTasks[GoalVerb].GoalTotal - else - return 0 - end -end - ---- Sets the total of Goals currently achieved within the TASK of the GoalVerb. --- @param number GoalCount is the total number of Goals achieved within the TASK. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:SetGoalCount( GoalCount, GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb) then - self.GoalTasks[GoalVerb].GoalCount = GoalCount - end - return self -end - ---- Increments the total of Goals currently achieved within the TASK of the GoalVerb, with the given GoalCountIncrease. --- @param number GoalCountIncrease is the number of new Goals achieved within the TASK. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:IncreaseGoalCount( GoalCountIncrease, GoalVerb ) - self:F2( { GoalCountIncrease, GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb) then - self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalCountIncrease - end - return self -end - ---- Gets the total of Goals currently achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:GetGoalCount( GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return self.GoalTasks[GoalVerb].GoalCount - else - return 0 - end -end - ---- Gets the percentage of Goals currently achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:GetGoalPercentage( GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return math.floor( self:GetGoalCount( GoalVerb ) / self:GetGoalTotal( GoalVerb ) * 100 + .5 ) - else - return 100 - end -end - ---- Returns if all the Goals of the TASK were achieved. --- @return bool -function TASK:IsGoalReached() - self:F2() - - local GoalReached = true - - for GoalVerb, Goals in pairs( self.GoalTasks ) do - self:T2( { "GoalVerb", GoalVerb } ) - if self:Goal( GoalVerb ) then - local GoalToDo = self:GetGoalTotal( GoalVerb ) - self:GetGoalCount( GoalVerb ) - self:T2( "GoalToDo = " .. GoalToDo ) - if GoalToDo <= 0 then - else - GoalReached = false - break - end - else - break - end - end - - self:T( { GoalReached, self.GoalTasks } ) - return GoalReached -end - ---- Adds an Additional Goal for the TASK to be achieved. --- @param string GoalVerb is the name of the Goal of the TASK. --- @param string GoalTask is a text describing the Goal of the TASK to be achieved. --- @param number GoalIncrease is a number by which the Goal achievement is increasing. -function TASK:AddGoalCompletion( GoalVerb, GoalTask, GoalIncrease ) - self:F2( { GoalVerb, GoalTask, GoalIncrease } ) - - if self:Goal( GoalVerb ) then - self.GoalTasks[GoalVerb].Goals[#self.GoalTasks[GoalVerb].Goals+1] = GoalTask - self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalIncrease - end - return self -end - ---- Returns if the additional Goal for the TASK was completed. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return string Goals -function TASK:GetGoalCompletion( GoalVerb ) - self:F2( { GoalVerb } ) - - if self:Goal( GoalVerb ) then - local Goals = "" - for GoalID, GoalName in pairs( self.GoalTasks[GoalVerb].Goals ) do Goals = Goals .. GoalName .. " + " end - return Goals:gsub(" + $", ""), self.GoalTasks[GoalVerb].GoalCount - end -end - -function TASK.MenuAction( Parameter ) - Parameter.ReferenceTask.ExecuteStage = _TransportExecuteStage.EXECUTING - Parameter.ReferenceTask.Cargo = Parameter.CargoTask -end - -function TASK:StageExecute() - self:F() - - local Execute = false - - if self.Frequency == STAGE.FREQUENCY.REPEAT then - Execute = true - elseif self.Frequency == STAGE.FREQUENCY.NONE then - Execute = false - elseif self.Frequency >= 0 then - Execute = true - self.Frequency = self.Frequency - 1 - end - - return Execute - -end - ---- Work function to set signal events within a TASK. -function TASK:AddSignal( SignalUnitNames, SignalType, SignalColor, SignalHeight ) - self:F() - - local Valid = true - - if Valid then - if type( SignalUnitNames ) == "table" then - self.LandingZoneSignalUnitNames = SignalUnitNames - else - self.LandingZoneSignalUnitNames = { SignalUnitNames } - end - self.LandingZoneSignalType = SignalType - self.LandingZoneSignalColor = SignalColor - self.Signalled = false - if SignalHeight ~= nil then - self.LandingZoneSignalHeight = SignalHeight - else - self.LandingZoneSignalHeight = 0 - end - - if self.TaskBriefing then - self.TaskBriefing = self.TaskBriefing .. " " .. SignalColor.TEXT .. " " .. SignalType.TEXT .. " will be fired when entering the landing zone." - end - end - - return Valid -end - ---- When the CLIENT is approaching the landing zone, a RED SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeRed( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.RED, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a GREEN SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeGreen( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a BLUE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeBlue( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a WHITE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeWhite( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, an ORANGE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeOrange( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a RED FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareRed( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.RED, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a GREEN FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareGreen( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a BLUE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareBlue( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a WHITE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareWhite( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, an ORANGE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareOrange( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) -end ---- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME. --- @module GOHOMETASK - -Include.File("Task") - ---- The GOHOMETASK class --- @type -GOHOMETASK = { - ClassName = "GOHOMETASK", -} - ---- Creates a new GOHOMETASK. --- @param table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located. --- @return GOHOMETASK -function GOHOMETASK:New( LandingZones ) - local self = BASE:Inherit( self, TASK:New() ) - self:F( { LandingZones } ) - local Valid = true - - Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) - - if Valid then - self.Name = 'Fly Home' - self.TaskBriefing = "Task: Fly back to your home base. Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to your home base." - if type( LandingZones ) == "table" then - self.LandingZones = LandingZones - else - self.LandingZones = { LandingZones } - end - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end ---- A DESTROYBASETASK will monitor the destruction of Groups and Units. This is a BASE class, other classes are derived from this class. --- @module DESTROYBASETASK --- @see DESTROYGROUPSTASK --- @see DESTROYUNITTYPESTASK --- @see DESTROY_RADARS_TASK - -Include.File("Task") - ---- The DESTROYBASETASK class --- @type DESTROYBASETASK -DESTROYBASETASK = { - ClassName = "DESTROYBASETASK", - Destroyed = 0, - GoalVerb = "Destroy", - DestroyPercentage = 100, -} - ---- Creates a new DESTROYBASETASK. --- @param #DESTROYBASETASK self --- @param #string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers". --- @param #string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents". --- @param #list<#string> DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed. --- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. --- @return DESTROYBASETASK -function DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupPrefixes, DestroyPercentage ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - self.Name = 'Destroy' - self.Destroyed = 0 - self.DestroyGroupPrefixes = DestroyGroupPrefixes - self.DestroyGroupType = DestroyGroupType - self.DestroyUnitType = DestroyUnitType - if DestroyPercentage then - self.DestroyPercentage = DestroyPercentage - end - self.TaskBriefing = "Task: Destroy " .. DestroyGroupType .. "." - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEGROUPSDESTROYED:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - - return self -end - ---- Handle the S_EVENT_DEAD events to validate the destruction of units for the task monitoring. --- @param #DESTROYBASETASK self --- @param Event#EVENTDATA Event structure of MOOSE. -function DESTROYBASETASK:EventDead( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - local DestroyUnit = Event.IniDCSUnit - local DestroyUnitName = Event.IniDCSUnitName - local DestroyGroup = Event.IniDCSGroup - local DestroyGroupName = Event.IniDCSGroupName - - --TODO: I need to fix here if 2 groups in the mission have a similar name with GroupPrefix equal, then i should differentiate for which group the goal was reached! - --I may need to test if for the goalverb that group goal was reached or something. Need to think about it a bit more ... - local UnitsDestroyed = 0 - for DestroyGroupPrefixID, DestroyGroupPrefix in pairs( self.DestroyGroupPrefixes ) do - self:T( DestroyGroupPrefix ) - if string.find( DestroyGroupName, DestroyGroupPrefix, 1, true ) then - self:T( BASE:Inherited(self).ClassName ) - UnitsDestroyed = self:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:T( UnitsDestroyed ) - end - end - - self:T( { UnitsDestroyed } ) - self:IncreaseGoalCount( UnitsDestroyed, self.GoalVerb ) - end - -end - ---- Validate task completeness of DESTROYBASETASK. --- @param DestroyGroup Group structure describing the group to be evaluated. --- @param DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYBASETASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F() - - return 0 -end ---- DESTROYGROUPSTASK --- @module DESTROYGROUPSTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYGROUPSTASK class --- @type -DESTROYGROUPSTASK = { - ClassName = "DESTROYGROUPSTASK", - GoalVerb = "Destroy Groups", -} - ---- Creates a new DESTROYGROUPSTASK. --- @param #DESTROYGROUPSTASK self --- @param #string DestroyGroupType String describing the group to be destroyed. --- @param #string DestroyUnitType String describing the unit to be destroyed. --- @param #list<#string> DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed. --- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. ----@return DESTROYGROUPSTASK -function DESTROYGROUPSTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) - local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) ) - self:F() - - self.Name = 'Destroy Groups' - self.GoalVerb = "Destroy " .. DestroyGroupType - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - _EVENTDISPATCHER:OnCrash( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param #DESTROYGROUPSTASK self --- @param DCSGroup#Group DestroyGroup Group structure describing the group to be evaluated. --- @param DCSUnit#Unit DestroyUnit Unit structure describing the Unit to be evaluated. --- @return #number The DestroyCount reflecting the amount of units destroyed within the group. -function DESTROYGROUPSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit, self.DestroyPercentage } ) - - local DestroyGroupSize = DestroyGroup:getSize() - 1 -- When a DEAD event occurs, the getSize is still one larger than the destroyed unit. - local DestroyGroupInitialSize = DestroyGroup:getInitialSize() - self:T( { DestroyGroupSize, DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) } ) - - local DestroyCount = 0 - if DestroyGroup then - if DestroyGroupSize <= DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) then - DestroyCount = 1 - end - else - DestroyCount = 1 - end - - self:T( DestroyCount ) - - return DestroyCount -end ---- Task class to destroy radar installations. --- @module DESTROYRADARSTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYRADARS class --- @type -DESTROYRADARSTASK = { - ClassName = "DESTROYRADARSTASK", - GoalVerb = "Destroy Radars" -} - ---- Creates a new DESTROYRADARSTASK. --- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. --- @return DESTROYRADARSTASK -function DESTROYRADARSTASK:New( DestroyGroupNames ) - local self = BASE:Inherit( self, DESTROYGROUPSTASK:New( 'radar installations', 'radars', DestroyGroupNames ) ) - self:F() - - self.Name = 'Destroy Radars' - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param Group DestroyGroup Group structure describing the group to be evaluated. --- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYRADARSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit } ) - - local DestroyCount = 0 - if DestroyUnit and DestroyUnit:hasSensors( Unit.SensorType.RADAR, Unit.RadarType.AS ) then - if DestroyUnit and DestroyUnit:getLife() <= 1.0 then - self:T( 'Destroyed a radar' ) - DestroyCount = 1 - end - end - return DestroyCount -end ---- Set TASK to destroy certain unit types. --- @module DESTROYUNITTYPESTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYUNITTYPESTASK class --- @type -DESTROYUNITTYPESTASK = { - ClassName = "DESTROYUNITTYPESTASK", - GoalVerb = "Destroy", -} - ---- Creates a new DESTROYUNITTYPESTASK. --- @param string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers". --- @param string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers". --- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. --- @param string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success. --- @return DESTROYUNITTYPESTASK -function DESTROYUNITTYPESTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes ) - local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames ) ) - self:F( { DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes } ) - - if type(DestroyUnitTypes) == 'table' then - self.DestroyUnitTypes = DestroyUnitTypes - else - self.DestroyUnitTypes = { DestroyUnitTypes } - end - - self.Name = 'Destroy Unit Types' - self.GoalVerb = "Destroy " .. DestroyGroupType - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param Group DestroyGroup Group structure describing the group to be evaluated. --- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYUNITTYPESTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit } ) - - local DestroyCount = 0 - for UnitTypeID, UnitType in pairs( self.DestroyUnitTypes ) do - if DestroyUnit and DestroyUnit:getTypeName() == UnitType then - if DestroyUnit and DestroyUnit:getLife() <= 1.0 then - DestroyCount = DestroyCount + 1 - end - end - end - return DestroyCount -end ---- A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone. --- @module PICKUPTASK --- @parent TASK - -Include.File("Task") -Include.File("Cargo") - ---- The PICKUPTASK class --- @type -PICKUPTASK = { - ClassName = "PICKUPTASK", - TEXT = { "Pick-Up", "picked-up", "loaded" }, - GoalVerb = "Pick-Up" -} - ---- Creates a new PICKUPTASK. --- @param table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded. --- @param CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:.. --- @param number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier. -function PICKUPTASK:New( CargoType, OnBoardSide ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - -- self holds the inherited instance of the PICKUPTASK Class to the BASE class. - - local Valid = true - - if Valid then - self.Name = 'Pickup Cargo' - self.TaskBriefing = "Task: Fly to the indicated landing zones and pickup " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the pickup zone." - self.CargoType = CargoType - self.GoalVerb = CargoType .. " " .. self.GoalVerb - self.OnBoardSide = OnBoardSide - self.IsLandingRequired = true -- required to decide whether the client needs to land or not - self.IsSlingLoad = false -- Indicates whether the cargo is a sling load cargo - self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGELOAD:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - -function PICKUPTASK:FromZone( LandingZone ) - self:F() - - self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName - self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone - - return self -end - -function PICKUPTASK:InitCargo( InitCargos ) - self:F( { InitCargos } ) - - if type( InitCargos ) == "table" then - self.Cargos.InitCargos = InitCargos - else - self.Cargos.InitCargos = { InitCargos } - end - - return self -end - -function PICKUPTASK:LoadCargo( LoadCargos ) - self:F( { LoadCargos } ) - - if type( LoadCargos ) == "table" then - self.Cargos.LoadCargos = LoadCargos - else - self.Cargos.LoadCargos = { LoadCargos } - end - - return self -end - -function PICKUPTASK:AddCargoMenus( Client, Cargos, TransportRadius ) - self:F() - - for CargoID, Cargo in pairs( Cargos ) do - - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) - - -- If the Cargo has no status, allow the menu option. - if Cargo:IsStatusNone() or ( Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() ) then - - local MenuAdd = false - if Cargo:IsNear( Client, self.CurrentCargoZone ) then - MenuAdd = true - end - - if MenuAdd then - if Client._Menus[Cargo.CargoType] == nil then - Client._Menus[Cargo.CargoType] = {} - end - - if not Client._Menus[Cargo.CargoType].PickupMenu then - Client._Menus[Cargo.CargoType].PickupMenu = missionCommands.addSubMenuForGroup( - Client:GetClientGroupID(), - self.TEXT[1] .. " " .. Cargo.CargoType, - nil - ) - self:T( 'Added PickupMenu: ' .. self.TEXT[1] .. " " .. Cargo.CargoType ) - end - - if Client._Menus[Cargo.CargoType].PickupSubMenus == nil then - Client._Menus[Cargo.CargoType].PickupSubMenus = {} - end - - Client._Menus[Cargo.CargoType].PickupSubMenus[ #Client._Menus[Cargo.CargoType].PickupSubMenus + 1 ] = missionCommands.addCommandForGroup( - Client:GetClientGroupID(), - Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", - Client._Menus[Cargo.CargoType].PickupMenu, - self.MenuAction, - { ReferenceTask = self, CargoTask = Cargo } - ) - self:T( 'Added PickupSubMenu' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) - end - end - end - -end - -function PICKUPTASK:RemoveCargoMenus( Client ) - self:F() - - for MenuID, MenuData in pairs( Client._Menus ) do - for SubMenuID, SubMenuData in pairs( MenuData.PickupSubMenus ) do - missionCommands.removeItemForGroup( Client:GetClientGroupID(), SubMenuData ) - self:T( "Removed PickupSubMenu " ) - SubMenuData = nil - end - if MenuData.PickupMenu then - missionCommands.removeItemForGroup( Client:GetClientGroupID(), MenuData.PickupMenu ) - self:T( "Removed PickupMenu " ) - MenuData.PickupMenu = nil - end - end - - for CargoID, Cargo in pairs( CARGOS ) do - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) - if Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() then - Cargo:StatusNone() - end - end - -end - - - -function PICKUPTASK:HasFailed( ClientDead ) - self:F() - - local TaskHasFailed = self.TaskFailed - return TaskHasFailed -end - ---- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone. --- @module DEPLOYTASK - -Include.File( "Task" ) - ---- A DeployTask --- @type DEPLOYTASK -DEPLOYTASK = { - ClassName = "DEPLOYTASK", - TEXT = { "Deploy", "deployed", "unloaded" }, - GoalVerb = "Deployment" -} - - ---- Creates a new DEPLOYTASK object, which models the sequence of STAGEs to unload a cargo. --- @function [parent=#DEPLOYTASK] New --- @param #string CargoType Type of the Cargo. --- @return #DEPLOYTASK The created DeployTask -function DEPLOYTASK:New( CargoType ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - local Valid = true - - if Valid then - self.Name = 'Deploy Cargo' - self.TaskBriefing = "Fly to one of the indicated landing zones and deploy " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the deployment zone." - self.CargoType = CargoType - self.GoalVerb = CargoType .. " " .. self.GoalVerb - self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGEUNLOAD:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - -function DEPLOYTASK:ToZone( LandingZone ) - self:F() - - self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName - self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone - - return self -end - - -function DEPLOYTASK:InitCargo( InitCargos ) - self:F( { InitCargos } ) - - if type( InitCargos ) == "table" then - self.Cargos.InitCargos = InitCargos - else - self.Cargos.InitCargos = { InitCargos } - end - - return self -end - - -function DEPLOYTASK:LoadCargo( LoadCargos ) - self:F( { LoadCargos } ) - - if type( LoadCargos ) == "table" then - self.Cargos.LoadCargos = LoadCargos - else - self.Cargos.LoadCargos = { LoadCargos } - end - - return self -end - - ---- When the cargo is unloaded, it will move to the target zone name. --- @param string TargetZoneName Name of the Zone to where the Cargo should move after unloading. -function DEPLOYTASK:SetCargoTargetZoneName( TargetZoneName ) - self:F() - - local Valid = true - - Valid = routines.ValidateString( TargetZoneName, "TargetZoneName", Valid ) - - if Valid then - self.TargetZoneName = TargetZoneName - end - - return Valid - -end - -function DEPLOYTASK:AddCargoMenus( Client, Cargos, TransportRadius ) - self:F() - - local ClientGroupID = Client:GetClientGroupID() - - self:T( ClientGroupID ) - - for CargoID, Cargo in pairs( Cargos ) do - - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } ) - - if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then - - if Client._Menus[Cargo.CargoType] == nil then - Client._Menus[Cargo.CargoType] = {} - end - - if not Client._Menus[Cargo.CargoType].DeployMenu then - Client._Menus[Cargo.CargoType].DeployMenu = missionCommands.addSubMenuForGroup( - ClientGroupID, - self.TEXT[1] .. " " .. Cargo.CargoType, - nil - ) - self:T( 'Added DeployMenu ' .. self.TEXT[1] ) - end - - if Client._Menus[Cargo.CargoType].DeploySubMenus == nil then - Client._Menus[Cargo.CargoType].DeploySubMenus = {} - end - - if Client._Menus[Cargo.CargoType].DeployMenu == nil then - self:T( 'deploymenu is nil' ) - end - - Client._Menus[Cargo.CargoType].DeploySubMenus[ #Client._Menus[Cargo.CargoType].DeploySubMenus + 1 ] = missionCommands.addCommandForGroup( - ClientGroupID, - Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", - Client._Menus[Cargo.CargoType].DeployMenu, - self.MenuAction, - { ReferenceTask = self, CargoTask = Cargo } - ) - self:T( 'Added DeploySubMenu ' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) - end - end - -end - -function DEPLOYTASK:RemoveCargoMenus( Client ) - self:F() - - local ClientGroupID = Client:GetClientGroupID() - self:T( ClientGroupID ) - - for MenuID, MenuData in pairs( Client._Menus ) do - if MenuData.DeploySubMenus ~= nil then - for SubMenuID, SubMenuData in pairs( MenuData.DeploySubMenus ) do - missionCommands.removeItemForGroup( ClientGroupID, SubMenuData ) - self:T( "Removed DeploySubMenu " ) - SubMenuData = nil - end - end - if MenuData.DeployMenu then - missionCommands.removeItemForGroup( ClientGroupID, MenuData.DeployMenu ) - self:T( "Removed DeployMenu " ) - MenuData.DeployMenu = nil - end - end - -end ---- A NOTASK is a dummy activity... But it will show a Mission Briefing... --- @module NOTASK - -Include.File("Task") - ---- The NOTASK class --- @type -NOTASK = { - ClassName = "NOTASK", -} - ---- Creates a new NOTASK. -function NOTASK:New() - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - local Valid = true - - if Valid then - self.Name = 'Nothing' - self.TaskBriefing = "Task: Execute your mission." - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end ---- A ROUTETASK orchestrates the travel to a specific zone defined within the ME. --- @module ROUTETASK - ---- The ROUTETASK class --- @type -ROUTETASK = { - ClassName = "ROUTETASK", - GoalVerb = "Route", -} - ---- Creates a new ROUTETASK. --- @param table{sring,...}|string LandingZones Table of Zone Names where the target is located. --- @param string TaskBriefing (optional) Defines a text describing the briefing of the task. --- @return ROUTETASK -function ROUTETASK:New( LandingZones, TaskBriefing ) - local self = BASE:Inherit( self, TASK:New() ) - self:F( { LandingZones, TaskBriefing } ) - - local Valid = true - - Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) - - if Valid then - self.Name = 'Route To Zone' - if TaskBriefing then - self.TaskBriefing = TaskBriefing .. " Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." - else - self.TaskBriefing = "Task: Fly to specified zone(s). Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." - end - if type( LandingZones ) == "table" then - self.LandingZones = LandingZones - else - self.LandingZones = { LandingZones } - end - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - ---- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc. --- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}. --- @module Mission - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The MISSION class --- @type MISSION --- @extends Base#BASE --- @field #MISSION.Clients _Clients --- @field #string MissionBriefing -MISSION = { - ClassName = "MISSION", - Name = "", - MissionStatus = "PENDING", - _Clients = {}, - _Tasks = {}, - _ActiveTasks = {}, - GoalFunction = nil, - MissionReportTrigger = 0, - MissionProgressTrigger = 0, - MissionReportShow = false, - MissionReportFlash = false, - MissionTimeInterval = 0, - MissionCoalition = "", - SUCCESS = 1, - FAILED = 2, - REPEAT = 3, - _GoalTasks = {} -} - ---- @type MISSION.Clients --- @list - -function MISSION:Meta() - - local self = BASE:Inherit( self, BASE:New() ) - self:F() - - return self -end - ---- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. --- @param string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players. --- @param string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field. --- @param string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. --- @param string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... --- @return MISSION --- @usage --- -- Declare a few missions. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Patriots', 'Primary', 'Our intelligence reports that 3 Patriot SAM defense batteries are located near Ruisi, Kvarhiti and Gori.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Package Delivery', 'Operational', 'In order to be in full control of the situation, we need you to deliver a very important package at a secret location. Fly undetected through the NATO defenses and deliver the secret package. The secret agent is located at waypoint 4.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue General', 'Tactical', 'Our intelligence has received a remote signal behind Gori. We believe it is a very important Russian General that was captured by Georgia. Go out there and rescue him! Ensure you stay out of the battle zone, keep south. Waypoint 4 is the location of our Russian General.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'SA-6 SAMs', 'Primary', 'Our intelligence reports that 3 SA-6 SAM defense batteries are located near Didmukha, Khetagurov and Berula. Eliminate the Russian SAMs.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Sling Load', 'Operational', 'Fly to the cargo pickup zone at Dzegvi or Kaspi, and sling the cargo to Soganlug airbase.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue secret agent', 'Tactical', 'In order to be in full control of the situation, we need you to rescue a secret agent from the woods behind enemy lines. Avoid the Russian defenses and rescue the agent. Keep south until Khasuri, and keep your eyes open for any SAM presence. The agent is located at waypoint 4 on your kneeboard.', 'NATO' ) -function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoalition ) - - self = MISSION:Meta() - self:T({ MissionName, MissionPriority, MissionBriefing, MissionCoalition }) - - local Valid = true - - Valid = routines.ValidateString( MissionName, "MissionName", Valid ) - Valid = routines.ValidateString( MissionPriority, "MissionPriority", Valid ) - Valid = routines.ValidateString( MissionBriefing, "MissionBriefing", Valid ) - Valid = routines.ValidateString( MissionCoalition, "MissionCoalition", Valid ) - - if Valid then - self.Name = MissionName - self.MissionPriority = MissionPriority - self.MissionBriefing = MissionBriefing - self.MissionCoalition = MissionCoalition - end - - return self -end - ---- Returns if a Mission has completed. --- @return bool -function MISSION:IsCompleted() - self:F() - return self.MissionStatus == "ACCOMPLISHED" -end - ---- Set a Mission to completed. -function MISSION:Completed() - self:F() - self.MissionStatus = "ACCOMPLISHED" - self:StatusToClients() -end - ---- Returns if a Mission is ongoing. --- treturn bool -function MISSION:IsOngoing() - self:F() - return self.MissionStatus == "ONGOING" -end - ---- Set a Mission to ongoing. -function MISSION:Ongoing() - self:F() - self.MissionStatus = "ONGOING" - --self:StatusToClients() -end - ---- Returns if a Mission is pending. --- treturn bool -function MISSION:IsPending() - self:F() - return self.MissionStatus == "PENDING" -end - ---- Set a Mission to pending. -function MISSION:Pending() - self:F() - self.MissionStatus = "PENDING" - self:StatusToClients() -end - ---- Returns if a Mission has failed. --- treturn bool -function MISSION:IsFailed() - self:F() - return self.MissionStatus == "FAILED" -end - ---- Set a Mission to failed. -function MISSION:Failed() - self:F() - self.MissionStatus = "FAILED" - self:StatusToClients() -end - ---- Send the status of the MISSION to all Clients. -function MISSION:StatusToClients() - self:F() - if self.MissionReportFlash then - for ClientID, Client in pairs( self._Clients ) do - Client:Message( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. '! ( ' .. self.MissionPriority .. ' mission ) ', 10, self.Name .. '/Status', "Mission Command: Mission Status") - end - end -end - ---- Handles the reporting. After certain time intervals, a MISSION report MESSAGE will be shown to All Players. -function MISSION:ReportTrigger() - self:F() - - if self.MissionReportShow == true then - self.MissionReportShow = false - return true - else - if self.MissionReportFlash == true then - if timer.getTime() >= self.MissionReportTrigger then - self.MissionReportTrigger = timer.getTime() + self.MissionTimeInterval - return true - else - return false - end - else - return false - end - end -end - ---- Report the status of all MISSIONs to all active Clients. -function MISSION:ReportToAll() - self:F() - - local AlivePlayers = '' - for ClientID, Client in pairs( self._Clients ) do - if Client:GetDCSGroup() then - if Client:GetClientGroupDCSUnit() then - if Client:GetClientGroupDCSUnit():getLife() > 0.0 then - if AlivePlayers == '' then - AlivePlayers = ' Players: ' .. Client:GetClientGroupDCSUnit():getPlayerName() - else - AlivePlayers = AlivePlayers .. ' / ' .. Client:GetClientGroupDCSUnit():getPlayerName() - end - end - end - end - end - local Tasks = self:GetTasks() - local TaskText = "" - for TaskID, TaskData in pairs( Tasks ) do - TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n" - end - MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), "Mission Command: Mission Report", 10, self.Name .. '/Status'):ToAll() -end - - ---- Add a goal function to a MISSION. Goal functions are called when a @{TASK} within a mission has been completed. --- @param function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively. --- @usage --- PatriotActivation = { --- { "US SAM Patriot Zerti", false }, --- { "US SAM Patriot Zegduleti", false }, --- { "US SAM Patriot Gvleti", false } --- } --- --- function DeployPatriotTroopsGoal( Mission, Client ) --- --- --- -- Check if the cargo is all deployed for mission success. --- for CargoID, CargoData in pairs( Mission._Cargos ) do --- if Group.getByName( CargoData.CargoGroupName ) then --- CargoGroup = Group.getByName( CargoData.CargoGroupName ) --- if CargoGroup then --- -- Check if the cargo is ready to activate --- CurrentLandingZoneID = routines.IsUnitInZones( CargoGroup:getUnits()[1], Mission:GetTask( 2 ).LandingZones ) -- The second task is the Deploytask to measure mission success upon --- if CurrentLandingZoneID then --- if PatriotActivation[CurrentLandingZoneID][2] == false then --- -- Now check if this is a new Mission Task to be completed... --- trigger.action.setGroupAIOn( Group.getByName( PatriotActivation[CurrentLandingZoneID][1] ) ) --- PatriotActivation[CurrentLandingZoneID][2] = true --- MessageToBlue( "Mission Command: Message to all airborne units! The " .. PatriotActivation[CurrentLandingZoneID][1] .. " is armed. Our air defenses are now stronger.", 60, "BLUE/PatriotDefense" ) --- MessageToRed( "Mission Command: Our satellite systems are detecting additional NATO air defenses. To all airborne units: Take care!!!", 60, "RED/PatriotDefense" ) --- Mission:GetTask( 2 ):AddGoalCompletion( "Patriots activated", PatriotActivation[CurrentLandingZoneID][1], 1 ) -- Register Patriot activation as part of mission goal. --- end --- end --- end --- end --- end --- end --- --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) --- Mission:AddGoalFunction( DeployPatriotTroopsGoal ) -function MISSION:AddGoalFunction( GoalFunction ) - self:F() - self.GoalFunction = GoalFunction -end - ---- Register a new @{CLIENT} to participate within the mission. --- @param CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}. --- @return CLIENT --- @usage --- Add a number of Client objects to the Mission. --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 1', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 3', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 2', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 4', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) -function MISSION:AddClient( Client ) - self:F( { Client } ) - - local Valid = true - - if Valid then - self._Clients[Client.ClientName] = Client - end - - return Client -end - ---- Find a @{CLIENT} object within the @{MISSION} by its ClientName. --- @param CLIENT ClientName is a string defining the Client Group as defined within the ME. --- @return CLIENT --- @usage --- -- Seach for Client "Bomber" within the Mission. --- local BomberClient = Mission:FindClient( "Bomber" ) -function MISSION:FindClient( ClientName ) - self:F( { self._Clients[ClientName] } ) - return self._Clients[ClientName] -end - - ---- Register a @{TASK} to be completed within the @{MISSION}. Note that there can be multiple @{TASK}s registered to be completed. Each TASK can be set a certain Goal. The MISSION will not be completed until all Goals are reached. --- @param TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s. --- @param number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological. --- @return TASK --- @usage --- -- Define a few tasks for the Mission. --- PickupZones = { "NATO Gold Pickup Zone", "NATO Titan Pickup Zone" } --- PickupSignalUnits = { "NATO Gold Coordination Center", "NATO Titan Coordination Center" } --- --- -- Assign the Pickup Task --- local PickupTask = PICKUPTASK:New( PickupZones, CARGO_TYPE.ENGINEERS, CLIENT.ONBOARDSIDE.LEFT ) --- PickupTask:AddSmokeBlue( PickupSignalUnits ) --- PickupTask:SetGoalTotal( 3 ) --- Mission:AddTask( PickupTask, 1 ) --- --- -- Assign the Deploy Task --- local PatriotActivationZones = { "US Patriot Battery 1 Activation", "US Patriot Battery 2 Activation", "US Patriot Battery 3 Activation" } --- local PatriotActivationZonesSmokeUnits = { "US SAM Patriot - Battery 1 Control", "US SAM Patriot - Battery 2 Control", "US SAM Patriot - Battery 3 Control" } --- local DeployTask = DEPLOYTASK:New( PatriotActivationZones, CARGO_TYPE.ENGINEERS ) --- --DeployTask:SetCargoTargetZoneName( 'US Troops Attack ' .. math.random(2) ) --- DeployTask:AddSmokeBlue( PatriotActivationZonesSmokeUnits ) --- DeployTask:SetGoalTotal( 3 ) --- DeployTask:SetGoalTotal( 3, "Patriots activated" ) --- Mission:AddTask( DeployTask, 2 ) - -function MISSION:AddTask( Task, TaskNumber ) - self:F() - - self._Tasks[TaskNumber] = Task - self._Tasks[TaskNumber]:EnableEvents() - self._Tasks[TaskNumber].ID = TaskNumber - - return Task - end - ---- Get the TASK idenified by the TaskNumber from the Mission. This function is useful in GoalFunctions. --- @param number TaskNumber is the number of the @{TASK} within the @{MISSION}. --- @return TASK --- @usage --- -- Get Task 2 from the Mission. --- Task2 = Mission:GetTask( 2 ) - -function MISSION:GetTask( TaskNumber ) - self:F() - - local Valid = true - - local Task = nil - - if type(TaskNumber) ~= "number" then - Valid = false - end - - if Valid then - Task = self._Tasks[TaskNumber] - end - - return Task -end - ---- Get all the TASKs from the Mission. This function is useful in GoalFunctions. --- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key. --- @usage --- -- Get Tasks from the Mission. --- Tasks = Mission:GetTasks() --- env.info( "Task 2 Completion = " .. Tasks[2]:GetGoalPercentage() .. "%" ) -function MISSION:GetTasks() - self:F() - - return self._Tasks -end - - ---[[ - _TransportExecuteStage: Defines the different stages of Transport unload/load execution. This table is internal and is used to control the validity of Transport load/unload timing. - - - _TransportExecuteStage.EXECUTING - - _TransportExecuteStage.SUCCESS - - _TransportExecuteStage.FAILED - ---]] -_TransportExecuteStage = { - NONE = 0, - EXECUTING = 1, - SUCCESS = 2, - FAILED = 3 -} - - ---- The MISSIONSCHEDULER is an OBJECT and is the main scheduler of ALL active MISSIONs registered within this scheduler. It's workings are considered internal and is automatically created when the Mission.lua file is included. --- @type MISSIONSCHEDULER --- @field #MISSIONSCHEDULER.MISSIONS Missions -MISSIONSCHEDULER = { - Missions = {}, - MissionCount = 0, - TimeIntervalCount = 0, - TimeIntervalShow = 150, - TimeSeconds = 14400, - TimeShow = 5 -} - ---- @type MISSIONSCHEDULER.MISSIONS --- @list <#MISSION> Mission - ---- This is the main MISSIONSCHEDULER Scheduler function. It is considered internal and is automatically created when the Mission.lua file is included. -function MISSIONSCHEDULER.Scheduler() - - - -- loop through the missions in the TransportTasks - for MissionName, MissionData in pairs( MISSIONSCHEDULER.Missions ) do - - local Mission = MissionData -- #MISSION - - if not Mission:IsCompleted() then - - -- This flag will monitor if for this mission, there are clients alive. If this flag is still false at the end of the loop, the mission status will be set to Pending (if not Failed or Completed). - local ClientsAlive = false - - for ClientID, ClientData in pairs( Mission._Clients ) do - - local Client = ClientData -- Client#CLIENT - - if Client:IsAlive() then - - -- There is at least one Client that is alive... So the Mission status is set to Ongoing. - ClientsAlive = true - - -- If this Client was not registered as Alive before: - -- 1. We register the Client as Alive. - -- 2. We initialize the Client Tasks and make a link to the original Mission Task. - -- 3. We initialize the Cargos. - -- 4. We flag the Mission as Ongoing. - if not Client.ClientAlive then - Client.ClientAlive = true - Client.ClientBriefingShown = false - for TaskNumber, Task in pairs( Mission._Tasks ) do - -- Note that this a deepCopy. Each client must have their own Tasks with own Stages!!! - Client._Tasks[TaskNumber] = routines.utils.deepCopy( Mission._Tasks[TaskNumber] ) - -- Each MissionTask must point to the original Mission. - Client._Tasks[TaskNumber].MissionTask = Mission._Tasks[TaskNumber] - Client._Tasks[TaskNumber].Cargos = Mission._Tasks[TaskNumber].Cargos - Client._Tasks[TaskNumber].LandingZones = Mission._Tasks[TaskNumber].LandingZones - end - - Mission:Ongoing() - end - - - -- For each Client, check for each Task the state and evolve the mission. - -- This flag will indicate if the Task of the Client is Complete. - local TaskComplete = false - - for TaskNumber, Task in pairs( Client._Tasks ) do - - if not Task.Stage then - Task:SetStage( 1 ) - end - - - local TransportTime = timer.getTime() - - if not Task:IsDone() then - - if Task:Goal() then - Task:ShowGoalProgress( Mission, Client ) - end - - --env.info( 'Scheduler: Mission = ' .. Mission.Name .. ' / Client = ' .. Client.ClientName .. ' / Task = ' .. Task.Name .. ' / Stage = ' .. Task.ActiveStage .. ' - ' .. Task.Stage.Name .. ' - ' .. Task.Stage.StageType ) - - -- Action - if Task:StageExecute() then - Task.Stage:Execute( Mission, Client, Task ) - end - - -- Wait until execution is finished - if Task.ExecuteStage == _TransportExecuteStage.EXECUTING then - Task.Stage:Executing( Mission, Client, Task ) - end - - -- Validate completion or reverse to earlier stage - if Task.Time + Task.Stage.WaitTime <= TransportTime then - Task:SetStage( Task.Stage:Validate( Mission, Client, Task ) ) - end - - if Task:IsDone() then - --env.info( 'Scheduler: Mission '.. Mission.Name .. ' Task ' .. Task.Name .. ' Stage ' .. Task.Stage.Name .. ' done. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) - TaskComplete = true -- when a task is not yet completed, a mission cannot be completed - - else - -- break only if this task is not yet done, so that future task are not yet activated. - TaskComplete = false -- when a task is not yet completed, a mission cannot be completed - --env.info( 'Scheduler: Mission "'.. Mission.Name .. '" Task "' .. Task.Name .. '" Stage "' .. Task.Stage.Name .. '" break. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) - break - end - - if TaskComplete then - - if Mission.GoalFunction ~= nil then - Mission.GoalFunction( Mission, Client ) - end - if MISSIONSCHEDULER.Scoring then - MISSIONSCHEDULER.Scoring:_AddMissionTaskScore( Client:GetClientGroupDCSUnit(), Mission.Name, 25 ) - end - --- if not Mission:IsCompleted() then --- end - end - end - end - - local MissionComplete = true - for TaskNumber, Task in pairs( Mission._Tasks ) do - if Task:Goal() then --- Task:ShowGoalProgress( Mission, Client ) - if Task:IsGoalReached() then - else - MissionComplete = false - end - else - MissionComplete = false -- If there is no goal, the mission should never be ended. The goal status will be set somewhere else. - end - end - - if MissionComplete then - Mission:Completed() - if MISSIONSCHEDULER.Scoring then - MISSIONSCHEDULER.Scoring:_AddMissionScore( Mission.Name, 100 ) - end - else - if TaskComplete then - -- Reset for new tasking of active client - Client.ClientAlive = false -- Reset the client tasks. - end - end - - - else - if Client.ClientAlive then - env.info( 'Scheduler: Client "' .. Client.ClientName .. '" is inactive.' ) - Client.ClientAlive = false - - -- This is tricky. If we sanitize Client._Tasks before sanitizing Client._Tasks[TaskNumber].MissionTask, then the original MissionTask will be sanitized, and will be lost within the garbage collector. - -- So first sanitize Client._Tasks[TaskNumber].MissionTask, after that, sanitize only the whole _Tasks structure... - --Client._Tasks[TaskNumber].MissionTask = nil - --Client._Tasks = nil - end - end - end - - -- If all Clients of this Mission are not activated, then the Mission status needs to be put back into Pending status. - -- But only if the Mission was Ongoing. In case the Mission is Completed or Failed, the Mission status may not be changed. In these cases, this will be the last run of this Mission in the Scheduler. - if ClientsAlive == false then - if Mission:IsOngoing() then - -- Mission status back to pending... - Mission:Pending() - end - end - end - - Mission:StatusToClients() - - if Mission:ReportTrigger() then - Mission:ReportToAll() - end - end - - return true -end - ---- Start the MISSIONSCHEDULER. -function MISSIONSCHEDULER.Start() - if MISSIONSCHEDULER ~= nil then - --MISSIONSCHEDULER.SchedulerId = routines.scheduleFunction( MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) - MISSIONSCHEDULER.SchedulerId = SCHEDULER:New( nil, MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) - end -end - ---- Stop the MISSIONSCHEDULER. -function MISSIONSCHEDULER.Stop() - if MISSIONSCHEDULER.SchedulerId then - routines.removeFunction(MISSIONSCHEDULER.SchedulerId) - MISSIONSCHEDULER.SchedulerId = nil - end -end - ---- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. --- @param Mission is the MISSION object instantiated by @{MISSION:New}. --- @return MISSION --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) -function MISSIONSCHEDULER.AddMission( Mission ) - MISSIONSCHEDULER.Missions[Mission.Name] = Mission - MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount + 1 - -- Add an overall AI Client for the AI tasks... This AI Client will facilitate the Events in the background for each Task. - --MissionAdd:AddClient( CLIENT:Register( 'AI' ) ) - - return Mission -end - ---- Remove a MISSION from the MISSIONSCHEDULER. --- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) --- --- -- Now remove the Mission. --- MISSIONSCHEDULER:RemoveMission( 'Russia Transport Troops SA-6' ) -function MISSIONSCHEDULER.RemoveMission( MissionName ) - MISSIONSCHEDULER.Missions[MissionName] = nil - MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount - 1 -end - ---- Find a MISSION within the MISSIONSCHEDULER. --- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. --- @return MISSION --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) --- --- -- Now find the Mission. --- MissionFind = MISSIONSCHEDULER:FindMission( 'Russia Transport Troops SA-6' ) -function MISSIONSCHEDULER.FindMission( MissionName ) - return MISSIONSCHEDULER.Missions[MissionName] -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsShow( ) - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = true - Mission.MissionReportFlash = false - end -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsFlash( TimeInterval ) - local Count = 0 - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = false - Mission.MissionReportFlash = true - Mission.MissionReportTrigger = timer.getTime() + Count * TimeInterval - Mission.MissionTimeInterval = MISSIONSCHEDULER.MissionCount * TimeInterval - env.info( "TimeInterval = " .. Mission.MissionTimeInterval ) - Count = Count + 1 - end -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsHide( Prm ) - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = false - Mission.MissionReportFlash = false - end -end - ---- Enables a MENU option in the communications menu under F10 to control the status of the active missions. --- This function should be called only once when starting the MISSIONSCHEDULER. -function MISSIONSCHEDULER.ReportMenu() - local ReportMenu = SUBMENU:New( 'Status' ) - local ReportMenuShow = COMMANDMENU:New( 'Show Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsShow, 0 ) - local ReportMenuFlash = COMMANDMENU:New('Flash Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsFlash, 120 ) - local ReportMenuHide = COMMANDMENU:New( 'Hide Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsHide, 0 ) -end - ---- Show the remaining mission time. -function MISSIONSCHEDULER:TimeShow() - self.TimeIntervalCount = self.TimeIntervalCount + 1 - if self.TimeIntervalCount >= self.TimeTriggerShow then - local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.' - MESSAGE:New( TimeMsg, "Mission time", self.TimeShow, '/TimeMsg' ):ToAll() - self.TimeIntervalCount = 0 - end -end - -function MISSIONSCHEDULER:Time( TimeSeconds, TimeIntervalShow, TimeShow ) - - self.TimeIntervalCount = 0 - self.TimeSeconds = TimeSeconds - self.TimeIntervalShow = TimeIntervalShow - self.TimeShow = TimeShow -end - ---- Adds a mission scoring to the game. -function MISSIONSCHEDULER:Scoring( Scoring ) - - self.Scoring = Scoring -end - ---- The CLEANUP class keeps an area clean of crashing or colliding airplanes. It also prevents airplanes from firing within this area. --- @module CleanUp --- @author Flightcontrol - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The CLEANUP class. --- @type CLEANUP --- @extends Base#BASE -CLEANUP = { - ClassName = "CLEANUP", - ZoneNames = {}, - TimeInterval = 300, - CleanUpList = {}, -} - ---- Creates the main object which is handling the cleaning of the debris within the given Zone Names. --- @param #CLEANUP self --- @param #table ZoneNames Is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name. --- @param #number TimeInterval The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes. --- @return #CLEANUP --- @usage --- -- Clean these Zones. --- CleanUpAirports = CLEANUP:New( { 'CLEAN Tbilisi', 'CLEAN Kutaisi' }, 150 ) --- or --- CleanUpTbilisi = CLEANUP:New( 'CLEAN Tbilisi', 150 ) --- CleanUpKutaisi = CLEANUP:New( 'CLEAN Kutaisi', 600 ) -function CLEANUP:New( ZoneNames, TimeInterval ) local self = BASE:Inherit( self, BASE:New() ) - self:F( { ZoneNames, TimeInterval } ) - - if type( ZoneNames ) == 'table' then - self.ZoneNames = ZoneNames - else - self.ZoneNames = { ZoneNames } - end - if TimeInterval then - self.TimeInterval = TimeInterval - end - - _EVENTDISPATCHER:OnBirth( self._OnEventBirth, self ) - - --self.CleanUpScheduler = routines.scheduleFunction( self._CleanUpScheduler, { self }, timer.getTime() + 1, TimeInterval ) - self.CleanUpScheduler = SCHEDULER:New( self, self._CleanUpScheduler, {}, 1, TimeInterval ) - - return self -end - - ---- Destroys a group from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSGroup#Group GroupObject The object to be destroyed. --- @param #string CleanUpGroupName The groupname... -function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName ) - self:F( { GroupObject, CleanUpGroupName } ) - - if GroupObject then -- and GroupObject:isExist() then - --MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll() - trigger.action.deactivateGroup(GroupObject) - self:T( { "GroupObject Destroyed", GroupObject } ) - end -end - ---- Destroys a @{DCSUnit#Unit} from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSUnit#Unit CleanUpUnit The object to be destroyed. --- @param #string CleanUpUnitName The Unit name ... -function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - if CleanUpUnit then - --MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll() - local CleanUpGroup = Unit.getGroup(CleanUpUnit) - -- TODO Client bug in 1.5.3 - if CleanUpGroup and CleanUpGroup:isExist() then - local CleanUpGroupUnits = CleanUpGroup:getUnits() - if #CleanUpGroupUnits == 1 then - local CleanUpGroupName = CleanUpGroup:getName() - --self:CreateEventCrash( timer.getTime(), CleanUpUnit ) - CleanUpGroup:destroy() - self:T( { "Destroyed Group:", CleanUpGroupName } ) - else - CleanUpUnit:destroy() - self:T( { "Destroyed Unit:", CleanUpUnitName } ) - end - self.CleanUpList[CleanUpUnitName] = nil -- Cleaning from the list - CleanUpUnit = nil - end - end -end - --- TODO check DCSTypes#Weapon ---- Destroys a missile from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSTypes#Weapon MissileObject -function CLEANUP:_DestroyMissile( MissileObject ) - self:F( { MissileObject } ) - - if MissileObject and MissileObject:isExist() then - MissileObject:destroy() - self:T( "MissileObject Destroyed") - end -end - -function CLEANUP:_OnEventBirth( Event ) - self:F( { Event } ) - - self.CleanUpList[Event.IniDCSUnitName] = {} - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName - - _EVENTDISPATCHER:OnEngineShutDownForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnEngineStartUpForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnHitForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnPilotDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnShotForUnit( Event.IniDCSUnitName, self._EventShot, self ) - - --self:AddEvent( world.event.S_EVENT_ENGINE_SHUTDOWN, self._EventAddForCleanUp ) - --self:AddEvent( world.event.S_EVENT_ENGINE_STARTUP, self._EventAddForCleanUp ) --- self:AddEvent( world.event.S_EVENT_HIT, self._EventAddForCleanUp ) -- , self._EventHitCleanUp ) --- self:AddEvent( world.event.S_EVENT_CRASH, self._EventCrash ) -- , self._EventHitCleanUp ) --- --self:AddEvent( world.event.S_EVENT_DEAD, self._EventCrash ) --- self:AddEvent( world.event.S_EVENT_SHOT, self._EventShot ) --- --- self:EnableEvents() - - -end - ---- Detects if a crash event occurs. --- Crashed units go into a CleanUpList for removal. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventCrash( Event ) - self:F( { Event } ) - - --TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed. - --MESSAGE:New( "Crash ", "Crash", 10, "Crash" ):ToAll() - -- self:T("before getGroup") - -- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired - -- self:T("after getGroup") - -- _grp:destroy() - -- self:T("after deactivateGroup") - -- event.initiator:destroy() - - self.CleanUpList[Event.IniDCSUnitName] = {} - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName - -end - ---- Detects if a unit shoots a missile. --- If this occurs within one of the zones, then the weapon used must be destroyed. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventShot( Event ) - self:F( { Event } ) - - -- Test if the missile was fired within one of the CLEANUP.ZoneNames. - local CurrentLandingZoneID = 0 - CurrentLandingZoneID = routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) - if ( CurrentLandingZoneID ) then - -- Okay, the missile was fired within the CLEANUP.ZoneNames, destroy the fired weapon. - --_SEADmissile:destroy() - --routines.scheduleFunction( CLEANUP._DestroyMissile, { self, Event.Weapon }, timer.getTime() + 0.1) - SCHEDULER:New( self, CLEANUP._DestroyMissile, { Event.Weapon }, 0.1 ) - end -end - - ---- Detects if the Unit has an S_EVENT_HIT within the given ZoneNames. If this is the case, destroy the unit. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventHitCleanUp( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.IniDCSUnitName, ' = ', Event.IniDCSUnit:getLife(), "/", Event.IniDCSUnit:getLife0() } ) - if Event.IniDCSUnit:getLife() < Event.IniDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.IniDCSUnitName ) - --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.IniDCSUnit }, timer.getTime() + 0.1) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.IniDCSUnit }, 0.1 ) - end - end - end - - if Event.TgtDCSUnit then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.TgtDCSUnitName, ' = ', Event.TgtDCSUnit:getLife(), "/", Event.TgtDCSUnit:getLife0() } ) - if Event.TgtDCSUnit:getLife() < Event.TgtDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.TgtDCSUnitName ) - --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.TgtDCSUnit }, timer.getTime() + 0.1 ) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.TgtDCSUnit }, 0.1 ) - end - end - end -end - ---- Add the @{DCSUnit#Unit} to the CleanUpList for CleanUp. -function CLEANUP:_AddForCleanUp( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - self.CleanUpList[CleanUpUnitName] = {} - self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit - self.CleanUpList[CleanUpUnitName].CleanUpUnitName = CleanUpUnitName - self.CleanUpList[CleanUpUnitName].CleanUpGroup = Unit.getGroup(CleanUpUnit) - self.CleanUpList[CleanUpUnitName].CleanUpGroupName = Unit.getGroup(CleanUpUnit):getName() - self.CleanUpList[CleanUpUnitName].CleanUpTime = timer.getTime() - self.CleanUpList[CleanUpUnitName].CleanUpMoved = false - - self:T( { "CleanUp: Add to CleanUpList: ", Unit.getGroup(CleanUpUnit):getName(), CleanUpUnitName } ) - -end - ---- Detects if the Unit has an S_EVENT_ENGINE_SHUTDOWN or an S_EVENT_HIT within the given ZoneNames. If this is the case, add the Group to the CLEANUP List. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventAddForCleanUp( Event ) - - if Event.IniDCSUnit then - if self.CleanUpList[Event.IniDCSUnitName] == nil then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.IniDCSUnit, Event.IniDCSUnitName ) - end - end - end - - if Event.TgtDCSUnit then - if self.CleanUpList[Event.TgtDCSUnitName] == nil then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.TgtDCSUnit, Event.TgtDCSUnitName ) - end - end - end - -end - -local CleanUpSurfaceTypeText = { - "LAND", - "SHALLOW_WATER", - "WATER", - "ROAD", - "RUNWAY" - } - ---- At the defined time interval, CleanUp the Groups within the CleanUpList. --- @param #CLEANUP self -function CLEANUP:_CleanUpScheduler() - self:F( { "CleanUp Scheduler" } ) - - local CleanUpCount = 0 - for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do - CleanUpCount = CleanUpCount + 1 - - self:T( { CleanUpUnitName, UnitData } ) - local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName) - local CleanUpGroupName = UnitData.CleanUpGroupName - local CleanUpUnitName = UnitData.CleanUpUnitName - if CleanUpUnit then - self:T( { "CleanUp Scheduler", "Checking:", CleanUpUnitName } ) - if _DATABASE:GetStatusGroup( CleanUpGroupName ) ~= "ReSpawn" then - local CleanUpUnitVec3 = CleanUpUnit:getPoint() - --self:T( CleanUpUnitVec3 ) - local CleanUpUnitVec2 = {} - CleanUpUnitVec2.x = CleanUpUnitVec3.x - CleanUpUnitVec2.y = CleanUpUnitVec3.z - --self:T( CleanUpUnitVec2 ) - local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2) - --self:T( CleanUpSurfaceType ) - --MESSAGE:New( "Surface " .. CleanUpUnitName .. " = " .. CleanUpSurfaceTypeText[CleanUpSurfaceType], CleanUpUnitName, 10, CleanUpUnitName ):ToAll() - - if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then - if CleanUpSurfaceType == land.SurfaceType.RUNWAY then - if CleanUpUnit:inAir() then - local CleanUpLandHeight = land.getHeight(CleanUpUnitVec2) - local CleanUpUnitHeight = CleanUpUnitVec3.y - CleanUpLandHeight - self:T( { "CleanUp Scheduler", "Height = " .. CleanUpUnitHeight } ) - if CleanUpUnitHeight < 30 then - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because below safe height and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - else - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because on runway and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - end - -- Clean Units which are waiting for a very long time in the CleanUpZone. - if CleanUpUnit then - local CleanUpUnitVelocity = CleanUpUnit:getVelocity() - local CleanUpUnitVelocityTotal = math.abs(CleanUpUnitVelocity.x) + math.abs(CleanUpUnitVelocity.y) + math.abs(CleanUpUnitVelocity.z) - if CleanUpUnitVelocityTotal < 1 then - if UnitData.CleanUpMoved then - if UnitData.CleanUpTime + 180 <= timer.getTime() then - self:T( { "CleanUp Scheduler", "Destroy due to not moving anymore " .. CleanUpUnitName } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - else - UnitData.CleanUpTime = timer.getTime() - UnitData.CleanUpMoved = true - --MESSAGE:New( "Moved " .. CleanUpUnitName, CleanUpUnitName, 10, CleanUpUnitName ):ToAll() - end - end - - else - -- Do nothing ... - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - else - self:T( "CleanUp: Group " .. CleanUpUnitName .. " cannot be found in DCS RTE, removing ..." ) - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - end - self:T(CleanUpCount) - - return true -end - ---- Dynamic spawning of groups (and units). --- --- @{#SPAWN} class --- =============== --- The @{#SPAWN} class allows to spawn dynamically new groups, based on pre-defined initialization settings, modifying the behaviour when groups are spawned. --- For each group to be spawned, within the mission editor, a group has to be created with the "late activation flag" set. We call this group the *"Spawn Template"* of the SPAWN object. --- A reference to this Spawn Template needs to be provided when constructing the SPAWN object, by indicating the name of the group within the mission editor in the constructor methods. --- --- Within the SPAWN object, there is an internal index that keeps track of which group from the internal group list was spawned. --- When new groups get spawned by using the SPAWN functions (see below), it will be validated whether the Limits (@{#SPAWN.Limit}) of the SPAWN object are not reached. --- When all is valid, a new group will be created by the spawning methods, and the internal index will be increased with 1. --- --- Regarding the name of new spawned groups, a _SpawnPrefix_ will be assigned for each new group created. --- If you want to have the Spawn Template name to be used as the _SpawnPrefix_ name, use the @{#SPAWN.New} constructor. --- However, when the @{#SPAWN.NewWithAlias} constructor was used, the Alias name will define the _SpawnPrefix_ name. --- Groups will follow the following naming structure when spawned at run-time: --- --- 1. Spawned groups will have the name _SpawnPrefix_#ggg, where ggg is a counter from 0 to 999. --- 2. Spawned units will have the name _SpawnPrefix_#ggg-uu, where uu is a counter from 0 to 99 for each new spawned unit belonging to the group. --- --- Some additional notes that need to be remembered: --- --- * Templates are actually groups defined within the mission editor, with the flag "Late Activation" set. As such, these groups are never used within the mission, but are used by the @{#SPAWN} module. --- * It is important to defined BEFORE you spawn new groups, a proper initialization of the SPAWN instance is done with the options you want to use. --- * When designing a mission, NEVER name groups using a "#" within the name of the group Spawn Template(s), or the SPAWN module logic won't work anymore. --- --- SPAWN construction methods: --- =========================== --- Create a new SPAWN object with the @{#SPAWN.New} or the @{#SPAWN.NewWithAlias} methods: --- --- * @{#SPAWN.New}: Creates a new SPAWN object taking the name of the group that functions as the Template. --- --- It is important to understand how the SPAWN class works internally. The SPAWN object created will contain internally a list of groups that will be spawned and that are already spawned. --- The initialization functions will modify this list of groups so that when a group gets spawned, ALL information is already prepared when spawning. This is done for performance reasons. --- So in principle, the group list will contain all parameters and configurations after initialization, and when groups get actually spawned, this spawning can be done quickly and efficient. --- --- SPAWN initialization methods: --- ============================= --- A spawn object will behave differently based on the usage of initialization methods: --- --- * @{#SPAWN.Limit}: Limits the amount of groups that can be alive at the same time and that can be dynamically spawned. --- * @{#SPAWN.RandomizeRoute}: Randomize the routes of spawned groups. --- * @{#SPAWN.RandomizeTemplate}: Randomize the group templates so that when a new group is spawned, a random group template is selected from one of the templates defined. --- * @{#SPAWN.Uncontrolled}: Spawn plane groups uncontrolled. --- * @{#SPAWN.Array}: Make groups visible before they are actually activated, and order these groups like a batallion in an array. --- * @{#SPAWN.InitRepeat}: Re-spawn groups when they land at the home base. Similar functions are @{#SPAWN.InitRepeatOnLanding} and @{#SPAWN.InitRepeatOnEngineShutDown}. --- --- SPAWN spawning methods: --- ======================= --- Groups can be spawned at different times and methods: --- --- * @{#SPAWN.Spawn}: Spawn one new group based on the last spawned index. --- * @{#SPAWN.ReSpawn}: Re-spawn a group based on a given index. --- * @{#SPAWN.SpawnScheduled}: Spawn groups at scheduled but randomized intervals. You can use @{#SPAWN.SpawnScheduleStart} and @{#SPAWN.SpawnScheduleStop} to start and stop the schedule respectively. --- * @{#SPAWN.SpawnFromUnit}: Spawn a new group taking the position of a @{UNIT}. --- * @{#SPAWN.SpawnInZone}: Spawn a new group in a @{ZONE}. --- --- Note that @{#SPAWN.Spawn} and @{#SPAWN.ReSpawn} return a @{GROUP#GROUP.New} object, that contains a reference to the DCSGroup object. --- You can use the @{GROUP} object to do further actions with the DCSGroup. --- --- SPAWN object cleaning: --- ========================= --- Sometimes, it will occur during a mission run-time, that ground or especially air objects get damaged, and will while being damged stop their activities, while remaining alive. --- In such cases, the SPAWN object will just sit there and wait until that group gets destroyed, but most of the time it won't, --- and it may occur that no new groups are or can be spawned as limits are reached. --- To prevent this, a @{#SPAWN.CleanUp} initialization method has been defined that will silently monitor the status of each spawned group. --- Once a group has a velocity = 0, and has been waiting for a defined interval, that group will be cleaned or removed from run-time. --- There is a catch however :-) If a damaged group has returned to an airbase within the coalition, that group will not be considered as "lost"... --- In such a case, when the inactive group is cleaned, a new group will Re-spawned automatically. --- This models AI that has succesfully returned to their airbase, to restart their combat activities. --- Check the @{#SPAWN.CleanUp} for further info. --- --- ==== --- @module Spawn --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Group" ) -Include.File( "Zone" ) -Include.File( "Event" ) -Include.File( "Scheduler" ) - ---- SPAWN Class --- @type SPAWN --- @extends Base#BASE --- @field ClassName --- @field #string SpawnTemplatePrefix --- @field #string SpawnAliasPrefix -SPAWN = { - ClassName = "SPAWN", - SpawnTemplatePrefix = nil, - SpawnAliasPrefix = nil, -} - - - ---- Creates the main object to spawn a GROUP defined in the DCS ME. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. Each new group will have the name starting with SpawnTemplatePrefix. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ) --- @usage local Plane = SPAWN:New( "Plane" ) -- Creates a new local variable that can initiate new planes with the name "Plane#ddd" using the template "Plane" as defined within the ME. -function SPAWN:New( SpawnTemplatePrefix ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { SpawnTemplatePrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - return self -end - ---- Creates a new SPAWN instance to create new groups based on the defined template and using a new alias for each new group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. --- @param #string SpawnAliasPrefix is the name that will be given to the Group at runtime. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:NewWithAlias( 'BE KA-50@RAMP-Ground Defense', 'Helicopter Attacking a City' ) --- @usage local PlaneWithAlias = SPAWN:NewWithAlias( "Plane", "Bomber" ) -- Creates a new local variable that can instantiate new planes with the name "Bomber#ddd" using the template "Plane" as defined within the ME. -function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { SpawnTemplatePrefix, SpawnAliasPrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnAliasPrefix = SpawnAliasPrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - return self -end - - ---- Limits the Maximum amount of Units that can be alive at the same time, and the maximum amount of groups that can be spawned. --- Note that this method is exceptionally important to balance the performance of the mission. Depending on the machine etc, a mission can only process a maximum amount of units. --- If the time interval must be short, but there should not be more Units or Groups alive than a maximum amount of units, then this function should be used... --- When a @{#SPAWN.New} is executed and the limit of the amount of units alive is reached, then no new spawn will happen of the group, until some of these units of the spawn object will be destroyed. --- @param #SPAWN self --- @param #number SpawnMaxUnitsAlive The maximum amount of units that can be alive at runtime. --- @param #number SpawnMaxGroups The maximum amount of groups that can be spawned. When the limit is reached, then no more actual spawns will happen of the group. --- This parameter is useful to define a maximum amount of airplanes, ground troops, helicopters, ships etc within a supply area. --- This parameter accepts the value 0, which defines that there are no maximum group limits, but there are limits on the maximum of units that can be alive at the same time. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- This helicopter group consists of one Unit. So, this group will SPAWN maximum 2 groups simultaneously within the DCSRTE. --- -- There will be maximum 24 groups spawned during the whole mission lifetime. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Limit( 2, 24 ) -function SPAWN:Limit( SpawnMaxUnitsAlive, SpawnMaxGroups ) - self:F( { self.SpawnTemplatePrefix, SpawnMaxUnitsAlive, SpawnMaxGroups } ) - - self.SpawnMaxUnitsAlive = SpawnMaxUnitsAlive -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = SpawnMaxGroups -- The maximum amount of groups that can be spawned. - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_InitializeSpawnGroups( SpawnGroupID ) - end - - return self -end - - ---- Randomizes the defined route of the SpawnTemplatePrefix group in the ME. This is very useful to define extra variation of the behaviour of groups. --- @param #SPAWN self --- @param #number SpawnStartPoint is the waypoint where the randomization begins. --- Note that the StartPoint = 0 equaling the point where the group is spawned. --- @param #number SpawnEndPoint is the waypoint where the randomization ends counting backwards. --- This parameter is useful to avoid randomization to end at a waypoint earlier than the last waypoint on the route. --- @param #number SpawnRadius is the radius in meters in which the randomization of the new waypoints, with the original waypoint of the original template located in the middle ... --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). --- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. --- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):RandomizeRoute( 2, 2, 2000 ) -function SPAWN:RandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius ) - self:F( { self.SpawnTemplatePrefix, SpawnStartPoint, SpawnEndPoint, SpawnRadius } ) - - self.SpawnRandomizeRoute = true - self.SpawnRandomizeRouteStartPoint = SpawnStartPoint - self.SpawnRandomizeRouteEndPoint = SpawnEndPoint - self.SpawnRandomizeRouteRadius = SpawnRadius - - for GroupID = 1, self.SpawnMaxGroups do - self:_RandomizeRoute( GroupID ) - end - - return self -end - - ---- This function is rather complicated to understand. But I'll try to explain. --- This function becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, --- but they will all follow the same Template route and have the same prefix name. --- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefixTable A table with the names of the groups defined within the mission editor, from which one will be choosen when a new group will be spawned. --- @return #SPAWN --- @usage --- -- NATO Tank Platoons invading Gori. --- -- Choose between 13 different 'US Tank Platoon' configurations for each new SPAWN the Group to be spawned for the --- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SpawnTemplatePrefixes. --- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and --- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. --- Spawn_US_Platoon = { 'US Tank Platoon 1', 'US Tank Platoon 2', 'US Tank Platoon 3', 'US Tank Platoon 4', 'US Tank Platoon 5', --- 'US Tank Platoon 6', 'US Tank Platoon 7', 'US Tank Platoon 8', 'US Tank Platoon 9', 'US Tank Platoon 10', --- 'US Tank Platoon 11', 'US Tank Platoon 12', 'US Tank Platoon 13' } --- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) -function SPAWN:RandomizeTemplate( SpawnTemplatePrefixTable ) - self:F( { self.SpawnTemplatePrefix, SpawnTemplatePrefixTable } ) - - self.SpawnTemplatePrefixTable = SpawnTemplatePrefixTable - self.SpawnRandomizeTemplate = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_RandomizeTemplate( SpawnGroupID ) - end - - return self -end - - - - - ---- For planes and helicopters, when these groups go home and land on their home airbases and farps, they normally would taxi to the parking spot, shut-down their engines and wait forever until the Group is removed by the runtime environment. --- This function is used to re-spawn automatically (so no extra call is needed anymore) the same group after it has landed. --- This will enable a spawned group to be re-spawned after it lands, until it is destroyed... --- Note: When the group is respawned, it will re-spawn from the original airbase where it took off. --- So ensure that the routes for groups that respawn, always return to the original airbase, or players may get confused ... --- @param #SPAWN self --- @return #SPAWN self --- @usage --- -- RU Su-34 - AI Ship Attack --- -- Re-SPAWN the Group(s) after each landing and Engine Shut-Down automatically. --- SpawnRU_SU34 = SPAWN:New( 'TF1 RU Su-34 Krymsk@AI - Attack Ships' ):Schedule( 2, 3, 1800, 0.4 ):SpawnUncontrolled():RandomizeRoute( 1, 1, 3000 ):RepeatOnEngineShutDown() -function SPAWN:InitRepeat() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) - - self.Repeat = true - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - ---- Respawn group after landing. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnLanding() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - - ---- Respawn after landing when its engines have shut down. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnEngineShutDown() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = true - self.RepeatOnLanding = false - - return self -end - - ---- CleanUp groups when they are still alive, but inactive. --- When groups are still alive and have become inactive due to damage and are unable to contribute anything, then this group will be removed at defined intervals in seconds. --- @param #SPAWN self --- @param #string SpawnCleanUpInterval The interval to check for inactive groups within seconds. --- @return #SPAWN self --- @usage Spawn_Helicopter:CleanUp( 20 ) -- CleanUp the spawning of the helicopters every 20 seconds when they become inactive. -function SPAWN:CleanUp( SpawnCleanUpInterval ) - self:F( { self.SpawnTemplatePrefix, SpawnCleanUpInterval } ) - - self.SpawnCleanUpInterval = SpawnCleanUpInterval - self.SpawnCleanUpTimeStamps = {} - --self.CleanUpFunction = routines.scheduleFunction( self._SpawnCleanUpScheduler, { self }, timer.getTime() + 1, SpawnCleanUpInterval ) - self.CleanUpScheduler = SCHEDULER:New( self, self._SpawnCleanUpScheduler, {}, 1, SpawnCleanUpInterval, 0.2 ) - return self -end - - - ---- Makes the groups visible before start (like a batallion). --- The method will take the position of the group as the first position in the array. --- @param #SPAWN self --- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned. --- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis. --- @param #number SpawnDeltaX The space between each Group on the X-axis. --- @param #number SpawnDeltaY The space between each Group on the Y-axis. --- @return #SPAWN self --- @usage --- -- Define an array of Groups. --- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):Limit( 2, 24 ):Visible( 90, "Diamond", 10, 100, 50 ) -function SPAWN:Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) - self:F( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } ) - - self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start. - - local SpawnX = 0 - local SpawnY = 0 - local SpawnXIndex = 0 - local SpawnYIndex = 0 - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:T( { SpawnX, SpawnY, SpawnXIndex, SpawnYIndex } ) - - self.SpawnGroups[SpawnGroupID].Visible = true - self.SpawnGroups[SpawnGroupID].Spawned = false - - SpawnXIndex = SpawnXIndex + 1 - if SpawnWidth and SpawnWidth ~= 0 then - if SpawnXIndex >= SpawnWidth then - SpawnXIndex = 0 - SpawnYIndex = SpawnYIndex + 1 - end - end - - local SpawnRootX = self.SpawnGroups[SpawnGroupID].SpawnTemplate.x - local SpawnRootY = self.SpawnGroups[SpawnGroupID].SpawnTemplate.y - - self:_TranslateRotate( SpawnGroupID, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - - self.SpawnGroups[SpawnGroupID].SpawnTemplate.lateActivation = true - self.SpawnGroups[SpawnGroupID].SpawnTemplate.visible = true - - self.SpawnGroups[SpawnGroupID].Visible = true - - _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnBirth, self ) - _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) - - if self.Repeat then - _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnTakeOff, self ) - _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnLand, self ) - end - if self.RepeatOnEngineShutDown then - _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnEngineShutDown, self ) - end - - self.SpawnGroups[SpawnGroupID].Group = _DATABASE:Spawn( self.SpawnGroups[SpawnGroupID].SpawnTemplate ) - - SpawnX = SpawnXIndex * SpawnDeltaX - SpawnY = SpawnYIndex * SpawnDeltaY - end - - return self -end - - - ---- Will spawn a group based on the internal index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:Spawn() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) - - return self:SpawnWithIndex( self.SpawnIndex + 1 ) -end - ---- Will re-spawn a group based on a given index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @param #string SpawnIndex The index of the group to be spawned. --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:ReSpawn( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - --- TODO: This logic makes DCS crash and i don't know why (yet). - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup then - local SpawnDCSGroup = SpawnGroup:GetDCSGroup() - if SpawnDCSGroup then - SpawnGroup:Destroy() - end - end - - return self:SpawnWithIndex( SpawnIndex ) -end - ---- Will spawn a group with a specified index number. --- Uses @{DATABASE} global object defined in MOOSE. --- @param #SPAWN self --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:SpawnWithIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } ) - - if self:_GetSpawnIndex( SpawnIndex ) then - - if self.SpawnGroups[self.SpawnIndex].Visible then - self.SpawnGroups[self.SpawnIndex].Group:Activate() - else - self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self ) - _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) - - if self.Repeat then - _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnTakeOff, self ) - _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnLand, self ) - end - if self.RepeatOnEngineShutDown then - _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self ) - end - - self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - - self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - - -- If there is a SpawnFunction hook defined, call it. - if self.SpawnFunctionHook then - self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) - end - -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. - --if self.Repeat then - -- _DATABASE:SetStatusGroup( SpawnTemplate.name, "ReSpawn" ) - --end - end - - self.SpawnGroups[self.SpawnIndex].Spawned = true - return self.SpawnGroups[self.SpawnIndex].Group - else - --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) - end - - return nil -end - ---- Spawns new groups at varying time intervals. --- This is useful if you want to have continuity within your missions of certain (AI) groups to be present (alive) within your missions. --- @param #SPAWN self --- @param #number SpawnTime The time interval defined in seconds between each new spawn of new groups. --- @param #number SpawnTimeVariation The variation to be applied on the defined time interval between each new spawn. --- The variation is a number between 0 and 1, representing the %-tage of variation to be applied on the time interval. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The time interval is set to SPAWN new helicopters between each 600 seconds, with a time variation of 50%. --- -- The time variation in this case will be between 450 seconds and 750 seconds. --- -- This is calculated as follows: --- -- Low limit: 600 * ( 1 - 0.5 / 2 ) = 450 --- -- High limit: 600 * ( 1 + 0.5 / 2 ) = 750 --- -- Between these two values, a random amount of seconds will be choosen for each new spawn of the helicopters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 ) -function SPAWN:SpawnScheduled( SpawnTime, SpawnTimeVariation ) - self:F( { SpawnTime, SpawnTimeVariation } ) - - if SpawnTime ~= nil and SpawnTimeVariation ~= nil then - self.SpawnScheduler = SCHEDULER:New( self, self._Scheduler, {}, 1, SpawnTime, SpawnTimeVariation ) - end - - return self -end - ---- Will re-start the spawning scheduler. --- Note: This function is only required to be called when the schedule was stopped. -function SPAWN:SpawnScheduleStart() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Start() -end - ---- Will stop the scheduled spawning scheduler. -function SPAWN:SpawnScheduleStop() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Stop() -end - - ---- Allows to place a CallFunction hook when a new group spawns. --- The provided function will be called when a new group is spawned, including its given parameters. --- The first parameter of the SpawnFunction is the @{Group#GROUP} that was spawned. --- @param #SPAWN self --- @param #function SpawnFunctionHook The function to be called when a group spawns. --- @param SpawnFunctionArguments A random amount of arguments to be provided to the function when the group spawns. --- @return #SPAWN -function SPAWN:SpawnFunction( SpawnFunctionHook, ... ) - self:F( SpawnFunction ) - - self.SpawnFunctionHook = SpawnFunctionHook - self.SpawnFunctionArguments = {} - if arg then - self.SpawnFunctionArguments = arg - end - - return self -end - - - - ---- Will spawn a group from a hosting unit. This function is mostly advisable to be used if you want to simulate spawning from air units, like helicopters, which are dropping infantry into a defined Landing Zone. --- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Unit#UNIT HostUnit The air or ground unit dropping or unloading the group. --- @param #number OuterRadius The outer radius in meters where the new group will be spawned. --- @param #number InnerRadius The inner radius in meters where the new group will NOT be spawned. --- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. --- @return Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromUnit( HostUnit, OuterRadius, InnerRadius, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, HostUnit, OuterRadius, InnerRadius, SpawnIndex } ) - - if HostUnit and HostUnit:IsAlive() then -- and HostUnit:getUnit(1):inAir() == false then - - if SpawnIndex then - else - SpawnIndex = self.SpawnIndex + 1 - end - - if self:_GetSpawnIndex( SpawnIndex ) then - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - - if SpawnTemplate then - - local UnitPoint = HostUnit:GetPointVec2() - - self:T( { "Current point of ", self.SpawnTemplatePrefix, UnitPoint } ) - - --for PointID, Point in pairs( SpawnTemplate.route.points ) do - --Point.x = UnitPoint.x - --Point.y = UnitPoint.y - --Point.alt = nil - --Point.alt_type = nil - --end - - SpawnTemplate.route.points[1].x = UnitPoint.x - SpawnTemplate.route.points[1].y = UnitPoint.y - - if not InnerRadius then - InnerRadius = 10 - end - - if not OuterRadius then - OuterRadius = 50 - end - - -- Apply SpawnFormation - for UnitID = 1, #SpawnTemplate.units do - if InnerRadius == 0 then - SpawnTemplate.units[UnitID].x = UnitPoint.x - SpawnTemplate.units[UnitID].y = UnitPoint.y - else - local CirclePos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) - SpawnTemplate.units[UnitID].x = CirclePos.x - SpawnTemplate.units[UnitID].y = CirclePos.y - end - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - - local SpawnPos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) - local Point = {} - Point.type = "Turning Point" - Point.x = SpawnPos.x - Point.y = SpawnPos.y - Point.action = "Cone" - Point.speed = 5 - - table.insert( SpawnTemplate.route.points, 2, Point ) - - return self:SpawnWithIndex( self.SpawnIndex ) - end - end - end - - return nil -end - ---- Will spawn a Group within a given @{Zone#ZONE}. --- Once the group is spawned within the zone, it will continue on its route. --- The first waypoint (where the group is spawned) is replaced with the zone coordinates. --- @param #SPAWN self --- @param Zone#ZONE Zone The zone where the group is to be spawned. --- @param #number ZoneRandomize (Optional) Set to true if you want to randomize the starting point in the zone. --- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. --- @return Group#GROUP that was spawned. --- @return #nil when nothing was spawned. -function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, Zone, ZoneRandomize, SpawnIndex } ) - - if Zone then - - if SpawnIndex then - else - SpawnIndex = self.SpawnIndex + 1 - end - - if self:_GetSpawnIndex( SpawnIndex ) then - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - - if SpawnTemplate then - - local ZonePoint - - if ZoneRandomize == true then - ZonePoint = Zone:GetRandomPointVec2() - else - ZonePoint = Zone:GetPointVec2() - end - - SpawnTemplate.route.points[1].x = ZonePoint.x - SpawnTemplate.route.points[1].y = ZonePoint.y - - -- Apply SpawnFormation - for UnitID = 1, #SpawnTemplate.units do - local ZonePointUnit = Zone:GetRandomPointVec2() - SpawnTemplate.units[UnitID].x = ZonePointUnit.x - SpawnTemplate.units[UnitID].y = ZonePointUnit.y - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - - return self:SpawnWithIndex( self.SpawnIndex ) - end - end - end - - return nil -end - - - - ---- Will spawn a plane group in uncontrolled mode... --- This will be similar to the uncontrolled flag setting in the ME. --- @return #SPAWN self -function SPAWN:UnControlled() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnUnControlled = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self.SpawnGroups[SpawnGroupID].UnControlled = true - end - - return self -end - - - ---- Will return the SpawnGroupName either with with a specific count number or without any count. --- @param #SPAWN self --- @param #number SpawnIndex Is the number of the Group that is to be spawned. --- @return #string SpawnGroupName -function SPAWN:SpawnGroupName( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - local SpawnPrefix = self.SpawnTemplatePrefix - if self.SpawnAliasPrefix then - SpawnPrefix = self.SpawnAliasPrefix - end - - if SpawnIndex then - local SpawnName = string.format( '%s#%03d', SpawnPrefix, SpawnIndex ) - self:T( SpawnName ) - return SpawnName - else - self:T( SpawnPrefix ) - return SpawnPrefix - end - -end - ---- Find the first alive group. --- @param #SPAWN self --- @param #number SpawnCursor A number holding the index from where to find the first group from. --- @return Group#GROUP, #number The group found, the new index where the group was found. --- @return #nil, #nil When no group is found, #nil is returned. -function SPAWN:GetFirstAliveGroup( SpawnCursor ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) - - for SpawnIndex = 1, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - SpawnCursor = SpawnIndex - return SpawnGroup, SpawnCursor - end - end - - return nil, nil -end - - ---- Find the next alive group. --- @param #SPAWN self --- @param #number SpawnCursor A number holding the last found previous index. --- @return Group#GROUP, #number The group found, the new index where the group was found. --- @return #nil, #nil When no group is found, #nil is returned. -function SPAWN:GetNextAliveGroup( SpawnCursor ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) - - SpawnCursor = SpawnCursor + 1 - for SpawnIndex = SpawnCursor, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - SpawnCursor = SpawnIndex - return SpawnGroup, SpawnCursor - end - end - - return nil, nil -end - ---- Find the last alive group during runtime. -function SPAWN:GetLastAliveGroup() - self:F( { self.SpawnTemplatePrefixself.SpawnAliasPrefix } ) - - self.SpawnIndex = self:_GetLastIndex() - for SpawnIndex = self.SpawnIndex, 1, -1 do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - self.SpawnIndex = SpawnIndex - return SpawnGroup - end - end - - self.SpawnIndex = nil - return nil -end - - - ---- Get the group from an index. --- Returns the group from the SpawnGroups list. --- If no index is given, it will return the first group in the list. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to return. --- @return Group#GROUP -function SPAWN:GetGroupFromIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - - if self.SpawnGroups and self.SpawnGroups[SpawnIndex] then - local SpawnGroup = self.SpawnGroups[SpawnIndex].Group - return SpawnGroup - else - return nil - end -end - ---- Get the group index from a DCSUnit. --- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit. --- It will return nil of no prefix was found. --- @param #SPAWN self --- @param DCSUnit The DCS unit to be searched. --- @return #string The prefix --- @return #nil Nothing found -function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit and DCSUnit:getName() then - local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 ) - self:T( IndexString ) - - if IndexString then - local Index = tonumber( IndexString ) - self:T( { "Index:", IndexString, Index } ) - return Index - end - end - - return nil -end - ---- Return the prefix of a DCSUnit. --- The method will search for a #-mark, and will return the text before the #-mark. --- It will return nil of no prefix was found. --- @param #SPAWN self --- @param DCSUnit The DCS unit to be searched. --- @return #string The prefix --- @return #nil Nothing found -function SPAWN:_GetPrefixFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit and DCSUnit:getName() then - local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" ) - if SpawnPrefix then - SpawnPrefix = SpawnPrefix:sub( 1, -2 ) - end - self:T( SpawnPrefix ) - return SpawnPrefix - end - - return nil -end - ---- Return the group within the SpawnGroups collection with input a DCSUnit. -function SPAWN:_GetGroupFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit then - local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit ) - - if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then - local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit ) - local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group - self:T( SpawnGroup ) - return SpawnGroup - end - end - - return nil -end - - ---- Get the index from a given group. --- The function will search the name of the group for a #, and will return the number behind the #-mark. -function SPAWN:GetSpawnIndexFromGroup( SpawnGroup ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) - - local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 ) - local Index = tonumber( IndexString ) - - self:T( IndexString, Index ) - return Index - -end - ---- Return the last maximum index that can be used. -function SPAWN:_GetLastIndex() - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - return self.SpawnMaxGroups -end - ---- Initalize the SpawnGroups collection. -function SPAWN:_InitializeSpawnGroups( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not self.SpawnGroups[SpawnIndex] then - self.SpawnGroups[SpawnIndex] = {} - self.SpawnGroups[SpawnIndex].Visible = false - self.SpawnGroups[SpawnIndex].Spawned = false - self.SpawnGroups[SpawnIndex].UnControlled = false - self.SpawnGroups[SpawnIndex].SpawnTime = 0 - - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefix - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - end - - self:_RandomizeTemplate( SpawnIndex ) - self:_RandomizeRoute( SpawnIndex ) - --self:_TranslateRotate( SpawnIndex ) - - return self.SpawnGroups[SpawnIndex] -end - - - ---- Gets the CategoryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCategoryID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCategory() - else - return nil - end -end - ---- Gets the CoalitionID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCoalitionID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCoalition() - else - return nil - end -end - ---- Gets the CountryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCountryID( SpawnPrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnPrefix } ) - - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - local TemplateUnits = TemplateGroup:getUnits() - return TemplateUnits[1]:getCountry() - else - return nil - end -end - ---- Gets the Group Template from the ME environment definition. --- This method used the @{DATABASE} object, which contains ALL initial and new spawned object in MOOSE. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @return @SPAWN self -function SPAWN:_GetTemplate( SpawnTemplatePrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnTemplatePrefix } ) - - local SpawnTemplate = nil - - SpawnTemplate = routines.utils.deepCopy( _DATABASE.Templates.Groups[SpawnTemplatePrefix].Template ) - - if SpawnTemplate == nil then - error( 'No Template returned for SpawnTemplatePrefix = ' .. SpawnTemplatePrefix ) - end - - SpawnTemplate.SpawnCoalitionID = self:_GetGroupCoalitionID( SpawnTemplatePrefix ) - SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix ) - SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix ) - - self:T( { SpawnTemplate } ) - return SpawnTemplate -end - ---- Prepares the new Group Template. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - local SpawnTemplate = self:_GetTemplate( SpawnTemplatePrefix ) - SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) - - SpawnTemplate.groupId = nil - SpawnTemplate.lateActivation = false - - if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then - self:T( "For ground units, visible needs to be false..." ) - SpawnTemplate.visible = false - end - - if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then - SpawnTemplate.uncontrolled = false - end - - for UnitID = 1, #SpawnTemplate.units do - SpawnTemplate.units[UnitID].name = string.format( SpawnTemplate.name .. '-%02d', UnitID ) - SpawnTemplate.units[UnitID].unitId = nil - SpawnTemplate.units[UnitID].x = SpawnTemplate.route.points[1].x - SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y - end - - self:T( { "Template:", SpawnTemplate } ) - return SpawnTemplate - -end - ---- Private method randomizing the routes. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to be spawned. --- @return #SPAWN -function SPAWN:_RandomizeRoute( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeRoute, self.SpawnRandomizeRouteStartPoint, self.SpawnRandomizeRouteEndPoint, self.SpawnRandomizeRouteRadius } ) - - if self.SpawnRandomizeRoute then - local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate - local RouteCount = #SpawnTemplate.route.points - - for t = self.SpawnRandomizeRouteStartPoint + 1, ( RouteCount - self.SpawnRandomizeRouteEndPoint ) do - SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - SpawnTemplate.route.points[t].y = SpawnTemplate.route.points[t].y + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - -- TODO: manage altitude for airborne units ... - SpawnTemplate.route.points[t].alt = nil - --SpawnGroup.route.points[t].alt_type = nil - self:T( 'SpawnTemplate.route.points[' .. t .. '].x = ' .. SpawnTemplate.route.points[t].x .. ', SpawnTemplate.route.points[' .. t .. '].y = ' .. SpawnTemplate.route.points[t].y ) - end - end - - return self -end - ---- Private method that randomizes the template of the group. --- @param #SPAWN self --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_RandomizeTemplate( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - if self.SpawnRandomizeTemplate then - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y - self.SpawnGroups[SpawnIndex].SpawnTemplate.start_time = self.SpawnTemplate.start_time - for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading - end - end - - self:_RandomizeRoute( SpawnIndex ) - - return self -end - -function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle } ) - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - - -- Rotate - -- From Wikipedia: https://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations - -- x' = x \cos \theta - y \sin \theta\ - -- y' = x \sin \theta + y \cos \theta\ - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = SpawnRootY + RotatedY - - - local SpawnUnitCount = table.getn( self.SpawnGroups[SpawnIndex].SpawnTemplate.units ) - for u = 1, SpawnUnitCount do - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - 10 * ( u - 1 ) - - -- Rotate - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle ) - end - - return self -end - ---- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces. -function SPAWN:_GetSpawnIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) - - - if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then - if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then - if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then - self.SpawnCount = self.SpawnCount + 1 - SpawnIndex = self.SpawnCount - end - self.SpawnIndex = SpawnIndex - if not self.SpawnGroups[self.SpawnIndex] then - self:_InitializeSpawnGroups( self.SpawnIndex ) - end - else - return nil - end - else - return nil - end - - return self.SpawnIndex -end - - --- TODO Need to delete this... _DATABASE does this now ... -function SPAWN:_OnBirth( event ) - - if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line - if event.initiator and event.initiator:getName() then - local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self:T( { "Birth event: " .. event.initiator:getName(), event } ) - --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event') - self.AliveUnits = self.AliveUnits + 1 - self:T( "Alive Units: " .. self.AliveUnits ) - end - end - end - -end - ---- Obscolete --- @todo Need to delete this... _DATABASE does this now ... -function SPAWN:_OnDeadOrCrash( event ) - self:F( self.SpawnTemplatePrefix, event ) - - if event.initiator and event.initiator:getName() then - local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self:T( { "Dead event: " .. event.initiator:getName(), event } ) --- local DestroyedUnit = Unit.getByName( EventPrefix ) --- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then - --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event') - self.AliveUnits = self.AliveUnits - 1 - self:T( "Alive Units: " .. self.AliveUnits ) --- end - end - end -end - ---- Will detect AIR Units taking off... When the event takes place, the spawned Group is registered as airborne... --- This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. --- @todo Need to test for AIR Groups only... -function SPAWN:_OnTakeOff( event ) - self:F( self.SpawnTemplatePrefix, event ) - - if event.initiator and event.initiator:getName() then - local SpawnGroup = self:_GetGroupFromDCSUnit( event.initiator ) - if SpawnGroup then - self:T( { "TakeOff event: " .. event.initiator:getName(), event } ) - self:T( "self.Landed = false" ) - self.Landed = false - end - end -end - ---- Will detect AIR Units landing... When the event takes place, the spawned Group is registered as landed. --- This is needed to ensure that Re-SPAWNing is only done for landed AIR Groups. --- @todo Need to test for AIR Groups only... -function SPAWN:_OnLand( event ) - self:F( self.SpawnTemplatePrefix, event ) - - local SpawnUnit = event.initiator - if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then - local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) - if SpawnGroup then - self:T( { "Landed event:" .. SpawnUnit:getName(), event } ) - self.Landed = true - self:T( "self.Landed = true" ) - if self.Landed and self.RepeatOnLanding then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "Landed:", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- Will detect AIR Units shutting down their engines ... --- When the event takes place, and the method @{RepeatOnEngineShutDown} was called, the spawned Group will Re-SPAWN. --- But only when the Unit was registered to have landed. --- @param #SPAWN self --- @see _OnTakeOff --- @see _OnLand --- @todo Need to test for AIR Groups only... -function SPAWN:_OnEngineShutDown( event ) - self:F( self.SpawnTemplatePrefix, event ) - - local SpawnUnit = event.initiator - if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then - local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) - if SpawnGroup then - self:T( { "EngineShutDown event: " .. SpawnUnit:getName(), event } ) - if self.Landed and self.RepeatOnEngineShutDown then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "EngineShutDown: ", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- This function is called automatically by the Spawning scheduler. --- It is the internal worker method SPAWNing new Groups on the defined time intervals. -function SPAWN:_Scheduler() - self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } ) - - -- Validate if there are still groups left in the batch... - self:Spawn() - - return true -end - -function SPAWN:_SpawnCleanUpScheduler() - self:F( { "CleanUp Scheduler:", self.SpawnTemplatePrefix } ) - - local SpawnCursor - local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup( SpawnCursor ) - - self:T( { "CleanUp Scheduler:", SpawnGroup } ) - - while SpawnGroup do - - if SpawnGroup:AllOnGround() and SpawnGroup:GetMaxVelocity() < 1 then - if not self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] then - self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = timer.getTime() - else - if self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] + self.SpawnCleanUpInterval < timer.getTime() then - self:T( { "CleanUp Scheduler:", "Cleaning:", SpawnGroup } ) - SpawnGroup:Destroy() - end - end - else - self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = nil - end - - SpawnGroup, SpawnCursor = self:GetNextAliveGroup( SpawnCursor ) - - self:T( { "CleanUp Scheduler:", SpawnGroup } ) - - end - - return true -- Repeat - -end ---- Limit the simultaneous movement of Groups within a running Mission. --- This module is defined to improve the performance in missions, and to bring additional realism for GROUND vehicles. --- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if --- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units --- on defined intervals (currently every minute). --- @module MOVEMENT - -Include.File( "Routines" ) - ---- the MOVEMENT class --- @type -MOVEMENT = { - ClassName = "MOVEMENT", -} - ---- Creates the main object which is handling the GROUND forces movement. --- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object. --- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute. --- @return MOVEMENT --- @usage --- -- Limit the amount of simultaneous moving units on the ground to prevent lag. --- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 ) - -function MOVEMENT:New( MovePrefixes, MoveMaximum ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { MovePrefixes, MoveMaximum } ) - - if type( MovePrefixes ) == 'table' then - self.MovePrefixes = MovePrefixes - else - self.MovePrefixes = { MovePrefixes } - end - self.MoveCount = 0 -- The internal counter of the amount of Moveing the has happened since MoveStart. - self.MoveMaximum = MoveMaximum -- Contains the Maximum amount of units that are allowed to move... - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.MoveUnits = {} -- Reflects if the Moving for this MovePrefixes is going to be scheduled or not. - - _EVENTDISPATCHER:OnBirth( self.OnBirth, self ) - --- self:AddEvent( world.event.S_EVENT_BIRTH, self.OnBirth ) --- --- self:EnableEvents() - - self:ScheduleStart() - - return self -end - ---- Call this function to start the MOVEMENT scheduling. -function MOVEMENT:ScheduleStart() - self:F() - --self.MoveFunction = routines.scheduleFunction( self._Scheduler, { self }, timer.getTime() + 1, 120 ) - self.MoveFunction = SCHEDULER:New( self, self._Scheduler, {}, 1, 120 ) -end - ---- Call this function to stop the MOVEMENT scheduling. --- @todo need to implement it ... Forgot. -function MOVEMENT:ScheduleStop() - self:F() - -end - ---- Captures the birth events when new Units were spawned. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. -function MOVEMENT:OnBirth( Event ) - self:F( { Event } ) - - if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line - if Event.IniDCSUnit then - self:T( "Birth object : " .. Event.IniDCSUnitName ) - if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits + 1 - self.MoveUnits[Event.IniDCSUnitName] = Event.IniDCSGroupName - self:T( self.AliveUnits ) - end - end - end - end - _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) - end - -end - ---- Captures the Dead or Crash events when Units crash or are destroyed. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. -function MOVEMENT:OnDeadOrCrash( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - self:T( "Dead object : " .. Event.IniDCSUnitName ) - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits - 1 - self.MoveUnits[Event.IniDCSUnitName] = nil - self:T( self.AliveUnits ) - end - end - end -end - ---- This function is called automatically by the MOVEMENT scheduler. A new function is scheduled when MoveScheduled is true. -function MOVEMENT:_Scheduler() - self:F( { self.MovePrefixes, self.MoveMaximum, self.AliveUnits, self.MovementGroups } ) - - if self.AliveUnits > 0 then - local MoveProbability = ( self.MoveMaximum * 100 ) / self.AliveUnits - self:T( 'Move Probability = ' .. MoveProbability ) - - for MovementUnitName, MovementGroupName in pairs( self.MoveUnits ) do - local MovementGroup = Group.getByName( MovementGroupName ) - if MovementGroup and MovementGroup:isExist() then - local MoveOrStop = math.random( 1, 100 ) - self:T( 'MoveOrStop = ' .. MoveOrStop ) - if MoveOrStop <= MoveProbability then - self:T( 'Group continues moving = ' .. MovementGroupName ) - trigger.action.groupContinueMoving( MovementGroup ) - else - self:T( 'Group stops moving = ' .. MovementGroupName ) - trigger.action.groupStopMoving( MovementGroup ) - end - else - self.MoveUnits[MovementUnitName] = nil - end - end - end - return true -end ---- Provides defensive behaviour to a set of SAM sites within a running Mission. --- @module Sead --- @author to be searched on the forum --- @author (co) Flightcontrol (Modified and enriched with functionality) - -Include.File( "Routines" ) -Include.File( "Event" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The SEAD class --- @type SEAD --- @extends Base#BASE -SEAD = { - ClassName = "SEAD", - TargetSkill = { - Average = { Evade = 50, DelayOff = { 10, 25 }, DelayOn = { 10, 30 } } , - Good = { Evade = 30, DelayOff = { 8, 20 }, DelayOn = { 20, 40 } } , - High = { Evade = 15, DelayOff = { 5, 17 }, DelayOn = { 30, 50 } } , - Excellent = { Evade = 10, DelayOff = { 3, 10 }, DelayOn = { 30, 60 } } - }, - SEADGroupPrefixes = {} -} - ---- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles. --- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions... --- Chances are big that the missile will miss. --- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken. --- @return SEAD --- @usage --- -- CCCP SEAD Defenses --- -- Defends the Russian SA installations from SEAD attacks. --- SEAD_RU_SAM_Defenses = SEAD:New( { 'RU SA-6 Kub', 'RU SA-6 Defenses', 'RU MI-26 Troops', 'RU Attack Gori' } ) -function SEAD:New( SEADGroupPrefixes ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( SEADGroupPrefixes ) - if type( SEADGroupPrefixes ) == 'table' then - for SEADGroupPrefixID, SEADGroupPrefix in pairs( SEADGroupPrefixes ) do - self.SEADGroupPrefixes[SEADGroupPrefix] = SEADGroupPrefix - end - else - self.SEADGroupNames[SEADGroupPrefixes] = SEADGroupPrefixes - end - _EVENTDISPATCHER:OnShot( self.EventShot, self ) - - return self -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @see SEAD -function SEAD:EventShot( Event ) - self:F( { Event } ) - - local SEADUnit = Event.IniDCSUnit - local SEADUnitName = Event.IniDCSUnitName - local SEADWeapon = Event.Weapon -- Identify the weapon fired - local SEADWeaponName = Event.WeaponName -- return weapon type - --trigger.action.outText( string.format("Alerte, depart missile " ..string.format(SEADWeaponName)), 20) --debug message - -- Start of the 2nd loop - self:T( "Missile Launched = " .. SEADWeaponName ) - if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD - local _evade = math.random (1,100) -- random number for chance of evading action - local _targetMim = Event.Weapon:getTarget() -- Identify target - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimgroupName = _targetMimgroup:getName() - local _targetMimcont= _targetMimgroup:getController() - local _targetskill = _DATABASE.Templates.Units[_targetMimname].Template.skill - self:T( self.SEADGroupPrefixes ) - self:T( _targetMimgroupName ) - local SEADGroupFound = false - for SEADGroupPrefixID, SEADGroupPrefix in pairs( self.SEADGroupPrefixes ) do - if string.find( _targetMimgroupName, SEADGroupPrefix, 1, true ) then - SEADGroupFound = true - self:T( 'Group Found' ) - break - end - end - if SEADGroupFound == true then - if _targetskill == "Random" then -- when skill is random, choose a skill - local Skills = { "Average", "Good", "High", "Excellent" } - _targetskill = Skills[ math.random(1,4) ] - end - self:T( _targetskill ) -- debug message for skill check - if self.TargetSkill[_targetskill] then - if (_evade > self.TargetSkill[_targetskill].Evade) then - self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) --debug message - local _targetMim = Weapon.getTarget(SEADWeapon) - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimcont= _targetMimgroup:getController() - routines.groupRandomDistSelf(_targetMimgroup,300,'Diamond',250,20) -- move randomly - local SuppressedGroups1 = {} -- unit suppressed radar off for a random time - local function SuppressionEnd1(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - SuppressedGroups1[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay1 = math.random(self.TargetSkill[_targetskill].DelayOff[1], self.TargetSkill[_targetskill].DelayOff[2]) - if SuppressedGroups1[id.groupName] == nil then - SuppressedGroups1[id.groupName] = { - SuppressionEndTime1 = timer.getTime() + delay1, - SuppressionEndN1 = SuppressionEndCounter1 --Store instance of SuppressionEnd() scheduled function - } - Controller.setOption(_targetMimcont, AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - timer.scheduleFunction(SuppressionEnd1, id, SuppressedGroups1[id.groupName].SuppressionEndTime1) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar Off " ..string.format(delay1)), 20) - end - - local SuppressedGroups = {} - local function SuppressionEnd(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.RED) - SuppressedGroups[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay = math.random(self.TargetSkill[_targetskill].DelayOn[1], self.TargetSkill[_targetskill].DelayOn[2]) - if SuppressedGroups[id.groupName] == nil then - SuppressedGroups[id.groupName] = { - SuppressionEndTime = timer.getTime() + delay, - SuppressionEndN = SuppressionEndCounter --Store instance of SuppressionEnd() scheduled function - } - timer.scheduleFunction(SuppressionEnd, id, SuppressedGroups[id.groupName].SuppressionEndTime) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar On " ..string.format(delay)), 20) - end - end - end - end - end -end ---- Taking the lead of AI escorting your flight. --- --- @{#ESCORT} class --- ================ --- The @{#ESCORT} class allows you to interact with escorting AI on your flight and take the lead. --- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10). --- --- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes. --- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts. --- --- RADIO MENUs that can be created: --- ================================ --- Find a summary below of the current available commands: --- --- Navigation ...: --- --------------- --- Escort group navigation functions: --- --- * **"Join-Up and Follow at x meters":** The escort group fill follow you at about x meters, and they will follow you. --- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color. --- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops. --- --- Hold position ...: --- ------------------ --- Escort group navigation functions: --- --- * **"At current location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- * **"At client location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- --- Report targets ...: --- ------------------- --- Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below). --- --- * **"Report now":** Will report the current detected targets. --- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list. --- * **"Report targets off":** Will stop detecting targets. --- --- Scan targets ...: --- ----------------- --- Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task. --- --- * **"Scan targets 30 seconds":** Scan 30 seconds for targets. --- * **"Scan targets 60 seconds":** Scan 60 seconds for targets. --- --- Attack targets ...: --- ------------------- --- This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed. --- --- Request assistance from ...: --- ---------------------------- --- This menu item will list all detected targets within a 15km range, as with the menu item **Attack Targets**. --- This menu item allows to request attack support from other escorts supporting the current client group. --- eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles. --- eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area. --- --- ROE ...: --- -------- --- Sets the Rules of Engagement (ROE) of the escort group when in flight. --- --- * **"Hold Fire":** The escort group will hold fire. --- * **"Return Fire":** The escort group will return fire. --- * **"Open Fire":** The escort group will open fire on designated targets. --- * **"Weapon Free":** The escort group will engage with any target. --- --- Evasion ...: --- ------------ --- Will define the evasion techniques that the escort group will perform during flight or combat. --- --- * **"Fight until death":** The escort group will have no reaction to threats. --- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed. --- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing. --- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres. --- --- Resume Mission ...: --- ------------------- --- Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. --- Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission. --- --- ESCORT construction methods. --- ============================ --- Create a new SPAWN object with the @{#ESCORT.New} method: --- --- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text. --- --- ESCORT initialization methods. --- ============================== --- The following menus are created within the RADIO MENU of an active unit hosted by a player: --- --- * @{#ESCORT.MenuFollowAt}: Creates a menu to make the escort follow the client. --- * @{#ESCORT.MenuHoldAtEscortPosition}: Creates a menu to hold the escort at its current position. --- * @{#ESCORT.MenuHoldAtLeaderPosition}: Creates a menu to hold the escort at the client position. --- * @{#ESCORT.MenuScanForTargets}: Creates a menu so that the escort scans targets. --- * @{#ESCORT.MenuFlare}: Creates a menu to disperse flares. --- * @{#ESCORT.MenuSmoke}: Creates a menu to disparse smoke. --- * @{#ESCORT.MenuReportTargets}: Creates a menu so that the escort reports targets. --- * @{#ESCORT.MenuReportPosition}: Creates a menu so that the escort reports its current position from bullseye. --- * @{#ESCORT.MenuAssistedAttack: Creates a menu so that the escort supportes assisted attack from other escorts with the client. --- * @{#ESCORT.MenuROE: Creates a menu structure to set the rules of engagement of the escort. --- * @{#ESCORT.MenuEvasion: Creates a menu structure to set the evasion techniques when the escort is under threat. --- * @{#ESCORT.MenuResumeMission}: Creates a menu structure so that the escort can resume from a waypoint. --- --- @module Escort --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Group" ) -Include.File( "Zone" ) - ---- --- @type ESCORT --- @extends Base#BASE --- @field Client#CLIENT EscortClient --- @field Group#GROUP EscortGroup --- @field #string EscortName --- @field #ESCORT.MODE EscortMode The mode the escort is in. --- @field #number FollowScheduler The id of the _FollowScheduler function. --- @field #boolean ReportTargets If true, nearby targets are reported. --- @Field DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. --- @field DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. --- @field Menu#MENU_CLIENT EscortMenuResumeMission -ESCORT = { - ClassName = "ESCORT", - EscortName = nil, -- The Escort Name - EscortClient = nil, - EscortGroup = nil, - EscortMode = nil, - MODE = { - FOLLOW = 1, - MISSION = 2, - }, - Targets = {}, -- The identified targets - FollowScheduler = nil, - ReportTargets = true, - OptionROE = AI.Option.Air.val.ROE.OPEN_FIRE, - OptionReactionOnThreat = AI.Option.Air.val.REACTION_ON_THREAT.ALLOW_ABORT_MISSION, - TaskPoints = {} -} - ---- ESCORT.Mode class --- @type ESCORT.MODE --- @field #number FOLLOW --- @field #number MISSION - ---- MENUPARAM type --- @type MENUPARAM --- @field #ESCORT ParamSelf --- @field #Distance ParamDistance --- @field #function ParamFunction --- @field #string ParamMessage - ---- ESCORT class constructor for an AI group --- @param #ESCORT self --- @param Client#CLIENT EscortClient The client escorted by the EscortGroup. --- @param Group#GROUP EscortGroup The group AI escorting the EscortClient. --- @param #string EscortName Name of the escort. --- @return #ESCORT self -function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { EscortClient, EscortGroup, EscortName } ) - - self.EscortClient = EscortClient -- Client#CLIENT - self.EscortGroup = EscortGroup -- Group#GROUP - self.EscortName = EscortName - self.EscortBriefing = EscortBriefing - - self:T( EscortGroup:GetClassNameAndID() ) - - -- Set EscortGroup known at EscortClient. - if not self.EscortClient._EscortGroups then - self.EscortClient._EscortGroups = {} - end - - if not self.EscortClient._EscortGroups[EscortGroup:GetName()] then - self.EscortClient._EscortGroups[EscortGroup:GetName()] = {} - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortGroup = self.EscortGroup - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortName = self.EscortName - self.EscortClient._EscortGroups[EscortGroup:GetName()].Targets = {} - self.EscortMode = ESCORT.MODE.FOLLOW - end - - - self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) - - self.EscortGroup:WayPointInitialize(1) - - self.EscortGroup:OptionROTVertical() - self.EscortGroup:OptionROEOpenFire() - - EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " .. - "We're escorting your flight. " .. - "Use the Radio Menu and F10 and use the options under + " .. EscortName .. "\n", - 60, EscortClient - ) - - return self -end - - ---- Defines the default menus --- @param #ESCORT self --- @return #ESCORT -function ESCORT:Menus() - self:F() - - self:MenuFollowAt( 100 ) - self:MenuFollowAt( 200 ) - self:MenuFollowAt( 300 ) - self:MenuFollowAt( 400 ) - - self:MenuScanForTargets( 100, 60 ) - - self:MenuHoldAtEscortPosition( 30 ) - self:MenuHoldAtLeaderPosition( 30 ) - - self:MenuFlare() - self:MenuSmoke() - - self:MenuReportTargets( 60 ) - self:MenuAssistedAttack() - self:MenuROE() - self:MenuEvasion() - self:MenuResumeMission() - - return self -end - - - ---- Defines a menu slot to let the escort Join and Follow you at a certain distance. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param DCSTypes#Distance Distance The distance in meters that the escort needs to follow the client. --- @return #ESCORT -function ESCORT:MenuFollowAt( Distance ) - self:F(Distance) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - if not self.EscortMenuJoinUpAndFollow then - self.EscortMenuJoinUpAndFollow = {} - end - - self.EscortMenuJoinUpAndFollow[#self.EscortMenuJoinUpAndFollow+1] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at " .. Distance, self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = Distance } ) - - self.EscortMode = ESCORT.MODE.FOLLOW - end - - return self -end - ---- Defines a menu slot to let the escort hold at their current position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Hold position**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Hold at %d meter", Height ) - else - MenuText = string.format( "Hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldPosition then - self.EscortMenuHoldPosition = {} - end - - self.EscortMenuHoldPosition[#self.EscortMenuHoldPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortGroup, - ParamHeight = Height, - ParamSeconds = Seconds - } - ) - end - - return self -end - - ---- Defines a menu slot to let the escort hold at the client position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtLeaderPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Rejoin and hold at %d meter", Height ) - else - MenuText = string.format( "Rejoin and hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldAtLeaderPosition then - self.EscortMenuHoldAtLeaderPosition = {} - end - - self.EscortMenuHoldAtLeaderPosition[#self.EscortMenuHoldAtLeaderPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortClient, - ParamHeight = Height, - ParamSeconds = Seconds - } - ) - end - - return self -end - ---- Defines a menu slot to let the escort scan for targets at a certain height for a certain time in seconds. --- This menu will appear under **Scan targets**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuScan then - self.EscortMenuScan = MENU_CLIENT:New( self.EscortClient, "Scan for targets", self.EscortMenu ) - end - - if not Height then - Height = 100 - end - - if not Seconds then - Seconds = 30 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "At %d meter", Height ) - else - MenuText = string.format( "At %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuScanForTargets then - self.EscortMenuScanForTargets = {} - end - - self.EscortMenuScanForTargets[#self.EscortMenuScanForTargets+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuScan, - ESCORT._ScanTargets, - { ParamSelf = self, - ParamScanDuration = 30 - } - ) - end - - return self -end - - - ---- Defines a menu slot to let the escort disperse a flare in a certain color. --- This menu will appear under **Navigation**. --- The flare will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuFlare( MenuTextFormat ) - self:F() - - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Flare" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuFlare then - self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, MenuText, self.EscortMenuReportNavigation, ESCORT._Flare, { ParamSelf = self } ) - self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Green, ParamMessage = "Released a green flare!" } ) - self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Red, ParamMessage = "Released a red flare!" } ) - self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } ) - self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } ) - end - - return self -end - ---- Defines a menu slot to let the escort disperse a smoke in a certain color. --- This menu will appear under **Navigation**. --- Note that smoke menu options will only be displayed for ships and ground units. Not for air units. --- The smoke will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuSmoke( MenuTextFormat ) - self:F() - - if not self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Smoke" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuSmoke then - self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } ) - self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } ) - self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } ) - self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } ) - self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } ) - self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } ) - end - end - - return self -end - ---- Defines a menu slot to let the escort report their current detected targets with a specified time interval in seconds. --- This menu will appear under **Report targets**. --- Note that if a report targets menu is not specified, no targets will be detected by the escort, and the attack and assisted attack menus will not be displayed. --- @param #ESCORT self --- @param DCSTypes#Time Seconds Optional parameter that lets the escort report their current detected targets after specified time interval in seconds. The default time is 30 seconds. --- @return #ESCORT -function ESCORT:MenuReportTargets( Seconds ) - self:F( { Seconds } ) - - if not self.EscortMenuReportNearbyTargets then - self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) - end - - if not Seconds then - Seconds = 30 - end - - -- Report Targets - self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now!", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, { ParamSelf = self } ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = true } ) - self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = false, } ) - - -- Attack Targets - self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) - - - --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, Seconds ) - self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, Seconds ) - - return self -end - ---- Defines a menu slot to let the escort attack its detected targets using assisted attack from another escort joined also with the client. --- This menu will appear under **Request assistance from**. --- Note that this method needs to be preceded with the method MenuReportTargets. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuAssistedAttack() - self:F() - - -- Request assistance from other escorts. - -- This is very useful to let f.e. an escorting ship attack a target detected by an escorting plane... - self.EscortMenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, "Request assistance from", self.EscortMenu ) - - return self -end - ---- Defines a menu to let the escort set its rules of engagement. --- All rules of engagement will appear under the menu **ROE**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuROE( MenuTextFormat ) - self:F( MenuTextFormat ) - - if not self.EscortMenuROE then - -- Rules of Engagement - self.EscortMenuROE = MENU_CLIENT:New( self.EscortClient, "ROE", self.EscortMenu ) - if self.EscortGroup:OptionROEHoldFirePossible() then - self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEHoldFire(), ParamMessage = "Holding weapons!" } ) - end - if self.EscortGroup:OptionROEReturnFirePossible() then - self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEReturnFire(), ParamMessage = "Returning fire!" } ) - end - if self.EscortGroup:OptionROEOpenFirePossible() then - self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEOpenFire(), ParamMessage = "Opening fire on designated targets!!" } ) - end - if self.EscortGroup:OptionROEWeaponFreePossible() then - self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEWeaponFree(), ParamMessage = "Opening fire on targets of opportunity!" } ) - end - end - - return self -end - - ---- Defines a menu to let the escort set its evasion when under threat. --- All rules of engagement will appear under the menu **Evasion**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuEvasion( MenuTextFormat ) - self:F( MenuTextFormat ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuEvasion then - -- Reaction to Threats - self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) - if self.EscortGroup:OptionROTNoReactionPossible() then - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTNoReaction(), ParamMessage = "Fighting until death!" } ) - end - if self.EscortGroup:OptionROTPassiveDefensePossible() then - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTPassiveDefense(), ParamMessage = "Defending using jammers, chaff and flares!" } ) - end - if self.EscortGroup:OptionROTEvadeFirePossible() then - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTEvadeFire(), ParamMessage = "Evading on enemy fire!" } ) - end - if self.EscortGroup:OptionROTVerticalPossible() then - self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTVertical(), ParamMessage = "Evading on enemy fire with vertical manoeuvres!" } ) - end - end - end - - return self -end - ---- Defines a menu to let the escort resume its mission from a waypoint on its route. --- All rules of engagement will appear under the menu **Resume mission from**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuResumeMission() - self:F() - - if not self.EscortMenuResumeMission then - -- Mission Resume Menu Root - self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume mission from", self.EscortMenu ) - end - - return self -end - - ---- @param #MENUPARAM MenuParam -function ESCORT._HoldPosition( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local OrbitGroup = MenuParam.ParamOrbitGroup -- Group#GROUP - local OrbitUnit = OrbitGroup:GetUnit(1) -- Unit#UNIT - local OrbitHeight = MenuParam.ParamHeight - local OrbitSeconds = MenuParam.ParamSeconds -- Not implemented yet - - routines.removeFunction( self.FollowScheduler ) - - local PointFrom = {} - local GroupPoint = EscortGroup:GetUnit(1):GetPointVec3() - PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.z - PointFrom.speed = 250 - PointFrom.type = AI.Task.WaypointType.TURNING_POINT - PointFrom.alt = GroupPoint.y - PointFrom.alt_type = AI.Task.AltitudeType.BARO - - local OrbitPoint = OrbitUnit:GetPointVec2() - local PointTo = {} - PointTo.x = OrbitPoint.x - PointTo.y = OrbitPoint.y - PointTo.speed = 250 - PointTo.type = AI.Task.WaypointType.TURNING_POINT - PointTo.alt = OrbitHeight - PointTo.alt_type = AI.Task.AltitudeType.BARO - PointTo.task = EscortGroup:TaskOrbitCircleAtVec2( OrbitPoint, OrbitHeight, 0 ) - - local Points = { PointFrom, PointTo } - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - EscortGroup:SetTask( EscortGroup:TaskRoute( Points ) ) - EscortGroup:MessageToClient( "Orbiting at location.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._JoinUpAndFollow( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.Distance = MenuParam.ParamDistance - - self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) -end - ---- JoinsUp and Follows a CLIENT. --- @param Escort#ESCORT self --- @param Group#GROUP EscortGroup --- @param Client#CLIENT EscortClient --- @param DCSTypes#Distance Distance -function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) - self:F( { EscortGroup, EscortClient, Distance } ) - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - self.EscortMode = ESCORT.MODE.FOLLOW - - self.CT1 = 0 - self.GT1 = 0 - --self.FollowScheduler = routines.scheduleFunction( self._FollowScheduler, { self, Distance }, timer.getTime() + 1, .5 ) - self.FollowScheduler = SCHEDULER:New( self, self._FollowScheduler, { Distance }, 1, .5, .1 ) - EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._Flare( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - - EscortGroup:GetUnit(1):Flare( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._Smoke( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - - EscortGroup:GetUnit(1):Smoke( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - - ---- @param #MENUPARAM MenuParam -function ESCORT._ReportNearbyTargetsNow( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self:_ReportTargetsScheduler() - -end - -function ESCORT._SwitchReportNearbyTargets( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.ReportTargets = MenuParam.ParamReportTargets - - if self.ReportTargets then - if not self.ReportTargetsScheduler then - --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) - self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, 30 ) - end - else - routines.removeFunction( self.ReportTargetsScheduler ) - self.ReportTargetsScheduler = nil - end -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ScanTargets( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local ScanDuration = MenuParam.ParamScanDuration - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - self:T( { "FollowScheduler after removefunction: ", self.FollowScheduler } ) - - if EscortGroup:IsHelicopter() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 200, 20 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) - elseif EscortGroup:IsAirPlane() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 1000, 500 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) - end - - EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) - - if self.EscortMode == ESCORT.MODE.FOLLOW then - --self.FollowScheduler = routines.scheduleFunction( self._FollowScheduler, { self, Distance }, timer.getTime() + ScanDuration, 1 ) - self.FollowScheduler:Start() - end - -end - -function _Resume( EscortGroup ) - env.info( '_Resume' ) - - local Escort = EscortGroup.Escort -- #ESCORT - env.info( "EscortMode = " .. Escort.EscortMode ) - if Escort.EscortMode == ESCORT.MODE.FOLLOW then - Escort:JoinUpAndFollow( EscortGroup, Escort.EscortClient, Escort.Distance ) - end - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._AttackTarget( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - self:T( AttackUnit ) - - if EscortGroup:IsAir() then - EscortGroup:OptionROEOpenFire() - EscortGroup:OptionROTPassiveDefense() - EscortGroup.Escort = self -- Need to do this trick to get the reference for the escort in the _Resume function. --- routines.scheduleFunction( --- EscortGroup.PushTask, --- { EscortGroup, --- EscortGroup:TaskCombo( --- { EscortGroup:TaskAttackUnit( AttackUnit ), --- EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskAttackUnit( AttackUnit ), - EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) - } - ) - }, 10 - ) - else --- routines.scheduleFunction( --- EscortGroup.PushTask, --- { EscortGroup, --- EscortGroup:TaskCombo( --- { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) - } - ) - }, 10 - ) - end - EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) - - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._AssistTarget( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - local EscortGroupAttack = MenuParam.ParamEscortGroup - local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - - self:T( AttackUnit ) - - if EscortGroupAttack:IsAir() then - EscortGroupAttack:OptionROEOpenFire() - EscortGroupAttack:OptionROTVertical() --- routines.scheduleFunction( --- EscortGroupAttack.PushTask, --- { EscortGroupAttack, --- EscortGroupAttack:TaskCombo( --- { EscortGroupAttack:TaskAttackUnit( AttackUnit ), --- EscortGroupAttack:TaskOrbitCircle( 500, 350 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskAttackUnit( AttackUnit ), - EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - } - ) - }, 10 - ) - else --- routines.scheduleFunction( --- EscortGroupAttack.PushTask, --- { EscortGroupAttack, --- EscortGroupAttack:TaskCombo( --- { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) - } - ) - }, 10 - ) - end - EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ROE( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local EscortROEFunction = MenuParam.ParamFunction - local EscortROEMessage = MenuParam.ParamMessage - - pcall( function() EscortROEFunction() end ) - EscortGroup:MessageToClient( EscortROEMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ROT( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local EscortROTFunction = MenuParam.ParamFunction - local EscortROTMessage = MenuParam.ParamMessage - - pcall( function() EscortROTFunction() end ) - EscortGroup:MessageToClient( EscortROTMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ResumeMission( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local WayPoint = MenuParam.ParamWayPoint - - routines.removeFunction( self.FollowScheduler ) - self.FollowScheduler = nil - - local WayPoints = EscortGroup:GetTaskRoute() - self:T( WayPoint, WayPoints ) - - for WayPointIgnore = 1, WayPoint do - table.remove( WayPoints, 1 ) - end - - --routines.scheduleFunction( EscortGroup.SetTask, {EscortGroup, EscortGroup:TaskRoute( WayPoints ) }, timer.getTime() + 1 ) - SCHEDULER:New( EscortGroup, EscortGroup.SetTask, { EscortGroup:TaskRoute( WayPoints ) }, 1 ) - - EscortGroup:MessageToClient( "Resuming mission from waypoint " .. WayPoint .. ".", 10, EscortClient ) -end - ---- Registers the waypoints --- @param #ESCORT self --- @return #table -function ESCORT:RegisterRoute() - self:F() - - local EscortGroup = self.EscortGroup -- Group#GROUP - - local TaskPoints = EscortGroup:GetTaskRoute() - - self:T( TaskPoints ) - - return TaskPoints -end - ---- @param Escort#ESCORT self -function ESCORT:_FollowScheduler( FollowDistance ) - self:F( { FollowDistance }) - - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - - local ClientUnit = self.EscortClient:GetClientGroupUnit() - local GroupUnit = self.EscortGroup:GetUnit( 1 ) - - if self.CT1 == 0 and self.GT1 == 0 then - self.CV1 = ClientUnit:GetPointVec3() - self.CT1 = timer.getTime() - self.GV1 = GroupUnit:GetPointVec3() - self.GT1 = timer.getTime() - else - local CT1 = self.CT1 - local CT2 = timer.getTime() - local CV1 = self.CV1 - local CV2 = ClientUnit:GetPointVec3() - self.CT1 = CT2 - self.CV1 = CV2 - - local CD = ( ( CV2.x - CV1.x )^2 + ( CV2.y - CV1.y )^2 + ( CV2.z - CV1.z )^2 ) ^ 0.5 - local CT = CT2 - CT1 - - local CS = ( 3600 / CT ) * ( CD / 1000 ) - - self:T2( { "Client:", CS, CD, CT, CV2, CV1, CT2, CT1 } ) - - local GT1 = self.GT1 - local GT2 = timer.getTime() - local GV1 = self.GV1 - local GV2 = GroupUnit:GetPointVec3() - self.GT1 = GT2 - self.GV1 = GV2 - - local GD = ( ( GV2.x - GV1.x )^2 + ( GV2.y - GV1.y )^2 + ( GV2.z - GV1.z )^2 ) ^ 0.5 - local GT = GT2 - GT1 - - local GS = ( 3600 / GT ) * ( GD / 1000 ) - - self:T2( { "Group:", GS, GD, GT, GV2, GV1, GT2, GT1 } ) - - -- Calculate the group direction vector - local GV = { x = GV2.x - CV2.x, y = GV2.y - CV2.y, z = GV2.z - CV2.z } - - -- Calculate GH2, GH2 with the same height as CV2. - local GH2 = { x = GV2.x, y = CV2.y, z = GV2.z } - - -- Calculate the angle of GV to the orthonormal plane - local alpha = math.atan2( GV.z, GV.x ) - - -- Now we calculate the intersecting vector between the circle around CV2 with radius FollowDistance and GH2. - -- From the GeoGebra model: CVI = (x(CV2) + FollowDistance cos(alpha), y(GH2) + FollowDistance sin(alpha), z(CV2)) - local CVI = { x = CV2.x + FollowDistance * math.cos(alpha), - y = GH2.y, - z = CV2.z + FollowDistance * math.sin(alpha), - } - - -- Calculate the direction vector DV of the escort group. We use CVI as the base and CV2 as the direction. - local DV = { x = CV2.x - CVI.x, y = CV2.y - CVI.y, z = CV2.z - CVI.z } - - -- We now calculate the unary direction vector DVu, so that we can multiply DVu with the speed, which is expressed in meters / s. - -- We need to calculate this vector to predict the point the escort group needs to fly to according its speed. - -- The distance of the destination point should be far enough not to have the aircraft starting to swipe left to right... - local DVu = { x = DV.x / FollowDistance, y = DV.y / FollowDistance, z = DV.z / FollowDistance } - - -- Now we can calculate the group destination vector GDV. - local GDV = { x = DVu.x * CS * 8 + CVI.x, y = CVI.y, z = DVu.z * CS * 8 + CVI.z } - - --trigger.action.smoke( GDV, trigger.smokeColor.Red ) - self:T2( { "CV2:", CV2 } ) - self:T2( { "CVI:", CVI } ) - self:T2( { "GDV:", GDV } ) - - -- Measure distance between client and group - local CatchUpDistance = ( ( GDV.x - GV2.x )^2 + ( GDV.y - GV2.y )^2 + ( GDV.z - GV2.z )^2 ) ^ 0.5 - - -- The calculation of the Speed would simulate that the group would take 30 seconds to overcome - -- the requested Distance). - local Time = 10 - local CatchUpSpeed = ( CatchUpDistance - ( CS * 8.4 ) ) / Time - - local Speed = CS + CatchUpSpeed - if Speed < 0 then - Speed = 0 - end - - self:T( { "Client Speed, Escort Speed, Speed, FlyDistance, Time:", CS, GS, Speed, Distance, Time } ) - - -- Now route the escort to the desired point with the desired speed. - self.EscortGroup:TaskRouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) - end - return true - end - - return false -end - - ---- Report Targets Scheduler. --- @param #ESCORT self -function ESCORT:_ReportTargetsScheduler() - self:F( self.EscortGroup:GetName() ) - - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - local EscortGroupName = self.EscortGroup:GetName() - local EscortTargets = self.EscortGroup:GetDetectedTargets() - - local ClientEscortTargets = self.EscortClient._EscortGroups[EscortGroupName].Targets - - local EscortTargetMessages = "" - for EscortTargetID, EscortTarget in pairs( EscortTargets ) do - local EscortObject = EscortTarget.object - self:T( EscortObject ) - if EscortObject and EscortObject:isExist() and EscortObject.id_ < 50000000 then - - local EscortTargetUnit = UNIT:Find( EscortObject ) - local EscortTargetUnitName = EscortTargetUnit:GetName() - - - - -- local EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity - -- = self.EscortGroup:IsTargetDetected( EscortObject ) - -- - -- self:T( { EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity } ) - - - local EscortTargetUnitPositionVec3 = EscortTargetUnit:GetPointVec3() - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + - ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + - ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), EscortTargetUnit:GetName(), Distance, EscortTarget } ) - - if Distance <= 15 then - - if not ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = {} - end - ClientEscortTargets[EscortTargetUnitName].AttackUnit = EscortTargetUnit - ClientEscortTargets[EscortTargetUnitName].visible = EscortTarget.visible - ClientEscortTargets[EscortTargetUnitName].type = EscortTarget.type - ClientEscortTargets[EscortTargetUnitName].distance = EscortTarget.distance - else - if ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = nil - end - end - end - end - - self:T( { "Sorting Targets Table:", ClientEscortTargets } ) - table.sort( ClientEscortTargets, function( a, b ) return a.Distance < b.Distance end ) - self:T( { "Sorted Targets Table:", ClientEscortTargets } ) - - -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. - self.EscortMenuAttackNearbyTargets:RemoveSubMenus() - - if self.EscortMenuTargetAssistance then - self.EscortMenuTargetAssistance:RemoveSubMenus() - end - - --for MenuIndex = 1, #self.EscortMenuAttackTargets do - -- self:T( { "Remove Menu:", self.EscortMenuAttackTargets[MenuIndex] } ) - -- self.EscortMenuAttackTargets[MenuIndex] = self.EscortMenuAttackTargets[MenuIndex]:Remove() - --end - - - if ClientEscortTargets then - for ClientEscortTargetUnitName, ClientEscortTargetData in pairs( ClientEscortTargets ) do - - for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do - - if ClientEscortTargetData and ClientEscortTargetData.AttackUnit:IsAlive() then - - local EscortTargetMessage = "" - local EscortTargetCategoryName = ClientEscortTargetData.AttackUnit:GetCategoryName() - local EscortTargetCategoryType = ClientEscortTargetData.AttackUnit:GetTypeName() - if ClientEscortTargetData.type then - EscortTargetMessage = EscortTargetMessage .. EscortTargetCategoryName .. " (" .. EscortTargetCategoryType .. ") at " - else - EscortTargetMessage = EscortTargetMessage .. "Unknown target at " - end - - local EscortTargetUnitPositionVec3 = ClientEscortTargetData.AttackUnit:GetPointVec3() - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + - ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + - ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), ClientEscortTargetData.AttackUnit:GetName(), Distance, ClientEscortTargetData.AttackUnit } ) - if ClientEscortTargetData.visible == false then - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " estimated km" - else - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " km" - end - - if ClientEscortTargetData.visible then - EscortTargetMessage = EscortTargetMessage .. ", visual" - end - - if ClientEscortGroupName == EscortGroupName then - - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - self.EscortMenuAttackNearbyTargets, - ESCORT._AttackTarget, - { ParamSelf = self, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - EscortTargetMessages = EscortTargetMessages .. "\n - " .. EscortTargetMessage - else - if self.EscortMenuTargetAssistance then - local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - MenuTargetAssistance, - ESCORT._AssistTarget, - { ParamSelf = self, - ParamEscortGroup = EscortGroupData.EscortGroup, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - end - end - else - ClientEscortTargetData = nil - end - end - end - - if EscortTargetMessages ~= "" and self.ReportTargets == true then - self.EscortGroup:MessageToClient( "Detected targets within 15 km range:" .. EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) - else - self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) - end - end - - if self.EscortMenuResumeMission then - self.EscortMenuResumeMission:RemoveSubMenus() - - -- if self.EscortMenuResumeWayPoints then - -- for MenuIndex = 1, #self.EscortMenuResumeWayPoints do - -- self:T( { "Remove Menu:", self.EscortMenuResumeWayPoints[MenuIndex] } ) - -- self.EscortMenuResumeWayPoints[MenuIndex] = self.EscortMenuResumeWayPoints[MenuIndex]:Remove() - -- end - -- end - - local TaskPoints = self:RegisterRoute() - for WayPointID, WayPoint in pairs( TaskPoints ) do - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( WayPoint.x - EscortPositionVec3.x )^2 + - ( WayPoint.y - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - MENU_CLIENT_COMMAND:New( self.EscortClient, "Waypoint " .. WayPointID .. " at " .. string.format( "%.2f", Distance ).. "km", self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) - end - end - return true - end - - return false -end ---- Provides missile training functions. --- --- @{#MISSILETRAINER} class --- ======================== --- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, --- the class will destroy the missile within a certain range, to avoid damage to your aircraft. --- It suports the following functionality: --- --- * Track the missiles fired at you and other players, providing bearing and range information of the missiles towards the airplanes. --- * Provide alerts of missile launches, including detailed information of the units launching, including bearing, range … --- * Provide alerts when a missile would have killed your aircraft. --- * Provide alerts when the missile self destructs. --- * Enable / Disable and Configure the Missile Trainer using the various menu options. --- --- When running a mission where MISSILETRAINER is used, the following radio menu structure ( 'Radio Menu' -> 'Other (F10)' -> 'MissileTrainer' ) options are available for the players: --- --- * **Messages**: Menu to configure all messages. --- * **Messages On**: Show all messages. --- * **Messages Off**: Disable all messages. --- * **Tracking**: Menu to configure missile tracking messages. --- * **To All**: Shows missile tracking messages to all players. --- * **To Target**: Shows missile tracking messages only to the player where the missile is targetted at. --- * **Tracking On**: Show missile tracking messages. --- * **Tracking Off**: Disable missile tracking messages. --- * **Frequency Increase**: Increases the missile tracking message frequency with one second. --- * **Frequency Decrease**: Decreases the missile tracking message frequency with one second. --- * **Alerts**: Menu to configure alert messages. --- * **To All**: Shows alert messages to all players. --- * **To Target**: Shows alert messages only to the player where the missile is (was) targetted at. --- * **Hits On**: Show missile hit alert messages. --- * **Hits Off**: Disable missile hit alert messages. --- * **Launches On**: Show missile launch messages. --- * **Launches Off**: Disable missile launch messages. --- * **Details**: Menu to configure message details. --- * **Range On**: Shows range information when a missile is fired to a target. --- * **Range Off**: Disable range information when a missile is fired to a target. --- * **Bearing On**: Shows bearing information when a missile is fired to a target. --- * **Bearing Off**: Disable bearing information when a missile is fired to a target. --- * **Distance**: Menu to configure the distance when a missile needs to be destroyed when near to a player, during tracking. This will improve/influence hit calculation accuracy, but has the risk of damaging the aircraft when the missile reaches the aircraft before the distance is measured. --- * **50 meter**: Destroys the missile when the distance to the aircraft is below or equal to 50 meter. --- * **100 meter**: Destroys the missile when the distance to the aircraft is below or equal to 100 meter. --- * **150 meter**: Destroys the missile when the distance to the aircraft is below or equal to 150 meter. --- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. --- --- --- MISSILETRAINER construction methods: --- ==================================== --- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: --- --- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. --- --- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. --- --- MISSILETRAINER initialization methods: --- ====================================== --- A MISSILETRAINER object will behave differently based on the usage of initialization methods: --- --- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingToAll}: Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- * @{#MISSILETRAINER.InitTrackingOnOff}: Sets by default the display of missile tracking report to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingFrequency}: Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- * @{#MISSILETRAINER.InitAlertsToAll}: Sets by default the display of alerts to be shown to all players or only to you. --- * @{#MISSILETRAINER.InitAlertsHitsOnOff}: Sets by default the display of hit alerts ON or OFF. --- * @{#MISSILETRAINER.InitAlertsLaunchesOnOff}: Sets by default the display of launch alerts ON or OFF. --- * @{#MISSILETRAINER.InitRangeOnOff}: Sets by default the display of range information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. --- --- @module MissileTrainer --- @author FlightControl - - -Include.File( "Client" ) -Include.File( "Scheduler" ) - ---- The MISSILETRAINER class --- @type MISSILETRAINER --- @extends Base#BASE -MISSILETRAINER = { - ClassName = "MISSILETRAINER", -} - ---- Creates the main object which is handling missile tracking. --- When a missile is fired a SCHEDULER is set off that follows the missile. When near a certain a client player, the missile will be destroyed. --- @param #MISSILETRAINER self --- @param #number Distance The distance in meters when a tracked missile needs to be destroyed when close to a player. --- @param #string Briefing (Optional) Will show a text to the players when starting their mission. Can be used for briefing purposes. --- @return #MISSILETRAINER -function MISSILETRAINER:New( Distance, Briefing ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( Distance ) - - if Briefing then - self.Briefing = Briefing - end - - self.Schedulers = {} - self.SchedulerID = 0 - - self.MessageInterval = 2 - self.MessageLastTime = timer.getTime() - - self.Distance = Distance / 1000 - - _EVENTDISPATCHER:OnShot( self._EventShot, self ) - - self.DB = DATABASE:New():FilterStart() - self.DBClients = self.DB.Clients - self.DBUnits = self.DB.Units - - for ClientID, Client in pairs( self.DBClients ) do - - local function _Alive( Client ) - - if self.Briefing then - Client:Message( self.Briefing, 15, "HELLO WORLD", "Trainer" ) - end - - if self.MenusOnOff == true then - Client:Message( "Use the 'Radio Menu' -> 'Other (F10)' -> 'Missile Trainer' menu options to change the Missile Trainer settings (for all players).", 15, "MENU", "Trainer" ) - - Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil ) -- Menu#MENU_CLIENT - - Client.MenuMessages = MENU_CLIENT:New( Client, "Messages", Client.MainMenu ) - Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = true } ) - Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = false } ) - - Client.MenuTracking = MENU_CLIENT:New( Client, "Tracking", Client.MainMenu ) - Client.MenuTrackingToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = true } ) - Client.MenuTrackingToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = false } ) - Client.MenuTrackOn = MENU_CLIENT_COMMAND:New( Client, "Tracking On", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = true } ) - Client.MenuTrackOff = MENU_CLIENT_COMMAND:New( Client, "Tracking Off", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = false } ) - Client.MenuTrackIncrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Increase", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = -1 } ) - Client.MenuTrackDecrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Decrease", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = 1 } ) - - Client.MenuAlerts = MENU_CLIENT:New( Client, "Alerts", Client.MainMenu ) - Client.MenuAlertsToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = true } ) - Client.MenuAlertsToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = false } ) - Client.MenuHitsOn = MENU_CLIENT_COMMAND:New( Client, "Hits On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = true } ) - Client.MenuHitsOff = MENU_CLIENT_COMMAND:New( Client, "Hits Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = false } ) - Client.MenuLaunchesOn = MENU_CLIENT_COMMAND:New( Client, "Launches On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = true } ) - Client.MenuLaunchesOff = MENU_CLIENT_COMMAND:New( Client, "Launches Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = false } ) - - Client.MenuDetails = MENU_CLIENT:New( Client, "Details", Client.MainMenu ) - Client.MenuDetailsDistanceOn = MENU_CLIENT_COMMAND:New( Client, "Range On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = true } ) - Client.MenuDetailsDistanceOff = MENU_CLIENT_COMMAND:New( Client, "Range Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = false } ) - Client.MenuDetailsBearingOn = MENU_CLIENT_COMMAND:New( Client, "Bearing On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = true } ) - Client.MenuDetailsBearingOff = MENU_CLIENT_COMMAND:New( Client, "Bearing Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = false } ) - - Client.MenuDistance = MENU_CLIENT:New( Client, "Set distance to plane", Client.MainMenu ) - Client.MenuDistance50 = MENU_CLIENT_COMMAND:New( Client, "50 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 50 / 1000 } ) - Client.MenuDistance100 = MENU_CLIENT_COMMAND:New( Client, "100 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 100 / 1000 } ) - Client.MenuDistance150 = MENU_CLIENT_COMMAND:New( Client, "150 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 150 / 1000 } ) - Client.MenuDistance200 = MENU_CLIENT_COMMAND:New( Client, "200 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 200 / 1000 } ) - else - if Client.MainMenu then - Client.MainMenu:Remove() - end - end - - - local ClientID = Client:GetID() - self:T( ClientID ) - if not self.TrackingMissiles[ClientID] then - self.TrackingMissiles[ClientID] = {} - end - self.TrackingMissiles[ClientID].Client = Client - if not self.TrackingMissiles[ClientID].MissileData then - self.TrackingMissiles[ClientID].MissileData = {} - end - end - - Client:Alive( _Alive ) - - end - --- self.DB:ForEachClient( --- --- @param Client#CLIENT Client --- function( Client ) --- --- ... actions ... --- --- end --- ) - - self.MessagesOnOff = true - - self.TrackingToAll = false - self.TrackingOnOff = true - self.TrackingFrequency = 3 - - self.AlertsToAll = true - self.AlertsHitsOnOff = true - self.AlertsLaunchesOnOff = true - - self.DetailsRangeOnOff = true - self.DetailsBearingOnOff = true - - self.MenusOnOff = true - - self.TrackingMissiles = {} - - self.TrackingScheduler = SCHEDULER:New( self, self._TrackMissiles, {}, 0.5, 0.05, 0 ) - - return self -end - --- Initialization methods. - - ---- Sets by default the display of any message to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean MessagesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff ) - self:F( MessagesOnOff ) - - self.MessagesOnOff = MessagesOnOff - if self.MessagesOnOff == true then - MESSAGE:New( "Messages ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Messages OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- @param #MISSILETRAINER self --- @param #boolean TrackingToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingToAll( TrackingToAll ) - self:F( TrackingToAll ) - - self.TrackingToAll = TrackingToAll - if self.TrackingToAll == true then - MESSAGE:New( "Missile tracking to all players ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Missile tracking to all players OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of missile tracking report to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean TrackingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff ) - self:F( TrackingOnOff ) - - self.TrackingOnOff = TrackingOnOff - if self.TrackingOnOff == true then - MESSAGE:New( "Missile tracking ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Missile tracking OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- The default frequency is a 3 second interval, so the Tracking Frequency parameter specifies the increase or decrease from the default 3 seconds or the last frequency update. --- @param #MISSILETRAINER self --- @param #number TrackingFrequency Provide a negative or positive value in seconds to incraese or decrease the display frequency. --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency ) - self:F( TrackingFrequency ) - - self.TrackingFrequency = self.TrackingFrequency + TrackingFrequency - if self.TrackingFrequency < 0.5 then - self.TrackingFrequency = 0.5 - end - if self.TrackingFrequency then - MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of alerts to be shown to all players or only to you. --- @param #MISSILETRAINER self --- @param #boolean AlertsToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsToAll( AlertsToAll ) - self:F( AlertsToAll ) - - self.AlertsToAll = AlertsToAll - if self.AlertsToAll == true then - MESSAGE:New( "Alerts to all players ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts to all players OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of hit alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsHitsOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff ) - self:F( AlertsHitsOnOff ) - - self.AlertsHitsOnOff = AlertsHitsOnOff - if self.AlertsHitsOnOff == true then - MESSAGE:New( "Alerts Hits ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts Hits OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of launch alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsLaunchesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff ) - self:F( AlertsLaunchesOnOff ) - - self.AlertsLaunchesOnOff = AlertsLaunchesOnOff - if self.AlertsLaunchesOnOff == true then - MESSAGE:New( "Alerts Launches ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts Launches OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of range information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsRangeOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff ) - self:F( DetailsRangeOnOff ) - - self.DetailsRangeOnOff = DetailsRangeOnOff - if self.DetailsRangeOnOff == true then - MESSAGE:New( "Range display ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Range display OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of bearing information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsBearingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff ) - self:F( DetailsBearingOnOff ) - - self.DetailsBearingOnOff = DetailsBearingOnOff - if self.DetailsBearingOnOff == true then - MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Enables / Disables the menus. --- @param #MISSILETRAINER self --- @param #boolean MenusOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMenusOnOff( MenusOnOff ) - self:F( MenusOnOff ) - - self.MenusOnOff = MenusOnOff - if self.MenusOnOff == true then - MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Menus are DISABLED", "Menu", 15, "ID" ):ToAll() - end - - return self -end - - --- Menu functions - -function MISSILETRAINER._MenuMessages( MenuParameters ) - - local self = MenuParameters.MenuSelf - - if MenuParameters.MessagesOnOff ~= nil then - self:InitMessagesOnOff( MenuParameters.MessagesOnOff ) - end - - if MenuParameters.TrackingToAll ~= nil then - self:InitTrackingToAll( MenuParameters.TrackingToAll ) - end - - if MenuParameters.TrackingOnOff ~= nil then - self:InitTrackingOnOff( MenuParameters.TrackingOnOff ) - end - - if MenuParameters.TrackingFrequency ~= nil then - self:InitTrackingFrequency( MenuParameters.TrackingFrequency ) - end - - if MenuParameters.AlertsToAll ~= nil then - self:InitAlertsToAll( MenuParameters.AlertsToAll ) - end - - if MenuParameters.AlertsHitsOnOff ~= nil then - self:InitAlertsHitsOnOff( MenuParameters.AlertsHitsOnOff ) - end - - if MenuParameters.AlertsLaunchesOnOff ~= nil then - self:InitAlertsLaunchesOnOff( MenuParameters.AlertsLaunchesOnOff ) - end - - if MenuParameters.DetailsRangeOnOff ~= nil then - self:InitRangeOnOff( MenuParameters.DetailsRangeOnOff ) - end - - if MenuParameters.DetailsBearingOnOff ~= nil then - self:InitBearingOnOff( MenuParameters.DetailsBearingOnOff ) - end - - if MenuParameters.Distance ~= nil then - self.Distance = MenuParameters.Distance - MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", "Menu", 15, "ID" ):ToAll() - end - -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @param #MISSILETRAINER self --- @param Event#EVENTDATA Event -function MISSILETRAINER:_EventShot( Event ) - self:F( { Event } ) - - local TrainerSourceDCSUnit = Event.IniDCSUnit - local TrainerSourceDCSUnitName = Event.IniDCSUnitName - local TrainerWeapon = Event.Weapon -- Identify the weapon fired - local TrainerWeaponName = Event.WeaponName -- return weapon type - - self:T( "Missile Launched = " .. TrainerWeaponName ) - - local TrainerTargetDCSUnit = TrainerWeapon:getTarget() -- Identify target - local TrainerTargetDCSUnitName = Unit.getName( TrainerTargetDCSUnit ) - local TrainerTargetSkill = _DATABASE.Templates.Units[TrainerTargetDCSUnitName].Template.skill - - self:T(TrainerTargetDCSUnitName ) - - local Client = self.DBClients[TrainerTargetDCSUnitName] - if Client then - - local TrainerSourceUnit = UNIT:Find( TrainerSourceDCSUnit ) - local TrainerTargetUnit = UNIT:Find( TrainerTargetDCSUnit ) - - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - - local Message = MESSAGE:New( - string.format( "%s launched a %s", - TrainerSourceUnit:GetTypeName(), - TrainerWeaponName - ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ),"Launch Alert", 5, "ID" ) - - if self.AlertsToAll then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - - local ClientID = Client:GetID() - local MissileData = {} - MissileData.TrainerSourceUnit = TrainerSourceUnit - MissileData.TrainerWeapon = TrainerWeapon - MissileData.TrainerTargetUnit = TrainerTargetUnit - MissileData.TrainerWeaponTypeName = TrainerWeapon:getTypeName() - MissileData.TrainerWeaponLaunched = true - table.insert( self.TrackingMissiles[ClientID].MissileData, MissileData ) - --self:T( self.TrackingMissiles ) - end -end - -function MISSILETRAINER:_AddRange( Client, TrainerWeapon ) - - local RangeText = "" - - if self.DetailsRangeOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local PositionTarget = Client:GetPointVec3() - - local Range = ( ( PositionMissile.x - PositionTarget.x )^2 + - ( PositionMissile.y - PositionTarget.y )^2 + - ( PositionMissile.z - PositionTarget.z )^2 - ) ^ 0.5 / 1000 - - RangeText = string.format( ", at %4.2fkm", Range ) - end - - return RangeText -end - -function MISSILETRAINER:_AddBearing( Client, TrainerWeapon ) - - local BearingText = "" - - if self.DetailsBearingOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local PositionTarget = Client:GetPointVec3() - - self:T2( { PositionTarget, PositionMissile }) - - local DirectionVector = { x = PositionMissile.x - PositionTarget.x, y = PositionMissile.y - PositionTarget.y, z = PositionMissile.z - PositionTarget.z } - local DirectionRadians = math.atan2( DirectionVector.z, DirectionVector.x ) - --DirectionRadians = DirectionRadians + routines.getNorthCorrection( PositionTarget ) - if DirectionRadians < 0 then - DirectionRadians = DirectionRadians + 2 * math.pi - end - local DirectionDegrees = DirectionRadians * 180 / math.pi - - BearingText = string.format( ", %d degrees", DirectionDegrees ) - end - - return BearingText -end - - -function MISSILETRAINER:_TrackMissiles() - self:F2() - - - local ShowMessages = false - if self.MessagesOnOff and self.MessageLastTime + self.TrackingFrequency <= timer.getTime() then - self.MessageLastTime = timer.getTime() - ShowMessages = true - end - - -- ALERTS PART - - -- Loop for all Player Clients to check the alerts and deletion of missiles. - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - for MissileDataID, MissileData in pairs( ClientData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - local PositionMissile = TrainerWeapon:getPosition().p - local PositionTarget = Client:GetPointVec3() - - local Distance = ( ( PositionMissile.x - PositionTarget.x )^2 + - ( PositionMissile.y - PositionTarget.y )^2 + - ( PositionMissile.z - PositionTarget.z )^2 - ) ^ 0.5 / 1000 - - if Distance <= self.Distance then - -- Hit alert - TrainerWeapon:destroy() - if self.MessagesOnOff == true and self.AlertsHitsOnOff == true then - - self:T( "killed" ) - - local Message = MESSAGE:New( - string.format( "%s launched by %s killed %s", - TrainerWeapon:getTypeName(), - TrainerSourceUnit:GetTypeName(), - TrainerTargetUnit:GetPlayerName() - ),"Hit Alert", 15, "ID" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T(ClientData.MissileData) - end - end - else - if not ( TrainerWeapon and TrainerWeapon:isExist() ) then - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - -- Weapon does not exist anymore. Delete from Table - local Message = MESSAGE:New( - string.format( "%s launched by %s self destructed!", - TrainerWeaponTypeName, - TrainerSourceUnit:GetTypeName() - ),"Tracking", 5, "ID" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T( ClientData.MissileData ) - end - end - end - end - - if ShowMessages == true and self.MessagesOnOff == true and self.TrackingOnOff == true then -- Only do this when tracking information needs to be displayed. - - -- TRACKING PART - - -- For the current client, the missile range and bearing details are displayed To the Player Client. - -- For the other clients, the missile range and bearing details are displayed To the other Player Clients. - -- To achieve this, a cross loop is done for each Player Client <-> Other Player Client missile information. - - -- Main Player Client loop - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - - ClientData.MessageToClient = "" - ClientData.MessageToAll = "" - - -- Other Players Client loop - for TrackingDataID, TrackingData in pairs( self.TrackingMissiles ) do - - for MissileDataID, MissileData in pairs( TrackingData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - - if ShowMessages == true then - local TrackingTo - TrackingTo = string.format( " -> %s", - TrainerWeaponTypeName - ) - - if ClientDataID == TrackingDataID then - if ClientData.MessageToClient == "" then - ClientData.MessageToClient = "Missiles to You:\n" - end - ClientData.MessageToClient = ClientData.MessageToClient .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. "\n" - else - if self.TrackingToAll == true then - if ClientData.MessageToAll == "" then - ClientData.MessageToAll = "Missiles to other Players:\n" - end - ClientData.MessageToAll = ClientData.MessageToAll .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. " ( " .. TrainerTargetUnit:GetPlayerName() .. " )\n" - end - end - end - end - end - end - - -- Once the Player Client and the Other Player Client tracking messages are prepared, show them. - if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then - local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, "Tracking", 1, "ID" ):ToClient( Client ) - end - end - end - - return true -end -env.info( '*** MOOSE INCLUDE END *** ' ) +env.info("Loaded MOOSE Include Engine")env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 7db8a5175..114a0f7fe 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,6 @@ -env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160605_0003' ) +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20160605_2147' ) + local base = _G env.info("Loading MOOSE " .. base.timer.getAbsTime() ) @@ -11,9 +12,27 @@ Include.Path = function() end Include.File = function( IncludeFile ) + if not Include.Files[ IncludeFile ] then + Include.Files[IncludeFile] = IncludeFile + env.info( "Include:" .. IncludeFile .. " from " .. Include.ProgramPath ) + local f = assert( base.loadfile( Include.ProgramPath .. IncludeFile .. ".lua" ) ) + if f == nil then + env.info( "Include:" .. IncludeFile .. " from " .. Include.MissionPath ) + local f = assert( base.loadfile( Include.MissionPath .. IncludeFile .. ".lua" ) ) + if f == nil then + error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) + else + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.MissionPath ) + return f() + end + else + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) + return f() + end + end end -Include.ProgramPath = "Scripts/Moose/Moose/" +Include.ProgramPath = "Scripts/Moose/" Include.MissionPath = Include.Path() env.info( "Include.ProgramPath = " .. Include.ProgramPath) @@ -23,17596 +42,4 @@ Include.Files = {} Include.File( "Moose" ) -env.info("Loaded MOOSE Include Engine") ---- Various routines --- @module routines --- @author Flightcontrol - ---Include.File( "Trace" ) ---Include.File( "Message" ) - - -env.setErrorMessageBoxEnabled(false) - ---- Extract of MIST functions. --- @author Grimes - -routines = {} - - --- don't change these -routines.majorVersion = 3 -routines.minorVersion = 3 -routines.build = 22 - ------------------------------------------------------------------------------------------------------------------ - ----------------------------------------------------------------------------------------------- --- Utils- conversion, Lua utils, etc. -routines.utils = {} - ---from http://lua-users.org/wiki/CopyTable -routines.utils.deepCopy = function(object) - local lookup_table = {} - local function _copy(object) - if type(object) ~= "table" then - return object - elseif lookup_table[object] then - return lookup_table[object] - end - local new_table = {} - lookup_table[object] = new_table - for index, value in pairs(object) do - new_table[_copy(index)] = _copy(value) - end - return setmetatable(new_table, getmetatable(object)) - end - local objectreturn = _copy(object) - return objectreturn -end - - --- porting in Slmod's serialize_slmod2 -routines.utils.oneLineSerialize = function(tbl) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function - - lookup_table = {} - - local function _Serialize( tbl ) - - if type(tbl) == 'table' then --function only works for tables! - - if lookup_table[tbl] then - return lookup_table[object] - end - - local tbl_str = {} - - lookup_table[tbl] = tbl_str - - tbl_str[#tbl_str + 1] = '{' - - for ind,val in pairs(tbl) do -- serialize its fields - local ind_str = {} - if type(ind) == "number" then - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = tostring(ind) - ind_str[#ind_str + 1] = ']=' - else --must be a string - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) - ind_str[#ind_str + 1] = ']=' - end - - local val_str = {} - if ((type(val) == 'number') or (type(val) == 'boolean')) then - val_str[#val_str + 1] = tostring(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'string' then - val_str[#val_str + 1] = routines.utils.basicSerialize(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'nil' then -- won't ever happen, right? - val_str[#val_str + 1] = 'nil,' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'table' then - if ind == "__index" then - -- tbl_str[#tbl_str + 1] = "__index" - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else - - val_str[#val_str + 1] = _Serialize(val) - val_str[#val_str + 1] = ',' --I think this is right, I just added it - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - end - elseif type(val) == 'function' then - -- tbl_str[#tbl_str + 1] = "function " .. tostring(ind) - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else --- env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) --- env.info( debug.traceback() ) - end - - end - tbl_str[#tbl_str + 1] = '}' - return table.concat(tbl_str) - else - return tostring(tbl) - end - end - - local objectreturn = _Serialize(tbl) - return objectreturn -end - ---porting in Slmod's "safestring" basic serialize -routines.utils.basicSerialize = function(s) - if s == nil then - return "\"\"" - else - if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then - return tostring(s) - elseif type(s) == 'string' then - s = string.format('%q', s) - return s - end - end -end - - -routines.utils.toDegree = function(angle) - return angle*180/math.pi -end - -routines.utils.toRadian = function(angle) - return angle*math.pi/180 -end - -routines.utils.metersToNM = function(meters) - return meters/1852 -end - -routines.utils.metersToFeet = function(meters) - return meters/0.3048 -end - -routines.utils.NMToMeters = function(NM) - return NM*1852 -end - -routines.utils.feetToMeters = function(feet) - return feet*0.3048 -end - -routines.utils.mpsToKnots = function(mps) - return mps*3600/1852 -end - -routines.utils.mpsToKmph = function(mps) - return mps*3.6 -end - -routines.utils.knotsToMps = function(knots) - return knots*1852/3600 -end - -routines.utils.kmphToMps = function(kmph) - return kmph/3.6 -end - -function routines.utils.makeVec2(Vec3) - if Vec3.z then - return {x = Vec3.x, y = Vec3.z} - else - return {x = Vec3.x, y = Vec3.y} -- it was actually already vec2. - end -end - -function routines.utils.makeVec3(Vec2, y) - if not Vec2.z then - if not y then - y = 0 - end - return {x = Vec2.x, y = y, z = Vec2.y} - else - return {x = Vec2.x, y = Vec2.y, z = Vec2.z} -- it was already Vec3, actually. - end -end - -function routines.utils.makeVec3GL(Vec2, offset) - local adj = offset or 0 - - if not Vec2.z then - return {x = Vec2.x, y = (land.getHeight(Vec2) + adj), z = Vec2.y} - else - return {x = Vec2.x, y = (land.getHeight({x = Vec2.x, y = Vec2.z}) + adj), z = Vec2.z} - end -end - -routines.utils.zoneToVec3 = function(zone) - local new = {} - if type(zone) == 'table' and zone.point then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - elseif type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - if zone then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - end - end -end - --- gets heading-error corrected direction from point along vector vec. -function routines.utils.getDir(vec, point) - local dir = math.atan2(vec.z, vec.x) - dir = dir + routines.getNorthCorrection(point) - if dir < 0 then - dir = dir + 2*math.pi -- put dir in range of 0 to 2*pi - end - return dir -end - --- gets distance in meters between two points (2 dimensional) -function routines.utils.get2DDist(point1, point2) - point1 = routines.utils.makeVec3(point1) - point2 = routines.utils.makeVec3(point2) - return routines.vec.mag({x = point1.x - point2.x, y = 0, z = point1.z - point2.z}) -end - --- gets distance in meters between two points (3 dimensional) -function routines.utils.get3DDist(point1, point2) - return routines.vec.mag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z}) -end - - - --- From http://lua-users.org/wiki/SimpleRound --- use negative idp for rounding ahead of decimal place, positive for rounding after decimal place -routines.utils.round = function(num, idp) - local mult = 10^(idp or 0) - return math.floor(num * mult + 0.5) / mult -end - --- porting in Slmod's dostring -routines.utils.dostring = function(s) - local f, err = loadstring(s) - if f then - return true, f() - else - return false, err - end -end - - ---3D Vector manipulation -routines.vec = {} - -routines.vec.add = function(vec1, vec2) - return {x = vec1.x + vec2.x, y = vec1.y + vec2.y, z = vec1.z + vec2.z} -end - -routines.vec.sub = function(vec1, vec2) - return {x = vec1.x - vec2.x, y = vec1.y - vec2.y, z = vec1.z - vec2.z} -end - -routines.vec.scalarMult = function(vec, mult) - return {x = vec.x*mult, y = vec.y*mult, z = vec.z*mult} -end - -routines.vec.scalar_mult = routines.vec.scalarMult - -routines.vec.dp = function(vec1, vec2) - return vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z -end - -routines.vec.cp = function(vec1, vec2) - return { x = vec1.y*vec2.z - vec1.z*vec2.y, y = vec1.z*vec2.x - vec1.x*vec2.z, z = vec1.x*vec2.y - vec1.y*vec2.x} -end - -routines.vec.mag = function(vec) - return (vec.x^2 + vec.y^2 + vec.z^2)^0.5 -end - -routines.vec.getUnitVec = function(vec) - local mag = routines.vec.mag(vec) - return { x = vec.x/mag, y = vec.y/mag, z = vec.z/mag } -end - -routines.vec.rotateVec2 = function(vec2, theta) - return { x = vec2.x*math.cos(theta) - vec2.y*math.sin(theta), y = vec2.x*math.sin(theta) + vec2.y*math.cos(theta)} -end ---------------------------------------------------------------------------------------------------------------------------- - - - - --- acc- the accuracy of each easting/northing. 0, 1, 2, 3, 4, or 5. -routines.tostringMGRS = function(MGRS, acc) - if acc == 0 then - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph - else - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Easting/(10^(5-acc)), 0)) - .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Northing/(10^(5-acc)), 0)) - end -end - ---[[acc: -in DM: decimal point of minutes. -In DMS: decimal point of seconds. -position after the decimal of the least significant digit: -So: -42.32 - acc of 2. -]] -routines.tostringLL = function(lat, lon, acc, DMS) - - local latHemi, lonHemi - if lat > 0 then - latHemi = 'N' - else - latHemi = 'S' - end - - if lon > 0 then - lonHemi = 'E' - else - lonHemi = 'W' - end - - lat = math.abs(lat) - lon = math.abs(lon) - - local latDeg = math.floor(lat) - local latMin = (lat - latDeg)*60 - - local lonDeg = math.floor(lon) - local lonMin = (lon - lonDeg)*60 - - if DMS then -- degrees, minutes, and seconds. - local oldLatMin = latMin - latMin = math.floor(latMin) - local latSec = routines.utils.round((oldLatMin - latMin)*60, acc) - - local oldLonMin = lonMin - lonMin = math.floor(lonMin) - local lonSec = routines.utils.round((oldLonMin - lonMin)*60, acc) - - if latSec == 60 then - latSec = 0 - latMin = latMin + 1 - end - - if lonSec == 60 then - lonSec = 0 - lonMin = lonMin + 1 - end - - local secFrmtStr -- create the formatting string for the seconds place - if acc <= 0 then -- no decimal place. - secFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi - - else -- degrees, decimal minutes. - latMin = routines.utils.round(latMin, acc) - lonMin = routines.utils.round(lonMin, acc) - - if latMin == 60 then - latMin = 0 - latDeg = latDeg + 1 - end - - if lonMin == 60 then - lonMin = 0 - lonDeg = lonDeg + 1 - end - - local minFrmtStr -- create the formatting string for the minutes place - if acc <= 0 then -- no decimal place. - minFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi - - end -end - ---[[ required: az - radian - required: dist - meters - optional: alt - meters (set to false or nil if you don't want to use it). - optional: metric - set true to get dist and alt in km and m. - precision will always be nearest degree and NM or km.]] -routines.tostringBR = function(az, dist, alt, metric) - az = routines.utils.round(routines.utils.toDegree(az), 0) - - if metric then - dist = routines.utils.round(dist/1000, 2) - else - dist = routines.utils.round(routines.utils.metersToNM(dist), 2) - end - - local s = string.format('%03d', az) .. ' for ' .. dist - - if alt then - if metric then - s = s .. ' at ' .. routines.utils.round(alt, 0) - else - s = s .. ' at ' .. routines.utils.round(routines.utils.metersToFeet(alt), 0) - end - end - return s -end - -routines.getNorthCorrection = function(point) --gets the correction needed for true north - if not point.z then --Vec2; convert to Vec3 - point.z = point.y - point.y = 0 - end - local lat, lon = coord.LOtoLL(point) - local north_posit = coord.LLtoLO(lat + 1, lon) - return math.atan2(north_posit.z - point.z, north_posit.x - point.x) -end - - --- the main area -do - -- THE MAIN FUNCTION -- Accessed 100 times/sec. - routines.main = function() - timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) --reschedule first in case of Lua error - ---------------------------------------------------------------------------------------------------------- - --area to add new stuff in - - routines.do_scheduled_functions() - end -- end of routines.main - - timer.scheduleFunction(routines.main, {}, timer.getTime() + 2) - -end - - -do - local idNum = 0 - - --Simplified event handler - routines.addEventHandler = function(f) --id is optional! - local handler = {} - idNum = idNum + 1 - handler.id = idNum - handler.f = f - handler.onEvent = function(self, event) - self.f(event) - end - world.addEventHandler(handler) - end - - routines.removeEventHandler = function(id) - for key, handler in pairs(world.eventHandlers) do - if handler.id and handler.id == id then - world.eventHandlers[key] = nil - return true - end - end - return false - end -end - --- need to return a Vec3 or Vec2? -function routines.getRandPointInCircle(point, radius, innerRadius) - local theta = 2*math.pi*math.random() - local rad = math.random() + math.random() - if rad > 1 then - rad = 2 - rad - end - - local radMult - if innerRadius and innerRadius <= radius then - radMult = (radius - innerRadius)*rad + innerRadius - else - radMult = radius*rad - end - - if not point.z then --might as well work with vec2/3 - point.z = point.y - end - - local rndCoord - if radius > 0 then - rndCoord = {x = math.cos(theta)*radMult + point.x, y = math.sin(theta)*radMult + point.z} - else - rndCoord = {x = point.x, y = point.z} - end - return rndCoord -end - -routines.goRoute = function(group, path) - local misTask = { - id = 'Mission', - params = { - route = { - points = routines.utils.deepCopy(path), - }, - }, - } - if type(group) == 'string' then - group = Group.getByName(group) - end - local groupCon = group:getController() - if groupCon then - groupCon:setTask(misTask) - return true - end - - Controller.setTask(groupCon, misTask) - return false -end - - --- Useful atomic functions from mist, ported. - -routines.ground = {} -routines.fixedWing = {} -routines.heli = {} - -routines.ground.buildWP = function(point, overRideForm, overRideSpeed) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - local form, speed - - if point.speed and not overRideSpeed then - wp.speed = point.speed - elseif type(overRideSpeed) == 'number' then - wp.speed = overRideSpeed - else - wp.speed = routines.utils.kmphToMps(20) - end - - if point.form and not overRideForm then - form = point.form - else - form = overRideForm - end - - if not form then - wp.action = 'Cone' - else - form = string.lower(form) - if form == 'off_road' or form == 'off road' then - wp.action = 'Off Road' - elseif form == 'on_road' or form == 'on road' then - wp.action = 'On Road' - elseif form == 'rank' or form == 'line_abrest' or form == 'line abrest' or form == 'lineabrest'then - wp.action = 'Rank' - elseif form == 'cone' then - wp.action = 'Cone' - elseif form == 'diamond' then - wp.action = 'Diamond' - elseif form == 'vee' then - wp.action = 'Vee' - elseif form == 'echelon_left' or form == 'echelon left' or form == 'echelonl' then - wp.action = 'EchelonL' - elseif form == 'echelon_right' or form == 'echelon right' or form == 'echelonr' then - wp.action = 'EchelonR' - else - wp.action = 'Cone' -- if nothing matched - end - end - - wp.type = 'Turning Point' - - return wp - -end - -routines.fixedWing.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 2000 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(500) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.heli.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 500 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(200) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.groupToRandomPoint = function(vars) - local group = vars.group --Required - local point = vars.point --required - local radius = vars.radius or 0 - local innerRadius = vars.innerRadius - local form = vars.form or 'Cone' - local heading = vars.heading or math.random()*2*math.pi - local headingDegrees = vars.headingDegrees - local speed = vars.speed or routines.utils.kmphToMps(20) - - - local useRoads - if not vars.disableRoads then - useRoads = true - else - useRoads = false - end - - local path = {} - - if headingDegrees then - heading = headingDegrees*math.pi/180 - end - - if heading >= 2*math.pi then - heading = heading - 2*math.pi - end - - local rndCoord = routines.getRandPointInCircle(point, radius, innerRadius) - - local offset = {} - local posStart = routines.getLeadPos(group) - - offset.x = routines.utils.round(math.sin(heading - (math.pi/2)) * 50 + rndCoord.x, 3) - offset.z = routines.utils.round(math.cos(heading + (math.pi/2)) * 50 + rndCoord.y, 3) - path[#path + 1] = routines.ground.buildWP(posStart, form, speed) - - - if useRoads == true and ((point.x - posStart.x)^2 + (point.z - posStart.z)^2)^0.5 > radius * 1.3 then - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 11, ['z'] = posStart.z + 11}, 'off_road', speed) - path[#path + 1] = routines.ground.buildWP(posStart, 'on_road', speed) - path[#path + 1] = routines.ground.buildWP(offset, 'on_road', speed) - else - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 25, ['z'] = posStart.z + 25}, form, speed) - end - - path[#path + 1] = routines.ground.buildWP(offset, form, speed) - path[#path + 1] = routines.ground.buildWP(rndCoord, form, speed) - - routines.goRoute(group, path) - - return -end - -routines.groupRandomDistSelf = function(gpData, dist, form, heading, speed) - local pos = routines.getLeadPos(gpData) - local fakeZone = {} - fakeZone.radius = dist or math.random(300, 1000) - fakeZone.point = {x = pos.x, y, pos.y, z = pos.z} - routines.groupToRandomZone(gpData, fakeZone, form, heading, speed) - - return -end - -routines.groupToRandomZone = function(gpData, zone, form, heading, speed) - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - if type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - elseif type(zone) == 'table' and not zone.radius then - zone = trigger.misc.getZone(zone[math.random(1, #zone)]) - end - - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.radius = zone.radius - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.point = routines.utils.zoneToVec3(zone) - - routines.groupToRandomPoint(vars) - - return -end - -routines.isTerrainValid = function(coord, terrainTypes) -- vec2/3 and enum or table of acceptable terrain types - if coord.z then - coord.y = coord.z - end - local typeConverted = {} - - if type(terrainTypes) == 'string' then -- if its a string it does this check - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(terrainTypes) or string.lower(constData) == string.lower(terrainTypes) then - table.insert(typeConverted, constId) - end - end - elseif type(terrainTypes) == 'table' then -- if its a table it does this check - for typeId, typeData in pairs(terrainTypes) do - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(typeData) or string.lower(constData) == string.lower(typeId) then - table.insert(typeConverted, constId) - end - end - end - end - for validIndex, validData in pairs(typeConverted) do - if land.getSurfaceType(coord) == land.SurfaceType[validData] then - return true - end - end - return false -end - -routines.groupToPoint = function(gpData, point, form, heading, speed, useRoads) - if type(point) == 'string' then - point = trigger.misc.getZone(point) - end - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.disableRoads = useRoads - vars.point = routines.utils.zoneToVec3(point) - routines.groupToRandomPoint(vars) - - return -end - - -routines.getLeadPos = function(group) - if type(group) == 'string' then -- group name - group = Group.getByName(group) - end - - local units = group:getUnits() - - local leader = units[1] - if not leader then -- SHOULD be good, but if there is a bug, this code future-proofs it then. - local lowestInd = math.huge - for ind, unit in pairs(units) do - if ind < lowestInd then - lowestInd = ind - leader = unit - end - end - end - if leader and Unit.isExist(leader) then -- maybe a little too paranoid now... - return leader:getPosition().p - end -end - ---[[ vars for routines.getMGRSString: -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -]] -routines.getMGRSString = function(vars) - local units = vars.units - local acc = vars.acc or 5 - local avgPos = routines.getAvgPos(units) - if avgPos then - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(avgPos)), acc) - end -end - ---[[ vars for routines.getLLString -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. - - -]] -routines.getLLString = function(vars) - local units = vars.units - local acc = vars.acc or 3 - local DMS = vars.DMS - local avgPos = routines.getAvgPos(units) - if avgPos then - local lat, lon = coord.LOtoLL(avgPos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - ---[[ -vars.zone - table of a zone name. -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRStringZone = function(vars) - local zone = trigger.misc.getZone( vars.zone ) - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - if zone then - local vec = {x = zone.point.x - ref.x, y = zone.point.y - ref.y, z = zone.point.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(zone.point, ref) - if alt then - alt = zone.y - end - return routines.tostringBR(dir, dist, alt, metric) - else - env.info( 'routines.getBRStringZone: error: zone is nil' ) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRString = function(vars) - local units = vars.units - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - local avgPos = routines.getAvgPos(units) - if avgPos then - local vec = {x = avgPos.x - ref.x, y = avgPos.y - ref.y, z = avgPos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(avgPos, ref) - if alt then - alt = avgPos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - - --- Returns the Vec3 coordinates of the average position of the concentration of units most in the heading direction. ---[[ vars for routines.getLeadingPos: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -]] -routines.getLeadingPos = function(vars) - local units = vars.units - local heading = vars.heading - local radius = vars.radius - if vars.headingDegrees then - heading = routines.utils.toRadian(vars.headingDegrees) - end - - local unitPosTbl = {} - for i = 1, #units do - local unit = Unit.getByName(units[i]) - if unit and unit:isExist() then - unitPosTbl[#unitPosTbl + 1] = unit:getPosition().p - end - end - if #unitPosTbl > 0 then -- one more more units found. - -- first, find the unit most in the heading direction - local maxPos = -math.huge - - local maxPosInd -- maxPos - the furthest in direction defined by heading; maxPosInd = - for i = 1, #unitPosTbl do - local rotatedVec2 = routines.vec.rotateVec2(routines.utils.makeVec2(unitPosTbl[i]), heading) - if (not maxPos) or maxPos < rotatedVec2.x then - maxPos = rotatedVec2.x - maxPosInd = i - end - end - - --now, get all the units around this unit... - local avgPos - if radius then - local maxUnitPos = unitPosTbl[maxPosInd] - local avgx, avgy, avgz, totNum = 0, 0, 0, 0 - for i = 1, #unitPosTbl do - if routines.utils.get2DDist(maxUnitPos, unitPosTbl[i]) <= radius then - avgx = avgx + unitPosTbl[i].x - avgy = avgy + unitPosTbl[i].y - avgz = avgz + unitPosTbl[i].z - totNum = totNum + 1 - end - end - avgPos = { x = avgx/totNum, y = avgy/totNum, z = avgz/totNum} - else - avgPos = unitPosTbl[maxPosInd] - end - - return avgPos - end -end - - ---[[ vars for routines.getLeadingMGRSString: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number, 0 to 5. -]] -routines.getLeadingMGRSString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 5 - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(pos)), acc) - end -end - ---[[ vars for routines.getLeadingLLString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. -]] -routines.getLeadingLLString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 3 - local DMS = vars.DMS - local lat, lon = coord.LOtoLL(pos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - - - ---[[ vars for routines.getLeadingBRString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.metric - boolean, if true, use km instead of NM. -vars.alt - boolean, if true, include altitude. -vars.ref - vec3/vec2 reference point. -]] -routines.getLeadingBRString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local ref = vars.ref - local alt = vars.alt - local metric = vars.metric - - local vec = {x = pos.x - ref.x, y = pos.y - ref.y, z = pos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(pos, ref) - if alt then - alt = pos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - ---[[ vars for routines.message.add - vars.text = 'Hello World' - vars.displayTime = 20 - vars.msgFor = {coa = {'red'}, countries = {'Ukraine', 'Georgia'}, unitTypes = {'A-10C'}} - -]] - ---[[ vars for routines.msgMGRS -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgMGRS = function(vars) - local units = vars.units - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getMGRSString{units = units, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - ---[[ vars for routines.msgLL -vars.units - table of unit names (NOT unitNameTable- maybe this should change) (Yes). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLLString{units = units, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local alt = vars.alt - local metric = vars.metric - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getBRString{units = units, ref = ref, alt = alt, metric = metric} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - --------------------------------------------------------------------------------------------- --- basically, just sub-types of routines.msgBR... saves folks the work of getting the ref point. ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - string red, blue -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBullseye = function(vars) - if string.lower(vars.ref) == 'red' then - vars.ref = routines.DBs.missionData.bullseye.red - routines.msgBR(vars) - elseif string.lower(vars.ref) == 'blue' then - vars.ref = routines.DBs.missionData.bullseye.blue - routines.msgBR(vars) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - unit name of reference point -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] - -routines.msgBRA = function(vars) - if Unit.getByName(vars.ref) then - vars.ref = Unit.getByName(vars.ref):getPosition().p - if not vars.alt then - vars.alt = true - end - routines.msgBR(vars) - end -end --------------------------------------------------------------------------------------------- - ---[[ vars for routines.msgLeadingMGRS: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number, 0 to 5. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingMGRS = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingMGRSString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - - -end ---[[ vars for routines.msgLeadingLL: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. (optional) -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingLLString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - ---[[ -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.metric - boolean, if true, use km instead of NM. (optional) -vars.alt - boolean, if true, include altitude. (optional) -vars.ref - vec3/vec2 reference point. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local metric = vars.metric - local alt = vars.alt - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingBRString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, metric = metric, alt = alt, ref = ref} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - - -function spairs(t, order) - -- collect the keys - local keys = {} - for k in pairs(t) do keys[#keys+1] = k end - - -- if order function given, sort by it by passing the table and keys a, b, - -- otherwise just sort the keys - if order then - table.sort(keys, function(a,b) return order(t, a, b) end) - else - table.sort(keys) - end - - -- return the iterator function - local i = 0 - return function() - i = i + 1 - if keys[i] then - return keys[i], t[keys[i]] - end - end -end - - -function routines.IsPartOfGroupInZones( CargoGroup, LandingZones ) ---trace.f() - - local CurrentZoneID = nil - - if CargoGroup then - local CargoUnits = CargoGroup:getUnits() - for CargoUnitID, CargoUnit in pairs( CargoUnits ) do - if CargoUnit and CargoUnit:getLife() >= 1.0 then - CurrentZoneID = routines.IsUnitInZones( CargoUnit, LandingZones ) - if CurrentZoneID then - break - end - end - end - end - ---trace.r( "", "", { CurrentZoneID } ) - return CurrentZoneID -end - - - -function routines.IsUnitInZones( TransportUnit, LandingZones ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - -function routines.IsUnitNearZonesRadius( TransportUnit, LandingZones, ZoneRadius ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - - -function routines.IsStaticInZones( TransportStatic, LandingZones ) ---trace.f() - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local TransportStaticPos = TransportStatic:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - ---trace.r( "", "", { TransportZoneResult } ) - return TransportZoneResult -end - - -function routines.IsUnitInRadius( CargoUnit, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local CargoPos = CargoUnit:getPosition().p - local ReferenceP = ReferencePosition.p - - if (((CargoPos.x - ReferenceP.x)^2 + (CargoPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - end - - return Valid -end - -function routines.IsPartOfGroupInRadius( CargoGroup, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - Valid = routines.ValidateGroup( CargoGroup, "CargoGroup", Valid ) - - -- fill-up some local variables to support further calculations to determine location of units within the zone - local CargoUnits = CargoGroup:getUnits() - for CargoUnitId, CargoUnit in pairs( CargoUnits ) do - local CargoUnitPos = CargoUnit:getPosition().p --- env.info( 'routines.IsPartOfGroupInRadius: CargoUnitPos.x = ' .. CargoUnitPos.x .. ' CargoUnitPos.z = ' .. CargoUnitPos.z ) - local ReferenceP = ReferencePosition.p --- env.info( 'routines.IsPartOfGroupInRadius: ReferenceGroupPos.x = ' .. ReferenceGroupPos.x .. ' ReferenceGroupPos.z = ' .. ReferenceGroupPos.z ) - - if ((( CargoUnitPos.x - ReferenceP.x)^2 + (CargoUnitPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - break - end - end - - return Valid -end - - -function routines.ValidateString( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "string" then - if Variable == "" then - error( "routines.ValidateString: error: " .. VariableName .. " must be filled out!" ) - Valid = false - end - else - error( "routines.ValidateString: error: " .. VariableName .. " is not a string." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateNumber( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "number" then - else - error( "routines.ValidateNumber: error: " .. VariableName .. " is not a number." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid - -end - -function routines.ValidateGroup( Variable, VariableName, Valid ) ---trace.f() - - if Variable == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateZone( LandingZones, VariableName, Valid ) ---trace.f() - - if LandingZones == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - if trigger.misc.getZone( LandingZoneName ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZoneName .. " does not exist!" ) - Valid = false - break - end - end - else - if trigger.misc.getZone( LandingZones ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZones .. " does not exist!" ) - Valid = false - end - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateEnumeration( Variable, VariableName, Enum, Valid ) ---trace.f() - - local ValidVariable = false - - for EnumId, EnumData in pairs( Enum ) do - if Variable == EnumData then - ValidVariable = true - break - end - end - - if ValidVariable then - else - error( 'TransportValidateEnum: " .. VariableName .. " is not a valid type.' .. Variable ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.getGroupRoute(groupIdent, task) -- same as getGroupPoints but returns speed and formation type along with vec2 of point} - -- refactor to search by groupId and allow groupId and groupName as inputs - local gpId = groupIdent - if type(groupIdent) == 'string' and not tonumber(groupIdent) then - gpId = _DATABASE.Templates.Groups[groupIdent].groupId - end - - for coa_name, coa_data in pairs(env.mission.coalition) do - if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - for obj_type_name, obj_type_data in pairs(cntry_data) do - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" then -- only these types have points - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - for group_num, group_data in pairs(obj_type_data.group) do - if group_data and group_data.groupId == gpId then -- this is the group we are looking for - if group_data.route and group_data.route.points and #group_data.route.points > 0 then - local points = {} - - for point_num, point in pairs(group_data.route.points) do - local routeData = {} - if not point.point then - routeData.x = point.x - routeData.y = point.y - else - routeData.point = point.point --it's possible that the ME could move to the point = Vec2 notation. - end - routeData.form = point.action - routeData.speed = point.speed - routeData.alt = point.alt - routeData.alt_type = point.alt_type - routeData.airdromeId = point.airdromeId - routeData.helipadId = point.helipadId - routeData.type = point.type - routeData.action = point.action - if task then - routeData.task = point.task - end - points[point_num] = routeData - end - - return points - end - return - end --if group_data and group_data.name and group_data.name == 'groupname' - end --for group_num, group_data in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do -end - -routines.ground.patrolRoute = function(vars) - - - local tempRoute = {} - local useRoute = {} - local gpData = vars.gpData - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - local useGroupRoute - if not vars.useGroupRoute then - useGroupRoute = vars.gpData - else - useGroupRoute = vars.useGroupRoute - end - local routeProvided = false - if not vars.route then - if useGroupRoute then - tempRoute = routines.getGroupRoute(useGroupRoute) - end - else - useRoute = vars.route - local posStart = routines.getLeadPos(gpData) - useRoute[1] = routines.ground.buildWP(posStart, useRoute[1].action, useRoute[1].speed) - routeProvided = true - end - - - local overRideSpeed = vars.speed or 'default' - local pType = vars.pType - local offRoadForm = vars.offRoadForm or 'default' - local onRoadForm = vars.onRoadForm or 'default' - - if routeProvided == false and #tempRoute > 0 then - local posStart = routines.getLeadPos(gpData) - - - useRoute[#useRoute + 1] = routines.ground.buildWP(posStart, offRoadForm, overRideSpeed) - for i = 1, #tempRoute do - local tempForm = tempRoute[i].action - local tempSpeed = tempRoute[i].speed - - if offRoadForm == 'default' then - tempForm = tempRoute[i].action - end - if onRoadForm == 'default' then - onRoadForm = 'On Road' - end - if (string.lower(tempRoute[i].action) == 'on road' or string.lower(tempRoute[i].action) == 'onroad' or string.lower(tempRoute[i].action) == 'on_road') then - tempForm = onRoadForm - else - tempForm = offRoadForm - end - - if type(overRideSpeed) == 'number' then - tempSpeed = overRideSpeed - end - - - useRoute[#useRoute + 1] = routines.ground.buildWP(tempRoute[i], tempForm, tempSpeed) - end - - if pType and string.lower(pType) == 'doubleback' then - local curRoute = routines.utils.deepCopy(useRoute) - for i = #curRoute, 2, -1 do - useRoute[#useRoute + 1] = routines.ground.buildWP(curRoute[i], curRoute[i].action, curRoute[i].speed) - end - end - - useRoute[1].action = useRoute[#useRoute].action -- make it so the first WP matches the last WP - end - - local cTask3 = {} - local newPatrol = {} - newPatrol.route = useRoute - newPatrol.gpData = gpData:getName() - cTask3[#cTask3 + 1] = 'routines.ground.patrolRoute(' - cTask3[#cTask3 + 1] = routines.utils.oneLineSerialize(newPatrol) - cTask3[#cTask3 + 1] = ')' - cTask3 = table.concat(cTask3) - local tempTask = { - id = 'WrappedAction', - params = { - action = { - id = 'Script', - params = { - command = cTask3, - - }, - }, - }, - } - - - useRoute[#useRoute].task = tempTask - routines.goRoute(gpData, useRoute) - - return -end - -routines.ground.patrol = function(gpData, pType, form, speed) - local vars = {} - - if type(gpData) == 'table' and gpData:getName() then - gpData = gpData:getName() - end - - vars.useGroupRoute = gpData - vars.gpData = gpData - vars.pType = pType - vars.offRoadForm = form - vars.speed = speed - - routines.ground.patrolRoute(vars) - - return -end - -function routines.GetUnitHeight( CheckUnit ) ---trace.f( "routines" ) - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = UnitPoint.x, y = UnitPoint.z } - local UnitHeight = UnitPoint.y - - local LandHeight = land.getHeight( UnitPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - --trace.f( "routines", "Unit Height = " .. UnitHeight - LandHeight ) - - return UnitHeight - LandHeight - -end - - - -Su34Status = { status = {} } -boardMsgRed = { statusMsg = "" } -boardMsgAll = { timeMsg = "" } -SpawnSettings = {} -Su34MenuPath = {} -Su34Menus = 0 - - -function Su34AttackCarlVinson(groupName) ---trace.menu("", "Su34AttackCarlVinson") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupCarlVinson = Group.getByName("US Carl Vinson #001") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupCarlVinson ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupCarlVinson:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 1 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking carrier Carl Vinson. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackWest(groupName) ---trace.f("","Su34AttackWest") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipWest1 = Group.getByName("US Ship West #001") - local groupShipWest2 = Group.getByName("US Ship West #002") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipWest1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - if groupShipWest2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 2 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the west. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackNorth(groupName) ---trace.menu("","Su34AttackNorth") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipNorth1 = Group.getByName("US Ship North #001") - local groupShipNorth2 = Group.getByName("US Ship North #002") - local groupShipNorth3 = Group.getByName("US Ship North #003") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipNorth1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth3 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth3:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - Su34Status.status[groupName] = 3 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the north. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Orbit(groupName) ---trace.menu("","Su34Orbit") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - controllerSu34:pushTask( {id = 'ControlledTask', params = { task = { id = 'Orbit', params = { pattern = AI.Task.OrbitPattern.RACE_TRACK } }, stopCondition = { duration = 600 } } } ) - Su34Status.status[groupName] = 4 - MessageToRed( string.format('%s: ',groupName) .. 'In orbit and awaiting further instructions. ', 10, 'RedStatus' .. groupName ) -end - -function Su34TakeOff(groupName) ---trace.menu("","Su34TakeOff") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 8 - MessageToRed( string.format('%s: ',groupName) .. 'Take-Off. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Hold(groupName) ---trace.menu("","Su34Hold") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 5 - MessageToRed( string.format('%s: ',groupName) .. 'Holding Weapons. ', 10, 'RedStatus' .. groupName ) -end - -function Su34RTB(groupName) ---trace.menu("","Su34RTB") - Su34Status.status[groupName] = 6 - MessageToRed( string.format('%s: ',groupName) .. 'Return to Krasnodar. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Destroyed(groupName) ---trace.menu("","Su34Destroyed") - Su34Status.status[groupName] = 7 - MessageToRed( string.format('%s: ',groupName) .. 'Destroyed. ', 30, 'RedStatus' .. groupName ) -end - -function GroupAlive( groupName ) ---trace.menu("","GroupAlive") - local groupTest = Group.getByName( groupName ) - - local groupExists = false - - if groupTest then - groupExists = groupTest:isExist() - end - - --trace.r( "", "", { groupExists } ) - return groupExists -end - -function Su34IsDead() ---trace.f() - -end - -function Su34OverviewStatus() ---trace.menu("","Su34OverviewStatus") - local msg = "" - local currentStatus = 0 - local Exists = false - - for groupName, currentStatus in pairs(Su34Status.status) do - - env.info(('Su34 Overview Status: GroupName = ' .. groupName )) - Alive = GroupAlive( groupName ) - - if Alive then - if currentStatus == 1 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking carrier Carl Vinson. " - elseif currentStatus == 2 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking supporting ships in the west. " - elseif currentStatus == 3 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking invading ships in the north. " - elseif currentStatus == 4 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "In orbit and awaiting further instructions. " - elseif currentStatus == 5 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Holding Weapons. " - elseif currentStatus == 6 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Return to Krasnodar. " - elseif currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - elseif currentStatus == 8 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Take-Off. " - end - else - if currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - else - Su34Destroyed(groupName) - end - end - end - - boardMsgRed.statusMsg = msg -end - - -function UpdateBoardMsg() ---trace.f() - Su34OverviewStatus() - MessageToRed( boardMsgRed.statusMsg, 15, 'RedStatus' ) -end - -function MusicReset( flg ) ---trace.f() - trigger.action.setUserFlag(95,flg) -end - -function PlaneActivate(groupNameFormat, flg) ---trace.f() - local groupName = groupNameFormat .. string.format("#%03d", trigger.misc.getUserFlag(flg)) - --trigger.action.outText(groupName,10) - trigger.action.activateGroup(Group.getByName(groupName)) -end - -function Su34Menu(groupName) ---trace.f() - - --env.info(( 'Su34Menu(' .. groupName .. ')' )) - local groupSu34 = Group.getByName( groupName ) - - if Su34Status.status[groupName] == 1 or - Su34Status.status[groupName] == 2 or - Su34Status.status[groupName] == 3 or - Su34Status.status[groupName] == 4 or - Su34Status.status[groupName] == 5 then - if Su34MenuPath[groupName] == nil then - if planeMenuPath == nil then - planeMenuPath = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "SU-34 anti-ship flights", - nil - ) - end - Su34MenuPath[groupName] = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "Flight " .. groupName, - planeMenuPath - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack carrier Carl Vinson", - Su34MenuPath[groupName], - Su34AttackCarlVinson, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the west", - Su34MenuPath[groupName], - Su34AttackWest, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the north", - Su34MenuPath[groupName], - Su34AttackNorth, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Hold position and await instructions", - Su34MenuPath[groupName], - Su34Orbit, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Report status", - Su34MenuPath[groupName], - Su34OverviewStatus - ) - end - else - if Su34MenuPath[groupName] then - missionCommands.removeItemForCoalition(coalition.side.RED, Su34MenuPath[groupName]) - end - end -end - ---- Obsolete function, but kept to rework in framework. - -function ChooseInfantry ( TeleportPrefixTable, TeleportMax ) ---trace.f("Spawn") - --env.info(( 'ChooseInfantry: ' )) - - TeleportPrefixTableCount = #TeleportPrefixTable - TeleportPrefixTableIndex = math.random( 1, TeleportPrefixTableCount ) - - --env.info(( 'ChooseInfantry: TeleportPrefixTableIndex = ' .. TeleportPrefixTableIndex .. ' TeleportPrefixTableCount = ' .. TeleportPrefixTableCount .. ' TeleportMax = ' .. TeleportMax )) - - local TeleportFound = false - local TeleportLoop = true - local Index = TeleportPrefixTableIndex - local TeleportPrefix = '' - - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableCount then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 1 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - - if TeleportFound == false then - TeleportLoop = true - Index = 1 - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableIndex then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 2 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - end - - local TeleportGroupName = '' - if TeleportFound == true then - TeleportGroupName = TeleportPrefix .. string.format("#%03d", SpawnSettings[TeleportPrefix]['SpawnCount'] ) - else - TeleportGroupName = '' - end - - --env.info(('ChooseInfantry: TeleportGroupName = ' .. TeleportGroupName )) - --env.info(('ChooseInfantry: return')) - - return TeleportGroupName -end - -SpawnedInfantry = 0 - -function LandCarrier ( CarrierGroup, LandingZonePrefix ) ---trace.f() - --env.info(( 'LandCarrier: ' )) - --env.info(( 'LandCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'LandCarrier: LandingZone = ' .. LandingZonePrefix )) - - local controllerGroup = CarrierGroup:getController() - - local LandingZone = trigger.misc.getZone(LandingZonePrefix) - local LandingZonePos = {} - LandingZonePos.x = LandingZone.point.x + math.random(LandingZone.radius * -1, LandingZone.radius) - LandingZonePos.y = LandingZone.point.z + math.random(LandingZone.radius * -1, LandingZone.radius) - - controllerGroup:pushTask( { id = 'Land', params = { point = LandingZonePos, durationFlag = true, duration = 10 } } ) - - --env.info(( 'LandCarrier: end' )) -end - -EscortCount = 0 -function EscortCarrier ( CarrierGroup, EscortPrefix, EscortLastWayPoint, EscortEngagementDistanceMax, EscortTargetTypes ) ---trace.f() - --env.info(( 'EscortCarrier: ' )) - --env.info(( 'EscortCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'EscortCarrier: EscortPrefix = ' .. EscortPrefix )) - - local CarrierName = CarrierGroup:getName() - - local EscortMission = {} - local CarrierMission = {} - - local EscortMission = SpawnMissionGroup( EscortPrefix ) - local CarrierMission = SpawnMissionGroup( CarrierGroup:getName() ) - - if EscortMission ~= nil and CarrierMission ~= nil then - - EscortCount = EscortCount + 1 - EscortMissionName = string.format( EscortPrefix .. '#Escort %s', CarrierName ) - EscortMission.name = EscortMissionName - EscortMission.groupId = nil - EscortMission.lateActivation = false - EscortMission.taskSelected = false - - local EscortUnits = #EscortMission.units - for u = 1, EscortUnits do - EscortMission.units[u].name = string.format( EscortPrefix .. '#Escort %s %02d', CarrierName, u ) - EscortMission.units[u].unitId = nil - end - - - EscortMission.route.points[1].task = { id = "ComboTask", - params = - { - tasks = - { - [1] = - { - enabled = true, - auto = false, - id = "Escort", - number = 1, - params = - { - lastWptIndexFlagChangedManually = false, - groupId = CarrierGroup:getID(), - lastWptIndex = nil, - lastWptIndexFlag = false, - engagementDistMax = EscortEngagementDistanceMax, - targetTypes = EscortTargetTypes, - pos = - { - y = 20, - x = 20, - z = 0, - } -- end of ["pos"] - } -- end of ["params"] - } -- end of [1] - } -- end of ["tasks"] - } -- end of ["params"] - } -- end of ["task"] - - SpawnGroupAdd( EscortPrefix, EscortMission ) - - end -end - -function SendMessageToCarrier( CarrierGroup, CarrierMessage ) ---trace.f() - - if CarrierGroup ~= nil then - MessageToGroup( CarrierGroup, CarrierMessage, 30, 'Carrier/' .. CarrierGroup:getName() ) - end - -end - -function MessageToGroup( MsgGroup, MsgText, MsgTime, MsgName ) ---trace.f() - - if type(MsgGroup) == 'string' then - --env.info( 'MessageToGroup: Converted MsgGroup string "' .. MsgGroup .. '" into a Group structure.' ) - MsgGroup = Group.getByName( MsgGroup ) - end - - if MsgGroup ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { MsgGroup:getUnits()[1]:getName() } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - --env.info(('MessageToGroup: Message sent to ' .. MsgGroup:getUnits()[1]:getName() .. ' -> ' .. MsgText )) - end -end - -function MessageToUnit( UnitName, MsgText, MsgTime, MsgName ) ---trace.f() - - if UnitName ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { UnitName } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - end -end - -function MessageToAll( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "Message", MsgTime, MsgName ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE ) -end - -function MessageToRed( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "To Red Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED ) -end - -function MessageToBlue( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, "To Blue Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED ) -end - -function getCarrierHeight( CarrierGroup ) ---trace.f() - - if CarrierGroup ~= nil then - if table.getn(CarrierGroup:getUnits()) == 1 then - local CarrierUnit = CarrierGroup:getUnits()[1] - local CurrentPoint = CarrierUnit:getPoint() - - local CurrentPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local CarrierHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return CarrierHeight - LandHeight - else - return 999999 - end - else - return 999999 - end - -end - -function GetUnitHeight( CheckUnit ) ---trace.f() - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local UnitHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return UnitHeight - LandHeight - -end - - -_MusicTable = {} -_MusicTable.Files = {} -_MusicTable.Queue = {} -_MusicTable.FileCnt = 0 - - -function MusicRegister( SndRef, SndFile, SndTime ) ---trace.f() - - env.info(( 'MusicRegister: SndRef = ' .. SndRef )) - env.info(( 'MusicRegister: SndFile = ' .. SndFile )) - env.info(( 'MusicRegister: SndTime = ' .. SndTime )) - - - _MusicTable.FileCnt = _MusicTable.FileCnt + 1 - - _MusicTable.Files[_MusicTable.FileCnt] = {} - _MusicTable.Files[_MusicTable.FileCnt].Ref = SndRef - _MusicTable.Files[_MusicTable.FileCnt].File = SndFile - _MusicTable.Files[_MusicTable.FileCnt].Time = SndTime - - if not _MusicTable.Function then - _MusicTable.Function = routines.scheduleFunction( MusicScheduler, { }, timer.getTime() + 10, 10) - end - -end - -function MusicToPlayer( SndRef, PlayerName, SndContinue ) ---trace.f() - - --env.info(( 'MusicToPlayer: SndRef = ' .. SndRef )) - - local PlayerUnits = AlivePlayerUnits() - for PlayerUnitIdx, PlayerUnit in pairs(PlayerUnits) do - local PlayerUnitName = PlayerUnit:getPlayerName() - --env.info(( 'MusicToPlayer: PlayerUnitName = ' .. PlayerUnitName )) - if PlayerName == PlayerUnitName then - PlayerGroup = PlayerUnit:getGroup() - if PlayerGroup then - --env.info(( 'MusicToPlayer: PlayerGroup = ' .. PlayerGroup:getName() )) - MusicToGroup( SndRef, PlayerGroup, SndContinue ) - end - break - end - end - - --env.info(( 'MusicToPlayer: end' )) - -end - -function MusicToGroup( SndRef, SndGroup, SndContinue ) ---trace.f() - - --env.info(( 'MusicToGroup: SndRef = ' .. SndRef )) - - if SndGroup ~= nil then - if _MusicTable and _MusicTable.FileCnt > 0 then - if SndGroup:isExist() then - if MusicCanStart(SndGroup:getUnit(1):getPlayerName()) then - --env.info(( 'MusicToGroup: OK for Sound.' )) - local SndIdx = 0 - if SndRef == '' then - --env.info(( 'MusicToGroup: SndRef as empty. Queueing at random.' )) - SndIdx = math.random( 1, _MusicTable.FileCnt ) - else - for SndIdx = 1, _MusicTable.FileCnt do - if _MusicTable.Files[SndIdx].Ref == SndRef then - break - end - end - end - --env.info(( 'MusicToGroup: SndIdx = ' .. SndIdx )) - --env.info(( 'MusicToGroup: Queueing Music ' .. _MusicTable.Files[SndIdx].File .. ' for Group ' .. SndGroup:getID() )) - trigger.action.outSoundForGroup( SndGroup:getID(), _MusicTable.Files[SndIdx].File ) - MessageToGroup( SndGroup, 'Playing ' .. _MusicTable.Files[SndIdx].File, 15, 'Music-' .. SndGroup:getUnit(1):getPlayerName() ) - - local SndQueueRef = SndGroup:getUnit(1):getPlayerName() - if _MusicTable.Queue[SndQueueRef] == nil then - _MusicTable.Queue[SndQueueRef] = {} - end - _MusicTable.Queue[SndQueueRef].Start = timer.getTime() - _MusicTable.Queue[SndQueueRef].PlayerName = SndGroup:getUnit(1):getPlayerName() - _MusicTable.Queue[SndQueueRef].Group = SndGroup - _MusicTable.Queue[SndQueueRef].ID = SndGroup:getID() - _MusicTable.Queue[SndQueueRef].Ref = SndIdx - _MusicTable.Queue[SndQueueRef].Continue = SndContinue - _MusicTable.Queue[SndQueueRef].Type = Group - end - end - end - end -end - -function MusicCanStart(PlayerName) ---trace.f() - - --env.info(( 'MusicCanStart:' )) - - local MusicOut = false - - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicCanStart: PlayerName = ' .. PlayerName )) - local PlayerFound = false - local MusicStart = 0 - local MusicTime = 0 - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.PlayerName == PlayerName then - PlayerFound = true - MusicStart = SndQueue.Start - MusicTime = _MusicTable.Files[SndQueue.Ref].Time - break - end - end - if PlayerFound then - --env.info(( 'MusicCanStart: MusicStart = ' .. MusicStart )) - --env.info(( 'MusicCanStart: MusicTime = ' .. MusicTime )) - --env.info(( 'MusicCanStart: timer.getTime() = ' .. timer.getTime() )) - - if MusicStart + MusicTime <= timer.getTime() then - MusicOut = true - end - else - MusicOut = true - end - end - - if MusicOut then - --env.info(( 'MusicCanStart: true' )) - else - --env.info(( 'MusicCanStart: false' )) - end - - return MusicOut -end - -function MusicScheduler() ---trace.scheduled("", "MusicScheduler") - - --env.info(( 'MusicScheduler:' )) - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicScheduler: Walking Sound Queue.')) - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.Continue then - if MusicCanStart(SndQueue.PlayerName) then - --env.info(('MusicScheduler: MusicToGroup')) - MusicToPlayer( '', SndQueue.PlayerName, true ) - end - end - end - end - -end - - -env.info(( 'Init: Scripts Loaded v1.1' )) - ---- BASE classes. --- --- @{#BASE} class --- ============== --- The @{#BASE} class is the super class for most of the classes defined within MOOSE. --- --- It handles: --- --- * The construction and inheritance of child classes. --- * The tracing of objects during mission execution within the DCS.log file (under saved games folder). --- --- Note: Normally you would not use the BASE class unless you are extending the MOOSE framework with new classes. --- --- BASE Trace functionality --- ======================== --- The BASE class contains trace methods to trace progress within a mission execution of a certain object. --- Note that these trace methods are inherited by each MOOSE class interiting BASE. --- As such, each object created from derived class from BASE can use the tracing functions to trace its execution. --- --- Trace a function call --- --------------------- --- There are basically 3 types of tracing methods available within BASE: --- --- * @{#BASE.F}: Trace the beginning of a function and its given parameters. --- * @{#BASE.T}: Trace further logic within a function giving optional variables or parameters. --- * @{#BASE.E}: Trace an execption within a function giving optional variables or parameters. An exception will always be traced. --- --- Tracing levels --- -------------- --- There are 3 tracing levels within MOOSE. --- These tracing levels were defined to avoid bulks of tracing to be generated by lots of objects. --- --- As such, the F and T methods have additional variants to trace level 2 and 3 respectively: --- --- * @{#BASE.F2}: Trace the beginning of a function and its given parameters with tracing level 2. --- * @{#BASE.F3}: Trace the beginning of a function and its given parameters with tracing level 3. --- * @{#BASE.T2}: Trace further logic within a function giving optional variables or parameters with tracing level 2. --- * @{#BASE.T3}: Trace further logic within a function giving optional variables or parameters with tracing level 3. --- --- BASE Inheritance support --- ======================== --- The following methods are available to support inheritance: --- --- * @{#BASE.Inherit}: Inherits from a class. --- * @{#BASE.Inherited}: Returns the parent class from the class. --- --- Future --- ====== --- Further methods may be added to BASE whenever there is a need to make "overall" functions available within MOOSE. --- --- ==== --- --- @module Base --- @author FlightControl - -Include.File( "Routines" ) - -local _TraceOn = true -local _TraceLevel = 1 -local _TraceClass = { - --DATABASE = true, - --SEAD = true, - --DESTROYBASETASK = true, - --MOVEMENT = true, - --SPAWN = true, - --STAGE = true, - --ZONE = true, - --GROUP = true, - --UNIT = true, - --CLIENT = true, - --CARGO = true, - --CARGO_GROUP = true, - --CARGO_PACKAGE = true, - --CARGO_SLINGLOAD = true, - --CARGO_ZONE = true, - --CLEANUP = true, - --MENU_CLIENT = true, - --MENU_CLIENT_COMMAND = true, - --ESCORT = true, - } -local _TraceClassMethod = {} - ---- The BASE Class --- @type BASE --- @field ClassName The name of the class. --- @field ClassID The ID number of the class. -BASE = { - ClassName = "BASE", - ClassID = 0, - Events = {} -} - ---- The Formation Class --- @type FORMATION --- @field Cone A cone formation. -FORMATION = { - Cone = "Cone" -} - - - ---- The base constructor. This is the top top class of all classed defined within the MOOSE. --- Any new class needs to be derived from this class for proper inheritance. --- @param #BASE self --- @return #BASE The new instance of the BASE class. --- @usage --- function TASK:New() --- --- local self = BASE:Inherit( self, BASE:New() ) --- --- -- assign Task default values during construction --- self.TaskBriefing = "Task: No Task." --- self.Time = timer.getTime() --- self.ExecuteStage = _TransportExecuteStage.NONE --- --- return self --- end --- @todo need to investigate if the deepCopy is really needed... Don't think so. -function BASE:New() - local Child = routines.utils.deepCopy( self ) - local Parent = {} - setmetatable( Child, Parent ) - Child.__index = Child - self.ClassID = self.ClassID + 1 - Child.ClassID = self.ClassID - --Child.AddEvent( Child, S_EVENT_BIRTH, Child.EventBirth ) - return Child -end - ---- This is the worker method to inherit from a parent class. --- @param #BASE self --- @param Child is the Child class that inherits. --- @param #BASE Parent is the Parent class that the Child inherits from. --- @return #BASE Child -function BASE:Inherit( Child, Parent ) - local Child = routines.utils.deepCopy( Child ) - local Parent = routines.utils.deepCopy( Parent ) - if Child ~= nil then - setmetatable( Child, Parent ) - Child.__index = Child - end - --Child.ClassName = Child.ClassName .. '.' .. Child.ClassID - self:T( 'Inherited from ' .. Parent.ClassName ) - return Child -end - ---- This is the worker method to retrieve the Parent class. --- @param #BASE self --- @param #BASE Child is the Child class from which the Parent class needs to be retrieved. --- @return #BASE -function BASE:Inherited( Child ) - local Parent = getmetatable( Child ) --- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName ) - return Parent -end - ---- Get the ClassName + ClassID of the class instance. --- The ClassName + ClassID is formatted as '%s#%09d'. --- @param #BASE self --- @return #string The ClassName + ClassID of the class instance. -function BASE:GetClassNameAndID() - return string.format( '%s#%09d', self:GetClassName(), self:GetClassID() ) -end - ---- Get the ClassName of the class instance. --- @param #BASE self --- @return #string The ClassName of the class instance. -function BASE:GetClassName() - return self.ClassName -end - ---- Get the ClassID of the class instance. --- @param #BASE self --- @return #string The ClassID of the class instance. -function BASE:GetClassID() - return self.ClassID -end - ---- Set a new listener for the class. --- @param self --- @param DCSTypes#Event Event --- @param #function EventFunction --- @return #BASE -function BASE:AddEvent( Event, EventFunction ) - self:F( Event ) - - self.Events[#self.Events+1] = {} - self.Events[#self.Events].Event = Event - self.Events[#self.Events].EventFunction = EventFunction - self.Events[#self.Events].EventEnabled = false - - return self -end - ---- Returns the event dispatcher --- @param #BASE self --- @return Event#EVENT -function BASE:Event() - - return _EVENTDISPATCHER -end - - - - - ---- Enable the event listeners for the class. --- @param #BASE self --- @return #BASE -function BASE:EnableEvents() - self:F( #self.Events ) - - for EventID, Event in pairs( self.Events ) do - Event.Self = self - Event.EventEnabled = true - end - self.Events.Handler = world.addEventHandler( self ) - - return self -end - - ---- Disable the event listeners for the class. --- @param #BASE self --- @return #BASE -function BASE:DisableEvents() - self:F() - - world.removeEventHandler( self ) - for EventID, Event in pairs( self.Events ) do - Event.Self = nil - Event.EventEnabled = false - end - - return self -end - - -local BaseEventCodes = { - "S_EVENT_SHOT", - "S_EVENT_HIT", - "S_EVENT_TAKEOFF", - "S_EVENT_LAND", - "S_EVENT_CRASH", - "S_EVENT_EJECTION", - "S_EVENT_REFUELING", - "S_EVENT_DEAD", - "S_EVENT_PILOT_DEAD", - "S_EVENT_BASE_CAPTURED", - "S_EVENT_MISSION_START", - "S_EVENT_MISSION_END", - "S_EVENT_TOOK_CONTROL", - "S_EVENT_REFUELING_STOP", - "S_EVENT_BIRTH", - "S_EVENT_HUMAN_FAILURE", - "S_EVENT_ENGINE_STARTUP", - "S_EVENT_ENGINE_SHUTDOWN", - "S_EVENT_PLAYER_ENTER_UNIT", - "S_EVENT_PLAYER_LEAVE_UNIT", - "S_EVENT_PLAYER_COMMENT", - "S_EVENT_SHOOTING_START", - "S_EVENT_SHOOTING_END", - "S_EVENT_MAX", -} - ---onEvent( {[1]="S_EVENT_BIRTH",[2]={["subPlace"]=5,["time"]=0,["initiator"]={["id_"]=16884480,},["place"]={["id_"]=5000040,},["id"]=15,["IniUnitName"]="US F-15C@RAMP-Air Support Mountains#001-01",},} --- Event = { --- id = enum world.event, --- time = Time, --- initiator = Unit, --- target = Unit, --- place = Unit, --- subPlace = enum world.BirthPlace, --- weapon = Weapon --- } - ---- Creation of a Birth Event. --- @param #BASE self --- @param DCSTypes#Time EventTime The time stamp of the event. --- @param DCSObject#Object Initiator The initiating object of the event. --- @param #string IniUnitName The initiating unit name. --- @param place --- @param subplace -function BASE:CreateEventBirth( EventTime, Initiator, IniUnitName, place, subplace ) - self:F( { EventTime, Initiator, IniUnitName, place, subplace } ) - - local Event = { - id = world.event.S_EVENT_BIRTH, - time = EventTime, - initiator = Initiator, - IniUnitName = IniUnitName, - place = place, - subplace = subplace - } - - world.onEvent( Event ) -end - ---- Creation of a Crash Event. --- @param #BASE self --- @param DCSTypes#Time EventTime The time stamp of the event. --- @param DCSObject#Object Initiator The initiating object of the event. -function BASE:CreateEventCrash( EventTime, Initiator ) - self:F( { EventTime, Initiator } ) - - local Event = { - id = world.event.S_EVENT_CRASH, - time = EventTime, - initiator = Initiator, - } - - world.onEvent( Event ) -end - --- TODO: Complete DCSTypes#Event structure. ---- The main event handling function... This function captures all events generated for the class. --- @param #BASE self --- @param DCSTypes#Event event -function BASE:onEvent(event) - --self:F( { BaseEventCodes[event.id], event } ) - - if self then - for EventID, EventObject in pairs( self.Events ) do - if EventObject.EventEnabled then - --env.info( 'onEvent Table EventObject.Self = ' .. tostring(EventObject.Self) ) - --env.info( 'onEvent event.id = ' .. tostring(event.id) ) - --env.info( 'onEvent EventObject.Event = ' .. tostring(EventObject.Event) ) - if event.id == EventObject.Event then - if self == EventObject.Self then - if event.initiator and event.initiator:isExist() then - event.IniUnitName = event.initiator:getName() - end - if event.target and event.target:isExist() then - event.TgtUnitName = event.target:getName() - end - --self:T( { BaseEventCodes[event.id], event } ) - --EventObject.EventFunction( self, event ) - end - end - end - end - end -end - --- Trace section - --- Log a trace (only shown when trace is on) --- TODO: Make trace function using variable parameters. - ---- Set trace level --- @param #BASE self --- @param #number Level -function BASE:TraceLevel( Level ) - _TraceLevel = Level - self:E( "Tracing level " .. Level ) -end - ---- Set tracing for a class --- @param #BASE self --- @param #string Class -function BASE:TraceClass( Class ) - _TraceClass[Class] = true - _TraceClassMethod[Class] = {} - self:E( "Tracing class " .. Class ) -end - ---- Set tracing for a specific method of class --- @param #BASE self --- @param #string Class --- @param #string Method -function BASE:TraceClassMethod( Class, Method ) - if not _TraceClassMethod[Class] then - _TraceClassMethod[Class] = {} - _TraceClassMethod[Class].Method = {} - end - _TraceClassMethod[Class].Method[Method] = true - self:E( "Tracing method " .. Method .. " of class " .. Class ) -end - ---- Trace a function call. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F( Arguments ) - - if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "F", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function call level 2. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F2( Arguments ) - - if _TraceLevel >= 2 then - self:F( Arguments ) - end - -end - ---- Trace a function call level 3. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F3( Arguments ) - - if _TraceLevel >= 3 then - self:F( Arguments ) - end - -end - ---- Trace a function logic. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T( Arguments ) - - if _TraceOn and ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s" , LineCurrent, LineFrom, "T", self.ClassName, self.ClassID, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function logic level 2. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T2( Arguments ) - - if _TraceLevel >= 2 then - self:T( Arguments ) - end - -end - ---- Trace a function logic level 3. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T3( Arguments ) - - if _TraceLevel >= 3 then - self:T( Arguments ) - end - -end - ---- Log an exception which will be traced always. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:E( Arguments ) - - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = -1 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "E", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) -end - - - ---- Models time events calling event handing functions. --- --- @{SCHEDULER} class --- =================== --- The @{SCHEDULER} class models time events calling given event handling functions. --- --- SCHEDULER constructor --- ===================== --- The SCHEDULER class is quite easy to use: --- --- * @{#SCHEDULER.New}: Setup a new scheduler and start it with the specified parameters. --- --- SCHEDULER timer methods --- ======================= --- The SCHEDULER can be stopped and restarted with the following methods: --- --- * @{#SCHEDULER.Start}: (Re-)Start the scheduler. --- * @{#SCHEDULER.Start}: Stop the scheduler. --- --- @module Scheduler --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) - - ---- The SCHEDULER class --- @type SCHEDULER --- @extends Base#BASE -SCHEDULER = { - ClassName = "SCHEDULER", -} - - ---- Constructor. --- @param #SCHEDULER self --- @param #table TimeEventObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. --- @param #function TimeEventFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in TimeEventFunctionArguments. --- @param #table TimeEventFunctionArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. --- @param #number StartSeconds Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. --- @param #number RepeatSecondsInterval Specifies the interval in seconds when the scheduler will call the event function. --- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. --- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. --- @return #SCHEDULER self -function SCHEDULER:New( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( { TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) - - self.TimeEventObject = TimeEventObject - self.TimeEventFunction = TimeEventFunction - self.TimeEventFunctionArguments = TimeEventFunctionArguments - self.StartSeconds = StartSeconds - - if RepeatSecondsInterval then - self.RepeatSecondsInterval = RepeatSecondsInterval - else - self.RepeatSecondsInterval = 0 - end - - if RandomizationFactor then - self.RandomizationFactor = RandomizationFactor - else - self.RandomizationFactor = 0 - end - - if StopSeconds then - self.StopSeconds = StopSeconds - end - - self.Repeat = false - - self.StartTime = timer.getTime() - - self:Start() - - return self -end - ---- (Re-)Starts the scheduler. --- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Start() - self:F2( self.TimeEventObject ) - - self.Repeat = true - timer.scheduleFunction( self._Scheduler, self, timer.getTime() + self.StartSeconds + .01 ) - - return self -end - ---- Stops the scheduler. --- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Stop() - self:F2( self.TimeEventObject ) - - self.Repeat = false - - return self -end - --- Private Functions - -function SCHEDULER:_Scheduler() - self:F2( self.TimeEventFunctionArguments ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in SCHEDULER function:" .. errmsg ) - env.info( debug.traceback() ) - - return errmsg - end - - local Status, Result - if self.TimeEventObject then - Status, Result = xpcall( function() return self.TimeEventFunction( self.TimeEventObject, unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) - else - Status, Result = xpcall( function() return self.TimeEventFunction( unpack( self.TimeEventFunctionArguments ) ) end, ErrorHandler ) - end - - self:T( { Status, Result } ) - - if Status and ( ( not Result ) or ( Result and Result ~= false ) ) then - if self.Repeat and ( not self.StopSeconds or ( self.StopSeconds and timer.getTime() <= self.StartTime + self.StopSeconds ) ) then - timer.scheduleFunction( - self._Scheduler, - self, - timer.getTime() + self.RepeatSecondsInterval + math.random( - ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ), ( self.RandomizationFactor * self.RepeatSecondsInterval / 2 ) ) + 0.01 - ) - end - end - -end - - - - - - - - ---- The EVENT class models an efficient event handling process between other classes and its units, weapons. --- @module Event --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) - ---- The EVENT structure --- @type EVENT --- @field #EVENT.Events Events -EVENT = { - ClassName = "EVENT", - ClassID = 0, -} - -local _EVENTCODES = { - "S_EVENT_SHOT", - "S_EVENT_HIT", - "S_EVENT_TAKEOFF", - "S_EVENT_LAND", - "S_EVENT_CRASH", - "S_EVENT_EJECTION", - "S_EVENT_REFUELING", - "S_EVENT_DEAD", - "S_EVENT_PILOT_DEAD", - "S_EVENT_BASE_CAPTURED", - "S_EVENT_MISSION_START", - "S_EVENT_MISSION_END", - "S_EVENT_TOOK_CONTROL", - "S_EVENT_REFUELING_STOP", - "S_EVENT_BIRTH", - "S_EVENT_HUMAN_FAILURE", - "S_EVENT_ENGINE_STARTUP", - "S_EVENT_ENGINE_SHUTDOWN", - "S_EVENT_PLAYER_ENTER_UNIT", - "S_EVENT_PLAYER_LEAVE_UNIT", - "S_EVENT_PLAYER_COMMENT", - "S_EVENT_SHOOTING_START", - "S_EVENT_SHOOTING_END", - "S_EVENT_MAX", -} - ---- The Event structure --- @type EVENTDATA --- @field id --- @field initiator --- @field target --- @field weapon --- @field IniDCSUnit --- @field IniDCSUnitName --- @field IniDCSGroup --- @field IniDCSGroupName --- @field TgtDCSUnit --- @field TgtDCSUnitName --- @field TgtDCSGroup --- @field TgtDCSGroupName --- @field Weapon --- @field WeaponName --- @field WeaponTgtDCSUnit - ---- The Events structure --- @type EVENT.Events --- @field #number IniUnit - -function EVENT:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F2() - self.EventHandler = world.addEventHandler( self ) - return self -end - -function EVENT:EventText( EventID ) - - local EventText = _EVENTCODES[EventID] - - return EventText -end - - ---- Initializes the Events structure for the event --- @param #EVENT self --- @param DCSWorld#world.event EventID --- @param #string EventClass --- @return #EVENT.Events -function EVENT:Init( EventID, EventClass ) - self:F3( { _EVENTCODES[EventID], EventClass } ) - if not self.Events[EventID] then - self.Events[EventID] = {} - end - if not self.Events[EventID][EventClass] then - self.Events[EventID][EventClass] = {} - end - return self.Events[EventID][EventClass] -end - - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @param #function OnEventFunction --- @return #EVENT -function EVENT:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, OnEventFunction ) - self:F2( EventTemplate.name ) - - for EventUnitID, EventUnit in pairs( EventTemplate.units ) do - OnEventFunction( self, EventUnit.name, EventFunction, EventSelf ) - end - return self -end - ---- Set a new listener for an S_EVENT_X event independent from a unit or a weapon. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventGeneric( EventFunction, EventSelf, EventID ) - self:F2( { EventID } ) - - local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) - Event.EventFunction = EventFunction - Event.EventSelf = EventSelf - return self -end - - ---- Set a new listener for an S_EVENT_X event --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, EventID ) - self:F2( EventDCSUnitName ) - - local Event = self:Init( EventID, EventSelf:GetClassNameAndID() ) - if not Event.IniUnit then - Event.IniUnit = {} - end - Event.IniUnit[EventDCSUnitName] = {} - Event.IniUnit[EventDCSUnitName].EventFunction = EventFunction - Event.IniUnit[EventDCSUnitName].EventSelf = EventSelf - return self -end - - ---- Create an OnBirth event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnBirthForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnBirthForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_BIRTH event, and registers the unit born. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnBirth( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) - - return self -end - ---- Set a new listener for an S_EVENT_BIRTH event. --- @param #EVENT self --- @param #string EventDCSUnitName The id of the unit for the event to be handled. --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnBirthForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_BIRTH ) - - return self -end - ---- Create an OnCrash event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnCrashForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnCrashForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_CRASH event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnCrash( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_CRASH ) - - return self -end - ---- Set a new listener for an S_EVENT_CRASH event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnCrashForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_CRASH ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param Group#GROUP EventGroup --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnDeadForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnDeadForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_DEAD event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf --- @return #EVENT -function EVENT:OnDead( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_DEAD ) - - return self -end - - ---- Set a new listener for an S_EVENT_DEAD event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_DEAD ) - - return self -end - ---- Set a new listener for an S_EVENT_PILOT_DEAD event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPilotDeadForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_PILOT_DEAD ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnLandForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnLandForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_LAND event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnLandForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_LAND ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnTakeOffForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnTakeOffForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_TAKEOFF event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnTakeOffForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_TAKEOFF ) - - return self -end - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineShutDownForTemplate( EventTemplate, EventFunction, EventSelf ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventSelf, self.OnEngineShutDownForUnit ) - - return self -end - ---- Set a new listener for an S_EVENT_ENGINE_SHUTDOWN event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineShutDownForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_SHUTDOWN ) - - return self -end - ---- Set a new listener for an S_EVENT_ENGINE_STARTUP event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnEngineStartUpForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_ENGINE_STARTUP ) - - return self -end - ---- Set a new listener for an S_EVENT_SHOT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnShot( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_SHOT ) - - return self -end - ---- Set a new listener for an S_EVENT_SHOT event for a unit. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnShotForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_SHOT ) - - return self -end - ---- Set a new listener for an S_EVENT_HIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnHit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_HIT ) - - return self -end - ---- Set a new listener for an S_EVENT_HIT event. --- @param #EVENT self --- @param #string EventDCSUnitName --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnHitForUnit( EventDCSUnitName, EventFunction, EventSelf ) - self:F2( EventDCSUnitName ) - - self:OnEventForUnit( EventDCSUnitName, EventFunction, EventSelf, world.event.S_EVENT_HIT ) - - return self -end - ---- Set a new listener for an S_EVENT_PLAYER_ENTER_UNIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPlayerEnterUnit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_ENTER_UNIT ) - - return self -end - ---- Set a new listener for an S_EVENT_PLAYER_LEAVE_UNIT event. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Base#BASE EventSelf The self instance of the class for which the event is. --- @return #EVENT -function EVENT:OnPlayerLeaveUnit( EventFunction, EventSelf ) - self:F2() - - self:OnEventGeneric( EventFunction, EventSelf, world.event.S_EVENT_PLAYER_LEAVE_UNIT ) - - return self -end - - - -function EVENT:onEvent( Event ) - self:F2( { _EVENTCODES[Event.id], Event } ) - - if self and self.Events and self.Events[Event.id] then - if Event.initiator and Event.initiator:getCategory() == Object.Category.UNIT then - Event.IniDCSUnit = Event.initiator - Event.IniDCSGroup = Event.IniDCSUnit:getGroup() - Event.IniDCSUnitName = Event.IniDCSUnit:getName() - Event.IniDCSGroupName = "" - if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then - Event.IniDCSGroupName = Event.IniDCSGroup:getName() - end - end - if Event.target then - if Event.target and Event.target:getCategory() == Object.Category.UNIT then - Event.TgtDCSUnit = Event.target - Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() - Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() - Event.TgtDCSGroupName = "" - if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then - Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() - end - end - end - if Event.weapon then - Event.Weapon = Event.weapon - Event.WeaponName = Event.Weapon:getTypeName() - --Event.WeaponTgtDCSUnit = Event.Weapon:getTarget() - end - self:E( { _EVENTCODES[Event.id], Event } ) - for ClassName, EventData in pairs( self.Events[Event.id] ) do - if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then - self:T2( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } ) - EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event ) - else - if Event.IniDCSUnit and not EventData.IniUnit then - self:T2( { "Calling event function for class ", ClassName } ) - EventData.EventFunction( EventData.EventSelf, Event ) - end - end - end - end -end - ---- Encapsulation of DCS World Menu system in a set of MENU classes. --- @module Menu - -Include.File( "Routines" ) -Include.File( "Base" ) - ---- The MENU class --- @type MENU --- @extends Base#BASE -MENU = { - ClassName = "MENU", - MenuPath = nil, - MenuText = "", - MenuParentPath = nil -} - ---- -function MENU:New( MenuText, MenuParentPath ) - - -- Arrange meta tables - local Child = BASE:Inherit( self, BASE:New() ) - - Child.MenuPath = nil - Child.MenuText = MenuText - Child.MenuParentPath = MenuParentPath - return Child -end - ---- The COMMANDMENU class --- @type COMMANDMENU --- @extends Menu#MENU -COMMANDMENU = { - ClassName = "COMMANDMENU", - CommandMenuFunction = nil, - CommandMenuArgument = nil -} - -function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = nil - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - Child.CommandMenuFunction = CommandMenuFunction - Child.CommandMenuArgument = CommandMenuArgument - return Child -end - ---- The SUBMENU class --- @type SUBMENU --- @extends Menu#MENU -SUBMENU = { - ClassName = "SUBMENU" -} - -function SUBMENU:New( MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = nil - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath ) - return Child -end - --- This local variable is used to cache the menus registered under clients. --- Menus don't dissapear when clients are destroyed and restarted. --- So every menu for a client created must be tracked so that program logic accidentally does not create --- the same menus twice during initialization logic. --- These menu classes are handling this logic with this variable. -local _MENUCLIENTS = {} - ---- The MENU_CLIENT class --- @type MENU_CLIENT --- @extends Menu#MENU -MENU_CLIENT = { - ClassName = "MENU_CLIENT" -} - ---- Creates a new menu item for a group --- @param self --- @param Client#CLIENT MenuClient The Client owning the menu. --- @param #string MenuText The text for the menu. --- @param #table ParentMenu The parent menu. --- @return #MENU_CLIENT self -function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - self:F( { MenuClient, MenuText, ParentMenu } ) - - self.MenuClient = MenuClient - self.MenuClientGroupID = MenuClient:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath ) - MenuPath[MenuPathID] = self.MenuPath - - self:T( { MenuClient:GetClientGroupName(), self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - return self -end - ---- Removes the sub menus recursively of this MENU_CLIENT. --- @param #MENU_CLIENT self --- @return #MENU_CLIENT self -function MENU_CLIENT:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - -end - ---- Removes the sub menus recursively of this MENU_CLIENT. --- @param #MENU_CLIENT self --- @return #MENU_CLIENT self -function MENU_CLIENT:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end - - ---- The MENU_CLIENT_COMMAND class --- @type MENU_CLIENT_COMMAND --- @extends Menu#MENU -MENU_CLIENT_COMMAND = { - ClassName = "MENU_CLIENT_COMMAND" -} - ---- Creates a new radio command item for a group --- @param self --- @param Client#CLIENT MenuClient The Client owning the menu. --- @param MenuText The text for the menu. --- @param ParentMenu The parent menu. --- @param CommandMenuFunction A function that is called when the menu key is pressed. --- @param CommandMenuArgument An argument for the function. --- @return Menu#MENU_CLIENT_COMMAND self -function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - self.MenuClient = MenuClient - self.MenuClientGroupID = MenuClient:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - MenuPath[MenuPathID] = self.MenuPath - - self.CommandMenuFunction = CommandMenuFunction - self.CommandMenuArgument = CommandMenuArgument - - ParentMenu.Menus[self.MenuPath] = self - - return self -end - -function MENU_CLIENT_COMMAND:Remove() - self:F( self.MenuPath ) - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end - - ---- The MENU_COALITION class --- @type MENU_COALITION --- @extends Menu#MENU -MENU_COALITION = { - ClassName = "MENU_COALITION" -} - ---- Creates a new coalition menu item --- @param #MENU_COALITION self --- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. --- @param #string MenuText The text for the menu. --- @param #table ParentMenu The parent menu. --- @return #MENU_COALITION self -function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - self:F( { MenuCoalition, MenuText, ParentMenu } ) - - self.MenuCoalition = MenuCoalition - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - self:T( { MenuParentPath, MenuText } ) - - self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) - - self:T( { self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - return self -end - ---- Removes the sub menus recursively of this MENU_COALITION. --- @param #MENU_COALITION self --- @return #MENU_COALITION self -function MENU_COALITION:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - -end - ---- Removes the sub menus recursively of this MENU_COALITION. --- @param #MENU_COALITION self --- @return #MENU_COALITION self -function MENU_COALITION:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - - return nil -end - - ---- The MENU_COALITION_COMMAND class --- @type MENU_COALITION_COMMAND --- @extends Menu#MENU -MENU_COALITION_COMMAND = { - ClassName = "MENU_COALITION_COMMAND" -} - ---- Creates a new radio command item for a group --- @param #MENU_COALITION_COMMAND self --- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. --- @param MenuText The text for the menu. --- @param ParentMenu The parent menu. --- @param CommandMenuFunction A function that is called when the menu key is pressed. --- @param CommandMenuArgument An argument for the function. --- @return #MENU_COALITION_COMMAND self -function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument ) - - -- Arrange meta tables - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) - - self.MenuCoalition = MenuCoalition - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } ) - - self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument ) - - self.CommandMenuFunction = CommandMenuFunction - self.CommandMenuArgument = CommandMenuArgument - - ParentMenu.Menus[self.MenuPath] = self - - return self -end - ---- Removes a radio command item for a coalition --- @param #MENU_COALITION_COMMAND self --- @return #MENU_COALITION_COMMAND self -function MENU_COALITION_COMMAND:Remove() - self:F( self.MenuPath ) - - missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil -end ---- GROUP class. --- --- @{GROUP} class --- ============== --- The @{GROUP} class is a wrapper class to handle the DCS Group objects: --- --- * Support all DCS Group APIs. --- * Enhance with Group specific APIs not in the DCS Group API set. --- * Handle local Group Controller. --- * Manage the "state" of the DCS Group. --- --- --- GROUP reference methods --- ======================= --- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{SPAWN} class). --- --- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Group or the DCS GroupName. --- --- Another thing to know is that GROUP objects do not "contain" the DCS Group object. --- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. --- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and log an exception in the DCS.log file. --- --- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: --- --- * @{#GROUP.Find}(): Find a GROUP instance from the _DATABASE object using a DCS Group object. --- * @{#GROUP.FindByName}(): Find a GROUP instance from the _DATABASE object using a DCS Group name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil). --- @module Group --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) -Include.File( "Unit" ) - ---- The GROUP class --- @type GROUP --- @extends Base#BASE --- @field DCSGroup#Group DCSGroup The DCS group class. --- @field #string GroupName The name of the group. -GROUP = { - ClassName = "GROUP", - GroupName = "", - GroupID = 0, - Controller = nil, - DCSGroup = nil, - WayPointFunctions = {}, -} - ---- A DCSGroup --- @type DCSGroup --- @field id_ The ID of the group in DCS - ---- Create a new GROUP from a DCSGroup --- @param #GROUP self --- @param DCSGroup#Group GroupName The DCS Group name --- @return #GROUP self -function GROUP:Register( GroupName ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( GroupName ) - self.GroupName = GroupName - return self -end - --- Reference methods. - ---- Find the GROUP wrapper class instance using the DCS Group. --- @param #GROUP self --- @param DCSGroup#Group DCSGroup The DCS Group. --- @return #GROUP The GROUP. -function GROUP:Find( DCSGroup ) - - local GroupName = DCSGroup:getName() -- Group#GROUP - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - ---- Find the created GROUP using the DCS Group Name. --- @param #GROUP self --- @param #string GroupName The DCS Group Name. --- @return #GROUP The GROUP. -function GROUP:FindByName( GroupName ) - - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - --- DCS Group methods support. - ---- Returns the DCS Group. --- @param #GROUP self --- @return DCSGroup#Group The DCS Group. -function GROUP:GetDCSGroup() - local DCSGroup = Group.getByName( self.GroupName ) - - if DCSGroup then - return DCSGroup - end - - return nil -end - - ---- Returns if the DCS Group is alive. --- When the group exists at run-time, this method will return true, otherwise false. --- @param #GROUP self --- @return #boolean true if the DCS Group is alive. -function GROUP:IsAlive() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupIsAlive = DCSGroup:isExist() - self:T3( GroupIsAlive ) - return GroupIsAlive - end - - return nil -end - ---- Destroys the DCS Group and all of its DCS Units. --- Note that this destroy method also raises a destroy event at run-time. --- So all event listeners will catch the destroy event of this DCS Group. --- @param #GROUP self -function GROUP:Destroy() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - self:CreateEventCrash( timer.getTime(), UnitData ) - end - DCSGroup:destroy() - DCSGroup = nil - end - - return nil -end - ---- Returns category of the DCS Group. --- @param #GROUP self --- @return DCSGroup#Group.Category The category ID -function GROUP:GetCategory() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - return GroupCategory - end - - return nil -end - ---- Returns the category name of the DCS Group. --- @param #GROUP self --- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship -function GROUP:GetCategoryName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local CategoryNames = { - [Group.Category.AIRPLANE] = "Airplane", - [Group.Category.HELICOPTER] = "Helicopter", - [Group.Category.GROUND] = "Ground Unit", - [Group.Category.SHIP] = "Ship", - } - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - - return CategoryNames[GroupCategory] - end - - return nil -end - - ---- Returns the coalition of the DCS Group. --- @param #GROUP self --- @return DCSCoalitionObject#coalition.side The coalition side of the DCS Group. -function GROUP:GetCoalition() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCoalition = DCSGroup:getCoalition() - self:T3( GroupCoalition ) - return GroupCoalition - end - - return nil -end - ---- Returns the country of the DCS Group. --- @param #GROUP self --- @return DCScountry#country.id The country identifier. --- @return #nil The DCS Group is not existing or alive. -function GROUP:GetCountry() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local GroupCountry = DCSGroup:getUnit(1):getCountry() - self:T3( GroupCountry ) - return GroupCountry - end - - return nil -end - ---- Returns the name of the DCS Group. --- @param #GROUP self --- @return #string The DCS Group name. -function GROUP:GetName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupName = DCSGroup:getName() - self:T3( GroupName ) - return GroupName - end - - return nil -end - ---- Returns the DCS Group identifier. --- @param #GROUP self --- @return #number The identifier of the DCS Group. -function GROUP:GetID() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupID = DCSGroup:getID() - self:T3( GroupID ) - return GroupID - end - - return nil -end - ---- Returns the UNIT wrapper class with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the UNIT wrapper class to be returned. --- @return Unit#UNIT The UNIT wrapper class. -function GROUP:GetUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local UnitFound = UNIT:Find( DCSGroup:getUnit( UnitNumber ) ) - self:T3( UnitFound.UnitName ) - self:T2( UnitFound ) - return UnitFound - end - - return nil -end - ---- Returns the DCS Unit with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the DCS Unit to be returned. --- @return DCSUnit#Unit The DCS Unit. -function GROUP:GetDCSUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnitFound = DCSGroup:getUnit( UnitNumber ) - self:T3( DCSUnitFound ) - return DCSUnitFound - end - - return nil -end - ---- Returns current size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed the size of the DCS Group is changed. --- @param #GROUP self --- @return #number The DCS Group size. -function GROUP:GetSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupSize = DCSGroup:getSize() - self:T3( GroupSize ) - return GroupSize - end - - return nil -end - ---- ---- Returns the initial size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed, the initial size of the DCS Group is unchanged. --- @param #GROUP self --- @return #number The DCS Group initial size. -function GROUP:GetInitialSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupInitialSize = DCSGroup:getInitialSize() - self:T3( GroupInitialSize ) - return GroupInitialSize - end - - return nil -end - ---- Returns the UNITs wrappers of the DCS Units of the DCS Group. --- @param #GROUP self --- @return #table The UNITs wrappers. -function GROUP:GetUnits() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnits = DCSGroup:getUnits() - local Units = {} - for Index, UnitData in pairs( DCSUnits ) do - Units[#Units+1] = UNIT:Find( UnitData ) - end - self:T3( Units ) - return Units - end - - return nil -end - - ---- Returns the DCS Units of the DCS Group. --- @param #GROUP self --- @return #table The DCS Units. -function GROUP:GetDCSUnits() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local DCSUnits = DCSGroup:getUnits() - self:T3( DCSUnits ) - return DCSUnits - end - - return nil -end - ---- Get the controller for the GROUP. --- @param #GROUP self --- @return DCSController#Controller -function GROUP:_GetController() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupController = DCSGroup:getController() - self:T3( GroupController ) - return GroupController - end - - return nil -end - - ---- Retrieve the group mission and allow to place function hooks within the mission waypoint plan. --- Use the method @{Group#GROUP:WayPointFunction} to define the hook functions for specific waypoints. --- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. --- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED! --- @param #GROUP self --- @return #GROUP -function GROUP:WayPointInitialize() - - self.WayPoints = self:GetTaskRoute() - - return self -end - - ---- Registers a waypoint function that will be executed when the group moves over the WayPoint. --- @param #GROUP self --- @param #number WayPoint The waypoint number. Note that the start waypoint on the route is WayPoint 1! --- @param #number WayPointIndex When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions. --- @param #function WayPointFunction The waypoint function to be called when the group moves over the waypoint. The waypoint function takes variable parameters. --- @return #GROUP -function GROUP:WayPointFunction( WayPoint, WayPointIndex, WayPointFunction, ... ) - self:F2( { WayPoint, WayPointIndex, WayPointFunction } ) - - table.insert( self.WayPoints[WayPoint].task.params.tasks, WayPointIndex ) - self.WayPoints[WayPoint].task.params.tasks[WayPointIndex] = self:TaskFunction( WayPoint, WayPointIndex, WayPointFunction, arg ) - return self -end - - -function GROUP:TaskFunction( WayPoint, WayPointIndex, FunctionString, FunctionArguments ) - - local DCSTask - - local DCSScript = {} - DCSScript[#DCSScript+1] = "local MissionGroup = GROUP:Find( ... ) " - - if FunctionArguments.n > 0 then - DCSScript[#DCSScript+1] = FunctionString .. "( MissionGroup, " .. table.concat( FunctionArguments, "," ) .. ")" - else - DCSScript[#DCSScript+1] = FunctionString .. "( MissionGroup )" - end - - DCSTask = self:TaskWrappedAction( - self:CommandDoScript( - table.concat( DCSScript ) - ), WayPointIndex - ) - - self:T3( DCSTask ) - - return DCSTask - -end - - - ---- Executes the WayPoint plan. --- The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. --- Note that when the WayPoint parameter is used, the new start mission waypoint of the group will be 1! --- @param #GROUP self --- @param #number WayPoint The WayPoint from where to execute the mission. --- @param #number WaitTime The amount seconds to wait before initiating the mission. --- @return #GROUP -function GROUP:WayPointExecute( WayPoint, WaitTime ) - - if not WayPoint then - WayPoint = 1 - end - - -- When starting the mission from a certain point, the TaskPoints need to be deleted before the given WayPoint. - for TaskPointID = 1, WayPoint - 1 do - table.remove( self.WayPoints, 1 ) - end - - self:T3( self.WayPoints ) - - self:SetTask( self:TaskRoute( self.WayPoints ), WaitTime ) - - return self -end - - ---- Activates a GROUP. --- @param #GROUP self -function GROUP:Activate() - self:F2( { self.GroupName } ) - trigger.action.activateGroup( self:GetDCSGroup() ) - return self:GetDCSGroup() -end - - ---- Gets the type name of the group. --- @param #GROUP self --- @return #string The type name of the group. -function GROUP:GetTypeName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupTypeName = DCSGroup:getUnit(1):getTypeName() - self:T3( GroupTypeName ) - return( GroupTypeName ) - end - - return nil -end - ---- Gets the CallSign of the first DCS Unit of the DCS Group. --- @param #GROUP self --- @return #string The CallSign of the first DCS Unit of the DCS Group. -function GROUP:GetCallsign() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCallSign = DCSGroup:getUnit(1):getCallsign() - self:T3( GroupCallSign ) - return GroupCallSign - end - - return nil -end - ---- Returns the current point (Vec2 vector) of the first DCS Unit in the DCS Group. --- @return DCSTypes#Vec2 Current Vec2 point of the first DCS Unit of the DCS Group. -function GROUP:GetPointVec2() - self:F2( self.GroupName ) - - local GroupPointVec2 = self:GetUnit(1):GetPointVec2() - self:T3( GroupPointVec2 ) - return GroupPointVec2 -end - ---- Returns the current point (Vec3 vector) of the first DCS Unit in the DCS Group. --- @return DCSTypes#Vec3 Current Vec3 point of the first DCS Unit of the DCS Group. -function GROUP:GetPointVec3() - self:F2( self.GroupName ) - - local GroupPointVec3 = self:GetUnit(1):GetPointVec3() - self:T3( GroupPointVec3 ) - return GroupPointVec3 -end - - - --- Is Functions - ---- Returns if all units of the group are within a @{Zone#ZONE}. --- @param #GROUP self --- @param Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE} -function GROUP:IsCompletelyInZone( Zone ) - self:F2( { self.GroupName, Zone } ) - - for UnitID, UnitData in pairs( self:GetUnits() ) do - local Unit = UnitData -- Unit#UNIT - if Zone:IsPointVec3InZone( Unit:GetPointVec3() ) then - else - return false - end - end - - return true -end - ---- Returns if the group is of an air category. --- If the group is a helicopter or a plane, then this method will return true, otherwise false. --- @param #GROUP self --- @return #boolean Air category evaluation result. -function GROUP:IsAir() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local IsAirResult = DCSGroup:getCategory() == Group.Category.AIRPLANE or DCSGroup:getCategory() == Group.Category.HELICOPTER - self:T3( IsAirResult ) - return IsAirResult - end - - return nil -end - ---- Returns if the DCS Group contains Helicopters. --- @param #GROUP self --- @return #boolean true if DCS Group contains Helicopters. -function GROUP:IsHelicopter() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.HELICOPTER - end - - return nil -end - ---- Returns if the DCS Group contains AirPlanes. --- @param #GROUP self --- @return #boolean true if DCS Group contains AirPlanes. -function GROUP:IsAirPlane() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.AIRPLANE - end - - return nil -end - ---- Returns if the DCS Group contains Ground troops. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ground troops. -function GROUP:IsGround() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.GROUND - end - - return nil -end - ---- Returns if the DCS Group contains Ships. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ships. -function GROUP:IsShip() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.SHIP - end - - return nil -end - ---- Returns if all units of the group are on the ground or landed. --- If all units of this group are on the ground, this function will return true, otherwise false. --- @param #GROUP self --- @return #boolean All units on the ground result. -function GROUP:AllOnGround() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local AllOnGroundResult = true - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - if UnitData:inAir() then - AllOnGroundResult = false - end - end - - self:T3( AllOnGroundResult ) - return AllOnGroundResult - end - - return nil -end - ---- Returns the current maximum velocity of the group. --- Each unit within the group gets evaluated, and the maximum velocity (= the unit which is going the fastest) is returned. --- @param #GROUP self --- @return #number Maximum velocity found. -function GROUP:GetMaxVelocity() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local MaxVelocity = 0 - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - - local Velocity = UnitData:getVelocity() - local VelocityTotal = math.abs( Velocity.x ) + math.abs( Velocity.y ) + math.abs( Velocity.z ) - - if VelocityTotal < MaxVelocity then - MaxVelocity = VelocityTotal - end - end - - return MaxVelocity - end - - return nil -end - ---- Returns the current minimum height of the group. --- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. --- @param #GROUP self --- @return #number Minimum height found. -function GROUP:GetMinHeight() - self:F2() - -end - ---- Returns the current maximum height of the group. --- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. --- @param #GROUP self --- @return #number Maximum height found. -function GROUP:GetMaxHeight() - self:F2() - -end - --- Tasks - ---- Popping current Task from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:PopCurrentTask() - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - Controller:popTask() - return self - end - - return nil -end - ---- Pushing Task on the queue from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:PushTask( DCSTask, WaitTime ) - self:F2() - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - - -- When a group SPAWNs, it takes about a second to get the group in the simulator. Setting tasks to unspawned groups provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Group. - -- Controller:pushTask( DCSTask ) - - if WaitTime then - --routines.scheduleFunction( Controller.pushTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) - SCHEDULER:New( Controller, Controller.pushTask, { DCSTask }, WaitTime ) - else - Controller:pushTask( DCSTask ) - end - - return self - end - - return nil -end - ---- Clearing the Task Queue and Setting the Task on the queue from the group. --- @param #GROUP self --- @return Group#GROUP self -function GROUP:SetTask( DCSTask, WaitTime ) - self:F2( { DCSTask } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - - local Controller = self:_GetController() - - -- When a group SPAWNs, it takes about a second to get the group in the simulator. Setting tasks to unspawned groups provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Group. - -- Controller.setTask( Controller, DCSTask ) - - if not WaitTime then - WaitTime = 1 - end - --routines.scheduleFunction( Controller.setTask, { Controller, DCSTask }, timer.getTime() + WaitTime ) - SCHEDULER:New( Controller, Controller.setTask, { DCSTask }, WaitTime ) - - return self - end - - return nil -end - - ---- Return a condition section for a controlled task --- @param #GROUP self --- @param DCSTime#Time time --- @param #string userFlag --- @param #boolean userFlagValue --- @param #string condition --- @param DCSTime#Time duration --- @param #number lastWayPoint --- return DCSTask#Task -function GROUP:TaskCondition( time, userFlag, userFlagValue, condition, duration, lastWayPoint ) - self:F2( { time, userFlag, userFlagValue, condition, duration, lastWayPoint } ) - - local DCSStopCondition = {} - DCSStopCondition.time = time - DCSStopCondition.userFlag = userFlag - DCSStopCondition.userFlagValue = userFlagValue - DCSStopCondition.condition = condition - DCSStopCondition.duration = duration - DCSStopCondition.lastWayPoint = lastWayPoint - - self:T3( { DCSStopCondition } ) - return DCSStopCondition -end - ---- Return a Controlled Task taking a Task and a TaskCondition --- @param #GROUP self --- @param DCSTask#Task DCSTask --- @param #DCSStopCondition DCSStopCondition --- @return DCSTask#Task -function GROUP:TaskControlled( DCSTask, DCSStopCondition ) - self:F2( { DCSTask, DCSStopCondition } ) - - local DCSTaskControlled - - DCSTaskControlled = { - id = 'ControlledTask', - params = { - task = DCSTask, - stopCondition = DCSStopCondition - } - } - - self:T3( { DCSTaskControlled } ) - return DCSTaskControlled -end - ---- Return a Combo Task taking an array of Tasks --- @param #GROUP self --- @param DCSTask#TaskArray DCSTasks Array of @{DCSTask#Task} --- @return DCSTask#Task -function GROUP:TaskCombo( DCSTasks ) - self:F2( { DCSTasks } ) - - local DCSTaskCombo - - DCSTaskCombo = { - id = 'ComboTask', - params = { - tasks = DCSTasks - } - } - - self:T3( { DCSTaskCombo } ) - return DCSTaskCombo -end - ---- Return a WrappedAction Task taking a Command --- @param #GROUP self --- @param DCSCommand#Command DCSCommand --- @return DCSTask#Task -function GROUP:TaskWrappedAction( DCSCommand, Index ) - self:F2( { DCSCommand } ) - - local DCSTaskWrappedAction - - DCSTaskWrappedAction = { - id = "WrappedAction", - enabled = true, - number = Index, - auto = false, - params = { - action = DCSCommand, - }, - } - - self:T3( { DCSTaskWrappedAction } ) - return DCSTaskWrappedAction -end - ---- Executes a command action --- @param #GROUP self --- @param DCSCommand#Command DCSCommand --- @return #GROUP self -function GROUP:SetCommand( DCSCommand ) - self:F2( DCSCommand ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Controller = self:_GetController() - Controller:setCommand( DCSCommand ) - return self - end - - return nil -end - ---- Perform a switch waypoint command --- @param #GROUP self --- @param #number FromWayPoint --- @param #number ToWayPoint --- @return DCSTask#Task -function GROUP:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) - self:F2( { FromWayPoint, ToWayPoint, Index } ) - - local CommandSwitchWayPoint = { - id = 'SwitchWaypoint', - params = { - fromWaypointIndex = FromWayPoint, - goToWaypointIndex = ToWayPoint, - }, - } - - self:T3( { CommandSwitchWayPoint } ) - return CommandSwitchWayPoint -end - - --- TASKS FOR AIR GROUPS - - ---- (AIR) Attack a Group. --- @param #GROUP self --- @param Group#GROUP AttackGroup The Group to be attacked. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackGroup( AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.GroupName, AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- AttackGroup = { - -- id = 'AttackGroup', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Attack the Unit. --- @param #GROUP self --- @param Unit#UNIT AttackUnit The unit. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackUnit( AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack ) - self:F2( { self.GroupName, AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack } ) - - -- AttackUnit = { - -- id = 'AttackUnit', - -- params = { - -- unitId = Unit.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend - -- attackQty = number, - -- direction = Azimuth, - -- attackQtyLimit = boolean, - -- groupAttack = boolean, - -- } - -- } - - local DCSTask - DCSTask = { id = 'AttackUnit', - params = { - unitId = AttackUnit:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - attackQtyLimit = AttackQtyLimit, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Delivering weapon at the point on the ground. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point to deliver weapon at. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) Desired quantity of passes. The parameter is not the same in AttackGroup and AttackUnit tasks. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskBombing( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- Bombing = { --- id = 'Bombing', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'Bombing', - params = { - point = PointVec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point to hold the position. --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #GROUP self -function GROUP:TaskOrbitCircleAtVec2( Point, Altitude, Speed ) - self:F2( { self.GroupName, Point, Altitude, Speed } ) - - -- pattern = enum AI.Task.OribtPattern, - -- point = Vec2, - -- point2 = Vec2, - -- speed = Distance, - -- altitude = Distance - - local LandHeight = land.getHeight( Point ) - - self:T3( { LandHeight } ) - - local DCSTask = { id = 'Orbit', - params = { pattern = AI.Task.OrbitPattern.CIRCLE, - point = Point, - speed = Speed, - altitude = Altitude + LandHeight - } - } - - - -- local AITask = { id = 'ControlledTask', - -- params = { task = { id = 'Orbit', - -- params = { pattern = AI.Task.OrbitPattern.CIRCLE, - -- point = Point, - -- speed = Speed, - -- altitude = Altitude + LandHeight - -- } - -- }, - -- stopCondition = { duration = Duration - -- } - -- } - -- } - -- ) - - return DCSTask -end - ---- (AIR) Orbit at the current position of the first unit of the group at a specified alititude --- @param #GROUP self --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #GROUP self -function GROUP:TaskOrbitCircle( Altitude, Speed ) - self:F2( { self.GroupName, Altitude, Speed } ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local GroupPoint = self:GetPointVec2() - return self:TaskOrbitCircleAtVec2( GroupPoint, Altitude, Speed ) - end - - return nil -end - - - ---- (AIR) Hold position at the current position of the first unit of the group. --- @param #GROUP self --- @param #number Duration The maximum duration in seconds to hold the position. --- @return #GROUP self -function GROUP:TaskHoldPosition() - self:F2( { self.GroupName } ) - - return self:TaskOrbitCircle( 30, 10 ) -end - - - - ---- (AIR) Attacking the map object (building, structure, e.t.c). --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskAttackMapObject( PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- AttackMapObject = { --- id = 'AttackMapObject', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'AttackMapObject', - params = { - point = PointVec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Delivering weapon on the runway. --- @param #GROUP self --- @param Airbase#AIRBASE Airbase Airbase to attack. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskBombingRunway( Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack ) - self:F2( { self.GroupName, Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack } ) - --- BombingRunway = { --- id = 'BombingRunway', --- params = { --- runwayId = AirdromeId, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- groupAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'BombingRunway', - params = { - point = Airbase:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - groupAttack = GroupAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Refueling from the nearest tanker. No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskRefueling() - self:F2( { self.GroupName } ) - --- Refueling = { --- id = 'Refueling', --- params = {} --- } - - local DCSTask - DCSTask = { id = 'Refueling', - params = { - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR HELICOPTER) Landing at the ground. For helicopters only. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #GROUP self -function GROUP:TaskLandAtVec2( Point, Duration ) - self:F2( { self.GroupName, Point, Duration } ) - --- Land = { --- id= 'Land', --- params = { --- point = Vec2, --- durationFlag = boolean, --- duration = Time --- } --- } - - local DCSTask - if Duration and Duration > 0 then - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = true, - duration = Duration, - }, - } - else - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = false, - }, - } - end - - self:T3( DCSTask ) - return DCSTask -end - ---- (AIR) Land the group at a @{Zone#ZONE). --- @param #GROUP self --- @param Zone#ZONE Zone The zone where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #GROUP self -function GROUP:TaskLandAtZone( Zone, Duration, RandomPoint ) - self:F2( { self.GroupName, Zone, Duration, RandomPoint } ) - - local Point - if RandomPoint then - Point = Zone:GetRandomPointVec2() - else - Point = Zone:GetPointVec2() - end - - local DCSTask = self:TaskLandAtVec2( Point, Duration ) - - self:T3( DCSTask ) - return DCSTask -end - ---- (AIR) Following another airborne group. --- The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. --- If another group is on land the unit / group will orbit around. --- @param #GROUP self --- @param Group#GROUP FollowGroup The group to be followed. --- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another group. Once reached the unit / group Follow task is finished. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFollow( FollowGroup, PointVec3, LastWaypointIndex ) - self:F2( { self.GroupName, FollowGroup, PointVec3, LastWaypointIndex } ) - --- Follow = { --- id = 'Follow', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number --- } --- } - - local LastWaypointIndexFlag = nil - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { id = 'Follow', - params = { - groupId = FollowGroup:GetID(), - pos = PointVec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Escort another airborne group. --- The unit / group will follow lead unit of another group, wingmens of both groups will continue following their leaders. --- The unit / group will also protect that group from threats of specified types. --- @param #GROUP self --- @param Group#GROUP EscortGroup The group to be escorted. --- @param DCSTypes#Vec3 PointVec3 Position of the unit / lead unit of the group relative lead unit of another group in frame reference oriented by course of lead unit of another group. If another group is on land the unit / group will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another group. Once reached the unit / group Follow task is finished. --- @param #number EngagementDistanceMax Maximal distance from escorted group to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax. --- @param DCSTypes#AttributeNameArray TargetTypes Array of AttributeName that is contains threat categories allowed to engage. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskEscort( FollowGroup, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes ) - self:F2( { self.GroupName, FollowGroup, PointVec3, LastWaypointIndex, EngagementDistance, TargetTypes } ) - --- Escort = { --- id = 'Escort', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number, --- engagementDistMax = Distance, --- targetTypes = array of AttributeName, --- } --- } - - local LastWaypointIndexFlag = nil - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { id = 'Follow', - params = { - groupId = FollowGroup:GetID(), - pos = PointVec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex, - engagementDistMax = EngagementDistance, - targetTypes = TargetTypes, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - --- GROUND TASKS - ---- (GROUND) Fire at a VEC2 point until ammunition is finished. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 The point to fire at. --- @param DCSTypes#Distance Radius The radius of the zone to deploy the fire at. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFireAtPoint( PointVec2, Radius ) - self:F2( { self.GroupName, PointVec2, Radius } ) - - -- FireAtPoint = { - -- id = 'FireAtPoint', - -- params = { - -- point = Vec2, - -- radius = Distance, - -- } - -- } - - local DCSTask - DCSTask = { id = 'FireAtPoint', - params = { - point = PointVec2, - radius = Radius, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (GROUND) Hold ground group from moving. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskHold() - self:F2( { self.GroupName } ) - --- Hold = { --- id = 'Hold', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Hold', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - --- TASKS FOR AIRBORNE AND GROUND UNITS/GROUPS - ---- (AIR + GROUND) The task makes the group/unit a FAC and orders the FAC to control the target (enemy ground group) destruction. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param Group#GROUP AttackGroup Target GROUP. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskFAC_AttackGroup( AttackGroup, WeaponType, Designation, Datalink ) - self:F2( { self.GroupName, AttackGroup, WeaponType, Designation, Datalink } ) - --- FAC_AttackGroup = { --- id = 'FAC_AttackGroup', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - --- EN-ROUTE TASKS FOR AIRBORNE GROUPS - ---- (AIR) Engaging targets of defined types. --- @param #GROUP self --- @param DCSTypes#Distance Distance Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored. --- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageTargets( Distance, TargetTypes, Priority ) - self:F2( { self.GroupName, Distance, TargetTypes, Priority } ) - --- EngageTargets ={ --- id = 'EngageTargets', --- params = { --- maxDist = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargets', - params = { - maxDist = Distance, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Engaging a targets of defined types at circle-shaped zone. --- @param #GROUP self --- @param DCSTypes#Vec2 PointVec2 2D-coordinates of the zone. --- @param DCSTypes#Distance Radius Radius of the zone. --- @param DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageTargets( PointVec2, Radius, TargetTypes, Priority ) - self:F2( { self.GroupName, PointVec2, Radius, TargetTypes, Priority } ) - --- EngageTargetsInZone = { --- id = 'EngageTargetsInZone', --- params = { --- point = Vec2, --- zoneRadius = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargetsInZone', - params = { - point = PointVec2, - zoneRadius = Radius, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Engaging a group. The task does not assign the target group to the unit/group to attack now; it just allows the unit/group to engage the target group as well as other assigned targets. --- @param #GROUP self --- @param Group#GROUP AttackGroup The Group to be attacked. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param DCSTypes#Distance Altitude (optional) Desired attack start altitude. Group/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/group will choose closest altitude to the desired attack start altitude. If the desired altitude is defined group/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageGroup( AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.GroupName, AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- EngageGroup = { - -- id = 'EngageGroup ', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- priority = number, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'EngageGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - priority = Priority, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Attack the Unit. --- @param #GROUP self --- @param Unit#UNIT AttackUnit The UNIT. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / group will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/group will not make more attack than allowed even if the target group not destroyed and the aicraft/group still have ammo. If not defined the aircraft/group will attack target until it will be destroyed or until the aircraft/group will run out of ammo. --- @param DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Group/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain group/aircraft will choose another direction. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @param #boolean GroupAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the group. Has effect only if the task is assigned to a group, not to a single aircraft. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEngageUnit( AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack ) - self:F2( { self.GroupName, AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack } ) - - -- EngageUnit = { - -- id = 'EngageUnit', - -- params = { - -- unitId = Unit.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend - -- attackQty = number, - -- direction = Azimuth, - -- attackQtyLimit = boolean, - -- groupAttack = boolean, - -- priority = number, - -- } - -- } - - local DCSTask - DCSTask = { id = 'EngageUnit', - params = { - unitId = AttackUnit:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - attackQtyLimit = AttackQtyLimit, - groupAttack = GroupAttack, - priority = Priority, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskAWACS( ) - self:F2( { self.GroupName } ) - --- AWACS = { --- id = 'AWACS', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'AWACS', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Aircraft will act as a tanker for friendly units. No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskTanker( ) - self:F2( { self.GroupName } ) - --- Tanker = { --- id = 'Tanker', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Tanker', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for ground units/groups - ---- (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts). No parameters. --- @param #GROUP self --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskEWR( ) - self:F2( { self.GroupName } ) - --- EWR = { --- id = 'EWR', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'EWR', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for airborne and ground units/groups - ---- (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose the target (enemy ground group) as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param Group#GROUP AttackGroup Target GROUP. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskFAC_EngageGroup( AttackGroup, Priority, WeaponType, Designation, Datalink ) - self:F2( { self.GroupName, AttackGroup, WeaponType, Priority, Designation, Datalink } ) - --- FAC_EngageGroup = { --- id = 'FAC_EngageGroup', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean, --- priority = number, --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_EngageGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - priority = Priority, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR + GROUND) The task makes the group/unit a FAC and lets the FAC to choose a targets (enemy ground group) around as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the group lead unit will be a FAC. --- @param #GROUP self --- @param DCSTypes#Distance Radius The maximal distance from the FAC to a target. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return DCSTask#Task The DCS task structure. -function GROUP:EnRouteTaskFAC( Radius, Priority ) - self:F2( { self.GroupName, Radius, Priority } ) - --- FAC = { --- id = 'FAC', --- params = { --- radius = Distance, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'FAC', - params = { - radius = Radius, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - - - ---- Move the group to a Vec2 Point, wait for a defined duration and embark a group. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to wait. --- @param #number Duration The duration in seconds to wait. --- @param #GROUP EmbarkingGroup The group to be embarked. --- @return DCSTask#Task The DCS task structure -function GROUP:TaskEmbarkingAtVec2( Point, Duration, EmbarkingGroup ) - self:F2( { self.GroupName, Point, Duration, EmbarkingGroup.DCSGroup } ) - - local DCSTask - DCSTask = { id = 'Embarking', - params = { x = Point.x, - y = Point.y, - duration = Duration, - groupsForEmbarking = { EmbarkingGroup.GroupID }, - durationFlag = true, - distributionFlag = false, - distribution = {}, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Move to a defined Vec2 Point, and embark to a group when arrived within a defined Radius. --- @param #GROUP self --- @param DCSTypes#Vec2 Point The point where to wait. --- @param #number Radius The radius of the embarking zone around the Point. --- @return DCSTask#Task The DCS task structure. -function GROUP:TaskEmbarkToTransportAtVec2( Point, Radius ) - self:F2( { self.GroupName, Point, Radius } ) - - local DCSTask --DCSTask#Task - DCSTask = { id = 'EmbarkToTransport', - params = { x = Point.x, - y = Point.y, - zoneRadius = Radius, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Return a Misson task from a mission template. --- @param #GROUP self --- @param #table TaskMission A table containing the mission task. --- @return DCSTask#Task -function GROUP:TaskMission( TaskMission ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { TaskMission, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Return a Misson task to follow a given route defined by Points. --- @param #GROUP self --- @param #table Points A table of route points. --- @return DCSTask#Task -function GROUP:TaskRoute( Points ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Make the DCS Group to fly to a given point and hover. --- @param #GROUP self --- @param DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #GROUP self -function GROUP:TaskRouteToVec2( Point, Speed ) - self:F2( { Point, Speed } ) - - local GroupPoint = self:GetUnit( 1 ):GetPointVec2() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.y - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - ---- Make the DCS Group to fly to a given point and hover. --- @param #GROUP self --- @param DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #GROUP self -function GROUP:TaskRouteToVec3( Point, Speed ) - self:F2( { Point, Speed } ) - - local GroupPoint = self:GetUnit( 1 ):GetPointVec3() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.z - PointFrom.alt = GroupPoint.y - PointFrom.alt_type = "BARO" - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.z - PointTo.alt = Point.y - PointTo.alt_type = "BARO" - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - - - ---- Make the group to follow a given route. --- @param #GROUP self --- @param #table GoPoints A table of Route Points. --- @return #GROUP self -function GROUP:Route( GoPoints ) - self:F2( GoPoints ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - local Points = routines.utils.deepCopy( GoPoints ) - local MissionTask = { id = 'Mission', params = { route = { points = Points, }, }, } - local Controller = self:_GetController() - --Controller.setTask( Controller, MissionTask ) - --routines.scheduleFunction( Controller.setTask, { Controller, MissionTask}, timer.getTime() + 1 ) - SCHEDULER:New( Controller, Controller.setTask, { MissionTask }, 1 ) - return self - end - - return nil -end - - - ---- Route the group to a given zone. --- The group final destination point can be randomized. --- A speed can be given in km/h. --- A given formation can be given. --- @param #GROUP self --- @param Zone#ZONE Zone The zone where to route to. --- @param #boolean Randomize Defines whether to target point gets randomized within the Zone. --- @param #number Speed The speed. --- @param Base#FORMATION Formation The formation string. -function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) - self:F2( Zone ) - - local DCSGroup = self:GetDCSGroup() - - if DCSGroup then - - local GroupPoint = self:GetPointVec2() - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Cone" - PointFrom.speed = 20 / 1.6 - - - local PointTo = {} - local ZonePoint - - if Randomize then - ZonePoint = Zone:GetRandomPointVec2() - else - ZonePoint = Zone:GetPointVec2() - end - - PointTo.x = ZonePoint.x - PointTo.y = ZonePoint.y - PointTo.type = "Turning Point" - - if Formation then - PointTo.action = Formation - else - PointTo.action = "Cone" - end - - if Speed then - PointTo.speed = Speed - else - PointTo.speed = 20 / 1.6 - end - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self - end - - return nil -end - --- Commands - ---- Do Script command --- @param #GROUP self --- @param #string DoScript --- @return #DCSCommand -function GROUP:CommandDoScript( DoScript ) - - local DCSDoScript = { - id = "Script", - params = { - command = DoScript, - }, - } - - self:T3( DCSDoScript ) - return DCSDoScript -end - - ---- Return the mission template of the group. --- @param #GROUP self --- @return #table The MissionTemplate -function GROUP:GetTaskMission() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template ) -end - ---- Return the mission route of the group. --- @param #GROUP self --- @return #table The mission route defined by points. -function GROUP:GetTaskRoute() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template.route.points ) -end - ---- Return the route of a group by using the @{Database#DATABASE} class. --- @param #GROUP self --- @param #number Begin The route point from where the copy will start. The base route point is 0. --- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. --- @param #boolean Randomize Randomization of the route, when true. --- @param #number Radius When randomization is on, the randomization is within the radius. -function GROUP:CopyRoute( Begin, End, Randomize, Radius ) - self:F2( { Begin, End } ) - - local Points = {} - - -- Could be a Spawned Group - local GroupName = string.match( self:GetName(), ".*#" ) - if GroupName then - GroupName = GroupName:sub( 1, -2 ) - else - GroupName = self:GetName() - end - - self:T3( { GroupName } ) - - local Template = _DATABASE.Templates.Groups[GroupName].Template - - if Template then - if not Begin then - Begin = 0 - end - if not End then - End = 0 - end - - for TPointID = Begin + 1, #Template.route.points - End do - if Template.route.points[TPointID] then - Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) - if Randomize then - if not Radius then - Radius = 500 - end - Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) - Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) - end - end - end - return Points - end - - return nil -end - - -function GROUP:GetDetectedTargets() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - return self:_GetController():getDetectedTargets() - end - - return nil -end - -function GROUP:IsTargetDetected( DCSObject ) - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - - local TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - = self:_GetController().isTargetDetected( self:_GetController(), DCSObject, - Controller.Detection.VISUAL, - Controller.Detection.OPTIC, - Controller.Detection.RADAR, - Controller.Detection.IRST, - Controller.Detection.RWR, - Controller.Detection.DLINK - ) - return TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - end - - return nil -end - --- Options - ---- Can the GROUP hold their weapons? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEHoldFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Holding weapons. --- @param Group#GROUP self --- @return Group#GROUP self -function GROUP:OptionROEHoldFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack returning on enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEReturnFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Return fire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEReturnFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack designated targets? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEOpenFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Openfire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEOpenFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP attack targets of opportunity? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROEWeaponFreePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Weapon free. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROEWeaponFree() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) - end - - return self - end - - return nil -end - ---- Can the GROUP ignore enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTNoReactionPossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- No evasion on enemy threats. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTNoReaction() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade using passive defenses? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTPassiveDefensePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Evasion passive defense. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTPassiveDefense() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade on enemy fire? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTEvadeFirePossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTEvadeFire() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - end - - return self - end - - return nil -end - ---- Can the GROUP evade on fire using vertical manoeuvres? --- @param #GROUP self --- @return #boolean -function GROUP:OptionROTVerticalPossible() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire using vertical manoeuvres. --- @param #GROUP self --- @return #GROUP self -function GROUP:OptionROTVertical() - self:F2( { self.GroupName } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - end - - return self - end - - return nil -end - --- Message APIs - ---- Returns a message for a coalition or a client. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. --- @return Message#MESSAGE -function GROUP:Message( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - return MESSAGE:New( Message, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")", Duration, self:GetClassNameAndID() ) - end - - return nil -end - ---- Send a message to all coalitions. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. -function GROUP:MessageToAll( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToAll() - end - - return nil -end - ---- Send a message to the red coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTYpes#Duration Duration The duration of the message. -function GROUP:MessageToRed( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToRed() - end - - return nil -end - ---- Send a message to the blue coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. -function GROUP:MessageToBlue( Message, Duration ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToBlue() - end - - return nil -end - ---- Send a message to a client. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #GROUP self --- @param #string Message The message text --- @param DCSTypes#Duration Duration The duration of the message. --- @param Client#CLIENT Client The client object receiving the message. -function GROUP:MessageToClient( Message, Duration, Client ) - self:F2( { Message, Duration } ) - - local DCSGroup = self:GetDCSGroup() - if DCSGroup then - self:Message( Message, Duration ):ToClient( Client ) - end - - return nil -end ---- UNIT Class --- --- @{UNIT} class --- ============== --- The @{UNIT} class is a wrapper class to handle the DCS Unit objects: --- --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Unit API set. --- * Handle local Unit Controller. --- * Manage the "state" of the DCS Unit. --- --- --- UNIT reference methods --- ====================== --- For each DCS Unit object alive within a running mission, a UNIT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Unit objects are spawned (using the @{SPAWN} class). --- --- The UNIT class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that UNIT objects do not "contain" the DCS Unit object. --- The UNIT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the UNIT methods will return nil and log an exception in the DCS.log file. --- --- The UNIT class provides the following functions to retrieve quickly the relevant UNIT instance: --- --- * @{#UNIT.Find}(): Find a UNIT instance from the _DATABASE object using a DCS Unit object. --- * @{#UNIT.FindByName}(): Find a UNIT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these UNIT OBJECT REFERENCES! (make the UNIT object references nil). --- --- DCS UNIT APIs --- ============= --- The DCS Unit APIs are used extensively within MOOSE. The UNIT class has for each DCS Unit API a corresponding method. --- To be able to distinguish easily in your code the difference between a UNIT API call and a DCS Unit API call, --- the first letter of the method is also capitalized. So, by example, the DCS Unit method @{DCSUnit#Unit.getName}() --- is implemented in the UNIT class as @{#UNIT.GetName}(). --- --- Additional UNIT APIs --- ==================== --- The UNIT class comes with additional methods. Find below a summary. --- --- Smoke, Flare Units --- ------------------ --- The UNIT class provides methods to smoke or flare units easily. --- The @{#UNIT.SmokeBlue}(), @{#UNIT.SmokeGreen}(),@{#UNIT.SmokeOrange}(), @{#UNIT.SmokeRed}(), @{#UNIT.SmokeRed}() methods --- will smoke the unit in the corresponding color. Note that smoking a unit is done at the current position of the DCS Unit. --- When the DCS Unit moves for whatever reason, the smoking will still continue! --- The @{#UNIT.FlareGreen}(), @{#UNIT.FlareRed}(), @{#UNIT.FlareWhite}(), @{#UNIT.FlareYellow}() --- methods will fire off a flare in the air with the corresponding color. Note that a flare is a one-off shot and its effect is of very short duration. --- --- Position, Point --- --------------- --- The UNIT class provides methods to obtain the current point or position of the DCS Unit. --- The @{#UNIT.GetPointVec2}(), @{#UNIT.GetPointVec3}() will obtain the current location of the DCS Unit in a Vec2 (2D) or a Vec3 (3D) vector respectively. --- If you want to obtain the complete 3D position including oriëntation and direction vectors, consult the @{#UNIT.GetPositionVec3}() method respectively. --- --- Alive --- ----- --- The @{#UNIT.IsAlive}(), @{#UNIT.IsActive}() methods determines if the DCS Unit is alive, meaning, it is existing and active. --- --- Test for other units in radius --- ------------------------------ --- One can test if another DCS Unit is within a given radius of the current DCS Unit, by using the @{#UNIT.OtherUnitInRadius}() method. --- --- More functions will be added --- ---------------------------- --- During the MOOSE development, more functions will be added. A complete list of the current functions is below. --- --- --- --- --- @module Unit --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) - ---- The UNIT class --- @type UNIT --- @extends Base#BASE --- @field #UNIT.FlareColor FlareColor --- @field #UNIT.SmokeColor SmokeColor -UNIT = { - ClassName="UNIT", - CategoryName = { - [Unit.Category.AIRPLANE] = "Airplane", - [Unit.Category.HELICOPTER] = "Helicoper", - [Unit.Category.GROUND_UNIT] = "Ground Unit", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - }, - FlareColor = { - Green = trigger.flareColor.Green, - Red = trigger.flareColor.Red, - White = trigger.flareColor.White, - Yellow = trigger.flareColor.Yellow - }, - SmokeColor = { - Green = trigger.smokeColor.Green, - Red = trigger.smokeColor.Red, - White = trigger.smokeColor.White, - Orange = trigger.smokeColor.Orange, - Blue = trigger.smokeColor.Blue - }, - } - ---- FlareColor --- @type UNIT.FlareColor --- @field Green --- @field Red --- @field White --- @field Yellow - ---- SmokeColor --- @type UNIT.SmokeColor --- @field Green --- @field Red --- @field White --- @field Orange --- @field Blue - --- Registration. - ---- Create a new UNIT from DCSUnit. --- @param #UNIT self --- @param DCSUnit#Unit DCSUnit --- @param Database#DATABASE Database --- @return Unit#UNIT -function UNIT:Register( UnitName ) - - local self = BASE:Inherit( self, BASE:New() ) - self:F2( UnitName ) - self.UnitName = UnitName - return self -end - --- Reference methods. - ---- Finds a UNIT from the _DATABASE using a DCSUnit object. --- @param #UNIT self --- @param DCSUnit#Unit DCSUnit An existing DCS Unit object reference. --- @return Unit#UNIT self -function UNIT:Find( DCSUnit ) - - local UnitName = DCSUnit:getName() - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - ---- Find a UNIT in the _DATABASE using the name of an existing DCS Unit. --- @param #UNIT self --- @param #string UnitName The Unit Name. --- @return Unit#UNIT self -function UNIT:FindByName( UnitName ) - - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - -function UNIT:GetDCSUnit() - local DCSUnit = Unit.getByName( self.UnitName ) - - if DCSUnit then - return DCSUnit - end - - return nil -end - ---- Returns coalition of the Unit. --- @param Unit#UNIT self --- @return DCSCoalitionObject#coalition.side The side of the coalition. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCoalition() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCoalition = DCSUnit:getCoalition() - self:T3( UnitCoalition ) - return UnitCoalition - end - - return nil -end - ---- Returns country of the Unit. --- @param Unit#UNIT self --- @return DCScountry#country.id The country identifier. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCountry() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCountry = DCSUnit:getCountry() - self:T3( UnitCountry ) - return UnitCountry - end - - return nil -end - - ---- Returns DCS Unit object name. --- The function provides access to non-activated units too. --- @param Unit#UNIT self --- @return #string The name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitName = self.UnitName - return UnitName - end - - return nil -end - - ---- Returns if the unit is alive. --- @param Unit#UNIT self --- @return #boolean true if Unit is alive. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:IsAlive() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitIsAlive = DCSUnit:isExist() - return UnitIsAlive - end - - return false -end - ---- Returns if the unit is activated. --- @param Unit#UNIT self --- @return #boolean true if Unit is activated. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:IsActive() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - - local UnitIsActive = DCSUnit:isActive() - return UnitIsActive - end - - return nil -end - ---- Returns name of the player that control the unit or nil if the unit is controlled by A.I. --- @param Unit#UNIT self --- @return #string Player Name --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPlayerName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - - local PlayerName = DCSUnit:getPlayerName() - if PlayerName == nil then - PlayerName = "" - end - return PlayerName - end - - return nil -end - ---- Returns the unit's unique identifier. --- @param Unit#UNIT self --- @return DCSUnit#Unit.ID Unit ID --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetID() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitID = DCSUnit:getID() - return UnitID - end - - return nil -end - ---- Returns the unit's number in the group. --- The number is the same number the unit has in ME. --- It may not be changed during the mission. --- If any unit in the group is destroyed, the numbers of another units will not be changed. --- @param Unit#UNIT self --- @return #number The Unit number. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetNumber() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitNumber = DCSUnit:getNumber() - return UnitNumber - end - - return nil -end - ---- Returns the unit's group if it exist and nil otherwise. --- @param Unit#UNIT self --- @return Group#GROUP The Group of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetGroup() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitGroup = DCSUnit:getGroup() - return UnitGroup - end - - return nil -end - - ---- Returns the unit's callsign - the localized string. --- @param Unit#UNIT self --- @return #string The Callsign of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCallSign() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCallSign = DCSUnit:getCallsign() - return UnitCallSign - end - - return nil -end - ---- Returns the unit's health. Dead units has health <= 1.0. --- @param Unit#UNIT self --- @return #number The Unit's health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitLife = DCSUnit:getLife() - return UnitLife - end - - return nil -end - ---- Returns the Unit's initial health. --- @param Unit#UNIT self --- @return #number The Unit's initial health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife0() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitLife0 = DCSUnit:getLife0() - return UnitLife0 - end - - return nil -end - ---- Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks. If there are additional fuel tanks the value may be greater than 1.0. --- @param Unit#UNIT self --- @return #number The relative amount of fuel (from 0.0 to 1.0). --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetFuel() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitFuel = DCSUnit:getFuel() - return UnitFuel - end - - return nil -end - ---- Returns the Unit's ammunition. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Ammo --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetAmmo() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitAmmo = DCSUnit:getAmmo() - return UnitAmmo - end - - return nil -end - ---- Returns the unit sensors. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Sensors --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetSensors() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitSensors = DCSUnit:getSensors() - return UnitSensors - end - - return nil -end - --- Need to add here a function per sensortype --- unit:hasSensors(Unit.SensorType.RADAR, Unit.RadarType.AS) - ---- Returns two values: --- --- * First value indicates if at least one of the unit's radar(s) is on. --- * Second value is the object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @param Unit#UNIT self --- @return #boolean Indicates if at least one of the unit's radar(s) is on. --- @return DCSObject#Object The object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetRadar() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitRadarOn, UnitRadarObject = DCSUnit:getRadar() - return UnitRadarOn, UnitRadarObject - end - - return nil, nil -end - --- Need to add here functions to check if radar is on and which object etc. - ---- Returns unit descriptor. Descriptor type depends on unit category. --- @param Unit#UNIT self --- @return DCSUnit#Unit.Desc The Unit descriptor. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetDesc() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitDesc = DCSUnit:getDesc() - return UnitDesc - end - - return nil -end - - ---- Returns the type name of the DCS Unit. --- @param Unit#UNIT self --- @return #string The type name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetTypeName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitTypeName = DCSUnit:getTypeName() - self:T3( UnitTypeName ) - return UnitTypeName - end - - return nil -end - - - ---- Returns the prefix name of the DCS Unit. A prefix name is a part of the name before a '#'-sign. --- DCS Units spawned with the @{SPAWN} class contain a '#'-sign to indicate the end of the (base) DCS Unit name. --- The spawn sequence number and unit number are contained within the name after the '#' sign. --- @param Unit#UNIT self --- @return #string The name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPrefix() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPrefix = string.match( self.UnitName, ".*#" ):sub( 1, -2 ) - self:T3( UnitPrefix ) - return UnitPrefix - end - - return nil -end - - - ---- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Vec2 The 2D point vector of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPointVec2() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPosition().p - - local UnitPointVec2 = {} - UnitPointVec2.x = UnitPointVec3.x - UnitPointVec2.y = UnitPointVec3.z - - self:T3( UnitPointVec2 ) - return UnitPointVec2 - end - - return nil -end - - ---- Returns the @{DCSTypes#Vec3} vector indicating the point in 3D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Vec3 The 3D point vector of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPointVec3() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPosition().p - self:T3( UnitPointVec3 ) - return UnitPointVec3 - end - - return nil -end - ---- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the DCS Unit within the mission. --- @param Unit#UNIT self --- @return DCSTypes#Position The 3D position vectors of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPositionVec3() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPosition = DCSUnit:getPosition() - self:T3( UnitPosition ) - return UnitPosition - end - - return nil -end - ---- Returns the DCS Unit velocity vector. --- @param Unit#UNIT self --- @return DCSTypes#Vec3 The velocity vector --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetVelocity() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitVelocityVec3 = DCSUnit:getVelocity() - self:T3( UnitVelocityVec3 ) - return UnitVelocityVec3 - end - - return nil -end - ---- Returns true if the DCS Unit is in the air. --- @param Unit#UNIT self --- @return #boolean true if in the air. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:InAir() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitInAir = DCSUnit:inAir() - self:T3( UnitInAir ) - return UnitInAir - end - - return nil -end - ---- Returns the altitude of the DCS Unit. --- @param Unit#UNIT self --- @return DCSTypes#Distance The altitude of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetAltitude() - self:F2() - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPointVec3 = DCSUnit:getPoint() --DCSTypes#Vec3 - return UnitPointVec3.y - end - - return nil -end - ---- Returns true if there is an **other** DCS Unit within a radius of the current 2D point of the DCS Unit. --- @param Unit#UNIT self --- @param Unit#UNIT AwaitUnit The other UNIT wrapper object. --- @param Radius The radius in meters with the DCS Unit in the centre. --- @return true If the other DCS Unit is within the radius of the 2D point of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:OtherUnitInRadius( AwaitUnit, Radius ) - self:F2( { self.UnitName, AwaitUnit.UnitName, Radius } ) - - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitPos = self:GetPointVec3() - local AwaitUnitPos = AwaitUnit:GetPointVec3() - - if (((UnitPos.x - AwaitUnitPos.x)^2 + (UnitPos.z - AwaitUnitPos.z)^2)^0.5 <= Radius) then - self:T3( "true" ) - return true - else - self:T3( "false" ) - return false - end - end - - return nil -end - ---- Returns the DCS Unit category name as defined within the DCS Unit Descriptor. --- @param Unit#UNIT self --- @return #string The DCS Unit Category Name -function UNIT:GetCategoryName() - local DCSUnit = self:GetDCSUnit() - - if DCSUnit then - local UnitCategoryName = self.CategoryName[ self:GetDesc().category ] - return UnitCategoryName - end - - return nil -end - ---- Signal a flare at the position of the UNIT. --- @param #UNIT self -function UNIT:Flare( FlareColor ) - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), FlareColor , 0 ) -end - ---- Signal a white flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareWhite() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.White , 0 ) -end - ---- Signal a yellow flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareYellow() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Yellow , 0 ) -end - ---- Signal a green flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareGreen() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Green , 0 ) -end - ---- Signal a red flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareRed() - self:F2() - trigger.action.signalFlare( self:GetPointVec3(), trigger.flareColor.Red, 0 ) -end - ---- Smoke the UNIT. --- @param #UNIT self -function UNIT:Smoke( SmokeColor ) - self:F2() - trigger.action.smoke( self:GetPointVec3(), SmokeColor ) -end - ---- Smoke the UNIT Green. --- @param #UNIT self -function UNIT:SmokeGreen() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Green ) -end - ---- Smoke the UNIT Red. --- @param #UNIT self -function UNIT:SmokeRed() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Red ) -end - ---- Smoke the UNIT White. --- @param #UNIT self -function UNIT:SmokeWhite() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.White ) -end - ---- Smoke the UNIT Orange. --- @param #UNIT self -function UNIT:SmokeOrange() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Orange ) -end - ---- Smoke the UNIT Blue. --- @param #UNIT self -function UNIT:SmokeBlue() - self:F2() - trigger.action.smoke( self:GetPointVec3(), trigger.smokeColor.Blue ) -end - --- Is methods - ---- Returns if the unit is of an air category. --- If the unit is a helicopter or a plane, then this method will return true, otherwise false. --- @param #UNIT self --- @return #boolean Air category evaluation result. -function UNIT:IsAir() - self:F2() - - local UnitDescriptor = self.DCSUnit:getDesc() - self:T3( { UnitDescriptor.category, Unit.Category.AIRPLANE, Unit.Category.HELICOPTER } ) - - local IsAirResult = ( UnitDescriptor.category == Unit.Category.AIRPLANE ) or ( UnitDescriptor.category == Unit.Category.HELICOPTER ) - - self:T3( IsAirResult ) - return IsAirResult -end - ---- ZONE Classes --- ============= --- This module contains the ZONE classes, inherited from @{Zone#ZONE_BASE}. --- There are essentially two core functions that zones accomodate: --- --- * Test if an object is within the zone boundaries. --- * Provide the zone behaviour. Some zones are static, while others are moveable. --- --- The object classes are using the zone classes to test the zone boundaries, which can take various forms: --- --- * Test if completely within the zone. --- * Test if partly within the zone (for @{Group#GROUP} objects). --- * Test if not in the zone. --- * Distance to the nearest intersecting point of the zone. --- * Distance to the center of the zone. --- * ... --- --- Each of these ZONE classes have a zone name, and specific parameters defining the zone type: --- --- * @{Zone#ZONE_BASE}: The ZONE_BASE class defining the base for all other zone classes. --- * @{Zone#ZONE_RADIUS}: The ZONE_RADIUS class defined by a zone name, a location and a radius. --- * @{Zone#ZONE}: The ZONE class, defined by the zone name as defined within the Mission Editor. --- * @{Zone#ZONE_UNIT}: The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- * @{Zone#ZONE_POLYGON}: The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- --- Polymorphic methods --- =================== --- Each zone implements two polymorphic functions defined in @{Zone#ZONE_BASE}: --- --- * @{#ZONE_BASE.IsPointVec2InZone}: Returns if a location is within the zone. --- * @{#ZONE_BASE.IsPointVec3InZone}: Returns if a point is within the zone. --- --- @module Zone --- @author FlightControl - - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) - - - ---- The ZONE_BASE class --- @type ZONE_BASE --- @Extends Base#BASE -ZONE_BASE = { - ClassName = "ZONE_BASE", - } - -function ZONE_BASE:New( ZoneName ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( ZoneName ) - - self.ZoneName = ZoneName - - return self -end - ---- Returns if a location is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_BASE:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec3 PointVec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_BASE:IsPointVec3InZone( PointVec3 ) - self:F2( PointVec3 ) - - local InZone = self:IsPointVec2InZone( { x = PointVec3.x, y = PointVec3.z } ) - - return InZone -end - - ---- The ZONE_RADIUS class, defined by a zone name, a location and a radius. --- @type ZONE_RADIUS --- @field DCSTypes#Vec2 PointVec2 The current location of the zone. --- @field DCSTypes#Distance Radius The radius of the zone. --- @Extends Zone#ZONE_BASE -ZONE_RADIUS = { - ClassName="ZONE_RADIUS", - } - ---- Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location of the zone. --- @param DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_RADIUS -function ZONE_RADIUS:New( ZoneName, PointVec2, Radius ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) - self:F( { ZoneName, PointVec2, Radius } ) - - self.Radius = Radius - self.PointVec2 = PointVec2 - - return self -end - - ---- Returns the radius of the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:GetRadius() - self:F2( self.ZoneName ) - - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Sets the radius of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Distance Radius The radius of the zone. --- @return DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:SetRadius( Radius ) - self:F2( self.ZoneName ) - - self.Radius = Radius - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Returns the location of the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Vec2 The location of the zone. -function ZONE_RADIUS:GetPointVec2() - self:F2( self.ZoneName ) - - self:T2( { self.PointVec2 } ) - - return self.PointVec2 -end - ---- Sets the location of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The new location of the zone. --- @return DCSTypes#Vec2 The new location of the zone. -function ZONE_RADIUS:SetPointVec2( PointVec2 ) - self:F2( self.ZoneName ) - - self.PointVec2 = PointVec2 - - self:T2( { self.PointVec2 } ) - - return self.PointVec2 -end - ---- Returns the point of the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return DCSTypes#Vec3 The point of the zone. -function ZONE_RADIUS:GetPointVec3( Height ) - self:F2( self.ZoneName ) - - local PointVec2 = self:GetPointVec2() - - local PointVec3 = { x = PointVec2.x, y = land.getHeight( self:GetPointVec2() ) + Height, z = PointVec2.y } - - self:T2( { PointVec3 } ) - - return PointVec3 -end - ---- Returns if a location is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_RADIUS:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - if (( PointVec2.x - self.PointVec2.x )^2 + ( PointVec2.y - self.PointVec2.y ) ^2 ) ^ 0.5 <= self.Radius then - return true - end - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_RADIUS self --- @param DCSTypes#Vec3 PointVec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_RADIUS:IsPointVec3InZone( PointVec3 ) - self:F2( PointVec3 ) - - local InZone = self:IsPointVec3InZone( { x = PointVec3.x, y = PointVec3.z } ) - - return InZone -end - ---- Returns a random location within the zone. --- @param #ZONE_RADIUS self --- @return DCSTypes#Vec2 The random location within the zone. -function ZONE_RADIUS:GetRandomPointVec2() - self:F( self.ZoneName ) - - local Point = {} - - local angle = math.random() * math.pi*2; - Point.x = self.PointVec2.x + math.cos( angle ) * math.random() * self.Radius; - Point.y = self.PointVec2.y + math.sin( angle ) * math.random() * self.Radius; - - self:T( { Point } ) - - return Point -end - - - ---- The ZONE class, defined by the zone name as defined within the Mission Editor. The location and the radius are automatically collected from the mission settings. --- @type ZONE --- @Extends Zone#ZONE_RADIUS -ZONE = { - ClassName="ZONE", - } - - ---- Constructor of ZONE, taking the zone name. --- @param #ZONE self --- @param #string ZoneName The name of the zone as defined within the mission editor. --- @return #ZONE -function ZONE:New( ZoneName ) - - local Zone = trigger.misc.getZone( ZoneName ) - - if not Zone then - error( "Zone " .. ZoneName .. " does not exist." ) - return nil - end - - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.x, y = Zone.y }, Zone.radius ) ) - self:F( ZoneName ) - - self.Zone = Zone - - return self -end - - - ---- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- @type ZONE_UNIT --- @field Unit#UNIT ZoneUNIT --- @Extends Zone#ZONE_RADIUS -ZONE_UNIT = { - ClassName="ZONE_UNIT", - } - ---- Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius. --- @param #ZONE_UNIT self --- @param #string ZoneName Name of the zone. --- @param Unit#UNIT ZoneUNIT The unit as the center of the zone. --- @param DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_UNIT self -function ZONE_UNIT:New( ZoneName, ZoneUNIT, Radius ) - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneUNIT:GetPointVec2(), Radius ) ) - self:F( { ZoneName, ZoneUNIT:GetPointVec2(), Radius } ) - - self.ZoneUNIT = ZoneUNIT - - return self -end - - ---- Returns the current location of the @{Unit#UNIT}. --- @param #ZONE_UNIT self --- @return DCSTypes#Vec2 The location of the zone based on the @{Unit#UNIT}location. -function ZONE_UNIT:GetPointVec2() - self:F( self.ZoneName ) - - local ZonePointVec2 = self.ZoneUNIT:GetPointVec2() - - self:T( { ZonePointVec2 } ) - - return ZonePointVec2 -end - - ---- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- @type ZONE_POLYGON --- @Extends Zone#ZONE_BASE -ZONE_POLYGON = { - ClassName="ZONE_POLYGON", - } - ---- Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the @{Group#GROUP} defined within the Mission Editor. --- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON. --- @param #ZONE_POLYGON self --- @param #string ZoneName Name of the zone. --- @param Group#GROUP ZoneGroup The GROUP waypoints as defined within the Mission Editor define the polygon shape. --- @return #ZONE_POLYGON self -function ZONE_POLYGON:New( ZoneName, ZoneGroup ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) - self:F( { ZoneName, ZoneGroup } ) - - local GroupPoints = ZoneGroup:GetTaskRoute() - local i = 0 - - self.Polygon = {} - - for i = 1, #GroupPoints do - self.Polygon[i] = {} - self.Polygon[i].x = GroupPoints[i].x - self.Polygon[i].y = GroupPoints[i].y - end - - return self -end - - ---- Returns if a location is within the zone. --- @param #ZONE_POLYGON self --- @param DCSTypes#Vec2 PointVec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_POLYGON:IsPointVec2InZone( PointVec2 ) - self:F2( PointVec2 ) - - local i - local j - local c = false - - i = 1 - j = #self.Polygon - - while i < #self.Polygon do - j = i - i = i + 1 - self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) - if ( ( ( self.Polygon[i].y > PointVec2.y ) ~= ( self.Polygon[j].y > PointVec2.y ) ) and - ( PointVec2.x < ( self.Polygon[j].x - self.Polygon[i].x ) * ( PointVec2.y - self.Polygon[i].y ) / ( self.Polygon[j].y - self.Polygon[i].y ) + self.Polygon[i].x ) - ) then - c = not c - end - self:T( { "c = ", c } ) - end - - return c -end - ---- The CLIENT models client units in multi player missions. --- --- @{#CLIENT} class --- ================ --- Clients are those **Units** defined within the Mission Editor that have the skillset defined as __Client__ or __Player__. --- Note that clients are NOT the same as Units, they are NOT necessarily alive. --- The @{CLIENT} class is a wrapper class to handle the DCS Unit objects that have the skillset defined as __Client__ or __Player__: --- --- * Wraps the DCS Unit objects with skill level set to Player or Client. --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Group API set. --- * When player joins Unit, execute alive init logic. --- * Handles messages to players. --- * Manage the "state" of the DCS Unit. --- --- Clients are being used by the @{MISSION} class to follow players and register their successes. --- --- CLIENT reference methods --- ======================= --- For each DCS Unit having skill level Player or Client, a CLIENT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts). --- --- The CLIENT class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that CLIENT objects do not "contain" the DCS Unit object. --- The CLIENT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the CLIENT methods will return nil and log an exception in the DCS.log file. --- --- The CLIENT class provides the following functions to retrieve quickly the relevant CLIENT instance: --- --- * @{#CLIENT.Find}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit object. --- * @{#CLIENT.FindByName}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these CLIENT OBJECT REFERENCES! (make the CLIENT object references nil). --- --- @module Client --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Cargo" ) -Include.File( "Message" ) - - ---- The CLIENT class --- @type CLIENT --- @extends Unit#UNIT -CLIENT = { - ONBOARDSIDE = { - NONE = 0, - LEFT = 1, - RIGHT = 2, - BACK = 3, - FRONT = 4 - }, - ClassName = "CLIENT", - ClientName = nil, - ClientAlive = false, - ClientTransport = false, - ClientBriefingShown = false, - _Menus = {}, - _Tasks = {}, - Messages = { - } -} - - ---- Finds a CLIENT from the _DATABASE using the relevant DCS Unit. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:Find( DCSUnit ) - local ClientName = DCSUnit:getName() - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( ClientName ) - return ClientFound - end - - error( "CLIENT not found for: " .. ClientName ) -end - - ---- Finds a CLIENT from the _DATABASE using the relevant Client Unit Name. --- As an optional parameter, a briefing text can be given also. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:FindByName( ClientName, ClientBriefing ) - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( { ClientName, ClientBriefing } ) - ClientFound:AddBriefing( ClientBriefing ) - ClientFound.MessageSwitch = true - - return ClientFound - end - - error( "CLIENT not found for: " .. ClientName ) -end - -function CLIENT:Register( ClientName ) - local self = BASE:Inherit( self, UNIT:Register( ClientName ) ) - - self:F( ClientName ) - self.ClientName = ClientName - self.MessageSwitch = true - self.ClientAlive2 = false - - --self.AliveCheckScheduler = routines.scheduleFunction( self._AliveCheckScheduler, { self }, timer.getTime() + 1, 5 ) - self.AliveCheckScheduler = SCHEDULER:New( self, self._AliveCheckScheduler, {}, 1, 5 ) - - return self -end - - ---- Transport defines that the Client is a Transport. Transports show cargo. --- @param #CLIENT self --- @return #CLIENT -function CLIENT:Transport() - self:F() - - self.ClientTransport = true - return self -end - ---- AddBriefing adds a briefing to a CLIENT when a player joins a mission. --- @param #CLIENT self --- @param #string ClientBriefing is the text defining the Mission briefing. --- @return #CLIENT self -function CLIENT:AddBriefing( ClientBriefing ) - self:F( ClientBriefing ) - self.ClientBriefing = ClientBriefing - self.ClientBriefingShown = false - - return self -end - ---- Show the briefing of a CLIENT. --- @param #CLIENT self --- @return #CLIENT self -function CLIENT:ShowBriefing() - self:F( { self.ClientName, self.ClientBriefingShown } ) - - if not self.ClientBriefingShown then - self.ClientBriefingShown = true - local Briefing = "" - if self.ClientBriefing then - Briefing = Briefing .. self.ClientBriefing - end - Briefing = Briefing .. " Press [LEFT ALT]+[B] to view the complete mission briefing." - self:Message( Briefing, 60, self.ClientName .. '/ClientBriefing', "Briefing" ) - end - - return self -end - ---- Show the mission briefing of a MISSION to the CLIENT. --- @param #CLIENT self --- @param #string MissionBriefing --- @return #CLIENT self -function CLIENT:ShowMissionBriefing( MissionBriefing ) - self:F( { self.ClientName } ) - - if MissionBriefing then - self:Message( MissionBriefing, 60, self.ClientName .. '/MissionBriefing', "Mission Briefing" ) - end - - return self -end - - - ---- Resets a CLIENT. --- @param #CLIENT self --- @param #string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client. -function CLIENT:Reset( ClientName ) - self:F() - self._Menus = {} -end - --- Is Functions - ---- Checks if the CLIENT is a multi-seated UNIT. --- @param #CLIENT self --- @return #boolean true if multi-seated. -function CLIENT:IsMultiSeated() - self:F( self.ClientName ) - - local ClientMultiSeatedTypes = { - ["Mi-8MT"] = "Mi-8MT", - ["UH-1H"] = "UH-1H", - ["P-51B"] = "P-51B" - } - - if self:IsAlive() then - local ClientTypeName = self:GetClientGroupUnit():GetTypeName() - if ClientMultiSeatedTypes[ClientTypeName] then - return true - end - end - - return false -end - ---- Checks for a client alive event and calls a function on a continuous basis. --- @param #CLIENT self --- @param #function CallBack Function. --- @return #CLIENT -function CLIENT:Alive( CallBack, ... ) - self:F() - - self.ClientCallBack = CallBack - self.ClientParameters = arg - - return self -end - ---- @param #CLIENT self -function CLIENT:_AliveCheckScheduler() - self:F( { self.ClientName, self.ClientAlive2, self.ClientBriefingShown } ) - - if self:IsAlive() then -- Polymorphic call of UNIT - if self.ClientAlive2 == false then - self:ShowBriefing() - if self.ClientCallBack then - self:T("Calling Callback function") - self.ClientCallBack( self, unpack( self.ClientParameters ) ) - end - self.ClientAlive2 = true - end - else - if self.ClientAlive2 == true then - self.ClientAlive2 = false - end - end - - return true -end - ---- Return the DCSGroup of a Client. --- This function is modified to deal with a couple of bugs in DCS 1.5.3 --- @param #CLIENT self --- @return DCSGroup#Group -function CLIENT:GetDCSGroup() - self:F3() - --- local ClientData = Group.getByName( self.ClientName ) --- if ClientData and ClientData:isExist() then --- self:T( self.ClientName .. " : group found!" ) --- return ClientData --- else --- return nil --- end - - local ClientUnit = Unit.getByName( self.ClientName ) - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - self:T3( { "CoalitionData:", CoalitionData } ) - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - - --self:E(self.ClientName) - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() and UnitData:getGroup():isExist() then - if ClientGroup:getID() == UnitData:getGroup():getID() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - self.ClientGroupID = ClientGroup:getID() - self.ClientGroupName = ClientGroup:getName() - return ClientGroup - end - else - -- Now we need to resolve the bugs in DCS 1.5 ... - -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) - self:T3( "Bug 1.5 logic" ) - local ClientGroupTemplate = _DATABASE.Templates.Units[self.ClientName].GroupTemplate - self.ClientGroupID = ClientGroupTemplate.groupId - self.ClientGroupName = _DATABASE.Templates.Units[self.ClientName].GroupName - self:T3( self.ClientName .. " : group found in bug 1.5 resolvement logic!" ) - return ClientGroup - end - -- else - -- error( "Client " .. self.ClientName .. " not found!" ) - end - else - --self:E( { "Client not found!", self.ClientName } ) - end - end - end - end - - -- For non player clients - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - return ClientGroup - end - end - end - - self.ClientGroupID = nil - self.ClientGroupUnit = nil - - return nil -end - - --- TODO: Check DCSTypes#Group.ID ---- Get the group ID of the client. --- @param #CLIENT self --- @return DCSTypes#Group.ID -function CLIENT:GetClientGroupID() - - local ClientGroup = self:GetDCSGroup() - - --self:E( self.ClientGroupID ) -- Determined in GetDCSGroup() - return self.ClientGroupID -end - - ---- Get the name of the group of the client. --- @param #CLIENT self --- @return #string -function CLIENT:GetClientGroupName() - - local ClientGroup = self:GetDCSGroup() - - self:T( self.ClientGroupName ) -- Determined in GetDCSGroup() - return self.ClientGroupName -end - ---- Returns the UNIT of the CLIENT. --- @param #CLIENT self --- @return Unit#UNIT -function CLIENT:GetClientGroupUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - self:T( self.ClientDCSUnit ) - if ClientDCSUnit and ClientDCSUnit:isExist() then - local ClientUnit = _DATABASE:FindUnit( self.ClientName ) - self:T2( ClientUnit ) - return ClientUnit - end -end - ---- Returns the DCSUnit of the CLIENT. --- @param #CLIENT self --- @return DCSTypes#Unit -function CLIENT:GetClientGroupDCSUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - if ClientDCSUnit and ClientDCSUnit:isExist() then - self:T2( ClientDCSUnit ) - return ClientDCSUnit - end -end - - ---- Evaluates if the CLIENT is a transport. --- @param #CLIENT self --- @return #boolean true is a transport. -function CLIENT:IsTransport() - self:F() - return self.ClientTransport -end - ---- Shows the @{Cargo#CARGO} contained within the CLIENT to the player as a message. --- The @{Cargo#CARGO} is shown using the @{Message#MESSAGE} distribution system. --- @param #CLIENT self -function CLIENT:ShowCargo() - self:F() - - local CargoMsg = "" - - for CargoName, Cargo in pairs( CARGOS ) do - if self == Cargo:IsLoadedInClient() then - CargoMsg = CargoMsg .. Cargo.CargoName .. " Type:" .. Cargo.CargoType .. " Weight: " .. Cargo.CargoWeight .. "\n" - end - end - - if CargoMsg == "" then - CargoMsg = "empty" - end - - self:Message( CargoMsg, 15, self.ClientName .. "/Cargo", "Co-Pilot: Cargo Status", 30 ) - -end - --- TODO (1) I urgently need to revise this. ---- A local function called by the DCS World Menu system to switch off messages. -function CLIENT.SwitchMessages( PrmTable ) - PrmTable[1].MessageSwitch = PrmTable[2] -end - ---- The main message driver for the CLIENT. --- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system. --- @param #CLIENT self --- @param #string Message is the text describing the message. --- @param #number MessageDuration is the duration in seconds that the Message should be displayed. --- @param #string MessageId is a text identifying the Message in the MessageQueue. The Message system overwrites Messages with the same MessageId --- @param #string MessageCategory is the category of the message (the title). --- @param #number MessageInterval is the interval in seconds between the display of the @{Message#MESSAGE} when the CLIENT is in the air. -function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, MessageInterval ) - self:F( { Message, MessageDuration, MessageId, MessageCategory, MessageInterval } ) - - if not self.MenuMessages then - if self:GetClientGroupID() then - self.MenuMessages = MENU_CLIENT:New( self, 'Messages' ) - self.MenuRouteMessageOn = MENU_CLIENT_COMMAND:New( self, 'Messages On', self.MenuMessages, CLIENT.SwitchMessages, { self, true } ) - self.MenuRouteMessageOff = MENU_CLIENT_COMMAND:New( self,'Messages Off', self.MenuMessages, CLIENT.SwitchMessages, { self, false } ) - end - end - - if self.MessageSwitch == true then - if MessageCategory == nil then - MessageCategory = "Messages" - end - if self.Messages[MessageId] == nil then - self.Messages[MessageId] = {} - self.Messages[MessageId].MessageId = MessageId - self.Messages[MessageId].MessageTime = timer.getTime() - self.Messages[MessageId].MessageDuration = MessageDuration - if MessageInterval == nil then - self.Messages[MessageId].MessageInterval = 600 - else - self.Messages[MessageId].MessageInterval = MessageInterval - end - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - else - if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then - if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + 10 then - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - self.Messages[MessageId].MessageTime = timer.getTime() - end - else - if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + self.Messages[MessageId].MessageInterval then - MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self ) - self.Messages[MessageId].MessageTime = timer.getTime() - end - end - end - end -end ---- Manage the mission database. --- --- @{#DATABASE} class --- ================== --- Mission designers can use the DATABASE class to refer to: --- --- * UNITS --- * GROUPS --- * players --- * alive players --- * CLIENTS --- * alive CLIENTS --- --- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Gruop templates as defined within the Mission Editor. --- --- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. --- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. --- --- DATABASE iterators: --- =================== --- You can iterate the database with the available iterator methods. --- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the DATABASE: --- --- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. --- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayer}: Calls a function for each player it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayerAlive}: Calls a function for each alive player it finds within the DATABASE. --- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. --- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. --- --- @module Database --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Menu" ) -Include.File( "Group" ) -Include.File( "Unit" ) -Include.File( "Event" ) -Include.File( "Client" ) - - ---- DATABASE class --- @type DATABASE --- @extends Base#BASE -DATABASE = { - ClassName = "DATABASE", - Templates = { - Units = {}, - Groups = {}, - ClientsByName = {}, - ClientsByID = {}, - }, - DCSUnits = {}, - DCSGroups = {}, - UNITS = {}, - GROUPS = {}, - PLAYERS = {}, - PLAYERSALIVE = {}, - CLIENTS = {}, - CLIENTSALIVE = {}, - NavPoints = {}, -} - -local _DATABASECoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _DATABASECategory = - { - [Unit.Category.AIRPLANE] = "Plane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Vehicle", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - - ---- Creates a new DATABASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #DATABASE self --- @return #DATABASE --- @usage --- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. --- DBObject = DATABASE:New() -function DATABASE:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - - _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) - _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) - - - -- Follow alive players and clients - _EVENTDISPATCHER:OnPlayerEnterUnit( self._EventOnPlayerEnterUnit, self ) - _EVENTDISPATCHER:OnPlayerLeaveUnit( self._EventOnPlayerLeaveUnit, self ) - - self:_RegisterTemplates() - self:_RegisterDatabase() - self:_RegisterPlayers() - - return self -end - ---- Finds a Unit based on the Unit Name. --- @param #DATABASE self --- @param #string UnitName --- @return Unit#UNIT The found Unit. -function DATABASE:FindUnit( UnitName ) - - local UnitFound = self.UNITS[UnitName] - return UnitFound -end - - ---- Adds a Unit based on the Unit Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddUnit( DCSUnit, DCSUnitName ) - - self.DCSUnits[DCSUnitName] = DCSUnit - self.UNITS[DCSUnitName] = UNIT:Register( DCSUnitName ) -end - - ---- Deletes a Unit from the DATABASE based on the Unit Name. --- @param #DATABASE self -function DATABASE:DeleteUnit( DCSUnitName ) - - self.DCSUnits[DCSUnitName] = nil -end - - ---- Finds a CLIENT based on the ClientName. --- @param #DATABASE self --- @param #string ClientName --- @return Client#CLIENT The found CLIENT. -function DATABASE:FindClient( ClientName ) - - local ClientFound = self.CLIENTS[ClientName] - return ClientFound -end - - ---- Adds a CLIENT based on the ClientName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddClient( ClientName ) - - self.CLIENTS[ClientName] = CLIENT:Register( ClientName ) - self:E( self.CLIENTS[ClientName]:GetClassNameAndID() ) -end - - ---- Finds a GROUP based on the GroupName. --- @param #DATABASE self --- @param #string GroupName --- @return Group#GROUP The found GROUP. -function DATABASE:FindGroup( GroupName ) - - local GroupFound = self.GROUPS[GroupName] - return GroupFound -end - - ---- Adds a GROUP based on the GroupName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddGroup( DCSGroup, GroupName ) - - self.DCSGroups[GroupName] = DCSGroup - self.GROUPS[GroupName] = GROUP:Register( GroupName ) -end - ---- Adds a player based on the Player Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddPlayer( UnitName, PlayerName ) - - if PlayerName then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self.PLAYERS[PlayerName] = PlayerName - self.PLAYERSALIVE[PlayerName] = PlayerName - self.CLIENTSALIVE[PlayerName] = self:FindClient( UnitName ) - end -end - ---- Deletes a player from the DATABASE based on the Player Name. --- @param #DATABASE self -function DATABASE:DeletePlayer( PlayerName ) - - if PlayerName then - self:E( { "Clean player:", PlayerName } ) - self.PLAYERSALIVE[PlayerName] = nil - self.CLIENTSALIVE[PlayerName] = nil - end -end - - ---- Instantiate new Groups within the DCSRTE. --- This method expects EXACTLY the same structure as a structure within the ME, and needs 2 additional fields defined: --- SpawnCountryID, SpawnCategoryID --- This method is used by the SPAWN class. --- @param #DATABASE self --- @param #table SpawnTemplate --- @return #DATABASE self -function DATABASE:Spawn( SpawnTemplate ) - self:F2( SpawnTemplate.name ) - - self:T2( { SpawnTemplate.SpawnCountryID, SpawnTemplate.SpawnCategoryID } ) - - -- Copy the spawn variables of the template in temporary storage, nullify, and restore the spawn variables. - local SpawnCoalitionID = SpawnTemplate.SpawnCoalitionID - local SpawnCountryID = SpawnTemplate.SpawnCountryID - local SpawnCategoryID = SpawnTemplate.SpawnCategoryID - - -- Nullify - SpawnTemplate.SpawnCoalitionID = nil - SpawnTemplate.SpawnCountryID = nil - SpawnTemplate.SpawnCategoryID = nil - - self:_RegisterTemplate( SpawnTemplate ) - coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) - - -- Restore - SpawnTemplate.SpawnCoalitionID = SpawnCoalitionID - SpawnTemplate.SpawnCountryID = SpawnCountryID - SpawnTemplate.SpawnCategoryID = SpawnCategoryID - - - local SpawnGroup = GROUP:Register( SpawnTemplate.name ) - return SpawnGroup -end - ---- Set a status to a Group within the Database, this to check crossing events for example. -function DATABASE:SetStatusGroup( GroupName, Status ) - self:F2( Status ) - - self.Templates.Groups[GroupName].Status = Status -end - ---- Get a status to a Group within the Database, this to check crossing events for example. -function DATABASE:GetStatusGroup( GroupName ) - self:F2( Status ) - - if self.Templates.Groups[GroupName] then - return self.Templates.Groups[GroupName].Status - else - return "" - end -end - - ---- Private method that registers new Group Templates within the DATABASE Object. --- @param #DATABASE self --- @param #table GroupTemplate --- @return #DATABASE self -function DATABASE:_RegisterTemplate( GroupTemplate ) - - local GroupTemplateName = env.getValueDictByKey(GroupTemplate.name) - - if not self.Templates.Groups[GroupTemplateName] then - self.Templates.Groups[GroupTemplateName] = {} - self.Templates.Groups[GroupTemplateName].Status = nil - end - - -- Delete the spans from the route, it is not needed and takes memory. - if GroupTemplate.route and GroupTemplate.route.spans then - GroupTemplate.route.spans = nil - end - - self.Templates.Groups[GroupTemplateName].GroupName = GroupTemplateName - self.Templates.Groups[GroupTemplateName].Template = GroupTemplate - self.Templates.Groups[GroupTemplateName].groupId = GroupTemplate.groupId - self.Templates.Groups[GroupTemplateName].UnitCount = #GroupTemplate.units - self.Templates.Groups[GroupTemplateName].Units = GroupTemplate.units - - self:T2( { "Group", self.Templates.Groups[GroupTemplateName].GroupName, self.Templates.Groups[GroupTemplateName].UnitCount } ) - - for unit_num, UnitTemplate in pairs( GroupTemplate.units ) do - - local UnitTemplateName = env.getValueDictByKey(UnitTemplate.name) - self.Templates.Units[UnitTemplateName] = {} - self.Templates.Units[UnitTemplateName].UnitName = UnitTemplateName - self.Templates.Units[UnitTemplateName].Template = UnitTemplate - self.Templates.Units[UnitTemplateName].GroupName = GroupTemplateName - self.Templates.Units[UnitTemplateName].GroupTemplate = GroupTemplate - self.Templates.Units[UnitTemplateName].GroupId = GroupTemplate.groupId - self:E( {"skill",UnitTemplate.skill}) - if UnitTemplate.skill and (UnitTemplate.skill == "Client" or UnitTemplate.skill == "Player") then - self.Templates.ClientsByName[UnitTemplateName] = UnitTemplate - self.Templates.ClientsByID[UnitTemplate.unitId] = UnitTemplate - end - self:E( { "Unit", self.Templates.Units[UnitTemplateName].UnitName } ) - end -end - - ---- Private method that registers all alive players in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterPlayers() - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - local UnitName = UnitData:getName() - local PlayerName = UnitData:getPlayerName() - if not self.PLAYERS[PlayerName] then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self:AddPlayer( UnitName, PlayerName ) - end - end - end - end - - return self -end - - ---- Private method that registers all datapoints within in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterDatabase() - - local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for DCSGroupId, DCSGroup in pairs( CoalitionData ) do - - if DCSGroup:isExist() then - local DCSGroupName = DCSGroup:getName() - - self:E( { "Register Group:", DCSGroup, DCSGroupName } ) - self:AddGroup( DCSGroup, DCSGroupName ) - - for DCSUnitId, DCSUnit in pairs( DCSGroup:getUnits() ) do - - local DCSUnitName = DCSUnit:getName() - self:E( { "Register Unit:", DCSUnit, DCSUnitName } ) - self:AddUnit( DCSUnit, DCSUnitName ) - end - else - self:E( { "Group does not exist: ", DCSGroup } ) - end - - end - end - - for ClientName, ClientTemplate in pairs( self.Templates.ClientsByName ) do - self:E( { "Adding Client:", ClientName } ) - self:AddClient( ClientName ) - end - - return self -end - ---- Events - ---- Handles the OnBirth event for the alive units set. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnBirth( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - self:AddUnit( Event.IniDCSUnit, Event.IniDCSUnitName ) - self:AddGroup( Event.IniDCSGroup, Event.IniDCSGroupName ) - self:_EventOnPlayerEnterUnit( Event ) - end -end - - ---- Handles the OnDead or OnCrash event for alive units set. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnDeadOrCrash( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - if self.DCSUnits[Event.IniDCSUnitName] then - self:DeleteUnit( Event.IniDCSUnitName ) - -- add logic to correctly remove a group once all units are destroyed... - end - end -end - - ---- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnPlayerEnterUnit( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if not self.PLAYERSALIVE[PlayerName] then - self:AddPlayer( Event.IniDCSUnitName, PlayerName ) - end - end -end - - ---- Handles the OnPlayerLeaveUnit event to clean the active players table. --- @param #DATABASE self --- @param Event#EVENTDATA Event -function DATABASE:_EventOnPlayerLeaveUnit( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if self.PLAYERSALIVE[PlayerName] then - self:DeletePlayer( PlayerName ) - end - end -end - ---- Iterators - ---- Iterate the DATABASE and call an iterator function for the given set, providing the Object for each element within the set and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. --- @return #DATABASE self -function DATABASE:ForEach( IteratorFunction, arg, Set ) - self:F2( arg ) - - local function CoRoutine() - local Count = 0 - for ObjectID, Object in pairs( Set ) do - self:T2( Object ) - IteratorFunction( Object, unpack( arg ) ) - Count = Count + 1 - if Count % 10 == 0 then - coroutine.yield( false ) - end - end - return true - end - - local co = coroutine.create( CoRoutine ) - - local function Schedule() - - local status, res = coroutine.resume( co ) - self:T2( { status, res } ) - - if status == false then - error( res ) - end - if res == false then - return true -- resume next time the loop - end - - return false - end - - local Scheduler = SCHEDULER:New( self, Schedule, {}, 0.001, 0.001, 0 ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** unit, providing the DCSUnit and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive unit in the database. The function needs to accept a DCSUnit parameter. --- @return #DATABASE self -function DATABASE:ForEachDCSUnit( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.DCSUnits ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** UNIT, providing the UNIT and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachUnit( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.UNITS ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the database. The function needs to accept a GROUP parameter. --- @return #DATABASE self -function DATABASE:ForEachGroup( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.GROUPS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each player, providing the player name and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. --- @return #DATABASE self -function DATABASE:ForEachPlayer( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** player, providing the Unit of the player and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachPlayerAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERSALIVE ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClient( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTS ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each **ALIVE** CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClientAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTSALIVE ) - - return self -end - - -function DATABASE:_RegisterTemplates() - self:F2() - - self.Navpoints = {} - self.UNITS = {} - --Build routines.db.units and self.Navpoints - for coa_name, coa_data in pairs(env.mission.coalition) do - - if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then - --self.Units[coa_name] = {} - - ---------------------------------------------- - -- build nav points DB - self.Navpoints[coa_name] = {} - if coa_data.nav_points then --navpoints - for nav_ind, nav_data in pairs(coa_data.nav_points) do - - if type(nav_data) == 'table' then - self.Navpoints[coa_name][nav_ind] = routines.utils.deepCopy(nav_data) - - self.Navpoints[coa_name][nav_ind]['name'] = nav_data.callsignStr -- name is a little bit more self-explanatory. - self.Navpoints[coa_name][nav_ind]['point'] = {} -- point is used by SSE, support it. - self.Navpoints[coa_name][nav_ind]['point']['x'] = nav_data.x - self.Navpoints[coa_name][nav_ind]['point']['y'] = 0 - self.Navpoints[coa_name][nav_ind]['point']['z'] = nav_data.y - end - end - end - ------------------------------------------------- - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - - local countryName = string.lower(cntry_data.name) - --self.Units[coa_name][countryName] = {} - --self.Units[coa_name][countryName]["countryId"] = cntry_data.id - - if type(cntry_data) == 'table' then --just making sure - - for obj_type_name, obj_type_data in pairs(cntry_data) do - - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check - - local category = obj_type_name - - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - - --self.Units[coa_name][countryName][category] = {} - - for group_num, GroupTemplate in pairs(obj_type_data.group) do - - if GroupTemplate and GroupTemplate.units and type(GroupTemplate.units) == 'table' then --making sure again- this is a valid group - self:_RegisterTemplate( GroupTemplate ) - end --if GroupTemplate and GroupTemplate.units then - end --for group_num, GroupTemplate in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --if type(cntry_data) == 'table' then - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do - - return self -end - - - - ---- The main include file for the MOOSE system. - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Event" ) - --- The order of the declarations is important here. Don't touch it. - ---- Declare the event dispatcher based on the EVENT class -_EVENTDISPATCHER = EVENT:New() -- #EVENT - ---- Declare the main database object, which is used internally by the MOOSE classes. -_DATABASE = DATABASE:New() -- Database#DATABASE - ---- Scoring system for MOOSE. --- This scoring class calculates the hits and kills that players make within a simulation session. --- Scoring is calculated using a defined algorithm. --- With a small change in MissionScripting.lua, the scoring can also be logged in a CSV file, that can then be uploaded --- to a database or a BI tool to publish the scoring results to the player community. --- @module Scoring --- @author FlightControl - - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Menu" ) -Include.File( "Group" ) -Include.File( "Event" ) - - ---- The Scoring class --- @type SCORING --- @field Players A collection of the current players that have joined the game. --- @extends Base#BASE -SCORING = { - ClassName = "SCORING", - ClassID = 0, - Players = {}, -} - -local _SCORINGCoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _SCORINGCategory = - { - [Unit.Category.AIRPLANE] = "Plane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Vehicle", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - ---- Creates a new SCORING object to administer the scoring achieved by players. --- @param #SCORING self --- @param #string GameName The name of the game. This name is also logged in the CSV score file. --- @return #SCORING self --- @usage --- -- Define a new scoring object for the mission Gori Valley. --- ScoringObject = SCORING:New( "Gori Valley" ) -function SCORING:New( GameName ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - - if GameName then - self.GameName = GameName - else - error( "A game name must be given to register the scoring results" ) - end - - - _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) - _EVENTDISPATCHER:OnHit( self._EventOnHit, self ) - - --self.SchedulerId = routines.scheduleFunction( SCORING._FollowPlayersScheduled, { self }, 0, 5 ) - self.SchedulerId = SCHEDULER:New( self, self._FollowPlayersScheduled, {}, 0, 5 ) - - self:ScoreMenu() - - return self - -end - ---- Creates a score radio menu. Can be accessed using Radio -> F10. --- @param #SCORING self --- @return #SCORING self -function SCORING:ScoreMenu() - self.Menu = SUBMENU:New( 'Scoring' ) - self.AllScoresMenu = COMMANDMENU:New( 'Score All Active Players', self.Menu, SCORING.ReportScoreAll, self ) - --- = COMMANDMENU:New('Your Current Score', ReportScore, SCORING.ReportScorePlayer, self ) - return self -end - ---- Follows new players entering Clients within the DCSRTE. --- TODO: Need to see if i can catch this also with an event. It will eliminate the schedule ... -function SCORING:_FollowPlayersScheduled() - self:F3( "_FollowPlayersScheduled" ) - - local ClientUnit = 0 - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers(coalition.side.RED), AlivePlayersBlue = coalition.getPlayers(coalition.side.BLUE) } - local unitId - local unitData - local AlivePlayerUnits = {} - - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - self:T3( { "_FollowPlayersScheduled", CoalitionData } ) - for UnitId, UnitData in pairs( CoalitionData ) do - self:_AddPlayerFromUnit( UnitData ) - end - end - - return true -end - - ---- Track DEAD or CRASH events for the scoring. --- @param #SCORING self --- @param Event#EVENTDATA Event -function SCORING:_EventOnDeadOrCrash( Event ) - self:F( { Event } ) - - local TargetUnit = nil - local TargetGroup = nil - local TargetUnitName = "" - local TargetGroupName = "" - local TargetPlayerName = "" - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - TargetUnit = Event.IniDCSUnit - TargetUnitName = Event.IniDCSUnitName - TargetGroup = Event.IniDCSGroup - TargetGroupName = Event.IniDCSGroupName - TargetPlayerName = TargetUnit:getPlayerName() - - TargetCoalition = TargetUnit:getCoalition() - --TargetCategory = TargetUnit:getCategory() - TargetCategory = TargetUnit:getDesc().category -- Workaround - TargetType = TargetUnit:getTypeName() - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType } ) - end - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Something got killed" ) - - -- Some variables - local InitUnitName = PlayerData.UnitName - local InitUnitType = PlayerData.UnitType - local InitCoalition = PlayerData.UnitCoalition - local InitCategory = PlayerData.UnitCategory - local InitUnitCoalition = _SCORINGCoalition[InitCoalition] - local InitUnitCategory = _SCORINGCategory[InitCategory] - - self:T( { InitUnitName, InitUnitType, InitUnitCoalition, InitCoalition, InitUnitCategory, InitCategory } ) - - -- What is he hitting? - if TargetCategory then - if PlayerData and PlayerData.Hit and PlayerData.Hit[TargetCategory] and PlayerData.Hit[TargetCategory][TargetUnitName] then -- Was there a hit for this unit for this player before registered??? - if not PlayerData.Kill[TargetCategory] then - PlayerData.Kill[TargetCategory] = {} - end - if not PlayerData.Kill[TargetCategory][TargetType] then - PlayerData.Kill[TargetCategory][TargetType] = {} - PlayerData.Kill[TargetCategory][TargetType].Score = 0 - PlayerData.Kill[TargetCategory][TargetType].ScoreKill = 0 - PlayerData.Kill[TargetCategory][TargetType].Penalty = 0 - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = 0 - end - - if InitCoalition == TargetCoalition then - PlayerData.Penalty = PlayerData.Penalty + 25 - PlayerData.Kill[TargetCategory][TargetType].Penalty = PlayerData.Kill[TargetCategory][TargetType].Penalty + 25 - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill = PlayerData.Kill[TargetCategory][TargetType].PenaltyKill + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty .. - ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, - "", 5, "/PENALTY" .. PlayerName .. "/" .. InitUnitName ):ToAll() - self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - PlayerData.Score = PlayerData.Score + 10 - PlayerData.Kill[TargetCategory][TargetType].Score = PlayerData.Kill[TargetCategory][TargetType].Score + 10 - PlayerData.Kill[TargetCategory][TargetType].ScoreKill = PlayerData.Kill[TargetCategory][TargetType].ScoreKill + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score .. - ". Score Total:" .. PlayerData.Score - PlayerData.Penalty, - "", 5, "/SCORE" .. PlayerName .. "/" .. InitUnitName ):ToAll() - self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - end - end - end - end -end - - - ---- Add a new player entering a Unit. -function SCORING:_AddPlayerFromUnit( UnitData ) - self:F( UnitData ) - - if UnitData and UnitData:isExist() then - local UnitName = UnitData:getName() - local PlayerName = UnitData:getPlayerName() - local UnitDesc = UnitData:getDesc() - local UnitCategory = UnitDesc.category - local UnitCoalition = UnitData:getCoalition() - local UnitTypeName = UnitData:getTypeName() - - self:T( { PlayerName, UnitName, UnitCategory, UnitCoalition, UnitTypeName } ) - - if self.Players[PlayerName] == nil then -- I believe this is the place where a Player gets a life in a mission when he enters a unit ... - self.Players[PlayerName] = {} - self.Players[PlayerName].Hit = {} - self.Players[PlayerName].Kill = {} - self.Players[PlayerName].Mission = {} - - -- for CategoryID, CategoryName in pairs( SCORINGCategory ) do - -- self.Players[PlayerName].Hit[CategoryID] = {} - -- self.Players[PlayerName].Kill[CategoryID] = {} - -- end - self.Players[PlayerName].HitPlayers = {} - self.Players[PlayerName].HitUnits = {} - self.Players[PlayerName].Score = 0 - self.Players[PlayerName].Penalty = 0 - self.Players[PlayerName].PenaltyCoalition = 0 - self.Players[PlayerName].PenaltyWarning = 0 - end - - if not self.Players[PlayerName].UnitCoalition then - self.Players[PlayerName].UnitCoalition = UnitCoalition - else - if self.Players[PlayerName].UnitCoalition ~= UnitCoalition then - self.Players[PlayerName].Penalty = self.Players[PlayerName].Penalty + 50 - self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] .. - "(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.", - "", - 2, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType, - UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() ) - end - end - self.Players[PlayerName].UnitName = UnitName - self.Players[PlayerName].UnitCoalition = UnitCoalition - self.Players[PlayerName].UnitCategory = UnitCategory - self.Players[PlayerName].UnitType = UnitTypeName - - if self.Players[PlayerName].Penalty > 100 then - if self.Players[PlayerName].PenaltyWarning < 1 then - MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty, - "", - 30, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1 - end - end - - if self.Players[PlayerName].Penalty > 150 then - ClientGroup = GROUP:NewFromDCSUnit( UnitData ) - ClientGroup:Destroy() - MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", - "", - 10, - "/PENALTYCOALITION" .. PlayerName - ):ToAll() - end - - end -end - - ---- Registers Scores the players completing a Mission Task. -function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score ) - self:F( { PlayerUnit, MissionName, Score } ) - - local PlayerName = PlayerUnit:getPlayerName() - - if not self.Players[PlayerName].Mission[MissionName] then - self.Players[PlayerName].Mission[MissionName] = {} - self.Players[PlayerName].Mission[MissionName].ScoreTask = 0 - self.Players[PlayerName].Mission[MissionName].ScoreMission = 0 - end - - self:T( PlayerName ) - self:T( self.Players[PlayerName].Mission[MissionName] ) - - self.Players[PlayerName].Score = self.Players[PlayerName].Score + Score - self.Players[PlayerName].Mission[MissionName].ScoreTask = self.Players[PlayerName].Mission[MissionName].ScoreTask + Score - - MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " .. - Score .. " Score points added.", - "", 20, "/SCORETASK" .. PlayerName ):ToAll() - - self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() ) -end - - ---- Registers Mission Scores for possible multiple players that contributed in the Mission. -function SCORING:_AddMissionScore( MissionName, Score ) - self:F( { MissionName, Score } ) - - for PlayerName, PlayerData in pairs( self.Players ) do - - if PlayerData.Mission[MissionName] then - PlayerData.Score = PlayerData.Score + Score - PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score - MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " .. - Score .. " Score points added.", - "", 20, "/SCOREMISSION" .. PlayerName ):ToAll() - self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score ) - end - end -end - ---- Handles the OnHit event for the scoring. --- @param #SCORING self --- @param Event#EVENTDATA Event -function SCORING:_EventOnHit( Event ) - self:F( { Event } ) - - local InitUnit = nil - local InitUnitName = "" - local InitGroup = nil - local InitGroupName = "" - local InitPlayerName = nil - - local InitCoalition = nil - local InitCategory = nil - local InitType = nil - local InitUnitCoalition = nil - local InitUnitCategory = nil - local InitUnitType = nil - - local TargetUnit = nil - local TargetUnitName = "" - local TargetGroup = nil - local TargetGroupName = "" - local TargetPlayerName = "" - - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - InitUnit = Event.IniDCSUnit - InitUnitName = Event.IniDCSUnitName - InitGroup = Event.IniDCSGroup - InitGroupName = Event.IniDCSGroupName - InitPlayerName = InitUnit:getPlayerName() - - InitCoalition = InitUnit:getCoalition() - --TODO: Workaround Client DCS Bug - --InitCategory = InitUnit:getCategory() - InitCategory = InitUnit:getDesc().category - InitType = InitUnit:getTypeName() - - InitUnitCoalition = _SCORINGCoalition[InitCoalition] - InitUnitCategory = _SCORINGCategory[InitCategory] - InitUnitType = InitType - - self:T( { InitUnitName, InitGroupName, InitPlayerName, InitCoalition, InitCategory, InitType , InitUnitCoalition, InitUnitCategory, InitUnitType } ) - end - - - if Event.TgtDCSUnit then - - TargetUnit = Event.TgtDCSUnit - TargetUnitName = Event.TgtDCSUnitName - TargetGroup = Event.TgtDCSGroup - TargetGroupName = Event.TgtDCSGroupName - TargetPlayerName = TargetUnit:getPlayerName() - - TargetCoalition = TargetUnit:getCoalition() - --TODO: Workaround Client DCS Bug - --TargetCategory = TargetUnit:getCategory() - TargetCategory = TargetUnit:getDesc().category - TargetType = TargetUnit:getTypeName() - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType, TargetUnitCoalition, TargetUnitCategory, TargetUnitType } ) - end - - if InitPlayerName ~= nil then -- It is a player that is hitting something - self:_AddPlayerFromUnit( InitUnit ) - if self.Players[InitPlayerName] then -- This should normally not happen, but i'll test it anyway. - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - self:_AddPlayerFromUnit( TargetUnit ) - self.Players[InitPlayerName].HitPlayers = self.Players[InitPlayerName].HitPlayers + 1 - end - - self:T( "Hitting Something" ) - -- What is he hitting? - if TargetCategory then - if not self.Players[InitPlayerName].Hit[TargetCategory] then - self.Players[InitPlayerName].Hit[TargetCategory] = {} - end - if not self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] then - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName] = {} - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = 0 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = 0 - end - local Score = 0 - if InitCoalition == TargetCoalition then - self.Players[InitPlayerName].Penalty = self.Players[InitPlayerName].Penalty + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit + 1 - MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty .. - ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, - "", - 2, - "/PENALTY" .. InitPlayerName .. "/" .. InitUnitName - ):ToAll() - self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - self.Players[InitPlayerName].Score = self.Players[InitPlayerName].Score + 10 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score + 1 - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit = self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit + 1 - MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " .. - self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score .. - ". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty, - "", - 2, - "/SCORE" .. InitPlayerName .. "/" .. InitUnitName - ):ToAll() - self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - end - end - elseif InitPlayerName == nil then -- It is an AI hitting a player??? - - end -end - - -function SCORING:ReportScoreAll() - - env.info( "Hello World " ) - - local ScoreMessage = "" - local PlayerMessage = "" - - self:T( "Score Report" ) - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local PlayerScore = 0 - local PlayerPenalty = 0 - - ScoreMessage = ":\n" - - local ScoreMessageHits = "" - - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( CategoryName ) - if PlayerData.Hit[CategoryID] then - local Score = 0 - local ScoreHit = 0 - local Penalty = 0 - local PenaltyHit = 0 - self:T( "Hit scores exist for player " .. PlayerName ) - for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do - Score = Score + UnitData.Score - ScoreHit = ScoreHit + UnitData.ScoreHit - Penalty = Penalty + UnitData.Penalty - PenaltyHit = UnitData.PenaltyHit - end - local ScoreMessageHit = string.format( "%s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageHit ) - ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageHits ~= "" then - ScoreMessage = ScoreMessage .. " Hits: " .. ScoreMessageHits .. "\n" - end - - local ScoreMessageKills = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( "Kill scores exist for player " .. PlayerName ) - if PlayerData.Kill[CategoryID] then - local Score = 0 - local ScoreKill = 0 - local Penalty = 0 - local PenaltyKill = 0 - - for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do - Score = Score + UnitData.Score - ScoreKill = ScoreKill + UnitData.ScoreKill - Penalty = Penalty + UnitData.Penalty - PenaltyKill = PenaltyKill + UnitData.PenaltyKill - end - - local ScoreMessageKill = string.format( " %s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageKill ) - ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill - - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageKills ~= "" then - ScoreMessage = ScoreMessage .. " Kills: " .. ScoreMessageKills .. "\n" - end - - local ScoreMessageCoalitionChangePenalties = "" - if PlayerData.PenaltyCoalition ~= 0 then - ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) - PlayerPenalty = PlayerPenalty + PlayerData.Penalty - end - if ScoreMessageCoalitionChangePenalties ~= "" then - ScoreMessage = ScoreMessage .. " Coalition Penalties: " .. ScoreMessageCoalitionChangePenalties .. "\n" - end - - local ScoreMessageMission = "" - local ScoreMission = 0 - local ScoreTask = 0 - for MissionName, MissionData in pairs( PlayerData.Mission ) do - ScoreMission = ScoreMission + MissionData.ScoreMission - ScoreTask = ScoreTask + MissionData.ScoreTask - ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " - end - PlayerScore = PlayerScore + ScoreMission + ScoreTask - - if ScoreMessageMission ~= "" then - ScoreMessage = ScoreMessage .. " Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ")\n" - end - - PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) - end - end - MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll() -end - - -function SCORING:ReportScorePlayer() - - env.info( "Hello World " ) - - local ScoreMessage = "" - local PlayerMessage = "" - - self:T( "Score Report" ) - - for PlayerName, PlayerData in pairs( self.Players ) do - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local PlayerScore = 0 - local PlayerPenalty = 0 - - ScoreMessage = "" - - local ScoreMessageHits = "" - - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( CategoryName ) - if PlayerData.Hit[CategoryID] then - local Score = 0 - local ScoreHit = 0 - local Penalty = 0 - local PenaltyHit = 0 - self:T( "Hit scores exist for player " .. PlayerName ) - for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do - Score = Score + UnitData.Score - ScoreHit = ScoreHit + UnitData.ScoreHit - Penalty = Penalty + UnitData.Penalty - PenaltyHit = UnitData.PenaltyHit - end - local ScoreMessageHit = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreHit, PenaltyHit ) - self:T( ScoreMessageHit ) - ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageHits ~= "" then - ScoreMessage = ScoreMessage .. "\n Hits: " .. ScoreMessageHits .. " " - end - - local ScoreMessageKills = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( "Kill scores exist for player " .. PlayerName ) - if PlayerData.Kill[CategoryID] then - local Score = 0 - local ScoreKill = 0 - local Penalty = 0 - local PenaltyKill = 0 - - for UnitName, UnitData in pairs( PlayerData.Kill[CategoryID] ) do - Score = Score + UnitData.Score - ScoreKill = ScoreKill + UnitData.ScoreKill - Penalty = Penalty + UnitData.Penalty - PenaltyKill = PenaltyKill + UnitData.PenaltyKill - end - - local ScoreMessageKill = string.format( "\n %s = %d score(%d;-%d) hits(#%d;#-%d)", CategoryName, Score - Penalty, Score, Penalty, ScoreKill, PenaltyKill ) - self:T( ScoreMessageKill ) - ScoreMessageKills = ScoreMessageKills .. ScoreMessageKill - - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageKills = ScoreMessageKills .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageKills ~= "" then - ScoreMessage = ScoreMessage .. "\n Kills: " .. ScoreMessageKills .. " " - end - - local ScoreMessageCoalitionChangePenalties = "" - if PlayerData.PenaltyCoalition ~= 0 then - ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) - PlayerPenalty = PlayerPenalty + PlayerData.Penalty - end - if ScoreMessageCoalitionChangePenalties ~= "" then - ScoreMessage = ScoreMessage .. "\n Coalition: " .. ScoreMessageCoalitionChangePenalties .. " " - end - - local ScoreMessageMission = "" - local ScoreMission = 0 - local ScoreTask = 0 - for MissionName, MissionData in pairs( PlayerData.Mission ) do - ScoreMission = ScoreMission + MissionData.ScoreMission - ScoreTask = ScoreTask + MissionData.ScoreTask - ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " - end - PlayerScore = PlayerScore + ScoreMission + ScoreTask - - if ScoreMessageMission ~= "" then - ScoreMessage = ScoreMessage .. "\n Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ") " - end - - PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage ) - end - end - MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll() - -end - - -function SCORING:SecondsToClock(sSeconds) - local nSeconds = sSeconds - if nSeconds == 0 then - --return nil; - return "00:00:00"; - else - nHours = string.format("%02.f", math.floor(nSeconds/3600)); - nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); - nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); - return nHours..":"..nMins..":"..nSecs - end -end - ---- Opens a score CSV file to log the scores. --- @param #SCORING self --- @param #string ScoringCSV --- @return #SCORING self --- @usage --- -- Open a new CSV file to log the scores of the game Gori Valley. Let the name of the CSV file begin with "Player Scores". --- ScoringObject = SCORING:New( "Gori Valley" ) --- ScoringObject:OpenCSV( "Player Scores" ) -function SCORING:OpenCSV( ScoringCSV ) - self:F( ScoringCSV ) - - if lfs and io and os then - if ScoringCSV then - self.ScoringCSV = ScoringCSV - local fdir = lfs.writedir() .. [[Logs\]] .. self.ScoringCSV .. " " .. os.date( "%Y-%m-%d %H-%M-%S" ) .. ".csv" - - self.CSVFile, self.err = io.open( fdir, "w+" ) - if not self.CSVFile then - error( "Error: Cannot open CSV file in " .. lfs.writedir() ) - end - - self.CSVFile:write( '"GameName","RunTime","Time","PlayerName","ScoreType","PlayerUnitCoaltion","PlayerUnitCategory","PlayerUnitType","PlayerUnitName","TargetUnitCoalition","TargetUnitCategory","TargetUnitType","TargetUnitName","Times","Score"\n' ) - - self.RunTime = os.date("%y-%m-%d_%H-%M-%S") - else - error( "A string containing the CSV file name must be given." ) - end - else - self:E( "The MissionScripting.lua file has not been changed to allow lfs, io and os modules to be used..." ) - end - return self -end - - ---- Registers a score for a player. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @param #string ScoreType The type of the score. --- @param #string ScoreTimes The amount of scores achieved. --- @param #string ScoreAmount The score given. --- @param #string PlayerUnitName The unit name of the player. --- @param #string PlayerUnitCoalition The coalition of the player unit. --- @param #string PlayerUnitCategory The category of the player unit. --- @param #string PlayerUnitType The type of the player unit. --- @param #string TargetUnitName The name of the target unit. --- @param #string TargetUnitCoalition The coalition of the target unit. --- @param #string TargetUnitCategory The category of the target unit. --- @param #string TargetUnitType The type of the target unit. --- @return #SCORING self -function SCORING:ScoreCSV( PlayerName, ScoreType, ScoreTimes, ScoreAmount, PlayerUnitName, PlayerUnitCoalition, PlayerUnitCategory, PlayerUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - --write statistic information to file - local ScoreTime = self:SecondsToClock( timer.getTime() ) - PlayerName = PlayerName:gsub( '"', '_' ) - - if PlayerUnitName and PlayerUnitName ~= '' then - local PlayerUnit = Unit.getByName( PlayerUnitName ) - - if PlayerUnit then - if not PlayerUnitCategory then - --PlayerUnitCategory = SCORINGCategory[PlayerUnit:getCategory()] - PlayerUnitCategory = _SCORINGCategory[PlayerUnit:getDesc().category] - end - - if not PlayerUnitCoalition then - PlayerUnitCoalition = _SCORINGCoalition[PlayerUnit:getCoalition()] - end - - if not PlayerUnitType then - PlayerUnitType = PlayerUnit:getTypeName() - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - - if not TargetUnitCoalition then - TargetUnitCoalition = '' - end - - if not TargetUnitCategory then - TargetUnitCategory = '' - end - - if not TargetUnitType then - TargetUnitType = '' - end - - if not TargetUnitName then - TargetUnitName = '' - end - - if lfs and io and os then - self.CSVFile:write( - '"' .. self.GameName .. '"' .. ',' .. - '"' .. self.RunTime .. '"' .. ',' .. - '' .. ScoreTime .. '' .. ',' .. - '"' .. PlayerName .. '"' .. ',' .. - '"' .. ScoreType .. '"' .. ',' .. - '"' .. PlayerUnitCoalition .. '"' .. ',' .. - '"' .. PlayerUnitCategory .. '"' .. ',' .. - '"' .. PlayerUnitType .. '"' .. ',' .. - '"' .. PlayerUnitName .. '"' .. ',' .. - '"' .. TargetUnitCoalition .. '"' .. ',' .. - '"' .. TargetUnitCategory .. '"' .. ',' .. - '"' .. TargetUnitType .. '"' .. ',' .. - '"' .. TargetUnitName .. '"' .. ',' .. - '' .. ScoreTimes .. '' .. ',' .. - '' .. ScoreAmount - ) - - self.CSVFile:write( "\n" ) - end -end - - -function SCORING:CloseCSV() - if lfs and io and os then - self.CSVFile:close() - end -end - ---- CARGO Classes --- @module CARGO - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Message" ) -Include.File( "Scheduler" ) - - ---- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player". --- These clients are defined within the Mission Orchestration Framework (MOF) - -CARGOS = {} - - -CARGO_ZONE = { - ClassName="CARGO_ZONE", - CargoZoneName = '', - CargoHostUnitName = '', - SIGNAL = { - TYPE = { - SMOKE = { ID = 1, TEXT = "smoke" }, - FLARE = { ID = 2, TEXT = "flare" } - }, - COLOR = { - GREEN = { ID = 1, TRIGGERCOLOR = trigger.smokeColor.Green, TEXT = "A green" }, - RED = { ID = 2, TRIGGERCOLOR = trigger.smokeColor.Red, TEXT = "A red" }, - WHITE = { ID = 3, TRIGGERCOLOR = trigger.smokeColor.White, TEXT = "A white" }, - ORANGE = { ID = 4, TRIGGERCOLOR = trigger.smokeColor.Orange, TEXT = "An orange" }, - BLUE = { ID = 5, TRIGGERCOLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, - YELLOW = { ID = 6, TRIGGERCOLOR = trigger.flareColor.Yellow, TEXT = "A yellow" } - } - } -} - ---- Creates a new zone where cargo can be collected or deployed. --- The zone functionality is useful to smoke or indicate routes for cargo pickups or deployments. --- Provide the zone name as declared in the mission file into the CargoZoneName in the :New method. --- An optional parameter is the CargoHostName, which is a Group declared with Late Activation switched on in the mission file. --- The CargoHostName is the "host" of the cargo zone: --- --- * It will smoke the zone position when a client is approaching the zone. --- * Depending on the cargo type, it will assist in the delivery of the cargo by driving to and from the client. --- --- @param #CARGO_ZONE self --- @param #string CargoZoneName The name of the zone as declared within the mission editor. --- @param #string CargoHostName The name of the Group "hosting" the zone. The Group MUST NOT be a static, and must be a "mobile" unit. -function CARGO_ZONE:New( CargoZoneName, CargoHostName ) local self = BASE:Inherit( self, ZONE:New( CargoZoneName ) ) - self:F( { CargoZoneName, CargoHostName } ) - - self.CargoZoneName = CargoZoneName - self.SignalHeight = 2 - --self.CargoZone = trigger.misc.getZone( CargoZoneName ) - - - if CargoHostName then - self.CargoHostName = CargoHostName - end - - self:T( self.CargoZoneName ) - - return self -end - -function CARGO_ZONE:Spawn() - self:F( self.CargoHostName ) - - if self.CargoHostName then -- Only spawn a host in the zone when there is one given as a parameter in the New function. - if self.CargoHostSpawn then - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() - if CargoHostGroup and CargoHostGroup:IsAlive() then - else - self.CargoHostSpawn:ReSpawn( 1 ) - end - else - self:T( "Initialize CargoHostSpawn" ) - self.CargoHostSpawn = SPAWN:New( self.CargoHostName ):Limit( 1, 1 ) - self.CargoHostSpawn:ReSpawn( 1 ) - end - end - - return self -end - -function CARGO_ZONE:GetHostUnit() - self:F( self ) - - if self.CargoHostName then - - -- A Host has been given, signal the host - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex() - local CargoHostUnit - if CargoHostGroup and CargoHostGroup:IsAlive() then - CargoHostUnit = CargoHostGroup:GetUnit(1) - else - CargoHostUnit = StaticObject.getByName( self.CargoHostName ) - end - - return CargoHostUnit - end - - return nil -end - -function CARGO_ZONE:ReportCargosToClient( Client, CargoType ) - self:F() - - local SignalUnit = self:GetHostUnit() - - if SignalUnit then - - local SignalUnitTypeName = SignalUnit:getTypeName() - - local HostMessage = "" - - local IsCargo = false - for CargoID, Cargo in pairs( CARGOS ) do - if Cargo.CargoType == Task.CargoType then - if Cargo:IsStatusNone() then - HostMessage = HostMessage .. " - " .. Cargo.CargoName .. " - " .. Cargo.CargoType .. " (" .. Cargo.Weight .. "kg)" .. "\n" - IsCargo = true - end - end - end - - if not IsCargo then - HostMessage = "No Cargo Available." - end - - Client:Message( HostMessage, 20, Mission.Name .. "/StageHosts." .. SignalUnitTypeName, SignalUnitTypeName .. ": Reporting Cargo", 10 ) - end -end - - -function CARGO_ZONE:Signal() - self:F() - - local Signalled = false - - if self.SignalType then - - if self.CargoHostName then - - -- A Host has been given, signal the host - - local SignalUnit = self:GetHostUnit() - - if SignalUnit then - - self:T( 'Signalling Unit' ) - local SignalVehiclePos = SignalUnit:GetPointVec3() - SignalVehiclePos.y = SignalVehiclePos.y + 2 - - if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then - - trigger.action.smoke( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR ) - Signalled = true - - elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then - - trigger.action.signalFlare( SignalVehiclePos, self.SignalColor.TRIGGERCOLOR , 0 ) - Signalled = false - - end - end - - else - - local ZonePointVec3 = self:GetPointVec3( self.SignalHeight ) -- Get the zone position + the landheight + 2 meters - - if self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.SMOKE.ID then - - trigger.action.smoke( ZonePointVec3, self.SignalColor.TRIGGERCOLOR ) - Signalled = true - - elseif self.SignalType.ID == CARGO_ZONE.SIGNAL.TYPE.FLARE.ID then - trigger.action.signalFlare( ZonePointVec3, self.SignalColor.TRIGGERCOLOR, 0 ) - Signalled = false - - end - end - end - - return Signalled - -end - -function CARGO_ZONE:WhiteSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:BlueSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.BLUE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:RedSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:OrangeSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.ORANGE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:GreenSmoke( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - - -function CARGO_ZONE:WhiteFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:RedFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:GreenFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - -function CARGO_ZONE:YellowFlare( SignalHeight ) - self:F() - - self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE - self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.YELLOW - - if SignalHeight then - self.SignalHeight = SignalHeight - end - - return self -end - - -function CARGO_ZONE:GetCargoHostUnit() - self:F( self ) - - if self.CargoHostSpawn then - local CargoHostGroup = self.CargoHostSpawn:GetGroupFromIndex(1) - if CargoHostGroup and CargoHostGroup:IsAlive() then - local CargoHostUnit = CargoHostGroup:GetUnit(1) - if CargoHostUnit and CargoHostUnit:IsAlive() then - return CargoHostUnit - end - end - end - - return nil -end - -function CARGO_ZONE:GetCargoZoneName() - self:F() - - return self.CargoZoneName -end - -CARGO = { - ClassName = "CARGO", - STATUS = { - NONE = 0, - LOADED = 1, - UNLOADED = 2, - LOADING = 3 - }, - CargoClient = nil -} - ---- Add Cargo to the mission... Cargo functionality needs to be reworked a bit, so this is still under construction. I need to make a CARGO Class... -function CARGO:New( CargoType, CargoName, CargoWeight ) local self = BASE:Inherit( self, BASE:New() ) - self:F( { CargoType, CargoName, CargoWeight } ) - - - self.CargoType = CargoType - self.CargoName = CargoName - self.CargoWeight = CargoWeight - - self:StatusNone() - - return self -end - -function CARGO:Spawn( Client ) - self:F() - - return self - -end - -function CARGO:IsNear( Client, LandingZone ) - self:F() - - local Near = true - - return Near - -end - - -function CARGO:IsLoadingToClient() - self:F() - - if self:IsStatusLoading() then - return self.CargoClient - end - - return nil - -end - - -function CARGO:IsLoadedInClient() - self:F() - - if self:IsStatusLoaded() then - return self.CargoClient - end - - return nil - -end - - -function CARGO:UnLoad( Client, TargetZoneName ) - self:F() - - self:StatusUnLoaded() - - return self -end - -function CARGO:OnBoard( Client, LandingZone ) - self:F() - - local Valid = true - - self.CargoClient = Client - local ClientUnit = Client:GetClientGroupDCSUnit() - - return Valid -end - -function CARGO:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = true - - return OnBoarded -end - -function CARGO:Load( Client ) - self:F() - - self:StatusLoaded( Client ) - - return self -end - -function CARGO:IsLandingRequired() - self:F() - return true -end - -function CARGO:IsSlingLoad() - self:F() - return false -end - - -function CARGO:StatusNone() - self:F() - - self.CargoClient = nil - self.CargoStatus = CARGO.STATUS.NONE - - return self -end - -function CARGO:StatusLoading( Client ) - self:F() - - self.CargoClient = Client - self.CargoStatus = CARGO.STATUS.LOADING - self:T( "Cargo " .. self.CargoName .. " loading to Client: " .. self.CargoClient:GetClientGroupName() ) - - return self -end - -function CARGO:StatusLoaded( Client ) - self:F() - - self.CargoClient = Client - self.CargoStatus = CARGO.STATUS.LOADED - self:T( "Cargo " .. self.CargoName .. " loaded in Client: " .. self.CargoClient:GetClientGroupName() ) - - return self -end - -function CARGO:StatusUnLoaded() - self:F() - - self.CargoClient = nil - self.CargoStatus = CARGO.STATUS.UNLOADED - - return self -end - - -function CARGO:IsStatusNone() - self:F() - - return self.CargoStatus == CARGO.STATUS.NONE -end - -function CARGO:IsStatusLoading() - self:F() - - return self.CargoStatus == CARGO.STATUS.LOADING -end - -function CARGO:IsStatusLoaded() - self:F() - - return self.CargoStatus == CARGO.STATUS.LOADED -end - -function CARGO:IsStatusUnLoaded() - self:F() - - return self.CargoStatus == CARGO.STATUS.UNLOADED -end - - -CARGO_GROUP = { - ClassName = "CARGO_GROUP" -} - - -function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } ) - - self.CargoSpawn = SPAWN:NewWithAlias( CargoGroupTemplate, CargoName ) - self.CargoZone = CargoZone - - CARGOS[self.CargoName] = self - - return self - -end - -function CARGO_GROUP:Spawn( Client ) - self:F( { Client } ) - - local SpawnCargo = true - - if self:IsStatusNone() then - local CargoGroup = Group.getByName( self.CargoName ) - if CargoGroup and CargoGroup:isExist() then - SpawnCargo = false - end - - elseif self:IsStatusLoading() then - - local Client = self:IsLoadingToClient() - if Client and Client:GetDCSGroup() then - SpawnCargo = false - else - local CargoGroup = Group.getByName( self.CargoName ) - if CargoGroup and CargoGroup:isExist() then - SpawnCargo = false - end - end - - elseif self:IsStatusLoaded() then - - local ClientLoaded = self:IsLoadedInClient() - -- Now test if another Client is alive (not this one), and it has the CARGO, then this cargo does not need to be initialized and spawned. - if ClientLoaded and ClientLoaded ~= Client then - local ClientGroup = Client:GetDCSGroup() - if ClientLoaded:GetClientGroupDCSUnit() and ClientLoaded:GetClientGroupDCSUnit():isExist() then - SpawnCargo = false - else - self:StatusNone() - end - else - -- Same Client, but now in initialize, so set back the status to None. - self:StatusNone() - end - - elseif self:IsStatusUnLoaded() then - - SpawnCargo = false - - end - - if SpawnCargo then - if self.CargoZone:GetCargoHostUnit() then - --- ReSpawn the Cargo from the CargoHost - self.CargoGroupName = self.CargoSpawn:SpawnFromUnit( self.CargoZone:GetCargoHostUnit(), 60, 30, 1 ):GetName() - else - --- ReSpawn the Cargo in the CargoZone without a host ... - self:T( self.CargoZone ) - self.CargoGroupName = self.CargoSpawn:SpawnInZone( self.CargoZone, true, 1 ):GetName() - end - self:StatusNone() - end - - self:T( { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } ) - - return self -end - -function CARGO_GROUP:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - if self.CargoGroupName then - local CargoGroup = Group.getByName( self.CargoGroupName ) - if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 250 ) then - Near = true - end - end - - return Near - -end - - -function CARGO_GROUP:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - local ClientUnit = Client:GetClientGroupDCSUnit() - - local CarrierPos = ClientUnit:getPoint() - local CarrierPosMove = ClientUnit:getPoint() - local CarrierPosOnBoard = ClientUnit:getPoint() - - local CargoGroup = Group.getByName( self.CargoGroupName ) - - local CargoUnit = CargoGroup:getUnit(1) - local CargoPos = CargoUnit:getPoint() - - self.CargoInAir = CargoUnit:inAir() - - self:T( self.CargoInAir ) - - -- Only move the group to the carrier when the cargo is not in the air - -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). - if not self.CargoInAir then - - local Points = {} - - self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) - self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) - - Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) - - self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) - - if OnBoardSide == nil then - OnBoardSide = CLIENT.ONBOARDSIDE.NONE - end - - if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then - - self:T( "TransportCargoOnBoard: Onboarding LEFT" ) - CarrierPosMove.z = CarrierPosMove.z - 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then - - self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) - CarrierPosMove.z = CarrierPosMove.z + 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then - - self:T( "TransportCargoOnBoard: Onboarding BACK" ) - CarrierPosMove.x = CarrierPosMove.x - 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then - - self:T( "TransportCargoOnBoard: Onboarding CENTRAL" ) - Points[#Points+1] = routines.ground.buildWP( CarrierPos, "Cone", 10 ) - - end - self:T( "TransportCargoOnBoard: Routing " .. self.CargoGroupName ) - - --routines.scheduleFunction( routines.goRoute, { self.CargoGroupName, Points}, timer.getTime() + 4 ) - SCHEDULER:New( self, routines.goRoute, { self.CargoGroupName, Points}, 4 ) - end - - self:StatusLoading( Client ) - - return Valid - -end - - -function CARGO_GROUP:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - local CargoGroup = Group.getByName( self.CargoGroupName ) - - if not self.CargoInAir then - if routines.IsPartOfGroupInRadius( CargoGroup, Client:GetPositionVec3(), 25 ) then - CargoGroup:destroy() - self:StatusLoaded( Client ) - OnBoarded = true - end - else - CargoGroup:destroy() - self:StatusLoaded( Client ) - OnBoarded = true - end - - return OnBoarded -end - - -function CARGO_GROUP:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - - local CargoGroup = self.CargoSpawn:SpawnFromUnit( Client:GetClientGroupUnit(), 60, 30 ) - - self.CargoGroupName = CargoGroup:GetName() - self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) - - CargoGroup:TaskRouteToZone( ZONE:New( TargetZoneName ), true ) - - self:StatusUnLoaded() - - return self -end - - -CARGO_PACKAGE = { - ClassName = "CARGO_PACKAGE" -} - - -function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClient ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoClient } ) - - self.CargoClient = CargoClient - - CARGOS[self.CargoName] = self - - return self - -end - - -function CARGO_PACKAGE:Spawn( Client ) - self:F( { self, Client } ) - - -- this needs to be checked thoroughly - - local CargoClientGroup = self.CargoClient:GetDCSGroup() - if not CargoClientGroup then - if not self.CargoClientSpawn then - self.CargoClientSpawn = SPAWN:New( self.CargoClient:GetClientGroupName() ):Limit( 1, 1 ) - end - self.CargoClientSpawn:ReSpawn( 1 ) - end - - local SpawnCargo = true - - if self:IsStatusNone() then - - elseif self:IsStatusLoading() or self:IsStatusLoaded() then - - local CargoClientLoaded = self:IsLoadedInClient() - if CargoClientLoaded and CargoClientLoaded:GetDCSGroup() then - SpawnCargo = false - end - - elseif self:IsStatusUnLoaded() then - - SpawnCargo = false - - else - - end - - if SpawnCargo then - self:StatusLoaded( self.CargoClient ) - end - - return self -end - - -function CARGO_PACKAGE:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - if self.CargoClient and self.CargoClient:GetDCSGroup() then - self:T( self.CargoClient.ClientName ) - self:T( 'Client Exists.' ) - - if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), Client:GetPositionVec3(), 150 ) then - Near = true - end - end - - return Near - -end - - -function CARGO_PACKAGE:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - local ClientUnit = Client:GetClientGroupDCSUnit() - - local CarrierPos = ClientUnit:getPoint() - local CarrierPosMove = ClientUnit:getPoint() - local CarrierPosOnBoard = ClientUnit:getPoint() - local CarrierPosMoveAway = ClientUnit:getPoint() - - local CargoHostGroup = self.CargoClient:GetDCSGroup() - local CargoHostName = self.CargoClient:GetDCSGroup():getName() - - local CargoHostUnits = CargoHostGroup:getUnits() - local CargoPos = CargoHostUnits[1]:getPoint() - - local Points = {} - - self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z ) - self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z ) - - Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 ) - - self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y ) - - if OnBoardSide == nil then - OnBoardSide = CLIENT.ONBOARDSIDE.NONE - end - - if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then - - self:T( "TransportCargoOnBoard: Onboarding LEFT" ) - CarrierPosMove.z = CarrierPosMove.z - 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5 - CarrierPosMoveAway.z = CarrierPosMoveAway.z - 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then - - self:T( "TransportCargoOnBoard: Onboarding RIGHT" ) - CarrierPosMove.z = CarrierPosMove.z + 25 - CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5 - CarrierPosMoveAway.z = CarrierPosMoveAway.z + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then - - self:T( "TransportCargoOnBoard: Onboarding BACK" ) - CarrierPosMove.x = CarrierPosMove.x - 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x - 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then - - self:T( "TransportCargoOnBoard: Onboarding FRONT" ) - CarrierPosMove.x = CarrierPosMove.x + 25 - CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5 - CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20 - Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosOnBoard, "Cone", 10 ) - Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 ) - - end - self:T( "Routing " .. CargoHostName ) - - --routines.scheduleFunction( routines.goRoute, { CargoHostName, Points}, timer.getTime() + 4 ) - SCHEDULER:New( self, routines.goRoute, { CargoHostName, Points }, 4 ) - - return Valid - -end - - -function CARGO_PACKAGE:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - if self.CargoClient and self.CargoClient:GetDCSGroup() then - if routines.IsUnitInRadius( self.CargoClient:GetClientGroupDCSUnit(), self.CargoClient:GetPositionVec3(), 10 ) then - - -- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough. - self:StatusLoaded( Client ) - - -- All done, onboarded the Cargo to the new Client. - OnBoarded = true - end - end - - return OnBoarded -end - - -function CARGO_PACKAGE:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - --self:T( 'self.CargoHostName = ' .. self.CargoHostName ) - - --self.CargoSpawn:FromCarrier( Client:GetDCSGroup(), TargetZoneName, self.CargoHostName ) - self:StatusUnLoaded() - - return Cargo -end - - -CARGO_SLINGLOAD = { - ClassName = "CARGO_SLINGLOAD" -} - - -function CARGO_SLINGLOAD:New( CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID ) - local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) ) - self:F( { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } ) - - self.CargoHostName = CargoHostName - - -- Cargo will be initialized around the CargoZone position. - self.CargoZone = CargoZone - - self.CargoCount = 0 - self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) - - -- The country ID needs to be correctly set. - self.CargoCountryID = CargoCountryID - - CARGOS[self.CargoName] = self - - return self - -end - - -function CARGO_SLINGLOAD:IsLandingRequired() - self:F() - return false -end - - -function CARGO_SLINGLOAD:IsSlingLoad() - self:F() - return true -end - - -function CARGO_SLINGLOAD:Spawn( Client ) - self:F( { self, Client } ) - - local Zone = trigger.misc.getZone( self.CargoZone ) - - local ZonePos = {} - ZonePos.x = Zone.point.x + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) - ZonePos.y = Zone.point.z + math.random( Zone.radius / 2 * -1, Zone.radius / 2 ) - - self:T( "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y ) - - --[[ - -- This does not work in 1.5.2. - CargoStatic = StaticObject.getByName( self.CargoName ) - if CargoStatic then - CargoStatic:destroy() - end - --]] - - CargoStatic = StaticObject.getByName( self.CargoStaticName ) - - if CargoStatic and CargoStatic:isExist() then - CargoStatic:destroy() - end - - -- I need to make every time a new cargo due to bugs in 1.5.2. - - self.CargoCount = self.CargoCount + 1 - self.CargoStaticName = string.format( "%s#%03d", self.CargoName, self.CargoCount ) - - local CargoTemplate = { - ["category"] = "Cargo", - ["shape_name"] = "ab-212_cargo", - ["type"] = "Cargo1", - ["x"] = ZonePos.x, - ["y"] = ZonePos.y, - ["mass"] = self.CargoWeight, - ["name"] = self.CargoStaticName, - ["canCargo"] = true, - ["heading"] = 0, - } - - coalition.addStaticObject( self.CargoCountryID, CargoTemplate ) - --- end - - return self -end - - -function CARGO_SLINGLOAD:IsNear( Client, LandingZone ) - self:F() - - local Near = false - - return Near -end - - -function CARGO_SLINGLOAD:IsInLandingZone( Client, LandingZone ) - self:F() - - local Near = false - - local CargoStaticUnit = StaticObject.getByName( self.CargoName ) - if CargoStaticUnit then - if routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then - Near = true - end - end - - return Near -end - - -function CARGO_SLINGLOAD:OnBoard( Client, LandingZone, OnBoardSide ) - self:F() - - local Valid = true - - - return Valid -end - - -function CARGO_SLINGLOAD:OnBoarded( Client, LandingZone ) - self:F() - - local OnBoarded = false - - local CargoStaticUnit = StaticObject.getByName( self.CargoName ) - if CargoStaticUnit then - if not routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then - OnBoarded = true - end - end - - return OnBoarded -end - - -function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName ) - self:F() - - self:T( 'self.CargoName = ' .. self.CargoName ) - self:T( 'self.CargoGroupName = ' .. self.CargoGroupName ) - - self:StatusUnLoaded() - - return Cargo -end ---- Message System to display Messages for Clients and Coalitions or All. --- Messages are grouped on the display panel per Category to improve readability for the players. --- Messages are shown on the display panel for an amount of seconds, and will then disappear. --- Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel. --- Messages are created with MESSAGE:@{New}(). --- Messages are sent to Clients with MESSAGE:@{ToClient}(). --- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}(). --- Messages are sent to All Players with MESSAGE:@{ToAll}(). --- @module Message - -Include.File( "Base" ) - ---- The MESSAGE class --- @type MESSAGE -MESSAGE = { - ClassName = "MESSAGE", - MessageCategory = 0, - MessageID = 0, -} - - ---- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients. --- @param self --- @param #string MessageText is the text of the Message. --- @param #string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability. --- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel. --- @param #string MessageID is a string expressing the ID of the Message. --- @return #MESSAGE --- @usage --- -- Create a series of new Messages. --- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score". --- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) -function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { MessageText, MessageCategory, MessageDuration, MessageID } ) - - -- When no messagecategory is given, we don't show it as a title... - if MessageCategory and MessageCategory ~= "" then - self.MessageCategory = MessageCategory .. ": " - else - self.MessageCategory = "" - end - - self.MessageDuration = MessageDuration - self.MessageID = MessageID - self.MessageTime = timer.getTime() - self.MessageText = MessageText - - self.MessageSent = false - self.MessageGroup = false - self.MessageCoalition = false - - return self -end - ---- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player". --- @param #MESSAGE self --- @param Client#CLIENT Client is the Group of the Client. --- @return #MESSAGE --- @usage --- -- Send the 2 messages created with the @{New} method to the Client Group. --- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1. --- ClientGroup = Group.getByName( "ClientGroup" ) --- --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) --- MessageClient1:ToClient( ClientGroup ) --- MessageClient2:ToClient( ClientGroup ) -function MESSAGE:ToClient( Client ) - self:F( Client ) - - if Client and Client:GetClientGroupID() then - - local ClientGroupID = Client:GetClientGroupID() - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to the Blue coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the BLUE coalition. --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageBLUE:ToBlue() -function MESSAGE:ToBlue() - self:F() - - self:ToCoalition( coalition.side.BLUE ) - - return self -end - ---- Sends a MESSAGE to the Red Coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToRed() -function MESSAGE:ToRed( ) - self:F() - - self:ToCoalition( coalition.side.RED ) - - return self -end - ---- Sends a MESSAGE to a Coalition. --- @param #MESSAGE self --- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToCoalition( coalition.side.RED ) -function MESSAGE:ToCoalition( CoalitionSide ) - self:F( CoalitionSide ) - - if CoalitionSide then - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForCoalition( CoalitionSide, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to all players. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created to all players. --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) --- MessageAll:ToAll() -function MESSAGE:ToAll() - self:F() - - self:ToCoalition( coalition.side.RED ) - self:ToCoalition( coalition.side.BLUE ) - - return self -end - - - ---- The MESSAGEQUEUE class --- @type MESSAGEQUEUE -MESSAGEQUEUE = { - ClientGroups = {}, - CoalitionSides = {} -} - -function MESSAGEQUEUE:New( RefreshInterval ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { RefreshInterval } ) - - self.RefreshInterval = RefreshInterval - - --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval ) - self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval ) - - return self -end - ---- This function is called automatically by the MESSAGEQUEUE scheduler. -function MESSAGEQUEUE:_DisplayMessages() - - -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...). - for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do - for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do - if MessageData.MessageSent == false then - --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageSent = true - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - end - - -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition. - -- Because the Client messages will overwrite the Coalition messages (for that Client). - for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do - for MessageID, MessageData in pairs( ClientGroupData.Messages ) do - if MessageData.MessageGroup == false then - trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageGroup = true - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - - -- Now check if the Client also has messages that belong to the Coalition of the Client... - for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do - for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do - local CoalitionGroup = Group.getByName( ClientGroupName ) - if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then - if MessageData.MessageCoalition == false then - trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration ) - MessageData.MessageCoalition = true - end - end - local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime() - if MessageTimeLeft <= 0 then - MessageData = nil - end - end - end - end - - return true -end - ---- The _MessageQueue object is created when the MESSAGE class module is loaded. ---_MessageQueue = MESSAGEQUEUE:New( 0.5 ) - ---- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer. --- @module STAGE --- @author Flightcontrol - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The STAGE class --- @type -STAGE = { - ClassName = "STAGE", - MSG = { ID = "None", TIME = 10 }, - FREQUENCY = { NONE = 0, ONCE = 1, REPEAT = -1 }, - - Name = "NoStage", - StageType = '', - WaitTime = 1, - Frequency = 1, - MessageCount = 0, - MessageInterval = 15, - MessageShown = {}, - MessageShow = false, - MessageFlash = false -} - - -function STAGE:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F() - return self -end - -function STAGE:Execute( Mission, Client, Task ) - - local Valid = true - - return Valid -end - -function STAGE:Executing( Mission, Client, Task ) - -end - -function STAGE:Validate( Mission, Client, Task ) - local Valid = true - - return Valid -end - - -STAGEBRIEF = { - ClassName = "BRIEF", - MSG = { ID = "Brief", TIME = 1 }, - Name = "Brief", - StageBriefingTime = 0, - StageBriefingDuration = 1 -} - -function STAGEBRIEF:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Execute --- @param #STAGEBRIEF self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task --- @return #boolean -function STAGEBRIEF:Execute( Mission, Client, Task ) - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - self:F() - Client:ShowMissionBriefing( Mission.MissionBriefing ) - self.StageBriefingTime = timer.getTime() - return Valid -end - -function STAGEBRIEF:Validate( Mission, Client, Task ) - local Valid = STAGE:Validate( Mission, Client, Task ) - self:T() - - if timer.getTime() - self.StageBriefingTime <= self.StageBriefingDuration then - return 0 - else - self.StageBriefingTime = timer.getTime() - return 1 - end - -end - - -STAGESTART = { - ClassName = "START", - MSG = { ID = "Start", TIME = 1 }, - Name = "Start", - StageStartTime = 0, - StageStartDuration = 1 -} - -function STAGESTART:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGESTART:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - if Task.TaskBriefing then - Client:Message( Task.TaskBriefing, 30, Mission.Name .. "/Stage", "Command" ) - else - Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, Mission.Name .. "/Stage", "Command" ) - end - self.StageStartTime = timer.getTime() - return Valid -end - -function STAGESTART:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - if timer.getTime() - self.StageStartTime <= self.StageStartDuration then - return 0 - else - self.StageStartTime = timer.getTime() - return 1 - end - - return 1 - -end - -STAGE_CARGO_LOAD = { - ClassName = "STAGE_CARGO_LOAD" -} - -function STAGE_CARGO_LOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGE_CARGO_LOAD:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - for LoadCargoID, LoadCargo in pairs( Task.Cargos.LoadCargos ) do - LoadCargo:Load( Client ) - end - - if Mission.MissionReportFlash and Client:IsTransport() then - Client:ShowCargo() - end - - return Valid -end - -function STAGE_CARGO_LOAD:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - return 1 -end - - -STAGE_CARGO_INIT = { - ClassName = "STAGE_CARGO_INIT" -} - -function STAGE_CARGO_INIT:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGE_CARGO_INIT:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - for InitLandingZoneID, InitLandingZone in pairs( Task.LandingZones.LandingZones ) do - self:T( InitLandingZone ) - InitLandingZone:Spawn() - end - - - self:T( Task.Cargos.InitCargos ) - for InitCargoID, InitCargoData in pairs( Task.Cargos.InitCargos ) do - self:T( { InitCargoData } ) - InitCargoData:Spawn( Client ) - end - - return Valid -end - - -function STAGE_CARGO_INIT:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - return 1 -end - - - -STAGEROUTE = { - ClassName = "STAGEROUTE", - MSG = { ID = "Route", TIME = 5 }, - Frequency = STAGE.FREQUENCY.REPEAT, - Name = "Route" -} - -function STAGEROUTE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - self.MessageSwitch = true - return self -end - - ---- Execute the routing. --- @param #STAGEROUTE self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEROUTE:Execute( Mission, Client, Task ) - self:F() - local Valid = BASE:Inherited(self):Execute( Mission, Client, Task ) - - local RouteMessage = "Fly to: " - self:T( Task.LandingZones ) - for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do - RouteMessage = RouteMessage .. "\n " .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km.' - end - - if Client:IsMultiSeated() then - Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Co-Pilot", 20 ) - else - Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Command", 20 ) - end - - - if Mission.MissionReportFlash and Client:IsTransport() then - Client:ShowCargo() - end - - return Valid -end - -function STAGEROUTE:Validate( Mission, Client, Task ) - self:F() - local Valid = STAGE:Validate( Mission, Client, Task ) - - -- check if the Client is in the landing zone - self:T( Task.LandingZones.LandingZoneNames ) - Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) - - if Task.CurrentLandingZoneName then - - Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone - Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] - - if Task.CurrentCargoZone then - if not Task.Signalled then - Task.Signalled = Task.CurrentCargoZone:Signal() - end - end - - self:T( 1 ) - return 1 - end - - self:T( 0 ) - return 0 -end - - - -STAGELANDING = { - ClassName = "STAGELANDING", - MSG = { ID = "Landing", TIME = 10 }, - Name = "Landing", - Signalled = false -} - -function STAGELANDING:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Execute the landing coordination. --- @param #STAGELANDING self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGELANDING:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Co-Pilot", 10 ) - else - Client:Message( "You have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Command", 10 ) - end - - Task.HostUnit = Task.CurrentCargoZone:GetHostUnit() - - self:T( { Task.HostUnit } ) - - if Task.HostUnit then - - Task.HostUnitName = Task.HostUnit:GetPrefix() - Task.HostUnitTypeName = Task.HostUnit:GetTypeName() - - local HostMessage = "" - Task.CargoNames = "" - - local IsFirst = true - - for CargoID, Cargo in pairs( CARGOS ) do - if Cargo.CargoType == Task.CargoType then - - if Cargo:IsLandingRequired() then - self:T( "Task for cargo " .. Cargo.CargoType .. " requires landing.") - Task.IsLandingRequired = true - end - - if Cargo:IsSlingLoad() then - self:T( "Task for cargo " .. Cargo.CargoType .. " is a slingload.") - Task.IsSlingLoad = true - end - - if IsFirst then - IsFirst = false - Task.CargoNames = Task.CargoNames .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" - else - Task.CargoNames = Task.CargoNames .. "; " .. Cargo.CargoName .. "( " .. Cargo.CargoWeight .. " )" - end - end - end - - if Task.IsLandingRequired then - HostMessage = "Land the helicopter to " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." - else - HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "." - end - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( HostMessage, self.MSG.TIME, Mission.Name .. "/STAGELANDING.EXEC." .. Host, Host, 10 ) - - end -end - -function STAGELANDING:Validate( Mission, Client, Task ) - self:F() - - Task.CurrentLandingZoneName = routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.LandingZones.LandingZoneNames, 500 ) - if Task.CurrentLandingZoneName then - - -- Client is in de landing zone. - self:T( Task.CurrentLandingZoneName ) - - Task.CurrentLandingZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName].CargoZone - Task.CurrentCargoZone = Task.LandingZones.LandingZones[Task.CurrentLandingZoneName] - - if Task.CurrentCargoZone then - if not Task.Signalled then - Task.Signalled = Task.CurrentCargoZone:Signal() - end - end - else - if Task.CurrentLandingZone then - Task.CurrentLandingZone = nil - end - if Task.CurrentCargoZone then - Task.CurrentCargoZone = nil - end - Task.Signalled = false - Task:RemoveCargoMenus( Client ) - self:T( -1 ) - return -1 - end - - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and not Client:GetClientGroupDCSUnit():inAir() then - self:T( 1 ) - Task.IsInAirTestRequired = true - return 1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and DCSUnitVelocity <= 0.05 and DCSUnitHeight <= Task.CurrentCargoZone.SignalHeight then - self:T( 1 ) - Task.IsInAirTestRequired = false - return 1 - end - - self:T( 0 ) - return 0 -end - -STAGELANDED = { - ClassName = "STAGELANDED", - MSG = { ID = "Land", TIME = 10 }, - Name = "Landed", - MenusAdded = false -} - -function STAGELANDED:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGELANDED:Execute( Mission, Client, Task ) - self:F() - - if Task.IsLandingRequired then - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( 'You have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.', - self.MSG.TIME, Mission.Name .. "/STAGELANDED.EXEC" .. Host, Host ) - - if not self.MenusAdded then - Task.Cargo = nil - Task:RemoveCargoMenus( Client ) - Task:AddCargoMenus( Client, CARGOS, 250 ) - end - end -end - - - -function STAGELANDED:Validate( Mission, Client, Task ) - self:F() - - if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - self:T( "Client is not anymore in the landing zone, go back to stage Route, and remove cargo menus." ) - Task.Signalled = false - Task:RemoveCargoMenus( Client ) - self:T( -2 ) - return -2 - end - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then - self:T( "Client went back in the air. Go back to stage Landing." ) - self:T( -1 ) - return -1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then - self:T( "It seems the Client went back in the air and over the boundary limits. Go back to stage Landing." ) - self:T( -1 ) - return -1 - end - - -- Wait until cargo is selected from the menu. - if Task.IsLandingRequired then - if not Task.Cargo then - self:T( 0 ) - return 0 - end - end - - self:T( 1 ) - return 1 -end - -STAGEUNLOAD = { - ClassName = "STAGEUNLOAD", - MSG = { ID = "Unload", TIME = 10 }, - Name = "Unload" -} - -function STAGEUNLOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - ---- Coordinate UnLoading --- @param #STAGEUNLOAD self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEUNLOAD:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Co-Pilot" ) - else - Client:Message( 'You are unloading the ' .. Task.CargoType .. ' ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Command" ) - end - Task:RemoveCargoMenus( Client ) -end - -function STAGEUNLOAD:Executing( Mission, Client, Task ) - self:F() - env.info( 'STAGEUNLOAD:Executing() Task.Cargo.CargoName = ' .. Task.Cargo.CargoName ) - - local TargetZoneName - - if Task.TargetZoneName then - TargetZoneName = Task.TargetZoneName - else - TargetZoneName = Task.CurrentLandingZoneName - end - - if Task.Cargo:UnLoad( Client, TargetZoneName ) then - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - if Mission.MissionReportFlash then - Client:ShowCargo() - end - end -end - ---- Validate UnLoading --- @param #STAGEUNLOAD self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEUNLOAD:Validate( Mission, Client, Task ) - self:F() - env.info( 'STAGEUNLOAD:Validate()' ) - - if routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - else - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task:RemoveCargoMenus( Client ) - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" ) - end - return 1 - end - - if not Client:GetClientGroupDCSUnit():inAir() then - else - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task:RemoveCargoMenus( Client ) - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.', - _TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" ) - end - return 1 - end - - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - if Client:IsMultiSeated() then - Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Co-Pilot" ) - else - Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Command" ) - end - Task:RemoveCargoMenus( Client ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission. - return 1 - end - - return 1 -end - -STAGELOAD = { - ClassName = "STAGELOAD", - MSG = { ID = "Load", TIME = 10 }, - Name = "Load" -} - -function STAGELOAD:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - -function STAGELOAD:Execute( Mission, Client, Task ) - self:F() - - if not Task.IsSlingLoad then - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.', - _TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.EXEC." .. Host, Host ) - - -- Route the cargo to the Carrier - - Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide ) - Task.ExecuteStage = _TransportExecuteStage.EXECUTING - else - Task.ExecuteStage = _TransportExecuteStage.EXECUTING - end -end - -function STAGELOAD:Executing( Mission, Client, Task ) - self:F() - - -- If the Cargo is ready to be loaded, load it into the Client. - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - if not Task.IsSlingLoad then - self:T( Task.Cargo.CargoName) - - if Task.Cargo:OnBoarded( Client, Task.CurrentCargoZone ) then - - -- Load the Cargo onto the Client - Task.Cargo:Load( Client ) - - -- Message to the pilot that cargo has been loaded. - Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.", - 20, Mission.Name .. "/STAGELANDING.LOADING1." .. Host, Host ) - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - - Client:ShowCargo() - end - else - Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.", - _TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.LOADING.1." .. Host, Host , 10 ) - for CargoID, Cargo in pairs( CARGOS ) do - self:T( "Cargo.CargoName = " .. Cargo.CargoName ) - - if Cargo:IsSlingLoad() then - local CargoStatic = StaticObject.getByName( Cargo.CargoStaticName ) - if CargoStatic then - self:T( "Cargo is found in the DCS simulator.") - local CargoStaticPosition = CargoStatic:getPosition().p - self:T( "Cargo Position x = " .. CargoStaticPosition.x .. ", y = " .. CargoStaticPosition.y .. ", z = " .. CargoStaticPosition.z ) - local CargoStaticHeight = routines.GetUnitHeight( CargoStatic ) - if CargoStaticHeight > 5 then - self:T( "Cargo is airborne.") - Cargo:StatusLoaded() - Task.Cargo = Cargo - Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.', - self.MSG.TIME, Mission.Name .. "/STAGELANDING.LOADING.2." .. Host, Host ) - Task.ExecuteStage = _TransportExecuteStage.SUCCESS - break - end - else - self:T( "Cargo not found in the DCS simulator." ) - end - end - end - end - -end - -function STAGELOAD:Validate( Mission, Client, Task ) - self:F() - - self:T( "Task.CurrentLandingZoneName = " .. Task.CurrentLandingZoneName ) - - local Host = "Command" - if Task.HostUnitName then - Host = Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" - else - if Client:IsMultiSeated() then - Host = "Co-Pilot" - end - end - - if not Task.IsSlingLoad then - if not routines.IsUnitNearZonesRadius( Client:GetClientGroupDCSUnit(), Task.CurrentLandingZoneName, 500 ) then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - local DCSUnitVelocityVec3 = Client:GetClientGroupDCSUnit():getVelocity() - local DCSUnitVelocity = ( DCSUnitVelocityVec3.x ^2 + DCSUnitVelocityVec3.y ^2 + DCSUnitVelocityVec3.z ^2 ) ^ 0.5 - - local DCSUnitPointVec3 = Client:GetClientGroupDCSUnit():getPoint() - local LandHeight = land.getHeight( { x = DCSUnitPointVec3.x, y = DCSUnitPointVec3.z } ) - local DCSUnitHeight = DCSUnitPointVec3.y - LandHeight - - self:T( { Task.IsLandingRequired, Client:GetClientGroupDCSUnit():inAir() } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == true and Client:GetClientGroupDCSUnit():inAir() then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - self:T( { DCSUnitVelocity, DCSUnitHeight, LandHeight, Task.CurrentCargoZone.SignalHeight } ) - if Task.IsLandingRequired and Task.IsInAirTestRequired == false and DCSUnitVelocity >= 2 and DCSUnitHeight >= Task.CurrentCargoZone.SignalHeight then - Task:RemoveCargoMenus( Client ) - Task.ExecuteStage = _TransportExecuteStage.FAILED - Task.CargoName = nil - Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Host, Host ) - self:T( -1 ) - return -1 - end - - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - Task:RemoveCargoMenus( Client ) - Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.3." .. Host, Host ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) - self:T( 1 ) - return 1 - end - - else - if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then - CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName ) - if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then - Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.", - self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.4." .. Host, Host ) - Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 ) - self:T( 1 ) - return 1 - end - end - - end - - - self:T( 0 ) - return 0 -end - - -STAGEDONE = { - ClassName = "STAGEDONE", - MSG = { ID = "Done", TIME = 10 }, - Name = "Done" -} - -function STAGEDONE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'AI' - return self -end - -function STAGEDONE:Execute( Mission, Client, Task ) - self:F() - -end - -function STAGEDONE:Validate( Mission, Client, Task ) - self:F() - - Task:Done() - - return 0 -end - -STAGEARRIVE = { - ClassName = "STAGEARRIVE", - MSG = { ID = "Arrive", TIME = 10 }, - Name = "Arrive" -} - -function STAGEARRIVE:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'CLIENT' - return self -end - - ---- Execute Arrival --- @param #STAGEARRIVE self --- @param Mission#MISSION Mission --- @param Client#CLIENT Client --- @param Task#TASK Task -function STAGEARRIVE:Execute( Mission, Client, Task ) - self:F() - - if Client:IsMultiSeated() then - Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Co-Pilot" ) - else - Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Command" ) - end - -end - -function STAGEARRIVE:Validate( Mission, Client, Task ) - self:F() - - Task.CurrentLandingZoneID = routines.IsUnitInZones( Client:GetClientGroupDCSUnit(), Task.LandingZones ) - if ( Task.CurrentLandingZoneID ) then - else - return -1 - end - - return 1 -end - -STAGEGROUPSDESTROYED = { - ClassName = "STAGEGROUPSDESTROYED", - DestroyGroupSize = -1, - Frequency = STAGE.FREQUENCY.REPEAT, - MSG = { ID = "DestroyGroup", TIME = 10 }, - Name = "GroupsDestroyed" -} - -function STAGEGROUPSDESTROYED:New() - local self = BASE:Inherit( self, STAGE:New() ) - self:F() - self.StageType = 'AI' - return self -end - ---function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) --- --- Client:Message( 'Task: Still ' .. DestroyGroupSize .. " of " .. Task.DestroyGroupCount .. " " .. Task.DestroyGroupType .. " to be destroyed!", self.MSG.TIME, Mission.Name .. "/Stage" ) --- ---end - -function STAGEGROUPSDESTROYED:Validate( Mission, Client, Task ) - self:F() - - if Task.MissionTask:IsGoalReached() then - return 1 - else - return 0 - end -end - -function STAGEGROUPSDESTROYED:Execute( Mission, Client, Task ) - self:F() - self:T( { Task.ClassName, Task.Destroyed } ) - --env.info( 'Event Table Task = ' .. tostring(Task) ) - -end - - - - - - - - - - - - - ---[[ - _TransportStage: Defines the different stages of which of transport missions can be in. This table is internal and is used to control the sequence of messages, actions and flow. - - - _TransportStage.START - - _TransportStage.ROUTE - - _TransportStage.LAND - - _TransportStage.EXECUTE - - _TransportStage.DONE - - _TransportStage.REMOVE ---]] -_TransportStage = { - HOLD = "HOLD", - START = "START", - ROUTE = "ROUTE", - LANDING = "LANDING", - LANDED = "LANDED", - EXECUTING = "EXECUTING", - LOAD = "LOAD", - UNLOAD = "UNLOAD", - DONE = "DONE", - NEXT = "NEXT" -} - -_TransportStageMsgTime = { - HOLD = 10, - START = 60, - ROUTE = 5, - LANDING = 10, - LANDED = 30, - EXECUTING = 30, - LOAD = 30, - UNLOAD = 30, - DONE = 30, - NEXT = 0 -} - -_TransportStageTime = { - HOLD = 10, - START = 5, - ROUTE = 5, - LANDING = 1, - LANDED = 1, - EXECUTING = 5, - LOAD = 5, - UNLOAD = 5, - DONE = 1, - NEXT = 0 -} - -_TransportStageAction = { - REPEAT = -1, - NONE = 0, - ONCE = 1 -} ---- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited. --- @module TASK - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Stage" ) - ---- The TASK class --- @type TASK --- @extends Base#BASE -TASK = { - - -- Defines the different signal types with a Task. - SIGNAL = { - COLOR = { - RED = { ID = 1, COLOR = trigger.smokeColor.Red, TEXT = "A red" }, - GREEN = { ID = 2, COLOR = trigger.smokeColor.Green, TEXT = "A green" }, - BLUE = { ID = 3, COLOR = trigger.smokeColor.Blue, TEXT = "A blue" }, - WHITE = { ID = 4, COLOR = trigger.smokeColor.White, TEXT = "A white" }, - ORANGE = { ID = 5, COLOR = trigger.smokeColor.Orange, TEXT = "An orange" } - }, - TYPE = { - SMOKE = { ID = 1, TEXT = "smoke" }, - FLARE = { ID = 2, TEXT = "flare" } - } - }, - ClassName = "TASK", - Mission = {}, -- Owning mission of the Task - Name = '', - Stages = {}, - Stage = {}, - Cargos = { - InitCargos = {}, - LoadCargos = {} - }, - LandingZones = { - LandingZoneNames = {}, - LandingZones = {} - }, - ActiveStage = 0, - TaskDone = false, - TaskFailed = false, - GoalTasks = {} -} - ---- Instantiates a new TASK Base. Should never be used. Interface Class. --- @return TASK -function TASK:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F() - - -- assign Task default values during construction - self.TaskBriefing = "Task: No Task." - self.Time = timer.getTime() - self.ExecuteStage = _TransportExecuteStage.NONE - - return self -end - -function TASK:SetStage( StageSequenceIncrement ) - self:F( { StageSequenceIncrement } ) - - local Valid = false - if StageSequenceIncrement ~= 0 then - self.ActiveStage = self.ActiveStage + StageSequenceIncrement - if 1 <= self.ActiveStage and self.ActiveStage <= #self.Stages then - self.Stage = self.Stages[self.ActiveStage] - self:T( { self.Stage.Name } ) - self.Frequency = self.Stage.Frequency - Valid = true - else - Valid = false - env.info( "TASK:SetStage() self.ActiveStage is smaller or larger than self.Stages array. self.ActiveStage = " .. self.ActiveStage ) - end - end - self.Time = timer.getTime() - return Valid -end - -function TASK:Init() - self:F() - self.ActiveStage = 0 - self:SetStage(1) - self.TaskDone = false - self.TaskFailed = false -end - - ---- Get progress of a TASK. --- @return string GoalsText -function TASK:GetGoalProgress() - self:F2() - - local GoalsText = "" - for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do - local Goals = self:GetGoalCompletion( GoalVerb ) - if Goals and Goals ~= "" then - Goals = '(' .. Goals .. ')' - else - Goals = '( - )' - end - GoalsText = GoalsText .. GoalVerb .. ': ' .. self:GetGoalCount(GoalVerb) .. ' goals ' .. Goals .. ' of ' .. self:GetGoalTotal(GoalVerb) .. ' goals completed (' .. self:GetGoalPercentage(GoalVerb) .. '%); ' - end - - if GoalsText == "" then - GoalsText = "( - )" - end - - return GoalsText -end - ---- Show progress of a TASK. --- @param MISSION Mission Group structure describing the Mission. --- @param CLIENT Client Group structure describing the Client. -function TASK:ShowGoalProgress( Mission, Client ) - self:F2() - - local GoalsText = "" - for GoalVerb, GoalVerbData in pairs( self.GoalTasks ) do - if Mission:IsCompleted() then - else - local Goals = self:GetGoalCompletion( GoalVerb ) - if Goals and Goals ~= "" then - else - Goals = "-" - end - GoalsText = GoalsText .. self:GetGoalProgress() - end - end - - if Mission.MissionReportFlash or Mission.MissionReportShow then - Client:Message( GoalsText, 10, "/TASKPROGRESS" .. self.ClassName, "Mission Command: Task Status", 30 ) - end -end - ---- Sets a TASK to status Done. -function TASK:Done() - self:F2() - self.TaskDone = true -end - ---- Returns if a TASK is done. --- @return bool -function TASK:IsDone() - self:F2( self.TaskDone ) - return self.TaskDone -end - ---- Sets a TASK to status failed. -function TASK:Failed() - self:F() - self.TaskFailed = true -end - ---- Returns if a TASk has failed. --- @return bool -function TASK:IsFailed() - self:F2( self.TaskFailed ) - return self.TaskFailed -end - -function TASK:Reset( Mission, Client ) - self:F2() - self.ExecuteStage = _TransportExecuteStage.NONE -end - ---- Returns the Goals of a TASK --- @return @table Goals -function TASK:GetGoals() - return self.GoalTasks -end - ---- Returns if a TASK has Goal(s). --- @param #TASK self --- @param #string GoalVerb is the name of the Goal of the TASK. --- @return bool -function TASK:Goal( GoalVerb ) - self:F2( { GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - self:T2( {self.GoalTasks[GoalVerb] } ) - if self.GoalTasks[GoalVerb] and self.GoalTasks[GoalVerb].GoalTotal > 0 then - return true - else - return false - end -end - ---- Sets the total Goals to be achieved of the Goal Name --- @param number GoalTotal is the number of times the GoalVerb needs to be achieved. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. -function TASK:SetGoalTotal( GoalTotal, GoalVerb ) - self:F2( { GoalTotal, GoalVerb } ) - - if not GoalVerb then - GoalVerb = self.GoalVerb - end - self.GoalTasks[GoalVerb] = {} - self.GoalTasks[GoalVerb].Goals = {} - self.GoalTasks[GoalVerb].GoalTotal = GoalTotal - self.GoalTasks[GoalVerb].GoalCount = 0 - return self -end - ---- Gets the total of Goals to be achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. -function TASK:GetGoalTotal( GoalVerb ) - self:F2( { GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return self.GoalTasks[GoalVerb].GoalTotal - else - return 0 - end -end - ---- Sets the total of Goals currently achieved within the TASK of the GoalVerb. --- @param number GoalCount is the total number of Goals achieved within the TASK. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:SetGoalCount( GoalCount, GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb) then - self.GoalTasks[GoalVerb].GoalCount = GoalCount - end - return self -end - ---- Increments the total of Goals currently achieved within the TASK of the GoalVerb, with the given GoalCountIncrease. --- @param number GoalCountIncrease is the number of new Goals achieved within the TASK. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:IncreaseGoalCount( GoalCountIncrease, GoalVerb ) - self:F2( { GoalCountIncrease, GoalVerb } ) - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb) then - self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalCountIncrease - end - return self -end - ---- Gets the total of Goals currently achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:GetGoalCount( GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return self.GoalTasks[GoalVerb].GoalCount - else - return 0 - end -end - ---- Gets the percentage of Goals currently achieved within the TASK of the GoalVerb. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return TASK -function TASK:GetGoalPercentage( GoalVerb ) - self:F2() - if not GoalVerb then - GoalVerb = self.GoalVerb - end - if self:Goal( GoalVerb ) then - return math.floor( self:GetGoalCount( GoalVerb ) / self:GetGoalTotal( GoalVerb ) * 100 + .5 ) - else - return 100 - end -end - ---- Returns if all the Goals of the TASK were achieved. --- @return bool -function TASK:IsGoalReached() - self:F2() - - local GoalReached = true - - for GoalVerb, Goals in pairs( self.GoalTasks ) do - self:T2( { "GoalVerb", GoalVerb } ) - if self:Goal( GoalVerb ) then - local GoalToDo = self:GetGoalTotal( GoalVerb ) - self:GetGoalCount( GoalVerb ) - self:T2( "GoalToDo = " .. GoalToDo ) - if GoalToDo <= 0 then - else - GoalReached = false - break - end - else - break - end - end - - self:T( { GoalReached, self.GoalTasks } ) - return GoalReached -end - ---- Adds an Additional Goal for the TASK to be achieved. --- @param string GoalVerb is the name of the Goal of the TASK. --- @param string GoalTask is a text describing the Goal of the TASK to be achieved. --- @param number GoalIncrease is a number by which the Goal achievement is increasing. -function TASK:AddGoalCompletion( GoalVerb, GoalTask, GoalIncrease ) - self:F2( { GoalVerb, GoalTask, GoalIncrease } ) - - if self:Goal( GoalVerb ) then - self.GoalTasks[GoalVerb].Goals[#self.GoalTasks[GoalVerb].Goals+1] = GoalTask - self.GoalTasks[GoalVerb].GoalCount = self.GoalTasks[GoalVerb].GoalCount + GoalIncrease - end - return self -end - ---- Returns if the additional Goal for the TASK was completed. --- @param ?string GoalVerb is the name of the Goal of the TASK. If the GoalVerb is not given, then the default TASK Goals will be used. --- @return string Goals -function TASK:GetGoalCompletion( GoalVerb ) - self:F2( { GoalVerb } ) - - if self:Goal( GoalVerb ) then - local Goals = "" - for GoalID, GoalName in pairs( self.GoalTasks[GoalVerb].Goals ) do Goals = Goals .. GoalName .. " + " end - return Goals:gsub(" + $", ""), self.GoalTasks[GoalVerb].GoalCount - end -end - -function TASK.MenuAction( Parameter ) - Parameter.ReferenceTask.ExecuteStage = _TransportExecuteStage.EXECUTING - Parameter.ReferenceTask.Cargo = Parameter.CargoTask -end - -function TASK:StageExecute() - self:F() - - local Execute = false - - if self.Frequency == STAGE.FREQUENCY.REPEAT then - Execute = true - elseif self.Frequency == STAGE.FREQUENCY.NONE then - Execute = false - elseif self.Frequency >= 0 then - Execute = true - self.Frequency = self.Frequency - 1 - end - - return Execute - -end - ---- Work function to set signal events within a TASK. -function TASK:AddSignal( SignalUnitNames, SignalType, SignalColor, SignalHeight ) - self:F() - - local Valid = true - - if Valid then - if type( SignalUnitNames ) == "table" then - self.LandingZoneSignalUnitNames = SignalUnitNames - else - self.LandingZoneSignalUnitNames = { SignalUnitNames } - end - self.LandingZoneSignalType = SignalType - self.LandingZoneSignalColor = SignalColor - self.Signalled = false - if SignalHeight ~= nil then - self.LandingZoneSignalHeight = SignalHeight - else - self.LandingZoneSignalHeight = 0 - end - - if self.TaskBriefing then - self.TaskBriefing = self.TaskBriefing .. " " .. SignalColor.TEXT .. " " .. SignalType.TEXT .. " will be fired when entering the landing zone." - end - end - - return Valid -end - ---- When the CLIENT is approaching the landing zone, a RED SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeRed( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.RED, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a GREEN SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeGreen( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a BLUE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeBlue( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a WHITE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeWhite( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, an ORANGE SMOKE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddSmokeOrange( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.SMOKE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a RED FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareRed( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.RED, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a GREEN FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareGreen( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.GREEN, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a BLUE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareBlue( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.BLUE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, a WHITE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareWhite( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.WHITE, SignalHeight ) -end - ---- When the CLIENT is approaching the landing zone, an ORANGE FLARE will be fired by an optional SignalUnitNames. --- @param table|string SignalUnitNames Name of the Group that will fire the signal. If this parameter is NIL, the signal will be fired from the center of the landing zone. --- @param number SignalHeight Altitude that the Signal should be fired... -function TASK:AddFlareOrange( SignalUnitNames, SignalHeight ) - self:F() - self:AddSignal( SignalUnitNames, TASK.SIGNAL.TYPE.FLARE, TASK.SIGNAL.COLOR.ORANGE, SignalHeight ) -end ---- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME. --- @module GOHOMETASK - -Include.File("Task") - ---- The GOHOMETASK class --- @type -GOHOMETASK = { - ClassName = "GOHOMETASK", -} - ---- Creates a new GOHOMETASK. --- @param table{string,...}|string LandingZones Table of Landing Zone names where Home(s) are located. --- @return GOHOMETASK -function GOHOMETASK:New( LandingZones ) - local self = BASE:Inherit( self, TASK:New() ) - self:F( { LandingZones } ) - local Valid = true - - Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) - - if Valid then - self.Name = 'Fly Home' - self.TaskBriefing = "Task: Fly back to your home base. Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to your home base." - if type( LandingZones ) == "table" then - self.LandingZones = LandingZones - else - self.LandingZones = { LandingZones } - end - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end ---- A DESTROYBASETASK will monitor the destruction of Groups and Units. This is a BASE class, other classes are derived from this class. --- @module DESTROYBASETASK --- @see DESTROYGROUPSTASK --- @see DESTROYUNITTYPESTASK --- @see DESTROY_RADARS_TASK - -Include.File("Task") - ---- The DESTROYBASETASK class --- @type DESTROYBASETASK -DESTROYBASETASK = { - ClassName = "DESTROYBASETASK", - Destroyed = 0, - GoalVerb = "Destroy", - DestroyPercentage = 100, -} - ---- Creates a new DESTROYBASETASK. --- @param #DESTROYBASETASK self --- @param #string DestroyGroupType Text describing the group to be destroyed. f.e. "Radar Installations", "Ships", "Vehicles", "Command Centers". --- @param #string DestroyUnitType Text describing the unit types to be destroyed. f.e. "SA-6", "Row Boats", "Tanks", "Tents". --- @param #list<#string> DestroyGroupPrefixes Table of Prefixes of the Groups to be destroyed before task is completed. --- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. --- @return DESTROYBASETASK -function DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupPrefixes, DestroyPercentage ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - self.Name = 'Destroy' - self.Destroyed = 0 - self.DestroyGroupPrefixes = DestroyGroupPrefixes - self.DestroyGroupType = DestroyGroupType - self.DestroyUnitType = DestroyUnitType - if DestroyPercentage then - self.DestroyPercentage = DestroyPercentage - end - self.TaskBriefing = "Task: Destroy " .. DestroyGroupType .. "." - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEGROUPSDESTROYED:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - - return self -end - ---- Handle the S_EVENT_DEAD events to validate the destruction of units for the task monitoring. --- @param #DESTROYBASETASK self --- @param Event#EVENTDATA Event structure of MOOSE. -function DESTROYBASETASK:EventDead( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - local DestroyUnit = Event.IniDCSUnit - local DestroyUnitName = Event.IniDCSUnitName - local DestroyGroup = Event.IniDCSGroup - local DestroyGroupName = Event.IniDCSGroupName - - --TODO: I need to fix here if 2 groups in the mission have a similar name with GroupPrefix equal, then i should differentiate for which group the goal was reached! - --I may need to test if for the goalverb that group goal was reached or something. Need to think about it a bit more ... - local UnitsDestroyed = 0 - for DestroyGroupPrefixID, DestroyGroupPrefix in pairs( self.DestroyGroupPrefixes ) do - self:T( DestroyGroupPrefix ) - if string.find( DestroyGroupName, DestroyGroupPrefix, 1, true ) then - self:T( BASE:Inherited(self).ClassName ) - UnitsDestroyed = self:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:T( UnitsDestroyed ) - end - end - - self:T( { UnitsDestroyed } ) - self:IncreaseGoalCount( UnitsDestroyed, self.GoalVerb ) - end - -end - ---- Validate task completeness of DESTROYBASETASK. --- @param DestroyGroup Group structure describing the group to be evaluated. --- @param DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYBASETASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F() - - return 0 -end ---- DESTROYGROUPSTASK --- @module DESTROYGROUPSTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYGROUPSTASK class --- @type -DESTROYGROUPSTASK = { - ClassName = "DESTROYGROUPSTASK", - GoalVerb = "Destroy Groups", -} - ---- Creates a new DESTROYGROUPSTASK. --- @param #DESTROYGROUPSTASK self --- @param #string DestroyGroupType String describing the group to be destroyed. --- @param #string DestroyUnitType String describing the unit to be destroyed. --- @param #list<#string> DestroyGroupNames Table of string containing the name of the groups to be destroyed before task is completed. --- @param #number DestroyPercentage defines the %-tage that needs to be destroyed to achieve mission success. eg. If in the Group there are 10 units, then a value of 75 would require 8 units to be destroyed from the Group to complete the @{TASK}. ----@return DESTROYGROUPSTASK -function DESTROYGROUPSTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) - local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyPercentage ) ) - self:F() - - self.Name = 'Destroy Groups' - self.GoalVerb = "Destroy " .. DestroyGroupType - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - _EVENTDISPATCHER:OnCrash( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param #DESTROYGROUPSTASK self --- @param DCSGroup#Group DestroyGroup Group structure describing the group to be evaluated. --- @param DCSUnit#Unit DestroyUnit Unit structure describing the Unit to be evaluated. --- @return #number The DestroyCount reflecting the amount of units destroyed within the group. -function DESTROYGROUPSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit, self.DestroyPercentage } ) - - local DestroyGroupSize = DestroyGroup:getSize() - 1 -- When a DEAD event occurs, the getSize is still one larger than the destroyed unit. - local DestroyGroupInitialSize = DestroyGroup:getInitialSize() - self:T( { DestroyGroupSize, DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) } ) - - local DestroyCount = 0 - if DestroyGroup then - if DestroyGroupSize <= DestroyGroupInitialSize - ( DestroyGroupInitialSize * self.DestroyPercentage / 100 ) then - DestroyCount = 1 - end - else - DestroyCount = 1 - end - - self:T( DestroyCount ) - - return DestroyCount -end ---- Task class to destroy radar installations. --- @module DESTROYRADARSTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYRADARS class --- @type -DESTROYRADARSTASK = { - ClassName = "DESTROYRADARSTASK", - GoalVerb = "Destroy Radars" -} - ---- Creates a new DESTROYRADARSTASK. --- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. --- @return DESTROYRADARSTASK -function DESTROYRADARSTASK:New( DestroyGroupNames ) - local self = BASE:Inherit( self, DESTROYGROUPSTASK:New( 'radar installations', 'radars', DestroyGroupNames ) ) - self:F() - - self.Name = 'Destroy Radars' - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param Group DestroyGroup Group structure describing the group to be evaluated. --- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYRADARSTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit } ) - - local DestroyCount = 0 - if DestroyUnit and DestroyUnit:hasSensors( Unit.SensorType.RADAR, Unit.RadarType.AS ) then - if DestroyUnit and DestroyUnit:getLife() <= 1.0 then - self:T( 'Destroyed a radar' ) - DestroyCount = 1 - end - end - return DestroyCount -end ---- Set TASK to destroy certain unit types. --- @module DESTROYUNITTYPESTASK - -Include.File("DestroyBaseTask") - ---- The DESTROYUNITTYPESTASK class --- @type -DESTROYUNITTYPESTASK = { - ClassName = "DESTROYUNITTYPESTASK", - GoalVerb = "Destroy", -} - ---- Creates a new DESTROYUNITTYPESTASK. --- @param string DestroyGroupType String describing the group to be destroyed. f.e. "Radar Installations", "Fleet", "Batallion", "Command Centers". --- @param string DestroyUnitType String describing the unit to be destroyed. f.e. "radars", "ships", "tanks", "centers". --- @param table{string,...} DestroyGroupNames Table of string containing the group names of which the radars are be destroyed. --- @param string DestroyUnitTypes Table of string containing the type names of the units to achieve mission success. --- @return DESTROYUNITTYPESTASK -function DESTROYUNITTYPESTASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes ) - local self = BASE:Inherit( self, DESTROYBASETASK:New( DestroyGroupType, DestroyUnitType, DestroyGroupNames ) ) - self:F( { DestroyGroupType, DestroyUnitType, DestroyGroupNames, DestroyUnitTypes } ) - - if type(DestroyUnitTypes) == 'table' then - self.DestroyUnitTypes = DestroyUnitTypes - else - self.DestroyUnitTypes = { DestroyUnitTypes } - end - - self.Name = 'Destroy Unit Types' - self.GoalVerb = "Destroy " .. DestroyGroupType - - _EVENTDISPATCHER:OnDead( self.EventDead , self ) - - return self -end - ---- Report Goal Progress. --- @param Group DestroyGroup Group structure describing the group to be evaluated. --- @param Unit DestroyUnit Unit structure describing the Unit to be evaluated. -function DESTROYUNITTYPESTASK:ReportGoalProgress( DestroyGroup, DestroyUnit ) - self:F( { DestroyGroup, DestroyUnit } ) - - local DestroyCount = 0 - for UnitTypeID, UnitType in pairs( self.DestroyUnitTypes ) do - if DestroyUnit and DestroyUnit:getTypeName() == UnitType then - if DestroyUnit and DestroyUnit:getLife() <= 1.0 then - DestroyCount = DestroyCount + 1 - end - end - end - return DestroyCount -end ---- A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone. --- @module PICKUPTASK --- @parent TASK - -Include.File("Task") -Include.File("Cargo") - ---- The PICKUPTASK class --- @type -PICKUPTASK = { - ClassName = "PICKUPTASK", - TEXT = { "Pick-Up", "picked-up", "loaded" }, - GoalVerb = "Pick-Up" -} - ---- Creates a new PICKUPTASK. --- @param table{string,...}|string LandingZones Table of Zone names where Cargo is to be loaded. --- @param CARGO_TYPE CargoType Type of the Cargo. The type must be of the following Enumeration:.. --- @param number OnBoardSide Reflects from which side the cargo Group will be on-boarded on the Carrier. -function PICKUPTASK:New( CargoType, OnBoardSide ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - -- self holds the inherited instance of the PICKUPTASK Class to the BASE class. - - local Valid = true - - if Valid then - self.Name = 'Pickup Cargo' - self.TaskBriefing = "Task: Fly to the indicated landing zones and pickup " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the pickup zone." - self.CargoType = CargoType - self.GoalVerb = CargoType .. " " .. self.GoalVerb - self.OnBoardSide = OnBoardSide - self.IsLandingRequired = true -- required to decide whether the client needs to land or not - self.IsSlingLoad = false -- Indicates whether the cargo is a sling load cargo - self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGELOAD:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - -function PICKUPTASK:FromZone( LandingZone ) - self:F() - - self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName - self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone - - return self -end - -function PICKUPTASK:InitCargo( InitCargos ) - self:F( { InitCargos } ) - - if type( InitCargos ) == "table" then - self.Cargos.InitCargos = InitCargos - else - self.Cargos.InitCargos = { InitCargos } - end - - return self -end - -function PICKUPTASK:LoadCargo( LoadCargos ) - self:F( { LoadCargos } ) - - if type( LoadCargos ) == "table" then - self.Cargos.LoadCargos = LoadCargos - else - self.Cargos.LoadCargos = { LoadCargos } - end - - return self -end - -function PICKUPTASK:AddCargoMenus( Client, Cargos, TransportRadius ) - self:F() - - for CargoID, Cargo in pairs( Cargos ) do - - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) - - -- If the Cargo has no status, allow the menu option. - if Cargo:IsStatusNone() or ( Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() ) then - - local MenuAdd = false - if Cargo:IsNear( Client, self.CurrentCargoZone ) then - MenuAdd = true - end - - if MenuAdd then - if Client._Menus[Cargo.CargoType] == nil then - Client._Menus[Cargo.CargoType] = {} - end - - if not Client._Menus[Cargo.CargoType].PickupMenu then - Client._Menus[Cargo.CargoType].PickupMenu = missionCommands.addSubMenuForGroup( - Client:GetClientGroupID(), - self.TEXT[1] .. " " .. Cargo.CargoType, - nil - ) - self:T( 'Added PickupMenu: ' .. self.TEXT[1] .. " " .. Cargo.CargoType ) - end - - if Client._Menus[Cargo.CargoType].PickupSubMenus == nil then - Client._Menus[Cargo.CargoType].PickupSubMenus = {} - end - - Client._Menus[Cargo.CargoType].PickupSubMenus[ #Client._Menus[Cargo.CargoType].PickupSubMenus + 1 ] = missionCommands.addCommandForGroup( - Client:GetClientGroupID(), - Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", - Client._Menus[Cargo.CargoType].PickupMenu, - self.MenuAction, - { ReferenceTask = self, CargoTask = Cargo } - ) - self:T( 'Added PickupSubMenu' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) - end - end - end - -end - -function PICKUPTASK:RemoveCargoMenus( Client ) - self:F() - - for MenuID, MenuData in pairs( Client._Menus ) do - for SubMenuID, SubMenuData in pairs( MenuData.PickupSubMenus ) do - missionCommands.removeItemForGroup( Client:GetClientGroupID(), SubMenuData ) - self:T( "Removed PickupSubMenu " ) - SubMenuData = nil - end - if MenuData.PickupMenu then - missionCommands.removeItemForGroup( Client:GetClientGroupID(), MenuData.PickupMenu ) - self:T( "Removed PickupMenu " ) - MenuData.PickupMenu = nil - end - end - - for CargoID, Cargo in pairs( CARGOS ) do - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) - if Cargo:IsStatusLoading() and Client == Cargo:IsLoadingToClient() then - Cargo:StatusNone() - end - end - -end - - - -function PICKUPTASK:HasFailed( ClientDead ) - self:F() - - local TaskHasFailed = self.TaskFailed - return TaskHasFailed -end - ---- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone. --- @module DEPLOYTASK - -Include.File( "Task" ) - ---- A DeployTask --- @type DEPLOYTASK -DEPLOYTASK = { - ClassName = "DEPLOYTASK", - TEXT = { "Deploy", "deployed", "unloaded" }, - GoalVerb = "Deployment" -} - - ---- Creates a new DEPLOYTASK object, which models the sequence of STAGEs to unload a cargo. --- @function [parent=#DEPLOYTASK] New --- @param #string CargoType Type of the Cargo. --- @return #DEPLOYTASK The created DeployTask -function DEPLOYTASK:New( CargoType ) - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - local Valid = true - - if Valid then - self.Name = 'Deploy Cargo' - self.TaskBriefing = "Fly to one of the indicated landing zones and deploy " .. CargoType .. ". Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the deployment zone." - self.CargoType = CargoType - self.GoalVerb = CargoType .. " " .. self.GoalVerb - self.Stages = { STAGE_CARGO_INIT:New(), STAGE_CARGO_LOAD:New(), STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGELANDING:New(), STAGELANDED:New(), STAGEUNLOAD:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - -function DEPLOYTASK:ToZone( LandingZone ) - self:F() - - self.LandingZones.LandingZoneNames[LandingZone.CargoZoneName] = LandingZone.CargoZoneName - self.LandingZones.LandingZones[LandingZone.CargoZoneName] = LandingZone - - return self -end - - -function DEPLOYTASK:InitCargo( InitCargos ) - self:F( { InitCargos } ) - - if type( InitCargos ) == "table" then - self.Cargos.InitCargos = InitCargos - else - self.Cargos.InitCargos = { InitCargos } - end - - return self -end - - -function DEPLOYTASK:LoadCargo( LoadCargos ) - self:F( { LoadCargos } ) - - if type( LoadCargos ) == "table" then - self.Cargos.LoadCargos = LoadCargos - else - self.Cargos.LoadCargos = { LoadCargos } - end - - return self -end - - ---- When the cargo is unloaded, it will move to the target zone name. --- @param string TargetZoneName Name of the Zone to where the Cargo should move after unloading. -function DEPLOYTASK:SetCargoTargetZoneName( TargetZoneName ) - self:F() - - local Valid = true - - Valid = routines.ValidateString( TargetZoneName, "TargetZoneName", Valid ) - - if Valid then - self.TargetZoneName = TargetZoneName - end - - return Valid - -end - -function DEPLOYTASK:AddCargoMenus( Client, Cargos, TransportRadius ) - self:F() - - local ClientGroupID = Client:GetClientGroupID() - - self:T( ClientGroupID ) - - for CargoID, Cargo in pairs( Cargos ) do - - self:T( { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } ) - - if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then - - if Client._Menus[Cargo.CargoType] == nil then - Client._Menus[Cargo.CargoType] = {} - end - - if not Client._Menus[Cargo.CargoType].DeployMenu then - Client._Menus[Cargo.CargoType].DeployMenu = missionCommands.addSubMenuForGroup( - ClientGroupID, - self.TEXT[1] .. " " .. Cargo.CargoType, - nil - ) - self:T( 'Added DeployMenu ' .. self.TEXT[1] ) - end - - if Client._Menus[Cargo.CargoType].DeploySubMenus == nil then - Client._Menus[Cargo.CargoType].DeploySubMenus = {} - end - - if Client._Menus[Cargo.CargoType].DeployMenu == nil then - self:T( 'deploymenu is nil' ) - end - - Client._Menus[Cargo.CargoType].DeploySubMenus[ #Client._Menus[Cargo.CargoType].DeploySubMenus + 1 ] = missionCommands.addCommandForGroup( - ClientGroupID, - Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )", - Client._Menus[Cargo.CargoType].DeployMenu, - self.MenuAction, - { ReferenceTask = self, CargoTask = Cargo } - ) - self:T( 'Added DeploySubMenu ' .. Cargo.CargoType .. ":" .. Cargo.CargoName .. " ( " .. Cargo.CargoWeight .. "kg )" ) - end - end - -end - -function DEPLOYTASK:RemoveCargoMenus( Client ) - self:F() - - local ClientGroupID = Client:GetClientGroupID() - self:T( ClientGroupID ) - - for MenuID, MenuData in pairs( Client._Menus ) do - if MenuData.DeploySubMenus ~= nil then - for SubMenuID, SubMenuData in pairs( MenuData.DeploySubMenus ) do - missionCommands.removeItemForGroup( ClientGroupID, SubMenuData ) - self:T( "Removed DeploySubMenu " ) - SubMenuData = nil - end - end - if MenuData.DeployMenu then - missionCommands.removeItemForGroup( ClientGroupID, MenuData.DeployMenu ) - self:T( "Removed DeployMenu " ) - MenuData.DeployMenu = nil - end - end - -end ---- A NOTASK is a dummy activity... But it will show a Mission Briefing... --- @module NOTASK - -Include.File("Task") - ---- The NOTASK class --- @type -NOTASK = { - ClassName = "NOTASK", -} - ---- Creates a new NOTASK. -function NOTASK:New() - local self = BASE:Inherit( self, TASK:New() ) - self:F() - - local Valid = true - - if Valid then - self.Name = 'Nothing' - self.TaskBriefing = "Task: Execute your mission." - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end ---- A ROUTETASK orchestrates the travel to a specific zone defined within the ME. --- @module ROUTETASK - ---- The ROUTETASK class --- @type -ROUTETASK = { - ClassName = "ROUTETASK", - GoalVerb = "Route", -} - ---- Creates a new ROUTETASK. --- @param table{sring,...}|string LandingZones Table of Zone Names where the target is located. --- @param string TaskBriefing (optional) Defines a text describing the briefing of the task. --- @return ROUTETASK -function ROUTETASK:New( LandingZones, TaskBriefing ) - local self = BASE:Inherit( self, TASK:New() ) - self:F( { LandingZones, TaskBriefing } ) - - local Valid = true - - Valid = routines.ValidateZone( LandingZones, "LandingZones", Valid ) - - if Valid then - self.Name = 'Route To Zone' - if TaskBriefing then - self.TaskBriefing = TaskBriefing .. " Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." - else - self.TaskBriefing = "Task: Fly to specified zone(s). Your co-pilot will provide you with the directions (required flight angle in degrees) and the distance (in km) to the target objective." - end - if type( LandingZones ) == "table" then - self.LandingZones = LandingZones - else - self.LandingZones = { LandingZones } - end - self.Stages = { STAGEBRIEF:New(), STAGESTART:New(), STAGEROUTE:New(), STAGEARRIVE:New(), STAGEDONE:New() } - self.SetStage( self, 1 ) - end - - return self -end - ---- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc. --- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}. --- @module Mission - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The MISSION class --- @type MISSION --- @extends Base#BASE --- @field #MISSION.Clients _Clients --- @field #string MissionBriefing -MISSION = { - ClassName = "MISSION", - Name = "", - MissionStatus = "PENDING", - _Clients = {}, - _Tasks = {}, - _ActiveTasks = {}, - GoalFunction = nil, - MissionReportTrigger = 0, - MissionProgressTrigger = 0, - MissionReportShow = false, - MissionReportFlash = false, - MissionTimeInterval = 0, - MissionCoalition = "", - SUCCESS = 1, - FAILED = 2, - REPEAT = 3, - _GoalTasks = {} -} - ---- @type MISSION.Clients --- @list - -function MISSION:Meta() - - local self = BASE:Inherit( self, BASE:New() ) - self:F() - - return self -end - ---- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. --- @param string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players. --- @param string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field. --- @param string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. --- @param string MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... --- @return MISSION --- @usage --- -- Declare a few missions. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Patriots', 'Primary', 'Our intelligence reports that 3 Patriot SAM defense batteries are located near Ruisi, Kvarhiti and Gori.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Package Delivery', 'Operational', 'In order to be in full control of the situation, we need you to deliver a very important package at a secret location. Fly undetected through the NATO defenses and deliver the secret package. The secret agent is located at waypoint 4.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue General', 'Tactical', 'Our intelligence has received a remote signal behind Gori. We believe it is a very important Russian General that was captured by Georgia. Go out there and rescue him! Ensure you stay out of the battle zone, keep south. Waypoint 4 is the location of our Russian General.', 'Russia' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'SA-6 SAMs', 'Primary', 'Our intelligence reports that 3 SA-6 SAM defense batteries are located near Didmukha, Khetagurov and Berula. Eliminate the Russian SAMs.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Sling Load', 'Operational', 'Fly to the cargo pickup zone at Dzegvi or Kaspi, and sling the cargo to Soganlug airbase.', 'NATO' ) --- local Mission = MISSIONSCHEDULER.AddMission( 'Rescue secret agent', 'Tactical', 'In order to be in full control of the situation, we need you to rescue a secret agent from the woods behind enemy lines. Avoid the Russian defenses and rescue the agent. Keep south until Khasuri, and keep your eyes open for any SAM presence. The agent is located at waypoint 4 on your kneeboard.', 'NATO' ) -function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoalition ) - - self = MISSION:Meta() - self:T({ MissionName, MissionPriority, MissionBriefing, MissionCoalition }) - - local Valid = true - - Valid = routines.ValidateString( MissionName, "MissionName", Valid ) - Valid = routines.ValidateString( MissionPriority, "MissionPriority", Valid ) - Valid = routines.ValidateString( MissionBriefing, "MissionBriefing", Valid ) - Valid = routines.ValidateString( MissionCoalition, "MissionCoalition", Valid ) - - if Valid then - self.Name = MissionName - self.MissionPriority = MissionPriority - self.MissionBriefing = MissionBriefing - self.MissionCoalition = MissionCoalition - end - - return self -end - ---- Returns if a Mission has completed. --- @return bool -function MISSION:IsCompleted() - self:F() - return self.MissionStatus == "ACCOMPLISHED" -end - ---- Set a Mission to completed. -function MISSION:Completed() - self:F() - self.MissionStatus = "ACCOMPLISHED" - self:StatusToClients() -end - ---- Returns if a Mission is ongoing. --- treturn bool -function MISSION:IsOngoing() - self:F() - return self.MissionStatus == "ONGOING" -end - ---- Set a Mission to ongoing. -function MISSION:Ongoing() - self:F() - self.MissionStatus = "ONGOING" - --self:StatusToClients() -end - ---- Returns if a Mission is pending. --- treturn bool -function MISSION:IsPending() - self:F() - return self.MissionStatus == "PENDING" -end - ---- Set a Mission to pending. -function MISSION:Pending() - self:F() - self.MissionStatus = "PENDING" - self:StatusToClients() -end - ---- Returns if a Mission has failed. --- treturn bool -function MISSION:IsFailed() - self:F() - return self.MissionStatus == "FAILED" -end - ---- Set a Mission to failed. -function MISSION:Failed() - self:F() - self.MissionStatus = "FAILED" - self:StatusToClients() -end - ---- Send the status of the MISSION to all Clients. -function MISSION:StatusToClients() - self:F() - if self.MissionReportFlash then - for ClientID, Client in pairs( self._Clients ) do - Client:Message( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. '! ( ' .. self.MissionPriority .. ' mission ) ', 10, self.Name .. '/Status', "Mission Command: Mission Status") - end - end -end - ---- Handles the reporting. After certain time intervals, a MISSION report MESSAGE will be shown to All Players. -function MISSION:ReportTrigger() - self:F() - - if self.MissionReportShow == true then - self.MissionReportShow = false - return true - else - if self.MissionReportFlash == true then - if timer.getTime() >= self.MissionReportTrigger then - self.MissionReportTrigger = timer.getTime() + self.MissionTimeInterval - return true - else - return false - end - else - return false - end - end -end - ---- Report the status of all MISSIONs to all active Clients. -function MISSION:ReportToAll() - self:F() - - local AlivePlayers = '' - for ClientID, Client in pairs( self._Clients ) do - if Client:GetDCSGroup() then - if Client:GetClientGroupDCSUnit() then - if Client:GetClientGroupDCSUnit():getLife() > 0.0 then - if AlivePlayers == '' then - AlivePlayers = ' Players: ' .. Client:GetClientGroupDCSUnit():getPlayerName() - else - AlivePlayers = AlivePlayers .. ' / ' .. Client:GetClientGroupDCSUnit():getPlayerName() - end - end - end - end - end - local Tasks = self:GetTasks() - local TaskText = "" - for TaskID, TaskData in pairs( Tasks ) do - TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n" - end - MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), "Mission Command: Mission Report", 10, self.Name .. '/Status'):ToAll() -end - - ---- Add a goal function to a MISSION. Goal functions are called when a @{TASK} within a mission has been completed. --- @param function GoalFunction is the function defined by the mission designer to evaluate whether a certain goal has been reached after a @{TASK} finishes within the @{MISSION}. A GoalFunction must accept 2 parameters: Mission, Client, which contains the current MISSION object and the current CLIENT object respectively. --- @usage --- PatriotActivation = { --- { "US SAM Patriot Zerti", false }, --- { "US SAM Patriot Zegduleti", false }, --- { "US SAM Patriot Gvleti", false } --- } --- --- function DeployPatriotTroopsGoal( Mission, Client ) --- --- --- -- Check if the cargo is all deployed for mission success. --- for CargoID, CargoData in pairs( Mission._Cargos ) do --- if Group.getByName( CargoData.CargoGroupName ) then --- CargoGroup = Group.getByName( CargoData.CargoGroupName ) --- if CargoGroup then --- -- Check if the cargo is ready to activate --- CurrentLandingZoneID = routines.IsUnitInZones( CargoGroup:getUnits()[1], Mission:GetTask( 2 ).LandingZones ) -- The second task is the Deploytask to measure mission success upon --- if CurrentLandingZoneID then --- if PatriotActivation[CurrentLandingZoneID][2] == false then --- -- Now check if this is a new Mission Task to be completed... --- trigger.action.setGroupAIOn( Group.getByName( PatriotActivation[CurrentLandingZoneID][1] ) ) --- PatriotActivation[CurrentLandingZoneID][2] = true --- MessageToBlue( "Mission Command: Message to all airborne units! The " .. PatriotActivation[CurrentLandingZoneID][1] .. " is armed. Our air defenses are now stronger.", 60, "BLUE/PatriotDefense" ) --- MessageToRed( "Mission Command: Our satellite systems are detecting additional NATO air defenses. To all airborne units: Take care!!!", 60, "RED/PatriotDefense" ) --- Mission:GetTask( 2 ):AddGoalCompletion( "Patriots activated", PatriotActivation[CurrentLandingZoneID][1], 1 ) -- Register Patriot activation as part of mission goal. --- end --- end --- end --- end --- end --- end --- --- local Mission = MISSIONSCHEDULER.AddMission( 'NATO Transport Troops', 'Operational', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.', 'NATO' ) --- Mission:AddGoalFunction( DeployPatriotTroopsGoal ) -function MISSION:AddGoalFunction( GoalFunction ) - self:F() - self.GoalFunction = GoalFunction -end - ---- Register a new @{CLIENT} to participate within the mission. --- @param CLIENT Client is the @{CLIENT} object. The object must have been instantiated with @{CLIENT:New}. --- @return CLIENT --- @usage --- Add a number of Client objects to the Mission. --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 1', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 3', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*HOT-Deploy Troops 2', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'US UH-1H*RAMP-Deploy Troops 4', 'Transport 3 groups of air defense engineers from our barracks "Gold" and "Titan" to each patriot battery control center to activate our air defenses.' ):Transport() ) -function MISSION:AddClient( Client ) - self:F( { Client } ) - - local Valid = true - - if Valid then - self._Clients[Client.ClientName] = Client - end - - return Client -end - ---- Find a @{CLIENT} object within the @{MISSION} by its ClientName. --- @param CLIENT ClientName is a string defining the Client Group as defined within the ME. --- @return CLIENT --- @usage --- -- Seach for Client "Bomber" within the Mission. --- local BomberClient = Mission:FindClient( "Bomber" ) -function MISSION:FindClient( ClientName ) - self:F( { self._Clients[ClientName] } ) - return self._Clients[ClientName] -end - - ---- Register a @{TASK} to be completed within the @{MISSION}. Note that there can be multiple @{TASK}s registered to be completed. Each TASK can be set a certain Goal. The MISSION will not be completed until all Goals are reached. --- @param TASK Task is the @{TASK} object. The object must have been instantiated with @{TASK:New} or any of its inherited @{TASK}s. --- @param number TaskNumber is the sequence number of the TASK within the MISSION. This number does have to be chronological. --- @return TASK --- @usage --- -- Define a few tasks for the Mission. --- PickupZones = { "NATO Gold Pickup Zone", "NATO Titan Pickup Zone" } --- PickupSignalUnits = { "NATO Gold Coordination Center", "NATO Titan Coordination Center" } --- --- -- Assign the Pickup Task --- local PickupTask = PICKUPTASK:New( PickupZones, CARGO_TYPE.ENGINEERS, CLIENT.ONBOARDSIDE.LEFT ) --- PickupTask:AddSmokeBlue( PickupSignalUnits ) --- PickupTask:SetGoalTotal( 3 ) --- Mission:AddTask( PickupTask, 1 ) --- --- -- Assign the Deploy Task --- local PatriotActivationZones = { "US Patriot Battery 1 Activation", "US Patriot Battery 2 Activation", "US Patriot Battery 3 Activation" } --- local PatriotActivationZonesSmokeUnits = { "US SAM Patriot - Battery 1 Control", "US SAM Patriot - Battery 2 Control", "US SAM Patriot - Battery 3 Control" } --- local DeployTask = DEPLOYTASK:New( PatriotActivationZones, CARGO_TYPE.ENGINEERS ) --- --DeployTask:SetCargoTargetZoneName( 'US Troops Attack ' .. math.random(2) ) --- DeployTask:AddSmokeBlue( PatriotActivationZonesSmokeUnits ) --- DeployTask:SetGoalTotal( 3 ) --- DeployTask:SetGoalTotal( 3, "Patriots activated" ) --- Mission:AddTask( DeployTask, 2 ) - -function MISSION:AddTask( Task, TaskNumber ) - self:F() - - self._Tasks[TaskNumber] = Task - self._Tasks[TaskNumber]:EnableEvents() - self._Tasks[TaskNumber].ID = TaskNumber - - return Task - end - ---- Get the TASK idenified by the TaskNumber from the Mission. This function is useful in GoalFunctions. --- @param number TaskNumber is the number of the @{TASK} within the @{MISSION}. --- @return TASK --- @usage --- -- Get Task 2 from the Mission. --- Task2 = Mission:GetTask( 2 ) - -function MISSION:GetTask( TaskNumber ) - self:F() - - local Valid = true - - local Task = nil - - if type(TaskNumber) ~= "number" then - Valid = false - end - - if Valid then - Task = self._Tasks[TaskNumber] - end - - return Task -end - ---- Get all the TASKs from the Mission. This function is useful in GoalFunctions. --- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key. --- @usage --- -- Get Tasks from the Mission. --- Tasks = Mission:GetTasks() --- env.info( "Task 2 Completion = " .. Tasks[2]:GetGoalPercentage() .. "%" ) -function MISSION:GetTasks() - self:F() - - return self._Tasks -end - - ---[[ - _TransportExecuteStage: Defines the different stages of Transport unload/load execution. This table is internal and is used to control the validity of Transport load/unload timing. - - - _TransportExecuteStage.EXECUTING - - _TransportExecuteStage.SUCCESS - - _TransportExecuteStage.FAILED - ---]] -_TransportExecuteStage = { - NONE = 0, - EXECUTING = 1, - SUCCESS = 2, - FAILED = 3 -} - - ---- The MISSIONSCHEDULER is an OBJECT and is the main scheduler of ALL active MISSIONs registered within this scheduler. It's workings are considered internal and is automatically created when the Mission.lua file is included. --- @type MISSIONSCHEDULER --- @field #MISSIONSCHEDULER.MISSIONS Missions -MISSIONSCHEDULER = { - Missions = {}, - MissionCount = 0, - TimeIntervalCount = 0, - TimeIntervalShow = 150, - TimeSeconds = 14400, - TimeShow = 5 -} - ---- @type MISSIONSCHEDULER.MISSIONS --- @list <#MISSION> Mission - ---- This is the main MISSIONSCHEDULER Scheduler function. It is considered internal and is automatically created when the Mission.lua file is included. -function MISSIONSCHEDULER.Scheduler() - - - -- loop through the missions in the TransportTasks - for MissionName, MissionData in pairs( MISSIONSCHEDULER.Missions ) do - - local Mission = MissionData -- #MISSION - - if not Mission:IsCompleted() then - - -- This flag will monitor if for this mission, there are clients alive. If this flag is still false at the end of the loop, the mission status will be set to Pending (if not Failed or Completed). - local ClientsAlive = false - - for ClientID, ClientData in pairs( Mission._Clients ) do - - local Client = ClientData -- Client#CLIENT - - if Client:IsAlive() then - - -- There is at least one Client that is alive... So the Mission status is set to Ongoing. - ClientsAlive = true - - -- If this Client was not registered as Alive before: - -- 1. We register the Client as Alive. - -- 2. We initialize the Client Tasks and make a link to the original Mission Task. - -- 3. We initialize the Cargos. - -- 4. We flag the Mission as Ongoing. - if not Client.ClientAlive then - Client.ClientAlive = true - Client.ClientBriefingShown = false - for TaskNumber, Task in pairs( Mission._Tasks ) do - -- Note that this a deepCopy. Each client must have their own Tasks with own Stages!!! - Client._Tasks[TaskNumber] = routines.utils.deepCopy( Mission._Tasks[TaskNumber] ) - -- Each MissionTask must point to the original Mission. - Client._Tasks[TaskNumber].MissionTask = Mission._Tasks[TaskNumber] - Client._Tasks[TaskNumber].Cargos = Mission._Tasks[TaskNumber].Cargos - Client._Tasks[TaskNumber].LandingZones = Mission._Tasks[TaskNumber].LandingZones - end - - Mission:Ongoing() - end - - - -- For each Client, check for each Task the state and evolve the mission. - -- This flag will indicate if the Task of the Client is Complete. - local TaskComplete = false - - for TaskNumber, Task in pairs( Client._Tasks ) do - - if not Task.Stage then - Task:SetStage( 1 ) - end - - - local TransportTime = timer.getTime() - - if not Task:IsDone() then - - if Task:Goal() then - Task:ShowGoalProgress( Mission, Client ) - end - - --env.info( 'Scheduler: Mission = ' .. Mission.Name .. ' / Client = ' .. Client.ClientName .. ' / Task = ' .. Task.Name .. ' / Stage = ' .. Task.ActiveStage .. ' - ' .. Task.Stage.Name .. ' - ' .. Task.Stage.StageType ) - - -- Action - if Task:StageExecute() then - Task.Stage:Execute( Mission, Client, Task ) - end - - -- Wait until execution is finished - if Task.ExecuteStage == _TransportExecuteStage.EXECUTING then - Task.Stage:Executing( Mission, Client, Task ) - end - - -- Validate completion or reverse to earlier stage - if Task.Time + Task.Stage.WaitTime <= TransportTime then - Task:SetStage( Task.Stage:Validate( Mission, Client, Task ) ) - end - - if Task:IsDone() then - --env.info( 'Scheduler: Mission '.. Mission.Name .. ' Task ' .. Task.Name .. ' Stage ' .. Task.Stage.Name .. ' done. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) - TaskComplete = true -- when a task is not yet completed, a mission cannot be completed - - else - -- break only if this task is not yet done, so that future task are not yet activated. - TaskComplete = false -- when a task is not yet completed, a mission cannot be completed - --env.info( 'Scheduler: Mission "'.. Mission.Name .. '" Task "' .. Task.Name .. '" Stage "' .. Task.Stage.Name .. '" break. TaskComplete = ' .. string.format ( "%s", TaskComplete and "true" or "false" ) ) - break - end - - if TaskComplete then - - if Mission.GoalFunction ~= nil then - Mission.GoalFunction( Mission, Client ) - end - if MISSIONSCHEDULER.Scoring then - MISSIONSCHEDULER.Scoring:_AddMissionTaskScore( Client:GetClientGroupDCSUnit(), Mission.Name, 25 ) - end - --- if not Mission:IsCompleted() then --- end - end - end - end - - local MissionComplete = true - for TaskNumber, Task in pairs( Mission._Tasks ) do - if Task:Goal() then --- Task:ShowGoalProgress( Mission, Client ) - if Task:IsGoalReached() then - else - MissionComplete = false - end - else - MissionComplete = false -- If there is no goal, the mission should never be ended. The goal status will be set somewhere else. - end - end - - if MissionComplete then - Mission:Completed() - if MISSIONSCHEDULER.Scoring then - MISSIONSCHEDULER.Scoring:_AddMissionScore( Mission.Name, 100 ) - end - else - if TaskComplete then - -- Reset for new tasking of active client - Client.ClientAlive = false -- Reset the client tasks. - end - end - - - else - if Client.ClientAlive then - env.info( 'Scheduler: Client "' .. Client.ClientName .. '" is inactive.' ) - Client.ClientAlive = false - - -- This is tricky. If we sanitize Client._Tasks before sanitizing Client._Tasks[TaskNumber].MissionTask, then the original MissionTask will be sanitized, and will be lost within the garbage collector. - -- So first sanitize Client._Tasks[TaskNumber].MissionTask, after that, sanitize only the whole _Tasks structure... - --Client._Tasks[TaskNumber].MissionTask = nil - --Client._Tasks = nil - end - end - end - - -- If all Clients of this Mission are not activated, then the Mission status needs to be put back into Pending status. - -- But only if the Mission was Ongoing. In case the Mission is Completed or Failed, the Mission status may not be changed. In these cases, this will be the last run of this Mission in the Scheduler. - if ClientsAlive == false then - if Mission:IsOngoing() then - -- Mission status back to pending... - Mission:Pending() - end - end - end - - Mission:StatusToClients() - - if Mission:ReportTrigger() then - Mission:ReportToAll() - end - end - - return true -end - ---- Start the MISSIONSCHEDULER. -function MISSIONSCHEDULER.Start() - if MISSIONSCHEDULER ~= nil then - --MISSIONSCHEDULER.SchedulerId = routines.scheduleFunction( MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) - MISSIONSCHEDULER.SchedulerId = SCHEDULER:New( nil, MISSIONSCHEDULER.Scheduler, { }, 0, 2 ) - end -end - ---- Stop the MISSIONSCHEDULER. -function MISSIONSCHEDULER.Stop() - if MISSIONSCHEDULER.SchedulerId then - routines.removeFunction(MISSIONSCHEDULER.SchedulerId) - MISSIONSCHEDULER.SchedulerId = nil - end -end - ---- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. --- @param Mission is the MISSION object instantiated by @{MISSION:New}. --- @return MISSION --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) -function MISSIONSCHEDULER.AddMission( Mission ) - MISSIONSCHEDULER.Missions[Mission.Name] = Mission - MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount + 1 - -- Add an overall AI Client for the AI tasks... This AI Client will facilitate the Events in the background for each Task. - --MissionAdd:AddClient( CLIENT:Register( 'AI' ) ) - - return Mission -end - ---- Remove a MISSION from the MISSIONSCHEDULER. --- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) --- --- -- Now remove the Mission. --- MISSIONSCHEDULER:RemoveMission( 'Russia Transport Troops SA-6' ) -function MISSIONSCHEDULER.RemoveMission( MissionName ) - MISSIONSCHEDULER.Missions[MissionName] = nil - MISSIONSCHEDULER.MissionCount = MISSIONSCHEDULER.MissionCount - 1 -end - ---- Find a MISSION within the MISSIONSCHEDULER. --- @param MissionName is the name of the MISSION given at declaration using @{AddMission}. --- @return MISSION --- @usage --- -- Declare a mission. --- Mission = MISSION:New( 'Russia Transport Troops SA-6', --- 'Operational', --- 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', --- 'Russia' ) --- MISSIONSCHEDULER:AddMission( Mission ) --- --- -- Now find the Mission. --- MissionFind = MISSIONSCHEDULER:FindMission( 'Russia Transport Troops SA-6' ) -function MISSIONSCHEDULER.FindMission( MissionName ) - return MISSIONSCHEDULER.Missions[MissionName] -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsShow( ) - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = true - Mission.MissionReportFlash = false - end -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsFlash( TimeInterval ) - local Count = 0 - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = false - Mission.MissionReportFlash = true - Mission.MissionReportTrigger = timer.getTime() + Count * TimeInterval - Mission.MissionTimeInterval = MISSIONSCHEDULER.MissionCount * TimeInterval - env.info( "TimeInterval = " .. Mission.MissionTimeInterval ) - Count = Count + 1 - end -end - --- Internal function used by the MISSIONSCHEDULER menu. -function MISSIONSCHEDULER.ReportMissionsHide( Prm ) - for MissionName, Mission in pairs( MISSIONSCHEDULER.Missions ) do - Mission.MissionReportShow = false - Mission.MissionReportFlash = false - end -end - ---- Enables a MENU option in the communications menu under F10 to control the status of the active missions. --- This function should be called only once when starting the MISSIONSCHEDULER. -function MISSIONSCHEDULER.ReportMenu() - local ReportMenu = SUBMENU:New( 'Status' ) - local ReportMenuShow = COMMANDMENU:New( 'Show Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsShow, 0 ) - local ReportMenuFlash = COMMANDMENU:New('Flash Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsFlash, 120 ) - local ReportMenuHide = COMMANDMENU:New( 'Hide Report Missions', ReportMenu, MISSIONSCHEDULER.ReportMissionsHide, 0 ) -end - ---- Show the remaining mission time. -function MISSIONSCHEDULER:TimeShow() - self.TimeIntervalCount = self.TimeIntervalCount + 1 - if self.TimeIntervalCount >= self.TimeTriggerShow then - local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.' - MESSAGE:New( TimeMsg, "Mission time", self.TimeShow, '/TimeMsg' ):ToAll() - self.TimeIntervalCount = 0 - end -end - -function MISSIONSCHEDULER:Time( TimeSeconds, TimeIntervalShow, TimeShow ) - - self.TimeIntervalCount = 0 - self.TimeSeconds = TimeSeconds - self.TimeIntervalShow = TimeIntervalShow - self.TimeShow = TimeShow -end - ---- Adds a mission scoring to the game. -function MISSIONSCHEDULER:Scoring( Scoring ) - - self.Scoring = Scoring -end - ---- The CLEANUP class keeps an area clean of crashing or colliding airplanes. It also prevents airplanes from firing within this area. --- @module CleanUp --- @author Flightcontrol - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The CLEANUP class. --- @type CLEANUP --- @extends Base#BASE -CLEANUP = { - ClassName = "CLEANUP", - ZoneNames = {}, - TimeInterval = 300, - CleanUpList = {}, -} - ---- Creates the main object which is handling the cleaning of the debris within the given Zone Names. --- @param #CLEANUP self --- @param #table ZoneNames Is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name. --- @param #number TimeInterval The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes. --- @return #CLEANUP --- @usage --- -- Clean these Zones. --- CleanUpAirports = CLEANUP:New( { 'CLEAN Tbilisi', 'CLEAN Kutaisi' }, 150 ) --- or --- CleanUpTbilisi = CLEANUP:New( 'CLEAN Tbilisi', 150 ) --- CleanUpKutaisi = CLEANUP:New( 'CLEAN Kutaisi', 600 ) -function CLEANUP:New( ZoneNames, TimeInterval ) local self = BASE:Inherit( self, BASE:New() ) - self:F( { ZoneNames, TimeInterval } ) - - if type( ZoneNames ) == 'table' then - self.ZoneNames = ZoneNames - else - self.ZoneNames = { ZoneNames } - end - if TimeInterval then - self.TimeInterval = TimeInterval - end - - _EVENTDISPATCHER:OnBirth( self._OnEventBirth, self ) - - --self.CleanUpScheduler = routines.scheduleFunction( self._CleanUpScheduler, { self }, timer.getTime() + 1, TimeInterval ) - self.CleanUpScheduler = SCHEDULER:New( self, self._CleanUpScheduler, {}, 1, TimeInterval ) - - return self -end - - ---- Destroys a group from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSGroup#Group GroupObject The object to be destroyed. --- @param #string CleanUpGroupName The groupname... -function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName ) - self:F( { GroupObject, CleanUpGroupName } ) - - if GroupObject then -- and GroupObject:isExist() then - --MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll() - trigger.action.deactivateGroup(GroupObject) - self:T( { "GroupObject Destroyed", GroupObject } ) - end -end - ---- Destroys a @{DCSUnit#Unit} from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSUnit#Unit CleanUpUnit The object to be destroyed. --- @param #string CleanUpUnitName The Unit name ... -function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - if CleanUpUnit then - --MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll() - local CleanUpGroup = Unit.getGroup(CleanUpUnit) - -- TODO Client bug in 1.5.3 - if CleanUpGroup and CleanUpGroup:isExist() then - local CleanUpGroupUnits = CleanUpGroup:getUnits() - if #CleanUpGroupUnits == 1 then - local CleanUpGroupName = CleanUpGroup:getName() - --self:CreateEventCrash( timer.getTime(), CleanUpUnit ) - CleanUpGroup:destroy() - self:T( { "Destroyed Group:", CleanUpGroupName } ) - else - CleanUpUnit:destroy() - self:T( { "Destroyed Unit:", CleanUpUnitName } ) - end - self.CleanUpList[CleanUpUnitName] = nil -- Cleaning from the list - CleanUpUnit = nil - end - end -end - --- TODO check DCSTypes#Weapon ---- Destroys a missile from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param DCSTypes#Weapon MissileObject -function CLEANUP:_DestroyMissile( MissileObject ) - self:F( { MissileObject } ) - - if MissileObject and MissileObject:isExist() then - MissileObject:destroy() - self:T( "MissileObject Destroyed") - end -end - -function CLEANUP:_OnEventBirth( Event ) - self:F( { Event } ) - - self.CleanUpList[Event.IniDCSUnitName] = {} - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName - - _EVENTDISPATCHER:OnEngineShutDownForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnEngineStartUpForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnHitForUnit( Event.IniDCSUnitName, self._EventAddForCleanUp, self ) - _EVENTDISPATCHER:OnPilotDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self._EventCrash, self ) - _EVENTDISPATCHER:OnShotForUnit( Event.IniDCSUnitName, self._EventShot, self ) - - --self:AddEvent( world.event.S_EVENT_ENGINE_SHUTDOWN, self._EventAddForCleanUp ) - --self:AddEvent( world.event.S_EVENT_ENGINE_STARTUP, self._EventAddForCleanUp ) --- self:AddEvent( world.event.S_EVENT_HIT, self._EventAddForCleanUp ) -- , self._EventHitCleanUp ) --- self:AddEvent( world.event.S_EVENT_CRASH, self._EventCrash ) -- , self._EventHitCleanUp ) --- --self:AddEvent( world.event.S_EVENT_DEAD, self._EventCrash ) --- self:AddEvent( world.event.S_EVENT_SHOT, self._EventShot ) --- --- self:EnableEvents() - - -end - ---- Detects if a crash event occurs. --- Crashed units go into a CleanUpList for removal. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventCrash( Event ) - self:F( { Event } ) - - --TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed. - --MESSAGE:New( "Crash ", "Crash", 10, "Crash" ):ToAll() - -- self:T("before getGroup") - -- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired - -- self:T("after getGroup") - -- _grp:destroy() - -- self:T("after deactivateGroup") - -- event.initiator:destroy() - - self.CleanUpList[Event.IniDCSUnitName] = {} - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName - -end - ---- Detects if a unit shoots a missile. --- If this occurs within one of the zones, then the weapon used must be destroyed. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventShot( Event ) - self:F( { Event } ) - - -- Test if the missile was fired within one of the CLEANUP.ZoneNames. - local CurrentLandingZoneID = 0 - CurrentLandingZoneID = routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) - if ( CurrentLandingZoneID ) then - -- Okay, the missile was fired within the CLEANUP.ZoneNames, destroy the fired weapon. - --_SEADmissile:destroy() - --routines.scheduleFunction( CLEANUP._DestroyMissile, { self, Event.Weapon }, timer.getTime() + 0.1) - SCHEDULER:New( self, CLEANUP._DestroyMissile, { Event.Weapon }, 0.1 ) - end -end - - ---- Detects if the Unit has an S_EVENT_HIT within the given ZoneNames. If this is the case, destroy the unit. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventHitCleanUp( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.IniDCSUnitName, ' = ', Event.IniDCSUnit:getLife(), "/", Event.IniDCSUnit:getLife0() } ) - if Event.IniDCSUnit:getLife() < Event.IniDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.IniDCSUnitName ) - --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.IniDCSUnit }, timer.getTime() + 0.1) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.IniDCSUnit }, 0.1 ) - end - end - end - - if Event.TgtDCSUnit then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.TgtDCSUnitName, ' = ', Event.TgtDCSUnit:getLife(), "/", Event.TgtDCSUnit:getLife0() } ) - if Event.TgtDCSUnit:getLife() < Event.TgtDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.TgtDCSUnitName ) - --routines.scheduleFunction( CLEANUP._DestroyUnit, { self, Event.TgtDCSUnit }, timer.getTime() + 0.1 ) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.TgtDCSUnit }, 0.1 ) - end - end - end -end - ---- Add the @{DCSUnit#Unit} to the CleanUpList for CleanUp. -function CLEANUP:_AddForCleanUp( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - self.CleanUpList[CleanUpUnitName] = {} - self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit - self.CleanUpList[CleanUpUnitName].CleanUpUnitName = CleanUpUnitName - self.CleanUpList[CleanUpUnitName].CleanUpGroup = Unit.getGroup(CleanUpUnit) - self.CleanUpList[CleanUpUnitName].CleanUpGroupName = Unit.getGroup(CleanUpUnit):getName() - self.CleanUpList[CleanUpUnitName].CleanUpTime = timer.getTime() - self.CleanUpList[CleanUpUnitName].CleanUpMoved = false - - self:T( { "CleanUp: Add to CleanUpList: ", Unit.getGroup(CleanUpUnit):getName(), CleanUpUnitName } ) - -end - ---- Detects if the Unit has an S_EVENT_ENGINE_SHUTDOWN or an S_EVENT_HIT within the given ZoneNames. If this is the case, add the Group to the CLEANUP List. --- @param #CLEANUP self --- @param DCSTypes#Event event -function CLEANUP:_EventAddForCleanUp( Event ) - - if Event.IniDCSUnit then - if self.CleanUpList[Event.IniDCSUnitName] == nil then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.IniDCSUnit, Event.IniDCSUnitName ) - end - end - end - - if Event.TgtDCSUnit then - if self.CleanUpList[Event.TgtDCSUnitName] == nil then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.TgtDCSUnit, Event.TgtDCSUnitName ) - end - end - end - -end - -local CleanUpSurfaceTypeText = { - "LAND", - "SHALLOW_WATER", - "WATER", - "ROAD", - "RUNWAY" - } - ---- At the defined time interval, CleanUp the Groups within the CleanUpList. --- @param #CLEANUP self -function CLEANUP:_CleanUpScheduler() - self:F( { "CleanUp Scheduler" } ) - - local CleanUpCount = 0 - for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do - CleanUpCount = CleanUpCount + 1 - - self:T( { CleanUpUnitName, UnitData } ) - local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName) - local CleanUpGroupName = UnitData.CleanUpGroupName - local CleanUpUnitName = UnitData.CleanUpUnitName - if CleanUpUnit then - self:T( { "CleanUp Scheduler", "Checking:", CleanUpUnitName } ) - if _DATABASE:GetStatusGroup( CleanUpGroupName ) ~= "ReSpawn" then - local CleanUpUnitVec3 = CleanUpUnit:getPoint() - --self:T( CleanUpUnitVec3 ) - local CleanUpUnitVec2 = {} - CleanUpUnitVec2.x = CleanUpUnitVec3.x - CleanUpUnitVec2.y = CleanUpUnitVec3.z - --self:T( CleanUpUnitVec2 ) - local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2) - --self:T( CleanUpSurfaceType ) - --MESSAGE:New( "Surface " .. CleanUpUnitName .. " = " .. CleanUpSurfaceTypeText[CleanUpSurfaceType], CleanUpUnitName, 10, CleanUpUnitName ):ToAll() - - if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then - if CleanUpSurfaceType == land.SurfaceType.RUNWAY then - if CleanUpUnit:inAir() then - local CleanUpLandHeight = land.getHeight(CleanUpUnitVec2) - local CleanUpUnitHeight = CleanUpUnitVec3.y - CleanUpLandHeight - self:T( { "CleanUp Scheduler", "Height = " .. CleanUpUnitHeight } ) - if CleanUpUnitHeight < 30 then - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because below safe height and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - else - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because on runway and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - end - -- Clean Units which are waiting for a very long time in the CleanUpZone. - if CleanUpUnit then - local CleanUpUnitVelocity = CleanUpUnit:getVelocity() - local CleanUpUnitVelocityTotal = math.abs(CleanUpUnitVelocity.x) + math.abs(CleanUpUnitVelocity.y) + math.abs(CleanUpUnitVelocity.z) - if CleanUpUnitVelocityTotal < 1 then - if UnitData.CleanUpMoved then - if UnitData.CleanUpTime + 180 <= timer.getTime() then - self:T( { "CleanUp Scheduler", "Destroy due to not moving anymore " .. CleanUpUnitName } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - else - UnitData.CleanUpTime = timer.getTime() - UnitData.CleanUpMoved = true - --MESSAGE:New( "Moved " .. CleanUpUnitName, CleanUpUnitName, 10, CleanUpUnitName ):ToAll() - end - end - - else - -- Do nothing ... - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - else - self:T( "CleanUp: Group " .. CleanUpUnitName .. " cannot be found in DCS RTE, removing ..." ) - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - end - self:T(CleanUpCount) - - return true -end - ---- Dynamic spawning of groups (and units). --- --- @{#SPAWN} class --- =============== --- The @{#SPAWN} class allows to spawn dynamically new groups, based on pre-defined initialization settings, modifying the behaviour when groups are spawned. --- For each group to be spawned, within the mission editor, a group has to be created with the "late activation flag" set. We call this group the *"Spawn Template"* of the SPAWN object. --- A reference to this Spawn Template needs to be provided when constructing the SPAWN object, by indicating the name of the group within the mission editor in the constructor methods. --- --- Within the SPAWN object, there is an internal index that keeps track of which group from the internal group list was spawned. --- When new groups get spawned by using the SPAWN functions (see below), it will be validated whether the Limits (@{#SPAWN.Limit}) of the SPAWN object are not reached. --- When all is valid, a new group will be created by the spawning methods, and the internal index will be increased with 1. --- --- Regarding the name of new spawned groups, a _SpawnPrefix_ will be assigned for each new group created. --- If you want to have the Spawn Template name to be used as the _SpawnPrefix_ name, use the @{#SPAWN.New} constructor. --- However, when the @{#SPAWN.NewWithAlias} constructor was used, the Alias name will define the _SpawnPrefix_ name. --- Groups will follow the following naming structure when spawned at run-time: --- --- 1. Spawned groups will have the name _SpawnPrefix_#ggg, where ggg is a counter from 0 to 999. --- 2. Spawned units will have the name _SpawnPrefix_#ggg-uu, where uu is a counter from 0 to 99 for each new spawned unit belonging to the group. --- --- Some additional notes that need to be remembered: --- --- * Templates are actually groups defined within the mission editor, with the flag "Late Activation" set. As such, these groups are never used within the mission, but are used by the @{#SPAWN} module. --- * It is important to defined BEFORE you spawn new groups, a proper initialization of the SPAWN instance is done with the options you want to use. --- * When designing a mission, NEVER name groups using a "#" within the name of the group Spawn Template(s), or the SPAWN module logic won't work anymore. --- --- SPAWN construction methods: --- =========================== --- Create a new SPAWN object with the @{#SPAWN.New} or the @{#SPAWN.NewWithAlias} methods: --- --- * @{#SPAWN.New}: Creates a new SPAWN object taking the name of the group that functions as the Template. --- --- It is important to understand how the SPAWN class works internally. The SPAWN object created will contain internally a list of groups that will be spawned and that are already spawned. --- The initialization functions will modify this list of groups so that when a group gets spawned, ALL information is already prepared when spawning. This is done for performance reasons. --- So in principle, the group list will contain all parameters and configurations after initialization, and when groups get actually spawned, this spawning can be done quickly and efficient. --- --- SPAWN initialization methods: --- ============================= --- A spawn object will behave differently based on the usage of initialization methods: --- --- * @{#SPAWN.Limit}: Limits the amount of groups that can be alive at the same time and that can be dynamically spawned. --- * @{#SPAWN.RandomizeRoute}: Randomize the routes of spawned groups. --- * @{#SPAWN.RandomizeTemplate}: Randomize the group templates so that when a new group is spawned, a random group template is selected from one of the templates defined. --- * @{#SPAWN.Uncontrolled}: Spawn plane groups uncontrolled. --- * @{#SPAWN.Array}: Make groups visible before they are actually activated, and order these groups like a batallion in an array. --- * @{#SPAWN.InitRepeat}: Re-spawn groups when they land at the home base. Similar functions are @{#SPAWN.InitRepeatOnLanding} and @{#SPAWN.InitRepeatOnEngineShutDown}. --- --- SPAWN spawning methods: --- ======================= --- Groups can be spawned at different times and methods: --- --- * @{#SPAWN.Spawn}: Spawn one new group based on the last spawned index. --- * @{#SPAWN.ReSpawn}: Re-spawn a group based on a given index. --- * @{#SPAWN.SpawnScheduled}: Spawn groups at scheduled but randomized intervals. You can use @{#SPAWN.SpawnScheduleStart} and @{#SPAWN.SpawnScheduleStop} to start and stop the schedule respectively. --- * @{#SPAWN.SpawnFromUnit}: Spawn a new group taking the position of a @{UNIT}. --- * @{#SPAWN.SpawnInZone}: Spawn a new group in a @{ZONE}. --- --- Note that @{#SPAWN.Spawn} and @{#SPAWN.ReSpawn} return a @{GROUP#GROUP.New} object, that contains a reference to the DCSGroup object. --- You can use the @{GROUP} object to do further actions with the DCSGroup. --- --- SPAWN object cleaning: --- ========================= --- Sometimes, it will occur during a mission run-time, that ground or especially air objects get damaged, and will while being damged stop their activities, while remaining alive. --- In such cases, the SPAWN object will just sit there and wait until that group gets destroyed, but most of the time it won't, --- and it may occur that no new groups are or can be spawned as limits are reached. --- To prevent this, a @{#SPAWN.CleanUp} initialization method has been defined that will silently monitor the status of each spawned group. --- Once a group has a velocity = 0, and has been waiting for a defined interval, that group will be cleaned or removed from run-time. --- There is a catch however :-) If a damaged group has returned to an airbase within the coalition, that group will not be considered as "lost"... --- In such a case, when the inactive group is cleaned, a new group will Re-spawned automatically. --- This models AI that has succesfully returned to their airbase, to restart their combat activities. --- Check the @{#SPAWN.CleanUp} for further info. --- --- ==== --- @module Spawn --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Group" ) -Include.File( "Zone" ) -Include.File( "Event" ) -Include.File( "Scheduler" ) - ---- SPAWN Class --- @type SPAWN --- @extends Base#BASE --- @field ClassName --- @field #string SpawnTemplatePrefix --- @field #string SpawnAliasPrefix -SPAWN = { - ClassName = "SPAWN", - SpawnTemplatePrefix = nil, - SpawnAliasPrefix = nil, -} - - - ---- Creates the main object to spawn a GROUP defined in the DCS ME. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. Each new group will have the name starting with SpawnTemplatePrefix. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ) --- @usage local Plane = SPAWN:New( "Plane" ) -- Creates a new local variable that can initiate new planes with the name "Plane#ddd" using the template "Plane" as defined within the ME. -function SPAWN:New( SpawnTemplatePrefix ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { SpawnTemplatePrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - return self -end - ---- Creates a new SPAWN instance to create new groups based on the defined template and using a new alias for each new group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. --- @param #string SpawnAliasPrefix is the name that will be given to the Group at runtime. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:NewWithAlias( 'BE KA-50@RAMP-Ground Defense', 'Helicopter Attacking a City' ) --- @usage local PlaneWithAlias = SPAWN:NewWithAlias( "Plane", "Bomber" ) -- Creates a new local variable that can instantiate new planes with the name "Bomber#ddd" using the template "Plane" as defined within the ME. -function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { SpawnTemplatePrefix, SpawnAliasPrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnAliasPrefix = SpawnAliasPrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - return self -end - - ---- Limits the Maximum amount of Units that can be alive at the same time, and the maximum amount of groups that can be spawned. --- Note that this method is exceptionally important to balance the performance of the mission. Depending on the machine etc, a mission can only process a maximum amount of units. --- If the time interval must be short, but there should not be more Units or Groups alive than a maximum amount of units, then this function should be used... --- When a @{#SPAWN.New} is executed and the limit of the amount of units alive is reached, then no new spawn will happen of the group, until some of these units of the spawn object will be destroyed. --- @param #SPAWN self --- @param #number SpawnMaxUnitsAlive The maximum amount of units that can be alive at runtime. --- @param #number SpawnMaxGroups The maximum amount of groups that can be spawned. When the limit is reached, then no more actual spawns will happen of the group. --- This parameter is useful to define a maximum amount of airplanes, ground troops, helicopters, ships etc within a supply area. --- This parameter accepts the value 0, which defines that there are no maximum group limits, but there are limits on the maximum of units that can be alive at the same time. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- This helicopter group consists of one Unit. So, this group will SPAWN maximum 2 groups simultaneously within the DCSRTE. --- -- There will be maximum 24 groups spawned during the whole mission lifetime. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Limit( 2, 24 ) -function SPAWN:Limit( SpawnMaxUnitsAlive, SpawnMaxGroups ) - self:F( { self.SpawnTemplatePrefix, SpawnMaxUnitsAlive, SpawnMaxGroups } ) - - self.SpawnMaxUnitsAlive = SpawnMaxUnitsAlive -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = SpawnMaxGroups -- The maximum amount of groups that can be spawned. - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_InitializeSpawnGroups( SpawnGroupID ) - end - - return self -end - - ---- Randomizes the defined route of the SpawnTemplatePrefix group in the ME. This is very useful to define extra variation of the behaviour of groups. --- @param #SPAWN self --- @param #number SpawnStartPoint is the waypoint where the randomization begins. --- Note that the StartPoint = 0 equaling the point where the group is spawned. --- @param #number SpawnEndPoint is the waypoint where the randomization ends counting backwards. --- This parameter is useful to avoid randomization to end at a waypoint earlier than the last waypoint on the route. --- @param #number SpawnRadius is the radius in meters in which the randomization of the new waypoints, with the original waypoint of the original template located in the middle ... --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). --- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. --- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):RandomizeRoute( 2, 2, 2000 ) -function SPAWN:RandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius ) - self:F( { self.SpawnTemplatePrefix, SpawnStartPoint, SpawnEndPoint, SpawnRadius } ) - - self.SpawnRandomizeRoute = true - self.SpawnRandomizeRouteStartPoint = SpawnStartPoint - self.SpawnRandomizeRouteEndPoint = SpawnEndPoint - self.SpawnRandomizeRouteRadius = SpawnRadius - - for GroupID = 1, self.SpawnMaxGroups do - self:_RandomizeRoute( GroupID ) - end - - return self -end - - ---- This function is rather complicated to understand. But I'll try to explain. --- This function becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, --- but they will all follow the same Template route and have the same prefix name. --- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefixTable A table with the names of the groups defined within the mission editor, from which one will be choosen when a new group will be spawned. --- @return #SPAWN --- @usage --- -- NATO Tank Platoons invading Gori. --- -- Choose between 13 different 'US Tank Platoon' configurations for each new SPAWN the Group to be spawned for the --- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SpawnTemplatePrefixes. --- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and --- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. --- Spawn_US_Platoon = { 'US Tank Platoon 1', 'US Tank Platoon 2', 'US Tank Platoon 3', 'US Tank Platoon 4', 'US Tank Platoon 5', --- 'US Tank Platoon 6', 'US Tank Platoon 7', 'US Tank Platoon 8', 'US Tank Platoon 9', 'US Tank Platoon 10', --- 'US Tank Platoon 11', 'US Tank Platoon 12', 'US Tank Platoon 13' } --- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):Limit( 12, 150 ):Schedule( 200, 0.4 ):RandomizeTemplate( Spawn_US_Platoon ):RandomizeRoute( 3, 3, 2000 ) -function SPAWN:RandomizeTemplate( SpawnTemplatePrefixTable ) - self:F( { self.SpawnTemplatePrefix, SpawnTemplatePrefixTable } ) - - self.SpawnTemplatePrefixTable = SpawnTemplatePrefixTable - self.SpawnRandomizeTemplate = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_RandomizeTemplate( SpawnGroupID ) - end - - return self -end - - - - - ---- For planes and helicopters, when these groups go home and land on their home airbases and farps, they normally would taxi to the parking spot, shut-down their engines and wait forever until the Group is removed by the runtime environment. --- This function is used to re-spawn automatically (so no extra call is needed anymore) the same group after it has landed. --- This will enable a spawned group to be re-spawned after it lands, until it is destroyed... --- Note: When the group is respawned, it will re-spawn from the original airbase where it took off. --- So ensure that the routes for groups that respawn, always return to the original airbase, or players may get confused ... --- @param #SPAWN self --- @return #SPAWN self --- @usage --- -- RU Su-34 - AI Ship Attack --- -- Re-SPAWN the Group(s) after each landing and Engine Shut-Down automatically. --- SpawnRU_SU34 = SPAWN:New( 'TF1 RU Su-34 Krymsk@AI - Attack Ships' ):Schedule( 2, 3, 1800, 0.4 ):SpawnUncontrolled():RandomizeRoute( 1, 1, 3000 ):RepeatOnEngineShutDown() -function SPAWN:InitRepeat() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) - - self.Repeat = true - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - ---- Respawn group after landing. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnLanding() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - - ---- Respawn after landing when its engines have shut down. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnEngineShutDown() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = true - self.RepeatOnLanding = false - - return self -end - - ---- CleanUp groups when they are still alive, but inactive. --- When groups are still alive and have become inactive due to damage and are unable to contribute anything, then this group will be removed at defined intervals in seconds. --- @param #SPAWN self --- @param #string SpawnCleanUpInterval The interval to check for inactive groups within seconds. --- @return #SPAWN self --- @usage Spawn_Helicopter:CleanUp( 20 ) -- CleanUp the spawning of the helicopters every 20 seconds when they become inactive. -function SPAWN:CleanUp( SpawnCleanUpInterval ) - self:F( { self.SpawnTemplatePrefix, SpawnCleanUpInterval } ) - - self.SpawnCleanUpInterval = SpawnCleanUpInterval - self.SpawnCleanUpTimeStamps = {} - --self.CleanUpFunction = routines.scheduleFunction( self._SpawnCleanUpScheduler, { self }, timer.getTime() + 1, SpawnCleanUpInterval ) - self.CleanUpScheduler = SCHEDULER:New( self, self._SpawnCleanUpScheduler, {}, 1, SpawnCleanUpInterval, 0.2 ) - return self -end - - - ---- Makes the groups visible before start (like a batallion). --- The method will take the position of the group as the first position in the array. --- @param #SPAWN self --- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned. --- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis. --- @param #number SpawnDeltaX The space between each Group on the X-axis. --- @param #number SpawnDeltaY The space between each Group on the Y-axis. --- @return #SPAWN self --- @usage --- -- Define an array of Groups. --- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):Limit( 2, 24 ):Visible( 90, "Diamond", 10, 100, 50 ) -function SPAWN:Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) - self:F( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } ) - - self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start. - - local SpawnX = 0 - local SpawnY = 0 - local SpawnXIndex = 0 - local SpawnYIndex = 0 - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:T( { SpawnX, SpawnY, SpawnXIndex, SpawnYIndex } ) - - self.SpawnGroups[SpawnGroupID].Visible = true - self.SpawnGroups[SpawnGroupID].Spawned = false - - SpawnXIndex = SpawnXIndex + 1 - if SpawnWidth and SpawnWidth ~= 0 then - if SpawnXIndex >= SpawnWidth then - SpawnXIndex = 0 - SpawnYIndex = SpawnYIndex + 1 - end - end - - local SpawnRootX = self.SpawnGroups[SpawnGroupID].SpawnTemplate.x - local SpawnRootY = self.SpawnGroups[SpawnGroupID].SpawnTemplate.y - - self:_TranslateRotate( SpawnGroupID, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - - self.SpawnGroups[SpawnGroupID].SpawnTemplate.lateActivation = true - self.SpawnGroups[SpawnGroupID].SpawnTemplate.visible = true - - self.SpawnGroups[SpawnGroupID].Visible = true - - _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnBirth, self ) - _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnDeadOrCrash, self ) - - if self.Repeat then - _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnTakeOff, self ) - _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnLand, self ) - end - if self.RepeatOnEngineShutDown then - _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[SpawnGroupID].SpawnTemplate, self._OnEngineShutDown, self ) - end - - self.SpawnGroups[SpawnGroupID].Group = _DATABASE:Spawn( self.SpawnGroups[SpawnGroupID].SpawnTemplate ) - - SpawnX = SpawnXIndex * SpawnDeltaX - SpawnY = SpawnYIndex * SpawnDeltaY - end - - return self -end - - - ---- Will spawn a group based on the internal index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:Spawn() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) - - return self:SpawnWithIndex( self.SpawnIndex + 1 ) -end - ---- Will re-spawn a group based on a given index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @param #string SpawnIndex The index of the group to be spawned. --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:ReSpawn( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - --- TODO: This logic makes DCS crash and i don't know why (yet). - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup then - local SpawnDCSGroup = SpawnGroup:GetDCSGroup() - if SpawnDCSGroup then - SpawnGroup:Destroy() - end - end - - return self:SpawnWithIndex( SpawnIndex ) -end - ---- Will spawn a group with a specified index number. --- Uses @{DATABASE} global object defined in MOOSE. --- @param #SPAWN self --- @return Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:SpawnWithIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } ) - - if self:_GetSpawnIndex( SpawnIndex ) then - - if self.SpawnGroups[self.SpawnIndex].Visible then - self.SpawnGroups[self.SpawnIndex].Group:Activate() - else - self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - _EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self ) - _EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self ) - - if self.Repeat then - _EVENTDISPATCHER:OnTakeOffForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnTakeOff, self ) - _EVENTDISPATCHER:OnLandForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnLand, self ) - end - if self.RepeatOnEngineShutDown then - _EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self ) - end - - self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - - self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate ) - - -- If there is a SpawnFunction hook defined, call it. - if self.SpawnFunctionHook then - self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) - end - -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. - --if self.Repeat then - -- _DATABASE:SetStatusGroup( SpawnTemplate.name, "ReSpawn" ) - --end - end - - self.SpawnGroups[self.SpawnIndex].Spawned = true - return self.SpawnGroups[self.SpawnIndex].Group - else - --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) - end - - return nil -end - ---- Spawns new groups at varying time intervals. --- This is useful if you want to have continuity within your missions of certain (AI) groups to be present (alive) within your missions. --- @param #SPAWN self --- @param #number SpawnTime The time interval defined in seconds between each new spawn of new groups. --- @param #number SpawnTimeVariation The variation to be applied on the defined time interval between each new spawn. --- The variation is a number between 0 and 1, representing the %-tage of variation to be applied on the time interval. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The time interval is set to SPAWN new helicopters between each 600 seconds, with a time variation of 50%. --- -- The time variation in this case will be between 450 seconds and 750 seconds. --- -- This is calculated as follows: --- -- Low limit: 600 * ( 1 - 0.5 / 2 ) = 450 --- -- High limit: 600 * ( 1 + 0.5 / 2 ) = 750 --- -- Between these two values, a random amount of seconds will be choosen for each new spawn of the helicopters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 ) -function SPAWN:SpawnScheduled( SpawnTime, SpawnTimeVariation ) - self:F( { SpawnTime, SpawnTimeVariation } ) - - if SpawnTime ~= nil and SpawnTimeVariation ~= nil then - self.SpawnScheduler = SCHEDULER:New( self, self._Scheduler, {}, 1, SpawnTime, SpawnTimeVariation ) - end - - return self -end - ---- Will re-start the spawning scheduler. --- Note: This function is only required to be called when the schedule was stopped. -function SPAWN:SpawnScheduleStart() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Start() -end - ---- Will stop the scheduled spawning scheduler. -function SPAWN:SpawnScheduleStop() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Stop() -end - - ---- Allows to place a CallFunction hook when a new group spawns. --- The provided function will be called when a new group is spawned, including its given parameters. --- The first parameter of the SpawnFunction is the @{Group#GROUP} that was spawned. --- @param #SPAWN self --- @param #function SpawnFunctionHook The function to be called when a group spawns. --- @param SpawnFunctionArguments A random amount of arguments to be provided to the function when the group spawns. --- @return #SPAWN -function SPAWN:SpawnFunction( SpawnFunctionHook, ... ) - self:F( SpawnFunction ) - - self.SpawnFunctionHook = SpawnFunctionHook - self.SpawnFunctionArguments = {} - if arg then - self.SpawnFunctionArguments = arg - end - - return self -end - - - - ---- Will spawn a group from a hosting unit. This function is mostly advisable to be used if you want to simulate spawning from air units, like helicopters, which are dropping infantry into a defined Landing Zone. --- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Unit#UNIT HostUnit The air or ground unit dropping or unloading the group. --- @param #number OuterRadius The outer radius in meters where the new group will be spawned. --- @param #number InnerRadius The inner radius in meters where the new group will NOT be spawned. --- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. --- @return Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromUnit( HostUnit, OuterRadius, InnerRadius, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, HostUnit, OuterRadius, InnerRadius, SpawnIndex } ) - - if HostUnit and HostUnit:IsAlive() then -- and HostUnit:getUnit(1):inAir() == false then - - if SpawnIndex then - else - SpawnIndex = self.SpawnIndex + 1 - end - - if self:_GetSpawnIndex( SpawnIndex ) then - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - - if SpawnTemplate then - - local UnitPoint = HostUnit:GetPointVec2() - - self:T( { "Current point of ", self.SpawnTemplatePrefix, UnitPoint } ) - - --for PointID, Point in pairs( SpawnTemplate.route.points ) do - --Point.x = UnitPoint.x - --Point.y = UnitPoint.y - --Point.alt = nil - --Point.alt_type = nil - --end - - SpawnTemplate.route.points[1].x = UnitPoint.x - SpawnTemplate.route.points[1].y = UnitPoint.y - - if not InnerRadius then - InnerRadius = 10 - end - - if not OuterRadius then - OuterRadius = 50 - end - - -- Apply SpawnFormation - for UnitID = 1, #SpawnTemplate.units do - if InnerRadius == 0 then - SpawnTemplate.units[UnitID].x = UnitPoint.x - SpawnTemplate.units[UnitID].y = UnitPoint.y - else - local CirclePos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) - SpawnTemplate.units[UnitID].x = CirclePos.x - SpawnTemplate.units[UnitID].y = CirclePos.y - end - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - - local SpawnPos = routines.getRandPointInCircle( UnitPoint, OuterRadius, InnerRadius ) - local Point = {} - Point.type = "Turning Point" - Point.x = SpawnPos.x - Point.y = SpawnPos.y - Point.action = "Cone" - Point.speed = 5 - - table.insert( SpawnTemplate.route.points, 2, Point ) - - return self:SpawnWithIndex( self.SpawnIndex ) - end - end - end - - return nil -end - ---- Will spawn a Group within a given @{Zone#ZONE}. --- Once the group is spawned within the zone, it will continue on its route. --- The first waypoint (where the group is spawned) is replaced with the zone coordinates. --- @param #SPAWN self --- @param Zone#ZONE Zone The zone where the group is to be spawned. --- @param #number ZoneRandomize (Optional) Set to true if you want to randomize the starting point in the zone. --- @param #number SpawnIndex (Optional) The index which group to spawn within the given zone. --- @return Group#GROUP that was spawned. --- @return #nil when nothing was spawned. -function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, Zone, ZoneRandomize, SpawnIndex } ) - - if Zone then - - if SpawnIndex then - else - SpawnIndex = self.SpawnIndex + 1 - end - - if self:_GetSpawnIndex( SpawnIndex ) then - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - - if SpawnTemplate then - - local ZonePoint - - if ZoneRandomize == true then - ZonePoint = Zone:GetRandomPointVec2() - else - ZonePoint = Zone:GetPointVec2() - end - - SpawnTemplate.route.points[1].x = ZonePoint.x - SpawnTemplate.route.points[1].y = ZonePoint.y - - -- Apply SpawnFormation - for UnitID = 1, #SpawnTemplate.units do - local ZonePointUnit = Zone:GetRandomPointVec2() - SpawnTemplate.units[UnitID].x = ZonePointUnit.x - SpawnTemplate.units[UnitID].y = ZonePointUnit.y - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - - return self:SpawnWithIndex( self.SpawnIndex ) - end - end - end - - return nil -end - - - - ---- Will spawn a plane group in uncontrolled mode... --- This will be similar to the uncontrolled flag setting in the ME. --- @return #SPAWN self -function SPAWN:UnControlled() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnUnControlled = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self.SpawnGroups[SpawnGroupID].UnControlled = true - end - - return self -end - - - ---- Will return the SpawnGroupName either with with a specific count number or without any count. --- @param #SPAWN self --- @param #number SpawnIndex Is the number of the Group that is to be spawned. --- @return #string SpawnGroupName -function SPAWN:SpawnGroupName( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - local SpawnPrefix = self.SpawnTemplatePrefix - if self.SpawnAliasPrefix then - SpawnPrefix = self.SpawnAliasPrefix - end - - if SpawnIndex then - local SpawnName = string.format( '%s#%03d', SpawnPrefix, SpawnIndex ) - self:T( SpawnName ) - return SpawnName - else - self:T( SpawnPrefix ) - return SpawnPrefix - end - -end - ---- Find the first alive group. --- @param #SPAWN self --- @param #number SpawnCursor A number holding the index from where to find the first group from. --- @return Group#GROUP, #number The group found, the new index where the group was found. --- @return #nil, #nil When no group is found, #nil is returned. -function SPAWN:GetFirstAliveGroup( SpawnCursor ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) - - for SpawnIndex = 1, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - SpawnCursor = SpawnIndex - return SpawnGroup, SpawnCursor - end - end - - return nil, nil -end - - ---- Find the next alive group. --- @param #SPAWN self --- @param #number SpawnCursor A number holding the last found previous index. --- @return Group#GROUP, #number The group found, the new index where the group was found. --- @return #nil, #nil When no group is found, #nil is returned. -function SPAWN:GetNextAliveGroup( SpawnCursor ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnCursor } ) - - SpawnCursor = SpawnCursor + 1 - for SpawnIndex = SpawnCursor, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - SpawnCursor = SpawnIndex - return SpawnGroup, SpawnCursor - end - end - - return nil, nil -end - ---- Find the last alive group during runtime. -function SPAWN:GetLastAliveGroup() - self:F( { self.SpawnTemplatePrefixself.SpawnAliasPrefix } ) - - self.SpawnIndex = self:_GetLastIndex() - for SpawnIndex = self.SpawnIndex, 1, -1 do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - self.SpawnIndex = SpawnIndex - return SpawnGroup - end - end - - self.SpawnIndex = nil - return nil -end - - - ---- Get the group from an index. --- Returns the group from the SpawnGroups list. --- If no index is given, it will return the first group in the list. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to return. --- @return Group#GROUP -function SPAWN:GetGroupFromIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - - if self.SpawnGroups and self.SpawnGroups[SpawnIndex] then - local SpawnGroup = self.SpawnGroups[SpawnIndex].Group - return SpawnGroup - else - return nil - end -end - ---- Get the group index from a DCSUnit. --- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit. --- It will return nil of no prefix was found. --- @param #SPAWN self --- @param DCSUnit The DCS unit to be searched. --- @return #string The prefix --- @return #nil Nothing found -function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit and DCSUnit:getName() then - local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 ) - self:T( IndexString ) - - if IndexString then - local Index = tonumber( IndexString ) - self:T( { "Index:", IndexString, Index } ) - return Index - end - end - - return nil -end - ---- Return the prefix of a DCSUnit. --- The method will search for a #-mark, and will return the text before the #-mark. --- It will return nil of no prefix was found. --- @param #SPAWN self --- @param DCSUnit The DCS unit to be searched. --- @return #string The prefix --- @return #nil Nothing found -function SPAWN:_GetPrefixFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit and DCSUnit:getName() then - local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" ) - if SpawnPrefix then - SpawnPrefix = SpawnPrefix:sub( 1, -2 ) - end - self:T( SpawnPrefix ) - return SpawnPrefix - end - - return nil -end - ---- Return the group within the SpawnGroups collection with input a DCSUnit. -function SPAWN:_GetGroupFromDCSUnit( DCSUnit ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } ) - - if DCSUnit then - local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit ) - - if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then - local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit ) - local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group - self:T( SpawnGroup ) - return SpawnGroup - end - end - - return nil -end - - ---- Get the index from a given group. --- The function will search the name of the group for a #, and will return the number behind the #-mark. -function SPAWN:GetSpawnIndexFromGroup( SpawnGroup ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) - - local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 ) - local Index = tonumber( IndexString ) - - self:T( IndexString, Index ) - return Index - -end - ---- Return the last maximum index that can be used. -function SPAWN:_GetLastIndex() - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - return self.SpawnMaxGroups -end - ---- Initalize the SpawnGroups collection. -function SPAWN:_InitializeSpawnGroups( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not self.SpawnGroups[SpawnIndex] then - self.SpawnGroups[SpawnIndex] = {} - self.SpawnGroups[SpawnIndex].Visible = false - self.SpawnGroups[SpawnIndex].Spawned = false - self.SpawnGroups[SpawnIndex].UnControlled = false - self.SpawnGroups[SpawnIndex].SpawnTime = 0 - - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefix - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - end - - self:_RandomizeTemplate( SpawnIndex ) - self:_RandomizeRoute( SpawnIndex ) - --self:_TranslateRotate( SpawnIndex ) - - return self.SpawnGroups[SpawnIndex] -end - - - ---- Gets the CategoryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCategoryID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCategory() - else - return nil - end -end - ---- Gets the CoalitionID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCoalitionID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCoalition() - else - return nil - end -end - ---- Gets the CountryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCountryID( SpawnPrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnPrefix } ) - - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - local TemplateUnits = TemplateGroup:getUnits() - return TemplateUnits[1]:getCountry() - else - return nil - end -end - ---- Gets the Group Template from the ME environment definition. --- This method used the @{DATABASE} object, which contains ALL initial and new spawned object in MOOSE. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @return @SPAWN self -function SPAWN:_GetTemplate( SpawnTemplatePrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnTemplatePrefix } ) - - local SpawnTemplate = nil - - SpawnTemplate = routines.utils.deepCopy( _DATABASE.Templates.Groups[SpawnTemplatePrefix].Template ) - - if SpawnTemplate == nil then - error( 'No Template returned for SpawnTemplatePrefix = ' .. SpawnTemplatePrefix ) - end - - SpawnTemplate.SpawnCoalitionID = self:_GetGroupCoalitionID( SpawnTemplatePrefix ) - SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix ) - SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix ) - - self:T( { SpawnTemplate } ) - return SpawnTemplate -end - ---- Prepares the new Group Template. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - local SpawnTemplate = self:_GetTemplate( SpawnTemplatePrefix ) - SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) - - SpawnTemplate.groupId = nil - SpawnTemplate.lateActivation = false - - if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then - self:T( "For ground units, visible needs to be false..." ) - SpawnTemplate.visible = false - end - - if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then - SpawnTemplate.uncontrolled = false - end - - for UnitID = 1, #SpawnTemplate.units do - SpawnTemplate.units[UnitID].name = string.format( SpawnTemplate.name .. '-%02d', UnitID ) - SpawnTemplate.units[UnitID].unitId = nil - SpawnTemplate.units[UnitID].x = SpawnTemplate.route.points[1].x - SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y - end - - self:T( { "Template:", SpawnTemplate } ) - return SpawnTemplate - -end - ---- Private method randomizing the routes. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to be spawned. --- @return #SPAWN -function SPAWN:_RandomizeRoute( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeRoute, self.SpawnRandomizeRouteStartPoint, self.SpawnRandomizeRouteEndPoint, self.SpawnRandomizeRouteRadius } ) - - if self.SpawnRandomizeRoute then - local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate - local RouteCount = #SpawnTemplate.route.points - - for t = self.SpawnRandomizeRouteStartPoint + 1, ( RouteCount - self.SpawnRandomizeRouteEndPoint ) do - SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - SpawnTemplate.route.points[t].y = SpawnTemplate.route.points[t].y + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - -- TODO: manage altitude for airborne units ... - SpawnTemplate.route.points[t].alt = nil - --SpawnGroup.route.points[t].alt_type = nil - self:T( 'SpawnTemplate.route.points[' .. t .. '].x = ' .. SpawnTemplate.route.points[t].x .. ', SpawnTemplate.route.points[' .. t .. '].y = ' .. SpawnTemplate.route.points[t].y ) - end - end - - return self -end - ---- Private method that randomizes the template of the group. --- @param #SPAWN self --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_RandomizeTemplate( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - if self.SpawnRandomizeTemplate then - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y - self.SpawnGroups[SpawnIndex].SpawnTemplate.start_time = self.SpawnTemplate.start_time - for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading - end - end - - self:_RandomizeRoute( SpawnIndex ) - - return self -end - -function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle } ) - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - - -- Rotate - -- From Wikipedia: https://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations - -- x' = x \cos \theta - y \sin \theta\ - -- y' = x \sin \theta + y \cos \theta\ - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = SpawnRootY + RotatedY - - - local SpawnUnitCount = table.getn( self.SpawnGroups[SpawnIndex].SpawnTemplate.units ) - for u = 1, SpawnUnitCount do - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - 10 * ( u - 1 ) - - -- Rotate - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle ) - end - - return self -end - ---- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces. -function SPAWN:_GetSpawnIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) - - - if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then - if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then - if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then - self.SpawnCount = self.SpawnCount + 1 - SpawnIndex = self.SpawnCount - end - self.SpawnIndex = SpawnIndex - if not self.SpawnGroups[self.SpawnIndex] then - self:_InitializeSpawnGroups( self.SpawnIndex ) - end - else - return nil - end - else - return nil - end - - return self.SpawnIndex -end - - --- TODO Need to delete this... _DATABASE does this now ... -function SPAWN:_OnBirth( event ) - - if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line - if event.initiator and event.initiator:getName() then - local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self:T( { "Birth event: " .. event.initiator:getName(), event } ) - --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event') - self.AliveUnits = self.AliveUnits + 1 - self:T( "Alive Units: " .. self.AliveUnits ) - end - end - end - -end - ---- Obscolete --- @todo Need to delete this... _DATABASE does this now ... -function SPAWN:_OnDeadOrCrash( event ) - self:F( self.SpawnTemplatePrefix, event ) - - if event.initiator and event.initiator:getName() then - local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self:T( { "Dead event: " .. event.initiator:getName(), event } ) --- local DestroyedUnit = Unit.getByName( EventPrefix ) --- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then - --MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event') - self.AliveUnits = self.AliveUnits - 1 - self:T( "Alive Units: " .. self.AliveUnits ) --- end - end - end -end - ---- Will detect AIR Units taking off... When the event takes place, the spawned Group is registered as airborne... --- This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. --- @todo Need to test for AIR Groups only... -function SPAWN:_OnTakeOff( event ) - self:F( self.SpawnTemplatePrefix, event ) - - if event.initiator and event.initiator:getName() then - local SpawnGroup = self:_GetGroupFromDCSUnit( event.initiator ) - if SpawnGroup then - self:T( { "TakeOff event: " .. event.initiator:getName(), event } ) - self:T( "self.Landed = false" ) - self.Landed = false - end - end -end - ---- Will detect AIR Units landing... When the event takes place, the spawned Group is registered as landed. --- This is needed to ensure that Re-SPAWNing is only done for landed AIR Groups. --- @todo Need to test for AIR Groups only... -function SPAWN:_OnLand( event ) - self:F( self.SpawnTemplatePrefix, event ) - - local SpawnUnit = event.initiator - if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then - local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) - if SpawnGroup then - self:T( { "Landed event:" .. SpawnUnit:getName(), event } ) - self.Landed = true - self:T( "self.Landed = true" ) - if self.Landed and self.RepeatOnLanding then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "Landed:", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- Will detect AIR Units shutting down their engines ... --- When the event takes place, and the method @{RepeatOnEngineShutDown} was called, the spawned Group will Re-SPAWN. --- But only when the Unit was registered to have landed. --- @param #SPAWN self --- @see _OnTakeOff --- @see _OnLand --- @todo Need to test for AIR Groups only... -function SPAWN:_OnEngineShutDown( event ) - self:F( self.SpawnTemplatePrefix, event ) - - local SpawnUnit = event.initiator - if SpawnUnit and SpawnUnit:isExist() and Object.getCategory(SpawnUnit) == Object.Category.UNIT then - local SpawnGroup = self:_GetGroupFromDCSUnit( SpawnUnit ) - if SpawnGroup then - self:T( { "EngineShutDown event: " .. SpawnUnit:getName(), event } ) - if self.Landed and self.RepeatOnEngineShutDown then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "EngineShutDown: ", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- This function is called automatically by the Spawning scheduler. --- It is the internal worker method SPAWNing new Groups on the defined time intervals. -function SPAWN:_Scheduler() - self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } ) - - -- Validate if there are still groups left in the batch... - self:Spawn() - - return true -end - -function SPAWN:_SpawnCleanUpScheduler() - self:F( { "CleanUp Scheduler:", self.SpawnTemplatePrefix } ) - - local SpawnCursor - local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup( SpawnCursor ) - - self:T( { "CleanUp Scheduler:", SpawnGroup } ) - - while SpawnGroup do - - if SpawnGroup:AllOnGround() and SpawnGroup:GetMaxVelocity() < 1 then - if not self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] then - self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = timer.getTime() - else - if self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] + self.SpawnCleanUpInterval < timer.getTime() then - self:T( { "CleanUp Scheduler:", "Cleaning:", SpawnGroup } ) - SpawnGroup:Destroy() - end - end - else - self.SpawnCleanUpTimeStamps[SpawnGroup:GetName()] = nil - end - - SpawnGroup, SpawnCursor = self:GetNextAliveGroup( SpawnCursor ) - - self:T( { "CleanUp Scheduler:", SpawnGroup } ) - - end - - return true -- Repeat - -end ---- Limit the simultaneous movement of Groups within a running Mission. --- This module is defined to improve the performance in missions, and to bring additional realism for GROUND vehicles. --- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if --- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units --- on defined intervals (currently every minute). --- @module MOVEMENT - -Include.File( "Routines" ) - ---- the MOVEMENT class --- @type -MOVEMENT = { - ClassName = "MOVEMENT", -} - ---- Creates the main object which is handling the GROUND forces movement. --- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object. --- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute. --- @return MOVEMENT --- @usage --- -- Limit the amount of simultaneous moving units on the ground to prevent lag. --- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 ) - -function MOVEMENT:New( MovePrefixes, MoveMaximum ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { MovePrefixes, MoveMaximum } ) - - if type( MovePrefixes ) == 'table' then - self.MovePrefixes = MovePrefixes - else - self.MovePrefixes = { MovePrefixes } - end - self.MoveCount = 0 -- The internal counter of the amount of Moveing the has happened since MoveStart. - self.MoveMaximum = MoveMaximum -- Contains the Maximum amount of units that are allowed to move... - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.MoveUnits = {} -- Reflects if the Moving for this MovePrefixes is going to be scheduled or not. - - _EVENTDISPATCHER:OnBirth( self.OnBirth, self ) - --- self:AddEvent( world.event.S_EVENT_BIRTH, self.OnBirth ) --- --- self:EnableEvents() - - self:ScheduleStart() - - return self -end - ---- Call this function to start the MOVEMENT scheduling. -function MOVEMENT:ScheduleStart() - self:F() - --self.MoveFunction = routines.scheduleFunction( self._Scheduler, { self }, timer.getTime() + 1, 120 ) - self.MoveFunction = SCHEDULER:New( self, self._Scheduler, {}, 1, 120 ) -end - ---- Call this function to stop the MOVEMENT scheduling. --- @todo need to implement it ... Forgot. -function MOVEMENT:ScheduleStop() - self:F() - -end - ---- Captures the birth events when new Units were spawned. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. -function MOVEMENT:OnBirth( Event ) - self:F( { Event } ) - - if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line - if Event.IniDCSUnit then - self:T( "Birth object : " .. Event.IniDCSUnitName ) - if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits + 1 - self.MoveUnits[Event.IniDCSUnitName] = Event.IniDCSGroupName - self:T( self.AliveUnits ) - end - end - end - end - _EVENTDISPATCHER:OnCrashForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) - _EVENTDISPATCHER:OnDeadForUnit( Event.IniDCSUnitName, self.OnDeadOrCrash, self ) - end - -end - ---- Captures the Dead or Crash events when Units crash or are destroyed. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. -function MOVEMENT:OnDeadOrCrash( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - self:T( "Dead object : " .. Event.IniDCSUnitName ) - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits - 1 - self.MoveUnits[Event.IniDCSUnitName] = nil - self:T( self.AliveUnits ) - end - end - end -end - ---- This function is called automatically by the MOVEMENT scheduler. A new function is scheduled when MoveScheduled is true. -function MOVEMENT:_Scheduler() - self:F( { self.MovePrefixes, self.MoveMaximum, self.AliveUnits, self.MovementGroups } ) - - if self.AliveUnits > 0 then - local MoveProbability = ( self.MoveMaximum * 100 ) / self.AliveUnits - self:T( 'Move Probability = ' .. MoveProbability ) - - for MovementUnitName, MovementGroupName in pairs( self.MoveUnits ) do - local MovementGroup = Group.getByName( MovementGroupName ) - if MovementGroup and MovementGroup:isExist() then - local MoveOrStop = math.random( 1, 100 ) - self:T( 'MoveOrStop = ' .. MoveOrStop ) - if MoveOrStop <= MoveProbability then - self:T( 'Group continues moving = ' .. MovementGroupName ) - trigger.action.groupContinueMoving( MovementGroup ) - else - self:T( 'Group stops moving = ' .. MovementGroupName ) - trigger.action.groupStopMoving( MovementGroup ) - end - else - self.MoveUnits[MovementUnitName] = nil - end - end - end - return true -end ---- Provides defensive behaviour to a set of SAM sites within a running Mission. --- @module Sead --- @author to be searched on the forum --- @author (co) Flightcontrol (Modified and enriched with functionality) - -Include.File( "Routines" ) -Include.File( "Event" ) -Include.File( "Base" ) -Include.File( "Mission" ) -Include.File( "Client" ) -Include.File( "Task" ) - ---- The SEAD class --- @type SEAD --- @extends Base#BASE -SEAD = { - ClassName = "SEAD", - TargetSkill = { - Average = { Evade = 50, DelayOff = { 10, 25 }, DelayOn = { 10, 30 } } , - Good = { Evade = 30, DelayOff = { 8, 20 }, DelayOn = { 20, 40 } } , - High = { Evade = 15, DelayOff = { 5, 17 }, DelayOn = { 30, 50 } } , - Excellent = { Evade = 10, DelayOff = { 3, 10 }, DelayOn = { 30, 60 } } - }, - SEADGroupPrefixes = {} -} - ---- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles. --- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions... --- Chances are big that the missile will miss. --- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken. --- @return SEAD --- @usage --- -- CCCP SEAD Defenses --- -- Defends the Russian SA installations from SEAD attacks. --- SEAD_RU_SAM_Defenses = SEAD:New( { 'RU SA-6 Kub', 'RU SA-6 Defenses', 'RU MI-26 Troops', 'RU Attack Gori' } ) -function SEAD:New( SEADGroupPrefixes ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( SEADGroupPrefixes ) - if type( SEADGroupPrefixes ) == 'table' then - for SEADGroupPrefixID, SEADGroupPrefix in pairs( SEADGroupPrefixes ) do - self.SEADGroupPrefixes[SEADGroupPrefix] = SEADGroupPrefix - end - else - self.SEADGroupNames[SEADGroupPrefixes] = SEADGroupPrefixes - end - _EVENTDISPATCHER:OnShot( self.EventShot, self ) - - return self -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @see SEAD -function SEAD:EventShot( Event ) - self:F( { Event } ) - - local SEADUnit = Event.IniDCSUnit - local SEADUnitName = Event.IniDCSUnitName - local SEADWeapon = Event.Weapon -- Identify the weapon fired - local SEADWeaponName = Event.WeaponName -- return weapon type - --trigger.action.outText( string.format("Alerte, depart missile " ..string.format(SEADWeaponName)), 20) --debug message - -- Start of the 2nd loop - self:T( "Missile Launched = " .. SEADWeaponName ) - if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD - local _evade = math.random (1,100) -- random number for chance of evading action - local _targetMim = Event.Weapon:getTarget() -- Identify target - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimgroupName = _targetMimgroup:getName() - local _targetMimcont= _targetMimgroup:getController() - local _targetskill = _DATABASE.Templates.Units[_targetMimname].Template.skill - self:T( self.SEADGroupPrefixes ) - self:T( _targetMimgroupName ) - local SEADGroupFound = false - for SEADGroupPrefixID, SEADGroupPrefix in pairs( self.SEADGroupPrefixes ) do - if string.find( _targetMimgroupName, SEADGroupPrefix, 1, true ) then - SEADGroupFound = true - self:T( 'Group Found' ) - break - end - end - if SEADGroupFound == true then - if _targetskill == "Random" then -- when skill is random, choose a skill - local Skills = { "Average", "Good", "High", "Excellent" } - _targetskill = Skills[ math.random(1,4) ] - end - self:T( _targetskill ) -- debug message for skill check - if self.TargetSkill[_targetskill] then - if (_evade > self.TargetSkill[_targetskill].Evade) then - self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) --debug message - local _targetMim = Weapon.getTarget(SEADWeapon) - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimcont= _targetMimgroup:getController() - routines.groupRandomDistSelf(_targetMimgroup,300,'Diamond',250,20) -- move randomly - local SuppressedGroups1 = {} -- unit suppressed radar off for a random time - local function SuppressionEnd1(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - SuppressedGroups1[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay1 = math.random(self.TargetSkill[_targetskill].DelayOff[1], self.TargetSkill[_targetskill].DelayOff[2]) - if SuppressedGroups1[id.groupName] == nil then - SuppressedGroups1[id.groupName] = { - SuppressionEndTime1 = timer.getTime() + delay1, - SuppressionEndN1 = SuppressionEndCounter1 --Store instance of SuppressionEnd() scheduled function - } - Controller.setOption(_targetMimcont, AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - timer.scheduleFunction(SuppressionEnd1, id, SuppressedGroups1[id.groupName].SuppressionEndTime1) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar Off " ..string.format(delay1)), 20) - end - - local SuppressedGroups = {} - local function SuppressionEnd(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.RED) - SuppressedGroups[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay = math.random(self.TargetSkill[_targetskill].DelayOn[1], self.TargetSkill[_targetskill].DelayOn[2]) - if SuppressedGroups[id.groupName] == nil then - SuppressedGroups[id.groupName] = { - SuppressionEndTime = timer.getTime() + delay, - SuppressionEndN = SuppressionEndCounter --Store instance of SuppressionEnd() scheduled function - } - timer.scheduleFunction(SuppressionEnd, id, SuppressedGroups[id.groupName].SuppressionEndTime) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar On " ..string.format(delay)), 20) - end - end - end - end - end -end ---- Taking the lead of AI escorting your flight. --- --- @{#ESCORT} class --- ================ --- The @{#ESCORT} class allows you to interact with escorting AI on your flight and take the lead. --- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10). --- --- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes. --- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts. --- --- RADIO MENUs that can be created: --- ================================ --- Find a summary below of the current available commands: --- --- Navigation ...: --- --------------- --- Escort group navigation functions: --- --- * **"Join-Up and Follow at x meters":** The escort group fill follow you at about x meters, and they will follow you. --- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color. --- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops. --- --- Hold position ...: --- ------------------ --- Escort group navigation functions: --- --- * **"At current location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- * **"At client location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- --- Report targets ...: --- ------------------- --- Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below). --- --- * **"Report now":** Will report the current detected targets. --- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list. --- * **"Report targets off":** Will stop detecting targets. --- --- Scan targets ...: --- ----------------- --- Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task. --- --- * **"Scan targets 30 seconds":** Scan 30 seconds for targets. --- * **"Scan targets 60 seconds":** Scan 60 seconds for targets. --- --- Attack targets ...: --- ------------------- --- This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed. --- --- Request assistance from ...: --- ---------------------------- --- This menu item will list all detected targets within a 15km range, as with the menu item **Attack Targets**. --- This menu item allows to request attack support from other escorts supporting the current client group. --- eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles. --- eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area. --- --- ROE ...: --- -------- --- Sets the Rules of Engagement (ROE) of the escort group when in flight. --- --- * **"Hold Fire":** The escort group will hold fire. --- * **"Return Fire":** The escort group will return fire. --- * **"Open Fire":** The escort group will open fire on designated targets. --- * **"Weapon Free":** The escort group will engage with any target. --- --- Evasion ...: --- ------------ --- Will define the evasion techniques that the escort group will perform during flight or combat. --- --- * **"Fight until death":** The escort group will have no reaction to threats. --- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed. --- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing. --- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres. --- --- Resume Mission ...: --- ------------------- --- Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. --- Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission. --- --- ESCORT construction methods. --- ============================ --- Create a new SPAWN object with the @{#ESCORT.New} method: --- --- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text. --- --- ESCORT initialization methods. --- ============================== --- The following menus are created within the RADIO MENU of an active unit hosted by a player: --- --- * @{#ESCORT.MenuFollowAt}: Creates a menu to make the escort follow the client. --- * @{#ESCORT.MenuHoldAtEscortPosition}: Creates a menu to hold the escort at its current position. --- * @{#ESCORT.MenuHoldAtLeaderPosition}: Creates a menu to hold the escort at the client position. --- * @{#ESCORT.MenuScanForTargets}: Creates a menu so that the escort scans targets. --- * @{#ESCORT.MenuFlare}: Creates a menu to disperse flares. --- * @{#ESCORT.MenuSmoke}: Creates a menu to disparse smoke. --- * @{#ESCORT.MenuReportTargets}: Creates a menu so that the escort reports targets. --- * @{#ESCORT.MenuReportPosition}: Creates a menu so that the escort reports its current position from bullseye. --- * @{#ESCORT.MenuAssistedAttack: Creates a menu so that the escort supportes assisted attack from other escorts with the client. --- * @{#ESCORT.MenuROE: Creates a menu structure to set the rules of engagement of the escort. --- * @{#ESCORT.MenuEvasion: Creates a menu structure to set the evasion techniques when the escort is under threat. --- * @{#ESCORT.MenuResumeMission}: Creates a menu structure so that the escort can resume from a waypoint. --- --- @module Escort --- @author FlightControl - -Include.File( "Routines" ) -Include.File( "Base" ) -Include.File( "Database" ) -Include.File( "Group" ) -Include.File( "Zone" ) - ---- --- @type ESCORT --- @extends Base#BASE --- @field Client#CLIENT EscortClient --- @field Group#GROUP EscortGroup --- @field #string EscortName --- @field #ESCORT.MODE EscortMode The mode the escort is in. --- @field #number FollowScheduler The id of the _FollowScheduler function. --- @field #boolean ReportTargets If true, nearby targets are reported. --- @Field DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. --- @field DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. --- @field Menu#MENU_CLIENT EscortMenuResumeMission -ESCORT = { - ClassName = "ESCORT", - EscortName = nil, -- The Escort Name - EscortClient = nil, - EscortGroup = nil, - EscortMode = nil, - MODE = { - FOLLOW = 1, - MISSION = 2, - }, - Targets = {}, -- The identified targets - FollowScheduler = nil, - ReportTargets = true, - OptionROE = AI.Option.Air.val.ROE.OPEN_FIRE, - OptionReactionOnThreat = AI.Option.Air.val.REACTION_ON_THREAT.ALLOW_ABORT_MISSION, - TaskPoints = {} -} - ---- ESCORT.Mode class --- @type ESCORT.MODE --- @field #number FOLLOW --- @field #number MISSION - ---- MENUPARAM type --- @type MENUPARAM --- @field #ESCORT ParamSelf --- @field #Distance ParamDistance --- @field #function ParamFunction --- @field #string ParamMessage - ---- ESCORT class constructor for an AI group --- @param #ESCORT self --- @param Client#CLIENT EscortClient The client escorted by the EscortGroup. --- @param Group#GROUP EscortGroup The group AI escorting the EscortClient. --- @param #string EscortName Name of the escort. --- @return #ESCORT self -function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { EscortClient, EscortGroup, EscortName } ) - - self.EscortClient = EscortClient -- Client#CLIENT - self.EscortGroup = EscortGroup -- Group#GROUP - self.EscortName = EscortName - self.EscortBriefing = EscortBriefing - - self:T( EscortGroup:GetClassNameAndID() ) - - -- Set EscortGroup known at EscortClient. - if not self.EscortClient._EscortGroups then - self.EscortClient._EscortGroups = {} - end - - if not self.EscortClient._EscortGroups[EscortGroup:GetName()] then - self.EscortClient._EscortGroups[EscortGroup:GetName()] = {} - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortGroup = self.EscortGroup - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortName = self.EscortName - self.EscortClient._EscortGroups[EscortGroup:GetName()].Targets = {} - self.EscortMode = ESCORT.MODE.FOLLOW - end - - - self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) - - self.EscortGroup:WayPointInitialize(1) - - self.EscortGroup:OptionROTVertical() - self.EscortGroup:OptionROEOpenFire() - - EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " .. - "We're escorting your flight. " .. - "Use the Radio Menu and F10 and use the options under + " .. EscortName .. "\n", - 60, EscortClient - ) - - return self -end - - ---- Defines the default menus --- @param #ESCORT self --- @return #ESCORT -function ESCORT:Menus() - self:F() - - self:MenuFollowAt( 100 ) - self:MenuFollowAt( 200 ) - self:MenuFollowAt( 300 ) - self:MenuFollowAt( 400 ) - - self:MenuScanForTargets( 100, 60 ) - - self:MenuHoldAtEscortPosition( 30 ) - self:MenuHoldAtLeaderPosition( 30 ) - - self:MenuFlare() - self:MenuSmoke() - - self:MenuReportTargets( 60 ) - self:MenuAssistedAttack() - self:MenuROE() - self:MenuEvasion() - self:MenuResumeMission() - - return self -end - - - ---- Defines a menu slot to let the escort Join and Follow you at a certain distance. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param DCSTypes#Distance Distance The distance in meters that the escort needs to follow the client. --- @return #ESCORT -function ESCORT:MenuFollowAt( Distance ) - self:F(Distance) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - if not self.EscortMenuJoinUpAndFollow then - self.EscortMenuJoinUpAndFollow = {} - end - - self.EscortMenuJoinUpAndFollow[#self.EscortMenuJoinUpAndFollow+1] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at " .. Distance, self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = Distance } ) - - self.EscortMode = ESCORT.MODE.FOLLOW - end - - return self -end - ---- Defines a menu slot to let the escort hold at their current position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Hold position**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Hold at %d meter", Height ) - else - MenuText = string.format( "Hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldPosition then - self.EscortMenuHoldPosition = {} - end - - self.EscortMenuHoldPosition[#self.EscortMenuHoldPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortGroup, - ParamHeight = Height, - ParamSeconds = Seconds - } - ) - end - - return self -end - - ---- Defines a menu slot to let the escort hold at the client position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtLeaderPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Rejoin and hold at %d meter", Height ) - else - MenuText = string.format( "Rejoin and hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldAtLeaderPosition then - self.EscortMenuHoldAtLeaderPosition = {} - end - - self.EscortMenuHoldAtLeaderPosition[#self.EscortMenuHoldAtLeaderPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortClient, - ParamHeight = Height, - ParamSeconds = Seconds - } - ) - end - - return self -end - ---- Defines a menu slot to let the escort scan for targets at a certain height for a certain time in seconds. --- This menu will appear under **Scan targets**. --- @param #ESCORT self --- @param DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuScan then - self.EscortMenuScan = MENU_CLIENT:New( self.EscortClient, "Scan for targets", self.EscortMenu ) - end - - if not Height then - Height = 100 - end - - if not Seconds then - Seconds = 30 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "At %d meter", Height ) - else - MenuText = string.format( "At %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuScanForTargets then - self.EscortMenuScanForTargets = {} - end - - self.EscortMenuScanForTargets[#self.EscortMenuScanForTargets+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuScan, - ESCORT._ScanTargets, - { ParamSelf = self, - ParamScanDuration = 30 - } - ) - end - - return self -end - - - ---- Defines a menu slot to let the escort disperse a flare in a certain color. --- This menu will appear under **Navigation**. --- The flare will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuFlare( MenuTextFormat ) - self:F() - - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Flare" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuFlare then - self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, MenuText, self.EscortMenuReportNavigation, ESCORT._Flare, { ParamSelf = self } ) - self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Green, ParamMessage = "Released a green flare!" } ) - self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Red, ParamMessage = "Released a red flare!" } ) - self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } ) - self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } ) - end - - return self -end - ---- Defines a menu slot to let the escort disperse a smoke in a certain color. --- This menu will appear under **Navigation**. --- Note that smoke menu options will only be displayed for ships and ground units. Not for air units. --- The smoke will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuSmoke( MenuTextFormat ) - self:F() - - if not self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Smoke" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuSmoke then - self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } ) - self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } ) - self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } ) - self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } ) - self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } ) - self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } ) - end - end - - return self -end - ---- Defines a menu slot to let the escort report their current detected targets with a specified time interval in seconds. --- This menu will appear under **Report targets**. --- Note that if a report targets menu is not specified, no targets will be detected by the escort, and the attack and assisted attack menus will not be displayed. --- @param #ESCORT self --- @param DCSTypes#Time Seconds Optional parameter that lets the escort report their current detected targets after specified time interval in seconds. The default time is 30 seconds. --- @return #ESCORT -function ESCORT:MenuReportTargets( Seconds ) - self:F( { Seconds } ) - - if not self.EscortMenuReportNearbyTargets then - self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) - end - - if not Seconds then - Seconds = 30 - end - - -- Report Targets - self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now!", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, { ParamSelf = self } ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = true } ) - self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = false, } ) - - -- Attack Targets - self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) - - - --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, Seconds ) - self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, Seconds ) - - return self -end - ---- Defines a menu slot to let the escort attack its detected targets using assisted attack from another escort joined also with the client. --- This menu will appear under **Request assistance from**. --- Note that this method needs to be preceded with the method MenuReportTargets. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuAssistedAttack() - self:F() - - -- Request assistance from other escorts. - -- This is very useful to let f.e. an escorting ship attack a target detected by an escorting plane... - self.EscortMenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, "Request assistance from", self.EscortMenu ) - - return self -end - ---- Defines a menu to let the escort set its rules of engagement. --- All rules of engagement will appear under the menu **ROE**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuROE( MenuTextFormat ) - self:F( MenuTextFormat ) - - if not self.EscortMenuROE then - -- Rules of Engagement - self.EscortMenuROE = MENU_CLIENT:New( self.EscortClient, "ROE", self.EscortMenu ) - if self.EscortGroup:OptionROEHoldFirePossible() then - self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEHoldFire(), ParamMessage = "Holding weapons!" } ) - end - if self.EscortGroup:OptionROEReturnFirePossible() then - self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEReturnFire(), ParamMessage = "Returning fire!" } ) - end - if self.EscortGroup:OptionROEOpenFirePossible() then - self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEOpenFire(), ParamMessage = "Opening fire on designated targets!!" } ) - end - if self.EscortGroup:OptionROEWeaponFreePossible() then - self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEWeaponFree(), ParamMessage = "Opening fire on targets of opportunity!" } ) - end - end - - return self -end - - ---- Defines a menu to let the escort set its evasion when under threat. --- All rules of engagement will appear under the menu **Evasion**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuEvasion( MenuTextFormat ) - self:F( MenuTextFormat ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuEvasion then - -- Reaction to Threats - self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) - if self.EscortGroup:OptionROTNoReactionPossible() then - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTNoReaction(), ParamMessage = "Fighting until death!" } ) - end - if self.EscortGroup:OptionROTPassiveDefensePossible() then - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTPassiveDefense(), ParamMessage = "Defending using jammers, chaff and flares!" } ) - end - if self.EscortGroup:OptionROTEvadeFirePossible() then - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTEvadeFire(), ParamMessage = "Evading on enemy fire!" } ) - end - if self.EscortGroup:OptionROTVerticalPossible() then - self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTVertical(), ParamMessage = "Evading on enemy fire with vertical manoeuvres!" } ) - end - end - end - - return self -end - ---- Defines a menu to let the escort resume its mission from a waypoint on its route. --- All rules of engagement will appear under the menu **Resume mission from**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuResumeMission() - self:F() - - if not self.EscortMenuResumeMission then - -- Mission Resume Menu Root - self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume mission from", self.EscortMenu ) - end - - return self -end - - ---- @param #MENUPARAM MenuParam -function ESCORT._HoldPosition( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local OrbitGroup = MenuParam.ParamOrbitGroup -- Group#GROUP - local OrbitUnit = OrbitGroup:GetUnit(1) -- Unit#UNIT - local OrbitHeight = MenuParam.ParamHeight - local OrbitSeconds = MenuParam.ParamSeconds -- Not implemented yet - - routines.removeFunction( self.FollowScheduler ) - - local PointFrom = {} - local GroupPoint = EscortGroup:GetUnit(1):GetPointVec3() - PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.z - PointFrom.speed = 250 - PointFrom.type = AI.Task.WaypointType.TURNING_POINT - PointFrom.alt = GroupPoint.y - PointFrom.alt_type = AI.Task.AltitudeType.BARO - - local OrbitPoint = OrbitUnit:GetPointVec2() - local PointTo = {} - PointTo.x = OrbitPoint.x - PointTo.y = OrbitPoint.y - PointTo.speed = 250 - PointTo.type = AI.Task.WaypointType.TURNING_POINT - PointTo.alt = OrbitHeight - PointTo.alt_type = AI.Task.AltitudeType.BARO - PointTo.task = EscortGroup:TaskOrbitCircleAtVec2( OrbitPoint, OrbitHeight, 0 ) - - local Points = { PointFrom, PointTo } - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - EscortGroup:SetTask( EscortGroup:TaskRoute( Points ) ) - EscortGroup:MessageToClient( "Orbiting at location.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._JoinUpAndFollow( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.Distance = MenuParam.ParamDistance - - self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) -end - ---- JoinsUp and Follows a CLIENT. --- @param Escort#ESCORT self --- @param Group#GROUP EscortGroup --- @param Client#CLIENT EscortClient --- @param DCSTypes#Distance Distance -function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) - self:F( { EscortGroup, EscortClient, Distance } ) - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - self.EscortMode = ESCORT.MODE.FOLLOW - - self.CT1 = 0 - self.GT1 = 0 - --self.FollowScheduler = routines.scheduleFunction( self._FollowScheduler, { self, Distance }, timer.getTime() + 1, .5 ) - self.FollowScheduler = SCHEDULER:New( self, self._FollowScheduler, { Distance }, 1, .5, .1 ) - EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._Flare( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - - EscortGroup:GetUnit(1):Flare( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._Smoke( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - - EscortGroup:GetUnit(1):Smoke( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - - ---- @param #MENUPARAM MenuParam -function ESCORT._ReportNearbyTargetsNow( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self:_ReportTargetsScheduler() - -end - -function ESCORT._SwitchReportNearbyTargets( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.ReportTargets = MenuParam.ParamReportTargets - - if self.ReportTargets then - if not self.ReportTargetsScheduler then - --self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) - self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, 30 ) - end - else - routines.removeFunction( self.ReportTargetsScheduler ) - self.ReportTargetsScheduler = nil - end -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ScanTargets( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local ScanDuration = MenuParam.ParamScanDuration - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - self:T( { "FollowScheduler after removefunction: ", self.FollowScheduler } ) - - if EscortGroup:IsHelicopter() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 200, 20 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) - elseif EscortGroup:IsAirPlane() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 1000, 500 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) - end - - EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) - - if self.EscortMode == ESCORT.MODE.FOLLOW then - --self.FollowScheduler = routines.scheduleFunction( self._FollowScheduler, { self, Distance }, timer.getTime() + ScanDuration, 1 ) - self.FollowScheduler:Start() - end - -end - -function _Resume( EscortGroup ) - env.info( '_Resume' ) - - local Escort = EscortGroup.Escort -- #ESCORT - env.info( "EscortMode = " .. Escort.EscortMode ) - if Escort.EscortMode == ESCORT.MODE.FOLLOW then - Escort:JoinUpAndFollow( EscortGroup, Escort.EscortClient, Escort.Distance ) - end - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._AttackTarget( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - self:T( AttackUnit ) - - if EscortGroup:IsAir() then - EscortGroup:OptionROEOpenFire() - EscortGroup:OptionROTPassiveDefense() - EscortGroup.Escort = self -- Need to do this trick to get the reference for the escort in the _Resume function. --- routines.scheduleFunction( --- EscortGroup.PushTask, --- { EscortGroup, --- EscortGroup:TaskCombo( --- { EscortGroup:TaskAttackUnit( AttackUnit ), --- EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskAttackUnit( AttackUnit ), - EscortGroup:TaskFunction( 1, 2, "_Resume", {"''"} ) - } - ) - }, 10 - ) - else --- routines.scheduleFunction( --- EscortGroup.PushTask, --- { EscortGroup, --- EscortGroup:TaskCombo( --- { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) - } - ) - }, 10 - ) - end - EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) - - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._AssistTarget( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - local EscortGroupAttack = MenuParam.ParamEscortGroup - local AttackUnit = MenuParam.ParamUnit -- Unit#UNIT - - if self.FollowScheduler then - routines.removeFunction( self.FollowScheduler ) - end - - - self:T( AttackUnit ) - - if EscortGroupAttack:IsAir() then - EscortGroupAttack:OptionROEOpenFire() - EscortGroupAttack:OptionROTVertical() --- routines.scheduleFunction( --- EscortGroupAttack.PushTask, --- { EscortGroupAttack, --- EscortGroupAttack:TaskCombo( --- { EscortGroupAttack:TaskAttackUnit( AttackUnit ), --- EscortGroupAttack:TaskOrbitCircle( 500, 350 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskAttackUnit( AttackUnit ), - EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - } - ) - }, 10 - ) - else --- routines.scheduleFunction( --- EscortGroupAttack.PushTask, --- { EscortGroupAttack, --- EscortGroupAttack:TaskCombo( --- { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) --- } --- ) --- }, timer.getTime() + 10 --- ) - SCHEDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetPointVec2(), 50 ) - } - ) - }, 10 - ) - end - EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) - -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ROE( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local EscortROEFunction = MenuParam.ParamFunction - local EscortROEMessage = MenuParam.ParamMessage - - pcall( function() EscortROEFunction() end ) - EscortGroup:MessageToClient( EscortROEMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ROT( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local EscortROTFunction = MenuParam.ParamFunction - local EscortROTMessage = MenuParam.ParamMessage - - pcall( function() EscortROTFunction() end ) - EscortGroup:MessageToClient( EscortROTMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ResumeMission( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local WayPoint = MenuParam.ParamWayPoint - - routines.removeFunction( self.FollowScheduler ) - self.FollowScheduler = nil - - local WayPoints = EscortGroup:GetTaskRoute() - self:T( WayPoint, WayPoints ) - - for WayPointIgnore = 1, WayPoint do - table.remove( WayPoints, 1 ) - end - - --routines.scheduleFunction( EscortGroup.SetTask, {EscortGroup, EscortGroup:TaskRoute( WayPoints ) }, timer.getTime() + 1 ) - SCHEDULER:New( EscortGroup, EscortGroup.SetTask, { EscortGroup:TaskRoute( WayPoints ) }, 1 ) - - EscortGroup:MessageToClient( "Resuming mission from waypoint " .. WayPoint .. ".", 10, EscortClient ) -end - ---- Registers the waypoints --- @param #ESCORT self --- @return #table -function ESCORT:RegisterRoute() - self:F() - - local EscortGroup = self.EscortGroup -- Group#GROUP - - local TaskPoints = EscortGroup:GetTaskRoute() - - self:T( TaskPoints ) - - return TaskPoints -end - ---- @param Escort#ESCORT self -function ESCORT:_FollowScheduler( FollowDistance ) - self:F( { FollowDistance }) - - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - - local ClientUnit = self.EscortClient:GetClientGroupUnit() - local GroupUnit = self.EscortGroup:GetUnit( 1 ) - - if self.CT1 == 0 and self.GT1 == 0 then - self.CV1 = ClientUnit:GetPointVec3() - self.CT1 = timer.getTime() - self.GV1 = GroupUnit:GetPointVec3() - self.GT1 = timer.getTime() - else - local CT1 = self.CT1 - local CT2 = timer.getTime() - local CV1 = self.CV1 - local CV2 = ClientUnit:GetPointVec3() - self.CT1 = CT2 - self.CV1 = CV2 - - local CD = ( ( CV2.x - CV1.x )^2 + ( CV2.y - CV1.y )^2 + ( CV2.z - CV1.z )^2 ) ^ 0.5 - local CT = CT2 - CT1 - - local CS = ( 3600 / CT ) * ( CD / 1000 ) - - self:T2( { "Client:", CS, CD, CT, CV2, CV1, CT2, CT1 } ) - - local GT1 = self.GT1 - local GT2 = timer.getTime() - local GV1 = self.GV1 - local GV2 = GroupUnit:GetPointVec3() - self.GT1 = GT2 - self.GV1 = GV2 - - local GD = ( ( GV2.x - GV1.x )^2 + ( GV2.y - GV1.y )^2 + ( GV2.z - GV1.z )^2 ) ^ 0.5 - local GT = GT2 - GT1 - - local GS = ( 3600 / GT ) * ( GD / 1000 ) - - self:T2( { "Group:", GS, GD, GT, GV2, GV1, GT2, GT1 } ) - - -- Calculate the group direction vector - local GV = { x = GV2.x - CV2.x, y = GV2.y - CV2.y, z = GV2.z - CV2.z } - - -- Calculate GH2, GH2 with the same height as CV2. - local GH2 = { x = GV2.x, y = CV2.y, z = GV2.z } - - -- Calculate the angle of GV to the orthonormal plane - local alpha = math.atan2( GV.z, GV.x ) - - -- Now we calculate the intersecting vector between the circle around CV2 with radius FollowDistance and GH2. - -- From the GeoGebra model: CVI = (x(CV2) + FollowDistance cos(alpha), y(GH2) + FollowDistance sin(alpha), z(CV2)) - local CVI = { x = CV2.x + FollowDistance * math.cos(alpha), - y = GH2.y, - z = CV2.z + FollowDistance * math.sin(alpha), - } - - -- Calculate the direction vector DV of the escort group. We use CVI as the base and CV2 as the direction. - local DV = { x = CV2.x - CVI.x, y = CV2.y - CVI.y, z = CV2.z - CVI.z } - - -- We now calculate the unary direction vector DVu, so that we can multiply DVu with the speed, which is expressed in meters / s. - -- We need to calculate this vector to predict the point the escort group needs to fly to according its speed. - -- The distance of the destination point should be far enough not to have the aircraft starting to swipe left to right... - local DVu = { x = DV.x / FollowDistance, y = DV.y / FollowDistance, z = DV.z / FollowDistance } - - -- Now we can calculate the group destination vector GDV. - local GDV = { x = DVu.x * CS * 8 + CVI.x, y = CVI.y, z = DVu.z * CS * 8 + CVI.z } - - --trigger.action.smoke( GDV, trigger.smokeColor.Red ) - self:T2( { "CV2:", CV2 } ) - self:T2( { "CVI:", CVI } ) - self:T2( { "GDV:", GDV } ) - - -- Measure distance between client and group - local CatchUpDistance = ( ( GDV.x - GV2.x )^2 + ( GDV.y - GV2.y )^2 + ( GDV.z - GV2.z )^2 ) ^ 0.5 - - -- The calculation of the Speed would simulate that the group would take 30 seconds to overcome - -- the requested Distance). - local Time = 10 - local CatchUpSpeed = ( CatchUpDistance - ( CS * 8.4 ) ) / Time - - local Speed = CS + CatchUpSpeed - if Speed < 0 then - Speed = 0 - end - - self:T( { "Client Speed, Escort Speed, Speed, FlyDistance, Time:", CS, GS, Speed, Distance, Time } ) - - -- Now route the escort to the desired point with the desired speed. - self.EscortGroup:TaskRouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) - end - return true - end - - return false -end - - ---- Report Targets Scheduler. --- @param #ESCORT self -function ESCORT:_ReportTargetsScheduler() - self:F( self.EscortGroup:GetName() ) - - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - local EscortGroupName = self.EscortGroup:GetName() - local EscortTargets = self.EscortGroup:GetDetectedTargets() - - local ClientEscortTargets = self.EscortClient._EscortGroups[EscortGroupName].Targets - - local EscortTargetMessages = "" - for EscortTargetID, EscortTarget in pairs( EscortTargets ) do - local EscortObject = EscortTarget.object - self:T( EscortObject ) - if EscortObject and EscortObject:isExist() and EscortObject.id_ < 50000000 then - - local EscortTargetUnit = UNIT:Find( EscortObject ) - local EscortTargetUnitName = EscortTargetUnit:GetName() - - - - -- local EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity - -- = self.EscortGroup:IsTargetDetected( EscortObject ) - -- - -- self:T( { EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity } ) - - - local EscortTargetUnitPositionVec3 = EscortTargetUnit:GetPointVec3() - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + - ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + - ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), EscortTargetUnit:GetName(), Distance, EscortTarget } ) - - if Distance <= 15 then - - if not ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = {} - end - ClientEscortTargets[EscortTargetUnitName].AttackUnit = EscortTargetUnit - ClientEscortTargets[EscortTargetUnitName].visible = EscortTarget.visible - ClientEscortTargets[EscortTargetUnitName].type = EscortTarget.type - ClientEscortTargets[EscortTargetUnitName].distance = EscortTarget.distance - else - if ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = nil - end - end - end - end - - self:T( { "Sorting Targets Table:", ClientEscortTargets } ) - table.sort( ClientEscortTargets, function( a, b ) return a.Distance < b.Distance end ) - self:T( { "Sorted Targets Table:", ClientEscortTargets } ) - - -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. - self.EscortMenuAttackNearbyTargets:RemoveSubMenus() - - if self.EscortMenuTargetAssistance then - self.EscortMenuTargetAssistance:RemoveSubMenus() - end - - --for MenuIndex = 1, #self.EscortMenuAttackTargets do - -- self:T( { "Remove Menu:", self.EscortMenuAttackTargets[MenuIndex] } ) - -- self.EscortMenuAttackTargets[MenuIndex] = self.EscortMenuAttackTargets[MenuIndex]:Remove() - --end - - - if ClientEscortTargets then - for ClientEscortTargetUnitName, ClientEscortTargetData in pairs( ClientEscortTargets ) do - - for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do - - if ClientEscortTargetData and ClientEscortTargetData.AttackUnit:IsAlive() then - - local EscortTargetMessage = "" - local EscortTargetCategoryName = ClientEscortTargetData.AttackUnit:GetCategoryName() - local EscortTargetCategoryType = ClientEscortTargetData.AttackUnit:GetTypeName() - if ClientEscortTargetData.type then - EscortTargetMessage = EscortTargetMessage .. EscortTargetCategoryName .. " (" .. EscortTargetCategoryType .. ") at " - else - EscortTargetMessage = EscortTargetMessage .. "Unknown target at " - end - - local EscortTargetUnitPositionVec3 = ClientEscortTargetData.AttackUnit:GetPointVec3() - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( EscortTargetUnitPositionVec3.x - EscortPositionVec3.x )^2 + - ( EscortTargetUnitPositionVec3.y - EscortPositionVec3.y )^2 + - ( EscortTargetUnitPositionVec3.z - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), ClientEscortTargetData.AttackUnit:GetName(), Distance, ClientEscortTargetData.AttackUnit } ) - if ClientEscortTargetData.visible == false then - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " estimated km" - else - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " km" - end - - if ClientEscortTargetData.visible then - EscortTargetMessage = EscortTargetMessage .. ", visual" - end - - if ClientEscortGroupName == EscortGroupName then - - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - self.EscortMenuAttackNearbyTargets, - ESCORT._AttackTarget, - { ParamSelf = self, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - EscortTargetMessages = EscortTargetMessages .. "\n - " .. EscortTargetMessage - else - if self.EscortMenuTargetAssistance then - local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - MenuTargetAssistance, - ESCORT._AssistTarget, - { ParamSelf = self, - ParamEscortGroup = EscortGroupData.EscortGroup, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - end - end - else - ClientEscortTargetData = nil - end - end - end - - if EscortTargetMessages ~= "" and self.ReportTargets == true then - self.EscortGroup:MessageToClient( "Detected targets within 15 km range:" .. EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) - else - self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) - end - end - - if self.EscortMenuResumeMission then - self.EscortMenuResumeMission:RemoveSubMenus() - - -- if self.EscortMenuResumeWayPoints then - -- for MenuIndex = 1, #self.EscortMenuResumeWayPoints do - -- self:T( { "Remove Menu:", self.EscortMenuResumeWayPoints[MenuIndex] } ) - -- self.EscortMenuResumeWayPoints[MenuIndex] = self.EscortMenuResumeWayPoints[MenuIndex]:Remove() - -- end - -- end - - local TaskPoints = self:RegisterRoute() - for WayPointID, WayPoint in pairs( TaskPoints ) do - local EscortPositionVec3 = self.EscortGroup:GetPointVec3() - local Distance = ( ( WayPoint.x - EscortPositionVec3.x )^2 + - ( WayPoint.y - EscortPositionVec3.z )^2 - ) ^ 0.5 / 1000 - MENU_CLIENT_COMMAND:New( self.EscortClient, "Waypoint " .. WayPointID .. " at " .. string.format( "%.2f", Distance ).. "km", self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) - end - end - return true - end - - return false -end ---- Provides missile training functions. --- --- @{#MISSILETRAINER} class --- ======================== --- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, --- the class will destroy the missile within a certain range, to avoid damage to your aircraft. --- It suports the following functionality: --- --- * Track the missiles fired at you and other players, providing bearing and range information of the missiles towards the airplanes. --- * Provide alerts of missile launches, including detailed information of the units launching, including bearing, range … --- * Provide alerts when a missile would have killed your aircraft. --- * Provide alerts when the missile self destructs. --- * Enable / Disable and Configure the Missile Trainer using the various menu options. --- --- When running a mission where MISSILETRAINER is used, the following radio menu structure ( 'Radio Menu' -> 'Other (F10)' -> 'MissileTrainer' ) options are available for the players: --- --- * **Messages**: Menu to configure all messages. --- * **Messages On**: Show all messages. --- * **Messages Off**: Disable all messages. --- * **Tracking**: Menu to configure missile tracking messages. --- * **To All**: Shows missile tracking messages to all players. --- * **To Target**: Shows missile tracking messages only to the player where the missile is targetted at. --- * **Tracking On**: Show missile tracking messages. --- * **Tracking Off**: Disable missile tracking messages. --- * **Frequency Increase**: Increases the missile tracking message frequency with one second. --- * **Frequency Decrease**: Decreases the missile tracking message frequency with one second. --- * **Alerts**: Menu to configure alert messages. --- * **To All**: Shows alert messages to all players. --- * **To Target**: Shows alert messages only to the player where the missile is (was) targetted at. --- * **Hits On**: Show missile hit alert messages. --- * **Hits Off**: Disable missile hit alert messages. --- * **Launches On**: Show missile launch messages. --- * **Launches Off**: Disable missile launch messages. --- * **Details**: Menu to configure message details. --- * **Range On**: Shows range information when a missile is fired to a target. --- * **Range Off**: Disable range information when a missile is fired to a target. --- * **Bearing On**: Shows bearing information when a missile is fired to a target. --- * **Bearing Off**: Disable bearing information when a missile is fired to a target. --- * **Distance**: Menu to configure the distance when a missile needs to be destroyed when near to a player, during tracking. This will improve/influence hit calculation accuracy, but has the risk of damaging the aircraft when the missile reaches the aircraft before the distance is measured. --- * **50 meter**: Destroys the missile when the distance to the aircraft is below or equal to 50 meter. --- * **100 meter**: Destroys the missile when the distance to the aircraft is below or equal to 100 meter. --- * **150 meter**: Destroys the missile when the distance to the aircraft is below or equal to 150 meter. --- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. --- --- --- MISSILETRAINER construction methods: --- ==================================== --- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: --- --- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. --- --- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. --- --- MISSILETRAINER initialization methods: --- ====================================== --- A MISSILETRAINER object will behave differently based on the usage of initialization methods: --- --- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingToAll}: Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- * @{#MISSILETRAINER.InitTrackingOnOff}: Sets by default the display of missile tracking report to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingFrequency}: Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- * @{#MISSILETRAINER.InitAlertsToAll}: Sets by default the display of alerts to be shown to all players or only to you. --- * @{#MISSILETRAINER.InitAlertsHitsOnOff}: Sets by default the display of hit alerts ON or OFF. --- * @{#MISSILETRAINER.InitAlertsLaunchesOnOff}: Sets by default the display of launch alerts ON or OFF. --- * @{#MISSILETRAINER.InitRangeOnOff}: Sets by default the display of range information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. --- --- @module MissileTrainer --- @author FlightControl - - -Include.File( "Client" ) -Include.File( "Scheduler" ) - ---- The MISSILETRAINER class --- @type MISSILETRAINER --- @extends Base#BASE -MISSILETRAINER = { - ClassName = "MISSILETRAINER", -} - ---- Creates the main object which is handling missile tracking. --- When a missile is fired a SCHEDULER is set off that follows the missile. When near a certain a client player, the missile will be destroyed. --- @param #MISSILETRAINER self --- @param #number Distance The distance in meters when a tracked missile needs to be destroyed when close to a player. --- @param #string Briefing (Optional) Will show a text to the players when starting their mission. Can be used for briefing purposes. --- @return #MISSILETRAINER -function MISSILETRAINER:New( Distance, Briefing ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( Distance ) - - if Briefing then - self.Briefing = Briefing - end - - self.Schedulers = {} - self.SchedulerID = 0 - - self.MessageInterval = 2 - self.MessageLastTime = timer.getTime() - - self.Distance = Distance / 1000 - - _EVENTDISPATCHER:OnShot( self._EventShot, self ) - - self.DB = DATABASE:New():FilterStart() - self.DBClients = self.DB.Clients - self.DBUnits = self.DB.Units - - for ClientID, Client in pairs( self.DBClients ) do - - local function _Alive( Client ) - - if self.Briefing then - Client:Message( self.Briefing, 15, "HELLO WORLD", "Trainer" ) - end - - if self.MenusOnOff == true then - Client:Message( "Use the 'Radio Menu' -> 'Other (F10)' -> 'Missile Trainer' menu options to change the Missile Trainer settings (for all players).", 15, "MENU", "Trainer" ) - - Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil ) -- Menu#MENU_CLIENT - - Client.MenuMessages = MENU_CLIENT:New( Client, "Messages", Client.MainMenu ) - Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = true } ) - Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = false } ) - - Client.MenuTracking = MENU_CLIENT:New( Client, "Tracking", Client.MainMenu ) - Client.MenuTrackingToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = true } ) - Client.MenuTrackingToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = false } ) - Client.MenuTrackOn = MENU_CLIENT_COMMAND:New( Client, "Tracking On", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = true } ) - Client.MenuTrackOff = MENU_CLIENT_COMMAND:New( Client, "Tracking Off", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = false } ) - Client.MenuTrackIncrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Increase", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = -1 } ) - Client.MenuTrackDecrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Decrease", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = 1 } ) - - Client.MenuAlerts = MENU_CLIENT:New( Client, "Alerts", Client.MainMenu ) - Client.MenuAlertsToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = true } ) - Client.MenuAlertsToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = false } ) - Client.MenuHitsOn = MENU_CLIENT_COMMAND:New( Client, "Hits On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = true } ) - Client.MenuHitsOff = MENU_CLIENT_COMMAND:New( Client, "Hits Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = false } ) - Client.MenuLaunchesOn = MENU_CLIENT_COMMAND:New( Client, "Launches On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = true } ) - Client.MenuLaunchesOff = MENU_CLIENT_COMMAND:New( Client, "Launches Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = false } ) - - Client.MenuDetails = MENU_CLIENT:New( Client, "Details", Client.MainMenu ) - Client.MenuDetailsDistanceOn = MENU_CLIENT_COMMAND:New( Client, "Range On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = true } ) - Client.MenuDetailsDistanceOff = MENU_CLIENT_COMMAND:New( Client, "Range Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = false } ) - Client.MenuDetailsBearingOn = MENU_CLIENT_COMMAND:New( Client, "Bearing On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = true } ) - Client.MenuDetailsBearingOff = MENU_CLIENT_COMMAND:New( Client, "Bearing Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = false } ) - - Client.MenuDistance = MENU_CLIENT:New( Client, "Set distance to plane", Client.MainMenu ) - Client.MenuDistance50 = MENU_CLIENT_COMMAND:New( Client, "50 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 50 / 1000 } ) - Client.MenuDistance100 = MENU_CLIENT_COMMAND:New( Client, "100 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 100 / 1000 } ) - Client.MenuDistance150 = MENU_CLIENT_COMMAND:New( Client, "150 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 150 / 1000 } ) - Client.MenuDistance200 = MENU_CLIENT_COMMAND:New( Client, "200 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 200 / 1000 } ) - else - if Client.MainMenu then - Client.MainMenu:Remove() - end - end - - - local ClientID = Client:GetID() - self:T( ClientID ) - if not self.TrackingMissiles[ClientID] then - self.TrackingMissiles[ClientID] = {} - end - self.TrackingMissiles[ClientID].Client = Client - if not self.TrackingMissiles[ClientID].MissileData then - self.TrackingMissiles[ClientID].MissileData = {} - end - end - - Client:Alive( _Alive ) - - end - --- self.DB:ForEachClient( --- --- @param Client#CLIENT Client --- function( Client ) --- --- ... actions ... --- --- end --- ) - - self.MessagesOnOff = true - - self.TrackingToAll = false - self.TrackingOnOff = true - self.TrackingFrequency = 3 - - self.AlertsToAll = true - self.AlertsHitsOnOff = true - self.AlertsLaunchesOnOff = true - - self.DetailsRangeOnOff = true - self.DetailsBearingOnOff = true - - self.MenusOnOff = true - - self.TrackingMissiles = {} - - self.TrackingScheduler = SCHEDULER:New( self, self._TrackMissiles, {}, 0.5, 0.05, 0 ) - - return self -end - --- Initialization methods. - - ---- Sets by default the display of any message to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean MessagesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff ) - self:F( MessagesOnOff ) - - self.MessagesOnOff = MessagesOnOff - if self.MessagesOnOff == true then - MESSAGE:New( "Messages ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Messages OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- @param #MISSILETRAINER self --- @param #boolean TrackingToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingToAll( TrackingToAll ) - self:F( TrackingToAll ) - - self.TrackingToAll = TrackingToAll - if self.TrackingToAll == true then - MESSAGE:New( "Missile tracking to all players ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Missile tracking to all players OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of missile tracking report to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean TrackingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff ) - self:F( TrackingOnOff ) - - self.TrackingOnOff = TrackingOnOff - if self.TrackingOnOff == true then - MESSAGE:New( "Missile tracking ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Missile tracking OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- The default frequency is a 3 second interval, so the Tracking Frequency parameter specifies the increase or decrease from the default 3 seconds or the last frequency update. --- @param #MISSILETRAINER self --- @param #number TrackingFrequency Provide a negative or positive value in seconds to incraese or decrease the display frequency. --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency ) - self:F( TrackingFrequency ) - - self.TrackingFrequency = self.TrackingFrequency + TrackingFrequency - if self.TrackingFrequency < 0.5 then - self.TrackingFrequency = 0.5 - end - if self.TrackingFrequency then - MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of alerts to be shown to all players or only to you. --- @param #MISSILETRAINER self --- @param #boolean AlertsToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsToAll( AlertsToAll ) - self:F( AlertsToAll ) - - self.AlertsToAll = AlertsToAll - if self.AlertsToAll == true then - MESSAGE:New( "Alerts to all players ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts to all players OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of hit alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsHitsOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff ) - self:F( AlertsHitsOnOff ) - - self.AlertsHitsOnOff = AlertsHitsOnOff - if self.AlertsHitsOnOff == true then - MESSAGE:New( "Alerts Hits ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts Hits OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of launch alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsLaunchesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff ) - self:F( AlertsLaunchesOnOff ) - - self.AlertsLaunchesOnOff = AlertsLaunchesOnOff - if self.AlertsLaunchesOnOff == true then - MESSAGE:New( "Alerts Launches ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Alerts Launches OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of range information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsRangeOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff ) - self:F( DetailsRangeOnOff ) - - self.DetailsRangeOnOff = DetailsRangeOnOff - if self.DetailsRangeOnOff == true then - MESSAGE:New( "Range display ON", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Range display OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Sets by default the display of bearing information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsBearingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff ) - self:F( DetailsBearingOnOff ) - - self.DetailsBearingOnOff = DetailsBearingOnOff - if self.DetailsBearingOnOff == true then - MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll() - end - - return self -end - ---- Enables / Disables the menus. --- @param #MISSILETRAINER self --- @param #boolean MenusOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMenusOnOff( MenusOnOff ) - self:F( MenusOnOff ) - - self.MenusOnOff = MenusOnOff - if self.MenusOnOff == true then - MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", "Menu", 15, "ID" ):ToAll() - else - MESSAGE:New( "Menus are DISABLED", "Menu", 15, "ID" ):ToAll() - end - - return self -end - - --- Menu functions - -function MISSILETRAINER._MenuMessages( MenuParameters ) - - local self = MenuParameters.MenuSelf - - if MenuParameters.MessagesOnOff ~= nil then - self:InitMessagesOnOff( MenuParameters.MessagesOnOff ) - end - - if MenuParameters.TrackingToAll ~= nil then - self:InitTrackingToAll( MenuParameters.TrackingToAll ) - end - - if MenuParameters.TrackingOnOff ~= nil then - self:InitTrackingOnOff( MenuParameters.TrackingOnOff ) - end - - if MenuParameters.TrackingFrequency ~= nil then - self:InitTrackingFrequency( MenuParameters.TrackingFrequency ) - end - - if MenuParameters.AlertsToAll ~= nil then - self:InitAlertsToAll( MenuParameters.AlertsToAll ) - end - - if MenuParameters.AlertsHitsOnOff ~= nil then - self:InitAlertsHitsOnOff( MenuParameters.AlertsHitsOnOff ) - end - - if MenuParameters.AlertsLaunchesOnOff ~= nil then - self:InitAlertsLaunchesOnOff( MenuParameters.AlertsLaunchesOnOff ) - end - - if MenuParameters.DetailsRangeOnOff ~= nil then - self:InitRangeOnOff( MenuParameters.DetailsRangeOnOff ) - end - - if MenuParameters.DetailsBearingOnOff ~= nil then - self:InitBearingOnOff( MenuParameters.DetailsBearingOnOff ) - end - - if MenuParameters.Distance ~= nil then - self.Distance = MenuParameters.Distance - MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", "Menu", 15, "ID" ):ToAll() - end - -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @param #MISSILETRAINER self --- @param Event#EVENTDATA Event -function MISSILETRAINER:_EventShot( Event ) - self:F( { Event } ) - - local TrainerSourceDCSUnit = Event.IniDCSUnit - local TrainerSourceDCSUnitName = Event.IniDCSUnitName - local TrainerWeapon = Event.Weapon -- Identify the weapon fired - local TrainerWeaponName = Event.WeaponName -- return weapon type - - self:T( "Missile Launched = " .. TrainerWeaponName ) - - local TrainerTargetDCSUnit = TrainerWeapon:getTarget() -- Identify target - local TrainerTargetDCSUnitName = Unit.getName( TrainerTargetDCSUnit ) - local TrainerTargetSkill = _DATABASE.Templates.Units[TrainerTargetDCSUnitName].Template.skill - - self:T(TrainerTargetDCSUnitName ) - - local Client = self.DBClients[TrainerTargetDCSUnitName] - if Client then - - local TrainerSourceUnit = UNIT:Find( TrainerSourceDCSUnit ) - local TrainerTargetUnit = UNIT:Find( TrainerTargetDCSUnit ) - - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - - local Message = MESSAGE:New( - string.format( "%s launched a %s", - TrainerSourceUnit:GetTypeName(), - TrainerWeaponName - ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ),"Launch Alert", 5, "ID" ) - - if self.AlertsToAll then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - - local ClientID = Client:GetID() - local MissileData = {} - MissileData.TrainerSourceUnit = TrainerSourceUnit - MissileData.TrainerWeapon = TrainerWeapon - MissileData.TrainerTargetUnit = TrainerTargetUnit - MissileData.TrainerWeaponTypeName = TrainerWeapon:getTypeName() - MissileData.TrainerWeaponLaunched = true - table.insert( self.TrackingMissiles[ClientID].MissileData, MissileData ) - --self:T( self.TrackingMissiles ) - end -end - -function MISSILETRAINER:_AddRange( Client, TrainerWeapon ) - - local RangeText = "" - - if self.DetailsRangeOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local PositionTarget = Client:GetPointVec3() - - local Range = ( ( PositionMissile.x - PositionTarget.x )^2 + - ( PositionMissile.y - PositionTarget.y )^2 + - ( PositionMissile.z - PositionTarget.z )^2 - ) ^ 0.5 / 1000 - - RangeText = string.format( ", at %4.2fkm", Range ) - end - - return RangeText -end - -function MISSILETRAINER:_AddBearing( Client, TrainerWeapon ) - - local BearingText = "" - - if self.DetailsBearingOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local PositionTarget = Client:GetPointVec3() - - self:T2( { PositionTarget, PositionMissile }) - - local DirectionVector = { x = PositionMissile.x - PositionTarget.x, y = PositionMissile.y - PositionTarget.y, z = PositionMissile.z - PositionTarget.z } - local DirectionRadians = math.atan2( DirectionVector.z, DirectionVector.x ) - --DirectionRadians = DirectionRadians + routines.getNorthCorrection( PositionTarget ) - if DirectionRadians < 0 then - DirectionRadians = DirectionRadians + 2 * math.pi - end - local DirectionDegrees = DirectionRadians * 180 / math.pi - - BearingText = string.format( ", %d degrees", DirectionDegrees ) - end - - return BearingText -end - - -function MISSILETRAINER:_TrackMissiles() - self:F2() - - - local ShowMessages = false - if self.MessagesOnOff and self.MessageLastTime + self.TrackingFrequency <= timer.getTime() then - self.MessageLastTime = timer.getTime() - ShowMessages = true - end - - -- ALERTS PART - - -- Loop for all Player Clients to check the alerts and deletion of missiles. - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - for MissileDataID, MissileData in pairs( ClientData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - local PositionMissile = TrainerWeapon:getPosition().p - local PositionTarget = Client:GetPointVec3() - - local Distance = ( ( PositionMissile.x - PositionTarget.x )^2 + - ( PositionMissile.y - PositionTarget.y )^2 + - ( PositionMissile.z - PositionTarget.z )^2 - ) ^ 0.5 / 1000 - - if Distance <= self.Distance then - -- Hit alert - TrainerWeapon:destroy() - if self.MessagesOnOff == true and self.AlertsHitsOnOff == true then - - self:T( "killed" ) - - local Message = MESSAGE:New( - string.format( "%s launched by %s killed %s", - TrainerWeapon:getTypeName(), - TrainerSourceUnit:GetTypeName(), - TrainerTargetUnit:GetPlayerName() - ),"Hit Alert", 15, "ID" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T(ClientData.MissileData) - end - end - else - if not ( TrainerWeapon and TrainerWeapon:isExist() ) then - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - -- Weapon does not exist anymore. Delete from Table - local Message = MESSAGE:New( - string.format( "%s launched by %s self destructed!", - TrainerWeaponTypeName, - TrainerSourceUnit:GetTypeName() - ),"Tracking", 5, "ID" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T( ClientData.MissileData ) - end - end - end - end - - if ShowMessages == true and self.MessagesOnOff == true and self.TrackingOnOff == true then -- Only do this when tracking information needs to be displayed. - - -- TRACKING PART - - -- For the current client, the missile range and bearing details are displayed To the Player Client. - -- For the other clients, the missile range and bearing details are displayed To the other Player Clients. - -- To achieve this, a cross loop is done for each Player Client <-> Other Player Client missile information. - - -- Main Player Client loop - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - - ClientData.MessageToClient = "" - ClientData.MessageToAll = "" - - -- Other Players Client loop - for TrackingDataID, TrackingData in pairs( self.TrackingMissiles ) do - - for MissileDataID, MissileData in pairs( TrackingData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - - if ShowMessages == true then - local TrackingTo - TrackingTo = string.format( " -> %s", - TrainerWeaponTypeName - ) - - if ClientDataID == TrackingDataID then - if ClientData.MessageToClient == "" then - ClientData.MessageToClient = "Missiles to You:\n" - end - ClientData.MessageToClient = ClientData.MessageToClient .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. "\n" - else - if self.TrackingToAll == true then - if ClientData.MessageToAll == "" then - ClientData.MessageToAll = "Missiles to other Players:\n" - end - ClientData.MessageToAll = ClientData.MessageToAll .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. " ( " .. TrainerTargetUnit:GetPlayerName() .. " )\n" - end - end - end - end - end - end - - -- Once the Player Client and the Other Player Client tracking messages are prepared, show them. - if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then - local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, "Tracking", 1, "ID" ):ToClient( Client ) - end - end - end - - return true -end -env.info( '*** MOOSE INCLUDE END *** ' ) +env.info("Loaded MOOSE Include Engine")env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz index bc0f5b2f8908d495c6c8bf12fb4afa61c185dcd5..3090778e9eed937c96bf587e786e08584fb152e7 100644 GIT binary patch delta 1048 zcmZ9Kdr*{B7{<@{9UwLq_rmV77eM5e!9XOCiiB|y2oMpFluPZzY#JcTZ3Tu9%uv~7 zwgF~&qmufn4$eU0ev0fXqeW(znweO`Sj9dCocWyzg(Gd51db zwIya>h=q*#OMPMW*Fb4bBGhY&s-!|u@!7a!=?|WqqWYNi9@Sf^jy!*jjLl}4?=Ov; z@gDEd#H(IEEq<}Z?e4^YX5IfTO?)Wf*fP8CX~*>G!seoyC9AB8aQfEAM?^dZ4}IGI5ZPxIaZTLoM(A@NiRD5M)5ZdwM%_2SG}EpXAO8J{ z;bFn;^_5n6SNAPRWX^cB$mjj(uS)3mBRWp)`4n@<_KL2g+^;aZ%zIOgIe5f?6PIBRGy-r>eLpy25 z8|h6f&m5U!2cPJ?H+6J+xPxgKW^4^~v|8l~glBlfKrv?pM+qkIGZy(c#U5lu-^viIad7|+EkqE=!y#B$ zfBD4Pf8)ck#v9yJj{dw7m{g-s6!YF@-0IkwZ;L=8w!MCQ?lR9%*}ae zwcaxDx_?^Gy+0}Q~+*l0t%W* zyML%}wfu)#!6D$b5QpO>9s#x@?1%YY1SA=SDu{qjL^u$C5JA9{i0Tyd1_5?9)Yot# r0h^wYe302tq(R99R4kJs&>C;@3<73ts2l^c3GlGRBC`j%#)SR`Tn?JC delta 107616 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�&7PFaJ*l;onvZWADgNNwZ) zhybyxpcZvjJ(;EFPM)2&+kecTz)Opj7Gyiyoi3`B0m8tcSz0$H)`ar?kgjd~Uo?7f z-!#h?up}1I#78+11QUx%;D0i-0&d4Khb=H3BZ`oD4d5e z1IzDdiHU=p{fxvamTP+3Evv4(N^1<)8sO}I@KpliVYOEw(H|#0MEM<7hw-K!>VI_a7;N;%X7=ML#%orZR92~}@`@==}0NcLA zX{@>^;hg3I2OYuc!y9}Jd|CraX~VBCFkM!lZx+TsbdQ2eE=r_B#%Mqr)TygNP4jvJ zV$pSsgSqrWbM2tcuP+D!Od?*RPiL?Mlok!|2^xg?5J*0$(zE76!HV#vd)qI|%5WX& zUl@kbRez!;-k?b``F4C8fad}x1-Go%8L=~XLh?w>k1ylp{ zvTTuN%ZhV5YpNE7Di^p3!WhKG=5JW#X)e@3Uh(AK7n2&2rwW`Od`(JC4G`%Qmo807 zzZiJ{w+M}SY<*~c6KYI%wo2{+C-OD8H*d52W*hbMvAKGBBK-# zkP6SooChdap-lPp2`L;W(?PCp4Bwl9crB(`j7*G>J|dNBz@Y>%T#$}&z#Q17I$R4e}{wG zp?@$RjKhV7sjs-25@Zun=2b?madA-(jJ+;Q1guyz3W3Jtl=TScCaXy}-zpSZ^V)Lk z#ukoylR{T}@*E{-68+t1n}($EroM(53JfG_#{N296d?SjrA`mV+=fALs)kNa045tp zrx#A2M#}k-IL0pVEJ-4qN+$PX3;$-VaIl1p8oENxJ zl%!bJkEZr2b%-)|a<44%0KjI<$z~IXWi!ZAF_Y~;i@3z<5{-3eXJC3DMWG;D>v|{K z4#=R67!c$dJ?Le7WRF#GqrYyvNlSpgxo$c?lT4YcL<-Pw4j2bi#)sR>!lp+}qnD2{GAUQ3uks(33aj^*q8^XFkm>ZX!HX#E@ z2L$ut(&LX}f5wq?&Hm#PewtRqXAY#IL2dWCOGEB?6m_powXeIGCv4^kn|Z?9Jx|!U zuy=A{TSO$}7%P{8PY4^>qrvlI{C_;4D_WO}x}m$2iu3dw?>e}~0cr)T_JaY{H)*Z1 zv$Jf1B%57p*&(#3Yc(EMW^J5unFPlr|E{4UGZ{^5^~CwERQbMzN9$yl;Epfe#~JV8jce#0-uN;{yQi0o?x9dD3V(59K5quP zrG}aTC4DLi@PFfzx_;(B53xl&SNPWNLmp)KVgUx67QkK;;FG%N=XVMB?^T&8tBsR|I>*QkiGQ*gZt#aV7HevTbTm;w=^l`+!xZr#bk2JTr;E)KP)gK0 zs)Q9Lce@Qxs=wDjbp>`Ws4DI=aCWyhAOJV?g@1cH1C}tMC*Tr9cm?U*wjWVhW%}cW zp9{wAK4vaA=V~qXT&(%C>P6mom*r(sphcY{I_>mymh%dhei7Www0{wZbhyaP!LMxE zXRRsX38+)o=3kUEwpol}+ziPw=c%)W)W7%%qDy6K`Z}WrH0Y{8ssVoZmGlmDK^_pn z_d%b{vOSVBt%aP$e8!-kRtbvvvyC~(U{)3F5&NvlUo_7-FJahFDfr2sgy~G4aA7>Y zZ0-)!@4%Mx;Vl4|!G8}72ImA#4z&}Awk;Gy^@f9;s2mP;p@$^}LK;$x_m7VEzdNL2 zfllC5={Ayk`8u!qz`@xM+Or(u9soAdfq0lFg9rb(oonJW;FA6RxfQ8;*UtZhq`h@5 z9xHBLOCQz^ulHs^v727F*X_u4t8;Of>CZkD-2zn&(lZ@K=YKHk_DwhYrkho`hgyZ>E`NWY&RNmE!K-ntoR(Bif!wZkiZ}V5w-o`uGcqbe0WaFK@)!vC0 zvNbYF@@_7}3eRLcjfA^|+=qx);^nXMN!ZXFK|#cG3bL0SP2UdZ#G}&+*TgW<1QES0 z4$5(MwtvWGKqXO2MV3~yNRt+S@`H=oeD%I^{nn$`V$*ZE3~FN%W>@Ot7Q8DgSS@l(#00pCiSH$$e1EK**qOeQRTZ5T0zf8SYd{xJgS6(6mRv(4zE*tFlQzA>a2PQJj zzkheJQnJMi?ybyWmQ=BnQxAW&Opzo zumW{5HQQaL8skV~)t6aOW7Z4E;q;oy(?xfAvB-2qdP69$s75s7-1w2yD(~?WD3)DQ z;?O!n z9|wTXvWg#TuJWvCcoxL-IxN;*$M~+~j46We(z@|3H^HTlR4$x}q45l{uQGtj!ge(i z>?93eyRHFnP4h3VedMw_5ymB9e^#oO{xyl6*M(do&gO^HJB@w!acS`c5SlQM#D5v0 zGG{CTUmyl#=SMQTQ7Yn%hMnZ<<#2EaA<8sfx_wqysh-X+)2`1!VTKG23JU>+kCYy# zVI2Kvff(@mk5C-eld@`FV|5;H9K56wFS~8BNkc0>oM|R}xRH*nN=yzf2KRArT;xZ<+hi{;pSbtBrn_qpe7pA8=jl{$M`Ca^|T`w<==k3UuKtIWd~Fzq@=(lih$yJ+amT)tKElomKC zTke_k;GiMufV`)~eKK$V#CwH~v{gJ*!*Od{+{++MEFuC8v%F@L<=kD9G4}w!Zb53;goWU7T^tEA9t7PN(^zrjiwXvVoNsb*I^U zR$fyQ*SN0D8l=n~&Dp&$5`V^MwFV1Hc!wyQ$|Kh&Ik_vYPwF~eVTdKlBDg(hz{+wP zp8%Q8FbW?RCPdQbuHin1jaY^`N>?v3x!&Vt`4W85``r`3rUz^XAb4aa0F#$*l?~qw zz&b-_t%dadg`!_SJBBsHy{898(cr~CCm-@Pqu#E;2g-2lRBy!6)_-*^4)cfPFQ)3r z-afxlQNaX)@+qk)%_9l!zVIk3vde2v0Csq1e?jbW<{y88cgJxS^I3YGRgdJ&1$3Ws z__M!v^2luaTCXcF*zub1Ggk&7c?&weu`C@k&b!1Oa4!e1Qh7J6a{nn~MSRUe2i2&h zQ8fn{l8Dza?ROX~!GFn&X*`es-@St!FE5H<5BpNect{2zX`E)UB*5y$H=YQ{aPoP7G#B{gErvI?&91YdNETXJh5OKZL({GOL?@R7f zkhOdKp#(_*%WUzqZ?8YGn-6#eo!?i#dqL+6Y{NX;Bws&SMrP`9kI=^dx&)L_3k zxUZO>S2@5p*Ql%jkh;Q`Pf&~-pEMyD@9HWJ*Momkr7IfEFp}&gy#w=zUrelQ$sN+w z?gd#XKMKX`Qh$u*6@XCFmNs*~J|431MAKSy-eGZ!UBogx8DetQBNd&qCze1fHQkEx zu4?mIR=aJz=4G$YY8WAjEkmjxFmN_5@Rng#3Esi)^STk!THPI3Jt-v+A7df)8kA8~ z%cPxpM&SY&oj!Y1U!-$L##!MY?bGYT7}ctJO;qVmpMQc6tz#a&#Y!fai{Dn;^scB& z?Hm;pY!P}@5vccu9O#gA5<152PU@+je!7!-;(iWUQhG_q->m{4lOJ4V@pV#U@hl`Wq;toGhw4Uco?xB6} zb~C5vDzY`_X1}+2+GOodn?xoX$=mhr2}{_6EIO~{j_Eh*-IM6NZ+)>A_wgnQrfnur zn+eor0=1byz2Ot6f7v^>?Z#=~GY|ZO$UcxlFn*9TDQv$I5gH}G@2QWM$%~Xziodb+y4J33gHrE^>vpUEf6|- z=jC=Vh^$hYUVP!)|6hCwN<`NeH+v6;Y5o6uFn4ELd-D#u~}gv>UK;u;Z7aYomyVyL&qD>d?#n#2|My=9)T&0Ggw+Mh}p z)gOKHMwL#}YG-v6kG?tn2ajREejCAn;(rmTfYh!<0zlrWJeb?3Xwt@nL*39Xe3s2U zuW(*{Y;+3WeE9vJbrt`2Z6@9E4$}YL?roGKdQ@+FuGF#nyJ@7QBfNvHiYRI+@(=KY zm(0it==w7Y(%=qHENUeJ15L{;xp=Utz{|f*g_XH zoAhyj&kY6u-3GXwC1n7a z&BXSx4`fj`x7aKLA+H5;-)+X{ER(Qqp{WeNG#Hr8g+VU-0Vt2|DLpTBSTP*VFoFxd z_i2ak<0bW^-Ms~-y{=%%UVolzm{*j(C8^1xGUU7!8WVE#ixD*PUjw;sO!P1d zTe?~={_>%pDLStCokBi_eoO86abCmtvJXLX(2NM_l9HgJ6Tr!@et+)L&t3Ytb6zd? zP8SvG4$kTMWq8H0sg(EhX(a0mI`XqPHhKlFsuET#^E`9x>hF6`i}Y#l2S|BqV3KN} zMMi1&ZCYA93DTa%66<-ERh0JjKx_7Z#HXbYn7RooJ!mThcCqWXQTbEz8oDtILMxPSjAiMaD6@yK#m}{eN3B0PXt^hbqUzv>;|60)I5vK(UY_w zS9*GNA^**66n_qRKGxX`7w7YzFWfL0M|KjbY-I`2=5QgosX$hNt7h1NG2QfQkz}>UqVn5}OSc z=PeHDkG4(*0@%|KT)qSCu-!xPQaWbuY_fPZt-RWqEq`&tWe>;^WSiOY?fdFY2qyim znU10cfus{{DUXX2-9*wvttu+n>hThJzND$zY6VdMo~0sng{We$P^M6Hv;ATFCvqnJ z3yl*gCY_3w6{bjMq%o51prOFPX>23ptl!917DuDa(PVXOt*$|9?3I_7AQ#qqZ@*M0 zlPbRg<$udLEp+8QRwhuFtNOME3~b#&B%8tJu-@%&b5h66*sWryWF}(`DYJEWYX(w(?*sh77En7(j%H#&oqrorf+2<5z_NQAlE%(rFN!b;8}N)` zBb9_Y`sfO~wW!T`z{kI%Lkm5(Y%qAPCbP6|xA(1$g-^04InDm=rZ*jE7-I&qCeTrG zMBw-j36+PI{YrVQ?l(N%Fb!IW0S77&XsjSGu?+OeSVV7Nf|P&?e*Q&TGivuY*k1Nm zDt`}nXdDN0NJz`kbw_vKV4=!|!oem72r0}E+l>$WBEpFh#gfU48DK{}`zn4cC#7X) zD40yNIwQ5dm`&O7=Hx1Uh9icgRBFj6_`n#0Fo8}k`qsk2Oz_lFz2vofJ;o+tbU@S$$CbFL}QD2!`^#K5L}o!2=SAtnKy z0Kr`r`~5{xK4T|i`Ig{|Qs=0w-OsNxXxD#wm8qr;rX&xD6D>Conhit{r9^`D`C|6h z1^oqs}Fs-(~9D;5|JkkF%6={(Vx;bUY|k z_B6$#F1sTrILfgGn3l&r~t-J zGkp?xg?Fr<(#dC5)LBP%;OT!6gWV^n|I(>o#N%UygxyUGJ`wMTc>km!ax^?S8Gk)G z+aEm~9qe^JdC)Mqjs23-5kh|P%cR>F7ahmqOPa3!|@x`=eV~HDnGi z&8+bhz3P!T;Qmx*i>Fm*6UWyY@_%AvG*Yue8_N*%ZV35L8Zw`JixYpy89X(9HagiG z9^H84s7G0i0ld`kXk7dI!Zlv+=3E_rV^XHGoEXNRvpg$WMfNxTkldK|V$;9p*{}2H zg*6k$A&9pj&PxKuyUtloM1yxcq+2;9}|C-Z@Uzg<81nO7ZpJ9 zCZh6qw#fdoveKzq`DC_up%YpgVL=?PD=o&}_+Lgg%ZPy3BbwdY`*J)wIMrWNdBQ(S zb}p>4NtQnayjlty1B$SDpxgLciJie#P-_-I7C(B0icBXWCR6lxOnt5q!Um&S>I5^vMS)`Xa zYMiB_l126`5CPO%s@B&O`tJRglcV7`2U@gt9CF)t(zJ-Z_L_NNn`3GbwP=;G^V(~g z4FgrBbOV1kpPRVySnL`%J@7A%1|AO=QUD*faSA+nnw{6?ZbbeaLXs~7b;IO+6!<7Zi0E|`7CSZ zx^NNeZ~z5F-)M24lfNwT$C&L4{ zB>sQh2tn7HvWK61KH57~$FO04j9d06uc$r-G`0*4h66EtM>`0AN; zzyjaP1FIk_@Kj~CH0tWn;UV1WSz$lj13MSZDZps&rmC{~s$`>uWl(E3eyIL2PDdrh zt%MSbyuJW9bq;Mpd&_cB0SJD00?M50u0ns!`LhgzOWF>iHO0a#Ot9$#YEdkySvH?% zl~JLL70sBlx`YZ>`8=Ibm;-fE4q%)DEmF9OlMVdA#}z?>AO#cd;r}oQgq9*|6?Hh) zz03+w{4}zB@};$v!B1^fS7A-3IR~AOb2H9VX#fZamKD#_sld|uAR$Qyf^yW8dI5j; zbgQM){K;kcb2h-o&8m#L&5gei{IgCoxH`Q?fT*I*3FHDnYMzTSwIreD!GK4i4E)qj zD-Z!p_EHb4w0IIJ4J*c`MAtqb{m3}VE0D}IUzp)*R#y1d$vmUEgDSBW;7b0?Jy}5I z0`E@N#Dc(xp}zA?M_|3uLRUYE(+be zWTZuy_{~K=&%)$yGgR`BPDp!m3vbt#=jSSA4jbyFc|}6lhLpN0Td_dIHxOQZQF0Wr zd~Tn{%gH$lXtKoYYHn92jszcRitCI0ly*(oEgzFj$BY`_IKm;-;)Hq6+C z45nw;CK=2@Q!J<^jCKF*{T<#fM_{VI3!hJcVvvM{hhL=Gja7lFRy~8Mc(s=$>Mmf* z?!I&|FDA1EF|MrgKa06U#g_NZxUG7C!dNe60C$xD3=FZ8A-IB@=s>i;g>eBz$2FB; zVoDkTat62?3O-*YUCmbh01AJnXkiZ&rLsu{-#obxNC&gitmZi3Y*n&0%L{$)IFz-x z+B_^Wii|S{Xn>h{&C|n<=U|CUC6SCpGHiu`++cSJe~3^qe_ZgbNg-Pj{6fa_r0G}{b7c;IMxg_9r5`kO1-@1X^Vd`kNxlC%M!yn z5k)v5T|i$en9bm&0CUWS3-U3EbOu%+9Hgq=vA&WE*R6v*4D1t2=S=|4g2n=c!U({& z4kz*_8ClbsqXnTs$;sz=Hk&F(;qIY^RPxg+Ci58=!FNX)CAIw$B9vl{4&C(+44Wbo38+|$6gBy&a;~#W| z&$3xQ!5DK5HTd<8GeqnMuE9RW#Jh$%C!dXv2);!NJ&l_RpB{g;2e$>N6I|GY?e2N8 zNQB4|z=Wnu3Y(Wdd6HGhxh<1WmIeS*XuJ?)=prF_ixDNoo%|H^CtPG+gIwH95P6GDQ{Uo&A1SY9& zPRJQFhdCWIN96EQxaXJxm7jpxvsTPY+S7zKj#P>pH-rl$SteU5-|PmWgWe9ElC9|pQ)`(9drp1&iNJG+{^-e4m=Q7S@Q!XosM z59t^oK9_&?In+#UkrHXt9d7|H5=6(Z)Q6>_z_FC2xOu-t*fCxQ2-vS>|)hZWk=vt%BAx zXJ20Sj0H&khC_!G=WUQXr8qa~8XI{%LR9d9dO>$^%~qlUo%iy-|=^%I+d6M0(zHH!!7!f!)YthBZaRyREb-NPR``uQ!^wO zvFKS|w>DjzXk18b{?@a=E!c|${w|q94SGD`B%dWx^yOApmqMP1vnTl>Fb4F_0MCDJ zZTaDv@8+7u?Xd$}ILV*f?Rr|b=`+RjHQ(5z{>T6S1-k)^ZwMWXi2YuS*Lnq>7p zynd71Z_OWHc?o!Wqq<95A4vOUetzpVi^Cdf&tnUv1T5i#+p|N{D~CUMI@5H!0pT^E zTV}xhyXL_CkOlXB9!Sycn1HXM)3Sdcy~K?T)GOzUY^M6OKYl;CujVBVhMmCF;6v|u zR-tFnJS~2%6YZ*4kvF{Kctjw%4CXUi&_1DOVepiL7Z$~Jhh6JlbSn!Fp^du~1#Hig z1WE}6feUUY2QnCehL?+iIMr9dcPwGWgJ>oH{(&3HbZ0WaYMUwc;VVpmGlA%xOMJ=j@J@qGM_bd1b*HEn=cn z*igUT;a3k5drN~}{x`5{*Gqq%>vP3dwQ|ntIXT(!QlOYEgI1}y+crV1(g`~@azM1! z#|n1mO^t8RPe<(`fFw&Z9Hx9kQ#_{J} z3z%GFlb@jr%nN2atyZ61jpp-xixZq}O8_aLWh~SuMtCLB)-faP_BPK|E z12~;%=EF-}GQza!F~g?DP9>$vDz_xdatyEy*cE5k6?miMzs9MohHf_dW&;C__T|*a z*?CEm?5p=)eFInQ#2kMMq&D}<*cCjyU1sl%2?Wp+cA}&jfWK+8j}A&Z!fO8@l^X-P z!OnFtu^Xjn!RvhcU1g?Odo@pbl%Dg7BtwK0bxB=AdT(EFkBB)Wwl`KEFEt45OCqz} zT=9Am zE%NPFLDDob6~S{;jK(dCg1KJM(QML29L&W9SBHt8KU`_Lq8bg=-lli6DAP;ESB8A} z$*+-8%b*m!$sI_VR0)Jlvf9YodTHC;C~dp9C2hMTH@h!F+IBmVHl?}~wo0-3> zna|D%Etc>O<4u3#!2K)wDfeKaauB~Vb9>TZ@DmB~k-Tjw;nwa#P#oLJwi_3ez_yYq zp?98SUE{RDlI^K}y@<)a%{jV1$X5Y%$}RoG(w%zdnKpxAZF2%{1=T!`1=*XpraZQ> z$541tOl~x`X5Ok3l7Q%P2{|r?`JHYqP=l_|ksu&Ul9GQucO-pVwjkkV^L)OTUVC9_ zN0WJOOr36q+69kr6I-|9bE;$3#3x8f1|V>S&(kLXU&N4FuICPYxZ^v5yqKOn z6a!cUbFw2El)%sN`W4U{HmHG#TvCrl`qR!z)e?UqyP$e+qc#tDi!e%Iv!%L)ks>=D z4wyaDCW=TzADVpL>$<7bxJpnUi(j~#_B|!Z)@x$P^FyE!oq8>u8_+8yo!MXpDd8Bz z2|y}%*`_h_crzQ>vHLgacQMjh}%FZJ_R}op=|X;T^_qJ3`kY`yKS4 z=`Mfmy8bNb#%H%3;#;J*)FTGIu1inw8fv#aqMNO^)FFbsu0K^a?Y1{?E%%oC0+6L6 z-ZkQF5v59fs@r;qL)j)=1OMtl^N76pq zVA)m`Zigp9U5hE-MBfTks?j~J1a>{Lcu9YLD^#I;_lN>eA5As3A%fOlU1BeJT=K7+ zMUVYrsk-1`8S|{-5Iz)Y1F+%PP`PQ3z3d%(av%=gWG(vC+O#z>bP!V+I+dhE&?>_K zK1q1hDcEd?T%r~e(%4_o(`IY>{=QPnT4Vzik4Z96O`%8BbG3pHp?pl;0c`qBP2qnf zn|NaiV=8S^QLsT=+@89~xVOmNbZ;#Ov*q^)FRdkMZt&TIE@t*ouEgd;``glwG7x^KwyPaK1}U)R9Xu5Y=RWrs_;D zw<&`ns9~VNL~s({Ax#!4DbWfDtj(I26qzZ8>3}^|IC@k1Gy1bufE@*FyR73>umO%{ z%T*dAL0LRu56h`Ozz5Db_cKiJ*m@@bLYo57R`l+d4UAr7X+?Dk-0T2oKo5Vr7tx~r zB*TjFvPt4FV3Y#UxLEDWrvm_9I!%% zHLLqaIzI4dnuG3&cLWu@w8Vekjh#q2P*VyJ?9RY*YH@v6&W;Yh{Pxqs1KW@!McNWC zj`Dm}@SmkilF_=kp930@?ALcy&X!O75P^_#Syoptls5&77U{*#OKeYe_`DK8RzpfZ z@**OOf(24Xa*}avPo&2M)&fF_W#LLqs7sUe0C(d6iHI?1VMsNszAk^H+N}gt(^Fw= z^h%^A$>Fq77-CK8a=0v>R?Q7so6B**$SFaL9|2Dxi--_>v~q)3M?M&np4h|>Y(C~S z2RwRXO99cAp{u=ut#sd&#fl^{K^o9AWU}_q3madHQs{^HnA$DB671+>_A zMx$Lu!<^DG^eqTP<*$E1o!wRH?1t2lbP-mrrmgcBwSQOWgX8$$4Ajy~_)R@uAvjm{ z-DTpF;^2C-q8{l2%?+m3EV1zrszPA_5*`qSr$RwpQ8uFFwZ;)l!)T07X3vXz2imj- z(J&r7PPqXZo5ofVqRD5JcGnZ=RT9QYCzY>BIu;!dEmz_t)z^Q!1HsNaw%VwP8}+zz z>IK5Twjq{#E}iH!a};EfT@N?=+jB3%V$H5)Lb0tBQ}a1@9AuokjfTP? zdFtQ0{$Px5v;u)v`%W@?nXpi}N!roGWk*aC$8oXB7tI`T{ne){c4DD zxyAL+Zg=Y;|Fz=^25xz21@k&|Z<=gcz;3kqsAg>9j?deUp5m(!@%MjK{@UB`K~buSw>`q)@j92BlyzUjvb6=8I~oMuGK9A@@anwS0-iNZtY!=h z5=vdYlhpBct*`a~Ti0MFUx~%Mgs$kf-X<7vZ(@#m{P*FqIqvQU3+nhnR+eP&A^T?D zB33rc)+}J-E7wrS8v{Tax$|$;F|arhrOz1?Ft26p$O~${`AQlmAySD!39lVn@<)IvGwDjW0@TO9txyF!c> zMvQU6XeJ}Wz`BN5=yg(LRZSKUzvF0;f!^zf*rFy-QGf|VT=crSI#ML(hDz1x6V;$^ zLYva0o2^W~7%l3H^eR-P(t%K$O5Te46AZV}q~X4KpeAEYtlkTu#3QD~2U3i}aHN0r z&v;_&-3Z8`)O~+%iz&iO4$i=VMkU`GsC#Y;(-L$2ir?oyP~B(_E=OD(DJfoZ8J3ib zQ|&bTHMUGNOaD%LCK{z1ZJHQn%kQ6@-xKwLy$gfM%xnDd6a2X6a>kTkm#|#D?`La? z;EFl_%<-psodLSjOFmFP4OaQSlJI}i4`$xsogex)6qOH^zpeAf2dl+?iWGx?Q`*ci z|M>e#?}spOw<(lqT!OB;t-NPci0hD|m ze>s1mN0H3mdtZ)62dC)&n9XW6p;!0iLB>n)r_6QWdb1v^6Zf6{dki4{)V_Z>|LFJp zd9@9$FLegj8!5KUYp=D?=IAX+E^d@r|D4Z2lINx(&Io5`+``$JDl7Qn(CueujI2D8 zI&ttgI6P%|dLx1G8DP@V=EE$A-ZWJ{Tk@?ycOLfoPF~3Nf+Q!+OTfCA&Z2Lb*Ei^v zA06)-Xta(tK{RE^YKG5ADrkQI(PBUdlpB!nc#Es6vYMj{pa00UEio!C(AFW)lr3(C zSWf&V2_07Om;+5qGx%h$5v-qJP%-rf`swzJX-&~+@uBs6Vk>?|^sLn-J2?@J8IEB1 zC@mn1FzBI!Yu1b3hz%t3afSxVqGr2?&9q13lanzx+zCthwRY1g8B~9je#i~$H?e?Wg93I|WeQPbkQEJLUAzR? zVLzxBJ>897Y>XxW4cwQZ1>IO(kWyY$5S8^^<}91aO9eRYcuWE9<>o{P%HKUBD&#c> zC!9B+Ci`kQ25_A6J9U%n3R`oOK!SPaU{0*#x^NO}@gT!47*l`A=jbnseDd>*1}P-M z5J(G4ek0$WmXygV0YSlMyC3LR_*SdMo;GA6nHLTN9)@kmgLxgbBs;!}+4$(_@c49i zaQZ;u&hN=*hhKfUuMS3E!?lT%;lc29{N0E>#Z9Y+pL{;rgUeu}hoj@s!QSZP71h5) z_j_S*Fi1!Qc0zw&R#q~%|3L6wT0JS-IJx=;P2k^3$^QGn?z5bnt-Z_+5B_5B+MC;` zf%xBii^B{P2d<_(hY1uWO#*m$1d{NY(8*lm3pKcQ#%BY8fzQr9B>kk5&UbbkC=Z6V zK54aDtyZho?&{(3{>kC#@bJi_JolNN-`~&qkoel&CO4LhJ!KvPNkq|K7sXE@mU!B&ny^U zda2U^z@UE#IXIM^kszqr*4U(vjp}*K0P$R=O13Z)Evq|TBdbY;qONZXeW6=2d*vq{ zre&)ZEvO3xyIIqwaPOJL$LYaGM~7d2a&$7-AB{|IKifH3(ytS;jEbSv%~UwGP^n5e@ltwM1_sul{I~py5I>?s^v@K&AqojJ^Sjlmp(c^ zyQf$!174--_gr(?hGS#oC;Oj%Uc>(S_OQpKzqUQ(3DVz)vEwL0@x{;NTCtRRJ3Nys zaOr=SU_m=@dAELkQEYzw)V&YlvUYpx!v$6xxH{A($};DQ!T8u~Pwx^#tW@@v>QC|2 zU)$ZU#GUV2MxAZN&YxtMZ9-yhbe-|CkJ(@lUCPsYN{3Lr&7z_Q^YKQcs z;siu84>;=oDaHQh?bnK!{hg}7e{R}G$of*S((ZbG~8_fT%Qhnz{7Zz~Y#%%A% ziDq6`OT?*mC84})&KuM+9@HQK*SLSRZT0PB;Ak~s8NQaNG;o0{aBK)~bL-k6Z)}Zf zVVJ%(0z%0*gFqgw?z8!L>z3+CA@I;=UMc(>3{u7X8>!}kz3lTjKgfPA2PpfWoIQH^ z{NW=W06&dO=_D8AA$wYv%bs`HW%Oy^Vb8O-?&py*<~ny?2`QzeRnPvWv!j33+h$LM zKvW<~c5!K(E4oQmFj(y%v~;a0e6`a3I=XDNPzIuhq7a9e@ve$4{CA+}0IPJ?=?Gl> zSLLGWI)XcGisXi>+iu8v&-LlDGM9G+g0tcQ7qgLxyG$AoE+k+jZhsEE)4E#NBsmn_9J(>Uw(A&)sHAsa`gk5pWl1))rU4yKQhno)M>yy^TK`~*X;p; zcr*qMN17pWprJLxH*lPWO}Fqo#QO;KMxH3DRlB;Rs3d3v7JHYk7pZ@AW1^w+^-W#> zJvX+9m!0c)x|}U5wp|=o-G&tefsj6=C%~L=4!W(il<}^3&f#tXbtS)R%K%r|16QyH z@wtn3Lol=?T%q36t&Ay6t!>wt?R92WrdmR^5&%wU#jJ%=yZady+NoL=)+vge!yaj>vRZ<*q;LM>j!6e$w% zB)Ju98H9o;c2RN{pYG}J!sr5Ap<@JU{4p}1&_~}!Wihdq`j=FEA`{i)r5uwn((Kj2 zn}gRosd7t#n)JnDt>J;A7sOxZ4@MMf!oy-wSd%^8IO-WkLd$=1Q4ST2VxoKSxi_wk z_?p>BH^bXd&Jj9YI_~KU?Rqxwd{66eVV;3ml34&WA9vL9jSdVNW+Eo@KdajX|Ez-< zX;zts4Of24L~!&}v!Za9ly+%>7^}(Yd#TlUR1Qv#4zt}nD9!N_yB2@=$(I~r?{}h% z6hG)1j&gi3jVymX*TtAn)QR5}n?A(SW>d1D=w7dmOWnA*M&TM&CjU0o<5v^bqouS8 z{SE9aLYk%m#2;z#fxgirlf9#Ut@EIgFfoUL)9F7?CfqCc`V~ENuLT4Zpn=P8WiLP| zM_Q3+DaIHjS{gC{q||tkDWVt?7a1NB6sf-i8kdbW)LMV>8JXf26E(-8@fX8%AGulh zpD71ghlj+cnD(&Fun5-|7vfZ}81x0ekSWSRKSYBdM@$HR&VDY%x<>6#s@X&hi|VSG z7cnSmTnK0hD6k{qx($=(0+>2yA0^8u*sNb`jMyhq4{00JG6NN%qaH55XFB4Zisk#P zr2RH6O#OdD=YdVE22$gBtydonf}+5_x))Jm@V(@M*{ROlgd}_Dy0%nu?>$zonVyyK zbjm?1vaJFn^1~X)3J|`Yv!~ozPIN$$E}Vb6YJoYFOXxaLq>9KdpT}E$i_$D*ENc6Y zeH=k;4hfgF(X@86l$X|?YpTu$y}6mv43VYuVF!ObwuZEzXBwmd9VY+cZM5VN;c=YE zVzz0f7EL`Nql?Mo!{a^O`@x4nRmkvA7o{JT(o?1pL-$ac_G-6Nfe3YSH5s%G;W#4M z5d7itQ(+;~3100|c6P}7gQqq&WPk!}iVNc;2`qt67TB{1Z_EKxGe@A-HsMLUFb2L` z@PvPhHwC1TjU}<7`;n$r0;9S%X1HfEgSVV~J;IGxXJwvb6zo{6>Ovwfslt?KVHwVu z3=-YXa$=IA=Ma|(#U;b`2$EI#Hui=gZ<7vj}B$tbYZUYx{h}Ld^CT?5Fd}?N)dc*7?=(;x`D7SXNpDa3kUlr zA0Gc6zrc*9nfnMkffr1sI!#y~mKfbw?@_0)XCer5=>Ni}N2jOzA0Cmf>X_BtB|`%EGK)NL@$sSoXR6q35&lUaX3 zR`J8BaM>T;&!IZhJQ(Qjf&7hS01u=+S&I1ioT~X>OPDBYwEzfB7ntv+z1n&!%TzUi z5N^05&}Rp&f)_WvpkQz><8aWG`%N ziJ7|{n%0{*xZ{DqqpPy<>mAv4?7_tCdzqPoD?<87D);**5mOik4ZrrGmAHRNR06{L zel^N71KQFUqSZ&;ZSljU8lqV=Blpd^igeBhrWv*jD~{!aI=QrLDMy19Bo0TSIhDlm zh~G-Mx-m4O8B_oBi)Fbi2iX}?tnkdJzkZ&xU7gKQ&o}4Zhgw&VWFMfg&AznXI_o<5 z=nHGdi%Ge=ii<-w0;Fljq8oqPZ*Y;gwfMO#wUx>?sV%K|)jR|O6uzn&4;82d^CPc! za1OrYbuQ#lJAx3eTf%9B!TM$otQKrHsv3k&PwX+E%A?Y3`g!!(mlw(p-(YFSf{;01 zSXTV!P44kD#BgzN{OPCrpB*MKWyjNi;x@v!=17r~NMs(;! zkrIOW$@Wfc$mZ@*&_&TmdLSEE^iY(a^(-OYv{o;D0k;8AqMUz!Mfj_ zim=HX6{?xgbt-DdiLDbU=Eyr5BVmg>RDqIYmqDQ)%(>Cpg=;DPdC_x5DTxGHz-YX$ zQVwiJJJX@8BFusZLNR~f(;F1oKd8!R2C{D}gLj0s-fQff-=(|Xd(aAJo5{A6_g$rT z$gK|j*(j>$Okw(M*|R2ps;*-A58`5UluCce8WSGrFe0-z0fQ`vr(lm3qKFD{OodM^ zrjp-Zh&-lqL+X`v~fT(6kcSi^x&X+SfKsNUS z-J$~xz<^I@RF}9jhY^r$pr_figtzYOD#2MS>tA~5`^oHaF?s1F>qd(U3{m8d9DxOB z&X~Ac5PPbbF?3RE+#*Qe6Gqx?u?hR zD;o`=)JKFo<}oB}n>eWuu36V|R1Np?h=^kDg2qj5&<=l81Iogu%KYIwp!<^}B9i6w zciv%#R#&bOR7OKHk~m+nn^~%w!KxZ$#%rlUhV?D#(0%O6N>nY}whA$VSXGZIm|NE- zb3j|ih!(p|*Jv$W+q7PVfiwQ08Gd)}j?Wv4RJsUZDud-em3~A9iOCG*S>V>MO^+X~ zav7Rb#&3UCF+k&!Rh)?ztK1EWcbw)Qq4RZCDgz^D}K@lY?@?T|K$)5GmEq3$sSM{%Og5y zV_uTEQ!h6uuSp7nO&@fxYF;33OZ5`)6#!c(ez%ZfPUm2f^C3jW`1@kAvdMK zS0!0gPMWZvel+}Cz)qixubW`bPQE-i`|{*S0VQ7Ka$d%vo#&-4Qp9DoHfQr3Kc0*< z>_=6~Wsh2iJT51*>G#%I2nJwPZqKO3CI6l+rwjeL5KHRWTr`MV5M9sd$1if_S+nr9 zq(pz09mqK?)!1YN#!F6MNDa|0U-vy^yS7YU^Og85h_z~I*P}68QG`6)mi`RcG z&0L7vus_l!*x53-KcevIb~-)x09Xy1Pn8O^GK8wT{)Ux=Z9Xj7GtD+zG)2(DO}amB zxYiH@E$Ed?+6ff|Fx_AQaZNdz6zHjQXyn@=RBS2pX51F>>aLic*@ ztPl8uIjI{X2{3KCHI(Dm#n?ppQ9;Mq2sQz*(9okiIzYXaFq}u<>>r$c@-3_ZD!W4y zvnYIqn+!Q~6gwA+DZ_Ca#wLGilRS^&b|!iVczRv@JUx&d814CU{nia4Cq%T3t02xS zt$)AP2Nc?OW+rFBr;=I^Z1JIiJBWys?T0ABFymp~V48lnGz5w`5$A$0@Oucq+eV^J0EOy*Hc7MbLCPnUE2QcH6w<^fHBRfH{9fsj>TMKC4NR z3jh@Lo0%+#?5G&ppDu@d$D7ZzarD(fA%;>jK@n8CdVn==t&-vc7q!C9g)0Y0EGM2+ zoM=yWYI!}W0~^AGE*wd8QLTTa$?+VW9!*%YpltnJR#sACo~I{30t01*1K>QPBmue< ze}K#RtYTA6bpWsQ$oYSlf(R&+t1zlc%>e65u{_iCP(65wHraF4iIz441OC923tIW% zU)RbHn_9WDb>pkn21YMRww5p~f!DHEw%1Efh@a0jY@E&{a>?ZakXM)@afTM~Fg&JP zZ?X}*8%{Q{<_OTmi+yC7!}W6d6JNc5RnXD$;rNnl&Oa`1`WAl@V=9iMlkNfF5Bsir z5k4+ouLy^~LRfzV;N7k;#m{U&jV!xeL=EoO4I*Tybae}op|G9fWGJ|0In*0U zAZS7jSlN{TM+ORE_0@1P7tphfBS2v3au~_57=HK}#`R603)Y14G37L|hU26HBn|iA)Rh zKqP)ae0>DCJZLJi>zV>y7zJa0f)gMb@k1Od`A^tlEx$6v|Eku0sUtPIvuzrw?YF$q zIK?(OB145Be8y-mBXS%Ql!gdnJnXHY#$mJLHST}PwS?hytl)5s$_&$A@xgl2Wnu^Y zq)yLFiTScGr-|}0_9uE^;yfL78KA55s_c3;Aho<8b{q_&-zfzZn7;HCu6E+`o2L5F z@HAyGoQ|z@>sXD1C<4r*6mTyZZ2+~yE>4Pyrwm*`O1vJ6J3?)8c=>89cF-k%Rd>KB zXghzMLb;)pLaG-YMa%KP@}aroG{zU-#%Kf=IR%`}=jA0^YtQKngd?)rP#)7umgO?%_27JD6iR;? zCu<6}4e%+Ssl$L170tJYp7*ghSFZDwp8mpGNvgz>$Pe&hVX^3o$hI(u94qvCMJzS? zFCL^;$u_AkvTx=CqBz=v(mbL~9Nh2?f8V%7hwIR2#TdnGj)II{&WI!+SJ$#WINHc_ z8){ft?z3I*$#TBt4sg@=l14M7C{lm_tk^GvbtcBW#bTJKBRv)A=Z)!JRpg>K#Nci!n@`Q6mx+wE_$_^5TbCO&&TE@Z9U7A96fxfxgo2g zs&VD(ST!Il7Yc0ORhrt;;k7CQj;EtseuP|3AoF=_D^=bR%xd1PZpgWzgIWYBp?@YM zD`k1jE)%W_62CQ(p6`F~_YNbsNCvDVIG_}TF%a%EgvRP5aav5u>@h8I$kenH^!LhN zXe3N|wA~EWu3fTrw6~-(N${OxPEU_$;4ZJ_rPc9b<0{T~ehHiT%jTGF1k?S^5&RmG za^qtX^^^L!*)XF2Qp4a<9Ukl$z+{lw9Ff#;NL+Hp#dwtKujGHI0B#);v5|ph+lVRZ zL^`0L1GGT^THm^Jm5MnBHZ$ngEOXv7U&B$45qKnwN9hp_kZ4SEl|L*i8Xv`v62f;m zFM$M{q=+9Ej7t?cK0}V8qL7y$C`2Uoj!zK&g!Ot1P;nfSbQX`~vLWv$jgr!Ybit9+ zdRCqg445O*O{agC97S(_qy8FbNF*AF3mQ}rm(ZE4Fa2Rbqb|`IEXY>VR7uyuiQE`P z|AiEi_p_x!w1^Li3#xlo@!YeJ;;i1~GBehUFgHV%>$vou7+ZBLnS zV_}fUOpXZ*2SWONF`nKN7ar9(KhZj6q^*hRf^zNTL4toGfkq_~IyVk;a|+EZ8J|Y_ zEXgv{7*qI+sv1iy2;E$})-iQZ_gn}CHk~4U92?Kku6W1QeaFSUqHWuDB)1%^wpLN> z{jo-YWBVAqjVAFyZ5aG5MX|oyCAb~dd6Kd z$PQ=I9X5X?SzbQjr7C>>xmd|4)Ye2oy%!WhyB?51tVV2@yLxD(?1AQ+fK!B6txV!- zl&5Y7@8XO7OvCDlU0k~`tdkpBXM^8by?99@swg6Ap?1qjx5Ib-s+Y4l-Y?+Z6wJPZ zex)E<7avPpE@e9{WIVA`4Eu2CO9R#thu2lkOTT}}s_|1UH=eP8Idf`IF!ped%%diS zizrr1XqF{ZPqon3^pkNuC6>@arI^YC1U7W+>E(QUy^y8qvXI!cwh;))`nbeX4}36k z`jyCYE=^!C8CDENue!>EBwVpNyP~t^^!0E^sj~@ZT`wO`#?_Oc#(BvP3RdA0FZ_7^ zQ=WgqZU%mENXv{>u_3oKw$_dgi2(EFSHMt(Gk%N8Hm=RqaqqqCgIDjj zjQjMcj7J7225h$%|(yU{$QXmOs_i^&lIX8!wu=Xb!N~dRF%NDk*=_jSXTN zK8v6A8o)$*G(0PRe;ZD&u`AvhF0KiGJaWeaS?Zx2elvkc@oI9xs|mq&Jo@13+Q{G3 z1N7T)u)T0@1|QJ;g{Y|t-RuwwgWu4$0^7f5#hl~?Zw`Ogb7Tph&hk74d%a}2#$4rmW47zNbj4WqrgHgJ#zumH zx)B8E8zE3dn@@%aQo!U0vJTSVwt;95LC3_-Y7tNZp{4_4+$oxr_7{;taaV<9ki$jv z2t4XOzXURDffn$?vbyZ=4lZqe#(Q~sKc%3?*;_M+L{yv;qZY+d5^sOp&TB1y6qR-q zM?1CiuuV}>pHlfy+VH~hZ#7BD>ph)Ey_wg$Dz9-iM}2-Y321pAm;Mfwt*%In>V~f6 zaRG2$+Pi}wy(pT>o9vSt`oVkj>+5o=Pu`4o*txExb-b9%-~3$ITW0X0cRFMLdtOp} zKU?srk(-cVL%=Wy0jPf&c0|))@P`~|9oWf*46VZJQ}zg4hHUx_%>#DjF^QUl&xnLPWX12bp8fhsAr=FAa>z$?@8ib1t~_vR z9}8wN9r;|QtyLnaK5{#NnD5Z_RVXhiV}?~Q>1Khz=d)Aq%Y}dLEh(jRd)RXH{`;<> zaI^Gj`ItsRL~nG*(^>+z>TWf(UY+OAE4Kd5wR>fik`2oaWaq-G@mnEasM{dD|%y664&TyeuVU`7t6802n zwj(cq>xX-Kd&hrFP5cJbd`!JX^PRxOO9p|@`hGTE8Q+!UwZ?E$V+5i2;#Gspr0-?- z82=_HBeHsfEYpE^Hd_>vy*gseyO$8LyoRVp2SqtOU;g>gXZxR=eVgL%E1Ve2J@Vco z9fTx8mq^WY7~2n4HNB6ApL}v*>&P>56}K8Yz}Zr*8w^<~x2*v?CFNQ^{dOhsC%q2`73y*A}hRuQ=FUX12l;<%nqkn_817MT;G}z zTRU~L0@01g z0NNr=3|8hVfp~A!4Un~1H%Mch5qSVcK)Jsf=&3ZK%e&uyT+9zh5pHee&;nRiHsu`X zwf$Ynam!W|WKGc8W~$pHcjM7Vs^vODyM0nCq?rNMfpsFkPNA=h`IPh?iWp6a4QMk8 zZg{xeX{|L<6wwh4R$f9uS5$u}u9%!|Y{(w8gS?!*dA~bGM@a|NfR*LcCW|SxsT$#m zN^J%NI6kC*>c-SZW>GY2LK8vzYm8ps&?KeT-~m=*qGe(CIG_&547l}HDn?}KHR$C* z&Ee;3{ug#R2gl^5b~Zfztj16PdrPM-3nz!r+vCV4=gs^1YB3fBn|D(log%I*iN)(m zvUJi6c;{$sm4yUJVa*K_ezu!l#G1S_l)hM{$qLLas-Dljn~Igif_GNgwc*mZ+UurtR;i8G?{8Uebm^k@xxzr|Oc4*2 zHHGO-2oqk`4qn({+29Qi-DpO8p19QBp@x9uwy!N>MvB;+7=o13nt7#ojH{Ir!kwDz z;a9nT*X~{PEjXTzi+JKfRjU<}XH8sjORpz?ayM$K@@nIfrgCn{dOF}qQDs+bT>M1N24@SNECeNg z`~|eE{X*dZP6MTSP1c|Bg3%tSy>{Q7sh#bgeq199BObldv;ySf7j@G1zOR;#$=EO> zNjrUlMY zTgC$mr8lBe#Xv?F$Q_bCf5fOFUCT>fLNN{aQ4J`!sv!aA-%ThMZ?K+`z4bQChk>l;Z zQ1|%8)6b;d;T2WW_^i_ zG@0>f1#JXt;U7#$kcxu$)DL!*Xg@E!p6#iGY3;q+UQ+!f-nT-3uvTFPD@fhI3wQM) zith${OE=aK6;#LVoqgM!iNg{Kf-OTL)7vAt(vg(yeK+kPHIq#R@ZN zh(cI;x53ReGM&b@C%uD8XAzckE?Cu^85ItXD%1+B(kG;aN2)qf!X1X>wOyPFMY4(q zQE*t-ezPQT_;dz;3Sq$z{0vHHT2KglvcLQyCMj7$DvCgXKh)nVgb~rduUG*si1{y8 zdoPZ%tOrT-@9gh6Qg;(w7oiV;;(-t+4F*A4*rafn;tMzSF>u}06`YP3jD@zU%8v9l zGce5Y*{QSsu6+d&J(fJyimUyDbqI!S#NLopvu4b=s7?=m$%gbqd7=JhJtn?zs>tp} zjrF*KO>{u0=NQWt6dj}4T+^ZSrmBiDY+F|;Rrnp1;lwSeE3GT|ic6xtNCH<$VM2pt z+17Lz*APIZMnRMosWENav!ThFi2gft8P~h1GLy2Z%_5xZsx!BQJrG|M<>$DBhKp27 z?2qzC^qg^j*D5-JB|0a&M}5<$KgNS*x0k29gI7__J=R&uA~fwC+|Zm&`y6yTOez80 zDqT+~V9?j=rJ!Ks8|T7?7}H~50%<>*mA(N8b$z|+(3H?eI`Fel-Xjjb8g60{2#K;6)-Z5PxM|K;;E;@?{zT-iU zv&9#y9dkIRN@L@O{mpQ>7`BR3Y)B( zv@#@yrt+3Cy*D@CNlu`N@bNr3nHELa*I3_v_k&FcMXM0Z9_O=;^*`8zUh6aF zw>|(+8Wxu51`7ZwI7k$HF*yX)|67Gx>AYhNyYE@6!fQ%Akma9wfq+bt-J?TL3dU>ndBv81DfRb zGM{Jg*&pEe_T6{8#k1=BAMoKi4<1k0_@}6n2`n~oE&9#Io2NL$z4_V3n~yht-W&rX zs9Gu2;L!Y3?H&5R!C&W4feocsDG)7Jz4c}j_k$U_9Z zwvy&E`047YA2BiMxwDwSWqla}*h2sjijYe%>5-6Gfe^EqUVl?;P7Lvd{U2K@#o=lz z$cOS2q8KhXN>oNK%v|vO85vSxd^bM7-3Cz+ATP$Jfb(i;N#ja${K1ufn4ac3)caH^ zJ;k`*SdB+q6Rfnk@-|mF)M&Wpg5^bqP16?e(YAe3UG_zX_S=^(41&EBkSGbmQ6JsG zI81L_U6e4`(R0dfQ@w#3mjD#vMt3j{H$v6B2e+(0q9d{%TOu6W5*gRTEe^>~9FPT_ zc0+dyHa2Jufx$4H!+?>0AH!@!D?z@2Sc>u%??TWddlhkeb9oPt(~i z4E6YhA$fYe#w!{SB}rcpUtjm0V3$Jb^aUyTgbYso8U&54hA(uZ+V2#n6f)5-0tAE) zQvGKceyCeh+MUQYJlODqzijZE5`J}AC}?}Y9C*B^ zoJf|(UC9nMUGhEpB+FY4glSkwK{Nhl?80T{aA-6THivTCK=Q@j&ujq)3HM-hXb~|} z>bn_k{T3UQz)D*6G!996gCUW&`5#Ev+3PX>@$1OqbY-3ONQ_6Sg4E&cFdlnMjaK8~ zL|KxxuM-f;E_IZDaCE_g1a_qj_|UQr3r)B7aGh@L;X2*g!*$xWrzSg98`)8HWL-iz zG8YDPg1j`NL5mxLumq@RZ8YereaBc6tNC`Jhua6A?!&`JX;ozvFV%Qs#5q`OG&`Oy zCRqZYklX_m+#QJa@;*tcER@bx$6%HT>rR=9EEB6cEpbGD0_r1rIjD*z*$E(@*g?Ft zWp_Bq=LJ8|L(gneW`!Y@s%&m5rd8Bq=)DL^tF1O0hj1MWsE!5sGJN|bkPho%Ud!#2 zAXC4?TT)T~@%|1qg*Z4?Z=#rlpT6DS8)D+CudET@Q5YZeB(E1^4#;ZpZ86Kt*lSWh zD=IC-k~1EEeG0ex71*`IZ=MYG@3ryc{mi{{Q3}&QmWJ97wD9Wn9A+! zZXa0X-jQ-A)3n5LSd0rl+~3_lz_M#p_0xmlaL+|?F#7b<;ejp(yM|}aVC6~}9~RT1 zOg=4Pmo7NAqi2|4sDX&%7AM}AUxnx_KmG;A2!Vf!YRo8} zl*MoP1jhtM#k=nm2b5!IxI6`{9!b}x!+Alejyme1XfuxRfvG~Z1H1E#>5p)~40&0p zLnCS3UQVHCcmoX<_Prc{lNMETiSS)|AKzLqJTC}5AWGni#C2Wkq^ zIc>3Xg(-ywRCC>)NrplH%X62^qw{D|=D!gRn&!Q_^cP-pqr^CBfE1DaVNIR@Zp0&D z#<+M=pWd8rU1*#?15NrYgXkD@oCF|$ePhF|ZjE2iFUM$)z+{h5s7lE56QRo5?yLz_ zlJ!7}Dyl%D35xTEeF)Qu4!s%al7W>Cc+6h<*%^}>1_QRXsFWGrx|DCn}MT$*(Cd; zKOh*0#05YC?cg`w56)_?S@l8 z1QQ@b-iR8{Ars403AMq07m?UcX5>%5{wovX1tSG(wl}XBxFI;$< zUKJ6udOGsg(gR#DLZQGW?;fR1VTOH9WwGZYS{zn@6`e$`O9X-v;I?NKBbkfg?!TVi zU)uE@$(3$z>~$G`;REXgT?tZ`t{2E~H5P@EZm*A-^+9oY2bv1fzF-Y%Y(geCqMwI0 zp+mDa3T*P6f>5UGvKMS&x8HQM;qjI&)N)L3(e&<1ez1SudegybdkZZmv+C{lJDG%U zqvy$#e(TMrLx3A@{gM$6N95~kKh6Uk+m9pOZS+3q{jIlu{dV-8$`0i0gkB+www-3J@>m%(wK0)7%@nd&?`_Yh2o$2$-J(KW` z$p`ldJod$Zb4z`U&W1D{UQZ4)w)w1nxQrXG0PgH8r=q|dwLV}`XDd3W*D|?m+)#lY z?PX~x*4EvW4mCl98||%FLCkl82-7ivF$Hn$7AZnEMqU?#3}o7XsVj(@d)mgJ8qLnD zsL3XySr=lm$xYDm(>74lOioAZTdWlOs{_hqk)(o zD5KtgZph^yx)OilI4pTIpi1y~6>ZOQy2wiaVPg>(NP9DkF&a*hgm7&(#WaecJqm?aSl+ziWN>x8l1g|=OK>i0 zKcv}OZ@Aco82-_M9yMKBr`$a%EnzY02Om>^CI@CPEyMM)LDA;bLi+=AM}lsy?ZZbM zn@+AnFQVmoD7!}C(~Bi2+H&D-pPjW?>}k9qsSmfdKDk{Ui4x^Dc(TdW&>#z&v2gEQ z6%TcmU=oMYPY?FLd=gwgOLmWzxGsH?+j3E6dVmmH> zOjl9pJ0W@g8&AR23pP(_)o+F+%Z{2ilAt0qd|>^Zl+sZWF{Sk?l>5kE&kAEyA~jDY zb*fN1PL_3B@D$wL4C{?B{S7%k2q$D$D!X6#+{&vVzC32{M};~$1hEgdGe}vv-W7t) z$j24@wKUVH$`O4sIO`b1E$HLFmtoU?8u6(+qXLxp+je1Ccun5KFfJf$^A`Q=2DDfF zu3lh0F=1gJiX$l68lpa=0~+=(8^nAyfe*}~Jd1KnbZ{y5@0=7FUE1bdFz=&t$`B2zH(6k^&#H|W;>Qen9uKtTmKCuz3_VdU80?+{ zZddPbMwYz0W+gG!cCs-s6PKDe;z;F=^GP>*$0ckUK&f!M%(D`hV5+fyXCb??U}?YT zrA0N1F3h;M>S%Hqr~R%PjbAd#!eUb{$RBN9F=rFcrbt4t_z$`TJc!|^|$1l{}8Dajwa zss9tVPEN+3(ZB`bilBgU(;a|*Hi8ubnd=U{*DO0rJ?IcGGlLS7_6Ll|o zPc>lt@U!8gFL#Fra#bz91Of%l*$f6xrzCKNcYYZ~E%zyZS2)Y0O`qoS)t2^4)}RRd zIyZiieYsI8ZB6jGiQ-(}mux;)RRuz)x@+ERN+ATCvjRcn9UJ>@TvB93XJ77+9~Zfv zlgWDExNZOv5ZK+VwgLsWu&(`w1*E|qBMD+-@u>G|tv3!CyxFm(0`I$#+8!2U<&o>! z9uLXl!@TT&>?Wa4o1VbJ0v?raIB${y;S(pxZ+Ql!K8X3PyqaFf0h64!G#$XY4lh?Y z3u@xu((@o@g-az&GGusnT-IQ+IR=k4$S6RVo;{zQi=NnR@UdKQ3ed@gSn1LAo0R2#W@}3}oLRLW!QFZ!d@HK~ zaHlSq|I2&a7&)Z(oO6r7 zQ-s}5D-4i!=M?QvDT06_JfOJTxr5q@Uhm1nRjmWpv#FPoOSbpU?%ueV(%Z9^houL9 zOYZ(ecu#hiLUC~oqQ|%k@H~S5nO9q*aY66DKGUJ0=<#6A#5a9i7o=>4#z}FCY`zR6 zWN)Ki5t$AO8h4;10hQamj8xTT;L?S4vqtxG4JAx3;A8`u>s1oHkcxJWRHpj%V-P$6 zQKLsc=qz1tM;wIT=9q!1c;^h`UAVh{gEw9pPa331(^-R*Xn7zYcSW4{Yo*vjeAOQ# zhhx+3$ZeN4)T%RpR`1-BJa8g;=XoyqG|4y~%<_U*viw$zI5Y}@c$MEt#0v%xlvYfh7&!m*f@@A32ZA)`){a7Q_rUA%<6f1mi;sX@SL3V;IWe>j$J(JB%`7xm!_CQ7pR|7Kx?vD8Z`MZseuYc$4Wz1HtK~M} zl1GcHxpyNci=o|R2V$;&X>WP+eF?MAHT36oZmbM1U&Pkxs-9Y%wm*1XP(R!~KCkB4 zDNb0Eyu$dhI)`K4aFZ*ZKlONs!EbQmn;57m_sM{)lqIzEZJ_{nC%IVAwIn0qw>6$Qq?J`JIuoi@s0ksZ* z&nM8}{3M4)9GxSy(IbwTa;i$vHA=oY1U&%Ru)?1fvuFG|iDc-x)a-7csU?PEn*#;; z2^NIB3|lnk5&%IrD9pkT$B!v4(uApcJRFbF81V65up7MS4?^s7EGbpJp1#VyqOypB zSKs6<2eCcXp{S#_2HOw!VSi|)6{LS%+bav8MRd~+vt5jb0$5{#4+MK7$)WKfwsN_;PTbv$crN;1R!Lj+6N|l$- z^w5KZ!GHxGrAVal*}Xv;AZDX3+yjsxC(4dY-L zg=~$748V-+{^lxVLr5)7bkvDnOv4azuJ<&bc|@=_-EVBH8c@5nRB&>_tzxx$^Z|*f z@t^J;0xB7=w<3IeoZj5{y_mhmmU!*~U?^n*1{j5Zz>kkC9@T5T*ylIU8xyZ->~^}_ zCqTMd6M@4Y4oVpgPARDIES=8Jfjh@3j)&*PVjVItGAC(%2DmY?j8NMa=hCh zjpB#UWA}ka(?d{c(EY_Ur7<_wD1XKw`8mFrszTKFG~m@(-sy&gTh|7Wo*EqJ_8=YC zhuye;KEj!Vwsz^Jr#~-`_QJYl{uEbovqG=Sj%BvcQB!`;@MvazP9toD9a15y^7%A_ z10?n(tD{H7@zVarm_qfqx8BOYtHxnydU6q_u`a^5ueC@a;e$pXDN;}tBj&f8sp9?D z&q7Th=@5h=Ur?Y{W(-m)yF(|7wj~XDX7wR|`9YHiuc5~98~REMt3A~5ZK~QriW4oH zdpM@1WkiaU4pm&OrodVnz#MeYy z941H(r@Bp7IDBH9ph!*;8Yh*g)69^6>RF-Xq(IAYp~4nV%<`AoQtid8wL#{QQ+<2r zxSKTHC9c&e5{kV+MY4j1YOxIUEjg)jFtAZ`2A2~4gUqrRCsCvD->B^4eo>lq*EX5J zdf-wExxZbC?heCh^a!<{#B)y6UE%@kB?Lb0AnKGMBSyCfF z$n#W~axSsdq#>bAK_b8T1)0EqDexCx4!;Z>1xqH#s`X_Kg=L$`KB6%sI!epQ>hxDQ zA)r+M9AqbDRy`lh=2`h$I=!OxybkRmvY&9R=RT;HSKf?N_z|Br>U%X%c*&g`s_~Pm zqR#{MD_(dVW-|`8G>RHfh3?-pB54HQJf5*{tLYYc44$n$i+OPh<05{4p3@?$E-Sk6 zWzy8IbrSo=4}2#tEAXV1qg=ouhFmhlrXtg_^i%UPUTxW)Qc$;|%HW~gf_(z`dE8WA zUgu1ejxgRq@)7u~2(xXXIi^o@yha{ZXCU3iX+%UDWhKL@ zCI{cV-}1=<+IMWl3`j|;IraiO@Jvv&SLal>6pWY$pWONwT{tlho{_N>szwrPbEd`ngT5sr2d!nuG7A zdJ&!fdi`3H2q^qmS_EK4j7fEHJ?G9Nq71G)yXTG^=HYs$g_fe+VqV~WlA?{Li8ZlQ zBH?WNB-V|agc2-&)5ZXlq|OO(MQ+qDQ^VJ>|CpAE#0Hx$x~8RAe!M`vYoU0)<_WFg zDQ+!zXH7N~KPiY`EV4zWd^V$8j^{b7LEZmUE!40e$MT~st_$lyVB4^nyf0p@v=&Y$r*H?e zf^YSR->lFsXNyXEM4#&|Vl>I{YIRmRj=GGIQ_=-K`55g?@!Afcgj-e9fCKM=+H~MX zGwj^!rz;vlS*%;39DK#p@f1dCeLrF7cuMAtU=%s-!IaaBG5zuQQ!E0WbeOTnFCH9@ z9z#X+KfIuSLOTc8r+W{-p`s?LbhN+skjlkiqI)vjK7`*J_f;MI5AiWr>UzdVKUECm z^>s>mn&zYz2#XPxaIrI+9iN*NC28g!teq$uMR<45&KQ$hD(`#URPDlJr|$rZp6d+n zqBL=trTPkc-$7`v=VKZEksUAQSzn83EEhMR`w?J&@V-rp;I{&w-mX}RAzYULr%Q>8 zqUO6mLGqNaesVAx?u7i=DTA)ziM&!e`1hWOz_RSEVJ*qU6p}gmgf=Tl+w?N@fQ^vq z77?MZy$E0(Uk1cw&Cvw*!CGHp3s6Ggm@tJb?|4S_&g*JO)!(b!zpQ-f&)0E`reCg! z^r$F*rdc`*vZ#gpI@0U14^F+XErT{tES7TK7HYRDulv;iNNO38bcHV<-jwaCmOPFU zU_cusaXHXlxs-WPf{VL!;$kD*Bv@NWjwkf>Xylvb)!DT!EK=1`f%FUNbuEYg9UKPd zCCUlSOMttayLztY7s-~{g}z12o#d5DPDI>)ijoKD=%@qNqg43`{Z8j;x>4GM}qx|%{;h-97cv`1r}Zc0QJ zuB7PHKkXHEr+)>VU#;l6J)-53+)c%)N;mzML{WF8>_72MRC%AqQ+c;g&(}$}z#Y(k zOpBT}>U7=usqA@pMV8}hJc{K*Y!|FHlvpJuU+fkpY0JJEEXqPMSD!f#GJLI$R?4=| z=BP3+*~xnp_KZx3`U-a2Wva#JHcE0mdM2VwG}Q%pv^P3jDacqTEXY#eE=(~(&8X6 z7>3~!`&SLXg&|iGYYz+w(JdZWsP*{^oV@BvC29pBZ4Sdm3ds(w2@wVfbeZ{|lRUDs@B!Hd{`7W#~9 zW5KwI;e_E(uQF4qmv^RkD;ln`iCTN(h-kDs6xp93HLZstEGrsbqsaQ?MeFwzo|Qea zYCveU8>Mqv3X5+8n&A(|^HP<>!Q)SQL#$puj>_z0Wh@7Y8K7bx@&9oMVgi0SP1fBf z>}BqMyqM1OF`19e?2pZV^h~4eINATED z!%9L5gw_&@QGtUGh9D&(BuLj^VIEsm#LMuI%a4#fp=A;u{;L*mxBNLitr!u-HCEK>462%TF21-_w@$>VBr zJrv7W%fFrmDle8*DqZS~Dt3Al*8uHtVs>|R`wBm7YdbY@5k|v*nyRRl6q!V%Lg+nP zYq*u?Qb`MtCVr+<-klc&?A%{6oJvbm(nA)RvD?EZ&9?m@YE;T2xmTu-pZ!5-=uJ?g zPVjhi3FmZ&*>tER8I~#4@A-O4jZC9jeWwNTcqg}E&{Je}Mb-N->Rl0K$opeWX7@l3 z3!iG*f#qo6d7e#w^W)+Sj?&Rxq9=y;;n#-{42vm{WN8%TBt#nX!bkF@a%ses8$Ne3 zThLN@=L1A_k~0M?H8C$lPVg1{lH@mtCyNgmDWV55W^!JAG?UdIWk;%- zUxe@Fu`^akeL22 zp*CpA7TmH3h*moe`$f?^wLQpBT5JuJ3#7YAn$)Ir%iy;RBs2EqX5;Fc4KpY;_o1L` zC?KwP0CHu+1d^NW!|_|kZkaj@!t9=c$2Zk~45MZxhF^CNwc&1}Hk@6Q1i4hw|5XN` z;6;bwOj?IIM6= zdAN)^FN1Hk+O9j!FLhslp5%DyW;*AVrxHW2W^ zJ=~0-9G3I6glv;~sSOY@7?41t`*D^hp?ialf+0SS`&Z=28CO2v;IIqW90!}veoR?K z1SjE*3Qupi!qXczC*GXkq}2UOPOL=VgzTi$KTvp5>i(st`c0h$A1u_gL0&eYRdWM> z|D!cw7EGMxk$PNRCr3uV=N|}6ilJ&(22<*8g|Kx-k(O~#R{QuP^+rHY`*=k`t<^>L zpNtC{;W;CZZPL?QN;t=`ZgGCAM(H@67Mq)q$3IK2q2O^Z1EIX67e8r z7%dcD?C>PArIp)URn`>iQ19)uE8&WNRgWu{esf%F>?!#{vGkh>XoG77Qz_s{pbYlG ztV1beg1K5t6h$w=X>f1Y1j+lqVEg8H1!L7lRvrPn?Kxr{K9=VwAyujHji0DMy@V-C zqN=S!g+05!Q=);!W`kRPM)axD#;&(3X2-jD?U%Wu2@_N z`U?X(33gaVFMOO$Z1LyPG|A40df)8t!wX)hHQ&ssgdH|#l1;^om2`5MsBywXbSR=OG?=bsIB@8KN)Dnhgn9^T!IcO0p_a!>J$J+^N;^W zwTJ%)JNmn5tbEAEte1kVRVhMMERuB*#LoF{>A`IjjiP$xZ<0B@c&X2lY{Qo$8ap;sw-LC!hn{>-Q;I zTS}oXZ`tpY_E^=SzbZv1q)xD@2w~K(u!ZYu6RQhHbeZklTUX_OViLv7V%{Q_Xd%T& z+cGNkDK1$=bIOX_L$pl|%Oqv)EXb8>&7<@!h9hyGb@glPKRFZRHG@(gZ~r{+5!LhT z@6XCLCKD90$aTT-=9tZLi*H0N;SO7GJX&Z=2}F*6Uk5he^MS3UR+Xi(*;=fS;Z^Go z#TQw2g+p0yJ}Z-dCEX6o=dD`C+u9fp)dLs>Mv!e%mp0v(+c!^d7&O&x>k)5a9`6O7 zuMawJ+L5wVKar9XG{7&}-w>{-N;wYB&#Fkr7(Oh^#n|3M>`7K=|A=-f-vV>aPCL2| zw^`QxO~%Xv9Q{U9Nw>jVC|K%Nm->Bfsozy?N6ZDXsN6t*p&<8#J9b%u;t#L6SyXS! zKnF(}2#6Mgi%)7-Bm!RWGo# z>a=M3u2DEe3`_~8fFtY=N6C$|;IGsE)$Z&X7d-ms2Mw8l0KjnlueSKV-8sCPm|pO9l2r8>Lm5+JVR+BQU@4f9G~0;nS@C1OIr`D#~e6K_=DLlgy`dWjrQuF2o=fk@#S>tTKvdr+NKhy+s z^VcDN)fucvA|i-rrO75{u-W;any6I*_&NZXgQ_shIo$~f!_G-}uFNaq?mdwbG!Ls7 z{Ii$qI2+aw)`~~blCs_kQr0F(D@vFbt(`EqPl~=sIZnIl9Kw(M$a`k|kIl{7kAu%t;0b;Sd_Icjk>1p@d@YG0taB|q0 zOa1h40e^x7>|ITfz6@>ToRE-=M~;!7VE6!z38~#BDW{>6p@4}(z{}9~BCQU4s^~P4 zR&Z99GfciWgeoS&O34BY&B(G#koaRA*06wl&k(#BHq{BaP9crW&Q5)c0lQ0)1e=+E zOFRa@eouM_;8Xncj}2}P6QcY=7fyV` z3?JV+dmvoDbL{TU!KcwXVc;(Kzp#J$_d$|NM>?D(hRcKth+M_j z*aI`vFD$VlxeNFojL72oS#l}z4YMbIMs*7ml1?#_qQxd1;fGg>^Vo2R3j*k*y51&|NwXZx2V9h-{AG7H1OPB<84#GzuRglSro5wXmFRnV;9 zDAhWG6*X2cb0EokT*j&8@NY#apht#v?N(8bCPg^T#e1{YT7#d z`s7;**Yy+lovGv!W5ar1oE#B*!@tZo34JT>2o)p5F_C`gMDZ@!a{Ng0!)%jm_%U}w zm*)?u!G>`yF@Y=J%eCy6aoAgbOoP7$iQ~iX30wSYxNYzz-Rtw~kDUI#^T_S$+fFCT z^3uCEAG!UKBt)3Mq$~1`$kUh8fk$E78zBDnBD`I+U-z(nTad;N##ufE<=2~Fyhkgg z#93mXQNt1^4L-_HX#hzAx1p%Yn>?)a0kHu!j(^E=lo)oW8S-pekH4mW)6|Zfr)A`* z0tFU2hwh6p{vD^`qR;aFC33l#ZOe+p0t&am{GK!|ID}jWP?+2zqv!*3*5Lb$B$?f% z#xu7aGmpzXWMDkm@7w|QqNZaae?qWH7~w)89xs9v0z3pWaYnUWSsimGeXK%oJS!^Z z%>*j-x{r_dju-~0QcjM4PEPTI^%xi;o+T|NGLvm$Zx&;?)8EfVSstC@jmeo_^Lr`> z5ep1{`s6FC zf!C!r0+w!lezbRbXbrZM8;;@}%V9D2A2;I2>_|;5Ol6AJu?W!|`{ZT<;sb5u67H60 zNCMbxZQl=9rLW)zE7fCD8v`#Q(b@%iqZ8|wFm_6hp<(0ytj@FN$ zdPG7ja@yzg5W`M?MIjM$49KTu>2@a|{eXpTJVlnHCdmygT3V-(0^_#XXaK439^ZuZ zj1&cd9LD{G*D3xYT5f3Yl4f;j63o0}RZ2qQO{Qd1J>~9|C}V zQ*$s9xoj}MLLttDk!p)p8>A*J!o$7WC}FBLuN1C-Kr4fP{e`Gl&N>ai?HxJ=(>EQ8OfhG~B^~vc8 zoH}|v;rf;yt!3y=EC1hTNr)|=TNtQQ0+rc+q@7F)P0r*xiHa*^)E-e`qRTmb-tNb{ zKc$6LsMM?)-1G)e*yZ3D%Gld=3a?4!wkO+{o6(?){3hA!ByUB*y-s$jCjGp!UOqSJ zsx%zvEN6P%m8_b5`!p$%>B7aowX_85_Zvx>$yWHI)9X)3Ey_h|w&%hYM_iUNpQLbq zs0s2;(RO31U@n1jQbk-Kc4AaE6Ie)qec2WLo0?cWh19;lbSCl-NoU!U4X7nmb}3FU zvZ(pym0K#(5u`gnKbn$1Negu)kYCnjM&(8g4=)~7t__Iny_*9T+rrF+M|Mi^m^}C* z1+FF11g=1x@kUN&Pt=5C4GTs*Q6@cq<8Zu`CPO(%l0mfA->t zENs%LqTc1(W0%6RVVKCoW{xK&b0_nkOCBOP-v@KiJi}vU6)w<#cPzeL6#n3U&t9Kz z_(!*^&7fuvLPM$D3g=2=bxr(}h+=^nt!JOkq~A46yGSy8O*x=d5p|M%ome zbf^F(@hk``)KXj|0ZQ@UUxxsXo3N zX7=kDY~|YoX&APy^O%{CChhw{i9RyHDAH# zerExMH#P zO^%AHWh%EkUc7it1T`4ngADMRKjgdfri|MZ+*$&bZ!^qyspFHB59LmO%2Vyhpvg^) zyj15YmO7jh(B;XUkp;9<9pR_8CPoUnR0QuBP&0{t$ytIPLX6EQR5a(9x(c@l)@Q6a z-s2RNo1#Oup)^9u5{PVBC^i}Aw`?jWfHj!0iN?mYpl$E0<3IcmnlHQ2aocu9kHzI_ z=9(~~`3K$~U!0%+>g#xaayHou;VmthG!{yPm9ZQBd9-*Fm)9`=ER9LcMPG$}7G4{ zK&IVkKs)YE=MEkP-`VT)s6D|+2O`MH^j^+^1wvk(avlh8>GV~z)*26pgh#-VSOySUI0%( zu)i1wzx8UuZk@+S1_n?Zrtw{tU#W7qrx}1N&FvC2#uh6`nv4)9*RdcK|23{nijGb| zyL$7R%*XIU-dB4zKAr^&e|Mf&u1*x^BxDrmwXNE8B~14aE!V2VesEH)^-&d$5hNPc z{=>uLsR$l5_4T6)`3M%3(ZjOxRTlQ+GV%DhWBnJsD4#nZQurgMZiAsH>pfD^ZDkPg zO|azdHe{aVrOD$Bdj#m2t7KUNDLLgXGfZbWYM`)DF){rh*=eHwZxnpaqCYu8C)<=y| zOO(NDT<_d~^mVxrqyV9N)UisrcuGK=K8<1UA+aw=x`enlnx<2*CMMLVI%lhbtPRV? zqA195&|(w}cD;4Ke}J{%?|B@HSsYswM`*no(LA~7WEUI3Bvu<+moCW6_!(uaPZ?x_ z{eZMV6B(oqd8xiKm7x9jGa^}^NYJ+a0cixManlS0Uj#g(jSbKSzLt1M;=qaAG<8fA zz43TP9~+<#djIl}1VU4}X$m316rbNbqmEUn1MEQa`w>iWf1d7FFnvZDYg5KO38pwx z4ah6rs{zJM{?Dca~hg09D=)w@+`Unofu`LVX!XtSr=^3vOVvh2co%Fz5< z9(`qH(!{Zt@sou0UBo)7Wq-ChT$x*t7=WDUhNO?of4hH(&p<=AEqOI>#i3+LoVVF5 z7wRO>?>Stm?^1vqW)HykeoY4n78PUE0jy!|^JgbF?u&;bS}Cx4M|7<`NYHHrPT^#r zYZcQNod@ke?$x;MVL&zQg<6h-E=(-IJLxtDpb^)Q+-<^BPfm(_=5Da)9&Ht zOdK6fe<43JP71l2(J8)v#ZJ{HCbi1g$rF0~B)6c!dr-=D_>uN=1>{V$&oej9fcs^+ zwpu7%3E-+@M{G1P$RZ1N1;uO$ff%%bV4=@g+s-nYrMN($4bFN_4 zH^<#GWY6K;pHKG=_D*|0H|2qXNRScwh)O~|e|M~uaUAL;1LM9&j55SOo>Npz7s+eU zqk2wTY0!N#=4RHv9`oG9ods;GE-<(1J1$bg2zWya!eqobJK7kHVp{!Z&C$C|uj$9P z3G8j7q_A8%s(lhAidHlSC8WSwjAoF@PIKze>h0~mgH4{o162q!Hl_B@;>i{N00gSd ze~*9dZO#0Fm^48RTf9)F8F1#Io>lator5GE>~M8gisdxhkdRZN?j+T2 zZCx8eo4nLVUg2OlTrOT&PL}dEsZRsnO2N1A)4`cNxQ-q8CL5(1y{xE(0V!IH^f zHD}A~7Yw3ZHI8pfG^fx}KoLQd)qdp{3-Oe}d7u=OEiyRbUs5QhV+{&FuP|Q53?NRS zU+3wR12;!eBtuKmpUcJAP&B}<&}`ICbqz?v+|Q4i=$8@$dfu2L;4*_9e{b$XD8K^m z(Ai7uU!^IBib6Wt&>qzfKYq<&au;}r=WPP|gBy2FSTWm^l+ z9RkbS%p`lcv&UACGMXJfnj9Sjpm%zx!fSdKV5RF;c@p3<A-i!2qSAtx7Khi?# zi}*ihcUWm>lGCqQ+RWz}E?;avc>u zHp)qYSCSuC!b!paf0dZL)5cdG%3QX^O3qs<>%+@sWiCsa#BGl<>Cgdgy&mz0{KJp# z2FX&kuHg5&A28l8;Xhh+%Czk_3Qm?KgPoDks$G-yNB8^F-W?+hW=VE{B5^4$VUXs13L#Zya^kbJ{1L!Pq|or@&KnyRUg@O$Od@bW)~}lf z6$x*z`k=7e1?ijq;D5VBcf8H zd}Rdf7I>0=rocrKY@7baJ0hoo$(PwK$FpJzuuS$a8$k>|MClMTS4mD%%==Nu_V;80 z7B~5zhX#VDtj#J|3(VVn8En5#Skr1Pt&X$F?m5;@2Jq7$mZwQ>F%B6;-sPl69lLSf ze{NPb?rh7=F;~9KMgt;#iChN1$a=9HCc#XireV6+&qWM&o|UL?*}3KJOh{(4Ywq?o z=FYe5G)SaCOJp(-|Z2T)~|b+&&UK%UoHDl}>QSoHAu4 zAsGZJUjnvU=yiC?y)qMqq+vSB$ErS5f5SD2Hz-Ww=&fGvWoYDqo1zyf3w&<`z>l(6 zoSXpUuAZ)<1SpG!ZN;$`Ep|>tfI)MbpLz9nkGo<*W2Ix@LY>~+{H9{jD)I8Yv_ls- zwzi_#t1-k~7<|fN5Ezxvv#$2mxo-&^Ril{wXeBTink@8_R-3s1_7ZSeL~Yvde=>&K zjw*i^6?sWAw16a%x#Z2WvgQJj6E99aL?Ev(?IK~Oc!_@Es?q)ApMF0j!|x~MHSMPp z15ZArpY^2~i8cDUH{janA}$y29_V@^-14`PW*rL@ z&JyDoU6*@lC&(_$3Ga6cj@)uge-TissYfKF1k;h?{fuuWri!tG!T*p^S`rL}(U_PB zDIFD~*uo}VFmU?8Rm1{&5KUyxJ2fcrro}@Kv|>t`{IiU+pq%IfE$^e`pKf6L_jIs0 zPU2i97RTR&i8oxqwPg};xEDDAfi!5-qEx~}ZXx=aDCtLc?vUp=uC(x`7B^f9JHquz1XOyixy-UiDG#)rD%eI?Ie1W@3XvL*kCo0Qy5Y zE+e%;q2_a(!oO*U5Q_2%N=9tkCmrtK`_#P^yRO=GN`twZ)M+x#eog#+%9FQfGr}UU z7tvog7@I@pqGQ2I*ln&yKmDpEsX|y{Zd#?RoRIELlW|E|s+OkQe^%Sh%}tBCU!5Rj z2Gg!c>r#dmSGLKkGQ>^b9DqF^cL(u6ZRvnb8w-UDJZ|)8CjKoVMmk(u7APl?i`WQP z2T)d5-3t36Hc{57ZB`t+%S-f}$WqD*w&zJo5fz|YP~#xa2%j9C{1Dax4wCCpc8h+o zMG?q$NzIgj0y_}#e;tuR5)@3RHB1)uo&!RD2Q_`19n$nMWYq0(kCFlYo=xgCeFtUF zS=kp<_c>#C{tGBa%v*2he=_1REOfMC7(qS{lb(RvRxzLK^{ABu@gr+ZKYCFb_({PL zI$#w$SKa5DqzN!m1NNya183Mv47jYXf@^3%IY;HTHD56{e@`#Qm@d+bX^mJm!NFLl z7-NF?Cn?5c(cOb`>>sU4`sR2e%A~*o{&H9!`^7qXFQe@Ralt zo>I55ol4`Lf5K};M;vTNQ-uz~fScgD<6vhTVP6~-G(W094*GInNSqdCN9(Hu%Z=7K zEC7DB#|YO@*R9rWBK>b(#poPfMJX7T+LJ-8(9YT2i6gTkl1-E@ww9%dhD5X~qONPK zEn^V}GaI+3>nyD-b7mM-8>^_tU|{B{G6c1NYOL)He^Rr_(494>{$=OJs}57OIu@Ae zVIV_L3UV`G$5_Z1dg?X5EVhevZCrkJU7JS|>uc8P}V<}NjB z)}g$TWK=U3*O9Yv0!2LLwp&cr2sD=tb8>vcG*-r8HkwB$=pVGYDO4&dfWnvGnv9cSdD zVX=oc9p;FAqiHHy+lNYHKPinIj^R0ezW>8%f3}K?!xFC0i6jO{MY2NFLb>6mR;L+^ za6KJKn<3-9Wo-A3#dgm=Y^8;GHS|wg4qfaR*P(57KqFWe8Sz}#fVN9lG>+a+dL`>a z(tMAJ9S4z3`cHHrvpm1zG45{sDH46Cvy3Kjo6r4T;HNshqZje%fz*dgYg!+j{)+lT zf7UoOGbGfjHyP0K-6`4+r3MZ6V>0-EI*VMHbsOgWb+^~+o*bL7m}7hvmfcL)<*#h; z!rAeQnKrwh+9KoOvfvP14BtQ$K6f+t^bhu*{Iuw3*AM)Q`t-C=$+XYhX-|qeUM=$E z0th0>oh<{(YW$zVCvbxcrZ~gTARi=rf0nDBMgW_e-WX(DAy4g1s~m^Gz1FE_Rv@8y zdH9Adl+LJ2PTegTPXQxb*%-@oPJyi=nLyvM#TSufb26-KP|v-ni$>gTp?=msoI<=W znVuSs@%(eTGVi`y&gQGL=7W$M=XI8F)JYwL55IDngoe;fPf zdX`w?wc6oVCTDqiagpSZ`^d^O?@s(&so4Xu*Vu7+nV&YTIr7TX};2eql%XZ

cy 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 Q1DE}O0UHJn5(5AL0NhTXp#T5? diff --git a/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.miz b/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.miz index 3c3d95c9710ff4a5bef2c30a593d2800000c9ee4..598b65f8da4873a75bb7a5cef9443bb1126c0a86 100644 GIT binary patch delta 688 zcmV;h0#E((;|Rj30Y6Y#CYNT$G-jtBw(0K^3V02TlMmvJxx6Mrsjbz!AcU2obj z6n&;r|HGAEY9kgtv~>~^4+vO=ROmF=!?aeFNt|FQu`Aoz%e4PK+X-N3T7mi!#rC=9 zoO`c*nfMcNkxC3V?RFa$4-cyuOn)uMi}?iR%gO!E=?qru@sBmQ^BW*=eH8>Pq|^-V zm|%(;E(NT4!L*^p%YP6Cz5Z?Qw)f?E(Et3kioCwcWlVF}P#ZOZ=evLm-AkHqk<}&; zM3Kiu#!{*%V`jY3jvf;rj%qIAyi6R=-+#e6`cBQ(Zl^cnU%q2=V&&5$XxdmI(`O9fJbQla&aT4twYhs!xWlmLbe75u{2M zRhjpdQ!-Pu@C77}t14P*MX1(H8C-QFx1CBY4{nNV(u(quA|RgBChizVAb7q@@I$T_ zTx(n5z3U5X*MFgB*>3Xfj4LG-U^J0sp7@SBnfel^jtRX(UFDu@*SSlo;51lrRxw)j zWlnLm_V=_By{z(;<~i5qNU~P+-@_w$9XYbEFjoA<=&qkCT~y-^S=G4kp*w|eBB4g= zH~o^+*w=Dz*4HZ^y-YufPIoP@&&PNBbl$PuP1y~znGndhV2Csg=KVmPEvLaa{tvg> z>;Vo#5AdzUNT$G-jtBw(0K^3Vm-jCMH3qi2GZ|yQmohK{JOimu0GDwv0#5?~QvjF4 zFak0I3333J_%H%m1MqYJmsK$WG6GF|mzo#?9G9gr0xBfMjQ{|5VRB_?Z*_BJb5KhK W1^@s601f~S0P+I>0J@L>0002m&pEjO delta 107285 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 xIu8Pq$CFwEArbn#ER000Y7KRN&a diff --git a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz index 50a2d616a6eb275b9139410d433db11b6fc5d776..e110149cdaa759b1d60fc6dcaca1694b826fcad3 100644 GIT binary patch delta 775 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�&7PFaJ*l;onvZWADgNNwZ) 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

cy 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 diff --git a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz index 2a269c2f27edda55372cb9091691e8239e4b6dc8..e441823aa683d68cb9e6742d0816c98c450fc949 100644 GIT binary patch delta 866 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�&7PFaJ*l;onvZWADgNNwZ) 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

cy zMFN9Tx)PeeH~?cTU|=o*TlN!7oW$#^&s660RR&O(Wp+*{(+P*fjPTezIot@A_<^BC9 z_!n4O4jWRgUF+sK5MF`)btC7T;ch>(0-cD^Z}g)^3q65`hsllUe=V;8mi|kGJ~Ci> z@R0K0o1??i2=-r{y8|Nn41UFO_W{4M?7C3s5Ez|3oLuX-OYsOlrQDRuNxXw>0!bqs z_rNt6AZYNvuT_!K2{&W?i1r1V0v9sPMA!-=1=`&eI`kw4!po)w!qJPC`T-($3Yd*R zd?wD4)7DckO}wdee>FmK0PJT{pfmL;hK5ZF+kZZYKyj{4XK9gk)K|a8`6bLZ5#(c- zM+f~C@$X;ZR39WG*rEY>e-gU5dVqj5;if?Sv(c!W0UmQ4>KRo68=8a!H#}WnodJUe z>cIw7I>wQRK}mYeZR@v*NgoIivFC}Q1I=tQNTx|2#=(*9e~`rWu(274X#;Z^l7Wsq zPSW6eVxQx&>6`fWI!ht>t@TIq6b|<@aHW<26VMcllm{R}L_x;zaOO$?b+jcyW#hCA z^uc_Xr&)cMAd8}>@F{k{A56x3V%jD`<9Pe=^>oHDO&~MNFVZ*ys0zef<4F#h$r{}=g5@acO}Ly%tO_U4DuU||Hd2Ad zN#-(e_h7Fb}kc;z-FK`pkeqd0YL$1 z=x~&d(}`xPW_l62^lqJ*rAK#UND-J*)^>=&g#8>57xlsK$;GcJ?)qQF#dX>t#0!Kd zbr3)=yND;F*#%Ax2D4amUTFQh+(wwdX1J+dsIk+C?29*9HYjB{SZQ!KFe25P+WR$2 z2liCCe;kzIVm^b6)K}&520lDZM?eQLFa{n>TKuf-PHvL|chm`rOOSU<6m|^&fdrZV zE?~T{cQdFf=qbG~b|}a{^w1f`mi#+a>AO=EQ9HiiCrd^JV_FOdgSIAoZ6#SW>q?DN=Zt! zq@`)Cq)16$Nl;B<#p8U(A(URI)E4kBW8e9#25_Ebqrl4O7W=0Bj(x^=TaFxs4ryNZ z_V-V|esa|90cUGDn1SBXLTQ@W82Jd)HXmr$ZTmXr{<)2v_;ddY zf8oN!2IpRqwtQp=L)wJb0Bt&PLU|OXbB)jGQQH^p?6!d^e>?l3y_HTn``o1E>y<~F zoTSxiwOXxKyDN|_aDpr9^!prRvLY+T2{Y(f^a3$9&Gf=1XY z_StnIVOO1(& zJ|+ACcIm33o0PZ!P7f77oHn$2}M+VEa`or3`6e@_@<Yigzx^!(&d}me{_VrqCZ5# zgEjE5vObvD3H?rRv>YFHquVZ?c=`s@PXGFjfb>ZxTpKGK@~4nL+w`41F&QemZR!_< zPZBj&00{f}=LS^k&vSJ!V7W&(U3a}hY_LI4J%5TBPyAO%vwu}B-}K?@4|~I2Z?J0D z;8ojOx$6w}WmWs(C75L*f8}?GYH6@2bjJXTpj*b~AYcX1KI|Qh+{tSIsXoGl28V1O zewNf@SDn-Mbi};YDhhKLKs>-q7wVpN8%AuFxZ*Q{8Xh`xU7k{Y^i~Y+6TG z+lmddNZNjra%LcHxkq&Adz)Rp16AD%hN68)h6ioM5Df0k+K`dt( z+75$6zHm)l=wM-tQRI~(Tq|4&uVU@~@@kKwf0$Vnh!FNUf2g9DN?h`CU{_KZI*Dm( zsa5HgBo3SftBgrXoS#$~Z`Ow=r}KWm3!M?i@ES94y6M^wN6cENwzY?)^WyPz2{?p1 zjICf5NV0_&<=m!W{sB%fZNZyhk6Rs)vz%d0>(j>lhjlslU@*7o9O(x_<)=HCZ2R{Y z$KTkFj<|Nue+*)yIm^b8!BAIKN_QZ5nRZiw^S-=;ys%HVq~meUmkD&2=%EICbBql8 zzzgqa{bfJ+!4Cx6v*V+c$i|is1_q)uw1zS$hGAGBl`LmWaj*fsK`G$HcxJuiYLT7l zZjn~Fi_u*kFGJoq9d5SX;@;2tqyD5n*njEg&F)J6f0wTBWS)6yRfp)e?S!#Qjj*x% zn~52Ld?z};z8)T3wqWt5zMG4Jcp|^duW_KN83~Jcx*WHX&6@?i0<&5S-}vy)q(sp( zoury^LRNlslRaPR)~KvEo*?D|PYn`PR+8Bkavrq(RqFKQVDC;3SMM9!>u=zmOoa0m zXge2Af46s^{`l$X`8Lm-IH>IY=dvP5lp3+V-8D8I@!8?C7mXo5_#Yo~ILUke<0Fnt z^27h8A%_xE2M+%R4=2mVPo_O}P1`M^nzCN;zX|^%`8xQw@LrF(KSAU}jn*(~f1*JJ3J||yvT=VzcGckRSB}aLlKDGB9Xihz zB*)LcJ$Zh7d^Q?dDUzH%e|&m)b~HLUI!=Cn{F`&TX(@CR-=kUaF5`1)IQX!|h;6^; z#R9EK55j$rPg&Z64n~pDtA(O5`tZ=D(+cJ=DK?LJO9Sv)vp0-Z*;`-bfm_9Ve_D$U zkxe)xw9{=n=sn>*7dmdQwb!ZE1F7X>$Yf-82@=nR=(lr@8Q4iui1GA7tkj4KbGTT5 z9>Qk%SqjdmC8#3BtiLB}5`zmlZar=N_96eRtuTz9?AzE@;S9|lZC&A(sI|GCip-W= zXB>?6O6#Hag1@y_*gu|Q80PVNf4$m|S4_yVs2^NKh`TV39t1`Z72f$co9B~UP5uf+ zy&0c*!8;SZJiyo;@S8Nbf347QQ_;P|+3@0qn1Cp#irHO)uza`eG`wh2O#$+%jYbpBqR$e-VzTZa?j| zE1FM!0&i45epO7Umk~{~JMY2`Df7m=>?T<;#np-#uEH6H)kDSE{C$$oCk3dxmQmFD zXAbm&vjPLITyW}ZzV?dqM^PPFy9yY@Q+%n8odLs>@ah#ke^#HeY!VBKx7(M*1vbii zGRf$|s=`7#AJ)xmj<|2|e=m~}44pj+=!U6dM-{ZVf^>%8CHhXzgw)M@WHGo&^}!Qx z?gRZY*nx}#rng(LPmce1{N&;se8g7PvQeBX>#$!HRzZ^e1z0;?kv3wi_8daLZTzS) zH69cxO63|ly2l^t;L!(Ou3FXc)r3l?y}3Dk{M+Lv=a!Nhm|3BAf4`ivXgmDb%l+82q+X8H@`DD%)FNSYP=V+XPdXE*HftCD-=p4JV|v_r=}058P3B)5{V20#kCjB zHIrH5%~uybNi23hi8|r?ce^11wp#6)VhsHiTvIsE06!tWBp#8}e^Sr)u=XDkkx80N z(<{l@35q1(4=`XDUeM`~tpvQttk+bE?ji|2nIdrX9euvXe`MQz>OA&L%NQd$Qw z_4~^x>eRZ}n!X*7O*{^0)dLzN`XGvUkdX_EqY}_q)x2M{wCR5>s zzf*&z7uX47=cR;{dB{pOj==_!rPYE0M7bH;XmTNUl9-X+8YumshLFy>Z6_AKPZ@Sd zv_*=6okZ#Le?v;)zpf01FAU;M2Gq>#beFru>F3+0Bsn)XWfBH#reZw|7UbAWxt7D5lFdf;= zh<@b+25@c6;B^e4;_NzVz(3O}kzN(wNUMQ^xR-+gD=~@`Yt=UM$$HEZ7vjMRWIBLi z9#SanbvgiZJyI0px|#x5lX>cOy+il&PElPhK*Eg)ZYh$|R7luYC^c3=DKa;Rg)>lD~ZK zi5Y~7`e=TOk{bS1Ty@V!^(l0}=E@NSU;{WR=7IdjI$VwiDcz-A6j5Thexy<7w0nxV z{OqhWJ=Ja1%Fe!O7G#o=U)5LBd?Ouj4PPL-f7K9ATZw-5U=V%1Qckl&-?`GZQ%Ii` zKv>3q^BWPd!5U8J8c>*;*@I9(X$8M;s{~|b-is647#D$;X};il4LxN7`-@-a*f@V& zGyO=oMnG$@r5K&b(1ahYHp~$(|E<#ytz~O{F8WB1Al$^>q5clW~JpaUe~S}+om&QGarEB!S*o#octIfB5ks z)IJp3&s9HEtYV8ZR4kPWaUl^7jCeLmB>mpn&eZR?mKiU8avk-o4)S=&9QQC>`p`!< zCIg^0hQ`! z8IlCKZf@NTI5Du8aWBQ?sQsXg47+hUp- zONL4=#gfG7x>G-VquA0&3tOWR=_isUZh*NdtP*2;5*0<&6P|*Ijm}FEd%Z+g!%Gy> zYVNcZ6WcYV$5+is;eBunR^|j%m@4xs=s}x}rffbP#*mt&H?>FBTgaV^V(^5}uQCE$ zVY6IiA(?T}NLeoD0X3L!f7H02XxOZpA)A3NzQADH?@*hS19g4A zPHG$fj(LYyf3IX8l*>Wg7BsDA-i&U& zmf>PJ5?LaR>>=adwF>;r=lhlMRaeFYIU!sZ{0p(kK?oVXcg@YcdW|5U_zF=e-ff{c z>}^iOQK{~DS*gEppp@fFjVtw1K0`>iXn^aR!3zJPO?->wpb}=gQk$aIX?>2uu)g~B zs6f5g$bkQiDu)%)TvtYJ1WcjQQc3Wt2s zR{kref29?Tj4K;nEakBDSp^x6{hQE!??*d3n1-Y;K-A;;8%TeG2}evn5VTx0kYs4{ zC8|f$Y$C23LYXo{hyDZ;3wjCL1RYIZdDS(I$ zco?{X^B4R{^N6>18xZiog&u3o%QooNgQZode@I!94*QjJA79C3S7EOp)^O#B>-UZQ zfyZcg3gp{?ls3$38Jz2n51(JW;3v)~RXiX=X8jbtWhvRXFH2a(2&X9NE+i*wJ?tp( z8W3fyKfwT@s=!q8WNOed*3l<9cJ4+pP!Ik?Z%?qhi);RtLNa@_+|#3mR`%b~6L6MS ze{cOdoJTs1lBf$>pNF&Mv1i?E5j|WcA(Z+OTSH5EK!FVREZu$&h8eCIKD(+GRJKvt zG&b2D;yJ#&bhmKr?WLVFg35`ll6e^&KNO#oFv`-pNNnYUzVN^|)ILv(n>lY*es zso!q~^xpx(z~%gM0zJT+E~n_`i8Eu{)AbSPDj7Wj^GL+3e-IbK1$hMF|2VsRAH@XZ zrm|QL^OBzpIS{U6$@~wqMZcT#H(&^?@~xqK_}y}m;s>}+zz7+8lr2gZs%_K&e;R<4 z_S%qv#~W(bn2~G8J*IlKl}(0?!_McvnrHse3X{`LXw;?lZl5{bA}-zX^NlzwQ|oI| z7UOAc?-lwBptnDf$RhCw z?|q6JkU*S4N3BRz4*5UQMFEiCEEnt_UfE0j9Ft>cfKT=@ukgU|gHG~Kaw*@ZzYYC; z%7R#PcG#QoF{9__{*Wg^Wu0keN@&l+AR(6|kwx{|j+oOqyS)zsc>c0ke_fXs5Am^E zk=Pg|7wjzV_x-#&MylzZF|eSgPWCLK+=@bNgHA&Z;0XZqZs!e^MS&SOIY5ApNEcq^B>J$v{+LRTOm0L{59_0Dx-Z>CvfN z%)MFSqn8jb_9%J4J{2B7TrS>+aJ|Ivu$e{lo1Yz4{7>#j+CVInat&_ z6V@_mqj`cyh2W^^k=NM99$?Fd4A@(O^|CWuv)3kxJbyT+zfQ2Je_}7rcj`1__hv`q ze&sgM`yY)9mYr7Z(%r zjC*EzxI!e@dVRlvF9sTAy6*h~S}yt}zQ4HT9vdhV^t6sI<9(SP8I-45^$q>Zx{Z#7 zKYrrRRMcc2s*#+`e{-Oz@(>>5x>rwpc52qy91sg69}<20Oi=hG1jpYu2Pq#SLuG&n zGNKnBQ)a}`+vVa2LOmfIkanmj3{g3$3=A|-*>XE;8dZHf2ld9<0KIA+M zVUCUuk3#qxU^s%jv%#!Odxa9@;DY~oCjm-kZXY$fBpj$8Q(Rsy<$-#_4U<8VZgy3$ zV{~d%Dw6jXfBV&>({6URdY>lTsMpx`tkiM$v3tQbrmT)y$v)q)Rg2|hVx!C?9gP_; zIYm8UfQoMdzT741LOebVI`hsSffmmb)*ITN_(2u<#naGX%yvib+0X$|%zL(&_1o81 zWvIIItW)v?)RqQ#Z99ff`Gjw2*-XIEc{yf-@H-@bfBv99>`7IQSPMOddJP-cxG=i! zmEUU+?{A|)7}L6fiG$HBT`U}>8@N~Vi15M|yScg|u{pYOA|yVL{>&}`vt{M4h%d0l zQGj(=;uNj}XxP9D86*Z?@CpcrCLO8SGg04^*h?XN+ZHWqe*z_#uAynzTCFp?>BoC@ zZBOR(e_eVrTsgq_$c8dURLu2xCKHDIdIVdKg{kY8%i4{rbw`ckl2})VcJzGcirZRu zl3lhw#0{zKJp`};Qef8#R>MN{at zm#bhX?s}BAq}`WOG(QIy9S9?^;d;Qvx)_>Z*DZ+7i$b~yJJ3}TKH2AU%=y(~V~&9~ zcfm0PCgd0`j5CZ@=)y2qEo2xiyaR>-C|`nM6l^QQnA>p-^w5!Gd@m5BP;ghkZXm%i zf5848wZD6(wY#^#cd>x}<5QQ44XxApZPV6js&>C@0;P*le?w^aWhKPgn!XY2Fz?c) z5S~Gl#MsRdwdZ{1XkZpRvP;B5{awwjHU6XK3Qf2@RnVz}L6vkb>Bm2Wrpjkek7*h4`2rOViL z9e9^+qh&csFDb7Vzsk$0abbf8-`L)ee;z%BY{925U%xy&KR%O>-Y;jThe!3#7tdcF ze%FIvKGhoy5m}y?@n0sd*R3uQ*ZWIK*DaH98ThUn-b>}K&@pv|o?4qc8a2Wkf5Mww z{K?O48ZeS3ne~C{uj;VtxdXKKM%d~-u~rlLuMbN~ljip2wGTHDZRM9mdkq=|`(n#I zx(+rvDWECh6Q^k6YriWc*sqTc&kxZX3sVfS&pU4z;ovyC{aH4;PCv|hib*)EKV+8= z{9T^j*T!s_dLeBG5VRY#1KlHye}&5%CCNu9Yk*2V#;e{$s{Va7T6>CCTo3@rDHt%2 zf1I!V29$8{At0_3m{@IPgP~xR81ke*R0$zhY;NgN5b`cI&x55zVuP(z_$BzZ%HTWpslGUEEcPb5Ou+^U|4#9t*>sYbx7Zys zz&M?yn3sk21ixF~*=W`AWw17%*4+)Gm}7F759v(|{o7$5CWF!+YG+|=RaqDBv_z|B zz92soN`XO+$kPITr@i0bf7($ON*G*xhiH+Z@CkgPL*XnX{lU7n^bQXIpm%}NH&s7U zC;12`^wl+P*4Fs@K*d5U9=}xIC|g%|Q|}a|mEyH*_Rrm)@0ec(hqljLNPN3S7jAGF zNTC?>n^{rDrTE>inrO;28Ti^`s@4vOsUf4Wt%~Y&_UK!`<3yHFf5V9kPpL#_3Vz`P zOPl$CL1uD0IkM95=y-O1tVaXwFf@#@4!%O<=tb&;5_;rwgm0jOAzu|+#CvA2sryi%g)uy(cQ!Rk~`M>pUD*p|5BP||=Zt^c2Um@k&p&an4ShTC z|JbO{tXUVcmlYo{f9#*TGh^-?KHpIGKJFM?SgT zMpADIzdLV;Q)==aVoXW@alB*>VMx^E$Gs6z|ZpPV}zO zCCVO#ppW}k@Z6}W9P3;3daZ0GlVW5}P zJnUQZWTta{ZUwN(KJtY>N5n1g{ai$dH&s7wK-=;6Xg(0vg=y5#HY-PRN|A>w#Uy1p^nzt)!D*#UDI;hU2EMdO*$pv{Hf5K;OMuK^pZ|nIDGQW4KG{kZ$ zt7ibye!2X~BYj$Yz@V@pEs>xBGAv{ZOe?P?vK95u*Va^ldgXz$)M`PDdu5{zSDzFp z8mT(}2o%Sv@Q-GmWb}mYDdj!f#$A11=gZ(LC?lB~?LnytP#ZYizq+~_+ITc<%r&?hXBc#tjXlEsxMnflFH#^nZcW^aJ_X&rIp`LE5+AIE0Ly)& zl(&FG5J$_)w?i9As5_KR0=%rEosj1^R@1Z#S^SxW3Th#Cn$~t|@7{j+}EzRNhKnR*DzPv~h+)f%Ih^-*dQ3 zIAi8vWS}8e>D|{iv!i>GFCzLCi07hId@XSdJ!5P>6!R^1kQ1#+u)}}2g)VhXY*;b7 ze;l;`VE`P1!IIh&@-&8sKq|@=LPtAydDVxoZ~Lqwonmxs>t@btLpL~edz}r43wFQo@#NtG0%l8x`=P zodV49ji>BU$38dfkQp57kgQAjeadS9e>Rgpe?^U{m|(TVeT7L(S#O=MN6s7k2U`V+S9BAYiUC_3u)FGN zxiUO_F9}GaHPy*5KX*3fJzc#Lf3*wQhLQ-`FXo(J0y6^vsw~!_*<7~-tq~*LVOgd( z(DGUOu5R)^uktrjc`y!2b%1?-Qf3$`lY9na} zby3#Kxzir!=&i!hs*dU^B;F_Kvu^XE36_aQZc&EQg)Di#r7u3c#JD}P@Ra6h6IjaL z2?`^I5!?Ed2i1-MNJts!W2G#naeZ}LCFZ+giS$9mCk~n8l62Z)6^d)}IjXQGRjeej zw4h+hth&x9=hpP5Z7jcme|3m9B|8*vQMr#7H`ksk$_&#C#J z;6Y#IHuqsb9}>|ZoI*neD+cxL+3CfL`}8+yJ8CgNaJ=>5B5B%1vO3z|wqS|l&JNa+ z9xPnelnYpWC7t9`UW1~$DbPftPkgmTa<{Be7wZ!XtroQ>kjpw)f0j#6J+2RXJZvI1 z$tpuUkh37mON#_;;d0@jPb;9+gd`!r#?q@y*(xt3qe_nGa7|6l#m|1)OnP*J(WLyo zUdKKC6`kmTrP!{+80cGMGzQhB)YYDkIkSRvFaphYBMVmBIV&hagHQBi0F#T)c!lyI z3(cYoV+|#Mtf48=r*IAQD(*dd}Us{vur??`4)3!mA=qEEsCB^Q9} zTQ-)M{p|t0NFhw7sM@v5=k0WkT#4e>J;7ZT>6D~Rh#DEuf4vv90b&o|1L)$X~HhND0JdRd{T zFzGXmf7vXFAJi{UQH{|Z2YHKBUlE9!fx*I+V)6Q>f7MB^9j$!gxAk*&#aCVAtKZ@T zPX)NY`k!lG$9w)C-XHZ^MeNzd#J3peDGNU1E&~6*zRqxFVEQht^rkaGQujW1Fv<}8~`9q(`*iagEVCNt>e zB)M6wJ1I)s;gk48Nz&HW;HoI!ESJUkAVv#a2zqnEdeOIPD<)mXdxh$lZ1{;DRNOmS zeXkq=t4SY73eH89Ddzl8Igg3Y-T^(ukAck3CDlT(qqd$;EtF@co06a!lf1X0e)l1W=-sB>r2q1lO?#RSu#+vo09<7fC z10t8*fRtp2vxjq$e0a*cEOWXc(!&oy;cm4j&ES}oWl^G1C_5EoJ8)mrq}Ke{24Ek( zm}}K5Fdh#*dSYexxd)|n*>Phf~kErH4j~04;dl*coDqe+pvc z0{!2r*~L0hbvEq5zrA5A+@jD>Gulh=b-StLi+!wkgiOwf9-lMJPSAo`M!$-gLNGMRY0o0-JA;n0bg#(O$q#z zeZ0(wc7q>ZKXtMGp+2PupdN zF6iMvn6sU%|aEvlYb;m zu1VrL1pCfkOw#Ofxu~6?GQQ&yvibc9Qh6oUUlxIRp)QxKr?XPvd5jJ11zuIuXND?c zxc1kmn~q-abvm=yS0O?%-69c}ZTzf93Il)I`cNsnxx}S8QJP1|IxA{-6K+?v($~3t zQco@bifjOvPU^-P<0pOWWhfWK{C_^<&^;y%fw}T)dP`Xp{M1y->uc1=0QWcw=_RgO z7AUYPmKk0`vJ<`@4^vqh?9MJ2^3d$XE3Y7}#$RV(zAxsy_CazN>?r46cQ8sav^~pCoE3Tj(^V|1>5a^VhWBXyNGw@O3V-LJ1th#^ zodysB%uF%WZD*QKGF}C@z4h3qeWh>qhS>igI1+MkWaSQI2T|j9H*YW%hw^HT@Bzu6!$#`om&KY=0=~;BL1}$?T!N=x(f+(rV+~1<$ygxIk=GaDKYR-#Jzx z)Q+KB5Exa`@N1%q3JukHll=`OzO2Xw(7>%SX~pq)KHdyNya?wLICM@YwGU}It~%^3 z>H8ud`_S-n#*T`qcAcf=G|$NKMm_YjxR|S}YWu*>(s915WLTyBZGUbEG5U!&7=MJy z0i>@;pOq7TQIt8%Q95-Hns^0zCPxd=!d2AA<0*!8ei0j_aU?p6Sv0=r5SW21tMtvm z4j>GI)eP`q43xPKhUVeW07FQf1M>*$9K9GQ@Rv2XJyHlC(AL3<@EfHhupHr0;9krc ziS_rg)0dY@FL4iK8h`uoIYL||gYI0hnUmpq=+P@){D_xoCCn1oW^ZR_$MVIkZ|?Vf z2W#HUhSWv4qXm^4Vq@s9(V@fH8}4x(VTPNXkDhM5oTu}5ct^A-iaBn2?^CjD zd<(L-mZMLo`z$zr!g2mi+%ig?Bg$DA9r^)!(lf@2bi4b*9Y*zW|YLQk(oW!AO;hUy0>b@(5vA8|x^b*({_EB*VCrPaO$SFH1u z=^CnaA;|cyvY8qe0TAeH@mdG10KBG6%vIz2Y>Pk}F*eY$RM&#sDso!~U_HwtZJd5+ z-Bm%cZ&Vc;jrHuopV^_FK~2&UY?-X}%<*nuihpJ^GL$bsK#M!cb;_5C)ipg01hH@1 zu1qwTFN89=laj4$hI457o;fQNnpin>RhaI#HJY`+kaxrW;8m51;NGZ(FJtti`w(w>?%gTD{p4i zyI%uZ+ZHFnuiEk@EeXoqpR2$n_--_AKNPRK&;%Nic-@c3oAyJwtHG)Lu41*}4&zHx zhSfOq#<8*2(?Kn9YhV~FJ^jv@_uM5Zleak|wNXY<>PRAwA|8eBh9GgN-=K+44S$yO zpec*IrK2YaV}ru@PO0UO>dO;NSuLa)lXNZ7Y>-zN6rPqDzXZxh48ARsxHi27mWF*-PMBUP+D&%NAszyzhxM5HME%h8a!@?WNv*%t+`^Q|_7t=)$Y*^`w{oSnb?vdV7 z<;22LXEyw0QSig5xFP7c9IJ|U+<)at&}xwC%(-uSN6pg=jL}*0{LDgYC-6AlTR=1E zU+1$q4}lY<_8OzWW~yhSu`ej2H4dT;y(XGP5)Fql>t7Q*TQ6^aba}O&;BNeMeJg!F z;|2RR4506po^WU6B+=ob)@6-(Cs0jkOFqF7q5Wn)iGe1nVQZV3#GAqS3V+;Y>)~gF zwF+CbI5$P71?b+$9L}!*S^J0ZN%0E;9cNc%hH||4pg52kO*#x+*DHQ1Efo7zcU&*? z@#5{hd)%$(v+}K~egQ=Fq5q?S13=Xd|0si-_CM;tXgy!5MNK`wYKYq%Abxl6UT1*c zA;375v4}s3V(!eIKoR1{vO`i?^}PpzWD{d;&_y&Gmu*LQO8}>0w2YW z%;ZAXcNk^p%-ztXv-`_;o5`?E0EhC82PP-tz|B;b3)L3CscP8pMRYw6XX!YLE@Qrf zXBTsZ_eZ?-^*?Hv`z3(kr~V6z!I$PS%8haq>U;2$9HuG3qi z<-4G7$RstC_a2XRM1RC*On#;$`lvL$4G)&7+Q79D;FPe;d{Y!yTl&QfL0-Taz<25LY1l%A|%vu~!H3XY06 zE1k_7EoL*Hm<$nP_^66I;q`WC210TrcezP^wYwy?Z!=Itk>uQ`9zlZJ?c}RZ*jdI? z=3u&+Hmoy8>wh4hP_%&-)ryXOLN!s=4h>kJh_?xFXLv|OA7g$4pR;NGi@jrQZls2N zh8g~Y2{26{U9P;RLm5ITP`IN^TVRIAboQFfbs^1`-2@2G|BfD3WUsy1OX{TK=izujfP*J<~ z8fdAir*5dJ-dR`ein0%L4f68m9ai5ai@%fZ+uo(*EwYh>`g9`ITv^Dk;O1MlfT6wq zCu@?5IIqD+P+#SlX{gZ!;}0c-4@{NNAOtijpMNaSt)VglKWXYyD@Ec{YZ?P#PumMR zN8BvtbH2Yez0;m)e5d~>--&=@&a1?B5L?4s@{}_>wJest5rOl5Xb#JP1z<<9Iudo^ z4Enp53yU}6u5{LzVaW%1w0`I8eQHAm)qRla?f1Iws=lU!PYJrZ393eQ<;bF{P=jqk)UpU zpe#x(2GZ&Q`pnv6~v&r?uX0b2QDwr95Hl8?&x+5Ye*xEF` zq29gX3QXYq@UYh(ybyHgQj%}A@%dPF?v`#|dwtad5%*2~oft19lpstm7qE!=om%$5 zmz)OT&ib(UiM@&UjUoJBG~hjBcFlw2b@Q@$1!V03_UgC#2wWtknbYbew-w?hjep)F z^u@bw{!_tWx|KfHua{~vp1`pk4hgNnJ@*iRqpn9Vupx~oyl(QJV(;ss8%EZje>`ca zE0&OaqNS2>94HlOBBiP|sSxgZokSWuUP6D+-nH_}^Fn^UoFHfSp z<*oheI`BIUx5+rGsqafL&LO&=8khb2I^MDfsdNxR)Y>sRi06(mIgMYX+4@FU*V@sH zVU$9F)NGR1*Q8Ql_zD#iau!KKadcf&^e)&KE(6&yO@qgL<i(z!}J+eKc=t19SZ z<9nZLBIa=kVvIGF2>>jYsDF(VPE?V&^HCaRKhm2wNRD95HO^U59SRF6W}eG*HkV=v zOxC(dEI$R)+H>X>Gae(W7%;i47Se4QVl>lpnCruQ1hmIrxcZ2U*6rG6fmMScM#~UaqP_zby4ugvzZGXAkH=d|LMs&bbrwvfX~Lr{)v6H zXrQ+ZZW>aJ^whvYD{p^cE{Yp->IrFjBYS@A`-%Ecrp+k2XhAz>D+t_zE z1iRYY^U10yDOvJk|Ck=+kR;rw%1W{1E~oMA4OS`t53E}WHPG8>w_6o$d&N<~mL*WIcnW)!bb5c0UHN*IN@7p@YU4NSeqtJ$Y9q5Tc->hrA zvIFq#)3V4I6sE525GIu=%-7ptq9RPsORd#3_h^u87*oTmV#Zba3b|Rpnn8DDVU*hY zrlZt`GRkn8Rex;k#K7$&2}4Yh9mZzIB*}V|u>yqhwu4)C0k<@RRt|MU^&c@w44xX0 z4z4B4LsrW4&KD&rjQq7%ueI`3tj(n5L$`EUFHOZczjp|_NB|n{vdPl@dW1Oqq(YL< zDzM|Olhyc&3d4(U0-HFVgqK3@Wj;d%oH5w#FX%l)B4m+zxm;(0iO)WK*0U2dV@|1Our74?qmmF4U7I}&IL@Q z^Lf#t`Vt6zLDtcJ&*%(8w<5Jung3veCiY<(IAr`g>)LeSpLJHaITvD|$Tjqdwv~R} z21m_MK!1Fy=j?lbA657dP=Z_4;D}5o0K$Na9p53h^|eSLDS{GL9h8!cigzu&rRBl zav$WT|4w_71dkWscEqWV#X{z`;z!A=j2#X1>3_)10mJT7@g03=)mKexD43ON!1m!f zYkaFC{cPkB%@t}ds#AW#EQgQ$26@eu@sb~nlso2vD}nUDkYFzBqJ>2E^JBg@-~vC_ z48IFst#j2Ce_wwf!3_JwcXVFlx%d5F<&pMA0OHjcrutA%-2hTp*SYx%xAIybkxe(!h=`GB5fk$8@MrJ3TmK^F8WnnS+s?M4cqv`c*;}HKLBM;1MxU) zeS;U^T;2jBRRv5s625|0wb&>vDkI$qi1u5UiQl!}Of>3?L+Q}*xSgO)d?@y0?kLc( zL2u-Wp@KPNHSRgCFsYOif#DCrL0~`REO~nmL>Cu_lqr5kCL8(830SXEg?_`m@v<(Bpe#~Wk&UN>|$ynu^m+0TC*6XT=0 z%ope?g>M~K%y0iVhW#}A`A_B7fG6Y^o^3*g_UrstS=(dmY3fU7dB0F|w1u<$Fn@KW zQb#Q-nAWIMh|ZK8LAg7o_8>N;^`_)>v%B|~O=b<9ZW9{JVVo#5k8urMX7??HgQSBPaXo4yHFUo4JDwbl{ z86IHc51v$6T3%k+>}b#JUc*Cvl!7Q=C<2KI07P1GWnl=flVi(|iZOZk7V`YD?0lX4 zB`jof&b_c}1Rq@(`G&I#HQ){#Z}%CCfJrZeOKF0TRV@;I!RD@0lABH4$Yq1uPYhj!DJ#YLw`}Jmc~#+h#p&L zOe?z5;9LUSm2DN$igP>coNhe4zj;2dne#~4yo-^318^((3yncJ%KD~z+o;uDH|Lhe*R?^I z0w+>wcQu~9b+caLjU5)@WVvDq+nyVGo4 z)^;AZUx<2}pwS;V7ah?9Zb*#+1OyK4UdSQ9{%U#%9$OIv?07Gi#r+)Hcn{j} zOEwZyb1C`mM-Lww0+doHrN)s02yW8x(VNzUPu>CZU2Puar-mdS_sCHVkBdj$pK#8o zwDw)SPT`Mfm4A%03>Lx7vahdGBvQLdL}-V-f4i!sTw2FL<5``g<~yGj$|^)!NeUJA zqAo9Ck!*9}Aenrw)a3m&E(GJS<1j^tM?gx^rVvH`1OTNZ4zI3k|5~H{t)pxEMcxv& z3P&XuceSN_FUzON#@^YhM%AJ&n$OmYOeJ-*KVip(9)CO-BJJD!M}oFb=m0&I_59Sj zS5Z~_<<;22z_Rzqw*>DmK7C)-tNNz(KJdfzs-e79Om7&ATMhM{B#E_3#a~_(6h%Yb z4%3g09v&Z_e0F|xYKn5>)}!Oo&mN9GJ))6@sCph@g0G62&R&TEH||+Ci~7`rj6?o> zyDvO=1%Lc(q~AdcaQY=o(^eN`Y?}*c8;E5qh^296+_jQR3ow*#Aiw4RlC48aM5l& z=DJV_Hf@gp;<;wVbDgzu)k5_SwBbY$eYcn0R)2EY5W-f^=y~gU!y14BNQ0|{8M)s! z6)%FrLF;@Cx?#6$#cuhBVkb|4K^HShA~T)m^TjyB38Zve1*nU>3*pNK-3GOaz|>xp z>4MtvkW6*dZtjXy)j9spao290Y*ZC){OOxUDzZ zhJV^$N843r(b*=t!hnwrk&wr?I|cA1l@O>m7JZ3;P4_6Cobs z`yAfP%F}&wHJ{&9`!Bzo&61zwYf_X?UdCT9V^gH>1xTPW|M|JY;`$nXmG*OGf&RP$ z{r+sexhyL44G6+{3R=+8d{gB!`}-SPb7^a82`C6lYAH314h*`NG4Fabc#%aSw14W0 za2)r&iK|7VzvL20ngbGRn=2MVTjOHU8B83D&V#U|8{uO+cNjHRp zl1`Z!1|meEy;1*Bs!?qe6{34n&^FqxXPay;R$Q&zX%{T;eCQ<2r2B9Uty@LZWZgmn zn(gsZhYS3x8E8+n)paji%Yg67xPSN0y4x}@Q%V_lV;#xvB#UpGd3k$~jcmO=NW0%{ zbY2Zxztlj~j@mic9W@ptG)UBA+roFxE(^dczeHLLO;(2GD!1=1!%kFM52z`rXOe)$}N6oqh`Wy+qVlvmq zHLRSG$FgCv@UJ92@P$5ZkOKrWg<~GOH!^++-_p*D68W zxc5NBjx*idD+4gGii*GI08TT-819=M%x5zJhFrwbi<3z{$|`&Z`+vNE=Uw}z_lSv) zQv4ba+ovgGsF7je=iX{B=$WB;eQ2D)u+iyd`mkfWtP8AzK!kx5@CVsr0Y;@f#Gs8n z@b7zadVAZ+h)i|4@7Ytl^9na0w&+jO8Gke(L?!ERC<5j%*Hl}p z5v16f*GxHo;d)m+B=G9!wA!_ObSc^aZm}9&jw4dw6U2JU-IF?D(WVSH<+qLRf!mlx zHsv(??))FiX-J|wuvuVNF$eW|blf9E^y#ntygK?BDAga(_Y-n`OI%;mRaJb?Rw_to zf=@DU$+;`QU4MC&xyiCDa;$=A=2hiGd7dWD!dl)_4bUxw|NDum@VgV@*Af`hHGU&D z9X!<)z6eaaLtStgl(OM9}#v#1Nb| z;~BtiDI}2J)ejcCypS!+mV13~G3S*lZ{ici1V`n9WPb+YRoxP9SY?^fZ9%`;1$=ig z;E(x_76``tJ0yZnHQCI%iiU83cgRHd$EeAPUp!Tvt3B3BJnOne4lY#WuhjZHr{dG2G z!B$&SFo9oWFqnM4B+J*HE_dIssMH067`l92lYa?6T%X@M0%P;G2fjIuCQ!4zB2rr* z^itU7SdyE)UGLCAzjbElE6RXynknoX#s`i_>{?@lo^B*% zd4FE194$K?L*19h z5V><%W++nerOlkQF;*nge1?6R?C0!qF@I+RO^J?XoT>5fv(F9fYq)tqIhy;&peYm< z^yM_I>>Hm`nGVgw3VeX#nB_k zZi|BLn37>-$p;|b`k)F}_a{1Ut> z&fzInl^cRpQ6D|ms{wu2E_o5~S$&piE;zl{BCSMe!}_U@8#@vbCXXaKTys_uaGpgW z2v<^G5Nv4AXA~?)$m?ThGT>SE9e=w8tw@^6haGv2FIozH6@%C8O-b4SEb2;OQBl#hY~bN>nd0a$d9}tS;kXRFJwt% zST^v6=4>5iyc-$iRq+$Laeptl7wSNTX^H@KGz$FJ+W`7$Ho+GZD%Qh^9Q?>nNy0x6 zOHT?c=B2Hf8;cTk!GyQ|6 zw9obE72--+Kaz)(K7lL=bX1D7*n8yxujrtkO*5Smq)rqnZkh?C#-LfY(!Hjv$K`WM zrU=n+Pm1|^T0$Q+Qr0lLnJ*;l^0D3%S7h~~Gc_-VpR!VYdK5V?bh?7qv!`R=b-2;W zVDGQ!Dm6jLgOI$4YJXLeSScWt(tUv`9mCF-!*);Jps_*fN+AaJCAa-{`#1JXAPf_5 z8mYhPq;_Q*pJ-8RlM0&YL)LYm`dVl3Rqb=yD+Ls)1jE#2`pd~*7Vb?#=TK;BVq26oBQrcYw+WHwyu1L^~8V^MwJ?gKwar0%sQGQ~2LWBdUq$z`hT2yUUH)&de#kJ=zE6x-4F>}>SNRQWtxZ|GF3*%=6U{*W$U-zsa*zlxm%*2v=8tJl9Q z2Ihk)ntv{=^~m%e72|x8+q=MQR^|wT5Lt<>6xn95-bNRckywruyq8v4?7JOmtmtr> zHvl_NtMAo9NE`Lp(dhk}b&x;uPcVJM3{?ivcn-JnXP(BwnAH%!gP|KfpQk0rg0t^& zx95sajlimjk=Di>&^8TvGi6*If=&WPT(~l)f`2{u@XG7vRzA;GUtfJ-ZsFe{0{gHi z#sH}X?A1E3w*c0II;>Zq)@u%|k6?O3SbMM6V8QRbH*2t{$JZTLM?YU?(<#v2hgHYx zRg_jSSZ^>a0Ch`rM2gZ%bj?J!W-Fttt}0&p6+ebFvP-Ebtqg%rYPeSqjTHZz=aiD1 zG=DTc4)GnrBu8(F{wE*pz78~pKVIGY%>Fr|KVNzM(Py6z%}1ltN7AkukU1Z^Bdw5p zMI1j7>?kcOeGwHMLqKCq-64n%$>9~=DzNS6agO#aKEFv{1c82ZGeC!QXL|a!Xeorh z%Sc!;us5}Gxlzoxc^!MlI!&YVU;8H{B7ZjE!^6YRc+tL3Gn!RWLchn%3#SVhcsfIz zz+N^7y^G^6>D4rDp3dj#<@Zbx`f_pl`31<<3xR76=<~`7eEKdAaql=%)TO(H6_gOKKTGVVs8J*C#%pgd~QWxYwOs?M*Ue1FA1 z4tHGWZDmmYb?pmmopm6(ecBCJLCFTMa1?R`67mXyid!bnt_n-mgmxqR?V2W=jfC%K zb1|HzGm$Bra1>zB?$|6q5_3GWw`;J+45JGjoE|FOsVmx8rf_^k)?oPcG|84(~} zm--1U+B{zZhVT90drb)ht>hfG`F`z{C~y|fN_^;Nj1N1^WxD8u?AP>h84PgS9l&75 z+2h3%b4`x%+_O1z4Qj7|Y@dRhP{$5bYq*z(>0(Bz)d6)_AMbz`b3g^COn;kD&lF{> zP`09`^3jKncHe4j%^TX<($9KqWTZ_g1EI%v3GQZ@Qe!lZmXdt$%-2m%Ug+)YhX-R>6&Bq+wP>eE~+6crJ|@ZlX8jYyNMt8UVpY{4=?D(ghvnj z6ORq}=St=8nOkn|V`Aa>Px0&xU&E(%bhJtwuQe@EPm0p|=fX>rFP@jGbL{%sg`<9E zRJU&>&O0rw5<0*{yu5;)0xQz{``p|j7}+UY_=AB7HVNt`D#X?a4{EiQ;CkxbWY<%7 zkV5d!>aLS2G4H+)R)4TFAb7t9V)*KV2g9BB^Ypra1vGpG4$-{d(rvnB?dj6P>TGdy zQv!{%F&|O(=p+ekI4-SP74x|ZL%8@YGz*Sy(_DyZq!rNccX+36ub+=)P*3IKMMg{Mxcx5Aqm~^?NlNWy@L<0|C5zG&Ei7zVhurZ{}KQ zq3*_S)g({9Pylv;f4;$KjijDkFhwR6(2kIeMBFl^ptfJufRiOjD4-f{F zo^GF#zv=o)lz;R5c^jI0=0qYy=&4X!97Eu`VcSe45mFD3Iu&eS3P*xsn#rva+NBDqQ<*;hhFh(L$-S;uVTm*I z!QKP*(0`Wk)u6E5`NyMP4XbC8^Z8P2XWZ&Eo|b%$G!~8@`Dnt*|Ju z03bcNVmGql`Z34&TV)^b>+pH5bgrJ&1^V;bX@97cK&PYkk53HT&VOEcS+>|$f4m=M zosg9zwQ~vxUS9)o0R}LUrKLE3n)JsspOUR!Xt=+^0uCmMof zqnS36)$4#XaCiUWi@lGFe75^J-)nzRAakQH+0Vd8IAOj07hj}V&RoC~oSF$$Mn=O1 z>3`#5q0Lq-2l1+Y-NfztgDEfxbs=}D%)c^zTwzmw;LAs#f>SW`X(k9jZZFcjBu_YW z(kV)>qqFPc`|UcyhB4@vQj_EBsg4_4uk$$31Ob$g1xluty_Ly6DyCy|Q&f2{yZ1A} zqq%SxhS5@Oq6FTeSK)~LiMuMml7Ls4Jb$k+%@S`T<6@!-{@kYgiiw@^*IWjF?U5#9e}O6KxrTqYAm2It@Q2-Ne2!W$1zxdStB;0bN3 z^X!^L#Z7Uui{lF9Vo|OvN&p-^JYc#ez_Y90!=RPq&xE~!H%!lWw4SXSj33Ug7 zE2PRmYag@RrZWBJpjRc0Fy07Z=zq5m2EpMe>p)BR=7jVKO^E_Dx2RnOOroo1?{!@^ z??c2PKUTr(-CnO16Wbn%*Z&?EefIKVMt^dQ?2mc1Acq&43F(9GnivnTS>p{i;p0n> z9~K#+2ouAKJl{?0XxIF6Kcl7xDuqQ963n5Ufpc#A;)_YFLsngBIm%e5nSba_G#+0U zk|LzD3J4M9?nC$4lZ0xB9FpEriFwp+z5cKf>43INs3&NpObeBus<4p)DJ_U1==679 zT&Gv*Pv5UxHtvWTlY*61Rnnn4X_W{Qt&xJjbh-eKVE3w++*GJ8I%F2KBdF)gjgEmO zJ`bC<4bU(h);l>0+03vI%YWwLKtbJ247|ILKHWbg)vWws7tMiir2)csqD zf__m|gKow(c)wve&9t^HU`b!ia^x(X`=EabUAA$Sa$v-JQ{bF5oPV7UsC)rS0y_m8 zOnhv5fSMtHrxNM|Sir9ur9Q7R)}|}GV@f9z5|-bk*Vl3ih{In%yBidV&<%TRWvs1O zXf7C3n#EB9BjAc`@gr3!GaKJr(;3+zEt_T6OEYn~qKr&pt*#{NpX5kX5A25pt4Dlw zKp1js?PKjc$q+y(C4U!j9gBN*qzzphJlmB`SFx{99Pre!ZyD@fq7fvqZG;1$rvd*dT~dM+!d=fbPXf+bw-&y0xO%ZxV_#ewEmSTNuuO1hLiV`lFxL9BTU4g#Bm2KTclhuaT%2x) zB8foMv3o8)UXV?QP+(yT2$9Q6zv*VAP%{@`B2$5kMN3kw9Im&L8bokbam&Iidv+JR zDk^JIk&RW!<$qEOb!oOVjOH%cn5XAOaEf5$=nLx|Nfah-TBA9yqtEO~Fb1D?E*Cx> z(<;$zR;S2yy*$i7UX+{mVn@*432NOCRb|z=0KDiD3Z4%fm284>sAO)5;yTVN5N@&s zG&DyeN^|oRnzOki-kMKpn~aFhj5?-9usYov!42nJB!A=M1$aPY%Z8EQ>;A~;taEqi zk(ElSW7~?Z7i!$J+*)}Z6uY2f7KZffV__<5%_>DL%v3G(1acg{Re8Gg5o$Z6Uuq}( zr2Y(64C@{Zo${7x_o&O+^8zebM!2C995o@14jYC-G(|kTpMrO8 zLmBM@v44WEidp7FJUB59OsR$_2mTC4BoI2@c47z1-`rZxPGsxQ7q^P!u;pU*3Dwfo z)SbM4WUD~1Nk;q0HU7n)|9qBst*w6`?*yyZH)@@ag-0*y#d3!8VLdJie8R|hLdG0V z$n9$A+md*5Vz8~xg|OI?C8^r4~|cd zw0N^9b@%9CEDa+I&n6#Hi3{qu#~fIV=I#B8z~V&OCQKg zpN&o-x(&f<2U-vj7v?hzWkEMFukd}bsee(i{PL>E(&s92{~eK6T*1C??h}M*p+|?J zWF>qC^T00{9A1XrCoZkLWxbwFx>Jr zY{wtuipczxB2~QZhAxgnrz83MdvaExM*}vDhcRXq+R&|64tX4}Z}c25j%IImPzNbV>V>CLikWHPw|Z^!y8JN9zyP z);mJ$FdB#Z7NT2emCb@N4wjX?<;=9?^c6c4sH3BzuRErXpTqXkDVmyX+W{(&ERdfy zSfA$u49+`c*5HEV)I)PC8&t^s1}B0YF!mnMp9?Ow1|T^*y<}nte=}os%zwZ&-LR(Z z8=0su5KcqkYB3G zxJ*j}s|xnZAkg!7BFM5i1 zz6RQUzmY*g7LjxKw3tU6W`EF;h?&@T3^JFnyi+I}TcxgkH^~NUaMeglW^}O8tG^T6 zWp+`?n6tHPLn;?T#xr2lO?! zUTmvXR#7@R4NPm@ZbHAOEqcQ`OfQl8Iz*8#KEDBNhG`Sv*<4jNI)Ck@z0KFptuKFR z?^}QL7l$X09*sVIzmW=Y4>=aaGM~dXiVtODzNp~?@AT=3$m$D2{}2RU<*%&mZngJ^ zOMJ8CP3CM~F?ku-O^G;w#hb~KqBLQQ2zH21L-R#7b`35T z(1$o(0z|%mj2>Wd5urQz2jnTtunr^37dgn^xTCU0Wc#tdzOFaF#2RfU7tjfe@eDx&G@=Mx?v(DN8YBV!}O9=a+Q z6*2K1({4oqpzv3h9m zCwdB~p_Nd^Z6@EKUD%8bE<#4M+4ekmK7oUjxdItLdu7H2=|^!`lB9E7Jj8pwp^S`( zAxUMof`w}ee~44!u+B3L8Eo%5D4$N-56Fkp3H#Z&oqwBU#f4lQuh&VJavO*u6)kMk zq68CKK1!Z&9fhQmPjR%gbfrnT2x)OlpVC6Zg(t8Z@hSe+et-g0z3r8n^P- zL8~&hr8{=Yu9g+9jSsQ>k`|Fk}Kntdn6xT||q z&0MhmYkz57v@}_dU9~l-zp>UP4OM&VQ0d>Q#W8Y!nHtw!i9?@FH=@e7m$Sly<@#|O z9nB5z`d>@?UrYP1YH5Me6kG}ZmFiM_BM}^<8;6#6zR@|WNu2xAm-ZfPsW83z_t2O| z_oE?={?~|pXYW{h8>xYxLE=A{03v~~T#tuP1%HS_OR0b>x)u=PrERmhE~MEin*b>) z-}v9m!;@LBy;*OX9_4}HxU9!BJc+kY;nfNx4yvVdmX_CWv;-%v z#H+M|#gUQ_+8xgQ34Q3aADx6|h7M<0HZ@&C79MAlEG=Q6Q0*}Zau_BM!Qqgzn)-s+f(N3{!_T_^z4^EE4wSCLl4?tv@2JVl;&5G)nGbFAO@!Uu z$mZhB%I(=)H+hv~?MgyHnXDW;#)+IISDPeWLaR*o`t3eNKI2bn+L6HjrX9mQH-9wk z-4=`YFf8yE>$z$r&f(@Rlv-Vam{kel4U0(uVjTm^We2|iE426pL5{ZK8I;Uzm_P)N zp$Qa$qdWr~yvhbmpDk_Pf@`p9@m;l9T!Y3oBOBV{_BLUa4!wJ+v@h#vIz#e_aLligBpzlZJWAynQAV!v#Xmpf|A^a2waVeDdv!%9E6ZcBC z2>9t`kU%1g2dw=1&(zdTqSGWV+n7t``hbULz9}G%I)_U{vU0!P^&ftQ$;=B8%B`QNh-`o zlcyBdkmKns+fhtAw&Db4q4SFnNb~d?N;=S?jpOlc8#x~T4XvcdqJ}yYHLqy1t}?(z zV~wk>A8W!06*>G?b4AEgIDdX>e#ZG@xF(8*wRaeJYhb5#(z2d~6L=AE|I5z~9&3At zZN!0WmB=>ivNcJt{`YJECj|`WKT4<73`hopj1Xc{7WHIEah5umr`0#vb40_*()98l z*w3q3cAkxZ10gOzo?S_9e@E84(dq37G^d{R($*Uz(#cEAPPoL2#DC+(M7nC6WC=)H z?kDiO{&_Qxco785SIug6L@5xVzjSUqm;lL4}QE2KAnn#F)jfys%896;6)) ze0L#o3T4Qk952RImCl0He9ccmlq)u)gsIN4DJYvGo?0xQ?|*gMQ>-RX zyp6>=0Gu)Rbz-cR#kHa3+W3&el2tfsP)lf7#jL#K}lVJ$d@ zni*VG?7VLEbA%5YXjI44=`F`prKSFuVy4iMtn#HJ$c~{XiGIN;$L&-89i{42?mS1W z&6NIhr0g~zB!6itBCmtjUCf@tF}Gne@l#@UFhgA>PxUsju=PyvPe;zeZcxNfD9?{5 zUz>?j5@5wjlPlU5OXaR2ZOVfG6y+l)WT$w`V@ot(a;z>r+(Zfmh94RLV!oG1>79x!crU51kVvhb*HTN9)o4(d_Dq8Ur)>}2XR6ZGn@>Jk5i<5+P5kQ%cmi0f$AREJUH)DJmhD9kS_*JS&bv~>ZPks{Sq2Y<*SA$`NqgOn zp(KPKgMYqo?6`bqaX_JF2ld*He@8vZt2o3y>?6CL@dL5 zuJ9tdTYy<~IX5t7_)WgHa||BTC8u9LesuKc@W(HXj~<=6)zZn_rML9Tf2^V2o6Ph1 zVw4f;5BDA)dunE-rAkv3(8K89yM`-)-Y{s(&J%(}xr;uw zlWdL+=zC3ijMl6#>8l>tQ}y4_oSFm3PDvQwG?&Ci?7&b2IR_h^Eq z&vI?jCoO*^3cTyJr9#~m+0eyalOWBN2fcKi9miI>hITHt1#c`43n#PhnFha z#$(LnEf!9Na^%saPqRvmal?N*F|!iqF2HF?hX;TCax*z{N?i<9cw?K>6$O>wqe+Tk zDX7aQOrI6X%F>6k1%$E5m*R#qrHF2_AGT~PFoNwrDSd4CmZiUm{6mpE_s(YTHbhF$ zB+RYXrnLvY+_ToXp(8$hr&ukdUo*Tl9~NB&`0tCNk+j{$++7fj(f~b?3yU#cL>Mn3 zYiECVnoq3Hahs_TZW7-=jb+&CEoYy8we)GYbn;xs@1|D=y(r29wH44+`mB=KCb6od+nYw;ueRvYL(} z-p1%5iK#w{&(FG}AM6k(Uw9RJ-E%o}Jp|Qhf3*@?uB00RheX zDq7zY_>niM9c`1o_$A4wgqL47iGHK5&2L zmoB}*pi%4bB=kU&ZceDsZegD|ERrqMJuy%M$*iHP?bF7u&K~;Hv{1@eWmK*YvuJ&8 z$C&6H3xM<$T4YK4{jjS`uf`S}f;*q(=Rf0zC-P<~Ae&_r3R=wc6i)64%aE(R1!>Hh z8ABjU*bY#!Zwd5!a2CHjD->~q9npWza63j(H=x(9-vRSGG(Fqu9!zt+mtXFI8{wk3 zss7Zm2FLh;01R49Cj*%77L?_)p>%F7n~G$D<`ZS$IvMv^jc^?9(LsVr%0G%h=i}d? z7TsFgv7@J>cK?XNq|rax*APnN;Q5AgjN92b3VpwqHm*{gyTNCn0&;I{V;6tx$mPC` z^kJebrGWY&FB{G_jIediVK6BTBZ-@TEbOMnjN!b+5-yWqy zusCtuLRcNAyUp#|->GTcEWlRv=ivS*P&X-bR1CI*K4IS)vVj6~s5jz9Sqa-COMZ`7 z0y7tl7V=j15hmDsVixPLz?pvxA)g5;2~>(Z)VYE>lfDso^amBH`VGVyakR6l8FR+7 zNf({o+b%lYq>D~(+eN1vchTt`bPSkBq1F{y;!QT`_SU!H`-VR>glN@E zZ`R)ho8&Mm1{kp8Pac0#?mRamVqy?pe)?5GSo}ApgkaoNPLQx$+Yhf$)g}Hl@(Mz& zl;uPD;@z11=qo6xaO#B}GpyouM`sP<5V0}iZO9HAk?FCuN|JzuiF(h(3M|`GEfqet2kJwO^O^>(YPudTqa6)7OFd!8}Ob zs<)as0Z8D=qkKY?-*_7i0bfVhfqBLBk)hY=cu;jl#^*yiQns4e8v=$QfWv>MLu6@) z{0x!c5b5dZvC`xYmA|r;x0(!n)A{vir>7qm1MTgo&_UqDqT{>T{ z@oTt?w9(87Li&GQbm(-^p>)wh2-(43__ulwy#`v6PR7SGM-3(f&Uk?y3{EUoNg9~0^|ROW@$ey?Wg6?T;nHEUHbn`1Np;GfJ690 zS8-)}xq7iBEvdT02|+6>!h%owW=)GB3Em_##Tc74FX(?0Or{sb6t4qMIH!n9HJw~t zq=5Spu7@Tmn2Lwk^~p6#8l>Th_YuBvn3?k`P0lS=qKKzYtcc;V+x*uon^O5X?W>rS zlGtK%SSGV{lrPGfmBPs!1(8&Uek=)W53}MhJDa8EvKVEPT|jk&+Vxu>aDx9-M|ED5 zeQMnR1lfNFqyd;RpRQo836D3a9!aOLUidg(Vc97;-EzVXq~Q!r zbWg#}{#U31dX~on0lc;hbJS3qQuf5oQuv*6x7crr&ec!E>Pq4@#N?R7P;(YTQx=p+h}CauE*EfTq=Q{gv&D3xZL;(V6dxq`vEG>T*GgTUyVdXtqNfUlmo4!(rnEmof`bOLU z>h9Or%BaDop60Jh=j%0pt-ArPK1=ta6h);^=u+9Qq{U@^DV?9rRRe74JpDP-ctSyV!gh*IA^RD-lkkozP+@5xIq2i-5yj@w#FZticlcf$vWRyKx@|gt21u!?hJ?A^r z)d_80$aF;c<9RCLDONx0l&1b?a2MjVK>wBW$Z`c@eIt3>;JsJ8w#3$)=188WKffwX z|MMKLa$jXLs}XL|W$)&{6kqneh+DZqb@bUy6n z<-u=x2^%0@QId~-H1ERM6940DvjjyV8!mXJzx#1M9eGT()MZuiK37#mPV-mOg=t24 zREnw${VMv8Tji^qGH^uK_$)1PRUKd9Q}8k2T4c8hcFv5igls|ff==*XWgx?RzFb%5 zz0fSdC`8zPuPeGBYPB){ci(>&x{obt`$(1K7HA8-QRnUT1hKg|eBEfl;ktlp86@A( zrzx(YVm57vmSIH8&WNsqh}a>mpb_8H?k-`!_o@2%1+yGJH#F^DWHbeOf&mc8?@_BzVoRnL_MTp-v z#Aer99!B{tSam;NJ2{@rEjyTRr};gsKf;fPx=W4|n|Rn#ga4mRcunE6!dkDVswEWl zLx4j)uQ%z?oSA{R=xL(k#GL65Il%Xs%SIh|({#La;LF=Xi!*-0LDr{x`mBR|VpI|g z?;N-y%9yO^yG-(AafW{Y6{k5Lw`OuyMQF|X?30ns)z)J(u=Hp;%6{W>@fU&(5ZR3i zsp^QINf9cP`Z^TfuIPPFJt63#E4>#BX$8<<(a;Fg#_{I}7^NdH{>Ta`*FNl!>&ij_ zy!C~U@QCQT$2rY+5w|R%gh=ajgIH;;5iZgx-CtiS?zKxYT9JRX!NMj<_N16CdCd{Q z%%M{Un2MzU-eNQbgjMVjl4R53Pt_(YnBdnWX_O4#0POb^#%mkH3@DL?@SxV`R$TSI zoc;{nv*g|lk(iF!)uQgX#de10xo*<~zH2Wy!hwzVgd>o}dc(~gaW}6xst4jB%C7qag(noOPjrNER zF2g-sQWt+WHLp>KUkIdK`#XBL_38N*kDJtdDK2F{u9bf!lG+y4FIE9fu)$%3{{1zk zyrJS*)pLU*!!pzxh+EfR(O_SPz4^ue(5#3JtaMx{>$ZM)xcq^xFM8L(q(A(USSYph z`smyJ(94SX6gHB;3>bRla<^%Gmb*`2iQ9)k{9kTlKh-$wRo2!!R#N8u#PEjA7 zdcN0ACa{0;kdI@tADgv+!Ns<2<2Do0;AkbKTfY$t=Q^5EQAg5Y3GE>B7SSH!4%Od_ zht&nO($fyqPfkbr;nJ35C_vkoTEPCk2I}kbS8?%5_bKd$3lkl@{z|1~q(feJ#y7Aw z@NSC}iLa6*`%UY%DAy99!Lb~!9bLolm6kQR==FbcNtHD>Uwp(_zA?emd_KwlVpjZ; zk20Gc9$nj6%K0W`vyoqmw?1_VdXCDWeHX zp==Z&NcSsCTMJ;NT7}`E<@V1o@nENN*xt|i1gLtlZ^TlS0F5>7^~L#ITYfObEphWY zj&S@NZ~GO~asFg6V}ceO@s0pI;*vvjyd`;x>QD zQ%Qi^9UvyB!7&=T+C%Za1yf+&k*&UY`7wRRndfEm+WY3^W73oU$2$)O{K2wqxqjIU zghP|gGEivfLTs>X*^7$pR{4Jg9(xcc>6KS@i5!J|ihw}e6FY!c>SWw{=6H%#PcDjI zqoBuQ0GICYYcM#C91u^KDV^UKs)2vzX@SpQ2y`lfXDyAIgssd+a za8xxft+&XJkk-fvP8Dl(d!^WsakRKTrVzsE`O+Ls&u93eJ0jt~^Q_*C%8aEl&9Wee z%toj+(b&(F#(uUH8c1Ldr-vq8#ji(AM3sBUPjMm@JQSTKbl=ZhvyI$=JnK_93Kh zE4G36L$;SycEyHn39-ZSEpa1a@sh(mGp`2kyNIiA8;fg}S^sVdY%x6^8bdQ$5T7#s z6M9aV-Mah|9i;4aXu|}j0@8oqYKS%7FjzpvB^;_R=H|j)-k9a(&)~wahX**FD+0bV z0kaXRt^)4di)@XZS90dBE7y$Ml8HZNR)d1+tADrN>|zI1{R zg4gZxod`{n)`-&PW~Aw89&BteW`!z0f!nbE1)7Q;AXV$(5@|}ER@ugKV!8?_DeRAivYaO*!zMe zjvg%<8Tn-a2#cAsM#6u4Lv(-(A}q5;=5nZ+!&>e--K?u^XYYk2PV9k{Xu&he$CPDq zK3US0vymyd+Mn<-W)&~DU3(>i`)-tVUV3;>Zx{_kW(mQy1bwm zh$7ToaXrGc!4r*D$(3VTMt1YN{XDqND98Ms4B-4#}O3KtBcoY>+Ic{ zDxDq(%{_Y1$@72uWa9zfg~q#>^iB6QDtnHX1zrp??$!ktr3)DGGq}BlmojbUbB<&=rM0%;12q_!BI~&FAjX9 zN4tyhm@gCZCX+MWB!EbKZruk><+`MJ;FTI;u+*%(7sK2((>9z_K3!a%Wi#Dicdq#A z^<(xYxY5}tX5DZ;0RvH8IJkWAM!)%RmSP!e+EoN81QJEMwO^+*}%H=t?fDSe^N=O+Wc$u+KA9s(Y zu!E4#<&6;hMkof=d^d_v@7O73IpAaHWcB^M6^NJHJ6Vmfk|OB+???M|k5g+{Pvl6f z6}+WbFOwTEewvW*dv@|yCwlA0gRkJ6X#eQsi@kr-k3Io`9#3ISZ3P5zqQ8KG?tO*i=?7Xb9}@ee0t2V|4g~#1dK&i1XMFrOJ>jbp(Rfx- z0nPc(aj8ZRmFv$u2l`oq0OSz6@4^mY0X8(fPYxg@zxn$3@n`!z_-QBVo^x8|6I5Fv z=lp*yq~RTN0*T-4HnQDa-IHgFbOBa2xS@}eB97$J^lJ|1AnDl#<4L36(mLnK=TM4F zhJtTa2az@MJ$gTb@AYEc7b-P_L=Z^a_qBuss5kWZ8w9Z)uYJN_@#@Y#qV~CxCyCr| zzf<#^qfciQVysTwG;jwX9oZX?x6B`%s0x3BK_5~my29x;BXY79A?#IRK0M605V&4`T z&7^KozQEdRe+iiEDe7h-msDS|Ns`2*1XbeSt3`qaIpe=p_f|t&K$YU)!rm)&Dr=#? z&U&MQ+Fy`pk>||%#p;-aId6aPS`-Cl+KD`lBH93_l`sd=tP6`2quWI`5eZJp6I)T zs^=?SQM2N^kbD&50S0%@KR-A***oNOiR$j>Biyh??U7CFqkY)7-X(v9@9V=`YjB|G z+mTF1>(t`4ryKFnRY#opWve>kVD7twsygBoHP3!7r09qT*sdcr>AQg&w^N<9sP9mt zHjUQVRAIJ1sW_NbEBr~tFKRM~E@VhyA}5uaM7OFTTTzL>BaR9~6+{IUOO6qhZ&=7x zWt)jTTlI)hw*)neRt0~U%=bJW=a%)H+e8W`jpA2@<`v393MWe{n51QupT*TEooC&Y zor5y`ooc;hWv1B^u=BqVa}d{%)88@r6Zx*>qo!7*ncE8F)9--9Y-t3o`0e{m@J5nf zyv~DcDtOgLCBrRT;azmCbig$dL@*fv>k!6|-KwhcrPnYgs~be z(>J^B+qd==ynQ9&T6(V_ycAI=weboRXWu{ZJ6I9aaQ8i8 zt{(V>&1=s(w4)PJ6uCOE-3S%7p$&lM>F5B*;BHk7c=di4i^Bl^zDLwoi7-IRo`d(* zR}U$UT|nBt}R z6}jI=M;t^?MMFAMQ%;KcpuM9&LhGqP5I2!)N42icsTZ)iroVxYO_Fy{<@9lC zzMs(eLbZY@(tqNLo$y>HGVT#nJs>9i?$stcU24f2s zzB?1{5#L-4k7t(dVTF^%CAtKr)4&z z=kf4PdI_78ay;$aq;@Wiml@;FsR+c-$?DSuq8I3r5ndJI-_3?xFC6t5wEhk`f4p%l zi`*GGDHgNy3{t4cvmywK_c86KH5K#?E3KrTy^3FF=@l?9(Do;8xR2m>K3?+6^z@mp z95#QTaER)sX8;u&XF-B@E}h5WbqkYc0elIN^v)*`6c)z?tFW9}yHLac{ejyo`nU#} z3KIXCJh7>~!&CUEw?>t+=(;%T8Fc+ROTW&tt%gIZ$h?QN{)ZajSQ{96-$%`*y$=t2Q2J*EwDg;ryl6r)wPO4 zkNizddG_Uz_pj*DZ+YH3N|ETX?+AL-&;Ae-*R&#Ye@=0`+U$3hI39A@ZJ_jwAliyuuB<%GG~Nh2*iH zJ(*=$2n%4?c?Tl66%Qj&T@H`7mqup9Na2S^CphpFr4GI3!RH2pR-bBqh(9Xhj#3kf z&!r){4gQ$;VSaLlR~thmytEIizKYKifv_&4{wvs+mJ0%7PfyGjdyo0@J%9bID6Uqq ziJVQ$4sn}XAmcpFazcr19A$r#tbVqTxG5gcZfcqb|1C4$eEJz5)QMLtHi+GuZTPdk zI;5*h=E_nLw&bV7SCvc!fEaTl{om-j2!+<#<-&UJ%&V?5bGWK{WNX(L&E8rIRrSi+ zJvR?c$S-U6-9#;&iyf8M>f9&MeHn+p`n8m@|HXZh+m~qYYxpttj;4Q?LHdK_imP|G z!NxSaX|TCdwy9&bnR6C?5ux!ZU3YWN6+BIDpGbgBbBId#WwjnB zd#@#0>9QS0YYOp-Nm4w{4&aSP#Gfi3<`OdSHJ=tKj=*$FW>5&El<* zChge9j$1oP{Tjzsm&RE#d5+KwNxO80a@cx5N;}vxs7+%&eIx+~c!PljUmaYxT-}4{ zbs&!<1mu_>pOH}NS_8hBJuX)d;^K45eTbij{NR{#H{?82$qs#V89g#b5mBCbAD18k z-D`(z8Y`2Ifg{Vs=AM~SZy3zloG#RZYOd~bG zlp_0BDWn#DT~-WVAElZDke$d$V!Ir^W4T38-UOsq0PTMjM0|x&-&r8P;mf4I9ZVfN zD-v_G+b%65f6g3ai?sOqVnRhDV_ZMITFUV0^&FP>i22e>46Yv|oR+mIj3@skeDD5l zKh|Njid>I_`rXr5*8|0mZcYmC5&M)mz6*ZCj9X?uGHWswvT8foEQNg9OzIQfv%yRz z+an^?a&mujxl13ykq5vIsT>erS;ug;?rpky?e5pw|1l9iPF7sJJLVNd$4tpz`-Kz8 zpIElgA8bSBAMnmBivU&2?KUYx0)dP^3!KZ$;e;5SwDg8?m3iwv-i@H2?_neOzeX<- zs@hdm<(`}7W#N{q+0)y60g=UXhj*cX9hhbdP)oDoa2s(CcmTyniIYW8IiCRl3R?-2 z4B|BgJI*fntiF>+;yeQp4g!FkOp`z69h1o98Us&Y0+Z$BLIb~H z0+Xx68` z(};VRB_?Z*_BJb5KhK1^@s6 S03HAy01pTN05N<50002?@PEVr diff --git a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz index 931bd7e3c80e712a1c18b70b90fd3dc23863af49..106143bba0c0bc264d109486be914bb7777e1c11 100644 GIT binary patch delta 710 zcmV;%0y+Kk*A2s+2e5P=fAFovNT$G-jtBw(0K^3V02TlM0BkWZZZAYdMnP3fR4+|$ zZ*yfXY;|F!R9$b{Fcf{JQvbu1Uuq*3KD2cb5)TMig;eM?*u%6|l}VgnDX}Zt*~_&5 zKHCXkXj*~#62p-wTisH%4JM**iaia zg6F${4BbnbaFNv}5JZv3MaEL9C}U>4(T*MyAdYG-;=D{8&)+paW=yNTg+{V&=h$nNkUd9v0NZTa0kj?h-_Xy4>J?=hJ`; zGxv)gA5jN&5pjtmp^I-kXQ2zI5B$D`w|ELd8VK?F_Yvv|%$5lYZ5@LG%#)P}mJWO9 z4ysRvu9hLpEfJ(j7FC(|l~XcPwD1Kaj;ktKYDK8lOc`8te@S!_}I&dPPM(Q{HlGE7Na&OkxD<8c~KZ;IwEw9hVcl&hSvE5DC4YQfZxL}Ah z4d(qoo-L=rIQ|b%O9KR#U1|dwhxNSyxAnaO2CNV8t;I;Dz?Y5)0ssKS1pt={Y6CR} zwz@MJW51V0Y6Cn2rXT>9glYp-1Ct^Em)vRtG6S=(0hbYL12O{!wgHz$YXd?9cDDhS si)#Z#B)!N10C!<>WoU18b7gZ-O9ci10000C01N<50{{SD%K-oY0D59UQvd(} delta 107303 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

  • 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 P3;<380059^0{{R3H=sj_ diff --git a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz index 1254f21401114d73b9e6ca9d2ba58f259a42657d..35d83616def44cc82b524c2925365c86ebd7e8b5 100644 GIT binary patch delta 661 zcmV;G0&4x-g9xk10kFmw67a3XNT$G-jtBw(0K^3V02Tn14FVW{rBq#S+AtJ-rc(dI zm0xNj7Cy9f5)uyxScO#RG}yzmR+UMdU@5UH+u6&s|32FZU}#!_`Vz(Vx#ygFuYH;L z6LFDB3^(m|8x{`_s~JpxEys)b1m?@h{m!8-a*&DL(FrHGv+Y{39f32US5QNlK5<`}*3paW=y zNTg+{V&=h$nNkUd9v0NZTa0kj?h-_Xy4>J?=hJ`;Gxv*s9v@K$brEriB%zCMJZGT` zs1N+Ug|~PLLK+D1`u7p)3CxxW3vC^P0?d<@2$l|e=nkq+hOU+&%q{+ORC^BSaMb|TJ>d4akcjM zv=Y6n@|ET}*XBsFR`lP)BY7P;vac{!{Ke?5pDJBc;|^KXxbUGng>WLFM(Q{HlGE7N za&OkxD<8c~KZ;IwEw9hVcl&hSvE5DC4YQfZxL}A7G!5qcK%On9!8ra8P)h>@l}`d1 zw@0@DrbrL)t;I;Dz?Y5)0ssKS1pt@){{b}ywz@MJW51O*0z3ow832`b0!ss#8UU5V v0x|=)MF5rg0x|;%OaPZI0Rln;dQAYAa{&TH1HoPZm%9N18wOEf00000=Z`T+ delta 107266 zcmV(qK<~e+$pPGh2(ZQ%5_kZ`NQsk0P&uCg018_P02Tm~++rAi>>d46+sg50I`jUA zE18b%LJP7D6!NyvQJ_8=sEPkRmZ&3B=;zVk^wkan^|mIg5*baW+KkwLw&L&YO$P@cD9U zv9*?uPn$1;rIps&89pxl{qKvx;__k(3(~cvc$@TNTM8i)2=1f5&(gCj8nEmjPbW)8 zMZQehmA@Aa_HL5rKvZJe1;^6b^|M&XfVEqZ)bjHhc1~VDsZ}n1PE}Ke0$nQ4B5I*r z|8ZAVzpC7St>IZRj8VT!OH1PCC`;0DF0yo7060ge_|qWmj{9*57>$ebG!t+8$=P|) zNry$2_JJRym4rFUq7Dh;C+)_09-VQbk~NQutt?A3nf5xp+8Rcu{kYrgMg2SmOcr(P zssO@;NPA*;`|wB`LLNHu{gk1*U?wTPQ5xZO(_y235S{aAcovJ|JkDc-84jXF_p)>#&WmESw!GXQM@!=zXoP8YwtSgFO39E194`guG$DUbm1R4F=(IOzZlE8{}a6UAf{E0Fj%xFHc(M57oY%7P49jDnCD z>=82B{Ej*GQ#n^95~fp_T9EP$<4afUg-Y7%1`%<3VCKoN8(#(DBI=K0coCy0$#Pwq zZc3u)T*q8~%G5%7{7$)BS}H9&xa1%%BFfr-)I)ia)hjSMv@NW9e6!dc($<=r~Q@?Kv+?sMirw- zBv|!PAEX|_YYu$jy$_@UF-*bK2ZMN6fOQX|E(D7dnz2zIf}2SDT~r3^ zVnG(FY_h^Ewa85Yf>KyC#>uj;uZsqeX^@RUQB-!2x<3(@Y4$l6XcL5${}L%s^_NW* z$Z0#BZKzzU_#~x<>{wJ)8p*`xu&yu-k^~$-Q#4+Pmx$Q-(jXSvrUNiZW6pq$wrtlP z7<&PwP2zqxhm1-%%daYr5TL#LY&56a!llh`$|*t2k7M`9c@~-6p?G)XclV3*KD&%x`i}0P}XguC7>Eh zNvCPrkE3Cu)v`4Y$t(yx_=7X}S)Hh8$|ARJlLt7eJUaY;yTxO1 z8}pQHYArp*0#}!KnDlih5|`ASilIv&&ZE&NhF(F29mGFQEecb45~U%0r}_W|cu~kW zIiV)gi5W{vb-WG!Y*eU9fz8r3kWPl5@pmrZA1N;o+v1-XBcd*L;1le8r~;64PF3wm z$)eSW2i-s0YK>0$}CE6@oOtr*+KoXA@0xeSbx@-%i z+mv$IqR;Wqac89ozgA_?z{l{q95TLK0Y6HDA^k)>U*E_eG81!hLnGXz5SLLdV3KSM zW7-J}Y_mA(PQ(QW5wb(hEA(m;B?lH#Zcv{=}ECniFmJZrqTGQl{%uSA(~c~2+Uw=9HN6yd{|S5<3Q-n|SgDk0C201eVHYRJ z-^JKlAWkju0%^BytBo=(7s05=qHlmDrId7W4Kpc6DQd%Z0EB`%%$$`P3(6*g5S-pL z2q+L3j?!dUXzf7O5QQ~K;gy0M9F=;x}KI0+axHb{1zao11q~ zg?|Gu=aMFk&ni=`z_k+BifqeV-9myngFLx7k7?0nDaJW*n1aeO=-xn&vYWsI*)Pqd z5^1pf6#6(9kN~*wC#*MfAikMoO+X4bv#wDj4H8q+2>pfO3L=Hq0TH}HG)BPRFBDlK zxCfoA^EW7eA{&aPoAe0#_oA(I>CjkF?J#-qXj~9H0hwu5KJ8(?6wpSA(vs94B9>JK zupGqhz|@dxN?~%PxQt`y=Uk>#TEJ?q03yui;nX$so2P1OWpfi~a(P}#eXU@@7$Vl| zf{4tbQCDW6u9%j^AcEon?TkH}DS{a;@uPP0HaNC_NxxR<^Y&pqkumiks8??Jifjy; z>NQ(_Lq^MaM9T?%Eb!{4_?f~O6m*!3#{Gz=(rqi!>q(AjMO{a;0D4KGi*3=gp$J36 zdw~yZb_zIQAe)>5UMt}B4N2-ThUMy8FFV!TwvcxeV>sFf(&g&HsM56BEE*oRlo zF-3C@C-VJTzF*V(RDLJYKx;(ta&<>DwZn>ej!>)^sS|#msP}7rzpj?8Gn>m7L0T}h zrG^ddiByaM$?7uVT}xdVkgPmI^~$KP9Q#T#TEaD{cK)%#r41+g>G~flt$%=XSJK3P z`1@g)6yP!?(#CC>ZCMh;@pMBnEJLbgAoObN17Af=0kag=1Zk*K5@sd9@K8h^L)I7f z0y=5lWGw9roB+#lGC_%DGMO~(x@BrC?AKlzpSd!xo2aPMSweN-!x$#sCfLHnQRf_f z|Yt3%NTz9j3&vOGHN3f1tXj;OdwUYl})0!B^A@eM)B1W zmJ4j5-J;IApq~fgL_OI`R$e##_!tt`e)t8nted-Qs^RCp305g=6d4!512*Y@AjV+@ zN*=>BX%|trOOXz_7lGBJumO)=`)D1oG<`NqdPyf5Vqf_zDL{b36n_1BC0tz*WL=m8 z$N8T=RanZ-j%_E`3{f zpqR!_t~3NAflRp$v3aPr`lg}0Bq^h?DtNdO$g;^oVj4er`fw!xz$^)WFpE@|F9B#x zmttM~XzXS|m#xjOu8MGh0^r(gr0G@AVW^>F6|_u87Yl3YZ8j(liwtYBlf}^Zk*jj# z!H6Ye5kfFURje8vEU4K0d*E!0Vwk$ah>(Ob?9d;6)n4f~tW^~y)Me78y@adc1yUw@ z?U&)|%eKH)Cn{h75HS{i#)%&Tk}bZ9U|>|mNQO_!!Qnh~!fCIeHDj8GQV3>Y1LaXB zR9EB4+GD)GS7I6w18EtIy@|S*qb023h+{zA9@&Uh31=Ae=8p9N4cTGe%Jj-Z7kM@oWlSb26 zkjgVyC~Z0_Xs!yf^-YRs;#_@^@|**7pJ|~MEMt<6Xowgz6_gaM&>;q7pkN)K z2Xtso15shnMFL=dTTSc|Tn(bP0p%ZMU}HFU26fx-1IlGIfq6EZYl<>hdX^4PIrerz zEXW>KcGq4XIBS{L0Wl7cYrw*h+eg=R9$&NE3Z$r8D?25Ul=fO=Qb!TfmS4ib0~nX6 z*&UTS|zo3oM06u!R zC3ZKq_r%)|dvA`m_xCW!3$fAZz^MdKB-p(u@L<6*H1p`|){%k4sTZnXK4Fu0&SN}C z@m8fdnF5&141_+5!v}G2afB*0i&bvXgRQU>YdR5s#|<-5s?Hf3Pr?PMF9&l?NnLg>&_)4Z_{M@qlfX zs+^VtU`QQzarYv$1?Lcz`*CL1EtGK!)828CvuC0OWk|ZP|4X+TztsI0Nz3e+Rm|zH z>ibB4q!6gc6dT$@ZZ;qtk}S?7ecbN_EIx0-K|t7RN{CsBhdtu`Zn-#3Nm++ryXaXw zNH5~L(kI=PI*9N&o&>7AX6H6DjIHdsJe5Gf*(y3b*{|!U3Trc81)*bL`AN{;E5vb@ z9?Zry`cqzg@H!q8DAAnNE+Gni*fL{G{G+pf0A|AS0Z8&5!^`&YO_Fu`F-N$7dM)ET z06oCzy#spDVUMRm#kyJjW5Np7B|NXiwhfP?nHZ*0*l2gRz$oYj0()|OISy6p%30K=94RB|JfV~};alcQ0 zM;xF_Rh-jQ?{an1WaF_Fxj=_iE%G-#ouG=cnFN&bRasFfQv0bPe?_U-sQ z97-C$+!;`rD*6QJ0X#ap=FT8-1dEe=U{DXF@}nsKj9fYX;J8B`Eo=m&zX(n!<_duv zKUQy2yO>&Y9IHv}0z$rlKk~P=DTL*Js@{x2NkIH3{EH6tda@S{RF+bwf`D(ZQ^AjG zfd7V%A3`*czM!!*4+U6*9z3d|DOJ)cEmm4)W2lBIlcEv`lii6ZZtvnl9{0w5=p?3t zq+?Df@|KMO_TXt@HtvRQt*Z6mFEdtF6;SVXu0 z?@ZvpEcB|)+u;Zzpgm!FIa1Bm5k##5 zh6Ptji={+cw={#=36bY8X<}O92_>mkgQ(az>Ua9iM@S>?bM|b;d$r$yY#hXW5?XnYwaL zUQE+sxKM@6o}qAm=ml8J7)F|?jVqHl1j@BfF(FvV##26LYir``%J_ta`G@2m)e+Vepp0V zQDU(ZN5CT2b5nrNxx=fvRZl%ZXiC;pN?L&f+s~nu6EAdsnQ%66wPonmuIZ}zNlo{~ zbh;Bs7i;+V8U9vBw`(Sino0+OJwF2^RE-*AVmqS-ze!5xMK?(RURt!1StecEN!Km8 zwORZ@))Pn$`ze%Z+(O)v8!|Riz3_xN$34x!kSng^S=2x}Cu(TlEcYp*-hZn&{T8SWOeg4HzC# zI)p_rXTp562}{YmqeAhO9%TeDL7_SxNGb-i2gkZ_SF{Q$>OE8q8}Tc*F{`+p0ykB( z>@4IoX2l?<^@0GO%%P~9*A1%MZKR^hsmNBBbq-a3+El9)d0kK3tOrQ!>IDH#^Hu~@ zCfhh4=BOw7*R<2C)ZAX1>YJPRv0b|mhn^AjPi_fH{qLEbZ$j{P%20PenVac?0feehJhTTYH{ZX&y36>1tB{a=JyrG7Ri}fGq$&!_6Gd z$*&H72al@xh6Z3M8W3sknzUlHTCSGr*?*)SwSTv7wzG?<0H9McxvU>-Xm5S|dzzteSsBeTKB*YG>p7^VX{!lJprk0R-Aga6 zS02%<&>g|+RY&ANbM)6yoWnyZ?H<~`g}S9Aw^KD0Lo4}KT1NeP>gL~6-V5}tZMtHT zpPeGRq`ACQT6Hmjr48~*E^=8>$C|Qtd!`!17{N-*uC*-{g^{X83L{iab06q_t=(RK zQHJUkhLWmV0hN!X{sz(hp(467%v{$Rnm^#P9_||NfA~d3r_0;+(3-v907C<7Y6u;Q z`F9_fVfYZjioN;Z0|J`P86yx6H%Kw=@ykzo$S#x2M)bpX`yX~TaZm7Bnu6t>jthuf zn4Uq*g75{9vp`0zv>QW#K`-&rC`;3SUJg->NLeR@Fc^Si5A~j*^YNK|OKd z8QjcWcfU7etaxIPMl1$8Wvz)JNS5)a)kTFtyS;UV_XRM#r8NRVPv|Pleo_>4Ct3=U zLI)~Muore2hN0Q9A*o_5yq72EnyqkDv7emX1$AKC5uWusB;$aib7aR{yGy2jM}Pn_ z71%_+w|_+MXdXw1Af@H%$(>Y2^gycc%&nvChg+vy*HBCK%g=Rsx*mLJ}p{#?6hh2?W$L^;g{*O zT72SU?&{gu;qpI9-2{TyCV;Sie9Eita*$c^^d9yxwV`1w3J8 z=C-}6Ln9{h892Io_sZu1{LTw`!N}fj=-2$~1Fm`OP1M)^w1KEFn$j6i6H_juQHsMO z3KW*9wy5Ed=K(+y^qyn8rtaJdHF;jXQySD@)`?2tH%Khqv?P(`9UtWzm&6hZPm>^S z%7jyBQp8QU<`kYIv9CFQnsO}?W@s67KG#xzIgsI|bC!>xEWnGBYvON7t~mA61R*QW z`j{y}>r)|hRNul@ zK87PQr&&(OSP$TarHhNi0Z}2XQT=fXm<%Im+tnow5tw`gH=C({>mC#wZ_ABg({Ut$ z(yj(69r!^MHC8kCzlBqKP=t*oouh**G4v{x;UQDhW`Ef~0;oTnw4E)#OmOR6u7xgA z)!i{p=8JkKH>+O5ow}S%M$UklYn(MV%r+}>R}UGXTt}yUIbi3(7`)(&FqK0NzzjYl zet3|mfyktj-{keB#m_&9?<#KaH=s{=7$ zQsZ=@xc<%}vW}EZmDpwGdQp7&W}~jW+NkEzqh{T`uZAjr)}o$uYN?TT69PO-MU$+m zT)(&3hF8{rTxrQgu+!vV-5Zy46~S(C_O2f;LoTa6sNvPFcJmAtp)#d6aJu3z={66 zaC3xL21mAkb`uY0VsK>JckSU^OB`KXen9uEoReM9t@an8gj?o3y4{^dXmk5YLc6kmi@p0weK>1GFiZi7EHmwdLIX&lXzW^?4d5PTy9 zAk^E#>^Yf-w1!nq^yh45&%2BsV$x+U%Xxk9-(Wf3xKPjJ;n30_5}JW%MIJp6)#FfS z*h{0{Wg6GQJ51|C7oV-N-mqp5IPY#)JRVi@X}CX-oH~-M91o8C!QjXr3636T7&w|e z1{^(q^Z>BNJqG+KOE_?^m(z;)3MFW~gL#fre8f}j4Qr_lrkW>si2)tDQSd>2_BN$U z1UhMie;Tl1wsC`Nx#J;-6Xyi{@EI4a;|A;``zeMikCO;+$nRj4RpM+cy==c}+}!X? z^EAxmtxKR2+=?z2K%?n;x1@J3$f;S>`l4i|zX8jKzi;f@`;S;8vpWGt zY)uptEa+Fi${S{Jjy?`Z2J$N!0?6Fu8+v5soM*In{{hmlr$T6g%dJ6k5gI-O^7~1D zqY>T=B5~m{bQvQnx_QbPbyqna9b}g^A#(=^a_hi)qg1VWegM$TOlQxbIeln<5zW8G z`IBF_dPE=H*}08}^2{onFC8X;(1(U-TVDH>#rUqS{Qw|oU#`O!(1YlYazyGzrwOb` zPr_-=?sv_;RSekKnGpd378HMf4+i&t2?jD8d|yB@y=6ZTK*IDuFsIkQKKRyN@AjVc zc2cYuzU1#Tme&_`Q8!hqNcUR0dE_`kGW&5vs)5$6^zqF=OU@79dl?TGSias5Qpc|! zvWrM{z^5#hXx}qBuIqpyY5~@-u-DW7OoL0hj|nl)V!DzQVJ1q2j}aKzFn}q4ZlQzk zX8z9wzHuLnbyBte!`oJ@^ul`|K_zCRs!FoGeDgJM;G3Xu-)ML$SpgmmirwmGuF{L9 zbH;kOBWuiB!~5}fEhsWbvpj|KzhGzOCU&FR$jZx+rn3DiuEnibaC8o{I+HXSvTpDH zp35$lzT(e}v7cEgxYr!$!_R$xil(}mvNdJ(ptavvaQy^YxZltWfjFYjqaquO7(0{T$S{ z4r5PbvP)IRW5l-a6K4+==Byt46AfclG`Zu-u|?swi^x{ix!04wa>V<8_VaI#7V&Cl z;ryAquQECKZDQ!_gRdAvOVfk))S;PB{2o;A6I6+f^L6`N9?`~+M&dzB`h*UBO$l$d z?oi?J(*B$iNcH&6XNws~_xfAMz45px;T%81-!E`KF(43gO+V=|M;$L{W&;B*+<1)} zaTELvB=cO(8OpE^4#EO|L=X@HO)pi8kfeO1Qj%SBlrsoI{_rVy#BU;QV0}j?IBm(B z{y8V8iMY0~EUYT3@LFPw z$){3L4Jm~H-Q;8W_=)kfy!yd68f~T9`Fpq_Xun5iqqm2DO99w_6mO#JEG1ANb|U)h zHKm9aw&q2KAJpnOC!*hsGia#jG}`v2`c?ybwjt(jRN{mWG7cFmbL3imbHZS5ZwBVY z7_3doKI&{xp%CT`IqW1o{DR0IV7qbHwzdYB3Sw&tv$`rmNLfRAv$8|U-h6xt4d3Tk z*D@GIXHBuV7|{QJUrI!8gt?yHO){14SG!-BBRGDY<3;rdomS-}NHvv3#I&s65XIz! zIEPOr=#O|*V8E>5v}BoPoUjM&?Go5jo1-L08n{7u|bs5<}IOxbjlWhcc>@Xm_EXWWJ~& zrG)G0N(QZtu$9Hsch-5>*Hzf&8oS@Gd#SQudaj&)Dm}ohMn*L;!2|_AI&edEmx?4W zenJ)Xl&YzJx{_XcVVR_^KsKaQm`s``Mq<2lGOaB_kFk=D{si4Eh(Sn%@O74SAo}|I zTzxL)3g+8zIFGU}GBA_@YAwf1Yh(7{ONeBGbSdZbwk8nxhY;`3?#yg;B#LJgCjIHP zJ3>@8JS@#!n;y(NcjF`I=f3TakUzH$UEBs40yXV_kkCI*BE}hU9xc?_u2V5;n5!+a zGsqUn0Lan(7xT!0<&O1C4*%q8@F~<@O#@X{zj>I_PN_`u#s2!H%2fF6DBA5+N$P2B zmSS}~MzY!BY<9yn&#?HgfY{veM@S5xIV}Dk9R}%Ql@&r_mw|rEbDJ^GeVd%Sbd*(V zQ$OH;c~avY8J@~|pFcn`{(K>7j=uCQMm#eoLCE3nP=(};Po|EZSPj**CG*WaRb<8) zsM+Bgh|ZdbqPEYSRy$COUn+zEsA6c~^#0`?!L;Ir@NW_#t=Ua7JbtX|iW_WGSitv6 zj+lrmt%>L<6Eeukcue}WlkOVJfn^&`3(HD>G@p;qv)`(c8G)*Gu1RI5ZVC2Kl`A2J zGXY?Uhq$;L7tPCJAal09g^eJ``6s}Ia3{dKb54K@;c=O1jGzbjvF;n2UZZOcY5Y6} zeJZ~MMM%SiT~}gWb10eLBW^9Orb2LA=2DUo+)FUhS0yQn(ynTXIK^Kz&TW0xcx{D$ z-28?PN;R)J zloAoSiwI6p{8CQLmNc?3r$QEPX+3^-`!))(^L<05Jn|?s>CGOs@W8XIlex8mBv>_u zrqK?57=b-0#w+BMc0B#)aarAPY`(JO<$~O^9C>{q%4L{uAaf7<--1XK^Yx8?^)UgF zq$AAg&Z>;20J6(RM7Fz3%>5bzfuwo)EvC+3x0^0A?nBShMF7%n*7_LV&_h34SF=O= z1!9vsh7B9_p+kLL)uIWL5n3Oe+U~}9`ntgH|MN6k4ua#UYlTc-GstN_V)}=EV1@PhRR34mvqzMArP6S`bfIUPs&Vc2z&N=RzVnK)?P=NDyHiVz| zq)^FlG`4OjIYXp%VM<~}JOy;WbfG_i1R`)#Ya?nemV{3>H;y)5ZyaugNAUo*tl`}d zq?G*Fy<(239Gh z{!$C8s)gYv7{d9nR38;Auws~sDYVII{MBS3M_Ol3Ro2EQRpB4JGrqV4_s(M4`3hc& zaYZumxr7+cXm6zl47p+`?O9EtzWUW>V1Lh5e~QNZ@QcwLBa-HS_|Yh>hO4w_k0aq= z8|E=pr%9OslQD9eA5Fpj{B<2p=^NMPhq^trxhRLuNx#v;lA@6V45Apfml1Dc-Q5x$ zI)prc>paw+VnqTkcEw^*s}VXJIeJ!0fDMfjKz=H?4%Pp(bS>4WuS}LlkH}NC0J0PpRb~ z*^Fr4ruD5RO6x;O&#yyw+H^X>VhqT83KvY_s5+?&BTG0 z#iVw#7Rv!DVeFRweU@G%-B^$MN&;oJAed4u;ew^_y3wAKv*k~Bn7T2nF=5V6h%0>? zLdSD{YTCkom+g`ZGvA+fG^R)PvK&?=(=B2LfOJ^-mHI{(Mxn4;+tBzUyiHW$@r(UE zb^JQuTkF&N7O0wDI`py(>vAk`m6ysU&4D|zx^{Kf^)B@y|2OsXOjr5bp9Qx{9=KX= zmA*S*gmynWfMBT@jd7f)nlB*|Ug@x{DZRF1hboKTKdwNgxZFo}YKk7LyA6cm5yXzdsUv*u|Q zw>C`OIvE_g>epRN*49IyjgFs;y&6tb0Q7uvIaj9y=Av}dF*LKMQRj1`{H2J_I3tGs zJKI3B%8N0X)!zU6!a;+e`Bh?PJry<~s6Q>lTHDYSYqmSDqlT=h5qmx8z%JNN>r zME-QiXZkd8PUAiPWQzFs9^iB)oq+v_V1BdQIfAjos_Yk-L$mLx%b~y;AlpSFk&~!9 z1^j@E|I{bIvNE6JXZ%;`voWQs(`-~{^XnOZ=I?jl^)Sv7=uTb7O)b(C&MiY8UinBS zemV(`_cFBQbgB@9>L82lB7u(?p55(kP(8p!*_eVK86EKFHK=~Ml2ksG^RSa8qoNTo z%;ceW{37^ZfWELUD~Cv%k=YI8lYiuIs3K`T6^0^5j=B)e$8%G}F<AZ`Rv-1MBdf-RL5#TKP*xQsbK`R?E<=3lCR?rm#n=KnrZ`4s= zhhd=Jp6CFsg$Wl%J_luDVpOnP{BS4`K}d{e?eBV1KI& zg|$Znhx_lh_D2Qm{ z;l|DmT&Y0h|58kLl0l-bbG*4R@!t4U$PRO?ZR(TUfV|81WgMm8SoXDu0C>c3FWwFRM|^^VfXmdhI+At{LMoPNij9H5Jqiqq12VR@~_n9U!5!e>i=ta zA`LuZd?J4L3{W_eYkaz@K#v%rh~GV9)a(MSK5~IpAGkm>qVDQfiMm59$(_UQes-D^ zvjZ-oeWhO9nj32G8$IeH)W@xj_Yf`K?eAt=m8a2+0(F3DW z4LKO_SioBQ&@yU5de7kSVB^i!$r1eivw(qn0LGY(fMM56qjbkvBwv1Pw*d?PYt1(F zU*E~lx8Xz>%EuczFQWv<|N1;xG6Wi9GTi*m)_w$&&HKIHY7z) zPd4^8Pqq%}J`*gEqP93d)mzQ-+%E$2!O+eJ#leXx4q; zZ`H94o11ei$4;oOm$q0n|wSbsWhdT*wDY99Cr{){c zqNkgFVd>`=y=TAN)iKTxP=T6mubA`;Eq%}=Zd*(Jy$%>}nU5&$V$JJHI5>FDpeUizb_j)k>mjU_l7(Eczr$;@a=db(KYNV`;EFqH z8Gl9}18s{$`OJ3@K z-YqIH4gS9giLuv(Ywao3bO@bZU~}Pd^!AM?`Xr&FyeMKVBA?T!6WrS|GB41n0Oprt zn&6(${UW(`$`L3*6>lYocX#fFIC`CDILq>8IqTz)tHl!ONY|-!7){HNAA5 zhH>XA%kpG@auL%Wt+p5>V^ZMpG`UEBf1|s0BMm%^e=D8bP0QU{9k2Ct`NEKiTJ{&< zzk?gZa8-C9El2@;N6Bv(fI&~)DQG#nZsQJ&O6HJvt%#NR@aJ}AI`s&uvu5h*bS5_% z_VOd8TcbBRVGro_E-EkeAj@ueafL~f<*6)+LUa*GqIDAB*Q<1#xLNSheTSfbB8xN1 zQq}xlvoW=7pPDRy51t# z>3o;X!w84I~=$Lc4B#WkgJv{~5`@kacA{e(`Zjv3Fj ztat2PFFqsPsiYz$BSp`SZ90s!u|n?W5N#o!{LAE6MgI7e>qQnb>LSj^aB`C>abRXE zQY|Y>RLRMgo|t$u-zI-IYj^hB5E{PKC!Bj(cS6+1nclwTK>46s4KgR2i+7wJvW+1R zOMhEzK)2aX==gcu2J`rT{a$%ME+w^^Wkh;$5K=m8gY>yNu7r_Z@`Iy|GV~fCHoBW? z5zu_+NFYOD4I}pQA=DMso!_)-1E*Bg2To;+s<(qUFTRU!X`_~c^(L1vcnq_Y#crAx z@no1B#+qOdPr*%aGhAL*otVI`P_;Pst5PmAr@WGxg83CnWyA4*ts+x{E*Ty2$2HZ1 zGAAdknvjFKeCM&`l9bhqebNfS^=Pl1z1imj-sUhb?*PI!#PvGsO||0=XI5jW9YZR& z)qTPc0hjMajs-d%$L@q#dfE7xYK zd#X1QtB}}&v8C4;MoAps5)1yRK)N{PAB&UVA4&k*iOD zCG2GX#j_%lHR8Uk*n`;LmT@2ZkB_;)x^_=S%lqUCErx%8V{D#p3i=$uZp6-2Jh@Cp zhw)^Fciyka2KXmqrq}fGqW%?RU>AjB&Wf3$ek_HomHraDSHlCFbNf3!hr;UmZ28@x z6%^+tySLM=$no$G-Rs%r3W|k)zpawl@4##oyzb}@emvFhLY%cg`>j{^W9l-bFmf-R z4!@^MGIE7~!sc%&nO0FYUlinkRgJo`yi{;Ba=SW_+vmehP1Sv{eE{giFEWsoK7-Vo zL_p~K{pvRbrSTKm^X=l@e2eO14197hV09KumLgNWWeJ}U zv3!FPR8h;Icfu8cJN3#ytZIF{%QY(+r_q3o%;U{S@WnTTe-{Dl5&`8ywHlUQAhsy?%fDi{6Wu$*&e=OLA<5 zn7kNdW19 z!^{~|zO1aYGU_eo*yOaSvN%%MH+STeK2+PJ`lm(l?3j)HG5vXqf!yTkzC^Qg#8!89 zSVQX?4kg1bdWaZPJ=!^93!MISPRpxJi|0VPd+9jI1MqKV$*c;0N6iR?R&igZd4auu z;r?WFl3Yaii!}5wNW($VR+_`+g=C|2!Ed01S|ZF-Q}JsPGLn$V zr9--NJd7$w?0Msv1;R{dxZc3_N53fn-8)bL&5?5Y-`i{9tdP*+)1OYv#Fl#`6`2IL& zjYhqj&}=GY?|W!S7|Nd@%eg0!)_7-nfsl$$on4)ArY;oMoMXvtc4k|wyXJ~m?8Fl~ zRlLpErnA?6+9^A$O+UAwM_&u9Lw!2yRBGDXwu6E}r7{bYSXkB#E=p0^)aE0J;#?%x zH^psNP{W8L5pf}S`rpZZjdS*Ym+1!eNmTCABnl0RNfjN30#z_Sk~6(*DpXrxm)Ur= zcfSfhs;35~(899Q@hfPg0jX9dfr-AlH1x(DCDakIU=qyJnMg3X`08EPE$&Ko)+D5wz9l{suZm)?Fk7k9l2EujFvvn%K`YYLd&26WY&(4)Wu=IY% zN3SzglQV?#Qfh77FlIRj`!UJ6B$i3dhj(loY! z?^wBg;>9(~MB3}wKK_;nAIIy7a^8&7%C=lQ6#k981Yy;W>+Oi zhS#_Fwquq9D5cq@iPIIgo)vw2Is(xW^f;Y>MTyyUQe0&tc*`WLj%XhD5_wp~&l~D_4-t}{NzVck22VDEvs(rg*@dnS|M8?m{4a2@^ zDAl=S%^C)1;KtdnPDGj}R#Yl7#m{bxD*}{%lmav$pJXhKIWTvt2$B(y@F7{;(YT3m zGSCX=ri)>fd~XI6iB(R9vf6cduH#$rnyL!bOxD-0S5O6i0W9l^*-1hOd>>mYgH#CK zEp0C^R{NbBlEL)0t~2Z|iqGRbVL&_sk*0!%_eaia&jS z&&jEdCi0`j1s|YS;P9pk-T{TtWF+^C8B=e}`oPGhU4W+g%cjU~@P95dDgdfJza*p5Ck^7;HGg|@ zYr50fFDN{UJQ-gwlm`bGjK!fGp%bq^johye z$!mrK>iB3H9jw!|SgK?70fZob52XCW7I#5qXl@fQA{f&Nq7<4Gejvy65_sbVBYEd5 zv}WU3qCUc$FFQp^oV!T$`7}ip)5)p$j^9_rt=n>tX>80N)^>4v)R9l%EB_L3sa8#L zY{2Y4>F$3aF+jbfnm}i+L15EB%TEhJ#v$R~B=>f5p%ui~=50 z;Va2#j?piD!*TdF%eIVKb>l~>4O$4wR;72Nc20Bj{zbxd!{EQ8`V3BQLpNz${y_yv zn#;}rN*#kpZ{={-#>b=eu4vMT%B>HB1qE`|4@J_%+mjK`OX^m{-2!X`j7S`ZxZNoM zdBT0Z{yZU@cOg{i8?mb{f3sa&%EdTCNc39mE-v`OrgClMv|^6PeGoaO9@aR`3mmIK zcQZNJ(t42qMwDq^;S*}-1pVujPRYheYQ0{4eb=ok6Gkq*=%`S+ClL@LVO;{`XHTq` zcb@Xnf;lL!_!rRVw;t14nCQIMQ}%eDvolw1naMVfGf|Q5`6mPobdAH`th!mZSarXoIh`q>K(h+XMl79G!d1_;(ypw= z-86q-J#r4dA~`U?e=Cd6r)`ExaBuxWze>ZxzR&ut))ckzG^#}8JJ~47)n~A1sXllA z%cDUna$#TYd!WJg*S({?y)yU!hAqmlos;eUmt|n@s~%lzQ-+`P_D*{^#!^n$?QMIU zkM|Fb!YOF9bGRC3aC*}75)b$LeaQM8#+yzCRf#>nAcLc$f3IO|<|T}C9aPE>hph($mYq_7A<2b9jV*ae%A> z0fwi(?ae`;fhc&TRM$t222fTKuQD~H!o%(F5p)MotaRB#HcfxPZlkTTy3U@x+WOX^Rlk(K$Rk{otdI-h1z(&FBs=ZkW)d zzP|~7?_nZB5FL5K4TZz z3h!6C#{#gvqX&ZOp|+iA5}TP?BIc4c_?FQ<7%Uc3;S*1@<3nD=*Ehh~#OZE{{)pzX zp74*@S1LgkN|P8*B{F;xU=t7vOREZ4c*W7yskT@f+*~SCSL+tZfL}y6kC~Fwp^5|JQ9By zqNUu@0wWk)O*fai`qPj3cJW;i-s1e93v z^DEm?DS;9@JlSLn=60;k*a+$9Rm9A+?a~X%To01@-9qxYy3Qf;G1zXGFuZ+7tjhw3 z0b*Iy+{x5SD>DwC?J`0~bmlNs1@_pegt_E?Sv)=-hGv*vSh;WctSo&f^_TJbwn-eG zf2M+fPnKc+h8zB4G$&+wq*XSMK_+-e1IWfh`$+tbV0H8q6W;z>c(mLl`5 zpoxF4@3q&~BqTB$Nw12bz}j}a*&UO91?+vzdPp3GiM^f`-%Vc6F8868lV=ow;ztO= z321Koo<*WH8Mj0yNVYf4u6>&4e?VhMY(i@kwWXBMVubXeG5#nl`Yhb~P9?zqEL+k~eO*>d7yk}*`dL+_Htp!A=Jr;#!o!ONS^o*Xu*VdMaf7VRp$7;9qlwvY!9;esH(V1%TAU!WY4{8JSJ;L%@ZB(Y} zro!?g*U%*+^57mZNrmJ`F8PwtxLL{RL)Y54!fSzO`-<7OA~&);t{!@x8kP#8i^fnU zsg9ua0klEqSIOj2W z9>b;X78Jx92)4(8-EFCTSXr@qdeA#@x29HaTk%Q6b)^WriO3(3_9f9w?Umx5FrGMu z&g_@{d6pI+NSxo|+P+zC@0sBpFq)_ftAOub;NZyYMlL*3JGyzWGN(Q8X+eMJzsxB#?i2!A7pClU{dO;SZ zxZSx_eGsIC?{By1tF-0!+?3LA3>D$*?Y@@WjSMD*VZ7rv7sy4fNzoX=Z529I&amr= zG~<$P;MW9R^yi3A^V9Z>L|=OkL>bu@9pZ&wJPk%RVaGvFf6mb_yJG)B#Js9sWEZ%M z1=DV(*)QoR8AT#CMp5k=Q<9^AcENoV`)P6k?V7jlPt`~x@1BO}6+sG#SIklsPewdq z9J9<4F&jdp&AS0ov*b1&LW9i3HTB4$Wo3I#^ z&a!I5{u=WR?gacNv1%j+R&p7R5fO!q!ZQG(u;GGoog_C&tOVP~9pT`1B>__jh6g1g zIRPcQo=8~*qzLCt2aKh^^A%t*RyHf=SWNA7alr_$f0N?Z1oGab@;(LQXgtzRxI`5; z$!?mOq@uhgWV_4A{Xn7Zp%Z9BN;zIczFS9gJUwz8D+(7r3TZmBi;n?!;f+axpfs}d z$KRwFG{dGO>y|_DR#{3P)9TrJFb~@=2ar`KYI-LYY&k_&-$G#xls<^MVWh1vG1B3I zISuGHf91E8k;YfNCrbcjD@3T|sHOF!uq<89-A>xF5uL9@r`To->^~pgY0RA{voe;%K@TG(%}RUrcA=S5`V>p_vgizAC-#IJ76-k!(kUGYqGqNT~1UZAv_5OHN` zLi3g0ej4{Po7O%$BRn*adU25sQ*gx6f1nP2j}DVO*FEwK&-YNLX{keH_&%9PuAt7l z&hP>G`$G&JI3+U6Db2tEr`V?-JRyi$F-SiU#t9f4IiQr#i41qvIU(25 z0$iqmrJGg`J~V`Ha`3@^4!rHdhlKG=&Yt%33iX@NW3f{M6>8&v-K%68`WV08x4VAf z{2OmB^gF`=@rV?!iE69m+DK~T)#+l(4wh#U`IX!6Ht6nNMp}c?hmnB5OGDgSR%b9=DVQ>!_BjWNO|Qg8h=C$!-#l>`sZ?J09~*y$#IF1Ify* zU@r!+Zm@rxs&n<&I4Z>%7gz2_eIfhXmf7MmdSprBc?S(~cg)Nk80Kjne;m?B%{bx) zT+;JJMUqXG9@?&2B3A{G5j`sB=f)S84NVWL7@&7?KyWivz_~@HOpY4l{T$?V<*Ye8 zS&S&ZYS~36?2t{4C;%5!jqUf!B9l>a1C;QrPRl`o1!BvVvD?HgAKLBo^w>%rP}bfB z-0cfgW;$$F`<7zrjW;X!e_fzKkvr?X0IRr$&J&>w7^UWX1s9Ds0U6$5M_SmGns|xb z_L!c|n+;%p7f*t~h2?L1+K3kRtulv|I+$!%d-hf*(}=oox4|qWo|VPq_O$_CQ}?c9 zu#Dr|%{FcRy;r+Uee@@E5G4yhfH&&+t8w=l-)2=U(=~b(m{|h}YTlZ`+_QVBmH`GdeRA3$&q?TiRD_r$(lzXtj8cIPOW) z8g{?h*gi5~jJp3I^DfagHE5EIC)}$IyoYbtF&+2l{~yyE`2?!!9}?49R1?$h7b$Rf zdXY%+(B@vcR-;-Te&hZGPW&wpEFRk0O9yUL%45WB)E{%d@9@xqmiRA*Z8Y){(X>I-ez2Hb z?;p*)1E=Z#_mKuZa-5E{;veWJmVw`73;!>fC#&;{gLv|Af9?B9TX&Rng=1~7nCSnA z(a1Lzt;UZTEWoP&hlvMpg+csNa&&RAOa*@PkwOZ)vQGiI9P$5X(a=Q}t;&xXFqCco zj~Od>h~DH9H~C-9irwtj$uc$i&4&(G<`s4~N{ed$k0pz_&Z3q5F+)np)T{I!Ua&xhF*p1;FgO89OmEV4E?LDSYY^bMT4KH^wk=VQ&6AH?D$`- z_+aa0YT{$o_fd!{NKW8;e#apC3#c}f0Hp9SU9lt&%6D`$mwlqGZ$s_ z%taa2VG+3g*WM^rem5N4;|Y3!%Sd|ujUqd7kz8ie+ja+UIFWa9C}5XLZ`caS!E9g^ zTVn5k%CG5YOv6!af5Qnw&q5412nx=|9G*;Jx3%M(6sux3 z7D(Mz64@ndQCo<>P)<@I{MS^v(rrhJky#tJRMzHDo+`Dn@+Mi~=cWDg-nvq{@U&4` zUcW@mDp~oE^WJ0_-{iBgzWEPIEol3?I7}upk>BP;a*eJTL-7j4fU_n}xeSSWBnwg8 zfB)PS;_sf-%D~EFS}`$r&I%^b;T9y?aa>&S#l9LOj}K_sNK??JK{dxd^|`p^RCUaiZ7O3W&DS>; z7arfEP;OBulRA?st5&$tT6$q+EB+*~J{8@gF{s+)>J;)u?$g9Ys~qb(&2!L#)IpBt zc*y5!Zj0$r<{3700P0Zq#t%U2oVtJddC;L5UhT|~Ug^j(tyOkJfX{bA(I{H{e;fU( zKYNV`^SD)8k}oJFna!nw0GZ`{@bWMoUh%oU*T6H^yFejzHW|@*W2reH`jBu&*<`&C zBak${N#ZGe>?=G0Qi)NL7t`#ve9SuY=x5mAPj4wh9;A@OVn{0=M&f#w7wRsFpWr>u z_{ip)X?8h{ujO4E@o<=qfDC#Of43l0l8Z^EcwkOcsyx0{MJs+yhalUGMm1A)q)qHx zLBXD%Gl^`$sZ8crwgME&_;eaLy=&EW_0eSL1Um=&(An+N&hc{dea?wq<+9Q$E0~27 ztYlU?Ry22ENzUU$T*4H3E)^?EyiuSXGSU;~OX4tuiXrAVJwM(Eu~fjp;@mUdn46sI3-6xv zY|udj^WvxT=lcGxgNDa7IH~4PtonYJ!t?uXI?agf=n~T%`dpgF92DVH)3b0Qr{gUiMP=fgpDx3V!pX*FfI2&{JkaYcK?d;+?SGLI^ zu^?|pmW8eCP#crEAqUD-jw-p)yO(t4FjX>Y{jF8aI-HQbh%;WOf3N!xING27l8kS8 z%s$QS@M}kSKV&Zz&{+;?z}!Ckx$Wx9J{k*Q`@3wo^1u@DF{4R@BXemRzxo^NqJa(& z=xOdB79G=zil|3am0`+lQ>-$qgc~*YP8nAh={!pc2G!SSDHD4Wzma?u9n*6;G~jno zeVis8RfQYwu=;q_e;wCpJW4Y$WKF)&9_#`=*V-;CqlLcixAjmcfAyrfH>-+##81gB zUt5&qxqD(ua7bZ$B4U2lV(X0DZZsRvH;ET@e3ZY~JKE*AY2Xv^4kG!%1>EDK!yh0F zAxVb}(3T{?3=G4#cTQrs*oWgQSy zTL`(`g3?Mq{C4yHb-3Ygx?BB5S%?9i)m{DP0b>1s^|Y1h=WFZl;cef2T~(=mZn^2n zpcPmwFlYf5{#|XlF@a%2M|`)d6^@<(i~4vz zNVj`8DbrbwfATCVl))rP>WN(~zHe&Swsno`e9D`zHj{d90bY-lOTSk#vi)3gGW^ag zTf$VT%Y9O6iSwk?67NZ=zRQ?;Nc6fxzpn=+s_dU$WC#~CMGAKP8Xm@jiZ4w1{z{K! zx*mpB7PV{_M-ehCUC8qB`Y#rslv>vclo>s&|Kj#vF4ws(NdU1@Az<29G%B(})Kp?W(6!)8j$ zU57W>eR!RGfqq7R0Oy9d2l{)p_FU848_^m%sa9&}tQr|S#K-94V5FV;QWV)Row=5g z-`l4Ce}|?sFq}+Ty3v&FBk4k>%0HBRRSCpD$MGzGN| z8YjL=RlnR{e`Xt1@2iu=d|p)*TwYt{i}cQ zIXu+jH@f6l!qsw$G0RliATU&Mo^#_&1A~Jav2m6ZeyqRV;TH|2*F}1nPbfYNA<^pz zfBMPMUG+S@DgedNq9#v-56FQyg*WfccWm1i%R>x`T*lv=jPxxJ|T1oQ?4*S(^ITm+$#rTViduYkVn z!DeMRJVoP^pD>`b%J_!u|#B0Gee_B+%xK;&V$GphN$ttpJnoV_39*vdk70gk@ zKRP;#)+I#G@CXi2fojWViE84wi3&p5zyLn@3#BL799we+?ilmV@>$l&a?3_`=wRrU zSBSq+);>G`TI7>IXV(Y|iL>lwS{TxsvEr&C5WH>59ixccjCMX#_@UBP8F~SWe+QEp zN`^QrCuzvMXcJ#wqs*+Sp~4ftqwk+TJ3ifms08)w>7jxf2!8zTKs|*sK*#E2@9Ey@ z(JzNsb8X1`>}z~ZRly^qhsTFc_YY6rRijI|>`S;Bj0|G?j(5s}aasSvx2^Q=v${^t zqgiyp8PW1NwQgd!#mXpBAnv-eDKNY4+GE3i%)tnHXzIlA4ea>3dyPZN#kAcsPXvN#}|p#FbGt4oFPa*4E{3zPfY? z&t)oT$GL&ORqRQ*08;FVW~7!VD_{a6>y%?+`!u!Q5+fcp`B-HiN=C+hP|s}$$p)j< zzk4E#pli)}&91tY#$zg8e-Du~Zc#)nB4I(-ac|BPaNh(L)us!A=okw5<4#t}rI4(L zv~ZH8kNCo)-}k)jCgn9d@JxrFp%u}K>@xvCgI@h3e3U=owO}T(=P)(Z0&>ZVyvl2E z2GUub^`h?fi?W<$DOb^rVMyqsdJi*3zDf&e8RG$g`K;-X^|yVZ!smwO4P|kK3~QYApIKk-gF0Jvp3wv}{&e{=ZV(f+gNaMuwP5UO++K{`A=AaI9V-S8*h96cv!q^AM9S-;S^ zV&~KAR}c2LcLrJa#@#Kuoea8Lb9{|UdxOs3lEWlwX{AqOt9>Xrq*U8#i&r*1V3uDj zrXpnHXQ++ zv|iVJ+6_$b=;Iyy)BpkdywV}_IBU3izq?isCjN0^uUAv|qIKt-HY6QJ)cbzA;o3-3i~qR~}8 z^yx00^D+L}HHfO2MzmMY6NC%qevHgm^;&5NP#_jkDzh(+KHnM0tz}bByHQ=+ROU2V zI3@(FNE|eRd+~gsNL2Dfol;$kJ+F^AL53qyE5yhbBCo8;6pGwRP9Thsf~)HM@6dc& z38~A=tj(Z00Qav9!Mu326qI#=p-9ug#>7@aRY%!<0vV&_{6(IwjiZ!`jkeecNr8zL zV4r_By^o0wM!LBKJZ?|@`WKg(ARjQ!i#n^CQEM3dYQBCO zH!uvw)V-R%>sAwl%7Eg(dZm9ee*+Fj+pVYpM_SZQ_we)y-?te9azd-B^4mo9*THle zD{dv7Osag|80Sq=e%-d8?2m0x5u*ULwRB^JnB{8An9C5KaiP9cABpwsZmrcfIz>M6 z+D_CKrg{g^!xjN5*-|@Heg`n)o4N1YxWc-`7#q^MV)8Tj^3y$LqGR^;e{q6?l3UbS z%I}FFXIz4v7W*NU*(=_JMZ+@%F5d}Zu?X69)>fJOcHV!iYpT`oXr z6{IYi(p+Kcxe@@CT4Qf(idkYR7B*$BVNI+_r$z!_#WT;ws)3oft(`JIDEbi*tgw&9 zOuBs>$Lq=|{DJC9FLB!if7%6Ba}@g(WCMO+cg*}BH=^8H2dQh#RbO#10{+bv7C=U% zB<-q?JrUO-QAF@IdL}4zl2sJVPds2Aq2y789JsEH+ccX2JEywS%&HuMMqHVoX{3~= zt%HvfLGY3KnC6c%cKCcw+e#z=XHWe4lLE=Wj$r&XAPk4!a@D z+fw)Oa_T-_M%~BV)P3CY57kj^J>fcxo~9t!g}YFCt~WL0e+VQj+5A!#+4e7Rl+k=8exKL$%c}*w`4XX zT8^XDgV%kye=lx?dvq-3-m(};2CxP?YJ)<}9+?l9stX&#sOW?^hjtRG_Zeuv=b)zG zoZ)Q2uNzcZ4NF9^Kzk@LVBp@-oKbVfgo|U$!e{0>!byRY{R>G@sc#cqBz%kL<_xii z!NCT7eztbvd+T9*)T4fNodG{>_5-qYc0X80rV#gb$`<5Gy*kzbXTFn(o(t9e{5^PBGRik_-Wa|uU%kHb1_a|)FYcS zeg*A(5X-pk%J>@vQbt3okuO{V_yfZyjbCor&|ro;r3WAVup*xqBr6vgUJ9V6A1fiLZz?PPpI@&FG5{F_L?Y_zUoP-^wnxg zf6<>2*A8;{NoO#B1paqH$@;f%|M;&IKoL zAEwU$eZHvasw%9)xDODLvdHd-jL;gkWOtjL4Y2=|rU)bRk)tsJzj^FzJhO z(Wq4KzpAFhapqru!{PLo_mwqhZwSl1%$I6Xb?h+y~dzWZ!KqQHbZjwkQ~>{D^Jv;qq8WR z=m@om6q6xxJY?_!5_cZE{YEag)ID%-G5#F)3Z)2zM4!0NsHf&mS%bus!D$6N^dWwcFMxcdsy1MJG);wP}RbmQ*g2HBBWiArURe@@9rq3)%d zDCrmJH2$>J^c+A&4$Tj*Sb%vufuRS8weEwMzM#rLV7nnhN%UKx%rIGQa>?=gJ;_11 z_Y%${5_q@1G!!Fh@iED@FZ}_U&fP0FfoufG`N9$AcS*6w7)-G1pan5paO7~I%eq!QkRziYpupf`0+JHTh73Yi> zNbGaST;<-6Ga7hX|8T*IQ=`&}^n15QD z-2Q`5_wIy{GsQ<*Hep&&$)Y4JfFt z7>ZGp{jnH_@unW?e{}EU+Y|NV*|CC6d*;E3%u7a)xTE%(CY^vA)hF1NlD$bjmzFD4 z`HN%aQ_9Px@skBvIxhyA{(mKSMx*`AyvBp*5vd;JfD23vq<2#0J zQ2&5MQ8xO#=9CX)TxMy3$!eBg@)o73c7d09yNF5P=zeT~?rP7REnxkAh4tN~A-^Xh0j(sjEUw z^Lhee(RGZ2x%5MG?V!%DF9-rmB3`3UXRrj677gzS8ie@}NIt33v*ts=itwg;+b_$? za2@Gi7>3bRf1)Pdph+uSB%$(HRPK@BeS)Bky1_;+(wC5Nd07(OgjA+P6`;k4nD!P0 zR0H&~Y>{TmigP<_suqPR7q|(+7{tZqZ&>ANF4RF@@#NkYlNyqz3Y;H&O-fA-5a|<_ zE=@_l7iyN8;Y>>-FimK@% zqZAO33eU%!2PjyfO!@T*DI6!$L9TBM-Zm^<0tJnX|6RYt9GaZwM9y)H}ytXMP(fyU&N^$6%Dt4TQDDim7t z+H&m17LI$9LRWk893^NH{oQDrhNSVPzJ?hJ3?ypC{yJV1ApEAKP7lW1hCy(uhE7ia zCL2em7fzo>%K4Ev#xC(JNg|v|L~$f`Y$PpCf3A$+zMocaoCo6ECeSb9Wa~ybx$h;M z7r0TBq*&IEruHgzh%$F_uPpKaz-G+JW)p~IGssghlkGr@xWwubjdf^eV0s`$p&(o9 zdMDcs$e@lG5ab#?=w*9kk5zG_zizxqOMt(*ZaP1cOqr}i3ea#4AK|WoT9=Eup}Uld^Yk3=I=IFGY6YzJg8|hy zX|1xevuuJSn_X+!A+)G#H6B-HZJctM1ji-+uAw6{8BJ^T#QCmN`M!lm>|0Qmo;_Xh z^|u>1mJskUNFojxXNF8SmkZYv>-{_%cVkr5Li&N!(7vr>?V_+|B?u!l{NNl^dTz z9^H~bYRvV_P=&C@f0e<+E^bT}E z9uUFzL7&aCJ(4r6g`CBF#-N{835xl%jXB6*Ru%0L`>e`eG|xFNVc1Y9_{pDy=}ew* zVLZNU?he%Nz?SpjEdZFoe-8`>=LAg-wG)W8EfhrchJ&4`91eA%hb09<8d8k+kB;}h zJEUTPPT*AOHj;b!I%@fD{fs&AJz@8_hvw`n_jrr?Z|bjb8(pI&ps910#yytGaW|fe=zIgoMSb5)xQjo zW+|R$*=d}57@9ZDQj7*0hZg)=j$|nnUJ>V1U_GbE+0ri4Clv)KufC$vm!)rj;Fi+2 zl&L;Wie|nYaOzafNy~uD3%PZd#pw=`fL(j8OZK{zwROX4C{B+*O4P?6DY9qXeaLsK)gB*(yteT?P05Q0Qxl`~B5SU)tZ)j0 z8uu&EGuWb}S?oEzB3<#W)+Zl*^pVoH)~jc_wW(Q{Sm5dk&e);cB!yr0g@!}W$z?@P zs}=7x<_UbKN&8&lBn7~FvsCq3E>&&zO*i|dn^m}nT7}~-e}A9OS<$}1t8uNKL{{Zm z5S!IGJ7JF#XtPSUa@WngP((2WeLSzdym|pvcN^-%3y;lj^HoA-wx-*qtgo4#4ynW z5xp%A%5iqKf5>J)B~eR7mR7V#lNNvSgNxdH^}cfb)}z;A({s5D1;Unzj1-#}9VIAA z!y?mceW5h1nKMeRW8a}Y4YE;<7o_#1teiIyYSh8KJj$i}wf5;U-r!rggxaxmS~uyn zA5=DM?G(H0Z?xKGSL)*yyelkNEpki51h|Tc?9+!LxaFbMH2JkAJv!v~7I>~Pa6F}XKZGnw}j9|A+ZmP3U| zM4xgq$n=b`Kt#P=EB~pQUW?`y+JB|ywHjjbYE2@1RmYH5ULpflABF5L8|?T~B1^aj zCNj;xe|ND`vc(ML?NPCS#laoG?!$0;^Q(`Zxq|>bDREW?YTLT(DYzJARap0#Z;pu0 zK+mYK0(CMq+g+v_<49xGmswF`)(gnt^qR`kMR$3z$aF<|LnyDPMl|Ex_>t5q@9`8U zmR(chlDB^QhY7oPSTITC4vTYphlN4Z4>@eHxAGJwj$ zb~O|1Bn@A?t^sgO^DnM_XTM>4xnD&mcXo#g7}aBv7A$~0cOeO6ehp3X1RuFpYXh71l03ju|X zlpd#H9Q|m481VX!P#o5ivT9yqbsldVyrdE@yKS;bLn}U57LIJCjee6^+Q1>utrt;5gs3pKUMFm%)=Nk?K(%&G!QAfXz0yczE$#+ z7C0$e?wR!9pdspjyr;x{GH?IoP*QeAG%jPc9<#}VXMovEBJ4}tUarrsu5QXPf4tn0 z(C~8l>tlE&Ka?srHd??M=`aAKQ5i}$_WZu>d7NLNgd%vzH&<-e=O8G46OL~Iv_1nT z!bC8yGG0IU>2RN)Ue^0$xXraF$k>UtzV(?4{PNFToN>!5?gu+gr}?6$k`;Zjft43^ zr`dc~UQ-g+xUS6_q|6@8*}X6lf5vFF1`A4fhbWxNBiAQ6xht+u>N;Lwh$YG*xIJjV z%5oc@0GZA(3Lh6HMAGN3;Xa3rScW-DS1&TT-s5HY5`5A7-4np32W$r*cw{F4lb3Im z4c`sGIzwiyh4lV~qF+BdhBd^!rw2yS;Ke>CAM!P$-mbw1%5dydZ^Y8pe|0Sm^M~Xw zrs~PwKEF~?!32WxDXA&VBMI)l@F**?%WF>nc6euhLF{toAAf>($8i?(S$dsSkL1k- zbf0qgv%h!p$ZY#suPZOu@tW{6R|X+@3p&2BEFCk>yTl%FF9)wuc{i$!sHuj)-!(|ED>!+9*CcZr z5&juRpPy4|oNg-&enTLFWwP)?-Q4;nPPTf0?I;F})tD@g4SO z!L;%?qV*Zp4ntOFLRZgzgtPoGJ}Ol}<^~s5&PiQKu3q{`%^Y2-ag;Amx2&@19jEBj zV81!Iub7`#Ilwp9sH^~xy26)FP>dU&G$9!8>M9P`gMU+{D;mu(lI$hD1M`SqOss6l z9n#hA1z9OS3dQSEe~ji8fKbzxHgmo{9Yh<)9b_-)v9_;ROwHje}WIKV;;T5N+y_#-&Wi7 zuBc1x92FF75qeb-sP~2(=#X?0I>zo!>ZzZ8x|4e1ehyhufQBQTT`5u{#euv>w-D}Hku)xUwjElMAsKLdk=ZImN=RBwB()Uo@!X{4niyo0TZC~7J4 z5AcMS%*YDp`ZEjC;0{kLZsH~%U7vK}LVp`mnK-@1XEOTw4@_u{j<)hdMsQO=sALq|CgnE%uR#T0Va9dj2E7IUD-E+3~A%;N2znrRtd5gWdC@Heg;;xa;P@jRm;5DR5rBid8+ zj-73+A%faq1)Yt;zoC9&UN%DJZkD41y%)2xh_Qig*!T4Y2x=MnsLR$5j0Qz(v8 zSYAkd9`LQao^LvG8bcXmh8N`3uIF~lp+>qmHj(jgTAo&EQR7oW-niHME^=P7F<3Mms0{B;w0aW}R~Ho+=(Fu& z%ChlWx>_&(@}Zw8ImZ4?%O#j0owHlAxj!z{#(Ef9}%HUHZ9m zUM=@d7ZvIb&guDOc*U`)l=t*$B_npJag>o?|V;+^l9%0NO@~u zl4_tuMrrqLT3S2_(w@c=>v@({l=k*OYxaP|r=<{>zY}L3ag&{?#7S->sFV!@XrbL((n7zjXqeeN zuB9aZ%nYnghR27!|CLzRO6)f`nfVcFw~!J4tG*Yd`U3Sw3)Z;JyVdIA(=xPi2`i0M zdyU0?5rD3alH^Vwf;RN0UgLgg0)J+8GR?B9z4B`5H!JnD@!XY3e=UIRyZM#r(HV3} zQu~Ysta>Fask1p^(sybPJQQsu+szuo<}PO0L(KxIEAR$@a|1*`d!AoH(I-$8e)My zCjG9Nj-m#Eq!Vo^kBbxCMAAg9Dk|CP@e+Byq^a6!1yKN=r6P5OsA8{BrciXV{bBnj zawh!?jT0#*or;zfrbuU`F_P_|p}@dtY$N2X-^f-LN2ATrWOZzoaD!&5df6F;7bmcu(CQz5F`nCoPY~4tpY;?M**S8P?1!6M9N~FoY$Em%>V?OQ# z6t$pz|K#vZ9YH~e=BCSBCwrJAo5AL=-tBL5Qpe5MtzxKTCSwgNARP=$ci-37!TuJ$ zZ;&<{S!esh(;+_Uo0wK>22y|T1N^}jP&-VHW@12{e;ZPQA%)w(vU?kn#?E3diZBTq z@Qh+3m4rI_=nA{FsLgr6$G@XP3q7}NFnF#ev$Srv_pObEPqHUD&HnDDHyvmgV+OJ& z&{1+k;P?*-m4}x7N_nmBH$2`j4O)l+2PzO~tROJ44D`xaL~me%lz<9;{zY0dYWFwT zUiMcie-C(Q90znrNXyZ6M|a;~p~{8A!6pX?Da;VtjSu`H!if^alF5u2U`IXsDt;^{ zrDbO*m`t=fBelMmP1*70h!IL;b&AkfyG_J9xz#;qV@bORZp>DNvt|`tajBA6$z@~hi*Etv= zCIOxR!Ce;n{Y6neV<%(zmf(w0=cugR&#yCR*MEAIsiqC4BoBxaEjJLF4MY&7M1uAC zV)obLldpzfZYl+j{EqiF6*?a7505t$8XupW4mJV$W+RyWFUJR8=raD6)C=X^hIQ2; zIqchI)n3YG0h?+UNCCPu?SH4QZMm3UYs+O-8SuRvT^2F(}1YjZV#f3GGL(pRdsMYI{oVS;Oyb}c=Q6)!N%5aO&vHb-;z2o_nz#{ zo~}%U!>jB+t_P3;-6{cq_@7k)hex9qrU0Pr7c%^z-CG^}&hr=L6?)3!UAkpQ3V(nv zSw5_?7pwwqYj{)tpnR2eIKnN_?ub}_uQ9Hz--pMe&Ly7TW$N7EJv}Iovy^iFeNxVJ zJSbK6G{vJaSuyY%(d|N?w2^y3~%hQ&@j1;{gTrWLVoefq}v!6dT21|I^GUpy8XMCLf0J&qpyeiqgz=u zWDYOQtnn1R>XA6${#0g*r&VVY$JZM2e_~`bQnN!F%MkQ#2>DMMGM{{l6Mx7VJT-nc zI@uc@-FW1vM_G*lywvb$T>JaNHD2%LTpfR7Ql_(<7{;HoJS$p7_BZ~J+?e)a)4%80 zuk+}IH511nh_@lmO9IBb&SBcQ_h@u-GW>KDNSe;?n}P#rV@2e`5*hY9F`guQ;ajEHu@x>1f0NchyC+X z0VcwK9_t<(If&)eRhCwYe1s$`t+F%;3qM9D9|@>5(S7w?BW);r@`~mh4hF>0lxn~e z1xuQ1cSq z6+rPOqVjmQ$o{jk(y3bcWVU#r6IvT#K^(6uEymvXUq&{|h=AB5n%&#`ay&XX)n8P3 z!aqxPF08UimOll&S_&Hjim-X0+xT0FoxxU6YZgEjKYE3VOeZ2HQ}lOCeXb@p`2+7C zBbRqez$O`q zGiTRV*(5*DCsd9+j(J#k0Dy9H3*$3FhdIF|WF=z@JxUAnpmMLCr}M1Gk|%I=QTaa; zvVz^fDnlGEv-w3i73zimP&K@~#&1OV#6dE^?xKV+s}==$2!CCg08A;hXy|Qf_49&V z8Fy@K$qAkd__s^XKK@;9l~7IYkPUV@rPyS1EKDkd+h!UV6jYz@QAi43AgOmaINNkt zq?b8roTZ|YMfNNZ0n}Tn*4GsJ?){gOqv1CPTC{c?a@%*(w1~a-nt5THV`>q#XqB<^ z+H0B(168GT1AjN4o4E2=@xjBqm^#HsUaJh$R>qMUHI~9wLO`&T-c;TFKWYV&f+9>0pp2h6}2(ns~>k0Nj`#`5bX5vTVwc zCILAbF4?cyWFbb%_&f^AP#ucrHBx|p<+FjBM-db4!+)W0%O~&`Do--n3vdQ*f_dlp zENkYva1rZp00l(fXmOvDzbx{}&$Fer*k`b3R%o)D(c)<$5Wahuo1l0+2Y+{kKU6AJ zyzsMf`NWWh1tbml7K8uE5{0FcR)Dh}$;OY44v$ZV2d57dUS>b}?C>jaVLTXpJvvq= z!vnY^{(s#FLD!nHho5{t+B;Rpuwj3UTlOcfs6GZXwhRr112KF@Bpq>~lBAC*B{p&R z>X~)G0^iF6s~{`zRAsg_>gv(qA>8U&VL#miI~UC z3f;V9q(zwc%|$-X!sKr=RPvBcNPBY&Z`YUS=PG3m8|tNbMMBtyl)5Tgu|UK(5MF&z zaul+BZlA`>$vF#Xvc&9aZdWIc1RrUN>x=!Ac1_tWACpbv^D{4S#%*S7zy&v$1Ao&t z%-Dqtrf1kD8O%XbET|@ob^q=C9o{cTV5+|hpHG2ekc5PXU!>WMRe`EjJ%g!uwU;I8 zE?~>1^2eZ?x<~ZSORkAkA3w`f6 zl(o3pJS;Mbj57ylfSGyC)5DJEV2Mm6k&Hz$Y=wc`V0Q_Bh)^+qT=1<)A&%3hM`e|X z^(JozOu;tY*dr`}>tNk9+YCT>;AnY;lOPay4g5q6Md)Tg`PCjuy}agWi+?eX{qN(; z62m$XMK~c{Kwm4E&ETZ~bIgVd@-c~Y238;(q^jPrzLE>qt%E!a>=R4pO#se<#sY=H z2*9=uC-Ns5S<{-M1))L7$>(`Cn<_`)?xBWM^3y9O^BEW8pIi*{I1tB6_Dtr39;WsN zmYa7mFz!s*Mzv$$w1XfsLathX9(jw~(q7^syM{U^pN)?QzC{Z?jhhOe9)Gn5w*{yZT-b!| z?s>6Dgvb)Wgr-aio0mU%l2ysMEt61|1^`oNybxsQA~d1K3sIIX#(xuRyd3AbC=0`z zQARsqBg$B4Bg#}LM41h*csa^51<{&|7sDLs*GtdMKoXX$45B1DBDn8P0`}7VB(&WG zCaG>t$Qd+;IUO`dSOpMcu4R?JJ<(}XsTREirngbOW3QQwE}++%jI1MIF* z%!ivFggCJ&?ishdmVYn1w1mzBMmwweR3x|_PWS-V5%Pm^0n<=E?^EJ{(s+}|+rJe^ zlAPG24{UC8d|P$Ax&@e6k;+l+^7=8du6GyovTJZ%I;&wJW`vodg9UsN5?WgDsm+^Z z2E0#bp^(Xc@I=CTxTPMFg8e{xO<*y{CB2YWDtU({{#Hqhj(?bjJ0cunXN49mjzay19yPCY-U?V+IDneYs zBJ`0D=@=nCmw)y-)J$%X5^2;OZvie6M8~h>2U76!G!p@dmONa5IlH_j2X*ax`frj` zASnwJm{-hmn5(L;Sw`^hmSNPS$1al?GD|9~vPyC`GD@xRDwqRMH#(bNhD@>tkxnKV zAK?{c@dm9z@f?ZPo0wd-WwlYGr=pR)b#S-rMgH9-Z-05-^V+^w=LPkjGHa;<$51zK*hb(!oR=;K`Oe!mcvBEb~Oh0rxOvbJG zr#03Qw||Kg?2cbRZiagon#yIGwCYYoAvOreEBpZx*Y*DPLG^mkaA#6zqxZeTbIZV2 zYy9)eB6AFZw*2!B$Hx22qVayGJRI-eHt)Q_w(s!_zGGu--{`q*DXl|a=7o5LiEUtW zxk{a0nj{N?4rFt5^48VHb9I?6k)Gs&asitU;(uh|xQv+MxJKjm|2-t2O^OX)l}ilq zHMhvrysVQQaNg7P8r(u(Gf-LI@pqy+m6!tpdY4keE&7tfX)Dqrg|9hOiCc(H&g9@z zGb9+X=viL3HeH-(Tu5#H*0aDZ*oy@IE}23NdOYDIpCwZC)H;$)DWqdRn*XGsW~Z;EPnytZBJgc35+frL*}(qV~;e*^rc) zWc5D0ev{m9%^zQR33z&=x=ULhNc&}ee(N@i!y0POV+*AOEa8INvqRG>hd+5b({#H5 z;WeOJX2AWs=D_`s1^0a(NYU+>fUly{vVS1G#ElKqE9Z-Bruwu$em}Xd<|Ph>oxs%K zL+^Q3p=Z%NEq<;O?W$OjH@xF`L?F2g<}+K+KA~q}@RWlW7R7akUF%+SD+>>yjk^>D zY|oPfN(lsk3vMR|G8ln|my3cp*OnEYxj($TEIXw#0=!EqV|yNzDJ7sX7u=r8=6^~@ zT~_tA2zL__|T-BIy~74`1`D6<+gIQ;vu@Aat`RsX+BBk?2eS8V`>U{Wx*RQ zVxm;oP`}>cR}T_uP3uZg5R-awulMBP%Y(7a=h8Oc|n$`3e5PFa9+uw9|4uA5l01E`j zWhdGbsIByRdKQ6O+fthC_%sY#xl7r=_B=VDlt2u);AU+b%x}nu;FxKvlS#YYZ2_z! zCP;h(IGt$b!%JNHuuZe6+FCMX77y&1ke+9qNEytziG3N4oW-1YX2aW z8w0w*&UG=d8>MN%>wNoNWu{qsHBWk!p7V+%LxdD{NnJyFZ(neah&d#-H&!1nH3;oX zBD36F?A0P^(LP!fJVNx62(!TA98C^MZ=-p9QD(Wa7n#Y?Uc00lQGe2V-|`Ci+xx5R z5mDeR^6geZ(ljy^!E;lL#x0A2xn9uGY|=&?%*6#)hl!s*Txq(Z8V%LnrgyU_(@Vxz zhJ5(RuaQ#ApcK8y9Y~r~34~3u+Q{2_Y1`c>ZM(N6ZM!5lyDvi8b~}6AAH=ylpAr*6u=39NWsa8yA$o zwvsBLcb;Tjob@r#VsT;7_$t2x7GX+FnK;uxV33D)An<-3ts!C(iNUgF)+n(!8k+}q)R zcI6*15-m*3j(_-#POj_|p|SH_`oIKNLHk0gfuVr6mi&EXZ71a=%~X8eg{JY$y;>@} z2B(x0bf~a=Mru$kXi@e1eO&_<8gED)O4#}FZS}gc1%8tPIsppo{CGck2b~1C<2!=9 zn4Ucp16TxevLhOlz|Zme70??tsDX)GQjbRZ)6PoO5`QAQpn7kkHV=7=FiK&wrMiWY zB0C-qm_5@bibzBsnta~tx~bH-N>Ct+U$~q0JtfK3YhuasL!c3zdM%wB&?_aK*%OHc3`YPUV2o2|FhA%eZGKUFsEwl{Ds_m=ts zkfkHuHR5d%rAmFO+j@vY*(O{C&RXOYF=HDP+e$_=ZjCq7*JBE#-UiQhJl_sWfVmz= z(mvZ@*;W;9hbKW@iz(kk-wIW#(LJsNc0ICqNq>GTRH1zLhyqX_O*OV5g4SPMVlR1I z@~@mlkNsk)y5L|L^Q__!J``#Lu;JKHxoMBR>>Yb@AP(MSE&9~jv^6nw5K|dCm83+_ zD#HLiNqE&M*ldVgq81a<*k94pW^4NXzEaCtWCInCNitAPp-0qnwSo|#d`#T|Z2C=2 z;eREYcw-7m-td7YoBv#Q!gU8K z=kN>JlmZ{X4)%9tk=?^GXB34rVPMvIGlOcyJjdXn+O~GFI88M@$P(DP#=UDT5-YVW7c8a1!4kO%^IC(FzEx&6<}KnJI?pfIU?>dQ;Py$4}ZHC z(W3q&!;0~;N#ZbIlmgMXSnbQF0{(*BQDs`CQUqIxE{w{I_hNYM>TryGM40GG$Q}sz z1LD8^=9YbE=vTn+kIeM78BZjVC~)u%9Dj9Uz)OnT0N;P~yC(tNpr>X_EZ&9y*JuwM zutJA5tNTYfKJaLogYJrV1Qoor#DCw7ok%%QQwk95&cJhOaeY_Ljt;;4_S3@y+mIwh z+7d60@_beBpQTHZ(Ym>x0~(O**LPLUmQVZ;fsk@pR#z~THwB9p>BY`VY)^Lhyb?fG zLrOpLA|i`|1yVqg_VBoYFG%EeJ&AuYW$YUb1%YT&8}rav8@zS^Er1MWSrJ?Wq}IE+zNzd z?%Gz43b|&W9h|(C*LUVO>2U|bcT;MeSZbM8TT*RRcsih_6`?jmwxtjSI-m_vR{c?5 zY9!$Rz>M%J>RSbi|m<&-a?|<)N7I{A)nx|NwU~XT&ICBe*?9B zThlKP6E-nmZb)xC{yxiaSwV!m;GcY#2>vjCVSY0?&uGUgz73)BnyH>m8yMspY;8E> z?G|fH+p&cwC!uBN+OXmefgKmV2p0G0)bZhPBMC#uu!;3+R?;iM_6nL+=FuPKgBL5uI3LSfnuLsH-&%w zYKU>U#r4o`ck3blwc`o~Zh2`1^Ez~InrvFYZnXNSW^Ce)&)bfk;;S5z2q$|pBwFR0x8U)@lgts*C>b%$jo;6LZ zW(*7xN?pB^)bVz$ul4|2*I*`JiN(BxuIRVkCKz#VVvc(J_u;ZR?(PQ*>i9xdmSpfD z`)1xERyNGmEMVg+*HFkC13(+O^KaELus9K=&lwXjTz_!-;~?DH6a9dxZuoitJ;7<0 zbwfDS^XUuM5+$8gRawFQCMDzZ+ENpK_f{TsOSCJX=V`{ey=92?=H)Z1Gx}yt#=p@Z z81OGGTx~Zj89?(!r3{U(&lgCB1)#f|V=EGF_@j-OGhU&r+dOB7I1qTc-fp7yn;P<% zT+3tE!)C0AtHsmo!L;0WcX-gicji1Pz(efeo?t66%H} z5vH#$i;_5%y*($xmNn~FKi{YFi#&idT1y&lv454UOGb5*WLx#rLOJOw8}t)f9R9?+ zLW~whjB&weCL_bZx`tTjby8$iO%@Qp<7knA-s^|hq9#yLfC)rg^t!q_QY7bwO4aET z)u3-eo6@A4txUccE$WN(DpaM?fl!-D-irDY47bsw;l6pGCSy&k-V33`Bc{a%QjEfI zq<{6#cw+3`2*{z-eSdF@DZ)z*&cK02CEpsTdu|KU5_A2E-{(J2-DnOjM_e2!DPD3J zmXwQA?KJ!~woEij|4w@*8l@X;niyuw@1LCC6ZL_;3xmnbYy9yO{J7_G#*|=}uw1?G zXKRVziaGzx@uzy70lL#mK2SdmR{6e?@PE?}X5QhQANn^Gl@FD_t@FnRtHpkb6oY?L z+RQQk`1?xlhcIxrDU@kk?Z!8oq!hLHW(cvd?Ca5XEV4UZ#ByXIKN2p%%2%k}!y>%_ zlzbk4Ie(%@k<8zFUyeryr|AEf&1yBFSNG*X#!K+0%yr;;vmUGy_nrNF3?Tm0zJECX z==c12wGFN>bq3cPDYngPueH$T=q*VuZj@R7oXBqz;Fz`B^uqHmek zH|Ulh9q$`xw2n4GG-b$YhR;bVXnz3FVn7I#8<6mLi>s@$nxhM!|H!p1F)A+5)*;Z8 zEpCQbPW&bb9aiv|15Haa_++mUte;>|G4%)f>Gq6iP0?uaq4j)XD}F}wtkoquIT4K+ zj$rsGEg*|9=%Isa){EbW4J7k%h6c-`X1j;Yv`6EUlQB5l2}}94cGD^uRDYFz$PMe{ zm8ut$NhU6j+z?BPJY5z#&4vGP&4ns`hhZ`W%HgNJvA?Lwt zdcjR$Kd2Wy-Hl#sj3xmM+?SyR-B?|aQeIRLmGxcbESt(p1vu__OablX=0pg}-#sHL zBLVsUYRx-E$K=58#Jt^Bbx%vi8;NMEg{`?_}_es!weG#uBJSP2^1zx0(f`?lJJ_)$z0f!PJ$>Hhn@W`Y*_nDsG-_QBulcNt9^nX?PI2nHU5r4fVUk~>W zKBkY?<>P~sW5M|bo2PL~U@@yz_BdU6sTs^~q{-V)cIl4fvw1PCc$$v09?r+SeE9zK z$?WH;pMCLZIbBw=Z<9~nE8^3zQxY;Yr=$Pt4}S{H%};-ZgE9S1rJ!g&f%RDNSs47! zEEr#UsnY?#pnnNDIFy}{AgJ2b*rbn*>Uqon@m!`#wlEVdt2A^=whhKhjbTZfxzc| zy|;GqZ0DFJ{X!$i^C#dI0*8Jy?@ZZa>&46qGc4HXuYXUoYP^v3mU{%utafI$ngQ3M zMD1j|+9E^k9ufZGteEt(!}5AEyE)x|ONr$~g^l2qHGP%3;0aQy3^4CK|64Hw|;(6Y<~UJy$|BDc6;l?1y&rmI@Bi0GUtlH_}FVt?-E0-RQ8tY zPw~}X+ug6ko$p#lCH%5zwGO?rV8wJ*MBDDt~hwh56eGD)^`{D#Sdp0R4#U2z+2x zkEf(YE}u{X)Q(QVF5Q`G4w;U(^ew$>_?OWhpsBon7ah+%nm!07Mts=(BzsU83;ow> zhxDZ41Vl0qIO_i?#s25**PI~dW;->gOyUQIBYj1DktmiMn`O3BS&W~S^8trUAM^ap z$A9;E_9mLuP_0v!22c%@g7V&wAsPX8%}J8T?Lc<3@Zzr8N+kY!p@r;%>S-Zedk0M7I4|d zZ12d4W?olI#Hn^Ap}cF(8`Lr$)F1)ZxPP^6_3dQfXf)Ii2 zY>jGRn7%avLdiFSKpw5`v-x=Img-3%@X%*oDf}D^QpNlmspf*c?DIK4$bK#dDEptB zJ$m{4;UgXZKaET2Bp2i%ds>&vo_E=0^l9H=&$GAg=aDkzI(J?PDW#=V&;F*fqkq=h zW>17bR3J)racP_@x=B_rSnVLRbge0TwbK1Mx@@&j2BL?e5QmuYu8J=FccAD1t8~`s z2wePE<)Z33f;(-By>5m z3u&{t13xE8;gxvrQAVluBX_x9esu5Ek0?`e^#hro-+S}bhc;6`GSBeTX}~@6!hRpu z?E!&!GzJbwnjvzap*6!daGZusx9~i~`v~<$o+zqSySk*PBxnQ{dzY^lseg21qM`Hk zOOEDX3J-N^dO+QVwOct2rQNxq0F z`gqv_BoU`k+A}!maW<8fUVnJZV3uh;hcDT2cGIw&Uh`M7=bQy`u&_vPnc}fREndYG zDH8D{xfN>}gn}q`QF0fb?&CT9FsB9 z?A5`WgV#H$a!Z1m^u=PW;en$U#9!wRMigqo!(vfblRe%z>KR8u%YSoG4i$}JqI>YU zH?EHOn%PJhatI6qmsnvK?4o;2^v)w!>&G8bu7JvB3mmFg6 zccP3GKj<2ca(pn2EPp-M#h6gkiQg5QKE%>yQ?j7wUayWz-MF|$;TlyY|2Ea*R}Dat`VM1vqlObCC@elEqjM(t3l*+dPC z>Z+L+F(_(W2xti?up{ES4U^{rm^x=4CCez-tY2%4*e6mCX&cls0~Mj89xlIUI^v#+ z<@>Cp{WdL3{eMH}flaIiQsa58S04?6qQJho7g1vHz2t(~sm|PlBzx$(wp4QOJyx!n zo|W))%0Vl#tpX(S!y3p65Wb$Xr`%djbU>0WoPWD&fjN{*=sHoPipVdY$6I}i(kx{x zYWt6U96@ak3756ew05(Um)4$Zs?G+zxtY=ok)`xu2Y)@bhP0q(8l(XoCja7XwB!)s zah%9vwrQpoO+6u_i^=1|<2~K`!G}Rr$na1Xr5~2kQ>GC^_fVSlYPVB?2z7Eb8MF=I zI3n2){NeIbVIk8AUhPtLcF6mKr#3cZfC6la3*#gSEP+oJ*s}?5%mGs~N1)a=;YqwO z2EJSHgnx@S1*DOUC9$IWk)~Dxqq;U`xMwnhx14-E!i`vGWu9ad>{zVoLLx7z!jx!X z8P1su65Y>oVv?fg5SIzXCByazl2!RO_J$#ElMZp?mJzgd3IV74CCfJM7~O7d!22vi zWStN+w);Vz)wkhrKhn_bW%8VKVXpGJj&}ciG=IhrACKZn5qxbJm<}|$fv_)Uibd=T z2m2=<9{(P{z>KDu`v^OM7fhx)O;{h67~NR!QKztHA_#Nn|H7w7r>FZL9+9u=nAP3m zr8Kg-sTSo^!r1jBjoTuXhRnd&m&{KqTvqAMR@3ERO@Dg(OdPNnD3^&+IlO? zR5gJRZnz`RX9ul<7dO42U~n(vaL|?en|X36^NLzj=e)ze_xX4-BXX6Ur;B2-tSIMo zd6Y#35KD}#|LSfw%$D=-3Ekwz+X?+NmVX1raWycv-9}fqo~MrqTxxim^!02$8D)IO zVFZXVRcaqGySj4TJ@IfFs1=22G4=iD^QUJNs9rU${WyR1QDk-D@?Lusxxqc9L1Zh< zMsqrenY$gD)|)uEb-#HOeys+R_-J)kocJ@x!GWqFFQ}_szPBbj}E-8MX{7j^%_pxwLF4M}rk44o9Ln zmBjIg-%7Z;F*KqXQ~&deWw|T|*%?x-@XV;cex9>koy}3tH|O4mT33){AE2&u z>pJ=93v0)VNx8dZ8-LqxaFMvR__-{#mC81$EvRG4!-1dF62==f)KA;!fAuS`eqNT7Hl`F8iY@lFqqta~pdGy(r7s?OcU}?vK zkU3viR{ZBp?(sClaB*<_>8Jaj9VRhl$J3oWZb6<_T-FjR*Hy&tE6KRJYJa5zWDxX5 zbm&Eq5`y{3_D*cb=I&9@MbSulARAcpP?VqbEFs>sSg)@-cOvyDLfHf;cjqf12JR=p zy5F6Ou*n=1s+rJrDr(1xtrIEc$U7P%VT(Idfs$mGL7^YaxzXB%YbpMD(Q`&Ai3D1} zXuPjd4s1p{)1j;)%z_6(F@NCG8x+|;sLE&tvTrMccZ9ayYwVogrMusI&BC|IEgDi-rV2>7}hzfB` zg-$#hCO?LJuF6I3 zjF+-28x5hS=Vw@4fpbhh+^)7#!YU}4u4bw%EG70{NX#G`;#Lg zlI8Sw-eHGUSFRCMMnf}_IA5`wS*n`Bsv2a*YpFtp^)2eqeeB9gR4v@L3NeCMRgWr| zTh}IYKwHO%7Q0Q?Xf0jav|fdQGyb6&es}JU&l`$Vx(Hz^gXKS!enbX|$qeOL;MT8A zj~}ga8JbkaZ+})XK;x5DoQW5!+zqpZ&18--9`c$Xtqf9>+DcEqlNrN9B)WAL~e$ohRnq*x6JQ=C0SHXny{aKH2hq^PM?ggn_$jPzC1Yl^5jSXC0^umUdExF=cO)E#AUTMXY(9C zo{Ti?M^(yYk6MR3E+@0;_tsem24GcgF|DG+U3;nqeOX}HNG>BUeUC-&qFLLEs zv+%W~M1PkZ$V#~19tz%iYmPM}ik_7oKGaW{+7ZqN0Y;=r6BE_Y**IZ1CRcMu3~0|y zPtH^+qOJ!*3|@`H$yktqE9cBO1R7sn2I%BC2u!%>x;XlZhS=fo^z;2Qa+N#TJDxrq z&lgXuSDt7-la|{}NV?o%S&V{Wnshurm={%BVSj7=N?8)w={GnJ>cm}1Sw;|LAFv;<*) z;rQP=(t^Wi7jr6ot8NyrOC2Y{bz^)f%^ngsQv#hLwbEJ}lWY%{E&!MbN@c zx<78X)*@|RyUBb?xH5DFNQAXvD~%0)RI!k1vb~~$plX6IsvZ5?6Tb1v0JDryN18}z zH8m}^9hh-@$!%^?Oug;Ab~kp|MWu1@A%Cb_;OQBo+D+6vX0ooF`u+J5DBnfWeZ`uIWWo-$g zhB_cggSemu^ts<&oy*Z+Tu*OFT`MxoIk`a}2CVQCVddkQu@WYsRWIOW0nDxeF@IK= zvl=FuEzmgtm`(T!K(Slu0KD5BP&QsT(5+Fm1Xul;hXM*hKnKLC4t$HUY5E(4#y$K)seQoJZg6ADn&iEvx}5 zyF(MRD13&S3^{WYI~R&6!*LtNCVy&^JdfgbCVB{XdR_cHJ&+w3?fG;4)(s*jM6`{o zAkHkUf4|lT6xw%YCTGE?l3EXJ@u7h`h=`Q!hbY1@<6+)lntr!51d2Ej=YlWrdlW~B zYvo48Kw?$HZFKGt3rpj8D!*s*VtzxtH=D~v&~!POkP(S?+q~rTGKFq{Ie$f|vHNL0 zt4Wdz02K9`nJkFxs2JLxE{A-_o6ody^wmNkhEg*@5mdT*fHiNelHvmwwZhJYD+fp{ zC!SQCXis)(c|EBE8^VMx97%Lht$(G-@f@8VO<1#_Z2etUR#IY~rzb!H17(E+;5?%w z0lE}_fXn%;VpC3a0I&4O`G1#!2q=@QFse$;0P9P!Jk#`0J$Q*W*>ly2mNo+e{=k$A zTKVB$*UAr@TDh`yjo&SC}Gkh8FNJ zJf>T3vJt!+PByXT2++lgePo%#^>X?XU%h`-(9!bY_>yeSKQ3?j7Jm|BDvqR+?g8Kr z`>uNtJ}zIc2!;UGJ2-yR<)NFjrid*l(Z0&u#`vBsOq_2$2rYh;i1<(WEZQ_ZWQ&w$ z*i`yJs)Dyv)(DiMdyTgHzI{>lTA0jN9npG7j2mJdhfQA#7q9wd65-cWLUeM5zcw;v zbrMgw_Oe%Rd3Wrt7k}0$gXY=wn%kXSkkza1&ukGG=BHX9R{DyWMH>ExSi$wV2P?Idw2_1HVf@)%sZbNuC3worVsd%Z0y;)+4jNwTKrQ7??FBy~jtx zd9-_1eOe=SEBzWT10(2oIf$j;>YGB;6R+Z;YJcJt-3C4BOvuoamweyZ)RkS$A~x(R zA?KOst2O&6xM%LxDRQf8olU}o(02(=AH@`o8jh7ZZ<#l8)JsGiJ**$Oo^iK(j7&#~ zCwV$w#9De>n`{(ZHhc-4QSjiVghX&2-E)m2G7a4ultg%nt+^pEUI_h&uAGD7=6tUd zN`DzAYYMgv@F}0E!+;YN&9{f1_pvxvuJe_i{=!;Gs>G7W5Ab4PvFMA)wlIhsEA)Cr zEH(Ns9;8;uHmNVNZ{`D{INF2KJfck;-0%&5-?&7F>(FS$7{zRkf{b3yh$J9a*Rno1 z+Q@SoYFJtBvt94Wa=zvcaMSmaMl+=-Qh)!f*e`^2CdR$wrb7m6_&OWqQ>+~-$|cc*HHRg6|7(@nAG|vi3QLnNbV2r-+vYVWV`K~`wcacXquN^ zl9BwuxBt$*q+ zSd_NEMzfvXXZzw>?@QXV*Y!-*+Fj3uZr$&9-sxib-PGgT?QgO8sCBp|K6^bbWUbxh zQtH-yF8k>_?R2%7z1wlF>$G}zYpS?eJxiUgWUblXVS6@Rg6gi|PP^M|SpK?sJ>Bn)r;#k5}_u|o*cw67+tAZZ8dTrhT__ zzfgMDv%iShOE3MyWkKj%e+{@*S-5-6;JYBKl8R0?j8#9N$+v?gr}}F+)w^Uk_N&R? zL-zT`Tb`rGY9%Go5#q6zQkS#hg6HB~evN`#Q#PBj7t8Jv7WbdBTkl&0ynkoknU|xT zOtB*IG2QL%NQf=*B=6gbb|qI%LwDRpAFpm08x=(bgDVHL)_*9ae(~9~_$f0SJ$$IS zA*-XRapmh+H6Sb(3T)q1n%dIgwJHOSr=whcgj`M_^LcD5Ro)TIYTm7G$ho0|S_CPf zeQU9xtxx1=&j@SS5$PmgHeF0bXK)$wBED$aL)37h%L=9q2-)BVj6 z{2G#S<6{!_llr;YFrxob!{AaK9_$#vWRTe$k<@TVTyn<6c$Dj}^ia7^1Gw9bWbKWyw!%>eBcqEKR=@AW(XiRgJKP)R6AH|On z!go0@fdrhSh#wb>OBFdjLyn@Nke47RL?rf(PZ0iu^?D3YaU7F$7LVkzA@3)RlG229 z!I9H?R-OP^a_!_nf`1}`MkNwDHx6@i3e7DU zpGNvD$uiRzQ}~Rk8cQq)-CVoYF?CS)TnGg=og#f48_&_Mc*oU!$Hl#(ZQFJvw;Zds zR#EKzu||Po`xv~9Ch1J)9U*Hz9-zkkT8@l!50p0R*Ab81j9_Hd8P zqb7xmC{|2pmL*hAwb0k}lW{&Jme4|_n92hLHgxRi<$Qd-kfrLfkl3`g5eUipxWrQr zd@yqQmB@20O<*t?Rt!e3y2^tjT(LU4qO<1o^>9e3vk7NiFCS0F)svvcdC3n7R^byb z{CNITo`1q_27Yiz%ZydAA-6QP){YK|0SATP2#&%%o*o>Z3_tr&QzQmM_PG&@eQG=% zZOL(sj#eAP6{5qPpbxhHFysDL(;-}HB;rS!8k6B8OJp%(>>IlxZ(AtN)v$ zGJhsYe-wp7q!cZKE|Gj^9W@;J2ZxnOhDn|2-@%1Oel&{979ZK?K{7U>%Ck3>w5W=- z36{b&V+KxmHM5wOJdyNMXY-lHw~KXv4yk!D8qcz)RGOdP;+a;iDXPlN{wD%)@4f7U zSMRrs`}C-cM+PVcZ}^j$^5sK*wMAL7V}C~Aj>p6O$wZ1*rhs|ZrBZ}0DJSbns&VerEv2w)l_<6 z1e1}R@UH1+`pg)iE?Gg0Wf^tJi)SieRjj_2Kh@RsARC$+FPge&4zSmHR`&TSDSy$8 z4PqKTi=Xuxz(jjAJS%^H8&0mVE8ZF|t_goUa>oN%>Y*HdGl59)YI4D=3Bh(e`rzu? z$lufh^xJT-y>M;@AJF`TsHqCw><|ir-_W+?Y)*#BS$24|f0!{}PWDefLRgw$;u&;W zcC@(@m~tJxc_K#w+rMYUoa6;>4u98kWC@?n@;nB6y=1w@T;+UYw(Gle#aQ;Ha`{!p zMuLI55d`QPAy7q|PlgCmz~l(B4$|PZfoKmw$HdNR5l{l5rUPT#DVmh_7m-47SA}Je z!$tH6JnBBb1Tt)a7VyKey6o=`E^U6sdwF_4rJ%;yTQi76RGbr|7R6E$Z-3m*Yb}2i zm39dvF13-i&wHxvr#jyqL@1{9M>uX7HkSI%EHP zUQ&ENTkxron~-5cz%U2_sDBxDMAKmKha6}f*whFfy%fT0Y77sqM+J}-mx2g|g^&}K z=^(fPJ&z&`t-|Y5_6S^tZ2An%19s&xiJFAZh=e?3#qYJA{rX8E76W>6$VYVVW`V%xvs3TOg@5iXDW!CK*mCs# z`>vsIv-D~Cm_|ZGZ*<4gS^~G~ZZ))Co#)Uiw*Jnwdu5f94a*K>=fbP;TOnYm+aUS8 zoEDSC%@$CAlAve&zNsso2hn8R+!>%WmH2Y@+MBneKYOrIsV&sZaGTZ6aG_UWmIaRz z_7rKhBQJpKhkJT^$A3&s{07u~Oua?(oxsIQ27%A|el}hi-<9OG#&A<(1flriRfEi= z?`8KG|0XCSvU-Co(}8z3TNIPMI%3Vcmk_bMhNwpeML9iR{`t{o`=6YBo8s>)oEXeK z^4=pIgd{?jNX>K@+YeSXy^n{Vd~#vy$TM;ky!YyBRB>WP>whw7VcJVC*Fq#n1e*Gy z5G}#sXCwnw*+oe#yc;VX!La7Q*;1_=3|T3+tpPhFJ3J4yRf67zn9c-n zY;d?+f<1NkWCETAmy0-lCXTN*t!14x4Y(wO3A4#C%8uw)bMC8BEEVjfp*n_8DG@aS z(T&Ie+9FL1R^}^#cyH7VkhNGhNMis-K)Ju25qTQusWhU?yWf9Y%nwKrZf)hz0$5fy z{awm&%T^R*P0-qAs@o)Y;bt1n`p|6Yil=L2o7)^-{ zXfq0Kc(~nZtu;~<(Gd++UP3`vRDUS0n4E5G$R4zVyqvvxzdJ@pNe9$`mF3hXiz&6K z8sUmcZ3YB5KBRx@#?(hlMr7$V z=;cAp;pc1q7j`)Z$K!x&8sg2j~Z&`12>7w?z!a(Xw z5f7C$h3QQQ6JFL1Uf5yT;0+JmXhwUUxYXXEhJfU@uPtImirAbOf|S#md8K%atCbSM zoto_7SGj-J?p^dPIG&D+c;Z4;s}+)GOVPuC5k4msoR%{rn+-f>uxH#Y(H!{?1eTcrz>yf9%w7F82x9=NT09 zUP}Diw?GERI%A+Alx;e?@JBYH@Lyx^N7b!k=Qo^=V=F(T!;mk?N}B&6qoEMkZc7IF zu?=3@@+HoTP5aW8FEKz1;?SsX9s9_3BSXH39GCkBl!k=(jroA-C?z8_A41tl0960Z^8V50i;Qz$r!ZBU=r}$TYyblN8ZB3 zYy;CW6!WQrMP!TB8LS~|J(#jN!|e>1vB5=RXgL{5{n_`6j&{KW*~KoHz&hCl6I?gD zU;_Lb?Si|Ff;%-I{@-4BBYWY^ugiZiT^-2rQ1ee~`Meh>X}X}eMtk@?u=-*hSjFtlA4-r@NKD!&@r{!Lx;=ZE#iMPN4;Cd zDwGo7meCqwfjE={y8`z3w5c&}L~4gC;RY}sn|Hv3tX(;DMs+t766h9*B+$;6-&{?6 zW-?xE-}ZN#t!uUh-dZ)FK52N^UY9XN>?HUbT)Dg6Yc*SJy-dRiRJ8l(eKb6)nHfKu zR>o}U(s5iGo!13u%cH$h&E0$a9G!Vvm|l&bOwJ4VZjjm3`%HPPzZdozx*O5DOo})ia>!s)ZZ(F5z)V|SOG1F z`7c&`FOIUT2TAnr?C&{JcN1L~p$~xKfecbq;Qzx3pe&LaNX4voQ@cbg|@27 zj`TJ&FwF7Usk8pBeFYIcmOR#qtNnv@2!?IM-jGzYX3V&#P7i;{hV(>vq5ft)Ccbd0 z$nHjs^|*pfbU>)*7|RwE9i!P?)1maHs){jeTURMn_#Ktu#4V{SttTwkp~;$v{yTIT*So1Qld`JKBAn~0Gq;325MLDK=eUH1 zi&RVOkMc+KoN<5GDmsBBIw!kFebc8u#)D?Jm#4ggS5eJ9)>+CTH0>SS(40;C9CSNO zDgoUpT~8=r(AVpwpkU-1=fZ{<(_>%)X+N5kz5xhzeZA_?l+Z^y@Uu|fBM!gglA4ZU zNxq~~g~tsxi0@<}>pN;fG|wXp@|L1vL-AtNfk1JB<{5v)$OK*9F)yV+)}Mrn5Ng+ zpp?#ZG~Fb-bF_|ULVvP%tj&$nz|Uod|6l@46V5d~ULOiKL%B;KL$5uW!trL@#=SG7 zaj_GiFy()@vkyrtS#o0caV>BR&{&V%)oNFd)k@2iUz&wpnuYGVS?HxrsMSvCrA_Dx zo2;9(34K4q(r==ezB%D;fGOugm}~|VDy089e7%mJtF~NnrA5A(4YA#l)jPA7)}~sULtAVPuEWET&{lDx}-_LH;LKWSVfr{tJKK_rVJJ(1B?oq=c?N`k|Sd^&yXDU1U;=j@|H2ZH#gr&PN0eK@jN-17Dd_DSl@p4gG~rUs}Rf{=d+IWKiGs` z>oexJJ^)Y}7MAD+3jirNNECcAIRw?^02fP=-c~P3u$2ByNJE##_raPbfva?=$Y@US z;*jf{(=j-m3NZ!XIt7+PV)(JqC6w54?wo({a?x%!ha4vwp1?VRmmy{pp{Xw7mx)VP zuds!rlbfRpJQ&1I3Jag?Tl0RpQi`*-FLgiv+DaF@ZmZS9#7c#r>K$%EH-g1`pw3hr#QsD`Ps&sk2inb z90Mb$U~*jjCPqGn1wb$mXUtz&i8SOzQUI6wL=y}^zuyB0-X$lg?6g?I@D1_r76xI% z3J6goBA+qUZgU;q&oH4|RJsqo%{m5PFYX;IW`{ZbQh#JDhYy~o&d(%6n}<;_B+)YT zI*DFY1vlW}Dyc3o*Tq#51Q-%tX<~n2s$Dn2CoE9Sj2`IDhLP)>`}!x-*8~4~N{Nfe zLj=9HlIAn`>FTK;F)``6vzWkTeHjASLjVzqkV`P>k&sz|5VM(He^YEu4Dp5iA6qKL z;c6?$hw>Dn7%n(UR7Nk%T=4xF8B$?oNZE>&W7CWu5g%j7O@1)Zy$f9(zoU zR^#DBS(3G{6A;QSb(DW_bisoJcBKvY(6SB-O}F-Noo?;nI^EjCb=tP4COcId*->?5 zT|zlB7Y1~KyfmXhiyMNl1gL0jH0Y{*$5<1q`F5d)+XtWS!^1~uRb>?~)p%pXIaq8o zJDx5kSpuMt+yfQd9fLYqNsEQ`p2_T=? zLAg&~!yY;G#1Rn%kXy$DLHtu`Bna2*S%js^KLeETJk4(nlF z%k7jPQ@_JoQc?f${th*TI5<{sqL_rAzTMv&V&bc>tP$T)7$5W`uNPwu$ZGLzG0V)@ zYf?WeDlNp4Gai3^3b*?e*tNrNo(%QxwejQq&*>`~J%T@QFnBop`Vfy&s?*{Z=#-0? z%I)lKA6Vtyk#Z-~w8U~)j0->9-`zjJvTIcJ(}Uq~&qZ-C`t;M`fi4HThG)-UB+KAYsY7>`OAi1@`{h3G6l{sqPefq#l> z%qX6e#c%lp#{@>jyYCbSlw)YPJO!*CN!O;sc|oa;I_jcmGmh|qsY0~_yYr0ck8r;X zd0DALBWc~`Z6!+6@pH^ed1w^A`Po@nq{sNamMNYnV2`phm}M{r zY6{XhZLxEODTM}9bKRavhC%TIL6kK$&^!j zr^OL;eUHs7k+ouw_S3P3+t|29-hemv#3@krPqxRytW>*0;In6C#G2K&J7e-=Bf!e1+gJx^p3F zrN?9XDrrc76gJ$VjHfbG=_)v`X=-V4yXN60!U;L$udxj2Z2cT)sM6M_8E500fun!f zB>SU3AQ*_m1waDtCT)$XZ5$^00}Hvf48VLBLU@odn<3VV!lWz;Rz>42iH`F*%s+o- zkpo6A(nBc7|KiE^(>+v@a2Iav<`BmNNQgBREorq+^g9R^Fj=n?J@I0Jl0FS81pbFp zT7)@xvO=dSEH-gek!oULlr`AqTwQ+xJP7<6?IpzmM8N?Bl(;p32w zmrsAi+}Wh3ELzMy)mL7Fs00=e|AwVq$(L{l3L1iG((9`ok{V>$;4IzD9nAdXQB<`C z^BvhRq9Da=5%6G0d`e05%!hVW#N^%%k-Skw)I<77s`!tqIZ8ywXU-LmEZ%=mDKD%w zk&Hx`K<^w@zetK{jT8rA!CqZdd&SI>82rbjR(;8>xeYo=wvj@U8}sA^tG<=>l;$%^ z|K-`BCl@t|0Ab0zTo6Z;NXcJI!juV5Rg#9(n7&siR&M{6=2N`%l=KWF{K3MsrK~7zeRP$B~e#wADUU+*d)tF0<3RY9DeA%dHdBYRJCIU~4hWo)nd%q=@(l z2EOeXu`bg<$l-ow=wSMiyd;Lh@a)kz6kBN8-2BxHWTBHVu_CFgq8mQn}v zcDCQ0@z?D82lZNy?Eg zTzHyZ6%n&~I`Y@j16(jdp};2Z9;HoThJ8+DvF9UN99Do8okXrn1cDOawr3S1nTz4> zznh1SC znS^hn=gE|Q>&>S_fE#Z8k`WI_h~3!s3l+`uJp^%HUU?omdMj<*lD55FAiBkestLEnt=V|Rc1(U4A^>GR7y zlkkqo2loj)_Qij5OMQ&ahBO^sPYyG;CyJMF++?5kB-(&eJEWXt*+e^$m*fC|P6p8t zKJri%9C#W2t>$>(wE&4J(IviuZ3=HEq7i{W2&XBWyQQ{E1|Y4o-8zRMe^vfz9k{T4 zsm-wtrV+T>IZg}c>M%#uvh8nD*~zp|RBF-aEx1@hzT|(b#WL5mK44L2D>|sxGP!Kr zP=OxpWoaqa*4>m2H9>?M?X6fr%y)ta(=mZD1##^bDMB|!UKfK5WZHnKD~OtV+Qy(7 z&CaW+$tI&&7hP0;e?3}H(zup^h8xjB@%GJ{o_td?`@*8c31A}uFv`aFtEuYU!j zftVjCquzgR$mJip5`W@2EO|7bO7M6UZO@^eajhUfYt;ZliK*o_fe}h>6H>c-nz}<| zM2fcVlu@M`aghDG$V&iWV-XlgdozqN8cvafaBVilG>V};3WZl#-n`;uaCNCowZr)X}lq+54W~Hxm_NK66H2{vdPuZAPbwZ zaPM6e4|SGc5{J@H5B9%&5?nt^c8`|0E`5^Qa#5*1NQe)!Q@Has*9CZTiPlywIy)|6 zJ1&1rS5fFYA$k5APr=m-Hcx5QZ-ynyj+!@;pdvJUVEvtx(oqsIrS&S5`^aC<3S(3v zHBTmWs!%&lmUUb36x`hm>y0q|4LLsuCuCPDyI=X-%Bvy1JZA4lg*rI|u@AR1NLjhw z6@tyk#})jwG}EZc5q&Z^>lnl>=;ObaVbgya@u@qb0+jgMc41g}P2R*XE+B047X9o7 zv{(GDUSK^jVPPMNBPiM$qCTVp8ul+6#C$b@56q!Fi*ihKa4GihoD>;d+U8v_@1t|$ zgEc`Y?AAuk!o)qHob%m;zx9MK9JCv(IxE=uP}oDzv>->stqOMPQvD;a?UgQG3aoDT3f4vk^A2)knBm8)Zrp>1t}4z3BruQb??D z3cL)b0sEe?kZ<7=9C5D}-(XXZ3JY921bJ-|-~rY|GG0wg9DT5f@8*z8ALfhylk`xK z%v?SQIQbWYJG*w>OcLo7aWs{AwrhW*Ml-BehZEDJ;8HK$9uNtq7bVoUPY3`FPknWI zFIsN_c@n&WLB@9n5?aKQw)+gI0mw91svA>;k%sjXbMz6dzQF2dZ-Pw9;><5rW$Aw)k*msHyGUar5hE6XzxVFLEF#Mqv76RvcLDq z{`SG6@#xWz_WI(=-UK#Sb$7UPD5z?l`iJ24Q5n~01#AnT9^ns^JFITp_C4l5@cUx} zM%{X81z0NBsZ@unbnZb5wcC$Z0;dRbAqxA{I<5up!E^01i}~HTj{v%{|K26ofA2ra z{!g|aets41WBn%P<6wW_B`uMCsopXTz_mi9~5 zpa}drH-3?Qxlt-@P4Kyi;#}XCY(7_21wyB~Yu;;0Aq1SW0zu>*8~bitQe;JEU+$0} z7rCC3$$H?pZU7Px*xjwR0tL6QuKkAvq`@8|31VaMsP}5EHx3!R*|DVp@4J!O9u{Qf zk?YzX56R-gyzGDMCZSK8p1{Ha9+hr5Z;}Gx6DP@Uc?P6Di21F&nqJ5Olbp9S9l*K{ zFIPAVYU1D0^B`u0OC?M)WO#R6)?l(Z29Gt!C_tE=J)fS7p4e^hwIyUgmtoSYstsA3 z@4=zQm_i;y{ae;;580iI*J9oDQ26(+wYl@ECu%FtvWkClsUua*B-#GlMjteJ=Otch z$1^bG$u%4bAO!j)eD=-;2!cP;Io&S`(8+~Z>CyF@l;wzVg}S)yJMy*7F4Km> zK_^R9Lia#@>oZPMdiAkVVT@UJ+1lj(O&FzBN4zvkx2=H)wjl~;YfCnqS+yU*-FhT^ zE2{x=v$lWnKoEJA=hhB&IH%uW50~0xmXrnx635z0&AtXp?~T}bfwa#1P~XN&Ex#W7 zE)cZTw%gjWYZSh-O&98P+SeOad8cz$G8jdJc9q3S6icTLGQml)1jg0@nFuxH+@|fq-=)9NpXs7 zz6>N}Z=+uknGOmXcc3HzmD|0HRMlqS(uH-iM)z|KB}^~iWCNP(RT90Bigu1vruy|` z5Ig}6FsijIF4!wY%5Ot zoLAD+7`+|61MiS;+>gD~fd%p0h4|;?A^O)wccCf7Og6w#EwMhvZsNHS*YCd5Qkz$D zJqBNvKrh_;$@|GWD5#dEw0fpikH>#>EF^W!bZ@1J9{|sLM9&XDz@JOtzI-!@b; zAN=!OPsbnY;SkeP&!+0k>UnyW{WJscoShzRymSAZpN`#9`1rn6{l4VU>2_Xd2E%JPF|-cH+MyiHEHqcc&B<1uw0`TlVGuEI)<*t*g-h@aq^e)5 z4wM~kbucOxf@q1|N%Vy=H_Z+Y{53A4{N^yhVMtPC$-#MbJno?4x@KX_eGKioY& zujbh)PFRz?!uYZ}hhyGwlPjJ-^>~QEZ*b$AASfxHmg=%kHc@wL49v51mQACxtc)ZK zA#Ax%&q_S;EMXK*k8*tJijYdE+bV#fdS3iK3nHM(>C6r}%#ls$nlOLuGDuXg7KD`n zwGM#KC(z*hB!@;Eog=i-BaWGJs!Gu{O1?P+JpkFT!k-qiXZ$*eWazon>~5f`C5B_0 z0|ogB7KFSETQuhq06{k>%)$`Ik0~zFgsFNw9FNf$@bO=;8@%WbLhN%aDOJ6mzRJF$ zvWS9L-{dU^u|3tHUITwHAd_oLs5lJ;gt{>x9F*scmtd{R93fNIEA@PQLkWBU~;6Zlq8o~b(R54($at9{ETGA4oB1!`$$7N z%>J0`08w-N&GCtJcG6f?c+T;wR9^PSSqa(NoTtmw!CvpEkHuz>Mtv<|<@ENG(ou)QMh9!w_<=_cWh*M6fp9Z)~g@P`kBMaB{+}Vzqko z0g0*cpY9z3DjBc0B7A(D-rV@Tn7zi9c&h?uA4> z;c85c;)l><_kl;#Lr`hZ{lzq;F*nvIf5svCIlh>xLe%#(;MG{(>4t?{*9MWE8XV~M zARX6--MD`~!kL7&cIl?4KQE8=!n$St6jySyLa)n?Wwy{!Q-06zXl8v*BW#2nQX#AI z`80zAB=#k%qesQ@(*DMnLiM<}-patM#$jlBauKGnF2c93wMZf1gGL}JQcxBn=C_-v z;{DgpLQNs*5QHILP@q<33{on)Lnn*2B@KCI^&x-xL6Zotp~mnV`brC{J=F1Ss@g(| z6D^y2IHvB9zMPP~jd6Nq-c>|+D;=)*I{PfhLq$T5o`N~6^$d)Sr+V+moEw`SPuLippGpue&05gk(7dYH5 zC7^#O@lO}D*U;$p$gZ`GH{H`OtVaXQ=^$m{qM>P7O8Tc@?t`|C&&*jEMvp@Gdn6xc zjOLo&osq!&R-Zk#o>hyZK7^WkqZjvjgW4ziioY#)mAyF*kb1F@z$%EKcZ!mo0^AnF z*F;+!CP)sax=mL&d}5rSNKO$NCzYtv%#eTTS)t{mK+AEV!WK`=@|W6D?ZvFMLFSQD zeS7G*n>5`euGJ|LioHQavVw+cu?+PsIjM3muu*dcmlFPi%(56KQKRtRsO;l@QJQqu zHkrVB;8F{@zg>#%4#R5n2(_NXb57J<;sNX>1U~H`>Xaen@j%eoxSS~7Eaq?k0sMcJ ztqjHU0Gg0#`iafiBrPH5xXjOJ*`DD+1ZsoZu8ZVmCz(61Xe)dC4yj-lTJH{%YxJ~f zM?h_*PEAEbmE9b1_;HhI-Fx?zuubi|qsv&!hQD%PyY$fF;<W74Lt!WMW{_K2hsf zsUxt^3Co;sV38okKBG+Ms=g?c`{q+@Cj`|=vb!pi)a;~6RKwS$)z;MdxlOI9^y&(l zgYTw#5uN{f{aTX-&KVj&2O6HAV6glp}l+%kb{qguyECQZ%n6bw% z9vqGyLq+sIyr6$VI|taOdk?>%q9&?zw7>U|%Ee%!dotWUgx?$YRUP~f@iAEHdd5gU zRSe|ybxL}g=A;)0ixHM^u``<;pPLjVY33fRohTbccz4gv7?WEn?|a=;?ZRWH?*NOQ z>kRLrG;x`w`U-pBL1?e%V;TOD9WUltUyErh7dN2$5nzAtzDa@|3WCaxfb1g#6hlgRbF;yiz*&_nwHrvh1y4Ey=|ck~#W>HY-Wn^fL5- zjgaaV5uvZW2w)vw2E=8}(FFFvT3=!dP(tCDFoi7dct-Wk>uN~V->cletbFRv*Kv%d zU#^Mts3?D?Svm`{sD=DG((AGhPQ9=#gEmksmU7+}YPTw{`_%wQY8jDqg)bo9l6Kk-ded7s8pdACr{*Gad) z9ngPFi<&m-blv)??0I-amg8$YiseIW7pyjvSS2Q3>=q_z%f1>c%0e<%pE(aQe65aF z%C^tus4_3v$$J#`j7*673U=FNs>SCvN^(7VCZbF<)dhL9H#%G?$XF;W$Wq`gOff>u ztxPmZkVoK^VO@p?ajqxTh1$xhoDUXm@tA+`0MQUuOH^<6$Sh%<_PSbx6}1*w#A_{- z57&wqhT#+YR}H|0Ay*P>4-5&>Ego2?_4x~&yy{9NY6T%}4#P$Y$quau>19J%5xyT? zc!mQ4kQm!V!Zr$7IBF=KrW(v0w)>aVQQOmnpAQt{q_4lVogiOt=0_-9*KBFQi`ah_ z`iyI1!MKUxgyB%HGE=FSccyqN8m_U4T6^P&XtX;N*`FXat%o8kD;i#-$ok|(>-Q9% zl|8a*KxnlarE^*ei*Ey(;Sa|1QkBHP<4<}+tX@Bk%IsuiEC-1hpkg2K|8WRn0)9D7 z*4-!UW$u5xn9lPtnUBrvkIktq>Fs}JYiBV~>I7A|aUoB2cs0NAB%c;@bn4kOJBJ%V z#M=hOqpmb!lkdWk2$ieVpnDDDHotcnJj}~09q4$<(ni8()T^CtKyjWJ7i9@R>vI2~ z{+KI1Vnnd?o31Nfa&19G4E|#*Ox(56GJ@n5Qn(b5ykdFs-4gIW$P0gU6qJ8)bp$5z zO&GSEAM#s9Tx<-dBkXb{hf=kS2VsC)TmppOJE>x=)v|IwYTQ^#A?hXBxO(e|-R-?c z@YqqqNR))IcVJ&u)^tdQW_>uZ|xonbO{E|T- zZZXGOTp{sTJq>w=rQXwwUs`|0M|*$6L&CW?k|n*i)5bOfab_rqgW5br^}vt)rpVy= zOQ_H~$BL^%1vTj{j;CBkf;`C%#RYL8#wj;L;?}rGS)rW5{J=IWQu03tom&9~zM+!I z<7#p}6w6r4zn%svFP2p*UFwV~c6t=o0PS&Nc6W9A3O{UXJ2i0;M#F!as;HI}nM9;Q z=sjC&xRvKpNehrBex_62ofib`++Q-BN=sAHLl&8_+ruZ#w*4S#RLUc{SEi4j{XuBx zO;Dpw@OX3y=X8hJbf_d5mMPWm`Fcu?Oru(Trv>tOC%0kHQ)G2T)%!5&T@hu-`(sUJ z_dpK|pK98HlwLNAjg|X~dNq zK6f%(&{BEl14MO_GX*R)F)u_;@D==$7S672YU@1qKR@Ob%`4F$c5EH98BL#y>?EyqOOxci4XwSu=Ao{CfB>!FCal znEo%JHfYHf+_DIWRyz*+MbSI8J;+a5Yz>qPq`OI))TVUH;I|AUGxp_XBherX76}a zD|3vo-ya|`ye$d>5|7BX@KBt+-8v;`1S2eYm{oIcEs1}H?1N#EM`>=Y?_-yLvBjx4 ztZ+(sxQse6S=#zKO7gf(Hs9BIf*o?&;Jh4*P|rOcvC6hEdzguJ*l?;Y`Ar6o71oYy z!WC)M*`7>VSUZMy;cT7=>3A&v>MJYP%}}Iy&A7I7$+&i1E5@}OTrh@>6zkeZL8GL+ zMCaKlBE5gWFJ*z>-?_gz!1evQw^pYk1uQRlvO_fPJwTKHkGpOS`x%KG{KMXnHn&a# zKbIN)g9tEfAT^Jh;Vx}?1WNm+Dc3Lz<0ejPn#3JDp%i%hcJ`3Gk|ih3(U#-EKw}-N zm9$!|R;yi-TPtF#@xSOq*cURF9bC{Vx9tYIvMGN9!2ALotu(-g$&Vz;zAHZ05cRS) z5b(i0+>D?cmh-fPY?FGa4G=LHkU*pRah4~cdxMUGAwG}$SLDeVS3ck1unX862b<4+ zOj$()C*h3>Pj9%w(;GG?-kjj1)cs3NtVG|0?4;B`Pqcvd`Oq}MCdR$#6M@GNr9|%l}p=wtKQ|fMouysa}mT^#4`}iaEMnF*ectt_2 z)kXH7j0+m!IU|p4($iZ?ILEMVaek{t={TJho1GSR3>8F`=@Al+guU=%vUIMBkrh>V0?!Rsr#H3zxt;M1i6$^h; zWTS^@HccjzU!!y~%wV9yVA|FwdvS}xd2L(4GE3j;a{c34L*e4I^e@#oSs$Z&-Z`2M~4SoZQ-JBu7g-+gJ_Yq0plH1zRx~VetI82&XlP8nF6gCObZ~M!hd+J}FlTuZ z*e7Vw{~HEEsm+gsy;UGL2x^37eXOFEen#ibruS~?9H2j=b3G6Z=sZNLi}rtHqO`lB z#%-DeGXpXK+e=Qsc4xKG3^2~sDe9lm8KDWSVqb#Y5Rw|YQ6)dl;t@c-9wp=e$SV_J zfp3%iyi+lM>EKzNR0;`3Znw>73i6LjO4$pjt@;c<8ED0aSw_)Zf(|PI=Bohe6aYu_ zkN-!thyMpV`nzbXe8|SF&$EAh)64n)V6OzD@XuEyuw$t(Q=p5cZ_dEZDaaX0>IfN9 z(ZXlbA-?yJMOykrLnGlN$3m_#s~533tO(V~P5|d64~Jz3^-*@6>XX6Z1=Lt4paa|M z_bFOiN}(@r+3%C~Sk6BM$@b;0rGn9XvFZ$vHO4qI%72R7jIfvu%hm8G%STC9-a zRqGGM7g=_NLs@S=E0cdE-44s=ty;$0+87Vj0~iHHkZn?zHr@j8{YFzsx4~Q}Sn5`n`h9Mx-&Ji#%muQj+(3V!Aoqnkc3Fbr53jjd zRBy{b2S*wR>O9LQiHz$O<>^rN63CwOWObQQ=A0V&XJ0s)cRs#^Wt$8_OVfnTon$vG zB=K7d!w?ldh=!3t?}@>K52M8YG`J%OFt_Lpe{JfKUY*0iKj*NoUwMu@nX&ovgL~iH zrJ&l2+-a&h_dkCtD2(}o@vBqj3e%Zy9sb{xS>VS)k>%cvni^OWEl1Nv0qMOMVmmWc zFR--gv}pRSQ8+~mObModBkT`H$&It%uhah3?(7;DJo@Jc4Vi%ez;OMqw)nr@JL(?n zogGH6hmJT(1uWKGlXbB)*sS5z!G z=z%=HcR7H=biH*IBZ=%(!; z?C78Ca<+HVW&qxmSG>J$vs*SmVM+gT^?;f=!m@uMF)zjeVzIpTdEVaXY4_Xk)JT4C za@d(m{q%4Fe}V+;T}_d`3~l6`kdTZ=j**{W_yCRxsofS)d{&yA&t$>PJN33yGxM- zo0)%0JO;mhPkIO7Q~dPghuSy2enI9Q2XOAlvs>y-FZ~@#L%YkkLv`7Y4Q>t-qWnS^ zPJF`*AKyEBAY8w5?C#FNr_noM;4b*Tuz&jZL6S>HBU(uQH1N&Y(2{`cA{5Go%Y+Mv zT*cSe12fbwEU_ZF3-}+5$m01~aw+l+vnPK>bqf@dPBD_A#U>r$hgXX8*oY8pgyrH{ z6C^$7W#yvM>%F94?L7cSO6N%P(Jr^#7HDujm_?A z+B*FDTl{OdZSW@D>+|c6oc_M^$nEOe zPAALq(z`bwx&4wPM3}#%EAoxV)0fkMM`7F>ApZ6uyj`?k_pp9jkj4+jSw02j*PCFx zM=PboSz@43!xASAKFUyO07(M3p{UB6JgoEqu>m!Xf5~!`7TJOndwMzvj89djmqtU_=+ zD=OyA1S<8qkB|3`7zU_PPL6+0PVs~F7#Jd+B`qd0lWk&e7Gt>6-_J%_9-ZQi$(dgB zdnyMJ3nVat^7!=d@L1ryF&EC`95gaEqzgbozx zXBMQl=0f`JGMzf0ZZJWxIyv1ter!Q|doHvSSeF+zIM6C#5&|T6jN*UU4^Idrwb1+e zuNh{H`PB3M4_w*-iIyo+wJ>(6MV6x`$qg-9TBnf$jc%M_r+(UZBcy`sv_MSMM)71}^o`B{MJS)fz}zasRsdFi;6d+DpWO zFUt9{D6wEPN(7|Dk5v#qQE@qQNLf0Y;h+dWIiK4=C7DXPQ8X=cCmB(bA}5!YJCALz ztK?E*jGl9Ha0}49t6?!B|~+W5-$_ z0)Tx}b1)LQY%sq9XbWm zC%uq>r_Mr}PC+=YwYM#gmv%ShcN7US2=9G5W;=+JzGTOg(qTz1sGSNjFjIc@vuqlV z!qw&B(~ei|Ns{-I3DJ{V_vQ8nsu~f+>RUN*)jqdqL|T5_CaLW_n@3abFb#^{+o;S- zF$0>UK=OaI|B4I(j|f`j#H8W#~>T|KDdxh%KO77^qVMmDzu!olFZ&&g43YiYsK)9#LVU%Q=1C z?#H`7rG-_f)T|oZ^afDa<=_~~*xPjquSw;$C)<~s(V&a`CfVyGZ$-hqPIjs${k*bX zJ~!#AG#uzGXL{Y0teSoMG%1ql!o|O}v;^z-8%deTR`{dS>rY87%0+6n=fW08T$VDQ zq;P+z3GzRyAsXd zMGChQ94~?L^~sYe=?>q(?UXqq`#ZHQ8A(q&b%f*<5t>?;tU}aa6b*B!rD#-&XYeEG zz=8@aY|^Qs-sRh4m%_4Pn8?ItjwdE_C-a|69wIp32XoOp!((L?F3^B?EWTY7{@{Pl zUY~FHN4KlZpk@z3L#f>g=SpLBP5hIHVu2d1XP?fb-!)9+4oIY=kY+2o{LNtJtZ$=6 z+7z91r~oGMEC?#pQd}efO7aVN8xiV9|2y<#x)~xWlUKh(`9<%TK`lvr4GO*LcVZ!_ zKE4}f_RppiM=x}5>}JUwiLh(7Bb9%XcwOq8{$DdGy0(X$&T%}wjKJ_E%XfVJqf_xU zU%}|)zXA%BN3foww^iFC0nB6EYR{LWk#n+@nZ8MKBVaZ=;5+76d~f8d-=vTz8G=f< zVzKs3j*6;fDz`jdym(FoH5lK64DgyiG<;k6q1+-Hg;itAHMhd!A1n(G7Gl_r6S%MxyjLj%iH0PMQ3bzQ> zXRJBi;}n&fqC>W!G(yS}h-_IXHW}x)Y$_*!HJGu9#>TavZSSn(Kl~7yFT2rk+jd2d z#pP+{nlPgI2i_lFoS*;d>v(^1HrWf|EiIWe7D|Mbu^at)w0IMj*D(JqjY-W#Uxj`a zUKrFLn41uUb3?&bBPCnz9x$1q{z~}r{OM#qZ2B4ju*H+3WMDJ;6x_BFM?~UOvGbifpg?$r5i_OVfY9T2SJQMe;cX z^J+BP1Y9>%(bkJSiO!czLBAxRf2x=Nb=LXvz(nBD&TJkVq{Ak_P;oAxJk;u8eE?5D zu)i$3UKj_z^=iUyoySN922dQP@m-c*sdBid8GtLz?GiM`7Ar`aj1VW+u^<)yHLgvH zj!r--o&^hkcb-?SP88=PWEAMNt=e=YO!p8i*Q&&Ra8j-HQ5B96 zBpTNK!^7jL2p%={^`i>;2o{ym!?N;K7WU&Z@%Xr7{TIC`pF1E@_#>xogP|zvJyOzb zWf1XAu;lJGWS-@v$>R-s1n8NoWLX0#Ipr=hOmjTRVY>+$upw0c5v(VFEc%8svVhFq z#@G2IAzg$00LVfi;2l^;Xq3vn*#FI zM~zWSl)-CU@7#d&b-59w0HJ%-u}ZmkN%&D9CZpViXK^y>-8TfVJT7c^r#b99tAeXuTTIJh|y)7aPGORvTNFF38OI8D*?b z8DxU}fV4pq8Ke$*slGCmp#AtWB3YkE(6;^oX#}Tn(+mV(1U#dS4bTR@mUu|wz=_;6 zbxah!@pwib8=wz*|MHLoLQ}bE3L(K1pWi&Aj#a4x>_GGT5lnG^p6*vLeMT8;Q^q|B zrZ`g%B$z%UlC_ECegspTsCyPnpV7wJv~f>@DbCdW3#QNLV{Q7lFToV2YI(twuFBQp zlP^xbKE$fFqXcbFm4nNyk%{h2NtYSS+&P+-@pUubK^NCaKOLrh8d>(`;F{=sedxGL zkXC)C3G@!Q}MGe4m8>U=r@YG(R=u>^ul( z_c+s#hyMKt!Ktr}Ic{Ojvp=3#% zx7jQg>LkzaIb5pmQh*$055V_+O$P}U6=T!^tYPi*XD2uAi-#jxDX@A+bgeu{&}{@x z;bfp|71J1<2kk)a)wu0pK=&4MAtr-TcN<3CbUh6?wZw!fRMeYOeOn?UD2^2Pg7mY~ z?&0T5934)7AwM%t3b~rmDZYQjPSqzSwaVDZ6MFn4x1hm$P|9}rk@j;1{BGdIqF z`(?SdS}0u!;HqOsY&0>*A`5l}#cTZgQ&dbB z$!pQ0dQMwu(0wxIX4bzR^W4Op1#GJ>Ft_SEE>gn?ctZ=qWW+f;+8B*uTK#Cv(Ys8q z>BqMT>}{i@uv|K-eG(;#Rx}4Cq`+E?W{}BFbL!CQ?d`sUO`gI7RR}XSrS{L_$rb+q z1ggz{kAM$-sFC>C8JH(IFw5WU{mG;_f|rL2d<-*`z{ql~&MxUimY4zrFtA((y}S!a zEI`rYFt0KEW-~PtZ?lZ@6RG5aWWRLch>2wUnI}MIG@ymHXNt+=2=(*bx77_vXqug? z_o$@bI4^vGot2%X)KC9FDtzi})!s6b{aSK=WYhLYwNs^(PH@sXfq`x0I8t`}K&VY; zm(>kyn{;Q@OQMe(*Wbki!B#| z&M2eSnp>*p6109Nt=~xJm>qrrtZKyc+xz+OTR8Lmd~mpTK-NRN1b)@RTWB-ob;7oP ziOd4b)(hjb9J4;e245r$zzz8xe~UW>Z0+lllip!8X9-cAgCrj8aCKLTmCxMToynQp=W?e3nP9Gtwby2L+m`e3ms zVuH}!H+YvTDj|!tr(+EDmBKNU&LS*-@LDTY0dtH;ntP`DP%BQ}(EAh;0-y4@9VpAe zlF48-XUpps45D2%j&Dmer_fPA5kZvIe&rVn@sz=NpcIrXGC1O2QYfZl4GKT6FkZ$C zAWorQ=joIKH%Cz&ySkuml6Yd-k2lcGJ_p|Z|*}V zzyj~k*-PwSr74Hw!>tA;w~Z$XiInIK1XU;B7p_YUr~QtzI@)f-6_9P;e?KljvEi>) z;5Ewm{u4L1v>5%11+i|#;dJ^C%519KxhL!=X0D*QW%qlrrx#n2Oi;>@1H1r~q2mdt z2Zy;Hw0b7E!oJ(+-5@%o3m#OYepqMY6$u_ryi%>Y!-y7T zTMN$}0?XUXBzw8D$5xLrnjJry932FpcY3J8YkC%7rR!FC65ulA4LMFH@Y8!!aPjPH z(D-byD`x|5<;beG^Hx3|z(lTbIM~Dqr5*!Mj~zO3$YL!I9^QJc6TqQ=0(lT;nX=n^ zvUj%s#o;N0hMssYwGOhadBBwX@QK*9GTzU7@oW=KQY4Ii}Zh2f?Rt) z(n9Ks_&;ZNSZQaH)2~_D%;y;{KaK+7Wdv$e11TP3s+=ffUGbfO^dqWUBkS#b>W}(z z9Th${%1MG(k{?*YNx}esm6*KK##bK7T(-qZ&RZ($!^>r6LyC*D=Sd2i0E$}M@gx?K zfuezng1B@cCyhrnC|S9#|9`JPom!~7YNs~umAcV;jo$m}_?1<}ZI3eP&;f3}9`T3# z!;kI;$x^ni;P<*8Fy1fWKU#IlwCy(vPL?HuosrP0U6h+?S2^i_B~wc;8CFM=?wA?N zYSI}42uWs=y-+ffQuUGHKi zxF;>cHK{zP`Rwn1_b=n3mrRN*FZehe@fSV3BIG-qjC0PZdp+TU3!vk^a+D5XLqUf8 zdi2QDlOzAO9QI>gS=*|;h{H|>3;AR(;rGclm+U7wE^xU}2{B2ze_P`aDy3dJ)|ymN}Yd6_W3ADrugHt7&9P$dEqTt-AQ+uqpn7ZNQ>|& z%w^rwT#)s3+y9g;WM1cst%a>3jY*?sV2XL?Vt?xrY67@NkB5*<0 zubT%I3h;J+!w?1BX_UWfZZb?Z-(ob|_pv;MXGSWQ1~i#Bfe@4&e8Ir^d{truFDEbT zsVCk2ufBN_G-xcNuxAj{bno=>iHfI|^`d7VDk6mdEr|=y_w$W++*IloBqc;BBz4Mm)S1IvtkOcO!hDvK@2}c=@2wmNlsGC`%%dD z_hbSVH~FB427;%o%_>+6%-ek#Y`;%f(`qfPj<)lX) zyK&xsZdNw#Y|G6tSH8?f10sHjTn4|$da)cP!Azp2VY=AQMGSVHm8fsox#jLmNM^HZ z?)En3&bRC|NTfhZWHak5Pqz5GCXl>|xzX4k!T=Q086)vr!JQP`J`z03Tv>~iPH@MZ zGG!$p83Za{0=8S|b$H6XG82ZRVLHmksytoB-smp01(cZJ9zE*I|}=z1dD^0$#@ z9SaoB65|+MmwRa^$S%wY?{^E1+;U8R5m2hBMK(~;u+jBh5Uim`&h|Bz8y5)6gW zn3xDD9TlV4!X{lXaQeYj!~%N|O=QkHH7N0>#X}FYVoI6(vy8K#oah5B@1x|OZeaWO zbg(#1;#?*c$KQmBH(bHBWfE|>7dZieG-%VJRKi4VA^Mpp=|^|&kmoqAwD6yQMHM)3 zf;6w&*DiJ!v=^~3gPG0Sv@3mNbT?XYRzxwp_?n$#=I2>X;^mHpx)qGv-#tKLGev0N z@euIi>pzL?P^EDx4}+zD5>48g+`R$Hv4X3PM%Jta)wTw;;pFLY(Y-I0o=dMjPpx3F zG>9M7i%XTq^Q!tOJgNG(HK`4M=d{AGc+7XaQU8u!^-=ECg=)7t%ZwRjVuM0M;*Qb) z`a?M`Beg-H=5w6FziEdMit-6cMr_+B9q!=!)V&qEuG)1CaYMCQic{+w#ln9#7*EFfIS~~2k}5{>3~fe3xy0kZuDp-{w*R#I$T>8C?}DN z*a%k#P*zvn3i~29QP!w!Rvf#_OZ1$`QpyUp=SfNt6`)&C;~>unpB$b15Y_??lIu}+ zi+-_15y*B)&6I%xI}q`I9g#v36ilc!OcwQ?144cWHGP~N()2N8)a`MPk^%mnP3kp$ z2W8J$*%wszIb(PJ3n)j-TW{!pGU72TbhKd@K|T+Yo`Bm{F`w-9sFeiqBWq1RdQlqq zNx>01U==%8-RGL52{2Lv_NglaXV^;&xU8>&YiK|@N9DFPUokd+PcO!pF4Bu>jaW9p z!C0smV}kf6DaK^c-Gg%MAFWFI=6EB@q`($`~SZe9=H6g5vur*>UviIBqE(PLo`t0pOzW zl=KpwQn#_4O5>h?!fQoG9BfBZg$}}io8Y?RU}qd*UmO)QKdL|u`f^}MoEBzB>#GFI zjn+9V0DiT{2-i^8t=4WL{cm2y=p0@}DHxX8lR>S}&e`3GBeNrtO_VOSmZgb?M6@cR zu4}9oi(TaW#`7L4pX%{ z7MST_AVW|Jax-AZSjZT9>NUSCwu^ObTz++3n@1AsYu6fKEXuWzZfzCS8Vz)q8jarO zE;Vb`p}&sBFR4&lo|%U^`5NjuTZ!dTS|vWmvYI>rX1BMLT1W3|HEm2wu+0x60XpRBnC)DvO?5Cx#6c) zrx}cJJsnA#A>+MeZ1;}EcF#U+rG1_QBUl$1@m$w{wo6wuj^0mt zCF?`de2G?r!`k5`Cz%j3#lL&;4HDr#ii(7xC$V)Q3!KS|6SM ziuyx;);KgXB-E=n8PM|GDcTRE1`YRPGWdTwi(Hv?8|M9Wx7X{Q9GkG1V|*5t-Avf! zuWazb+3|~+HoKqNBIDt*;1FF5-#`>TcQg3(5B8t@wCHHp5B!Vz^t4dPw9njWPl`HT zE%M|72qMXyEd$DG{GY-naDxk`IK$5%A0&K#maCpd0GpfM7-U=_Pwh>s9EZTY)~RMz zAfb7A_=YZ&&ZtXH-7OhU0V7=57|V1{fvqB$K;N;&7m;OiGOTP+&%LONM%-?pe%3#n zLcA}To*Itv{Byc8@4j2k=Bu;l@MqHKLjz%L4Vls((iH$@>el%vNAdfSZVa z8~f*amRRDo+Tm9wXL)*Yk>rs3$jUSCPW)V{*#oiH*l~H8pF@u?1G#7EIO*cUI(Q6I zfw~XKrif`dAiZz)_YZqLeCLUupYL^#4)H|y27Yl=PxyM1x{qCz&Wrfs&U@s{A^Nyc zA9B)*ywG|d+s9B-?ftKlX^fI?lY2dXOsn;pSjT+W&8+a9l7I&Zkg#So=*%n|MCuS; z>=}|HfhoO8bWL2mz-?-|)p;_#Nic3N_gc#v@Q0Wt^B!OBGQfyj{h-06EKc3v9EttQ zcHy~EO;80kO~mR6^o8mZcDHQyK8kOXya*vu(r22%kl*t0jPuMDrjhzu*Sb)DOQUHj zo7bNJWE|&o<=so*x#R#paPV56r+G1z^j4(0B$*ELg#6fzV}6^&&&32ZZr$iYKFKk? zf0<=P0)tYz5}Lp`0Anm*U@ie$_7hB;#OtfiROa+m22ht}c1|bL35Udt^{A>}vUCD~ zWNWE!T9)Lzw)>_K4jn+5qKs63K5I=2K`t3(lMCEx>c+DlV<{ZCBAHO`=++R$xH7_# zf^(yG`6T0LqEmDKVe*EvLT_d+vY6LTuBRn!97b@yjL|Do;coZ)QpLFHZyoQQozO$& z{rxBS7g$;j8&a-a>*hHSUV;8~Bj=pqZa=dEorutH^rJ=#J%NUY$&KlMEw2HV{!4^D zGGKb}kn-T0qr=k(_FtX510wnie#LV40l%{Bx=`p47@a+wT@d!Vq+?2~nyn}24 zNh2Niz%>{kXz;(URguyOH)H*X_63>(7c$L6*a{;B+T9g8^dttt%ccdw(TkS)0U~z_ zn2kVuCeD)6)>AM|ys315H9~R#>}OJ-GxaHkhD{3Fe?Evnajs5hX_0o+SHH&jCCoPw z$izX9|#e#=ZT>M&1^DArb!>h!IAENki_+{u^EVI19KUY zfsQ;*(%^eypX0IVoA~xROCkBK^+)p*4)-%~rIr8_&=ic62OvU3LB{ZK=1Kr{v?W4i zD47bjC4FAT!G^(l`RB3dCIFNe-IH z8S~3@{DL~16i@+wrw=#7TP(@5%rrVmbO@EJB)L`v3MbGig6j`9 zQh~=w<}#5t`5iSg(KIhtUNX5zfnsy!FNE!RoaaD51q9Z}MuQfOQR^&)p>6?9vuJS5 zi&!t*TaPCR+d+_aiv{$aJFptpF$`{5wuAMW@|=ToFrHn1UB=v!aFmYIiDs&1dJ($xZk?H>M|WgM5tvifc8I}*{TvY&^}+AS#jh#u`d`Jxb=o1s z3xp_j5I`@xh$o}j1x^kIvsiOpX#Km~Mwq~6xT#*KvD1j`i#J&|C}lWUX>d0%BGsGP z`!!1k_Efol9F*Z=K7)+ZSLN~sK0HlFKnF1}1|CdW{H*OxZj%Cc)Cr19katTIb`1c5 z1eyOXV7#z*GpH-*DZMXtD9Atb&>6;-{5w_YyHgcWJHFs324Q+)ONm&V;biGwcSqWT!IdCOBNfLm1`3TfDA86NamMd_!G14z~+KWf(Z}yJr};ljiQ=U$Swd}Ihi+Jx5tZ8~v6c@(B|jnC;(+ZXQawt*>sJNu!%l}xddSDly82!3u@yB2DiCe;;`65BS0SqNTHWVy^(hK5&>)Tk_QYxJVvpPK1> z#ImeDCHw()>8hfel(+y+60>D`>ar#tKwCYI@r+Ct75~8WwLI7>2&&k624-srIaY^% zrqRPU3~ozzFJrw)_Uk$4Dm~xTDDt`q>g}S#(@PPDf4rRb0dyBgx_C~%`G~)p835owXw-nlRK+5x*NxZ}<&;`^b zLX-*SaLOrv)2|Mi&2>21@LqeJg8<}zPZ(n4s(@knq9r^*U7{6E3>0%xVUj+SU4`X!oB9GWs$Jd=+HIS=QLsrROdN_@BYft<(u1obcDR3 zKSaZWHSn;qKA6}E{Z4SS93OV0+b*7X`UcZZ|N4%A^hqaN8!H_0r;tC}^qoC187jMN z>KBAh5;ax;2>bcx22|_Mb9FFaxkoo$cfCVwut88ge~KAT{8vb`e^o8t^x^9dd&6FD zuxi)fRoh#+>kRf~Rr}#3m}Me=<#&i`X|O1C#{i3>Z8V$!h?qKEi|s zhio2yB}4o3ZhYBDsD;+gtnEexkd-8bn!qWQosb5mc*rYD9KfQOLl1cc7mjiN0hlWf zMNYAnUeZm>o<7Q4)iYvcphS&IT2mg`CFcea0<$9wT_t(Ne9@G9CNt~M) z`cWeoO$d8065!&CD(OFY?L@m^ zQ{Ej&%;Kj1_=Y5_f=K9pCw=MmQ)tK`c(xi0+9;w9knG(c8ET#fDmxS%vz|nwTGqi;_-9| zID|WltzZ>MvV|Ar+@@jv0ZuS&!JA-@TOE%f^wxP*+t-cOZC~c2j}#zPy9Huur$7<8jWH33Qj}p$2<% zj12q03-4(CWk2}A4+Pt@KMgt1GF zu(A7_i5Y=>Cpy2r9v)q`VDYBDn~Q>YBEQV9aiFRh35$5T9Ji9qn+3fBvsw(_`0&r9 zMA0*yq?&O;R(^DoJzwh9sH``hAm##34H8vWlGzq=9<=>c>h$Db?@kX_?;G3eZ{VIx zg!2|?I~PxXw|AfZ`045SHqV?msOKDi;5s&ecUr|mxw=SyT=;K9)2RkP(9;SOzsl(|f6 zuElNiS`^t+CQczmCfKW}V{XiHW43gfaN>1lTC3T~3ie9195hY<@tO0zKC?0tpV8TJ zy2zoWfUDeC1|PI|P-8u54o3<#b9-i!~J{T^rD)2O2!DYqyW4Hp?K>kVxINlCB7 zd~)E7$N>;f;sLZLMNxw0&-y$+LF7Y?)-Y;+qCo`;5WixwaeqX1)!^+{j>->``8z`$ zI?om)$Irh#d47C+HX2$flAJz&e0q3xG&(stPJVy90g`zR~@X)2x3g$2=HjjBr1Mph2H;h)mO*ka9(``HGJ>fkUI&QDE*QwS6spVtHWMp;;63>O`w{wme*hx}|@$^Eh)QAdm zxLAN5!e;qd3eKn{s3OIzzb9%Eg9|xsJ#GE=A^)wdFpQq;+t^m&49y;GUE!9fwYi>( z%$8hd9E|l!>!J37zqMD`Kb~V4=J9)fz1ojgOvtjRA6!L4w9tfUM*P1Qpib?naL*h>Evm7g zF0G)*cgw`+-QjUuotFYl;SDhBM~_LN0k;fIFX(CdVk)wQ-@+K&GGqsz8%RBW5ss*C zKkc?FnooWLZ&W{iRZOUt5lyo@@4^i!^TxaECRs7X)ruLe!Wo9uL&e$reUi^71*p50 zQPlcp4)lVv0t2pGaO!Km_KNdIQ5{*k3K+ywe5sC|0mGB<>J>eIR-dwL5(|pA+n2-z zHp+W4$>_qW!a_P9*3E2=xNq=(FOv}rojnTZhN)vm6|}g5bcWw0`cBS-)XjTjF}O+f z!4q)q1N}1Cfs6yDw_C7Jj{kW47Vq!MH(xzcS=s3AXD3adq4ynaEmb+Hl4%H;d9yIJO!Y&cj0zi3|h9 zwHM7blUd@;R~J4>EOtMMI^p|wyCDL$TJ4%*4E+^cQ#jB7KOw&)9+A|4QqT9W_8$_F zNt#U4E6LdjiX`9y~r`oC} zQ{jcbQ-h`#*a>6jrG%7u$VxVj!3L70)q(; z8FomtMT&u)MCtQ?LrUSlt_+4R4B|}&)Xes^?JkAmk-6R`qC@RxZ`T2WR*n8jI(H z*C`blwp!!|lzvuYHpV~am9 z9ofx@e&qxPaBa-sbqt~6>^f?|Khr9aUKQU+tAT^KmxBQ-F^Uvx)i(3Vddw0R;=u}J zI)GvxQYh_pIskJ$QWWI6ngUppdFpk&Mrr7Zri%QND`p@qAYXNeD;PVJOyo0mU;FHG zsBQMXm@>D2n3+%gaQl$d_tyP~!LiuaTi9BB3miQG+7cDtfO?mu;Za+20=vr?izt7R zzkKhB8H9@ZXnu>58va#Wbi(lv1 zIDcF;d652D?O^S}aotEjKHOp~HuzC)Y$QiXnL${8mGK2?2{21Oa5t%*&^q~vJAFtU z`ufX%1AjT`Kw|6D8JFPHI;@rz;SxK#D(`h%FHHtH%yzaOj7v$FP~DE=A&YI_(Z=z>RaW7F&ka zUdNmvMLti9%JcQQO3OF6TU{2@X?6+5!9>S{hNuZ<_^W|+MUjG?XtN(`ThtJLI4#WE zVwxFChDt8QlEmq{Q$Kv8*wRP~TcZ)_Cz2&@fVnBG5@UN36-Ct(o`Q&t&Px${y+l{T zOBB*-?z9yX+cl-fSItS`eQ*p`<^)xkD)TDnL7R=HY(5>vkea18wMW)l$eoO0@PyE> zG6Gy-vs`5%nQ_rbSuW=RHJERI)VQB$*sPi%n}IIAz;yFnXa%B&k2=#&Q#B}y*m|0% zp*`3XSEx1!QUyo_MbD2oR}>Y97qT2aZ0g2ed$-KcIR{M#l6~df1vTS)i^$&L>tz(v zy4`;LapGmYsqAM}+}c|X%|9R*&+L#l2zRumoBBI>-%wWFP2eNpeCic{*PlbY;@W0` zSdFjDvJi)#+fdT1YD`S95<1Nh^T>ZiK3naDI`9KWeP_!zH|nB7-j<({%F~PQP@9zl zb$z~0Y8(IK#qq4J`jzs0uEN020UB`az8kqDv>L2h11$~iwO&%ba@EPds2#htjoxCf zEXP-*0EPt40F#1tj(hKa;fZBTacRXbtRyDZcSEau;QPnRe3~yL;~%?++1-iujjIxR z9Q(%a#8B@RCBPvPtsoxP_|nq}%z^PUQrouPBIYM`G=N<>CKOe=#?~c^7GPI7jLoDA zPb4fW*!E!E>C}F5J%zqsVP9f}vE#0>(Ym}p1m0I6G-i*Ed52ejuVf#T%R${1G_7ae zjBdS_;bJ%vSt5<>A>-e*3jEFI`<3xkSH=W6AzT;y3$e*T2pPV2&CR`fjUb@-3Q;NE zZJ{{qZBE2dsqT1LslRZbl;cZ{EA>)7LrAx1fa{yV3jd-_e2e6u5@x$no1)ffeU8Gg zzWVj3K)v@pM>pqxiTK(Z?rTtq39yz<4Ptgr;KhUau{YKTAh&p}K=z>#@~*3|52|PM zJ~-MP+rWhAwfgq8dE#k4#^8u@_H|YV&U?q@5jo9qs6vIi;PLYdkh%*snc(HqY&p+4 z5qU*)pq%nxyxHAxosYv*h-{biA3JdU(beAlMlvO_Sqa~NZlJp|1W0-NHa|hz`2cjC ztX%pL5Be96alCe`wAr6btg@vtWLbR%PxL#DsDSIqoMQe3Z8{*1hNLe*)Z_UZNPmI}M@&Buv|Kch zWN7mxsz=joBCZ=knKDC%{sa>XdI{SE9ZiKsUG#>E1@qn3H?}55imPR?orpW0_*ge7 zfQSxw7`TG-7yL={h_`ne5b(f-9&63ZHt5!arB$eZNLi8&`;~JaU&&=xVXq+8aOH^W z_l^C5$7py8JdpI^M-C(bBUJRn16{S>}sDcQI$OIXDSrzq(zBqwV< z>?rUW5M``C!2qGEz*O>NYS1#)(I+`}?nW|D5B@`MPq4d-YyOr(GJCY#)1!t~_TSMH zaF$npZ~Z!)M>>s?s0&)3hqL9eXWeWOJzORsl=>1|LrZx;feiO7-F^>-8Lk;VyQ&sc zwo%$NcsT}L&&T@M0zz`0I2~ti%G^uB#|KS)deu9u-nZBj?|B6rTBHLyL5}B-#e|=N znCnZfPT#t7Gje!6bBLUl8a&-XdlrNefq$KUR`p9w098Tzh;ksAw`6HbbNK~Bba=&+ zf}qr?-){!=-vPqF<@|C2J;0kTr|9O1Gh^G+^%3YQ89f5?NW`pv5EsG)c?9AAIJk!#02rh2uNO@@ub&gZ_GXa3O&lhaOU)TQ=rpE=zkF5U9;jW{b) z>uXZvppqh>Pn%Mo9x{F(UWvcExVLGqkN*I6*`t%ui^Fr+6VAXP`f*+^-b#|+(>WP` z=^O9MJYvaHpV*nxc%+p#U<|a`W@uA?dmvARr@7tcJmU5g?K`*@<7sX075WRHw?C1{ zBJl|CeTo~9K%7BGtw>c4`9IP{0g&G;7wjKi*-QQ$lVfOrPxdjd@WAkcPV!H3Dc`5R z4gGz}f>?8Q*qiY&qvz-TkS9WAooQxDXwSnSA(tePMfKW_nA17Cy$=I;{<2wrU6&UR z@v&Qx*cc@j>@4p0{k%Fxs_C6Eu%M?-_AH{@ib8FJPD3<+1;UT6o*86*9A{zxWRf^Y zVs&{>2D3FdMZ!3g@6Y*8WKeZAWHT_qTF<)s_}8be!*F$fLL2z`bJ-1>*4&1_un~GS zyOArQ3t{N~5;EKBs>*9_(OOP_QXW!R0dVCY{iY10r!SYuKvZE>6m-l)PJ8PBfNJ9D z(WzX_y;6&^rbF5ZW5y~OaanML%QpB+~GPwq$BKrF06X3*g}3L!h0 z%;l{U)-q|Md4flU;Hc@5*Vx7$V9SRL*js}2vNK$>*CvTPe>kVVPOzzeVlU2j>NI2b zW=G?GX>w2m+1eVHB^l&4zt4gJiz zjgEyse&Wwm)MOv3k(|tbbD*j65FX>YS5JI)YS!5t5DO$95`FtjQ1~ST$KN*xDIX$3 zWq=4Wq8A@iX2j9k<>ClJJs}*BcBm)}Q8}p$3^Y*LcCI?~sy@)1d~y9{x_Fu|z6{_O z`4n>_r{nJ6N!qUg`&kfIgQQA#3=`~f8_*SN>$nl5-3o!=RH2W5sX3*Vy)~)N%K*d%-rQtd3gAKHsrbi{)fuqs$~7 zjTtXFMLlAGif;nG+$HKlJU$IN^UfcE7S9vb8`_`vK^6JM)6ikec1Q2o&;e1*d$ySM z+t*iRsJip4Q}P7VmIiojJBCmBgl}otOu*53Ic9_KJ0yR9{-8hXNmY(m3q6K<4I9|F zFuL!R-)j)>Z=*pN)4GC*gV8KqEF7g9xL5Ot@WK|mxw;~;Il6KpBtDS-%q{`5W#zAk zFR;c@fOS~n6s`kk*uV=JBnDpa3J8ZL9jVzfQQwrSXYO3^nB=w z+gf*$UA8{N4XN!t1h4^8VAl#(!$RyqZ&SK9bQFm2)<`*n7K-}zQ=E-QR9a+Tfd5sK z=&}m(Nx*NyK2UZG9`&PAe3Jw|iMNk?UR(#=!cgdcp$SU$H9goMztQGFg`NI@2grt@ zb~xsjt6(VZdX%=L-Ir4|KL-~b2qUoJdcelI7@A<$Er`yGLb?e%&{YvW+2?c2`PE`$ zj)69J!7&6T(ySKo1v4H;LQ|LqPha z%h+`tc$aRYWjRSNDX$m5%FC&7VS@+X*xrzT9zBI@!KW`@zdSrYK9i5$FK4HRNA=Ga z&tD#X*Mna^)f){FS)Q2jUnZ~Dtu7JQ`%6mKEt7B=_^un?OXaT6F?EHWTAMr?HNqT! z!kb+D$agp%1GM)>*y=s8RulQJ4@*ju=Jw^a4>u8Q<(EZ!4H^ae zV#__c4mLU|pef=Lr)c79zbhr!ua6GT578S7Qw*`sJ8u}_;5fVeSvI;(Kg@fINjR)O zWS0;8U7p_8#%!5-A#Dc`v>UVo-6M^Eh07Zy$ww$_fJ#2btKLMa{(UuCdx}$yG=&9jEm zx^d3SVeX~92xborPERv*TXrUoKg8#MEy|YM zAi_~MW;^VO;dEHO0yda$Tky%xWffNVCHS_=;5+uIzBp|x_9nYb!3GNdPVu4Hbds63 z*c~&#IGv@KmxcBOzgyqgXw~s$ur{C8-3_CdV{(`e=}ip%+hHFjgVG;rXJKqrSr_lL zM5|`LAU_mJfkBSQ(*k~{z2Dz|+EEuu7+idZXpy1t34EeM;VdQn!Me8e4i5mJcY)G3 zRX6{zf|8STUU2e?-Zq#;owhzCz^aMe2kSdgOD2Z=i!AUlm)#duFhy z`&v8d{%JQqlhH{d^-Uz!S4K8`n$*G&8A++KnY_=v&hjDOq*SB;m?KXI@P zeLL{~*r?B}Sr@aH6(2Bv?4P?cW9}S2-%$2G?igI;(ux8@F^Fl~9*;Dme#&vA*#adg z)SeY%xE_|knKv1vmCuW1$l@MqYF_**GWny_8#^eS}-d z;~)A)Qf~^sJ8y_nYVsapOiBN7ykrhxNYv!Vy%AC5Jeyr(>)wxl5DDO)0Th72v z^sdk)${vQ~xAyb9mB4yqd7R|3m{TS@q+I|XD1T$Kr*pZVN~p?V zpqJD<>|66>rgMF61+d9J@`XP~#4YgsTttXBRX=V(+wu2lUhx|eGWQk*q=YgYIt)k+ zq`q6FtmO;IM8{7s$qO(z4r=}Te3mbukt~CRK71O)rdG1|)z6J8 zqR1|J#eD$(DdN<sq$Nr_72};*-_3$Il3%j@H`M*}`{S({kKk20}pyCW|&T zuZas^0C(meU)R7>dOI@H3`aTuK|C>XXMa;HVZQju1$iES!e?$qf_a;7>-h~bzjvxM z#BwUDX8_ZFx%|l^eOi3Lps*n=k)Q!GEMyBzE3YN874^^8)>MId<$<%*YC(*9Wup#P zpA;w>sXG4%6vwLYk7k}^^n~syL?m=oWwyAFPD{ z%YCDiw}3+sN6X8%LmNq`JCscVysV;~kmop7)3gtdY34!DQUWnoO4N3-b!9piWkeYafU*H^kp62 zbGS@6W9DIGpdnZ3-Pbp>qkEDsBKj4G=b}`6EpZGzV{ASY^DTCe6Rk?H!+*GiE_F?8 zSTVbQ9JK#o033tClG+pUG=_*kD#{f?M>}_U)rYWe`>Z0JVsvclX3lFvH#nB1H6atp zm=xhA&Iy8SFg7+l0{6?x9?@4HFr3~{WUh~yYEIKB5}e-Z))pqE4O~@H!j@~RwuYM< z74V{+0?hG^r|eP3J~!)-864}7tV{WQ%4-0BHj_VpMUA0SbrJ3X06r&x;AE772Wqfj zm>2C!c4kf$D2s!N&Owv=fvSgD2wF}vXk_g!^=A2*xGXnvtEY_jfT(<%+>Zt^~_@;6g?FbVUblPGSifi&Ys<0+i ztR%6tpkT_Zy3Q!)*7T-rEWd$&b%-`4I}~qGySl-3QRSlOr2ymN`N{dGHlTcw9|f7u zsrjGaL0{!I_hCRE644->LPG{C2KDXP>BWot^fzfcYB4}?y!GKCY1&1yI@;g1V2R_- z4%U($EL_%<3s`+6o#azqgQB}B&_tt8e6>b$x2#bY>k|vD7PTjk%Q{$pmP=1Pt`B=W zY$7(vDnmSwvmnb$iv(@qa^ay*E1=bcBq6}Y(yL6_Dla9YN{;AoO-;_l&wkoWdUS%( zr2M{K$36WOo#=t3*sjAE=v!no2Gyn1)t-+zvx0Om0?l_L3s&1XD=0#PPxNE}lZ(%I zh4LW_&7utC6bN(N)2ZBlx3-+uS(8Z90jeoqT9fLhxFUhpK0yp- zj{#F+LABe|Pot>L!o!Rh&SZ~(LjN`Adf<75=YnjCIlT!@92|ChnN^b|)N}{RD@evV zgfCFavYSgTiy5d7&JyE!CNB=G67m|(ridXrUr-BGm)(?IEQlisyPn)>!Y;fhdec%y zLNQi=TSe?Ud1}Rf3iPT?(|oajp$uJ`-;2MtX7|z;(d*1!&PPeD!K4!fnGII0)#ywv zb*Oi74)c+ZQiG4jxnoxOtkTaqzd!dhm{Yd7X!UN9*=u^ zS)r#e=`)Rg*(`}4)Gts`jnN$kd5ctE5r~?B!NQed@%pBJ)k&`%t$gCQ^>cQ`S6$?* z-{J&M1-QTZpKD*od;TBZAN5*A?AgV{w;1Rt3qIp60{_3h&TwX6`Yx^XrZYiO_e?Jo zkpoG*=Ok43)nvOoKa;;K*)+l`Tw}n0l@+$?hTiDrESpRn?{FQ8Jk8%G zGw9_cxmm3{DN5YollVkQ($?4Dswm$qm&N%YMhjgCdUL{h(YIFD&_*@j!cIN_D%UTQVM;Y4^ zYqNp+2gtRmf3LPE7*M05KafSMwVU4nJVsZ4oZnY=P;Fy(VQKC{PI~8O*a9`A<*8JE8 zU?07hYt<_-9uGZwVrBTb2c>o7ZA&V{?Ow5jW#aYe}lePU%0JP{DzPcz3$Q+E*2n|d8VGg z*}PpZtUHMJDq7nR4qpY{PH(6)BD1Yi8yWE3>Ww;r7>5lVj`&h4rQ64Ug_7wX_w>{E z3hDO>>Gulh_X_Ffpzysy`v0epu1v0f?RqXe3pfb*z5rD~s=tc^gLNIir%DC)S0nI&m*RoxKvC)8M99=;1(^vz@e2nIDQN#Z&L`_5lX((H1%sGXrQzT*c$!4Cw=T?C>O;1e?H^TJthr-x$OOQV1W=*1?MK8>J+$9N|&m zUd$Sa_4l&VmzPQ}aSvn~fBW${LR=+-?p(2%li_;k(JNm3h?i<5%o5mUZ)a!6^2M!h z?)QBMYu?O;)J3?X1(h3OW9YBZp~Kl5?r|MqhMS#_p~h~v)o`U$v+EVj7#(c{zprb; zC`$wW4Up%JYok4@F$>bT>uK0~gqC#l6uBORBuqq362OmX!93Xue{-^hj9K204EzXF zmd|64+P=vEP9}1cY!nm#CH4!~|C^ZGu8CR-A&YMiXND+<7Jb93C#|ChRTB{|v->f0 zNhU+Ba82yz#3Y`~SsI`{jvma@le>xy^f_F7K(|A6HLNmKSUjVr7pjS~9*U0iPA;>~ z=|<#`-!k-XKICM&e*uNj_{p0Os`lzM`L-ykY#u~MNCiC=Zm@ftr}KAsN39^$c&A#X=v;EUbm(|F!A+A8$Pe@CwSaOX!{OEt*8w zZ9#2k^pXl*F%*nLX7Z z&hL8cg)Zz{f1CSqP1Q$!!{o9LUByB#i<+H=>IW!w_#dkuaYT7_twEJ5{ri!n)xHK- ztn-!W8me_6$oQ_ZnHm=X5a?|2S_iEFyrxaeRpa|?i$EJOHqf$E*Mi(Ca$5&rJe`Yf>lrKO)i#y46%9n}NH9ZXk zv2WYs;)8(AC?c-Xh!h|hMl`Tt+jWAeI5I+`?X4{tK)lb(Vm{*_*O+>_tXT6aZIFQ< zVqp3eCNr{j4g3UcNL$Rt5|chqHH|1`BX>D9FHs8B4DFrv%WO`JlxjqY?(u{Re^yus zrxKe!e_OBBQlIEW&c2$tuar0zoW?G37kZnm2X2{2wpm~UShSePWg<37v@%r7lC3Ga z-;?^{TEe8?q1<&#ZlfaF;m|NU-T?nmz!127kb*>0lq79x=LSaQvkNm?Za;WvwlPv< z1jcpi7gSfswi{{}q$uD?V8v|eT%rWqmIe`3sLG&+R^!Nu#*1$66++VkJ+Dn`F6 zZ)VlIUjtg(7AL~5+VUkW3Ci7{tH34rZZvK`6tBC`1R9cf-H*qc_CvX=!KwYOVzuE8 z<4aS9)j0IVv9Z_FK`n7>U>GYs{mz*8+$AZKw>cxVQASbfNFt9S9)<6QAaSYRpovcn zf0p#1DT}+%&C?8w(OL5R%tC7?@HpOE zKr`uI=d(EvffJ?n8l%8ws%N9IFDRom4x$acCYnVO4Tm%9UlTlAFK>Tzd9|M4Zv1q8 zD}6rW1^YG(pzoHRaA)Ks(cz-jWsP|!P)%t|KEV;8{boLifhMY9Ynz(Ho5A@Cf81v4 z;b(-k3R|=|H$|rf=-$X2&aVJj`-kvJ@e2YSXIEv0a=iGUIFK4mIt*RcD}E|16#G?o zTrczS;_bbA+^y%c@~x_V0Yvqo|D%BeK-CWaD1)2!KkC3}JzuItO+CMAh}#_?es}L) zXMo=!z)qq`^u{BSt#zgmrAFfle}r#1!b=eT9^TsTTYtU2`31h>c$B9zkXrUp$6eF{ zAH|N$8KCoe=E1+za&0c zJ2ar*+^20gqpv@H=Qot__AvyVd6X^gum1$nxX+7t0Dg7gRMlFIE_d{!(p!HcJc74E z;0Je}&Wd7zGu?#*b+pXK2$1hK1#*Kx)M|4MM(hd;&Wc4~vl%+b4xK)SA$O?YA0Y6q z(_5qEyP$8#BsG-x9*=cIf5c}@ex@Y)s5HF|50-aFf^&tl(2Z}?*O zX^GI*_lb4CRF~W-tT^|`&1=k<7JM)^073)q03{1a(P`l znsj^k{F3I zj*2)doy{99W;36d3=w1asERw`^>%0mLUJW{xk-MtyCk-6Gf+g4jUXsN2FZm6l=Sy%0fvJZ0&^77{$R^KLzzmx9U-lgO%vXO-PbRyMUS;(*8=3BOa zp}qbmYm$mMufa!9U*(x;sL=)E4<&>TOqI|e1T-q2e=N|gp)vzMY3freMdDLy8UtZZ z+Y35J+$`pEzP~oT)1GO3r~fD4iGX9ytHgE?Tf+*$p?9~e&_6cYC{FpeUR$y_qy(?zNUju3A(xr1F5`6Qs?Lt ziP@8Ue?Q7f{aTy=kvz=MLidLGY?03;fDNmZ|3n5~{5}@JUt@C2RZnLOe>TL-jA^;iV8$nTPNE_;|&U zpl*GjEJ`c}(&_>GoMMhKOHA=GePMUbkKebTf90dI$@Ro$u`kjpm>GUHo;ZrSBO)l+ z+BChP-o4@qOyKbLp`TqLEL)9NL+72+n1 zf8HbX#k+3)Q^8@nl|I+6mufPez_A?;39Z3B_Yi=iu17GiA&n@!Zt|aE@9Ux)M%JHy zJZY&bmXLg+rIK(QC>3cUrK&Zl5bk>AT)$@SFrdiEHExWNhlbTlp_1+#BTV3@$T49h z#3|;bTzDZ%1HE;x7D#-`oEH$YJ`PWgf8q1?d_-)b%vMAee-QvD$$(g`duxEL)wb=42f?J+4erd0w$~ zPNP4i7r7VJ5-)uB17#U`GGC1mw>29?$2T5yUIJa0(2?ShDbtWn0<}Sz9fcAwf0aTn zPoli#t^Mmd@H-8+$vCU2?@KVwA-bO$m;L-Y-m(a(bPz(++A%ta=Z-NsjbEkN`bJpS z+R=<*ltO{jY?9a4q*7q`3KbM`7D+;JbX`>RF4!0@1KBZ6gU5X3lS6OPxk^0SMPACQ zD(Gb6d!K6}=5YyPj5U=B04$fNe~lDQRFSyzQ5t4H(wjF(j$q9-&RJ3&3JWP_p38JL zmtqM_*1Ab7KLyj;bLJK^9wVz5FuAN2(rp=HG}CjK>%)8mw8vk#`iP9y?b>F6Rgx7* z;b}opYPv9@dh!V%RdU!Tfi3WN5a_LO?9CB%QSisJnF}5u&Nc%7>B%{Cf6*R*&&J69 ziG8(bptlWf8d8n))WAY3Z+~GfiW_s|;!}moEC)%SiB;2UVO0ncFr}69!Rw@4vtXl~+(A#OZTNQ1524|hx zy(Nj=b=59=`TrZ(snvK@f4k?r#3hDpVf1yw=U6t0`2A_7`R-H5}lMnKPOhZ+|MMfT{tf*Y~Xpn3eQ^Tub##Qe0?mqPAkK0^(y+~MitL(N&Qf6gh8o(_oc9OtN$bX)OP znH*h?v^b4*w1)4@6ddQol<<$!`qWLo`QfJlpA5)A!2PXygH8%ezYdh{WCvdji~eTL z1x%##dC{W!5(s@k*3o{?=nO-*BDGVQ|6qeA_F)=0Wc)kp+H~Nbbym1J7h<2tHS~$L zm44j@N6k<`e|)Ov?0bJ7Rrn83f?L(#h)gE}u}q32Z4Q+~oMhmZUQdCisak{^wfJLZBbf%L$TU@q&Tg+%uAW4<@w z0zcObzYAZjbJZ1pUw(E~ zO*zRFe@Z4KsX=7DP(Am;gIC8QZ6f0vxG`f2YM_oT`c++7w1t8V+xWwH%2Urj0A)@C z@i=UKgBRdj-U1_41xz{;zJgb^*eES3Bi#vz_FI^V-?iRMH0p~(>Co}GouEy8DE4IT zDA2G$Z{&)hf;nV0^GjAUMMm1{T!=rZMNI9)f8Fu}8~~Y3#SKd7(V5w!yf<_~sr6Q* zoBEhbd(B59+x^xa-<+)+hgo$>Pu&Nzfg0ug|qxH ze|4o&M=dLu)~Hj6&XgQMxjUxzAU37-rsQ<9yZ4t(W(}Qg6B^86oG3JpaSdH&_QNbl z@05ChTBp>us#o$=NX(yK%~$DCW`&g}x%Dkk0~wvxu?y^xh)>*cF zraQ22AeXiY;0i1W;{US8SkXwU6l!$W?Qf+%1p0*MI#L|SoWVF<62W6O_frUHNl;& z`|sg$;>W)uhdYPbP8^=R_#7}ef3vOISlQNt=vLuXu_vp7_-^}icLz3o;@pr0d;KNa zpDs1=Lq3C0ABUfth1DNEi%)sexNgD-To(otLDQVw)tf3bkoDuZ>h`Q9aTv;K!A|X} zv0Zn84fcD5rklRP@cr+ zIrVZ>EvkqSz(25cJQ~JH8a`za8reP6@o`VeceO^og$T#jX^oe`lfr^sMTFJ=a$FU zwLzEyCsJv5H+&T=227XDx`D*32W%NQ1fWlfa(Vo|h-3A!Q8x^Ck84&E6jn{K*)Vmx z(`;SVb{@B1hA+85f^5%!Mrh>ks$-7O+Uju6qDYjxzMoM5hY37gIGzJ_>LUXQ>-*QOB{T$nP z58CicHWE{FDf#Y44<8x=lu{_A#*qRDZqo75o7RL+-U0JnZ64*Ph9n>N$WaZCi$~p` zaL%Z-_FcVB;g4yRe~hyX7QxN3udh=iQoBk-XotOjyQ-yJTE{`-S)HWjJD(QHDnwdI z3KjOEE-zt`Y;)ltnS8F)@l>?c4lEg0@fS06muV z{M5QvQC0ip)!4$oviHch1n)0CeP7nA`lj_h@Wb?~p}bX0Zy1YP4fUNQiM2|_UtSdy zMMK>V(~piG9v_~3c7AkfigM%DqvO-h9*#aeqLGHEdLChduZo(^UWo!X?pZgB`qYGs zL;ifbFFbe!fBbBu-$4s-`Xx-$Ru^P!n+s?gh-E8?rEzB5wUSEwgR6uY zx!*PwFM`8C>wFEmVYh6>Zuy5|Cr^Mu7c)vCGo9!2#W=$Wq;y*asEfP{;mZcy2DOU7 z)LxY7g4*$rOm)<5?ut~^IsVUa*KVC`cG&I;cG(TAIBqw3=FouFNm0&&CX?kS++|s~ ztvA|+f7)M1+f`@L*(SQefR7F2RI6o>axH%Ctsv4O*478{^6jRW+`mzAv;LVSn-83V zPuOOQzLetr=Zyg^1|>$X#Xh;)Y@zR^40G zYLYKqEXmE1$Y1?yP0d@UpV&-ZY}JiM(9xDAe}jPEti5<&NT4$R`MJa5`Wk+f_H$){ z{=5VI{%pRvEGqL22*P;^TF}ybQ{^-J`x{$xX=`c;C(`7cB66=p@ag`*01dTSe4l z-9iGI?eSBG3;e4YXiv4(buV1YfbYtp@i;7chR+wHgopOS? z@X>ya#@^nAx#fA`+DDWG?BQ+;=*s@q%rz8~v~Uve3s?a&*^+XvCwf9hc` zAmfO-VCy)Ww;Nl%*gPBthNZrngWwYc;%ktAWGwT;OxV2PwKqYHXdA7r;KQ0ueD5X^ z3G9*59xt$_0#Ba1z+8_&&I$>tMr5En63Ky90|T+ zGS|m7tela@vSG6DuOvP2g+6YO0|YaLV;;LVGJXl)($0$#`Lg~k^n{fQ?IWz%$+NQF z%|Kqb_dvvsGu_-P12D0QiofRoPBX4F<{2CD3rzvBokzwKI-fA!CnW1@oXq>^Y(dlLSuw%Qd3#@}cgn<axH^!A7BZF)r?DwP-#MSu_4ysLi{TyTZ0-=zHPkzmA<9ZbnLO z!OXk607mFwGbd$Z`z{Cmf8n^kc<5={eBw96k?0qJ@i3o2-?)YECHzX;J+36mVRery zX?MGoL<9*}Q}{B~IGdvv3|w?FNX+ugX~ieFh$K%fPZSnr6+a%$5xlYye5h~AJ^_iJ zmHYy|nBkMe%iuse3NPAhRxL{VlI>}>OUn`Z=cmB)3O69O=ugube>5RPCF^h~0_HH+ zR9mYNq}ZC*OgVqydRILp@apKa+O>UjDcS*Uu^L^DBU0cK#Cpr!lR9D1rVKabw~g5{2$9{NTNHiSzuQ&2laV$+#^Kv>975~I{FzX)gRFJ6LNh^Twl{wReaA@ zDoAO9Pcm=Gxhue3e|eU<$+9eRtb%CfRpmo@o+i%1THaF)&@F`j`-!UXyA$Hq5*X7p zej_&I{hsCug1^T@E`ok=KVS9bIMZd-0b+JpL(?d||($|Qf_Oe0=y!xk^Tfk0}f%MpibK431 zbv9NN(<$#S61U0{_hEj`!Qq@RW}eP6d_?QI_%WlnmtrCkQr?Kh2aZVWT4RKs zZX{)Se_p8^ElhrWQvx)8@*yk9TX=Sf(sh->kaRM-1S$bAT6J@N-Pn{Fh_ULL6dLQ| z{bL3ZHB<44{Y)Y5o8t*U<>>p<^CL&>rJ$VPSa4j>gMea(aAG)ah!n_CPh4iDU^iq# z-IvD@xpP@&C{ppI&78C`RwUDWhJBjs=j?JZe`fHRsqyf$&kgNsxOqW2n)}C~ zDHIm;a{B^fPs)13 ze`lV)6>x_{(MsvaK~Nkvg;cu&)|iSnG!GlO;WASubyaA-*Z;NR&~4bzZhzyyn@3Qa zHtkp#;92$^f4c>(NSexr9eIu~S_*v?gV*d$N!l$g3hwfe zotBHw&n`ZL?YzJ=rw1zxIP>4HX6N%WbDqw=H@1#>2s^L=w(7R61qV=#jtB~4UK#mB(ohoL(s8cj;F8c?Uiy2mpRC;42G7UDMoe>Ctf zk(=SFUls16xL$lD3>|BBh%0yeAa<|Xf!9g{9-~!#e9WzE4_aC7O&>hv|3gAub!dLx zRv)KTUO^zTK(A6e#Y#nC28yV$Q@e{gne=oTg>Oh5QiU4&q3jEjG0QzY*!50)N*29S${K!v9 z!aop8PYNvNrLCD8ixPFggtzskjQRGc9wfbg3YR5w=x979bAKO?MALD?C-gIhc=6ux z>G?-P4~jM2D}U%Mf99UWIpGMfbCY+E)-={%^2;$S~5rR_@OzEYs>3h0O^0#)H6xk}#Q7RQUwu zM41?~G}?W`xfzmBo;cE!P67LU`%U{;u;193m-*t`fn z8H=`zJ}(o3)=f-`bOVzw z&6}6@dQzg+V-AAQHlmx)!8_VOD5PJwGGnA4-#!S4s8}dqf5u(%rpdWmI|&ER0AS%i zd6JbjhaEq=aA=|Mal0ZWPeOqayQJX2P)=J; z7RhW@0psJFhbg8CC`nHPo+MrDZ1l)f`8->1=v1rO83=g(kS<`~Dr?Wbik$@3$l}_o z*S{3{?kU#QIFnz-eRR+;`4!81Wp2otM)eygfp&LG*rzOaO zv+r@Y=Za5_z^aLn*2WyrHVt|+Wn3MCP69?;xH6}Le?9o{%IoG-g+0I3G-)jF`Z0M>&#tXH7cYYwcBV0uGXd#~4E!SB5{Yp|%t*Bw|#KVN3kDbU`B zRmba9lvXiVZ!jzXbxU+aiqcAS%|y3mE2FHgDqi~)KZZ22OQ|TW41rH-xK|I26#tv& zl#-k@e>6T0@g2e>M{kM#Cm-#;4m5{9Ufui5{yCyQUwQq}XP*zvN2Ak6(ykhiIUl+s zt&n_096u54C@m{}5fvRnKx0kaA&3vj;T7I0uUL5!^6*b(Y{YJnpILlzsJlArwbT( zIzybmUN#54i{mco)iiFN&gbdn_e>G`a&h|k1<2M5fol%v^U4Z*`Z<8xeZzdRc)T;z zpHkg^dvv_}${TFll}{t;$$VIp`3@^hA}Y0mkmh$X?na0o=_mTk;*|{< z5g=Zd`Ux%CJYNEa@BQF=O$h|8eCTJ44?E0dy6A-L*Yt523~<{W zz+lGNF_Kn18wf16Ox z6lJVXwxXu;(T9(A-)d~l8`|2^&w6ZRq)jOUp~rU#?q-=%V?7sMWT+?jCmPe=8}2TZ2)j%im~+y=9_80H&Olc;*3S9^kKMRI3<6%VN)&}S%4z8! z)`X4~P8;@{UONI9bc!4V}@>^|7J~r(}sR(8P__$#zK$=f^k%KE$*pV~lV^Czj zuN@fGORENyp}PK8-W<|$!>4w1v`QSWH7!w3iqiV$!b_Ado|md~?E2b; zqkd*ow{IoRJ1wmeI>1D{yn>wqE7JS>+}t7<*(qH3gMkS)3F;;)#MTK9YPFT%dg|U} z*Hd?pLh#S(u9GS;@4gRKf3Pzkc)tc>`09fP!=3l@^tylrG<*dP(Y)W%ZMtRc>C(gM zY;ki_0*$jVA5r$`BnfReF0EP>^SKK{xcDtJ3yyBnT!?C<70~c^c&Bc!pO0lwPvzs} za$ZjNK}q8*`2Epw!hcKH(=vf7qla)Tyf`}_ogWQ@a`29FE5Pfae@923t~v;Y^>sdG z64uR7veI+_`50+nKdsqnhPDch#Fpy(+Ok^@@)(cxdo>$n%UTly0la)PG+pby^6fxx z=2~f??<998AJRwb>NMkpDvmI`ZRf!c8`^z}jr>oC?8mVO>LFMn%Zv`JqTu*dp#!}S z5C)WH12PfAjo#8=8COL?T4!sZd)SL*Tk$+e{@9QV)yz*ICnQ<;B{~u>t?De-|(iy0*&JOn2fF5RxXV zz(aZt1?(X`q3aMfvaqG)*XNGT4o^wq+HcmLvxy^o80w);8XYkyE6bE7ZW&%j7HVZHqqU!+;iT)-2Ynh8}# zM#Bc_f8%1I%~mW2@v45^#O?coDKH6jA$O_FzcPMYVN-tK%SWJsQ!w;tCI~=oFVegu zPdIeaDN3)Sv+Lsf?K;ASG3c05ljG~DjvHIA^ElB20hEvhN~V^*mB~ITrekwcRCzGF z_cOtxxo{YU(Nb-q1m2=o;fVc-yDGqvfLED3f3Gmj5^p2pVxkHD+_VDF@V;hJM`N1* zRan?0+aw)C3^bEEUZ3yeNQ5i8n*W+Br!z54GIQkcADb+5_x}H_@2~No`Xo!t2wHF; zdN$^!B4_N47kpk+B8Xp0wh};|kC^g^>d?A7f zbq9efq{={RAG6%1GX3VDS0#-w-Uwmnf42|@!QmAAtUau7s+a8J6{~j29_VQvze{ziMk9oBqhZmX&>4WZ?7!R;n;|(|A z<4cbp78#-l6T^x;-%aai*ZgxoqoxNcg+&w+%%Poub8h?Mi%G0QR$Xa1%2=qGf9Op# z9$y!dBBZkl2odG(L-*N}gldQ!lHO8@dDL#b{;(10fVNAhCupTi3zeX%u#o~OEr=rM z^mkrdr&sAu->+OY?uZ(bf|XTO(xEzOl?W59k%GW0pnnNnwsDqnV8nY<;G8s^f1MAgd;v=W zI|Um|d~AAvnjwFu66yn3z^@vmKCd#?rYpQ-N+%N%mfxk<*K!Jo!(TwV8x)Dq4SQ^5 ztgTpRE*Mmr#Zdwy;EHVVBULFg8{b^h8QCE%n`PHaGjX}1j7(y!t|aT9Z25I`v>sE_u8=h2C0t+Smn3b- zE+YZVG5Ny>M8?`~E!P3EHz`INl`?Q8EgNJIeg)U6%+?&?Q6;TMe{!fGUWg_|?|pt{ zMEnqCcU8kr0?t~u7QS=1da+hxUtAk4R4x**OmJvI_PFOT*7~zsRHo=7`@cSS`0yB9 zoNk9Ai9pn`doDg+kWGkCU||agk;_ZJ>1L!*GZ$bYQ-O>{OH!;HuD6mJL~vGd%fc*s zb{D)VDr-`ajaA9ze^Lu|X|^bU9 zb9d>Hl}f5(+lsCiYTUHkT6rB5yP#thhV<-XVJd6QDn%{KR4w!bavZ)@dAjuxYCEJ~ zYA5`p{tQ+O>mCiA@|J1$sN3egV{AMI57@PsfH*A{tQPX5IWv=Vh79L+*-~~Wb4ouw~FMj7jFe3p2vt$!fz1gqFLYMqaTM=$Eda)$F^JuV7-!pL|+ z#vD(`?P}=Tl6Z4tA+QP+{Q%*h|NA*mx_VA8Y2mVhe{N{;2*#iAZ(ovoJpL`Oco`Ik zu1iNjuodvp=0$*OCFSqo6<^sOf7t|a}f^Y*=4R}y{_8E%Z_^?2E0X{~#B{})*=+lc2 zj!%!YelVxdxC=)lBOLL?=slqQg&nOOWA!~H+T>w6aW=9xfsjG4l(TMQE0XCODG@?T zAIMCfjZPuD4Z&&$S`ZNz<}(asK{qk4@O`nVe^Igg@~X(v=PGjl9g$aD!M<f?|~XTWtoVU3#!WiA~Ee z-10SS#~712&9@F=iFo(5+VveUOHUFKavyAOie} zf73>;Byu}~ChqKL16T6t4=wizaZsa-;=6w?#9h7ow-UFb*%*@C4`g_3>+`T9t2Sto zb$0L*$9RPoPWwvJ#xU+)6Yz2mf6*HTZ11l*#rDf|N&Ar|AL{Ql)s-#u{0nPG z>krn}J3{L)8i)H9qFZT|&4MuwmX*Ba%(Ue66+0BDqobm)JEo7H!}ilDnwo9f0VAUQj|WMT+^Gh=nkf50`} zu%_)BnW!)jPDA13Q9v@_rtmf&+kl!k!f^8l_YE9U)psTOz!7_{38*hGAwy>GMBKtQz#o-rLKNA$p&n2)ksTbbgD%Npb|MKcWM)~$jzFQgu{+Bv14{RvRwExZ(RLv1jw?6^ z^fk9$Y^zmPQ93ydOl#e4Lcgaidc!(QFOm8>M3FB(zX5HAX%pbtTvawYf9<8c&DYPZ zFMnz8TYvNyhbNC7jXr(9kqU7SITpn-pTjna4`pM%sNnI*~v5CmW4udMBE zwfBche6!_E=4@Uuc^TMEi8z4c(!iL+T@`G~mweWSHn0QQ3r;Q3*YL%^q>F4=In3Qj zJbc6`oyZjn)+5Pao%-Znf1OcRxe*~vQ9jPqzVG?k@qL}{tZ=?xU{I|(vn5e9$p`(6 zY0`uvqEWTtp_c8U3@D$NKCD=M%Mm^=v-zL_=am=G5O7b$o5_=+G+~Sgc8E_y^F=jw z4K5bYhd5mVM81HG9$;}1p*#5pUFky z4-Upe8`S)#!n^>4ft`6KZ(`WS3~hoh{@eFeg@f3QhzYYQqUr1B6CNPY^B6@VVJ zx+)hHG4USLZbcVpa!;gLb1(! znnF3<=z)7wPfe}Ce^%G5B?(akpJ9C>{WE@R^;^?LPoUN_B?n#frFH}0vSMiWyS^RM{!t^q;p(6#CyG= zjEsmONoBW!g=-3bh*RRQ&NB@eZ0|ZKpHABk$cNJj``Ngif172+gm-S(n7<9C$K>^8h^s-t7Xc62`lJ=w13kY zxANCPt1`BwI)bwKb`~vDPLHReS4D>EEiwF>-&I8rNNkL!V7IqRO|Iv%-Vr z`f(c_%?Qa0o5gel%hn9D~(K)M0ocq$3_8x4hFunTs z(3nQ|qals{*NA>+?^t^qsezwC;y;)GB7v}6kB3kNe~3a$semiG77*g4ZL_&9q}eK) z04XZp_}|RKlUc95S#O#i<$>V1tj9Cs@z^uA$Kw`7*1^`M(h3>n1-Vt!{|Od9UC#$; z2RtAAZ29Tv_+ZWb1wTAPV`w8krJJuJS41jVH`FcRq!=;Ih__)xCW0}_M9$gS`Esz> z558iQe@`|0Oq3(DMf-U7#)#uY>b!a}G#f+&lus)jKol-KiMLPT)e0mIs-<(5me+8! z1ShVTIJ*Uf1WYxoBSB6n2nnZQ-?PAu9^%i687dM zBOlt}wkE^Xj(N6mlYhn9ciqdx;@VzjK4N?Mn+(HWHf{2fYD=5%sL9OYa9xv`4{h^J zgx%f9=HkuD?b%#6d6i@BNCmg7K`^VEbtcVxoRcO;pQ%sT3v#eRSDt^i%9`u9Rtf{2fqL-wD<)xZ{2%7T5JNvk~9V z$CU1B(>51WTN-^wZDtmS&23gTsL`!$fBq1*jW^frGpH>szBAoM7KiI}TiMWVmRWd< zei7fjaYK>A3DiRIE#MNs9(~6{6gSbJ??>fh^!XhiMwXXobd-xB{1garDU|oKrM6QO z_e!=1_~~VkKq8C?={WvLlpA%sGnBZVNXLL6rX!q#6o#s1HSFMUxi@K~UG@EYfBAf4 zVs=(2i-1Mhy17yXj&&YfC2QSd32(6b+v{3GlbW8&?e`e|A8oQwt2PBwMLpjeMv&4; zD$GZdrxe$aIs8_0MaWY)e|~Cy#`$BoCW?l&cNlnUV5fG{vYv$#coA{`%g+uT zYkP-n#DQ#;$TsYF5M8nC_ z^zt9r&#PH>o{fM5Aud3kT}f_#N7lR1>Fo$Kr=IoF)*B>*a=~`Qx#ph6aLdGD`F2XT%b<+M7&5 zg}##ME)r# zEQ$~q=hW>aGOn_T(75JP5}U9Y795v?=xE!xyWAjOL^r8Hg^gqe^`4f*n8mQXuuP;C zPLBM1cOh~LWyqi$FUD1s&Vtl@%}+s;D>kEqsm`$}D4QdmS}dRMe|6jA=xD1Xvm&Nb ztR_&rjm0_uoH6%xVyu?MwV~zO_>jYrRXA(qDmkt>zgj7!0R$ZmJS=#Vy=xmor;iF@ zEjWgn8C+HDyl(Y#gby2NRL9imEyq-)rT&;=rqGeB@}(olj-e=te!(fn?Nk08rRr4f zJV&j~l>T(2>^2}Ie`zWruY=cJ%$~zBw_!8!Q(|^7LtQ0L^)|7v^-SWu97^ zVPF)CX*Vdlg?Z-eOb(T;m})ocQ&i-ESIu2i%16sF*~7<0f1xYOAf7IEHz14FP4OnL zOU0*YOR+lXor)}YFR8DPNUfgNQcIK7Xi%8;OoIZaZ4cdNs?yb)Pd;@i^V3(l)$zS> z^PZsMGf4*?+xO``EK%r&__1cbqC5W%G^EYUq_}KJI@*8|ptjTX~>C!E|c1z(z zEW>-Q@FKcffLU}oH!x=SO}@5s3?9@ar(ZsPboA)($1jeL9-X??(#hPVxAe+?tfAhU z%=7tTlo9F=_Z}a6YG$RSN>dfk!~UQq^wUCwB)>^Se~d~*q-9IDY*{ID#G{`#5Dru# z(Nq<_hAV;IFlfup6M{s! zi$1oKY>o}+drf+b)~qk=4a}f5?`DqygCTt0nn`>8m0NuMu#I&b2u4|TBO=mK$K}6{OUdYU zXeSv6mfB%{RF%p>f7ptMhqHn8At&T6MrvH9zZK+1r#qC1Kz<+U@7G?dFyHA6ldE`# zmnz!EW6b0&7EXn7x?GdXffT?|!tW1G_z1(n~U zNs3`9sLLlzpB2i=(ucDJgt5t&;)XM&h;FhUwrnggg6%&keQfxarN4>%Lyzo2e0Q65l_KW!UO1XPlU(<}kkcoloyb2)Q81l4JOwGvvctUB#)Sd+M|*b$M2xY#`b z0nPg=THh1+kvFLwZIizECCR7bqHkWdKrdrKeKK@6lC0!FDzcsLqUu#83%#Qcf>dQb zaDV2PF1^8^QS0#}^gxqtPN>jsVV^iGk}cFdF;D`@tf8yz)5fpP9{SU?P|8?kRIU%R zXnk(SnCKk~fbl;yLbbZ#x1ie!T36J_8!8TVL?a2)Q@L4r!kKZ-%; zG|A@k*(LdVP5K83W`G#|h+u1k@eZQABu2P-5!DpcYa&K*87k}%> z<-U#dVWKRhfchaX8_qV2uyxL1FewcqiJN~c?54(y;k?BXE|Xy6cc{CfIvo7VEIUnSTr+p9v`mREj&)xq>>Az7cu!2NkON4a6F8w6m%i zbH=kt7oFbQE;`+$i%xIbMW-8g(div^(JBD*J_a<(yTLwfTe4|Lpz%ud_$0(Y>Bj|X z9MqudNJ@>N))iUewuO8=dNM62-hD>_&8Xm+c%DMEw{44JEO}SbP2A9Iynme)n2qFu zg|N3{=f`zbIS(30<|BS%U8zS>+%Yk4IddQ|7#lbET0*aR=UOn+u60Df+2iaV+LMtm1V?XAR;Iu`%Oq$POEk>9Ms+l7NMYdfCG;A_d__ zN_*>N4?79~2!=%X6@0Cs-iPmf)5kK1K7I}Pfd3DEcxYa=Uzhgl(tr7SZNFaA*Ma%L zJV@TEx0*QtNZ`t&d_t7pcpDA@Uq{%1dByaRq1WknP<2Me=R-PDwwl=+0)`=g!+)nk zWNC=}43Xdv>FMdQ(&P@6zO9wD_Ytd(Xi>fFVK=n`dcIyF8joq|qC?w7huTH<>(YK* zI$y8xYq*QF(aZ@#`hQ(?=ycJcbkSj37m*a8hXBD4py9t$_z!vr*}-4`NL0u zL-<2iab5Rz<}CFa_9QD$BP!ua zQLXEAPr=RpSEvGdmd67DytWK;)KHsJ_QcLo_?>dM*l&u?)lbCgO5!!dW2XU8_ z)eQXGY@}}_!NgN0HAeW1)L|wsg*p@fl2Lxn=cVMhda~7=M&rp6|CgRaA>FCW=Oy!1 zp~|WEq}Pk_YMUpYaxe%};WvONm2)~X*|bip))T%9z4`-sG%}*6uz8 zw6&R0RS&raR$l?r4S&32Uajb$>K=n#SHMIG1+j8C2kATki=DF0mlVc}B!@!x5JwDg)C2)U0Rm}zhVAn#Eq@m?RT`OLotF^y8*5~OZTD_MWs*ZQrWMh#btgeouAHC18nI${W;U* zlQfcGnLdN}xH2U}wPu{e3h+v+1~qj-$BUjx3d(|bLP2=KdCl~#z9etr^(*r_p{n~d zf`0%&Uv-e`^>YjJuJ@FX)P3OGo_2Mi;-fOWU0KU7`QOKrr4C1Als#JVnFPiKFgLzE z=R4HZ32k1;bVT{%c`D*5RzK^Mrv7Je7vi))|CRK}as^_2BYE54y;r=p#MYeVNS>!Z zzbZ}t^Bk{oUu83^5pKw@tg0znW8g+I=YKb>#?gDpIL&Gu?cMioUV=A=t?SA=xQcz0 z(jLzim*A?86)Z@`ytjq}zn+LATx;KEr?XIqz+d|}AX4U&A1i3fZ)*&HpJ*t21ABIp zs?>b;xb5eF9PJOC->6AfU>nPRt)TE4m=tb=@F zR1ysD9JnINn5^i#O!8!LhJOGRr#TWH675h|4WIuzfo=zUK;A?Ttjy%!5<1<+s7&hF48I8UtcQjwM#Nuk$<(p!X`=fq?j#v z%@M)Op;HH#ilqSFVl)MWRqPRxWYgkL)g~;M;MXK+lnmbh?DrJLYa7E1D3ONnpw{PB zT=l-3{tVu;G>9qo78+ME@eNim479Y+7{I>Rsl`0!C{2{ z{WYe%q2gK9bAuzpGSnN0Ti0LFU|)y5`NjXxtcVS)bX+OxwtjfH{DH17de_0EKm3wd zD7EzZ=-d6!%Zm9FHj=;$7<%P$w`qKqyH8+=+lN8?VsF^%4KS66YQGbktCH))-6MHU zQ6HUpzSmABuz&H8k7KhRo3((!#kOwaHWSj|XeFgvzYz=PI+{^YN77*l?I80O(H`Os z)!&PU)djWE(+<>6PDlFT(w1Z>K--vF!2Z4l>g)1Xaq&v`DeQ*}6CJ$%N~L9_Ltb~r zH?TJFZi^F%uaYGDP3yKO*Ak(@u^g@)UBmE|mNmKP^?!0nl{GhCe8gG4F~QS(KFR-L zR{WBWGMgSAUE5j8`6gwvkzb4BgZ?XCn20W+sFF!2QKw$7x~1ZpF{pNEg-(%TqU)Q9wp zF?igPE0h?8iGbBsBZ(C6y!bVpjY*2oD?6>D^RrPz^iw75Q|5W?yC(i~0CXZWH!BH_RDtlo^ujHNQo zvLJ`dMyNH>*w2*4ezp}FNMH}AhbCRdvPfMa*o_s0YIoO){;z2{Sfd-C;N0u$1%H`D zm!w~>rWDb2KVt*o(N*KoTG1oiSea|?ll=*IqQF}tRipWsERS+p`j)e9e{!+O*u_@% zA*60Awt@FUwwG0Q#fEMPvBUB$aU){!lEXbSuLkeCh^ucKi))ry|85FwF+Cm{Lo-?s zpECXvdQO<#y8IFyr0jKQ!vv=S(tqD-h&A3YSU|-k9I7wo=E7dynC0cq;KHzn2RNN8 z0=_c=vk|JU0|l&)i+VHh^=1x1A0@`=gts2>%?j!PZm~PP2~kBhFI<9oX{uwD5KgMl+sekt({vp7R z@Ht3e2vq*pI(iDI)p&A$ftA3*_r?;|MFvVI47zK{m22tEQygI|$n-b3if}3N^Or&J z0bggEEYf-0_)Z#R$wT=ZTwr7YhZ-#_pdu{bX0-0mt}Ui4l+=_zW3@^4OE!^<0KCuG z`+_Ep9xWOf`DFnJi0S<;oWktw+43o>!VcpWqNU%2~^ppy98$5XHZpbRItH+i-M8IM!ABPJsSr`**F zoU7PgJbr}Z*$?eXik!ko3cjzXD#sMZ5fss@i`QuD z?A@9wogN6yJ$lf|^MCqe;{o4=#=DsGP4_h_dyba{UJNqs)&&=(3mEY;xV?p!GHvE_ zj#@jS9i}Y#7^?Jj<{x+^tBXfeh-i7U(rs2{oAU#TTyl%K0G^7@@V?!LFkWByaPQ>c zxo2H4j336W*pCpI4dCjzAU)Wayb(Uc7_+6#r`8hkv4*I&mQBO55 z4t%6XyNmIdFB9@6lQZ2UfJl69-3LwOx}c! zuK4QpWA-Pw(b*_w-Ecku15sT#xP0+Ozxi;MXJhpW>>&bnHV=sk1L?cJ^_IqPhm}M1q5-Tzkq_{ zharp6LH!{j-8(4v~`dNbj!VX~pHZ;9Y4j?7J`TF?rXZt<)X(#HQb6VvS zR9hkE{C_Q^;T>}ViQnxuvfW+XlV^)`0aiA+p^uXyj^xtxYYyii>DdP3Nu%G=I_Jsf zP>M{3f^Sv_ku~x?dOw5j^dro*_PLTL ziQI3$Q}djoPiGZktWMlCa0ehA*&C0y%paYo3V(w^CdJ2J+c5$Z-7(H0DoO~vUyTHO zEYZz($x8RM^2od0v1~H*mN~_aYGE}}*(>KQTjDWF*$FsS(=+((rW3*uKbJCi)KtQt+n7jh z#ed^^-N&tp$T`HG%WZ)*z!YaJ5ioZ8kmJ8C^S54nb{8gAgcf{DVq|QQeuo8)7N>>Z zmPi?07axSrN7v663==x6dwiS}VVH z2QN~#7J6IKMRc*wiCZOBycT?G0=D=%jDL&fs}ag2?3+4ATofr6KTK@Rw;n`^L=H0% zzmFtdAlfj%Xj6pVw6M7IAdbhK2U}-y=RrJ|k&@imz9@I%W%)2tmJhct%ZHvU{TmAT z*i+xyb)tH?hO{@|^Kb*%Ee6`&Tjj8ZpB9A%^(&y1IL|bTcWie_%5Md{mhGVx+JA08 zD#KCL>~7tv5#3l!>?gc7(~aF~%`oe_r6%&_9X{UalMP%3llaYN?0(_y$HnXb&e6GI z-xeCpq;65Zz}jnn37G6D>SiLBR9~@4lEkD0RpQ^PMS=!7X?N&Z-4Mw6ic(=6$_@jrXG#3KC$Nb<&jT_6S&}_m&5Ve z1^)2>|8!IHQ=LjuesdIzMMyN0;K?mx3}TOz&Wd7^rBiqJjzkCOM1%AQCWx^49L9^D z=(~if=PO=Ov*Npud=%pW26xUsKR7wrJLGeT>h9+w+^|ONkxlHQeb~3&C4YtQ>%&`X zaG>bhkxWPH)Z(?L8}ZRqN1XX(t2*Lf?z@DlI^q>I&wehX=!gf{t|K++yMY_GQ=PS_ z?@*&Qjn>&zVYWZ1IG9x{{7J#?Fc|^s5XO()s;cs(*DyxD7=J4ofBPYNau@N0 zu^KJYH@oiJxAqmheI?>rdaoe76j3O(@d^}Y;Td*|cAXLa9oAgqJa22dSF5@^SP|54 z_dQ~+9{7dLYtK5gqZ3jTxjL}j2o<)W4S?q9=m5vyZdDC<^?nzN!vOxiN7Pq|FhI+m zgZI@}4=IjaK-#|LN`JRoM>?qPayhwaFm+eesqX1)UvU&|-=XAbOR%_Q>&f}1dg51z z(-Hy|x!*=d97In=Lpp}OZ>S@EO#46&xN6puiFhI*Lr2Ey^7cGunLt5Z&T@B*e z8m>0A;ZzW%=7O*bNZfzjOcjuyJ1{Vcwl5^SZg;;2HAKy3pqx(P;L+ZP zpB?O*J~`+dtS?vDXW36hJ_R^aPKx=Uy`w-v>#0EyH<4>cwXV;p7qGgfzk!cUl6Oz# z^l@swpV0V1wSpvaiYI~gUb(Z+`v+xRt1S=%o6qa9s1(99-F?F_O@A|UEtY7S#9;)@ za66^6TRT^a+kXhUx{J_`t&Ki=LM>8u7Lj2LaS~pw3R-o^TedV|iqxm7!`ZIMAx}95 zV+$9)I}_%i?sT=Ii6o5XDMG;=OCE!&mAr%n1ZisVdkqzX(=K#AB`u^$QA1eB_H7wD1^UKQfs&4yer9Q7Hr{th{R zym2gx+!;A37PIpVQmDzZA_$B3G3}={74!`&t)!p5ieG2x6)-Q*_9t$*kKlJcUh>QI z^qH?5Hh-XSi0Y?j02Lc&L4tQKoyXyI3zKI7d-h51pgmnEm!<<$i5g7USnZ<`2zzk*Cii5;1RD)|DE zSQqD7**cOu?MOY%KpoUJ@2NGn*bz-oI6i_9V}H`5wgYpxKO4I#;s!Qpg750YC@{uP z87cYi==$wTFbOKGab@7YsStuy{no;P%)7fk?u|xdqBPFTsaFHF2Bi^rXycc8YY8T9 zJ8!F)gFDi0w3En8r+N)b^MN!`ZcGN;sAw|=3dU4bza}At^}aP#)5+2K?SqH3+W8hi zMSoNzG=Zu5v>?$5l+?ZY6cMb@pfmej;?#y!Li%KlOxrvy;OnM)GTGM^zSb5`8`AXJNcQFPINnS<*nr;XNH|Y&Aan4I`LbhB=j(^LI46VTxOOyuK=_*PGEbMwMut0yO9_ZWE zwTeTJ{7p@H_T`cHujtWldEPrpk?67SDD|PYz~hwWCdl1mbj-okevcpKhv{Jo&8;z? zTo1iZzv(pMBlGdUO3yGu_mt#+6|?!pN5#wn^=sS;>U``W@}8WIBmU65!VSF2)qhNd zPI`WYY8iB~K(h~1lQ z__Mw`q^nEj%2E-w7_%Zg5rhk_~`h(<( zt9Q4-#x%TXu(?yVsbjX8a~6IPq46nQcXQ4aJWXz&NPtb_(sS3QR?>xB=jC>Dh)Vcn zwH_yXuO(XPvMg_3oWl_@{A5DjIz1$YC&88aW@~$=hWm0d8yK$Ry;L=%4OtSZ?y3gF z6dN~YOv9SJ{ne`W^}DX(J%8?Wp7S0U(naZvZlN{VoS|o5LaG$5JBWJENE@wJ!1^5~ zN1o_59yBe1JJmsKnHd#XNnB>g0bZ%OEM{3^_R$&P;9-6Q_%26O<*5aF>8N#J$q?y2 zr2OGgO|J6~8XSLhcLh5Q!!Yz$B2G}DN?Z}QZJ-HQ55NJ53lbc9V1Grc;QMFCv0N|B z;;oS;?bybSTRTbp8pl?b##u6Xj?fHAyL5(f*m^%oJJ>R)O=CWNBmoC_gMkHK9bC6u z-Gk_LAde&j{oY;&aP=h@Xf2;Fxna>^q;m;N}xxD(WF`?t8>tW&|u4#MF>zWFI zd;^{C#@#`BwI=SKpLD4G+9`$NVPehX1!8*<6hxxzNXUSNs7odv^rLIK(f_418LcNw zBQ?O3BKue=q!xZ%Rt#SsrJ4hfoybXIyBxk_xkXUk1f*90?SB@ zOdUHb5_7cME-fQ}&KzWmwD|gBLPaBETtB^9%JAv+9G3Tp`O-@at{)?umbEF2C;ugU z@BVH-)?u}ZT#tkL-P2gt1I3SSP73c4`;J#3x z!AvIGBO=vua({EVOCQ3K2fz-g91vew$8fgpZMu5x?$_G?F%dsbR$RP0<`qT9OvzvS zg%il1Shmm~Y(wTB@XjoY09DKFHYq~_fs8&2oXgDNgczN)^oDVjdFwvjji8_JVI%mz zMlTYo+ErEMo}1=n;g+k})7yLjk;QX|ccFkCm}U!5O9BG~lOAIlvlberNDp`b#Yl;h zMNm1P0RReH36slWH3mD*F8HjzlLliv11YxwlSN}o1Io7nlapgI1L)!blgMK-13T#f ell@~t1FPx*lR{)g1M>R;lZs>;27>+p0001XJv+Mq diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz index e71b914fdd0d9601fd097d78005cbcad0c329881..b2ecae6e774cdbcd30926b2f2bd1dcc7f0b019f8 100644 GIT binary patch delta 35757 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%0DOb7331`AOS8mIV+iTgn<2kQ;lJ=Nf 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

    cy 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 X0+UvJLjyGu0+XD48wT$b0ssI2ai&U) diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz index 5746543f10612e2781fc0a95fa41e3455e93a8d9..d146778d741f4cfc53cf0f6b97e2084b535551e9 100644 GIT binary patch delta 691 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�&7PFaJ*l;onvZWADgNNwZ) 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

    cy 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 diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua new file mode 100644 index 000000000..d9bbe059d --- /dev/null +++ b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua @@ -0,0 +1,19 @@ + +Include.File( "Zone" ) +Include.File( "Group" ) +Include.File( "Scheduler" ) + +local GroupInside = GROUP:FindByName( "Test Inside Polygon" ) +local GroupOutside = GROUP:FindByName( "Test Outside Polygon" ) + +local ZoneA = ZONE:New( "Zone A" ):SmokeZone( POINT_VEC3.SmokeColor.White, 90 ) + +Messager = SCHEDULER:New( nil, + function() + GroupInside:MessageToAll( ( GroupInside:IsCompletelyInZone( ZoneA ) ) and "Inside Zone A" or "Outside Zone A", 1 ) + if GroupInside:IsCompletelyInZone( ZoneA ) then + GroupInside:GetUnit(1):SmokeRed() + end + end, + {}, 0, 1 ) + diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz new file mode 100644 index 0000000000000000000000000000000000000000..67c9195d167e6d4d5086b6af8e807358f84144fe GIT binary patch literal 20873 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 delta 124827 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 diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua new file mode 100644 index 000000000..1d01e5451 --- /dev/null +++ b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua @@ -0,0 +1,20 @@ + +Include.File( "Zone" ) +Include.File( "Group" ) +Include.File( "Scheduler" ) + +local GroupInside = GROUP:FindByName( "Test Inside Polygon" ) +local GroupOutside = GROUP:FindByName( "Test Outside Polygon" ) + +local House = STATIC:FindByName( "House" ) +local ZoneA = ZONE_RADIUS:New( "Zone A", House:GetPointVec2(), 300 ):SmokeZone( POINT_VEC3.SmokeColor.White, 90 ) + +Messager = SCHEDULER:New( nil, + function() + GroupInside:MessageToAll( ( GroupInside:IsCompletelyInZone( ZoneA ) ) and "Inside Zone A" or "Outside Zone A", 1 ) + if GroupInside:IsCompletelyInZone( ZoneA ) then + GroupInside:GetUnit(1):SmokeRed() + end + end, + {}, 0, 1 ) + diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz new file mode 100644 index 0000000000000000000000000000000000000000..de3cba3813678968651e8f2c8156c21f7df3c84e GIT binary patch literal 21030 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

    Q8nqP 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 W1^@s601E&M00#pA0M}mt0000wZ#=*N delta 107291 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 D9pF8% diff --git a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz index 0e6c7d84a4173f3434571866f21a5071109e47c0..64d34f825f5a7bb00da7d6a0b276df4e20b1fef4 100644 GIT binary patch delta 716 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�&7PFaJ*l;onvZWADgNNwZ) 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

  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Base.html b/Moose Training/Documentation/Base.html index b6d89a410..bd96b901b 100644 --- a/Moose Training/Documentation/Base.html +++ b/Moose Training/Documentation/Base.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • @@ -206,7 +208,7 @@ These tracing levels were defined to avoid bulks of tracing to be generated by l - BASE:F(Arguments) + BASE:F(Arguments, DebugInfoCurrentParam, DebugInfoFromParam)

    Trace a function call.

    @@ -260,7 +262,7 @@ These tracing levels were defined to avoid bulks of tracing to be generated by l - BASE:T(Arguments) + BASE:T(Arguments, DebugInfoCurrentParam, DebugInfoFromParam)

    Trace a function logic.

    @@ -575,7 +577,7 @@ A #table or any field.

    -BASE:F(Arguments) +BASE:F(Arguments, DebugInfoCurrentParam, DebugInfoFromParam)
    @@ -585,13 +587,23 @@ A #table or any field.

    Must be at the beginning of the function logic.

    -

    Parameter

    +

    Parameters

    • Arguments : A #table or any field.

      +
    • +
    • + +

      DebugInfoCurrentParam :

      + +
    • +
    • + +

      DebugInfoFromParam :

      +
    @@ -802,7 +814,7 @@ end
    -BASE:T(Arguments) +BASE:T(Arguments, DebugInfoCurrentParam, DebugInfoFromParam)
    @@ -812,13 +824,23 @@ end

    Can be anywhere within the function logic.

    -

    Parameter

    +

    Parameters

    • Arguments : A #table or any field.

      +
    • +
    • + +

      DebugInfoCurrentParam :

      + +
    • +
    • + +

      DebugInfoFromParam :

      +
    diff --git a/Moose Training/Documentation/CARGO.html b/Moose Training/Documentation/CARGO.html index 887fddee7..b87c177e3 100644 --- a/Moose Training/Documentation/CARGO.html +++ b/Moose Training/Documentation/CARGO.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/CleanUp.html b/Moose Training/Documentation/CleanUp.html index 09d6b19f7..d1ade1478 100644 --- a/Moose Training/Documentation/CleanUp.html +++ b/Moose Training/Documentation/CleanUp.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Client.html b/Moose Training/Documentation/Client.html index 3ac967009..d0fc0da40 100644 --- a/Moose Training/Documentation/Client.html +++ b/Moose Training/Documentation/Client.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSAirbase.html b/Moose Training/Documentation/DCSAirbase.html index 2d2c35185..da2207317 100644 --- a/Moose Training/Documentation/DCSAirbase.html +++ b/Moose Training/Documentation/DCSAirbase.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSCoalitionObject.html b/Moose Training/Documentation/DCSCoalitionObject.html index 1394b09b8..563037392 100644 --- a/Moose Training/Documentation/DCSCoalitionObject.html +++ b/Moose Training/Documentation/DCSCoalitionObject.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSCommand.html b/Moose Training/Documentation/DCSCommand.html index ffb46f8cb..e52889367 100644 --- a/Moose Training/Documentation/DCSCommand.html +++ b/Moose Training/Documentation/DCSCommand.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSController.html b/Moose Training/Documentation/DCSController.html index 89cb04d28..eabadf9b3 100644 --- a/Moose Training/Documentation/DCSController.html +++ b/Moose Training/Documentation/DCSController.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSGroup.html b/Moose Training/Documentation/DCSGroup.html index c46f4755e..d3dc0c75a 100644 --- a/Moose Training/Documentation/DCSGroup.html +++ b/Moose Training/Documentation/DCSGroup.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSObject.html b/Moose Training/Documentation/DCSObject.html index 08f490b23..5120affce 100644 --- a/Moose Training/Documentation/DCSObject.html +++ b/Moose Training/Documentation/DCSObject.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSTask.html b/Moose Training/Documentation/DCSTask.html index 0bbfd971a..cdbe87871 100644 --- a/Moose Training/Documentation/DCSTask.html +++ b/Moose Training/Documentation/DCSTask.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSTypes.html b/Moose Training/Documentation/DCSTypes.html index 5eeb019c3..e4fa753f7 100644 --- a/Moose Training/Documentation/DCSTypes.html +++ b/Moose Training/Documentation/DCSTypes.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSUnit.html b/Moose Training/Documentation/DCSUnit.html index c55ecc3e4..20b5c9f57 100644 --- a/Moose Training/Documentation/DCSUnit.html +++ b/Moose Training/Documentation/DCSUnit.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCSWorld.html b/Moose Training/Documentation/DCSWorld.html index 8e993da85..8afaae99a 100644 --- a/Moose Training/Documentation/DCSWorld.html +++ b/Moose Training/Documentation/DCSWorld.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DCStimer.html b/Moose Training/Documentation/DCStimer.html index 00f626d06..e09e649cb 100644 --- a/Moose Training/Documentation/DCStimer.html +++ b/Moose Training/Documentation/DCStimer.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DEPLOYTASK.html b/Moose Training/Documentation/DEPLOYTASK.html index 1fa64e415..02f845c63 100644 --- a/Moose Training/Documentation/DEPLOYTASK.html +++ b/Moose Training/Documentation/DEPLOYTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DESTROYBASETASK.html b/Moose Training/Documentation/DESTROYBASETASK.html index 8de686c17..fb41bfe0f 100644 --- a/Moose Training/Documentation/DESTROYBASETASK.html +++ b/Moose Training/Documentation/DESTROYBASETASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DESTROYGROUPSTASK.html b/Moose Training/Documentation/DESTROYGROUPSTASK.html index 0c9455cf6..22e462095 100644 --- a/Moose Training/Documentation/DESTROYGROUPSTASK.html +++ b/Moose Training/Documentation/DESTROYGROUPSTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DESTROYRADARSTASK.html b/Moose Training/Documentation/DESTROYRADARSTASK.html index c88de6600..f61ac25ed 100644 --- a/Moose Training/Documentation/DESTROYRADARSTASK.html +++ b/Moose Training/Documentation/DESTROYRADARSTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/DESTROYUNITTYPESTASK.html b/Moose Training/Documentation/DESTROYUNITTYPESTASK.html index 17f188b27..bea58fa6f 100644 --- a/Moose Training/Documentation/DESTROYUNITTYPESTASK.html +++ b/Moose Training/Documentation/DESTROYUNITTYPESTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Database.html b/Moose Training/Documentation/Database.html index d73e87dd4..e4a84907d 100644 --- a/Moose Training/Documentation/Database.html +++ b/Moose Training/Documentation/Database.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • @@ -134,6 +136,12 @@ The following iterator methods are currently available within the DATABASE:

    DATABASE:AddPlayer(UnitName, PlayerName)

    Adds a player based on the Player Name in the DATABASE.

    + + + + DATABASE:AddStatic(DCSStatic, DCSStaticName) + +

    Adds a Static based on the Static Name in the DATABASE.

    @@ -164,6 +172,12 @@ The following iterator methods are currently available within the DATABASE:

    DATABASE.DCSGroups + + + + DATABASE.DCSStatics + + @@ -176,6 +190,12 @@ The following iterator methods are currently available within the DATABASE:

    DATABASE:DeletePlayer(PlayerName)

    Deletes a player from the DATABASE based on the Player Name.

    + + + + DATABASE:DeleteStatic(DCSStaticName) + +

    Deletes a Static from the DATABASE based on the Static Name.

    @@ -194,6 +214,12 @@ The following iterator methods are currently available within the DATABASE:

    DATABASE:FindGroup(GroupName)

    Finds a GROUP based on the GroupName.

    + + + + DATABASE:FindStatic(StaticName) + +

    Finds a STATIC based on the StaticName.

    @@ -284,6 +310,12 @@ The following iterator methods are currently available within the DATABASE:

    DATABASE.PLAYERSALIVE + + + + DATABASE.STATICS + + @@ -335,15 +367,21 @@ The following iterator methods are currently available within the DATABASE:

    - DATABASE:_RegisterDatabase() + DATABASE:_RegisterGroupsAndUnits() -

    Private method that registers all datapoints within in the mission.

    +

    Private method that registers all Groups and Units within in the mission.

    DATABASE:_RegisterPlayers()

    Private method that registers all alive players in the mission.

    + + + + DATABASE:_RegisterStatics() + + @@ -458,6 +496,32 @@ The following iterator methods are currently available within the DATABASE:

    + +DATABASE:AddStatic(DCSStatic, DCSStaticName) + +
    +
    + +

    Adds a Static based on the Static Name in the DATABASE.

    + +

    Parameters

    +
      +
    • + +

      DCSStatic :

      + +
    • +
    • + +

      DCSStaticName :

      + +
    • +
    +
    +
    +
    +
    + DATABASE:AddUnit(DCSUnit, DCSUnitName) @@ -535,6 +599,20 @@ The following iterator methods are currently available within the DATABASE:

    + +
    +
    +
    + + + +DATABASE.DCSStatics + +
    +
    + + +
    @@ -575,6 +653,27 @@ The following iterator methods are currently available within the DATABASE:

    + +DATABASE:DeleteStatic(DCSStaticName) + +
    +
    + +

    Deletes a Static from the DATABASE based on the Static Name.

    + +

    Parameter

    +
      +
    • + +

      DCSStaticName :

      + +
    • +
    +
    +
    +
    +
    + DATABASE:DeleteUnit(DCSUnitName) @@ -648,6 +747,32 @@ The found GROUP.

    + +DATABASE:FindStatic(StaticName) + +
    +
    + +

    Finds a STATIC based on the StaticName.

    + +

    Parameter

    +
      +
    • + +

      #string StaticName :

      + +
    • +
    +

    Return value

    + +

    Static#STATIC: +The found STATIC.

    + +
    +
    +
    +
    + DATABASE:FindUnit(UnitName) @@ -1029,6 +1154,20 @@ DBObject = DATABASE:New() + +
    +
    +
    + + + +DATABASE.STATICS + +
    +
    + + +
    @@ -1203,13 +1342,13 @@ self

    - -DATABASE:_RegisterDatabase() + +DATABASE:_RegisterGroupsAndUnits()
    -

    Private method that registers all datapoints within in the mission.

    +

    Private method that registers all Groups and Units within in the mission.

    Return value

    @@ -1234,6 +1373,19 @@ self

    #DATABASE: self

    +
    +
    +
    +
    + + +DATABASE:_RegisterStatics() + +
    +
    + + +
    diff --git a/Moose Training/Documentation/Escort.html b/Moose Training/Documentation/Escort.html index 1b3f58c93..5a831df88 100644 --- a/Moose Training/Documentation/Escort.html +++ b/Moose Training/Documentation/Escort.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Event.html b/Moose Training/Documentation/Event.html index 8d0022235..11e6c6d9a 100644 --- a/Moose Training/Documentation/Event.html +++ b/Moose Training/Documentation/Event.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/GOHOMETASK.html b/Moose Training/Documentation/GOHOMETASK.html index 8290602af..407e6bfac 100644 --- a/Moose Training/Documentation/GOHOMETASK.html +++ b/Moose Training/Documentation/GOHOMETASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Group.html b/Moose Training/Documentation/Group.html index 052c06a43..3bd916c01 100644 --- a/Moose Training/Documentation/Group.html +++ b/Moose Training/Documentation/Group.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/GroupSet.html b/Moose Training/Documentation/GroupSet.html index ec91f7267..e0ae7f72c 100644 --- a/Moose Training/Documentation/GroupSet.html +++ b/Moose Training/Documentation/GroupSet.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/MISSION.html b/Moose Training/Documentation/MISSION.html index 080e4f1ec..977eb7641 100644 --- a/Moose Training/Documentation/MISSION.html +++ b/Moose Training/Documentation/MISSION.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/MOVEMENT.html b/Moose Training/Documentation/MOVEMENT.html index feee71367..8808e50ae 100644 --- a/Moose Training/Documentation/MOVEMENT.html +++ b/Moose Training/Documentation/MOVEMENT.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Menu.html b/Moose Training/Documentation/Menu.html index 33582dadc..6b2a14236 100644 --- a/Moose Training/Documentation/Menu.html +++ b/Moose Training/Documentation/Menu.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Message.html b/Moose Training/Documentation/Message.html index e61742e06..0646a26d4 100644 --- a/Moose Training/Documentation/Message.html +++ b/Moose Training/Documentation/Message.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/MissileTrainer.html b/Moose Training/Documentation/MissileTrainer.html index 46f34d872..ca64eaf84 100644 --- a/Moose Training/Documentation/MissileTrainer.html +++ b/Moose Training/Documentation/MissileTrainer.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/NOTASK.html b/Moose Training/Documentation/NOTASK.html index 3c056316d..932d91fa2 100644 --- a/Moose Training/Documentation/NOTASK.html +++ b/Moose Training/Documentation/NOTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/PICKUPTASK.html b/Moose Training/Documentation/PICKUPTASK.html index e73b68b2a..e19440ba3 100644 --- a/Moose Training/Documentation/PICKUPTASK.html +++ b/Moose Training/Documentation/PICKUPTASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Point.html b/Moose Training/Documentation/Point.html new file mode 100644 index 000000000..90905194b --- /dev/null +++ b/Moose Training/Documentation/Point.html @@ -0,0 +1,826 @@ + + + + + + +
    +
    + +
    +
    +
    +
    + +
    +

    Module Point

    + +

    This module contains the POINT classes.

    + + + +

    1) Point#POINT_VEC3 class, extends Base#BASE

    +

    The Point#POINT_VEC3 class defines a 3D point in the simulator.

    + +

    1.1) POINT_VEC3 constructor

    + +

    A new POINT instance can be created with:

    + + + +

    2) Point#POINT_VEC2 class, extends Point#POINT_VEC3

    +

    The Point#POINT_VEC2 class defines a 2D point in the simulator. The height coordinate (if needed) will be the land height + an optional added height specified.

    + +

    2.1) POINT_VEC2 constructor

    + +

    A new POINT instance can be created with:

    + + + + +

    Global(s)

    + + + + + + + + + +
    POINT_VEC2 + +
    POINT_VEC3 + +
    +

    Type POINT_VEC2

    + + + + + + + + + +
    POINT_VEC2.ClassName + +
    POINT_VEC2:New(x, y, LandHeightAdd) +

    Create a new POINT_VEC2 object.

    +
    + +

    Type POINT_VEC3

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    POINT_VEC3.ClassName + +
    POINT_VEC3:Flare(Point, (, FlareColor, Azimuth) +

    Flares the point in a color.

    +
    POINT_VEC3.FlareColor + +
    POINT_VEC3:FlareGreen((, Azimuth) +

    Flare the POINT_VEC3 Green.

    +
    POINT_VEC3:FlareRed(Azimuth) +

    Flare the POINT_VEC3 Red.

    +
    POINT_VEC3:FlareWhite((, Azimuth) +

    Flare the POINT_VEC3 White.

    +
    POINT_VEC3:FlareYellow((, Azimuth) +

    Flare the POINT_VEC3 Yellow.

    +
    POINT_VEC3:New(x, y, z) +

    Create a new POINT_VEC3 object.

    +
    POINT_VEC3:Smoke(SmokeColor) +

    Smokes the point in a color.

    +
    POINT_VEC3:SmokeBlue() +

    Smoke the POINT_VEC3 Blue.

    +
    POINT_VEC3.SmokeColor + +
    POINT_VEC3:SmokeGreen() +

    Smoke the POINT_VEC3 Green.

    +
    POINT_VEC3:SmokeOrange() +

    Smoke the POINT_VEC3 Orange.

    +
    POINT_VEC3:SmokeRed() +

    Smoke the POINT_VEC3 Red.

    +
    POINT_VEC3:SmokeWhite() +

    Smoke the POINT_VEC3 White.

    +
    + +

    Type POINT_VEC3.FlareColor

    + + + + + + + + + + + + + + + + + +
    POINT_VEC3.FlareColor.Green + +
    POINT_VEC3.FlareColor.Red + +
    POINT_VEC3.FlareColor.White + +
    POINT_VEC3.FlareColor.Yellow + +
    + +

    Type POINT_VEC3.SmokeColor

    + + + + + + + + + + + + + + + + + + + + + +
    POINT_VEC3.SmokeColor.Blue + +
    POINT_VEC3.SmokeColor.Green + +
    POINT_VEC3.SmokeColor.Orange + +
    POINT_VEC3.SmokeColor.Red + +
    POINT_VEC3.SmokeColor.White + +
    + +

    Global(s)

    +
    +
    + + #POINT_VEC2 + +POINT_VEC2 + +
    +
    + + + +
    +
    +
    +
    + + #POINT_VEC3 + +POINT_VEC3 + +
    +
    + + + +
    +
    +

    Type Point

    + +

    Type POINT_VEC2

    + +

    The POINT_VEC2 class

    + +

    Field(s)

    +
    +
    + + #string + +POINT_VEC2.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC2:New(x, y, LandHeightAdd) + +
    +
    + +

    Create a new POINT_VEC2 object.

    + +

    Parameters

    +
      +
    • + +

      DCSTypes#Distance x : +The x coordinate of the Vec3 point, pointing to the North.

      + +
    • +
    • + +

      DCSTypes#Distance y : +The y coordinate of the Vec3 point, pointing to the Right.

      + +
    • +
    • + +

      DCSTypes#Distance LandHeightAdd : +(optional) The default height if required to be evaluated will be the land height of the x, y coordinate. You can specify an extra height to be added to the land height.

      + +
    • +
    +

    Return value

    + +

    Point#POINT_VEC2:

    + + +
    +
    + +

    Type POINT_VEC3

    + +

    The POINT_VEC3 class

    + +

    Field(s)

    +
    +
    + + #string + +POINT_VEC3.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3:Flare(Point, (, FlareColor, Azimuth) + +
    +
    + +

    Flares the point in a color.

    + +

    Parameters

    +
      +
    • + +

      Point : +POINT_VEC3.FlareColor

      + +
    • +
    • + +

      DCSTypes#Azimuth ( : +ptional) Azimuth The azimuth of the flare direction. The default azimuth is 0.

      + +
    • +
    • + +

      FlareColor :

      + +
    • +
    • + +

      Azimuth :

      + +
    • +
    +
    +
    +
    +
    + + #POINT_VEC3.FlareColor + +POINT_VEC3.FlareColor + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3:FlareGreen((, Azimuth) + +
    +
    + +

    Flare the POINT_VEC3 Green.

    + +

    Parameters

    +
      +
    • + +

      DCSTypes#Azimuth ( : +ptional) Azimuth The azimuth of the flare direction. The default azimuth is 0.

      + +
    • +
    • + +

      Azimuth :

      + +
    • +
    +
    +
    +
    +
    + + +POINT_VEC3:FlareRed(Azimuth) + +
    +
    + +

    Flare the POINT_VEC3 Red.

    + +

    Parameter

    +
      +
    • + +

      Azimuth :

      + +
    • +
    +
    +
    +
    +
    + + +POINT_VEC3:FlareWhite((, Azimuth) + +
    +
    + +

    Flare the POINT_VEC3 White.

    + +

    Parameters

    +
      +
    • + +

      DCSTypes#Azimuth ( : +ptional) Azimuth The azimuth of the flare direction. The default azimuth is 0.

      + +
    • +
    • + +

      Azimuth :

      + +
    • +
    +
    +
    +
    +
    + + +POINT_VEC3:FlareYellow((, Azimuth) + +
    +
    + +

    Flare the POINT_VEC3 Yellow.

    + +

    Parameters

    +
      +
    • + +

      DCSTypes#Azimuth ( : +ptional) Azimuth The azimuth of the flare direction. The default azimuth is 0.

      + +
    • +
    • + +

      Azimuth :

      + +
    • +
    +
    +
    +
    +
    + + +POINT_VEC3:New(x, y, z) + +
    +
    + +

    Create a new POINT_VEC3 object.

    + +

    Parameters

    +
      +
    • + +

      DCSTypes#Distance x : +The x coordinate of the Vec3 point, pointing to the North.

      + +
    • +
    • + +

      DCSTypes#Distance y : +The y coordinate of the Vec3 point, pointing Upwards.

      + +
    • +
    • + +

      DCSTypes#Distance z : +The z coordinate of the Vec3 point, pointing to the Right.

      + +
    • +
    +

    Return value

    + +

    Point#POINT_VEC3:

    + + +
    +
    +
    +
    + + +POINT_VEC3:Smoke(SmokeColor) + +
    +
    + +

    Smokes the point in a color.

    + +

    Parameter

    + +
    +
    +
    +
    + + +POINT_VEC3:SmokeBlue() + +
    +
    + +

    Smoke the POINT_VEC3 Blue.

    + +
    +
    +
    +
    + + #POINT_VEC3.SmokeColor + +POINT_VEC3.SmokeColor + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3:SmokeGreen() + +
    +
    + +

    Smoke the POINT_VEC3 Green.

    + +
    +
    +
    +
    + + +POINT_VEC3:SmokeOrange() + +
    +
    + +

    Smoke the POINT_VEC3 Orange.

    + +
    +
    +
    +
    + + +POINT_VEC3:SmokeRed() + +
    +
    + +

    Smoke the POINT_VEC3 Red.

    + +
    +
    +
    +
    + + +POINT_VEC3:SmokeWhite() + +
    +
    + +

    Smoke the POINT_VEC3 White.

    + +
    +
    + +

    Type POINT_VEC3.FlareColor

    + +

    FlareColor

    + +

    Field(s)

    +
    +
    + + +POINT_VEC3.FlareColor.Green + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.FlareColor.Red + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.FlareColor.White + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.FlareColor.Yellow + +
    +
    + + + +
    +
    + +

    Type POINT_VEC3.SmokeColor

    + +

    SmokeColor

    + +

    Field(s)

    +
    +
    + + +POINT_VEC3.SmokeColor.Blue + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.SmokeColor.Green + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.SmokeColor.Orange + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.SmokeColor.Red + +
    +
    + + + +
    +
    +
    +
    + + +POINT_VEC3.SmokeColor.White + +
    +
    + + + +
    +
    + +
    + +
    + + diff --git a/Moose Training/Documentation/ROUTETASK.html b/Moose Training/Documentation/ROUTETASK.html index 05c8b48a8..05977ad42 100644 --- a/Moose Training/Documentation/ROUTETASK.html +++ b/Moose Training/Documentation/ROUTETASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/STAGE.html b/Moose Training/Documentation/STAGE.html index 34233aaa0..3cd29ea7b 100644 --- a/Moose Training/Documentation/STAGE.html +++ b/Moose Training/Documentation/STAGE.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Scheduler.html b/Moose Training/Documentation/Scheduler.html index 8272a801a..0ca0aa1dc 100644 --- a/Moose Training/Documentation/Scheduler.html +++ b/Moose Training/Documentation/Scheduler.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Scoring.html b/Moose Training/Documentation/Scoring.html index 5779476cc..10a4e3e44 100644 --- a/Moose Training/Documentation/Scoring.html +++ b/Moose Training/Documentation/Scoring.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Sead.html b/Moose Training/Documentation/Sead.html index 96abe0840..10b277bd4 100644 --- a/Moose Training/Documentation/Sead.html +++ b/Moose Training/Documentation/Sead.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Set.html b/Moose Training/Documentation/Set.html index 6a1c4fc64..12c0764fe 100644 --- a/Moose Training/Documentation/Set.html +++ b/Moose Training/Documentation/Set.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Spawn.html b/Moose Training/Documentation/Spawn.html index 042e1984c..05801f80f 100644 --- a/Moose Training/Documentation/Spawn.html +++ b/Moose Training/Documentation/Spawn.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Static.html b/Moose Training/Documentation/Static.html new file mode 100644 index 000000000..c298df14c --- /dev/null +++ b/Moose Training/Documentation/Static.html @@ -0,0 +1,253 @@ + + + + + + +
    +
    + +
    +
    +
    +
    + +
    +

    Module Static

    + +

    This module contains the STATIC class.

    + + + +

    1) Static#STATIC class, extends Unit#UNIT

    +

    Statics are Static Units defined within the Mission Editor. +Note that Statics are almost the same as Units, but they don't have a controller. +The Static#STATIC class is a wrapper class to handle the DCS Static objects:

    + +
      +
    • Wraps the DCS Static objects.
    • +
    • Support all DCS Static APIs.
    • +
    • Enhance with Static specific APIs not in the DCS API set.
    • +
    + +

    1.1) STATIC reference methods

    +

    For each DCS Static will have a STATIC wrapper object (instance) within the _DATABASE object. +This is done at the beginning of the mission (when the mission starts).

    + +

    The STATIC class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference +using the Static Name.

    + +

    Another thing to know is that STATIC objects do not "contain" the DCS Static object. +The STATIc methods will reference the DCS Static object by name when it is needed during API execution. +If the DCS Static object does not exist or is nil, the STATIC methods will return nil and log an exception in the DCS.log file.

    + +

    The STATIc class provides the following functions to retrieve quickly the relevant STATIC instance:

    + +
      +
    • STATIC.FindByName(): Find a STATIC instance from the _DATABASE object using a DCS Static name.
    • +
    + +

    IMPORTANT: ONE SHOULD NEVER SANATIZE these STATIC OBJECT REFERENCES! (make the STATIC object references nil).

    + + +

    Global(s)

    + + + + + +
    STATIC + +
    +

    Type STATIC

    + + + + + + + + + + + + + + + + + +
    STATIC.ClassName + +
    STATIC:FindByName(StaticName) +

    Finds a STATIC from the _DATABASE using the relevant Static Name.

    +
    STATIC:GetDCSUnit() + +
    STATIC:Register(StaticName) + +
    + +

    Global(s)

    +
    +
    + + #STATIC + +STATIC + +
    +
    + + + +
    +
    +

    Type Static

    + +

    Type STATIC

    + +

    The STATIC class

    + +

    Field(s)

    +
    +
    + + #string + +STATIC.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +STATIC:FindByName(StaticName) + +
    +
    + +

    Finds a STATIC from the _DATABASE using the relevant Static Name.

    + + +

    As an optional parameter, a briefing text can be given also.

    + +

    Parameter

    +
      +
    • + +

      #string StaticName : +Name of the DCS Static as defined within the Mission Editor.

      + +
    • +
    +

    Return value

    + +

    #STATIC:

    + + +
    +
    +
    +
    + + +STATIC:GetDCSUnit() + +
    +
    + + + +
    +
    +
    +
    + + +STATIC:Register(StaticName) + +
    +
    + + + +

    Parameter

    +
      +
    • + +

      StaticName :

      + +
    • +
    +
    +
    + +
    + +
    + + diff --git a/Moose Training/Documentation/StaticObject.html b/Moose Training/Documentation/StaticObject.html index 4c683810a..013f3334a 100644 --- a/Moose Training/Documentation/StaticObject.html +++ b/Moose Training/Documentation/StaticObject.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/TASK.html b/Moose Training/Documentation/TASK.html index 95a1bb086..d62f547dc 100644 --- a/Moose Training/Documentation/TASK.html +++ b/Moose Training/Documentation/TASK.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Unit.html b/Moose Training/Documentation/Unit.html index a4f339517..e2035c8b5 100644 --- a/Moose Training/Documentation/Unit.html +++ b/Moose Training/Documentation/Unit.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/UnitSet.html b/Moose Training/Documentation/UnitSet.html index 6b2a18d04..4f6d4cbad 100644 --- a/Moose Training/Documentation/UnitSet.html +++ b/Moose Training/Documentation/UnitSet.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/Zone.html b/Moose Training/Documentation/Zone.html index 80dca123e..72034c196 100644 --- a/Moose Training/Documentation/Zone.html +++ b/Moose Training/Documentation/Zone.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • @@ -209,7 +211,13 @@ ZONE_BASE:New(ZoneName) - +

    ZONE_BASE constructor

    + + + + ZONE_BASE:SmokeZone(SmokeColor) + +

    Smokes the zone boundaries in a color.

    @@ -232,6 +240,12 @@ ZONE_POLYGON:New(ZoneName, ZoneGroup)

    Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the Group#GROUP defined within the Mission Editor.

    + + + + ZONE_POLYGON:SmokeZone(SmokeColor) + +

    Smokes the zone boundaries in a color.

    @@ -242,6 +256,12 @@ ZONE_RADIUS.ClassName + + + + ZONE_RADIUS:FlareZone(FlareColor, Points, Azimuth) + +

    Flares the zone boundaries in a color.

    @@ -281,7 +301,7 @@ - ZONE_RADIUS:New(PointVec2, Radius, ZoneName) + ZONE_RADIUS:New(ZoneName, PointVec2, Radius)

    Constructor of ZONE_RADIUS, taking the zone name, the zone location and a radius.

    @@ -308,6 +328,12 @@ ZONE_RADIUS:SetRadius(Radius)

    Sets the radius of the zone.

    + + + + ZONE_RADIUS:SmokeZone(SmokeColor, Points) + +

    Smokes the zone boundaries in a color.

    @@ -413,6 +439,10 @@

    Type Zone

    +

    Type POINT_VEC3.FlareColor

    + +

    Type POINT_VEC3.SmokeColor

    +

    Type ZONE

    The ZONE class, defined by the zone name as defined within the Mission Editor.

    @@ -545,13 +575,41 @@ true if the point is within the zone.

    - +

    ZONE_BASE constructor

    Parameter

    • -

      ZoneName :

      +

      #string ZoneName : +Name of the zone.

      + +
    • +
    +

    Return value

    + +

    #ZONE_BASE: +self

    + +
    +
    +
    +
    + + +ZONE_BASE:SmokeZone(SmokeColor) + +
    +
    + +

    Smokes the zone boundaries in a color.

    + +

    Parameter

    +
      +
    • + +

      SmokeColor : +The smoke color.

    @@ -638,6 +696,33 @@ The GROUP waypoints as defined within the Mission Editor define the polygon shap

    #ZONE_POLYGON: self

    +
    +
    +
    +
    + + +ZONE_POLYGON:SmokeZone(SmokeColor) + +
    +
    + +

    Smokes the zone boundaries in a color.

    + +

    Parameter

    + +

    Return value

    + +

    #ZONE_POLYGON: +self

    +
    @@ -658,6 +743,45 @@ self

    + +
    +
    +
    + + +ZONE_RADIUS:FlareZone(FlareColor, Points, Azimuth) + +
    +
    + +

    Flares the zone boundaries in a color.

    + +

    Parameters

    +
      +
    • + +

      #POINT_VEC3.FlareColor FlareColor : +The flare color.

      + +
    • +
    • + +

      #number Points : +(optional) The amount of points in the circle.

      + +
    • +
    • + +

      DCSTypes#Azimuth Azimuth : +(optional) Azimuth The azimuth of the flare.

      + +
    • +
    +

    Return value

    + +

    #ZONE_RADIUS: +self

    +
    @@ -799,7 +923,7 @@ true if the point is within the zone.

    -ZONE_RADIUS:New(PointVec2, Radius, ZoneName) +ZONE_RADIUS:New(ZoneName, PointVec2, Radius)
    @@ -810,6 +934,12 @@ true if the point is within the zone.

    • +

      #string ZoneName : +Name of the zone.

      + +
    • +
    • +

      DCSTypes#Vec2 PointVec2 : The location of the zone.

      @@ -819,17 +949,12 @@ The location of the zone.

      DCSTypes#Distance Radius : The radius of the zone.

      -
    • -
    • - -

      ZoneName :

      -

    Return value

    -

    #ZONE_RADIUS:

    - +

    #ZONE_RADIUS: +self

    @@ -913,6 +1038,39 @@ The radius of the zone.

    DCSTypes#Distance: The radius of the zone.

    + + +
    +
    + + +ZONE_RADIUS:SmokeZone(SmokeColor, Points) + +
    +
    + +

    Smokes the zone boundaries in a color.

    + +

    Parameters

    +
      +
    • + +

      #POINT_VEC3.SmokeColor SmokeColor : +The smoke color.

      + +
    • +
    • + +

      #number Points : +(optional) The amount of points in the circle.

      + +
    • +
    +

    Return value

    + +

    #ZONE_RADIUS: +self

    +
    diff --git a/Moose Training/Documentation/env.html b/Moose Training/Documentation/env.html index 7afe0823f..749d7eafa 100644 --- a/Moose Training/Documentation/env.html +++ b/Moose Training/Documentation/env.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/index.html b/Moose Training/Documentation/index.html index e48e04d74..890d5b675 100644 --- a/Moose Training/Documentation/index.html +++ b/Moose Training/Documentation/index.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • @@ -280,6 +282,12 @@ PICKUPTASK

    A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone.

    + + + + Point + +

    This module contains the POINT classes.

    @@ -322,6 +330,12 @@ Spawn

    This module contains the SPAWN class.

    + + + + Static + +

    This module contains the STATIC class.

    diff --git a/Moose Training/Documentation/land.html b/Moose Training/Documentation/land.html index 0a1a6c817..2bc1f0b6c 100644 --- a/Moose Training/Documentation/land.html +++ b/Moose Training/Documentation/land.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Documentation/routines.html b/Moose Training/Documentation/routines.html index e9e546ca5..8b1ea6154 100644 --- a/Moose Training/Documentation/routines.html +++ b/Moose Training/Documentation/routines.html @@ -51,6 +51,7 @@
  • Mission
  • NOTASK
  • PICKUPTASK
  • +
  • Point
  • ROUTETASK
  • STAGE
  • Scheduler
  • @@ -58,6 +59,7 @@
  • Sead
  • Set
  • Spawn
  • +
  • Static
  • StaticObject
  • TASK
  • Unit
  • diff --git a/Moose Training/Presentations/DCS World - MOOSE - Zones - Part 1 - Use zones with GROUP and UNIT.pptx b/Moose Training/Presentations/DCS World - MOOSE - Zones - Part 1 - Use zones with GROUP and UNIT.pptx index fd0c6f066331cd6f221149950d4728acf0cd8d59..f7d46732426687a331cb1a9b1402daa6305a3d0b 100644 GIT binary patch delta 641559 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

    lMjsUJVFjj$`|b5Xw2logIQ6&e z-RVYdSH|SbuThn2ipQ@lxEDY`fC}i}Tp+}PT3Tn42{VqATH-}K-@gZc<}iLE;-e1N z0!4-A9;AJreO~E{F5K&Sb6tP6re0mgEnJrCCx95LKy z>yJz;Z<0m0QTNj1^i=d!6lU#{>1Z8O3n+$(amLQ0AeSViL!JSQLi4+1gx^qc^i*6N zH%0#~lfONmrIuTp$2sjletmVQhN=riw&cA#I%DQnPMlQxyy*$5_8D zruDv1AeA1_c?pP)49{$DiaqT+mp4%}n&22|Ye#gu-tKKvH*_?}SW!c6f`q!h;U+oY z1n>y?;9l0o!;AfpvGPdq?Nz4r7i`;SW!Gw3w}AS{pk+@�lJg4o?O)6SvC=+Y^YZ z^}^EU&ln`p?15(4cYLJOT$-y?>Zop^+TVhLZz$Y zb#!+i>M0uX-40YIW{edNM&0zuM|Bt#g0AJ-i3^PM1Pb4#iWVlw{2-l`T1<#!h6ZgtJF?K}I@I2uYqjGss` zAVH)P(b-x-4Qkc|aDDAYF-?wZi>9sO6Sr$!IA^cQKby1~l;V8-S#joLYYx>}>vL~4y%^A#1ok^t~P55JMOtF106 z??8~-Qd6W6s1v~64>OOYZgZ#=;u{NFWw}PuSG83{s%8+{*$y2os7#OnDU-pSup21f zRNw#)We{J2HmHMKUSz?6_HX*9# zI0*odKqr9&jl0Gl9>~MI!(Ej>bAU07byho0QKqG*OAk1=6on{k8QjUmKT#nzRft(jTX#=#rJ{}Z8lY85l*(Jw>W;Y^fO~hGN9yKz z0GdMGJWK}`oK#vZi75%7O5}izL-<5@J^OobaDg+ARikTrD4(*@dFroW#zUVC^WJbxkkuaQh!<;QzfPJ`(rFuVoTw#Xe+{K$PUF?=KTbY)l;ZAas|N^5 zcPS{V7x30*(!BwslmHHqGqL1AS&8b9F7Ww_NyA*(7TyNM5J|u=#cv zNyq~26L$l`k%}90V4=EZz$-9Ia;?n3_uS0(IIZ#%%4XKr2&#b7%#_rnl%+`lT9d2O z{_(dTe>_u3X|RWF;HBp;<+PPmR9R`)<|z97fx1Z?2-|_U91XD3Jit(K`KTEmJ6FcR zVEDHxS3~4D@g(_YVd*K`*by=ZI1f5f&e-m3y z;#QW^fM^KJy=}0Hr(LL_W~!MFrhYXcURVNBl#|HhZ$8)wUo8L)5;`VB40cHu@93;o z3fn_<`l;G2mh_Y^ogqGARsaAV;1Ln>#vPItXEwGtFgn1hMZcSAs1lc5L!p&A5EiuQ zDLWYTLFaFo!dU~!tXgZOYequ6fArR&+PZqGmm5M>l%*05sRYdG@5UDKRoQ2h?gQei zs@#-7WwN`ZnyXVAKu~-{vu~A7{rbr1YDISxz=1?Po3?A4^nk$6H zNwgNKYxc(}`j^zdhH+|7{%PIP6cy@(w@Q#q{KhIL7ipMJWB&l$@7Yx6fBeDM1N2+A ztBRUBo~lg98db18#CG3oLe#d`Wi_^)+KZDYbS@Ow(xpk#sUkj;?}`GIk!s&>r4KUF z{DcyefvZm2M8S=_?~5%3UDpWpF-nSE3Zp{M($KUOr8|(JyvMin!uB+jLCzVp;+oS& z@_}7FIZ!9ox^(P!?;G!lf3=`sC|>UA?S|UQ98+%5GNL!1hED$gElA@mHP|cdSB(+%D=-($` zP~udBBj~IuU`r3V8z|tf%eM0U;+@Cr^|cNp+MTGi)Jv&LiE+0Sf7$21p!-M8ap~JD zHUc_;ev2y@_b}Px30cck6j!ucOOBz$=~6V3q%9!uq>1e(d4ea5KhGO4qKwiV*LVrv z_DNs@8pA0y>)d(D%Q zS3ocULx7F0%yf-313I~aXPgR#$0-fQ>+yk0kg@?fNRof&IK8ISx?I1mnZKug89H;E zyjj(B<=eg1+h}D~wD$cCR9&4(O+6zHI$(q)Zv^U5A(S}kk^w5zY>G+V*jQ@LFM)iY zr@ZijM~IkQe?`}2`FD~06#b#UX+~YU=3b}xmaoZOFwA-N%e{Sus{2$e>#Q#M&emG( z%^^u&lDI+^r%(#VD$=!K+PJ(2LpwanGB9Ab1Rm$0C*}viNFA%52Q;)6KMrXY2;!*n zJNI7d&z=-IJJOE|6deKRUDD|FB}Y;6<40|arfZEIQsTF^KRXrKqUb+y#&c4lb2 zcy(W{7resRqN%dlaD(wOD?u&F4w9tGV30_dBp%?L z0BGQ>y9iC`uXby_0&A?xs8R}qE%fQ%al`}LlY@=>@`25wrKYP=WizoSOmaTBVxTP; z&2m(oAw(U={Qm%a39hR4(L%aw97}Idvi(BYe^DxKkzhEqDJn|B4+T)ILy00g;bN?# z70U9*i665g!lzey*Ok0Yb%(_j?DMt4)Da@|m=8LJf(2>@&fbZk(|YkYYra-f zf25?@a#b_8dV)t{s&H9BC;ZL`?;GP2wNRIk4WCcvgd!>2EHwOa`mZ@$fAK8za_^m} zsq+5-hm6?Gk(a=F<#kgN<(E(j%Pp*uOI~5pl}za#>c=7<@sZ;$n9K&B05YxIWZxX+ zZ*+QZ!0a)TFFUS>x|J&~{{Z4dHva&Kf3fD@3|C6lsqQr>x8@4lyG{H}FnwW%91Jp| zg%&~-K>&iH2{De$TD?$c4>|6zNv3Hw+5_Uf71B?%R>R`@kv4q2;m;y<5o)D14%;mK zX3F)oOfm>bFEL*AJItsR0Cgl8_vahp)&eX_0U!5#t7-lgcj?XN-;hB0ra9-rfA(6; z=yI~Z?7{0sTy;s2Q<1ZUf#fH?%?p!_o_GiY8ri9tzzxhd+}GC$Mg|7rzQ4ldcdrJS zb)v5`r5-G8V5|QCU!?ZCmYIAwJTobtn@je~~*(;Dow|aTWWV(xY_kH=KXz{#742bmziePpWQ* zHhrX)?5^X0d2Q#ujbAM!_WuCZPz1-c#wgDAw%rql-?>l2=h->;e+s&;l=LdTt?RBy z`%wA~by-q>2I*IDw*oi@R?Cnk1b|{>zyyT;J|_PFrQanb(h_Tf>J>_hf5cUbE3~V1 z)2O+6x}J2Rrqy;$ODlq5Xek=I0yQKUi2&l;sE%xaN4=yVlSeFOx%UuPQRtV8tf!es zugm$8o~y}PQ&r_^PKA3ApbQWR;{-O!%w#OjY>>Ea6nS3Fvgev^u=JHzs~f3)x{bDI z?;t1@B9~F}-#;NG3O&69fA_}=#2_OebIR-J=4-~%a+p{$(wl7jG7Cs40F;>|4W>>p zwUz-|iODCT?OhAWRTOWgr^_J;I+mlsUv7R_)e~#nmm{-EUbg3jRp%CLloao{#l62N zPPBki=MQ%5a3HlDhpK@?O zC`n0fc}|Mp>YRQ0*3?)n%4*f=GdjTk05@rfj@Te*A)rzZx~pk(8;!GZZN?jBS)?ja zaQ^_Ca^%P*B#<~#LH8yIJf%6VYL1?Z?uOZIYpY+7f7h2aH7Z$O9;MIbR?$0bOml|; zeNyr`Um>>8rkx9UMW)n*hbor}B!WuB`jxQU@hbN?n`uiW4^Z-{C{m~DYP`0AO1#Rq z7N>%?DOap{id2x0WP(8(fH717S9qm8O+^!F)VpfjCKa}_Jp*C$Bp8FSJjuar&nO5( zt@~(7f7uq-hzW531uJk!Bu=j6?0JAdfwnG)>Y@(ibFkD>two`!O}Msd+0hAF5UEfn zVnC4vBu^u_gb;{PNFVBsL$KLgr?*s8zU2$d(<qjl$$>xn|bTTd>+91ao>r6EM@ zoM$f$ym8qxZIu;QR&onfE>NQShf8#5s`FT3e@boUoKnz@3Io(ikU-c2DFBjjVdJ8d zNChP7KZ*{GbcWQ${{X6eMz-a(bH5BDW`Gbl9W6^Q4Nww^4IOWbd6(o zI|J{su-P0vk#xD$f7&nhep&AoImWldhD|jzcB0*9!PJK<+i9}59!Nz210J+L=5Pd*W zhZ+M*wJs!ut@v8iBqvHjQZq>TWPb*}D{~`?II&*6%4_zJ_)*IK5`05hvbRfWT&G13 zPb?MG)l^jPQ`Dxqnw?bD_3b>Ar^-=&f0$Gfl?8)Tm<9|#Q2?gxZ%o&8xCxRVPHdcf zSGD{U{i`_!^U#WXv*SCdbhgas`L9GxV=xjdAb#F1yoD7TyKArPRutvC>a6XH!TC;6!MN<5m9bT7I zfcjiRX$%0!JA!3GNKd9rnc!i7(X^gM5e{CiVx8)dU~r!_CAO7N+DnL(k1(BE2qeMZ zXo({Ql}3jtWoCDwX6U;`NC~Jze?h>6Jc3k}DL{H>Pyz?5gE83RiB<)w)_Jm8de@Xw zlX{2Kmue_gT~AiJcP{OxL+mIx%g9?UB}GVB;zzt5F$+V56&mL-+j&f^cFJs|9w)5FX0svosYj4XyYx^?i#3{(qsfca6(hl4Wu?WgEU*Gycf7YYSh~WH>>)RGXX+mi&&pA&gbw?|!DRmygs>@wop;u2j zeAd+3nsuLxM0i?Y__`aN3RNQIOs-xN|)hB!!JubA9S+M(ms}=spjpr z{{SYU=Uh@>t$9wD9({4bomojx5+SC**#KY~*0fOJ6p}timphWWf2&uMtC>(w6Wawr z4caP>_DZ#fwHVx!!ToVnic-@WOvFi&vopm109;npc2UXAC9n|F&{xURG0yNiNdvYk zVj$w1(PluyMYhUP0!a`jbG&}$a2rtvBN)v(w4qKyU~$3Y`C=A@VaWD#0xBSv0!KTD zlm6S{i%lX^eeTDee}=rtG3g!q3Hrp~XebD@YgcC#_-wpW*c8U&+ke{?wH1P=D6`c# zmzQl}O4fzXmIAd6!nWQ)-{pu|YQyORbIbW(GKI64Z0*)3%~Oc;)~!e?O4}qX5Twc$ zw8$XBlsG39<$?$~1wkX4ZKjb~Pb=k&p4Y(Tsz+&P(&P{nHIhMr5C|VF zgiwvGI25VUIP!9=EZh)Iqr48swhL`=s_hbr#8eN=W82&1IH6$WU4j%YTd9=i#Z$Pp zUP^&Wj4w$99&lnpgJ>&&c$n~)n0lXbe=<_!?4z5@t``)|!JoM=EFa+vT&ThW!`M`% zaltAW=|iiBe`ssTAN@`F9FKuYb0!AaN6_Qy7mIq`(c9ioTlrbbeqhU&2R{uIImMJS z21%CdT85t6X((=e_mRFB7zlVF!_z-be^e6cUL!1XX!k#^7Z|%_4D)VESijOPmZ9w` zY*eT?RGqgD2}<_tl^E}hh4F*z@#wJmaz4ADTz~HBe}%Pe51NGjSJtoq-U-tX1Zs); z_r(T>3wH?I;L}az6pKgRm1?Q0u6~#_gpbBZQV2W|*eZ9C?}V3Z6a}l><~wmESg5@E z7SrcH<^icoaRoc1_R+Z}cJ>&^cDUhgj{=l6584{2a=n^$rSuY&`AG@ZOcAO!Uc~Xh z!*)2de*?m&n8CiG4|=DrcI?H*&2SAZdeY#jQ~-n60Tc8iwj)RkEpW%DbPp~r4q;4a zsKOmhrkS;9g(bk0q$H?C*X~^<{!GyiiVoFe>m|^mZelJWh+kbLN|jWkq3RuU>g%$ zD+=8!qX6WTZB}GMjVb>CJ?9WKEb?;8CMv5Yye&p28Gg<4qMij6Hu1{Qj*T3gca~dApDNq@z(YY9*G%fpokS9ZQ3{ibo#Xez;kbMg?U;3;hw)8A{!6rlqG!1KvYGd5*a%Tq{)XJT6#327mspkWaMe}7RMZ@lsC?}2gMUC~x4e43bd%BMosT_Rdb zV^WDK03{=GNsYHAN4_XGa-w#pw%(a_TJ-sD(b8Pk#4+i_-9J9?ec2HVNw5Qa9b z!{&s_!HZT~XNB(&*JbKwBhb+%b`{x~yN+hU4Qlkfqbo>LuUHwJk z@%VO~)aM5{xxnpfTary#>Hr-{101Y=A+LwSw2stBEDnQ`dI9x5;Jm?A_Jw67opgOV zxH;S-)yqP50p(zJ!Xw6RX5C7@P-RA2&ABuK`mf8jTTK^tAE z@hyOm0drWm-^Sl^zI@0Dn9pr_*1)o zk6UTCKXHGhFRg|eNvf!B?Wwj~Qi4)cqRb!_5CKsVOib;J&i??xeKdp!yhPdHIxL)C zDdO>G7ll!OUdbUhqb9l9f9tNF?e3h~e0X%u;pMLBl`iz)kf7~4n5YDPib3|@d~TSRMO5nC@SaG&#>l*S>q?7}?igz0m!Q6AsJVrBPBcDU+yXSBsxLQ=MqLnn& z%5?c?U*q}2oj~k9oP&x08y_Vcc7RU^JBDnwQZOnWtSA~sl1}P#^8g@ozjNCb*xY&{ zcA_S>?FCDi=`$m1e_$1~;u{(er0PgLk9aUh-aBEN3o@1^Y@-S*qU(kIn%7)ff(C}P zYLbx?tO2q~pLqwiEuo%S1FD6u-VRlSU0Ovy#8jbAugOVq2sk3RP{9nNrI_Z6U=}{+rjOPdNv4&-H>}M)7!|b5S3Z3&p$xBZBxiwz$IyMuS_7M z7!$yr;C%6>Si@bo3?;Tg=FwSZ^0qDkmugfH>q`vi1c0RK+IA%%?YND`6zD^lb&##H zZFWu&wbv%=e{(}hHI2C2G{DsrHKo!>{G^S@j=+%+aMm}=gyO8@vQwTNFr##qXYlXe zG~(Y<)kQ0G$yR`Yp(k17_EdcgVfs?j8L>vzeMotDtcp>p#NF+--EO8{K_#czNhwk% zf@6J&7$3wKi4~7jEsKA>YxfQA!1Fg68nx7T( zcXP|Ebhd>jQS!-biHJ}?!hU=2jZsYu@r(=lq{$qy$UwSGESavFr_kXouAQ=mnJWGg zqDT|`e>@34uJ}xl{ZrXE;HORJdsTHK)Hgzh8A^~sS_xT6924v(U`Oj1$aJr3gPF>B znXUvL7g^||jn!By>ex$ZWmUlqC9)wpTN`c0>f;!-UdaISUw@*qLzTr}kt6(~HWGf3 z{{SNyN$iA-s}D|^L-~LpG)YW)faYg^rUB;&f7mU{o;Oy*-9qXzh#^brzF+`G-inmB z`VU412LAy0Rv$z4aaTKr;phPQB9hyFPnMMIB%8!0jo?_J8zP< zf6-8oNLoUZB4C(5(Bk%}M?~`05*&bcB+2BF@AaRSC+1c;T^A)(sfmoYV^NLm_Fq7EaRc>N8~3)_Z`>D9u=pDBpPZUf zs=6I;x3H8KMQ&oaQd?SSC$^Uy^8_B{JA=n;Ws_B)fc|mtw|iw0_w@_bQ4GO8!fRqG~kfkWCL;^`52|I6!e~&=XQ81C}e}JfXbDw5M zQL(`7@m*V_A7>_S=_Ybxs2Mk{e~r=J8KZHEcWNw+R#xb(5ZFndWjt^(}#{)_eL#((*t*KE67@B>MAr>kKxzbbCL9(UOz z>5O7V4*vi@?6n=e0r~#`Wi@|Idh=?bQEvT^ZUraM(${gJDpBpIrSLiLe>fj9FnawE z?6G9=>HW};WTXV$3n(r1+dH~#?b)F|u^d|vqapQ5iX*XWXU3#VOO&N)`I zC+2>H(A?-Nn<=cKe)njvrl?OkU1|533rJ8&-Zuc?nIl+3gQ$){WyCUUBO; z+BeW%fOR70(H^bP=KQ^we=^eP*sQc8r?l&7hL+MCX-qj!Qnr@Lnp#wnf%xzIFziw~Z9hmDCOu}+bU8QsUH}d{p zr*+1MvG~QhN$nsUWOTZW`$OOsv8IQd{M8>eeWLy{`i>Pxf17++XP}pa8d@8#-EEM2 z1kxp-N6UO6(n{;xN;bm~AC~?3T)O>K_He3IZfmZryVNXdF5YS#t8rfDUMeTwY$szo zEe!TB+yn~fDA{NxnJHv&kc0$)IOC7>#4$7*3jD%QRd$MlyGv!r?&PHR;Qs))#nXU5 z?`bHjYUOWHe{e5PJCu_L+Ckzl*0~Fq6iL1z^0ZwZH9li%X=-@MC?KUto z)lJ=-WGsL~)Is9Y*}l zO@-%B~H0p(XPGbTRGgdL6~TnxU`e)f95t=ayi_Rez+~ryOCb+?w7aPx?C?h z{gM7QGDEAV%I)R+;KN%LS#O4!@&5qsYXfk3*eHY8;k3*4Ts}Pi03TGBMg^taIn5p{ zJRRn?u9?@RnWoaiYXYU4rLE-CzSvMIZBDl>sS48s1wk7fiNdCbaLBRglq|TtrkV@f ze|{glV0b|5RlSRye^F@irP$BKSZ@^&%S$JQ9#kc1h}iBp?T#dxa~a`uBh<0@ysoER z;*Y17TT9tP!{%+sYZ5>>ONQ|w2YJ`!E9?!m{z9& z-*F~R-|%6IxhgYK%gG9Y3Pb^_BmT4V#gRw=%Fr#9CqZnDj;~kmIK89`QOJ4<%2mGc zMN_LNcS6z1P@obDM1W!lJ4lju=N1Q5S9nBy<)TYTDkwpKk~coketr0#mKi}#e-f;) z{VO!@EvhFe;ng;x`-)j1B&9y0qErBps&^pnM);wdJ=Hk-MK*4(2wQ|fOeQ$z{;`6q zQEL5i5~S)rksyiQJ^uigIEw7j-j1Pk%Td;n2|Ff#d{Gvl!9*s#lrUCZ5gpID_WI($ zz7Ug3A9^-h4*Aju+j;u`06nllf3~1DwKqsqYUgr4=Qx4BsuHw%;8JH$1GbIl>+g%& z6>eH8AM3{twJ46`eQ=NEIR~lNj%QZ}hkIZ)e0IctWX(NQPZ6vr*zR`+Tf70mMQoXkJ z_c&`^e1rs72_4Shif5bAK6q4c7XJWvu#z>SQcxsG zkESl1s=z{3-P$Vw0sv41&+ZN-V$?Y)9(29Yqbt|^P07k|x@9Bc8zWLRdO!q&1w@4W z!8?PvuX3eS%N=~^j!Vsyf7w&1dC1Z}&R%Nd%N12AMMLeC{5oA)+!6^=SGf{OPXHWe zHU*}GKv=@)nR}_e6Z4EBlc_0axB^0(yHl*`90({f2et&r{{Tfd#7`^DUusS6!;^CF zOfJ1Q>oO>)={nD9uU2!R$!ouhNN(M9K4aGAf`vg!%1}V`OQ|Lbe`5!^#yg|P;8_E> zPlU7E0*#91x{O~=tAt&AYOc*>uX4NXIH|T(Tj^A%>mBfj@k9W<0ZCIjX^|^H^G?#K zo(2{qCH1-3{{W`GY0Qndwtw|ns{M{0G5ke!4(hKAS?P5-mc^Cw(74<0wRMU&3oBvv znMDGe0Gh^@r$}ile}%W8!jym#kkiQh`#K=kLmXs1xU<6a*V-52=d0cpd@4QG9*0m+ z*H+YD>8(s%s~_{}Z2|Qf%0ucW#O2j-&NM##c`7nTM{OYw9Jg$(A#3 z#Z+}GqR7hhc86+csak8ub*7sSt?dg*N{N8VV|5vKv}6iUr;exmbNxo7?EjF6m(7fIQ#-!VmNS!N$27`)ojx|XleX$F1NZR6CNxZfmE;ih1 z8iw<~^q%vAXr|H=K&(FEm1?R>yg1p_sDnFk?H%I+f9~j;!rIStrEY~($#s-`BGi`x z76+D)RT3nSB6l!M9k49nQN^v*Uq<_lu9mR}%nDOz3Qm=eOdpXOcia=tVx!enm9flJ zbtQ*dtZ8UldYVvhddAXc+6sSDh#Oq;sF30ndq3vu9kU`W8H&N2?$oHIaxkLv5Tturd>C=W*dJ>EKX*sn){`}t2uK70Gd~wrHVxev7wv|fK7UGjmf1;%&z}iAVWUxro7L)0)T*`03;Aj=L8y6IH{P;Eh0dC z4I|eJ>|zhoe%PBzmIoym#%N(m8XiudU;wctTkL*+FP9jvg0frPFrv(i)YYv>bqYgC ze*q;c+@9m+CvDEeVwLU*nlmW~A-4n(Bn5L3`yMfLR0h=SW@I{_F>mRCz&-H@tPrlz zcFf;LQl}cExVGtG(#=Pd;8AJ7B&AWfR1jeA1RmoHaH6a__$h-qmTn{pg}`WXCw<8$ z=Yb;%_YhO63+A*W6@v$2p~pM?js&$8f7)kHe~(cl=^T&hf8P*_MYye~Z}Y6FKne8f z+DFS5w5hnJG?xU%qM)ufoK`}%*+)}d0+b0}$8t}w#Su!;l-ClW{wDtBBi|5!qQ&G~ zuNI1nZKpKV*()4wDXx@MY*Z?lak9Lsge|8;@|6K2X-S0$13}2K^7{Szm9@Y)e-bQq zUt~A4a;qqEzJJa(abEgSO-*)w%vqqjRV!p5DYwF?o^Z(wEe<4|n{mS+WstfNn>p~BY2!70HY_U9jdsozn0QFo)VRZ?{yrwm-IWwk1;RIdHyOoUA8TPs2w z5I2-IxaL5?>EsTSc`o+O0O7~of0{Si{S5L(-UxjfHGB|9Ao`A=(OmPT zV^0)EPTvlT%3WgnF}k^us+V*bXgb5sgtc?X)C#I-u6FY&3x(832Xq*de*rVLIvRfy zJ4kT{(EB70e+4FO7%#RCR~yg1ANt$V;F^ohNv(2j!=m zfH?&1jnTe2LEF#!Pd@{}_$9t67#oan*Yrwkth)2-t)Q({a}EVI!;GUu5J)7XPjeCv zZ+v5WwwfY{?af2O%v)nKQnzt=M9aZQ%qZS@ce&cQNFphnOH{P0oB<`B@G zEMbf?o_irO{T0^c8S>j{lEY=8q6k6^LWIfW$INbc#me@Niq8Wil#Ehzsw%n!A=I>| z6cS6ST|i1z2XpD~zdU>40pZwN{I@j=bi7jAsj1Y-bzWlO3-o~Ee^dw{k=l0K+nf_v zTu%v7NwuPst{TdlN-3^hYl~SabT8=} zd6ezd$}#(ebun%Cf7@_2Bsg;kcumzQCyy=(zHM4tuh9Ofmz#WoyqUE1e#cn z-6!^3^LeyYu%{Y*u$6#H+dkuy-vL2Z_XXx3w+pJ7n=?`Lm&5j4x-g-1UBdfQY)#FU z-K(ienxdpie-O2#tz*oogrpNI*kjj!;n#_HXNP#ss$ER2YxXs*4m3{ZInJ;Bt+mhb z-4>@+;p}WpBwdk2)-Zoj@mx2g{bTAcNo|x?4z&G{ojT9<`ZOgj+%Ekyx?ApUp&~t1 zlr9F;U`cUoER(q;&OVo@)Is7hIr?7~d`~9Cmd)aS!0vdq+t9Qww%u)F&zPwnKp?HPqTtOs zw5Uo+Ob|C4C}|uyq0SF&UQ21)NfbdK>1T;}7M-q^5CNlx zw1P)9f!uZKyxrE1v~%nY@j_p?btCNH>J~w~)Ppzfl-Am4pFum93rMVHo#m2uF0!&u ze>0D1;eH4I0E&JD19bi;9L*o;m_5TCH#v@Y1JS{G-EOn`PsCb${W%9Y45NMe3-va< zpVi900u3Uv_u-GO-BWZW#G8Iv>PA4fH1d(Fg@}5Ie>wEo@sc074Uxod{2Inf6oV_T;H9Y$KgOOso>MC)*HrOy5wv2X?3fu z8d|NfFzSNZu4OAiUZ+oVI+UL^F(F|qNfV^w&Hn)6fArKoGo=3j7Slomv4SKZZ6&lw zbB7KXBKa0NTI&A*M);)KTheMCNU^jWjzFM!2d!{LuDO|SPa7(!=wDNdFP8L$fA2e= zlxzn)PqD}6h~sH^Jr~jS8_YxwRTnVTT&bI76{*%~+$A*O#OYk}2%XO(ZRgv*_@iMY zx2ony9@@N-(K)kS9I=L;xA{tO2?6gkZUKl)p2B8%`r|Co-P(I3F%e15WWL<$s{;yn_aA!-nk;YQK{ zk|cv5@81_BuMZy2y*fCW*vQ72{{WQ&??THI)-3Zxl>!x3>&?^!EI{;#DhU!Mdqz4R{6NPNUm5hOT<`uJ zEdVk>>(BFqvghF=s!uAWs-HJno^ilSDsr{d=uj{@Zg@QJIMB}@(NG1XdnNebskp!Jrb#OpluEwJaj*(^b^8fBH|H*`hG!qC!c4AjEJ7 z9Gqx=wh2MmCE2jIPRqv3rx;SxQny?*s8SMCpf`mX1{3u5 zoO7hq9YeR90ZBiVS-NJ>IgKe_8j^J%ZT|q* z0`pC@#(rQ|e=fGEBQs};l`U|ttmd8cm`q(APhtN6x4$?TPyYayXSjZ)E^+>0Oq6ZN zUZ=ddT1b_)Oqn~xZhm+_X%8GJ7kYK6hx*;8;JdP#ZgmsLUBTA(3xjarePpz z+D_jt{{ZcQu!uAS&4A!w2PH$lXdV8X{{UPGBGD(Ae|`5&xsX%|OKE~9u!25Z91u35 zvD@BS$XHhj+7&;@ZSugIRykc0rSB!n!YN!*yqc|4?m*Zjz*Eobh0HyJ-8F+bP4W#( zt}K-{b(YhuCy<~@R43kN33mygQs@Jt9URR$ma{wN?w{LkmpbD}x81qZCFcJC36Rrd zB#50de+V)T(l)|8=^`U(BCoIC(P<8InYQuIAHOQ{)!xODGUJWX3QI+@k*QNOttOp@ z(mQBu1dnI}XJNiFOCz3lIN9~d{!|SBS4CKFF;-@kBKvoyahgOZId8Q%HZjAm4(sj_ z!UpD5!j9q3KcZy;!o_}JsH-V#g9=vZPQ;IYe`&yyR9iK1TZ$-CVF*AFpY_9Xc|-Y8 zEnZU6Qrl{ksw9yRBY)&Sd|DNi=2e$eQY0itr1Ad%HW-MvB=t9H>y}__ECWwW*mKJ& z-(31nvG0KcB%-?aDQYiwM=Dq3EdVrtG{(|Q$@#|LLxNEZi^c8N3Tmp*6B<$yj^}Cq ze|W8-MdmNGr|j&uc-pd1XRL{TptJQOFH(FZy0Yeynk&r!Qj{oalz>#)kfkY2J_58A zsVW5u1uJxRY+(MWvB(>T41SC9bFW?#d`9?jt61x2MsJoD6#AKF?CmmYZI7%SI$N!$ z*2$9q0-%0F09_++LT1)HdnIzZsux;#e@3*OT!SEfr;WaSu-57*Ao7;Z(y4U%33zp>;&y=DRk_ab&M<1r-Va=VTEXTAdXp&xMQZ=ef5LEv< zb7!trh^VQcPKK8K5F9R%)gd$6W2pr8KQfz8U&9?}$)+19aukylj1 zK82)|C~w$^AoIU7f!yYycGqICy9Y`F&DX)+X$ z_)$rp^2Qh?b=gRgD9f&wuevAp>iCw*YNVpiHp^~dr=}_c;U85R+zRBWKBO%76A*V8 z(j~LmA<&U@SFE~4_V0Lk&B3Z}r)6udTYW?&Yp7$*WF5EG-k=A}frkeUj!Plnn&XXr#b`XD-7#`+}C(%pLr z1f)}|;nY+_2?_+nf6RbH?aupPO9~=Idar|dg)RjtRK=ozRjCRpD)tay4)gkU-t%;a zG`@1G;DQ?zNrg%CP~-#@k+BDOGIkO+GmGU2C>rd>?X6)Km3d{#fYmVvP*kYsPrjl* zKxeiu@~O`SL06q}^*yGlvgv&kY$lyW*OGL&*QCmm={t?ce;^&l2aHY49aXiiLS(Gd zXSv%KbhGJo57fG9oe16MXHS_hHTptEp&)^`7^Z+m3Kx^RgyZk<`n;s1=}3t@9yt9w z;hRVZGNeWAOG!_jB)~J?JAW)t0@adQv^V{bRP2q$!*6K*hZaRCx$0G1>I+IljS3^v z?fQ56V%mbrf6A`MNII3L_*4_I{d-~yRG@P(AVNVP5w~D|pFVrwh$yp5T8r8brD;+B z0OG13f3NL`0aZk)8ND>($qU*&=6*xpoKXs8Ve6tP(3p6BU`~}u`eMMPZAxtS#vZ&^ ze|4=wlIcp8`dtm5%1IiG5KO5g56DD7F^RJ%p4tI0e|o*9(hA(uJ^lWFKhp)bvJ8|u zuC)4sP@-pU-_-HGEDS65kav2DN1LZgz8FnL{(3jlrC;Ii`Q|@OSiFL$1e)t_rZOpA zDNvtCwG|fic{KqtW)x2`%>I}>JuTMMk2l>am6a}rilq&x+us4j zi3mo8e-)|+Fpy60CMRqI+IHgwQ%$=f!tv*bf3uG}c$DiUS6JHXwThaK;clU)x3=|~ zq2;km)iM*emcK1YQp=7FCJ&qX<3w`CA!`UWGkD5`5^;q0q#tD$K{72`E}cfd-1Dtl zF{X~8pMbX&NadEC*5LUq!js%!Eu?Yx`YWdsf6f=8ZOsg$Nl#&VSb+v+l zpn#=81yE9wAnX^N+lKQX*J>WL ze^a4hn_*L6{o3hM&Z+XKQqGXtf+VXXkjof8UP0~1`|i4J@^w$#?neUg{nt70v2*cx zoBD5>JR@{Nrng+-lQZQ4n6Ast)3}-oMQCvjGjwLDU^hVHPPW?CqM(NYNK#ZvR1phg z8-qcjGteeXV2p>8M0Pnoi`E}!zlu(Ue|TBEUc3z2vMzqC&Q^T)RY}wg;caS>cFNnM zbpnXGl^5G_6pf{{p`fIdlwJB*EhLm)Tq=cA{V}NkJQw3HKG)`Cf4hN9N&pKIOo~_bUVJaaz8QWlEnK*z1 zE*UCDsqQ7jC<;WSTfC`K^ebose_T5c6mSXenNW1qcLOpDdeZ=^2DKNs)ecAqNaJBe?^%j0;8*A z18zQhzz{yTqB4j5OJq}1Hr|1#r~m;{i6(h6dz0T50!WOsbICOYNkH{KHY(=k>(^6}d2`%u6Vj8{P;}ozK$~YB2IS zTDh5DX+hd#$w-wXrhT^gf9=~8TWW6yqGNB&o@)qtmq=5xRVn3MpPa-E=k~&g?uc-u zIhLZ9zfQEBKukcLxB47JK#r=*ZN8+bE+yh%9!}r3DZ>~<2&CB=jm04AP~2@F)A`^O zKJ;xB@g+LE%|8DCKXd+=x+()``)%f|6(XhN9r$eraRLmU`xC@_e{qW~R@Ww!*QQ*0 znw&mRr(Z%nqf&xreop*hZaYCIqBi8xv^8m>LDq}Y>uiETg*?ywK6po;V}$b-7MC~K zwYtMJ^^UAK+LW^5G>`!TN6T~jV3{WHal%`g8Yx2MU6(W3U$b1BX0D2@lFdVDchaFU zAxJuqprDl{X&|LReGtQ?*!fya;@sq;GUN~S}JchkB>Qb%YVIBTM)P))0$g? z(M?9)=hl@n=pYX;gy<}eSIet>(ndj(E+B2mHe3Y;*(S)UIRFe1uTdmgnGBP-0&++q z?B?mWciOAmx@K3rUlh%@^KqaSd#V|2>bg2xfTS1L9J1Q+C z?z4T@A@Kv?FQpzLs%tN{ngr$Epj0JJCig)~OE)Ju9}tx6r4zB$3na*JpGn&mw`dKU zEEor?f06SZgOwUB-oJk@iu~y7A4_vLO0z}RrJY^0IZJt>bbkuEI<%+<(LR?^AtlC$ zf|me;!QCVcL^?M$%r*}MaDB%)?m8oMY%Qm7dKFWoTXv>ZLt>Q|Tp$DizZ;M^+rHc2 zvg2-1jAI2fVQWIV{{X~Y(UhqUgXOT^`$Q5%aU+gI;LAk{BPxK7A%XBquTSOou43w{Rjp}2Qd=uiX;@EkHUvTB zV1RzwN|3>Os?>Rgy3TEscRFfRHsC8mG|352RG(6l@3Eg~!AHCjIa&1%kIHMfJqL88 zT-dkhcDjS%MLx6#9Y&C_M#>TlnIJ%b2YfqgoN?7_ZUGw1i3$U9etUezGQI~M7TEP8Xx+*&+{)99zgy^AN#q?rxMB%b}Ly>WrRhxrQW;2S7-!0_eP z`rOgguD`0kCaTi?op#2$k#??bq1C*S-C`*!(KP5lWkOe_Ks*4DrC?%X3~uuy0Gg`J zS2>~0^e5G6l3!^XHLGdG)#lu~@=)qqcg*;8`jw;)%$>xkB1Dg#ATtlj;yuKV-9SQ-%I=C+ z`L9;n@-0Yd0J`IryL!MInVkl92W|19J!ZY5*_J`>bBF%`tf;al9JCYa2k@q*$$wrS zFBQzvucjS2s(PgbZ8of}Y+9C(Kq?=FxRM6g(%%&Eb`NJ$D6jtjNb&yw>m+^`Nb_!q zhyMUee}!`Cr%U<}jL&b(wqA|oI!l_As%w4HpDIwXP|L-oG@mWRG!&IYfJ6}+9A?(| z$BxUPlTPha#f}ErWO-|cG(m9$9)Gul#%VNckVx2=2t0<1#3e|@>b$xuWiXEbdGlI^T#??y|&_3_^N|b1}#j{ z)7KhR28t_HCyRPfQT}pA56f2B#0jP&UCC~ zmhoe^Px(%C&U|#kN9+Fp3jY9>uL9>{rMlf=mAOtl=A3ytb?``qZ@%zAB70+zJY|xW zw;&bOh2X>->>jB48=acBSfoQrDR2cPO_3_%2K)Q-wi4z&pjvZfYk#;XJk8YHft2Z2 zQFFXgJiU4vqPMyh>xYdxM+SHGKoN$+qtwpoYfX1JAAaPS{6k5nX)bUibQwP{sNTL^MDK`*io;>XWANjV$HBlG^Xo zdVdJ~*Vd~BUCQGy+JElM)|!UaC|XTG0mURqCU-zj&I#BJ$im_9>1CT?X%)}kRLw_< z!2}!HK_`#ymgSEU7OTEie(!dpsAjT)n7LI?P83q{5D92c24)Wfya~f*@QEXsHKY(u z4{v(Sr}4-nfW6{~7C`InRgA&n+WApJh>VU6VWJ_p8`( zU?okYC2c86^nZ{5OrXyPaT^Wsi&3F~Fg_O1A79rir=;;2-63S}uzl7(RfTUxYRT1? zhqCKA&994Og*Y8fl#{9oQl)H6#=!oZ;}?^t3=i69u9xC8u6d7mzn9f-MDLe#siI8i zrf{V$DLXhLpOKjx<8&YSVEQf=thdc@>{0CLQ75ra0DpG>08g$o18XI9R*sdr$}?jP zD5M1ur+ub)z)EeUTQIpcS-Ly%*}-lUmY3B$*g+xyKYdjIJ^4;5A^t>X{+9mg<-ah4 z>G~$kTq#!4nh!RmBuPp^gX;I~-{pclpvVhqYQkJU4%!JSGC|{lAb0v=xkK(vXr8R| z0+t|^et$-Y+FC<=HIG0_9$wEO`LKIZ8 zfOad;OasXfAmbLH+dxf^CYLekFNjoll(y0J8ER0<>8jV4+Nga#WqJSwHLf8)l_yXw zp<9j0!d9IrQ5y)pYvujZ$lGA@y9mD9-la`Ss?e4ejhs=~jko@10_wFCYPs7Os6%G4 zzke}b;iGw9({I-n1468x5elwp3H()!Cvr*@C-xidgH+WCuTzUuJPNyWx4&ksqE1#IvZdJ2Cs;214SvqU#h}7sHf?8}Lx#TJ*9e-^< zhcYU3nRn28hwfHK>YvEKs`Xw~7n_|Z2utZ(N#PDBQht;3AGQW<2ASl$Z4=uH;@3>y zWS$ny=gUPg({Zb5qbE@hr*3wFcjOFmf&@ zB#4D1gh`m=_1gs4wRias$rHSmf2a?N=^0zVcaAK|hM%GErJU)|;sTPZ%^NgcT1eO* zJ=90M9l^%7>Gfs5mc8T;)TFvyFv)N}?EM0}T0Y8O8<&kLf2X;6)D<49wtsS@NgnbU zQ-p8&;q20C2=<5{8~rUP>NK~4NcRj>MAMLGfc z&p*B_X$bt!2iyDv!eq`=)Odb3iF z<_r$gB1SZMT5@xPRck+<@qfTQ=|0L|_L!ph7T1ofU=oFJvGq@G?R@x7+6TsCgt5wIS{a&q8kOK!dP_)>OWVde+b{vv$ zr)l&XtT2oJ0H~`PtxnppUZeY>k@f|6AGj@4wtl8{VufNgXw6g)A%6qs=1}kS7#9r# zMp}Ml6K2%7=DtVyORqopaQr>hFy&rX@p;q=B}^q%`F7b@gr30Y45*K!Ps<7}(UX8j z#{U3h;OEv_K4<%`U!H&P=yiI~rw>g0U*xN_5?iOtnNq&iv+~zYx|D+*;xMxwnZoxQ z>_GjBw!O_h({bpymw!?|#&5KTr!=nBGvWS^IMKF$$H;lAp5mnr z?JFGWW5FLU)fbpgN?vTuc6;wlvs&_BQ8LBzE8iGNF4^-9BlJ}$jij?sgsL{=2tN1^ z!pOn_2P%t*tKl}Z=6cj6A&)84!1bkYR6YBHx3qiVep9{5{C~g#v)DR|cBXYGT|118 zf%8lPJ>*D^(}QaWuaiQYBB!+(Go!(+d+&t1Mo<23$gV7 z0K_JG%eQ84^f}h0`j$g}QtnGzsz_`Afv6}E00Ft!ZN?+vf=35AqQ_ppG`lSrUfuAi z_NaCL0IK=!n}4M?oULxn_v(}>)lyn2(uK6pFsGg?Iv7AC4NFi2m=Z_@;fy)D3Ycc- zFX+8l*Pj|WJHmBVS8v3Z!`kR`Z<@`r`$VNVM4Hw{r>NXn0HMH=7Luq7NLf$hPzqzi z$=Y~Ncyk4jk4_b*r+y~9J#~7K6}c;@cADVi5E!dLKYz60o1Wi9rn!#cS}j*Bm74?S zD&}e`@k+EJrF1m`#I~g;T1KSGNzy@pPS~buTKn2=xkOojO48wyXzD>z)QvgwQUss* z^}~0EasnD7go@?UW<5)$X-$$pDKejwcO2rpxQ`fDXR1o>L#Sc>4pE_DL(&SNMmvev z?ehd;7=O8SD4w*e^DS|E{;)}Mjp#bE`27;&RbPdi<2R$ zbhx*hWkpIUDI;KySTIilX9$wcNK9ti?y8o54H<1nP1%>KyxNL%txm1QwCPzANh$Kw zl1%JI-GIfh>|o(XHO}gzsPOsJmhM8X%bIRRpMOMo4y6u&sn~+zNr>7c8QxBn0w9#Uv5D7Xz$U)U0Cn8os-&%Am*Q5#w8v(( z6o1GurCWjk1f7o9E5*`LZZ5EkUSqa2`q@>?D@7N?tb8KOpcDR41$#z;>*Hb11CqdW^ z`BcxNk=$Yf*-V51zFQF5U1IX+iZN1@DStbZ^QJlTKlXlamLVgRXD0}1jMU8?L)2_i zKUTI`OYRDCg@q)NJttP`8dWLeZ9I$tcnZTwLFMe_Sy6FvrOO@IqP1GtOSDNyY(Pvb ziGnng#F-Fhd`7<}?v;=Z6Bjy#U<}k6s<$bY!=bn7o@GVG)>IRw5(y)4NfH3ukbeP& z?y+bnlR-ySo9%6>;qm&7K9aJQR!XF75$W}q_L%RBHU+4&QJ83*bq!P88HU|Tol~^# zCrCWmu-(L z%_#{|R0fUGl|h}1q`)z|3-@55*c-yu-rd67+9@t6VW*m90--ePC8pc}1tk*)NHPH+ zZ5s|SLW@ESf~6G!1SF6bFrW$AVn5#u=v8o_tW$0*ykPnj8qV|HF;{}734h@%wLM7A zX02(8N~EoAvZpE?Qj1GEPxx}8k+4Ygfw)xfB&EmNB^GHt`1^$<8akI7E&_#lYblZ3 zK;%ch3=wElHygEGOCJcUi-`y!NNkg)Q@_%C%wiHxCeaF9dfVW)!=72rx4xsy3=Q@sHmx~%k3rRYtNFWkdmaz8kHo1NJ@xFg9l+C5g4!vqg>K?Z_vw1 z2~bp>!2&ts5zZF)h~B!4H7yc6;tED$D; zC0Cag)tvwttxTWXrVu`DbP@TqAWS`+F%pF#*6M)CB(xYsC{-PsFDjQy7C zL1i!1Eh-TTwA2ts{{YjE-xMAxM=1_;vYKaHH4AJeoo*@0ibvZ@Qk3c?MMwj%?g{OQ zyrBfU6s%b);gNI2H8b|S{{U+ZRx%u8Q@Yjx-*hK*nCz$^?0{s_^iRIWek0~PwJbL`upOD zta7h$v}5;x`(YJ2RGmpynBam6PQ(y<$b&ubBm#=SMW*pkk}4^$cNKbuq%Pp-2}vSI z_3mTb&VLeN2cl=1;5kxe3&kZaS*^HSuZX6k4gNiS!l)&-hyLdsP)HL73V<;k@dGxh z4leaj^hoC1&Rc({*-tQL)*fYTw_jq*>S~UmUSLp)r^{5T(4DmhjPo0qL6$aN=UUP< z@;KNP@5lFDcHh$95pPl&#dJZ&Ks!^_=DH-lv48&n#c#|&{aoj`!v6ph3G4JJ!%6=D zSot60_Diof`^HFp6unE!cWkh?7L+#a`Gks9Enk%>t7UFe6&}bg1(URP!-YIsatCbV z)N(!KAa;^ww7393>J9xl`HD>%xh)S%jj6Q+0lA5idv_R^AQ9DO7BZR9-qfQdWP&#b z-+$yV1+*&p(g1kZj6%3)PUaACKq8@h=@iO~(8$aVsMg!Aq`m;m;g6t%tXBN#}tQ?)HR z)3)1LZDo3v>u-<6P&Cw9rM%6{?SCHIev^$20U(n}og0N}OM%jr7$hj{Iq$|PTXLS--gyO0 zCZSx7wR1DM_d7-x>X;2-Fs!>!*=U@-Uaqv%l$7IJ^>wuAL9FywgY=ey=4!VfKA0N|L0R zk5D^DbK4e172X$-d{o&inJ>i7cFDJ^tv$Nfi`(})6#N^mt;Va8n)C#QhRK(djmZ3? z5Af!@@D13~OKrS>J%5r%UrI$Zkr#mXP^;jZ$EUeaZTCFCQD|Kq*5FH(3MpTh;X^G6 zok}~HCszV-t=@BAZ5SUj=!Oa4G1Hx&ph8})H8fd{trS;ESCL4yHq$hMYEs;#w>uAa7n9|q2=~t4r=?lM`QUOZ9{t}XSf_EctrZbl9J?T6Q8^XyAJHRmpaiADk`M@XF-+$3$b7y(Oh#rc&)Xs)=C!}pR zc+DAPp{3LEje3-n@<;^8?J^GEwjTIsAe|C;+kMFZ zVMa#AETd#El+$nF=#R;FDum{WD$4tMoN+IwTYpWor7Wa=QV}x~5g>Lv93xc0UBy|cZXpls2D<^q{hR(`{SN9QHY#Fs=tNM zd=7Mi+H$YljZfU>C&Pcmd5VZZ!1G_oyCO-$-uLeQi_RINu;{{RU80H3BP znotT&=*p1rbu04fAy3f2J(jqA6OkZPOU8D&sE9iYM- zT7qFJT99SJAQ7rSJOP9~k8;r0HK~oSE%nWsA140*lmq_&-NR|~s&vMa$xf0t=VSVB zh5rDWIaf?43NI_Gs;Z)^Ur$?Vp?{K8rv+ncQcRu1q)3Q8y|6yj+M8M(V5i48=GqS} ztF5N7MJe5X3Y7!z{u+ty4`}0j5R!#b7Y99jdW^$W2x0oPqtpHy;Ig7*YyzWyq~OEb zd?74#P)@7!U;h9z%Z=25Ai@-2s6=pkan2YkqF=O46t2mhGR?N$hTW|md4Eo&Hp5C< zr+6NTjk^*s!q*;%cUDrW+~C#8MF_A|sn=9g6<-k@EVfXR`AJ$Lx^kmSW7c zIm4=*TRfi0~T zRslp220}pkZ-tqUbMq;Iw5-P9#ioo?*;#D~LZO!08UlTaV_-Iz8^$4>!-9d)w4A6J zudG|e(!FU33R{52uEGZZPrl%Dh54?#wQXZS!Y#6Z33{QaQlm;+Cr(HRQcRt@HMh#$IdbuL^3hDP zg0PjsHw~kIQ9aMF+7Ic3K252tj>xp$mn^YuU@*k!N<_KkfPWPyefj-H->xzjl5)2O zfE1yc8*)^NB9%V!3a3(zl*||)MEiHxp4eXGTNQ&ZNRCc6L}Y7dJLkg6 zUysZ3UM%ss_Gjgek!00)oA8^Mt219o*5Ef!$EZ8r)U)KoKE@06BGRDYDZz1Abt2qHN<96RvfpGBSX zfzdKz+jd)wx+|)XG@m_m)oV#A?E_Ze@6IRTTX|LHnpU2lba$yeam|*Vkz`vX!s&a= z6HiY{y7hT&FY^}`x%9Mz>RQ||5)&ubpOY8_(4o~(c_-Ab*Wa_-!wr|gE?IATYs4|H5C_-Zpumu5|Jx2PSH|=8$O~{<`jZdM=n=7N0HEQw={-;dA?V%`nA#y zlK9*3>3i_|)w^{^-1p`Z7^*F&;_Wr9%9yxQsFS7Um+BF+#-u0|tw5lH4U81#xu5D5 z7vM)-x@*>N0v;kSz8`v|`}VxYm!3-6x>?_Gntyw>8TRN(wtAV;=Bt`a1=U%rLWv&wR|NaO#*OVMC655*dRwG_ zY=5_fPNXTC8_r}lYPU8FU6@mFxY!=VPqCQb;F|8m2@V{D>nC{2@fll4(9NC{@@G(J z)(*R;MY^?5=dC@J_jTc*ngDNkVu`TFinzTNZM#~SsyeeI-`92{#`yR zv)XNWS3PC+Gp0?v+HcmHgv~AH&0Ni8GoxcDd6g+Anb}w-&c~rFAeute%a-bRLtDptF=^9)S>1o z1Fc9G*=#McM(1!2 zC^()Gn8D!Etz0}l=gJqUo3_zeo~L1Yk|`^SLOm)H8hNC_-aRTj?qe0boqyEwk9E#^ zg5@qlu0y>+v70iLDHXQ{l})Tj*$$XW#~USPeXtIDQ8ljYh0BJD=Bl5CyFBAf7K?2+ zUg1EN!iNfp-bovLh8Y=cNl`Pn{{Wj}ox-4L0{e}5 z&8BpLfUqn zOoPH6{sn<6oO!mB{TB`92c|@in>v~dAwEK-L~sW6v|Po z60Op)F~|IjSlmLq1%HdB-upxFp_;l~0kyDkn4-yuP%P)_P12$?i#21$v*f>5}1PwAB7DAJRtYCLiezwU5&Dz?`Mg6fKaB!2~hCN__l7?}7X2G(4t zP(qU8i6jDJ+uPrm#cl$rLM<-8z7b)rc}kJ+Zt4;@^zRrO%C?IOTXlWD)aYihpE-z8 zhSv*h$|HT`dXGK0II`l_+8P9@MtaH~Z;~?2NnW5fsfp)(j~wGU)ibgABN3C?8oSk& z;Yn5S7Dwrn)qgUb4mna(Way(u)1s z1qeH(dnA#l=|qjEl|~2$IoHt(m5SSNZn?1QX)>Tj$_IIg2ipb@svO!u*Q%jy=>BG{ zcA+RO*eZ$?`^#u0UP_>aCw*FgfOaMU*qlawaGM){%ztV1URm&Vw*@T{=`QsvW%MOs zE!QZ)kCFGC#x;8`j__7@H)GE$(pJkWwwl|mWgT7Wu-t0ded=n8_i7lX(83wg!WOT= zK}%spDcG#3L`sP$Yd|+hj~EEbo29`FmYd6!hi}76ju<0d(1f@fSPwN0C>EC}CrKcbq>3OBNQ=k?dUL0A6t85) z*>Rne)|2X2`FK0~{P2egOlNgM&rGo1WObIII!g(FIROcQ{IF4#avq2}bg3aKNmPA! z7-`5$Y4u-QwCM#>N_UVsGr8Zk1?GZaAcZwsD1TK(l=^rU00@HnDwNEEI6nUXKH~?#Pzy}0>T%X}G}4Gl zbu5vvNaXy7c`+ET^(r6|qszBT&rs^ktD`w8{hq3l_mb*zl@e-cS#xqw?Q4r}jfHK) zkAH*m+X$0U6n~hlEYi&Jbwk%5-F4oT_&Dp2P}KUf_It2o)~H`;tDTE1xXteMO0_hX ze7B!;CX$iwEymTO$f*S@N`lBBoD%qn;ewAj?POhcG=5%-TXZqDi-|Tp!~3fThex~z zRQSTr{t>eNT5|W*j+5Ff*ITv2JX8yvT7T*5*$+1TCz_=O3N<#DQp0T}CFWp4(~Me~ zrt=ut4qnps=a3v)>~tW3&qoUDTl}#EOsWCG=wpIgpOIW+t3Pdea;Mw3)9njj|I~aop9} z^Z?@en*)PMddtx4qtol0f1^6Tt!t|fbYeQzpp&f^Zx*f zuNQew!Ea6LdV$xRmzpfEQY^I1o}$jJb+70p4O7&kRU^el08$)ONGnQAry9!-lwJrR z3nUvKE=Re*EX>gA9{K{u`+tT&^*u+#Du05nwF9FbGWu0h)aGel$nMZw+_u+SGeymh zQ|L-pt(Vdehfq-BOoW1yAwpoB8VTgoJ?t&Zdh>(s{nF>tO2a@B2U<1#mtS+lA4MEe zRQFbL!|3w>Qz*T#=un;^3MB1240M_t4FGLtY!h^8KLz=FUzTl_9Dl`kwAt@0s@+F< zs-&SUGYL~@d0{89l8}?X6OP={nI2tLdHJTc7PMCt_e<)#Qx){frKhQ=r__U`;MgEZ z+?4#HF`LYD9cL-VAm-9TUzaSD$!ePQSgNLu)XdVIDsggUQf3GQlMo{s8$0=ErIJX& z!;OUwXs51QDWbOpF@Hjql-{!N+j*4}5!h|FKKK~i3A4&hrLqQq-YG$2MqX_na@^ba zqVmE5kPM|qbEND*8l%3`IJpd;m|-dr2yVw_%9l0TZ8jSdG_O@S>xrobojP{Y9-=-_ zHw26fPIIIr4w+gt42~!Uat;-4=IuRwV(hgpDM3j~fPzQ>M1K?Q{{TL?(#_3ia0{4b zHe20Xsp=`%K4RnLsQ&<`*W6=3H^OLpK*(Fy)>Ewm$w^cyN3r^UPo5wpQ|1L?mhf8u zxY>co9FhCth_y}BRa)Mn@P}FmOae~&wj=%VKxH-Zhc_5jK97-Cc&>am>P;Bja3y1Z z<%u``Q1`67lYfPNOKAkHX$k}qOvkwWH^zLaKynisBMM#BmiJfU>_=_5pQK`yx7t4B zyRG`a`DHEbtbR_B(~&@Rnn{bFF^FF>3ylncAK_t zTPEP`C{qoKk9DN2@&3sONLDpG*h41X|+HTDlt@Hk34cUyQ|W9>J}O;h!Q zDRmvD#*D|462(J-Kc1$6^|oi+`A@O>50)L_vTZX%d9dI;94P%-vuh(HwZpL=U*T{& zUQ=@CPUS*sJppJT2_sPe&l`O=IOrKRo)u~Io?yG`vrlMEHPlx5WdXHzN*is@(4TS#STNN6IT2h292|?6Ooqzv_?kQD+YM`!><3}J5h4nbWbwWA4obAJOtFI;X&c}YuY6lyL(9gf6rxtQ1i-<&wa z>H)m)rc6eF<{wDyU{fX#qk#ZZx?Q5Q;l#ncOmF7-AS z?=8~Pzf6Hp-7BVD2?Zc1m;pq|*bR@iBycpeJ8hfllh;rm#6rP=DjK z3aF+fkhlEJ2?Tmf$Qyz-i2^WjvHoDJQCW3*h|EX17*tzx^_HrViX{TWj)$5=2}tK{ zq;8Y^hB`0XBXh{Y;I;2#vDIj+<=E7z#MeICYILM0%{oNwBY$nS{kFjfW3C0M=SWW^ zd{$|$we+hkQMB%`l5`~}QQu*<#D8oz-)u)l+OmnSkRCFf+o?LAUGS`BJ7vY%q&k-+ znl!p}s(%oLB*x-BxfsalG%Va^a0B02?Si^-MXYrOG~YaZQzv?P*Q;@Q@tGzWf!NqnUr3>4*4R32$A1ppHTK!Y2}i0va7wYumcjMmfXeG~M)9p<w?=>x^$==8x1V$Su&6}jrly|&Pl5plGZ~AZbn7^^t$cP!=_`O zETz~uG&*`ER#d#zDDxIdw0|TOtCQ*X{{T+d?g|UdI?7>2=AXn+=1&~|0IAqwIS4ea zeH!x@nNU>W8mdxIN7X;R6)C1C#mOacPMrCo!E<~hkoJ4b>pGSM1AVUNY)HTToY7DD`PRlNBiLHD)v>EFTd+-q!SATU;DS`zR++d z2-`$1mfNTMJ8ihB&41}@+^2NR`W`?~AN?~a-{*|(%g?C&Kjk&QliXF)B3zL5D(PBz zMpTkfq$+(~f$s;m>xG|Zlx(sU&Ahu)RS#1*;T!^%ld%#AKA8t-h}iRr_DJOrwJ^#z z%@W&B1n&hDsUN&2+W_Fs=-ToSwHBtR(q6b->02GuP~$27WPgkaW-yC*Jf%0h*^w-i zE2+6>i*mvf0j3g)#h;LEy+vQs+>UTQRE{`r-^Ev$#^%>6&3$I7%qdkKPU#aXYf(w9 zy)@WD)5fIJp=1Fh?4=kSj2O{BJI#B)l}Ay3m*%Oq+?Sj)MQ@VDJt0%BNo9u;%{x7# zaF)}zWd68gn13ORxb*m+kg`&&z17`XTj;&g(M*?J%{GT>CJj9!%Y2dF@}o%honK62 z)9U2a$XX$LK>q+!fN1yvZ2XfXjj=ZO0(%Vq0AxcwKd(b6L$xiY1ZhGFqxC0jbXySW zQbUhGr=;nveN{qQq^LsH5`7*)kEw&O`QQvOjvR;=9)F0YIwzT$V^v*M6Rxg2%_&d^ zjesDC{dYUy1Z-{lSAL4ioZ;xRU6AjV=D-%%N)yX&C)BT@j^8Q429D@xs{PW*bEZKx z7OJ+}NZuM!w)c<-CvR*Cx??H z0D~lyj{F}^+jqfLs=6vi)k|r%Dy|koO_jJ(-0D~V02FthZup!i4VqBp_THwT6^|td zeZ@5LQf~We?ED|9_c`JR!q5QtGO@D zK3W)^D_ep!4T%CfMgh{bqdccEgsYvJ-9bpgt0>!Lu`CQmy7^2Rqh`C32? z2y3D!>I%H2uUdo`bp!R>AAaMUEjhLVTbAuOu+dSooXORLu);;Pj<%Nd>{b4 z`mg6RICX2NJy6frKCE>UH&tBo4f5c+yS>H5l3j3;VFQGrA`+AV0U!w56fALRxD+}o zmPP6s&YC*)lIn?qPxyd*yBLE5Xy4ppOn*`y7HOia()DM7?+~@QBRQ)fTqzj1<=f>t z>8=*a6y>MEC!kh3+t z7fzm5)jV7&q*H|tQ7L4~-KTVhPzJF%i z;EbPR%JnrBFS^Y&qMn&W>Who+5uq)iG9btRlQYZ-#^$?!pjpgrZYh4Wcna{3Veqe) zYN#*ebzMWdTN_?tx-<~$6pSpXNTa85GYJZ9TGXvRa?(f&N)s5h8i6U=-U0dg{{RWG zus5Dc>z!fE)Lk~nujkvfO=DD+_kZcrSzB+YZHFk3nQ+V@D?XEw zSs4>IJAvr5MH8iXXy>BpeIM#Janv8meTxmsd)*!pelC#y%zR{lqvAEEF3ujftN!_`|gYu2l^6{_2DqpEV6zJ|VrtrZlN z4J$*eI?+%lakZsMQV0YPL`cCmPVe`95X&Hq<*sS4x{rn)n)t`@OVxXCMfwd`-OBr3 ztxh#VX8aloV4xROQv2@|Q-9N-Zd_O%z$ry3ItH8ulH-p50DrPanl6KKx-U@~&D|R6 zwrA*vR~Tiy!IU!%Ri5)p8rnre3n(SC0IdodTtbX$LefCr9PcwUv=$o3OfsieZux!G z)#Oaab+uF^4JMko##`KMH{^W*!>pd=`Y$p;?JiPYk##n)Q0mNz4Cr4 zhW5Z)ZU_TJa8svfAonM7aiNn?^+1{A%|74I@H-vJAw{0`G!W(KhMvUf+PJd6nhk^H-D3XA;X0l?&6nu%Ux#amU3wi+A|F+!NDmhaBe$&aa+nEM}=Wa zR$G%gTYZ-jPXPY_!Vj^*2a=&}9#E*WRoW_0-3?xZx}|w8EApvP{u_XEFkwOoA`FHJc5y?q_M__ls5DE}n-*W3B-phl`XG4il1r8)iRFk+OIS~hM zd@UB&JF3gpdVhM_H!bzFtkhGyoi9_=Fqa#29?D9AN{7hK1<9?jIaDm?;cujQg}3Xh zmIm_0%A-!ZreCE)O{qa4DO1b{X<`5p0!(eFU`ZhnrxAIj!n3DEI-S!@%$n@{{X4X8 zC*iF1)?}?zl`7nl;+N|~SN zH5KbN)_+vkt_pJ~SA?RG;H9{xTS(bbV7Q`p1i%t@fh1rzXN6QdrPms28>O9!wyIxS z3S}#4btx!yV@N3~3IK&{2?PQUARIA|BOwc!xGGXFFS7ptkPn)qxuseYv}r2Xo=gef ze{4KEaz@e$ovWZ*68jILTnR1!oywpmzUE`~#D6A{52{&M{a?n^Uw-_dp|-b3*hR(k zDNdj-_>`3Zgn*!VQP>Frc3Z_8Rx;jljiRM)t$^ppH&TM%rl|-C4sJnK+XFHu^~ACU z6#;5y98;~yWxYrcrIk#_V0i=jV#Ojr<|l3KGR-^Lg_~$~OKhdubT7{(C-A{g*iUi3 z2!8^ExCDKs*yByQ{aJ0ghw2OJQV>+y7a>4%Au>XlaE4u+gtZ7D@AG}uy-r429=M))D&@wvdh zU@Gt|{YDc%5KKE85ht7U^y|@WY4N|)n;l}jI;7@o>6$In8fz{$8@&ZP)yPr{p?~tG z{M4-IAZtv5Qe*?RB-(uzocm8CdH{kK&oga}8OpchKM+=qs@N$rC66n+Y+LEBG>og_ zsuxr#9c`MWH1#sl+v#m(w5X(rDo7w5g@_Gr75sih}NG}KLM3fPUQ&+o{Mu+KS`2#KP-5AvumlUt9`Dt+eHP^KHcW`qQR zsZHGw2?X)8N!m#}oHy~)0fw}H=?Hw56Px+0Qi@=O3hUl%WTcHVnv{~E9e;vg0X>ZS z;*PgaIIsPoK?FeLAN|D(QD~~U6*F(nS(23tR+XlwGPzhEK^u)Eq$H3?(yc&_cH0nm zmZ`kaBmR&Q-2^1?fA#YX?mi^0K`B$zeMbIFr>1TK|Qq-^TWTy zq>xkE(|-kDhG;k>SFiGkYcXa@eBFO(%N8qJd8X-mQ-X%gXQqChwe&O+TysGSWeG@9 zWlB;2k-s=hl4uJ_drJ>+Y$tg-o3@ZgTvF)wevsz74N)1!rj?qfTMjd3rMse{vY7Iu ztI0x`~xYz88}6t|nJHai_{>H0f^?NU>z z*BG_iovWyDBuq5RNh@_{fRuts+Yz9WDOhgfL-0^}D6HYdm-(>UUmpu4=h?dAF!H2a{WF%W6?5Kx)H8*OgGTsvcjM%2XLi z@|>u1Qd7$D9}=DoIFy3y{#LY-2VMa-f75~q6iaP-&jbFK)Ofy@S#(lD*T>6WDEVOzC%R?swR9IXTYNv}9+b7ETXkk(okjxsOb(~w$xQAEuc9^OkJm|eE@|OI^sf;rAgbZlSlZy zIo<`djk~?AyPZIT{;lA+VC@fe4ASS#;T|U@jy-sV=S%^o29nSNoZ2p`X)e3T19uz+ z;eQIhXm5|spLl=i&AubLBtNvha_b!}&n^5_WueENHPP?X;iJHggLIA zq&AYIDJ_A9YTVg%O!FK8W2&rI8v}VHjDRzfSAB8nwEFmUCG)~sK@HmGxK#>kbI2TI zo9asQzfSx|b#JFVVWjJyPdblxq|Y?9m37ovor<4`uT6hj?Yx?bzcIkFr`DHWQFwx& zR9plpAwiSWx4pJ(diy}wY!y3sXIwJxPpZ`6kcJM{%nt2LV9jNB{#s^-@(f5C-U0Rg;uD08S#4vOfB&eAE zj4f+G+~aPl6y2xhN!#uNu6EOa+ea=WX7GQ}pMfVGX`{J5$z4_d0L4|{YRQx9Z~YXw zD>>cnw*^}|bCoHYb(+hw$ysf8D~6=SrhqR_ggZ5Epeew@5>iRV80jg*(DcdoU+eGf zm6pWD?s4D}Yp~qvkos7H{0XsLgKCQmW%j^rZ>Z>Q&i9@SV@?yvX_C zA`QlqzY;@91tLx6t@`$>TwbMAA#W%ol2_V7dlAGK+YB&8kGjF zHApO})8(>#DqmnX=WWDy!TDqh11W!wB0)sqZ*)r*$70l0;R#Bd)V-Tj>`9&W97x;c zh}Q4r3!p8c+dw;dRb^d0HFM6qgsnkgXJxBm5+j(NM*{`r2DI%If>7cH<8+qYDy`mP z-+c%*H0sonmW(cTBho~P-cK-g?Sqad@Hi`;>fL=+)$}2!2oOOAK_AvI09t=C2rFir zaq$RhV{Jae<@5glwhQu{tJ!PiQ9Kd5XL3339By~xwkXIH^3OoD6suCpDhGokoD+X@9( z7LKtnrQBJRdc4j?;6VNHEO&oa)|&+@>wr=5IZQmw)6x18lQ1{D*3Rc>?Tp$}iNEh} z{{U%Dm|RWwpV(+QlX{N!hqBHv~3eV>xJDOQw9R97!5H+i$EDIf3P0tY-wZb%`)T+d z%cZCiYV@(Ya3=QrPCkFM7h~{*-H$lA)=wKbcc-q<(q;x9w&jQZ796?TXqjDIRY6Gg zt!`GW)aolGLYXN92F5i;#_4oIzykiG)AlE~m z;Qf%4T3RomQ+V~thdKCp%bA*+cQVFt4Y;5`D;2cMLH#_|86Q)C(@5C7KoUPQTs}lQ z`9xd3G6zDupJ#3AQdESL$b|#{03>6m{Gx@Wt7j@wnxXh(SYIG}e?QW2IizMrgGi<; zUT%p@l@K*^st13(dw$pg0VwwXw4=ZSv2eA>s!u+5egwZh#K~Y~Q$`aG9g`K?3Mqmk;oG`|D2t4+oD(fkk zsCnuNz?8Vk#=pyb!e`$ z-z~|csH=ZMs-CH>ZKi2l-_tHFAQBRzyaHfO;&RX9e}`#nnrsYEB$4n7W}CuUsBkTC z0G#Il{8jGV;d7-9To|LP>qWgqYb#r9Tm?#HKBAPaojOn=L>D{l80E?1+WmxxNbQRM z0Pg4HyKL}J58gk`y#D~WAJh3)ysw+OZEU-|-H?B^nbMW$D7n6tT3Pi#05+qiyoG{K ze)!~SV%0r>ylnSp_gyGufV}Ldf$RSODNbR}_j+r>s2a=Gi+a$cq*7A(YbXbFkf#cy zz~BKRoNCi)BXmLAiS;=8VPu|XwpyS)2luokPHCvBd4GCT-29f)sTAxG;sHAor97DZ z{jh(}BscQap)$C)B+?$QG+PCg>vKwdg;gaj6)A$*1wJl-UbLd7s?(?}7%<9x#|u$VcKN9eWYUjrWgn7^?P_9uuooqU~~d zwOeg(K7j*MXe0t>ZT1Iz3EB}gu6Gz?m7)rU-xC zN?SHYs-vksRn~;8mFjJ^sY(G$)?mOK&g71Lu(2a}DV|xZD-8}!YL&6B=!VB3Ew??- z%;Nmk^i(5FZFXYA=gM@ikdT5*j^D%2J75dJ~aS$_Asw`6k2n)+5-d2OlB?uFG7 zg#rkb01S>}jl19u#~Z#ATeu2BQ(u3xC7`&f4C!)}h)_XkumSDpME?Liz3>*(&QZ0L zZEo*SdXC~8LpjR-04^DZE)F&dj>O2{u-xy9{{Sht4GQVUs?q9v*>@VQFJCSzRDLC8 zYtA-4aJ3lcn4Dhv=mMKZ7Nn!e*A{fWQGMTu*-}b_-3d z`BySjwwD)ax3#NqiiMQv`4EvO=zm;Mk>{$ttm=+kgE&0Wsok%jWimFUWnY)r5;p#^ z+X7tTsD^@!XDjAPme7W8h^K8EB@NN00N>n#f7cc5ccpYXgms4~XKE^ixp2<(@39ce z3bTZi!5ft&!8>gRefHQ2&E$XDyb)BL+w7T^qUOy5Rn#R48lF;V6c&Vg{&JFMu@U=W zZh5*y)(Wz(c5JsrXQNA0trZyjM^*WjuIe&9{{ZQM-bx?^qTgXHeg!a>9gx}-IUs&x z-aqZm2YEy>$_e{hExbzF54=JARh`GUj>F_IvhsLL*cE?2W=@>+mo0yadzd@`NyUjAIOPk&K(e?6$H%vW+|gRAYu1{@p?;KHo2FGdgqYM76A)%h z;jJ^8v1tX&2R5CpytQ<(D>q~ez>Bq^v<0}Ng!$CXfjX21%18tA2#(-$gD1034@zb%ocwq|>$L5RX)C z1fEa*@q2*f0cq&1_B$&SHLq7*o%57d5|&!uXaEDg{mfwxmiT{K8y<444c%$cNTAAy zl!kzj2~v)j9fv*egY6X1+C?V$Pfi10h!PVCTEvn&o%RERfN(`b@Pm4xp>BC-bRBwI z2}BvxV~{6+ez>G(@~cKfqHe0Gx^~hDQ9Bt5N%r47?!b-qAH1NA@K^;#O%#>3q4?jPUuUzL{H z`iCjP++=yE^g1Jm?nki@aia&4lXjZZUaDyxY2?CE2qj(SL=pP$zawlw2sVhi!tWj$ zGqJ4BmgOf>bgTsv1Odm>9SC1^x$`!xFKYdyej1nKXY7BtzN*J>dFsX}f<-U^t z07if1Fx8=^vm`d*)KUr?scpGigtX#PPnx9+Gsf43IQzek32sNq;XHwq5RE$c8f)Q_4J?*Io0Y=2?VIL&*W_>GN^f{ zC_yPw9YWQXo8}OC>Ff9EwKTZG(hY%s4E(?3E*Ie2r5B#H*zxPy+hdfDUrC9e8w~CgP8V#?@iNF*y4TP-E#}iRdX&uywqj<-;%F%_ZkYd(^h}d z(@__TZl`h}K?A<72q4bm8zYUyq0PuhbExfiDV>|e4c3vwri-Wfox|BK(Xh&3cb8sF z2=9$i#Vdva%=#Ti!C9%gmDIkX<%`~VPlxNEvE?@DmzgsaJE?uUP^oz=)0&ks6o!M2 zsVPZP!6d*0Z-beSh9LJ~d=SRpF~ol~rWpgp7gjPgP^igWNxRzuNrv05Qri*oGapPL zx|XItNqHmWy)n_hwhP5BOhYVP?)0~|P+)n|+LS(INS*zL9lfOGW^_+rpiVolQS`U% z(Xrf|r?hnkDpuQ`54PjavV6p$DLRRi0!);^1PPh!aW;Z+!Vq2$w7o&nkF-kr&Id1%W@b0LzLG(qS(nY zm9ouPs6Q}L&{X?D!3U6`a2$WCmHz<5=ZB1rl(Tf|<+g#OB`9j1wU-$kfJy_2N%jB< z>;Sq2?`M#i2&?O;ug5@ zt9=}&6um^VR0Nu0w^Fq1Qrv|I_uz=dZ9Phx+P=JAvLK{nk%iUJZd1is++^DSg%4FM-`+!bFaj)Jy%S=4x*ALCI<=J? zL1E0zPhKB+O{S`uvJ&=`4NnA;LK~2v6iG~wH4_-2D>0i!Vtao^MJj%3&9?JKFF78n z&sy8XF1VY4csWi0TS|NsEK5))Q4s*B7$XNBrKDk3k-G#^ip^2gg<7a?&$X9LEl_Rt zys9dP9UwxYJn#a9_mB)vwjLx80HnGmG-B-+YP{Pm_xhT8TVZCcyL%p8!lBfqr_>7c zwnT`C2d6KTZ(2vOn`2dSmO#$X({)aco^#r*OESL+_JNruOANX(}5Y z@gsN~0d{|?M>Nx@b{PE;2$~2LpPHEouX>!cyR+yTwr!K4BZ!#!{{So{&d&`iM!uwU5ZPj-BMP;)l+g`V_qAAw5TBd(yo%FDzCQ8ZmB?Ul~p+wqdp&cgGzRi!WW3*9pK{f&;@qWwH`#A#s7+N0 zUu{6ORGlbowE|GJlm!E+IL#cfJi0kB9tMBfTUCCY`zf*Sw=nQT*VN>AlgoWLsI=LBKGT+M79-?cpAR(9p<`Q5%i0#VN}o_c z46AUWk%KZjcx$eYU%u;Zng}IxgNSGVk#~QR0U%>JAP&6W7DuMM3;4o4?a@wALiq#EOQfo?l^2!dBIF&3VN=OOZ5(jqg45rz&&5@^bjbi=_)D|{a4W)Gs zQNHrj0YXrXh#!=YOqo1@KA0ys*JO}A6(7aLDgOY<_O6ta&7{#>X&-n%jVg3Cx%YpS z%>1VZr#qygt@Ij535P+h*^au~OG{|KR?&e{(^S4y!AMJvEkP-4fMHTe^pHeuM%cOb zFk6to3%FjjXyu;|Id+_N9`#nhy1tfkc6ztk5cM^c3Q-LTm&^)AN}&N|B_+T~3Lz<1 zE%Fz8T?bCXzw)|qM(w7uPfvGY)pUP)X0oN{r|nz%KUT}uipA6xu9jEQ<10R-I`eNU zP<7<26?vqRRGrL7z&2)+ZORY_2bKA8;(s)F;P4&RsweZ8SMNF6$yh?)R${AFMGeip zYx2T;z`r3XOeqU&B!#x)Y6PH#dXEXvX#7c%L%7ENTH%{+EYZOr`z~)lLxF#y3g-B{ zvgiXfEpGUUqCYOzf3%UucACu)y;AN_S%2TWx>|nw$?TsL3OZ%Br8LxONbh^2v7&*jP1SrRV_06 zJf&;vS5BzHiOzIO=0I2zKU0R=E0mBNNlI#bN%W3|3Vqz`LfSi(R43AV@OQ-$&@xe- z_LaZmyP=6wjo0-8jg>S2^Ckj^Wf|c7_}dBJ7ec1T^$2>u9vu}!WK)0V`gNjtBmzCi zCz15Q?rAor*B|ty72jx|MQGA|jQEE206!V<0sT(k#s$TVh%s}VFyzz-6@)^Ks#=PtttTVzyx9$8@7iDjSgY9nmxuop+l1X)thfi2f*}8ty$wM zH%SGWYi?_C>M&#SiYtGI#8RYiAuWJ$iTYh3$ZkpLZT%=G4Mw4@BcFJ?{nL9F+t+yM zuTmG)e8G`ATby$}Lv2#j=L-C|n@#mp$WD~7tA!zT2tY|ALMhOa6rx7vavu$gc#`eF zR_6wjU4Z}*$z2oT`se6Ijn8m|8`vD+&BvE*y`=TB3H8EJ)Bk?}wcEn>NzWPUtXX%a z*{>+|b2p-~72R06yxw)Ipmw1;6y+m+Z8wmFBT8Fsx?}*B+d#Jg1I8|wq@ViN#r4o>^g5?rk`mg5zvZ#Py&bmP;_h7HTx^#LakU49p1OUW z9RTSTV5#ue*UNufy;Zzes_gbW_tjV4W~R*5Q)P!~L|4F+s(rb3>d- zE*D*Z7fl9;UDJGp;hVx&L9?C1q;`tFtMx+v0FbU(V!?lzZuYurI!kJ96pNvGbjT_w zVIh}RTzPId;?N6eDGn(rKMn9GyfR zL~+9eZ)@Dvv^cwI-A-_B=UEj%28*%{E+cO6)zFTM_(jjwYMg;V)LyY?TP-Du#`Ui) zG{w6vwrhVWpLtC<@={95Db^gSSU>~t&;W5tQ0V*~eH1c1^14TsxB$yeJw$;|Ov{wi%(X_s2@X2jT3s!s2bh21aca<&4L0u$ot_>c5|ZLtORs>? z?_^@gB>T-Qv42x|EBs4Ss*^&%!WtuB9MN^T#9$X#2Y?3vk(!6voz?!1)@6Q_cv$I= zOzEuFj*(?5$|`DvJ*ngI@204!)d<$|-3zE+ZB--ykN^j(d$js^^wBt)CB&XdZ~))D zH{5?H0m9AT@xwNcQ9i05HAw?k<44CvU3obw$Fd@C)h-Cx23B`ryC=0eOeI z=#i41WUij)9Pv<^i%kN>I8aLK-boFk*rc&AnRE|b$< zqh&s_lkp^eBV=fq>7Tkj+0vXOl$<0gM!)^EfZW^-_ajVn&8NKsYrDJBo!u8>W`ls^ZH>#w{-xu zM=5hMlhoXn^-y_=;M&?(n^J^&h#-Frq-=KEvBQIL$0=?tedKzkIi|sEq{~fQXz8iL z?vw`+@fucEWPm}~fDb2e@5TpBE6k)DptH*hHdw2*(q6HJdW$4UwE&Y^2QpaA>@VuUE~3WFpA$rJiV z9AfB&kdT^X=zK0N8(&$xX%q?uLIUR-&XKCv?XA4gUar@M}6HrkGMws+<$r6W?k6LNRoE zsX;roDHOFWIHV;ST;32j+IZXBgR#P2ZUh6$JP(TG^_B{ITP@i7nU&Rd7Tn6kEyMdi zdUlZADU(LEpgM%9w<^@)s%mQ7qD~o_8l4#@0qsq z)Y-9vTyx64^pB;tJd2;vQ)IAPX=sHyU%K6#SQVAdDvdObwxp%8=OyLRQPqVwzrj*m zND2;mSYBTDI=}>+5Biy^|> zB4PSPCaDqg{34yd&5TpK%X=g|0uRpz^+zA&KB0I|EmS6{wA8kOLy44;xB!50*pL>Q zJr%It7WW%HTeV^E*3-!_K;PS)@j^z1*Hur5mndqj6{VdevP3}uY(8uDlX+8lo%A7EpV-+jN-9}{HtMBPK9 zz$7VZvprQ?&bsSJ9%2eslr)jZ9^JMbu}y)kr5~v;CiI}m9^2uKBqh1Pl*-4M?=}MMMS|&3NVigewbQCUDFk!0?a3bg z_)L(;EeC(J5EJ0l&jCJLh`!5JW{Z(=x0dN!?Y>s0+yJe>Nsv$R4t6|tIG#%Yp@Cc@ z{A89Lc5j}klKPK!PvKHqDAbap{v|N;0G)|*^Gt2AjiU(sD^Dc-`Yl7nB^&`>?ELvn zGG>3iU2_XGHHk?NE6P-mKoChHAcMCCM);0_t!{q`gIy%%oIMr!gsBNB^9cu3PXm3w zZg7=jl`oXrv@SB@cTyn7d7bC#dx*i_Qr>Y&Zj|S&p_A_PS6uI(GVWZYskk8&Zr<|~ zG=&@xF^F~`% ztHpn6lD%9IphAJ}2qH!%_Qx9m!3}8t0O<=vjdP?lx;-XE{8Uia)+xu={v%X~E7Kn8 zkK_UQk&KSk0P1M8)@jKWRnsZ-=)XkWb*A2>HlYDduS&^I!~m!~&mT-I%^?ZG77i&{ zDKZ`Mpy+OmNChMW%E%n;z#p-~i=-&FHj#hL^xmz2T-JQjViisXm@%;@e|%8~s<7(e z8%5LF!7io85QLKu;zuII-#fFaPeUNgEYp0ZLIDlvv8i@zXMx}T9$^Mw4_@n&94|xOiP#b^X z6Yfme%C=fS7;@UAIsnzFtttTbA~+!a*tR{7Zsw3ja6un2g?8rP;Hl~@)N}~e!V6+H z2Xpcwe{Jz-NxoAHaw+OrN*(n`^=cgZ59R!^6cn>pT;dOtNS7NSL>Wf^0HN*sV#Z3V zHm9VdbT7`Rs9Mz<1$O85-vvQmsvv(ljUHN%35k^V#H`wfn?*8|ghGay8Y8;;gwQfu?QBty(~Kr0PN^eR?8VW*+M9(SO1~NU)W(v^O zwfSg4Gi%NDs93Jdw(4+}(x52qizOve3>7@BLzs{^f@h2enykhMt`vXPdJr!nw(DH= zXl9#JO^Rf;lr2htM03FcN!Z71Sd^C{+R=czPE5Nz#kiEx1gT$&5cEiiVp;@x&`rBrn2UZlBKt-;UbNi*{j2OaTOnnn#K z>wb~-`AMuuQR7-7M{a-n%y&4lEn84Zex19MEG)R_KwU%0Z6p<;DOSgLJHg&J!qpR% z*t#I?6>esyTWsn~rCP#vB%~ex075;-&lK;prQH;57O#C0T1!q_*qoF#3N=92$rCh?qZEo-v>c zS?;YhMN5w*XkX=lr`BZ7!}*TbJ)saFuG`@v$ym-{ZRgoi2y=9*bti!bFSMXf_0KYKzrt`H<-W=Aw+e=v1f$Wysg>?X4Y_8jO@#EpcHd}wQ7p(VYx!Wq)KNQW) zt7UB?h*p34Tuo3}U;hA0CS>E&dtminED{LKw9y@~yv^Z*slEkjd{K4ApCELPruiE$ z*e;g)ZLz$cXJ&!>r9fN3b!$^=(1dD3hs$LMLGw^Zlocz~c&3j-pztjV;&F7+hdKEh zS}0RPK`*{9#VZ#jxtEf^iYpA_$%`3?NR$n z@|TV84wM}q>gA&=i{+B;Z#fR_mTVOZxLaLPbhyi_RaS&kzSu%s2YqO5z>-@S=eBwE zP5ghO-^DJw7|l5#9(f$yb1>VBW_E5=x-vd`*9p*fgw`j|g4@?s*>Dlx_K!Iooe2y=%B< zCvz>WZ7;>ya_03ekFk=0YB;sdv}s*0xmJ-gc#cQi6Yi z5)uSDk*;r=4e~RNI#)$aW3+PsMOSXW5zVjW=dKxVs(u=}(VKidbwb{;nQ}H_tFhjT zRO$(N>UHV!(LA>5bi9KQQ0hqM8Cb`0%G)(D)l@orxgSKL&DHG3=LI!oxQ!}}UTP4N z@5b>v!TxyG$ewVrNLyCAuR*RIdh36mQ7v5{=+<9h+tuOXie}wkp@zVhY93kHrdvoV zTF5Xq5=ueV*vJ-LfU!8Yvi*th$IvXD;j^Yq-sUM?<=gnk=-otgl4wVP%ZTQ&1haR4LcNDt&G#Dhw{1Y@iJBJL6;; zSmkc#1gYmNrhqMZTJ6-%ujYvvhpU;Qy(@rQsmv7xBuv3hxQQoXJI>g6(!>Yl2_AEY zRqF4tOTwmR>u--e$&(M@2c&MJwzNulD|7Td)9wzMp}J&cdETI zvpH~e#X8mAqUm^{OUfilR%mP3ZJ|HJ8-PhCNIPsYoxa5%LIGI}G;9p6jnHi6m^@W= zM(5D3llXbO*lKLl-gaiqS6-xM%1SF0G4!R@;_RbR^2~-CNCR+qJaKsY?j>dSb{^=BlC9tPqr`N-8T^ z)=K1vw#4UWci+_x=7EO&Ri(a=Wwa@5+`5yP9*Qk)BkwjCQ0?db5)%m6h~OELc*9I! z9!X0sv%>kFj&#X|p>FF*LN9H9CrS{g69&`YWO|40F_QFX!7$hZH zLmJU_O1B&3F>8OPR|~?MTN!e~(h@}q+^l6uNVAc>I(FGp9)dim_c(iW@;fy{)dQw$ zF?VT#at}%CZcb&Z*Hdf^);B^Xqf@M`YUL}hi0aHj<+v{)^);Y+CC@g)dQq>ZUz1KT#Kmw zD>~ccIYWP!ZuQp2(2@nGDJ{2Z)KBoPwcwUn_WUFgJ@9djGk6#3?mi74xl41U{{VG* z4t{HlKW6K8eW-rAs@VO#%A$PNDbZ7Nt&ZMpN~2o$+{r-y04W%AwH7}${DAll64=Ar z^*>a7m%|2OtE#8HT(WDm57Pti)p?P`C(BWZQW}3cLP?GS1Z;LBlA}2o2M4l0D)V18 zd86?CovU4Kr!E$jSyB8%Jy@wAaFOMqP$zN^AVwBWI4PS*>J_1{4SCMw^K7Fr<@Vfk zfXhu9f>f>q1hcvAg|vat{rpiDUnOvEywK;op?IhN0Lrfs8AmiF>-}Z6;cd$(L+;wD znMi+dQ@(TIgFofh zYul!_S}AC6zkZgf-COHvryLA5GW9$-fR%s@rE)zXMBO{2iLE1n`=>H3v2Fw}J=ywI zo?NuISe&-&si<#X;ncRjK}>)EQ6pn9%$R?SXEQKhlq`+MAX@#3`#O5vU1sosmn*u_ zo2zm{vhG#AWvjjQmX_UBo8Z_*!Iu^tBTMBr#OMY!IarhkDg@;X-G-YNkNsHrS@;5g=}unA_1+;oN$1R>^#jb*S#thC zLrSc_*IX)TpF?%+(KPZ@DXAX~I^x{{1-~#v=}_}tA+FYHCvKli2%-y}kSKOF^Uqc6 zyc@&3Gf4^7>s|<>O~J__wO4nW7~p>rYL%D5&Qi-B1Ui}37dnA{wq_+;%>|Rq%U3k~ zGDS*K`pSI36bV~uZB3~mZJKka0ypev|4)zWpAQlzCWuCcU`0!SMqNibuvCJf`ITmJx3HT!u+x4|y~J{@*2}Y-jmw z80+s#e$vd-n0!=bMEEbT-mZT%8Ai)lO?T>DeVanpeYqVaiV~+Zq&H5|P)e3`rN<>nczZ3Kwiu0|*JNT9RE^6p{v*C|7 zW^>cm^9yOabo({mQ(bAMePK#$YGL5Ah3Q%}tprFKiiu1sL#-qh@J4@q=@Ua7ppbHV zTKCUF{A&0b`)4|0dK1)|dTgPcQAQ0uUc1yM&T6aDR^=;;15;X%h-kP<_8^6}l@CXv z@ePj|Eh8X<*SPJD_#(j+u)F-Q<~#>9;DRvW>)4J#=y+Zm@ps@WJai+iw_5J6<|^xD zEy?=Zg@ZLvwxEY=0rP(ubq^!}8Y)(Vl#sCrog~Tk`X3fE=^F`PBmmxpu4v|mddX?y zHDP(ZcZPWyqo{@Cu#$i3Yr8wJ=nq^jeRHmVs|lsE_>|3$WbDZE=%luFbhl9LuD#zc z(Mfo1s3ArZ6^*A@M3tq%>KJ@O!&?a7rD-hc-dxe$y~lRlj)#Au)uPu2{{WY$pze<7 zeGjj%UcJ{O>i+;wI@zXlbK&b~*Cj(k+o&iN)coQ|-w6C=@|*Zx zpe2u6ugZN&RYiX?5|n8OR;9?^ciJ|AAL)tsvC&`Qk5G$onzED%g(1R}`ji}6fQgY3 z54U^>)P-gWSTwadzz-!FfdIEonIApmeDP;fgf51c%eJk-<~Z}~3K1S|kbgu+wkT>x z6syQ3ZksDjD@v)76ZwA0qyryO&(C~AsVMw_ z0)=g}O8Toy%%G}uIF*e+_cPyY0n|LFDYbhNH168fZspIM86wU}Tcjmr`OXF`enpJiCsa7O5%l%T# zG+tmOq`QA{ZQWpU5+6#*&9tAazcES(V;+? zkV+}RJ-e9a3ut?=Tz+Vr=H0cT*E8xDLo-f#sj1Ah{YR*;yi}`QMMde~F?9qWBm&^v zdQt@LA_l-=--Ba`cI^7AI>{Ws!YBpB^CnTuxjKKh;WI6b+C_pw3y73C^GbxJW9A9Q zcQMR42t^Q?Q1x%AG!*U8(Pp}oGSWg?X|$vv2?Jz-5C_O@iVhs9Kyiq5{CmXP(i z`UHOqd#Gj5+R)~vTVDt(Qm0&QOhirz(*h}1wRTtNH-Ubi+jDi3JZ8+dW!{^rN%Zm;Tc0JOy4b!?n95Y?{UWlgY zo>itpZqd|KJlkv1%BtQj0R+NEr5(3dx9NY4&e!TrIQL`pQLw}tV?OhLss{PfOsjOI zc8#k;O}-QT-THbU(wkP`Np1-eW;@}KYxPl^+(_yPzttuBSf0`=K7zkQwu_+oPPvz@ zb?;X+Tv$rKyeT?}S12d8z(EF1G`q$1EFsMU9*J%6_(&qoQmX#|3Y64pYNC@d*0_JS z903hivXv#s-$*DxR{IZsd}wd=1K)=*0o-5iP#+0s%Uo~PzvT&<{6A+}ryF@$O4j=c zY6p>6^HNNDR7xNjPq*ua!Q&cs0yhv(a1ZX6KZj2D3TPmDk^3vVttCvsZ6J_0@B03S zlZqHAt^ut|swkdQ5I)Q zz*=ROkdbv}BrD9=j>K)q=j(_`M8i&1zO|Omi%Nj4P&z?n-gXmrx^wz}OfP>)Vi`~W z0Hg!|0H7w!+F(5i`m7<+rwB^p(w^LJ%*Gf+Eb4kvg&#`il4N&|aYf4i094|Tr%Pz{ zY`!@MW3l;hg^`svVwNvi7K1Vs+^K6_x7^oADV?uj30QrJBvaHfzeP(@r4W@ulc_}u zK_r@R`F->1jigm{`{T0bdB1-r-*RhAIhiih^mgW*CW`q}e07RTQjVQzrL6w|;ZzB6 z2yrT;acgDoJz)=P4W|GIV~3%>_vv5i_bm(|*cE?y{`g%xEaj}xePV*6FQLq}W^HMx zx6{_ph6{bt`xdtJw#$kIM^#dkKyd4)Ck9)!$9GQI_!HCDX!j6=mY#odLg`s6En0H3 z3u4}C9d@#$zi_Uue7#Xx`ASk;b!TF9r6~ykC`v#|Qjh?}Zn_-@1GnE($w6eBE3EX2 zrja+QdV0YuII_#(LzdPGR0!@NQH=VQ`H;AEAg0D>uMSc4zOO1~%dSnWXYp*;YMLhp zAK^N*06tKVf1U~2z+r!DuIvxfD|}jeI25f^xg6CYAxs36@2Myfuay4)zA!&oT~_94 zK>;$O>GBetD+w|;^o_BSO<_DOEYk*#>v7YXC;bYgNl6ArmmT@r1NhkyjU!6U7e}Z? zLTWUvI!@rKciIV&wguiK`XN~G_5*5r$4ObNX((~Bpc6bK!P|dqEG1Dm3dMfaE{3ZSLw!7Qq2H%Gz+s9Sb z&rR0N419lBNWTtqo+d6IuKT(TT5x)CP7g5KmWQWE7cwy+hmOY8_y*nK^}t_4vfaK3Vd zf}%@O0%LQ;;wo#FsG_B)P^a=!qlY*`el`>Bwo z8djw=k^$_H3I70t1Ok=<>G^Z3{W8kgW}e4ENpn-JH~8+-(WM2)43%!Bi4))0W8=Oz z{T2O7*re7=qeVcJ4G-0?6JPw`Lq0;!4hfNS@yByH!xt+rHFE^@-tL-Sd^U7L~ zHv)f7!+y~N=$rB&9!Djkl4DP#()x>Z(J!wV;0`C$QX(!|U_JQ5{cNrBGf{zs;+N9?{?D zfIOmaDrc%!RZ3_}iVCTDEjCc*nAD&*Kl6-dn=}*R#g)+Q%SAg0LJ*Rapak)>M%!U- zu87g@1-(d6f}|JJmQYFKS0sGmPAO0!G`HJatgUXEojU~tp%cfp-to873n#i`NaKI1 z@E`srFB3ocC(uln;X2n)q`A~PtCbm>%U0>NQ2^jTAHRmyq?rB}DqUea>_bZ!$1B++ zt!Kyh{m;QMts>ldFU9*s@Uvf4Zh2}8rg9FXfvqat4iAysZQLAa0>vtFv0Lu2q`K5= zm`DUk=Wq4Jkw`DP>RmCM1Ikcs$dZ6ojkts7~8} z1QQ+SzA;$nwva+om)~vt*>p`XQ1V!(ZcucQ=~DENKls4!h|;B2d!|(xp;ncIRJ4|V zLV+G~K@%f#q>g^0f04n0K~zR*MNOPlR3lVELW+Rc4#a$;z9_oX005a~oXnG%XlcrV zP+EOXLViGR`phqAMfR9oT)O?D-FmrHAj#_W?E`(nQBqq2 zegq_Q+X;kQ2j5bTTQ2+T7YwJXG-`P|GN(0(5LI$ZA5^u0mN z&8nHF+fuDG&Nu2(J5(qgz~9mi{m*P!eO)LT23K(D4^I_p&8(%Q>il%dkpQlLWJlIY zP81*25f{g0`eESuk!{jZ{tyXB0a~^o`+SE#t~IgO9(h?DDa-P!{{RrqQO}(``%y1h zgCtfq)wea}D=uQFqk5q&3YVRu6mBYXDt{JBFJwJ8gx?Z7Y z1lESHc2=7}SqgExgG(s+l!Qrt`VZS0LmJ)!&gX8t*-q)R+fJ=i#_eowP$f^PDFF5o zrooZS_xHn^))SOF-UkVFMgIUO*>eJJ2}Kjtt~{kGs)m@ngsA#SDhUYy>Lx^kxt)#@ zbh<`JUeQGILI-Y<;pABYg`#eqNwV9^Y`I@*E;#=Hl-Mamm3AD=Za3q9d`Ad}E+IL- zVgCS4{1rm))~jw_%#~GHUckj|ZBQtE~VQGZlL^hTMuO+Gi5&I#p1xw38!JeN#M+A_*K~n+$q}*6LPV=pS`z z>EWlt4om9iTBvfxRf+n4n@db8w&zTngQ-FoXppwn;trq|r8JOa5he};S*L?br!N;~ zt36Y+vPm@5XpXq(y$jXv4Buy`hn%r?pz1}2shf^tpr%ElmWMReuJdhMFPD_{0#xDC z=Av0}KdGH05CYPb4jbf?ZUun4fsEZ)&)?lIKKNtkC6C5uh(`K>Aaww#;6Bri8$2l4w3Dm+azQ$cK@3n)NRwKz(ar7dbvB$X{ho(YH;GZb+!HH`oc zfdG;3kh#Xm>R0A({wKc&)YeX=M;aP1Rf~a9#bd8zp+dAk4%Qff*g8=?Id3IgU#Do0lp&U3rFt7e z5QLIRAt0U3Jp@8Hp=%y!*HwaOqf4DM)SW% zGagi@%AGHywB@^X4NVzHbxn(UN?QyeqyS3P;>yC*sDY_Ol^8sCNXcDS%IP*R$n4^( zm*S;wkN&+{{BHFzcI!oUeXGnpSh_i1m0Pnau{CXq_ZvzQ8!B6B0SRp?34^2(cZ_pp z()rJSA(wqC=(`?kVs3g@(SDy~pR;eF-Xk)Nn>}@Jq8Ch?e5k5sqVbbanA=k#n^vb7 zb=Ea4wWw@D6(UH~4jZP?Ya*{TD>w$ zQy2Rcrsq>#Z@ZubmWr9Fbo@K5sUW51%#c=pl?4Uuq-mPwkn?`wU-Gm5D4+C%4tD6$ z^0j-E-c7RRo256yx?ES1sz>Saq` z8)YYbnop%=!HSe`M){lOSQ6&oHEX8 z$`|*m=um_tgsEy|CB_0k{{YuQ4&0cW6Lh+4`y=!}e&oZcG7s|3KKd?il77=aw0o!Z z33n*?w!PP~m5|*v(e`c)0n8~i2waHR59fk9XrmMX9^yh5EcG*>^tB`>O~Y@TzA*u{4S5; zEA7GRS6)0e)nv~PT{Uy2x68e~{{X%(_ba-pDk@n`GM1_vacL=APQ0YJpE+=JHwg(V zDoq({4(HRSu2W;v)2yCi%@)Ebgfl^F_Bl6=0rUwXroMR-A0Uo0A56;$& z9PW_0lsK@jRJ~C97@5~+=~hryY|M$bR53+IV5iMjH`}OND?@8=B!n~);*zg1L;)Iv zZHx^Xr@L;_N4azc#sKG#0QYC%)o>oOP*LRH0i8<9Jwkn&EbDsd+gH}@ce>;}x~id5 zZ)4&ElBAXSEk2Wf>I?L)H^)=Mn)pk6!9Wr|1RB4J<;dZwnAO!EqWt*C**mY9Lpj^2 zEjC&fEw_-%^&+aV6?Ut&3yL3sQShpCx`n9#7Jw^4l9LHiQlZqG$0TPxIUJ92!=`g0 zlJDSubRD-k_1D9nR5M-QIdqn$k1%JeCDPcZZcV%#rbSAB79KQjq11U!x8@)yD^`#+ zEhAAF%*M5?X%#?q3s;yVlW;a~f=N2?ui>1C%h(`PE|%U14ST@Aqwp(Ej3 zMH@OFea|s^*X4lTqCrYq3DORtPfo)mjsR!&{>Yy;=IwFgm34Q({{UR5UTm7Itx$lJ ztIVXor9(=8k`(}y!7xDIgR$?8Vkr{;0LvqlYs;^4jbL#nfq(F?W+|ZjzjgW(QFO>&4g5bhm$C{fE3Nq=$XuYJ zd?Y({xVorlE>4iAo>5sGAb>d7V8V4((IK_ zlQN|(r!cr~H%itMTYR~%Qk7kBbd}USs0bs>T7UuoPLKeMeAvkOWpuAL;z>U8e{L6U zLLP7^3<1~<7n%OpD^0PEljJLaP)m5GQbKel<*4o@XLf**p(*y&hWdM!Bl1|5rY}88V zs=Dx~F^>G)FVpV`Uuq?@I%F$vg8u-uFDKI7GTQ1s4u`1*nITrh=_q7WA&@+gDne6H z8Z`Q0L-5A^4~m^J7V95T{{SCOizM1tSuDtZJdWet)O*x^GyDSQPYl$KW(=uKZqFSt zt#GQX`)UPY30ieB)6*al+lW{@6C*)_Qa*v8@i?`u0K3{8I_v)cb#PBZ!Rtq!9;?I1 z21td9w>OdpcJ~9QL)RD>GgmWU2An<`OGAL zfLBVnLV$&Xu_LVT__cBxXcC@UaM=j!WAeYVh7Vf_dQDsOz#d!mA6`D8b1dWbarn7( z(q@kjS*IfPBOzYiQOddcflgAfaz>D{+sv#JMOKigTMJTvQdAJ7fv9->PJ&2ec@Cfr z7P}5V%I^+|4@XAjz4Y__WJSJKR$X;4TjYW&j42?UjC z2`Wl;vAdko2h~!md@cCg_}{v%IWos^t8fsSdo4>fYStta zjXRSuu-t8p$HH~tyS<7X+}8fIvHmMeC}f{Txc-2vEvxMI`%W&42v zmPfpVzCyl$;Nyl;axj-5p-nkLU;G*PsLPEu{qv)_snjVzMGI-FBWZ#u*1ZA&+<-q^ zZ;lp$!p8A1&qSr43LYTqVYWPfKIf{1e+zBcD;88^otv1DcaAstV?b;S%gR>GOSlM! zydHRrNCW=>m1jNzsVOSSwfla)PU1v;F-C6=1M?45&Dmqa%~}+cA(jzWm@N&V4J9H| z4^;^S>M%f(XPk1i+PyrI7jE}`(%S}(aTsU=<`?K++3ogMD=qk9vDSF4=$1))KYi_S zcHqWgy--(FrG-2NIB*All+0)Zr68CDOmH}7TG1<-PA?wnAG+%4^e@}Fz!URUKNKDi zGLK6-e%@rUczEgh8~e?g6}wMqw$uiLfkm(yWk+&T8q^?2oO%xhewSIPEPJd0b;lg$ zmpjEG)j_A;#@0aiA5Wt5m;O%WT+H=Dbsa9t6)94c=h9Q!7(;V^**;uA5xjpb#ywlK z-X9Y{Ed$|e%(88J+)m?uhLyRW37!^uH=pwD7gl^V7`?J4mN0?PS@yqs}@r5-{2PK zbVX&qpuHta%((J@jZ!V`I@3uhQPiehl#%%a6qxe?5vLiZ@aHp_$iMo3N?Vz$f=|le zeZ+qYsAXRRo)PoTTwT(~;a{cIe~ORElPFTNtqEE{T2Po!LyatuVEMa#UHJ3D);_rV zuhlSWn`0o4O#7ARAb3g16t=o-wUqMSU(5E2A>}b|ZmpYtdKui4p^~6LGD%q*pL}y& zuai%P{+L}T^bDBU1LsO?$Kj^mWkC+-7Mf(P672?KVyKOd!3~l?`H_dk;|1nh_Jp zVJG6EvRE+WAAZjDtk55Uxh=IV z3Wc>&;^5BUreQoxf_TE=)3~`|_H)qOqq41q{)t^$<1$BuOAD zcLQUFOQdg^uz(M#r9)BvUf^%)m($g<_yr35+w3-fk8&~FAhlvI4gq~u#5N#yfK%UY zf6#4$Zz&`Yl{gEF&;Z^5QjB-o58x&4Dpp%x_=r(S0!(lZ{M+@wlB^2~`IAsaUZ-^q z?69IjcL3@z5BvVuCC`|G@&`oSQg=`P08A4H=0U{+X<6Yl%E3=w8I%w;D5@1Fx3v3ZKVQ*)iFDSpH`Qbt1zvxnYM%b}l9kK- zJ52_X)oPhZc_~6vuz(k<(iETuz?htNqzvA6oL(0+hKHS|$Ly>MVv??z$_n}xY8iDY zE2pV!Eek19R+6Bp1{9Q$JP-)q3d=};Aml0_D+M#9Yf9Z-r4uSq6DPkt=5bu6CpOnK z#EroO$bde7JOY3#rcJ99wW)L+Bq$w0QwRQSh~SK1*<2UJ^yCi{H}@G}c^9^6uB~Yh zk{@Vm{{Z}mUNFN4nF$;aNd5l+b<&Gbv7iu;TRMY4nn`qku{%mh*D&7Ncv1~jLr@#LtMp&Z#JfqW%L4(+>iJ%ep}B(vm*e>O6&6- zp|q&#N{Qtp@BaWG;jD^6MiO0rG=0*?Z?vzvuO%o@18{qPzBGmwjI7R-JB2mBGEvg3 zw)He9gSnVE*BgKf6qa~jUGG$NjFcJ_gqQ|*pO*gsTt~}z%BD1et2KFc({NO(ffA$n zf{y3@eDEH0jo_m!Y3PLi0L!a0je!dr4U2^P3E%qRgIOpjPMxGBHT@)iwx!iL7C=zv zZTaVI@u8j}CuEbNjHPw`DPe6xbqJBZp7#HLWCBq>~fA@U!# z7IwFQn|)DkI?7y232-TEGPoR$+x>Teg_2yL7PfFFYEWda^MlwEuqW$IMwZ>P8N7@%oDEk0_vw#g}gq9hd(VB)AC&7swIsC7y%t4yeW7#jiq064{f0wsZT zc)PPcZjri3o&C>q#9%h%P;F&u)%E7qqai9FY8qld;%9mJV1T4qtRiTx^$)tOK<&8o zbN-Qwt5j?$-npR=rx&le3 zQ7dmtY1^&L?JZn|m43kg0I#+b{4}OVlD`GN@g8+$T~_-~vp!I9{{T9NB;|W`j-9lb z4Z60?W5zvy$*F7@{{Se)C>jf#@-ubtAKues1Oc2C;MOi`TXfayAuFbP;OdCvp+spX z=&dJ@d~9f>526aN+wN}a9>O<=xKn0Mf2Z;KA$pm9jAo8;@yGg?Dy;h*6v*#6D zn_)p0b{nkr1!5aek+Iz%?>zPx=enBZt)w^rk>r$9*H_)D-C-@2*Q6w*luR^%B#{Ss z<8SAIZD!FL3H|3KQC(;h^J*#$r0EI($=h-J_rZIWU$yADc4DS}+Lc(UU-)TKlScO8 zEVyTX(pA|jCxZ~EJ4&XU6(zY7Fx(l>Y_w{Ev|Ha#ma*$ADMF`WQUCygIWyY=(rsIX zXQJt2I<2PkywsicL=WZv01g@)K|osKipv?br?X8vtvXRO?j>!iH}5{@boL)yP|K8e zvKL***QB>}Ld%J|#Bdb?;fYZVra6Xbx za8lqu&kBOG=uhgN;BZe+579jEP2h&()ki<`i>i51Jz2W@3M6wH*b3?v@kB)pe4yM^u>H%=U_WfiElp-ZTzY4;N5=>=#CFnb78K=%EA zFpa>fbq9P_Y&|bsHSG_$*kw)BB}s9TNChhj+;g^(3Xc6fkFQg(`?{{U=1 zPrJ->M;QImrmr9y&7YMI-Fc6p*>|UZ-D~MB4NiW@mgnwNYE>1~S5kt%F#u^$Bn1Gp zXjIR*!8#|g#)Q1WT*EVXU+X?nd{t)O54nz=px`b&K}@&W zOMd#8)&Y=r;{e#$a^S7caKlI?4VEpInk6EI+XI$o*eWZjc`hZzOpPR}2pkw21G(RP zX=DKKDJ9Z86KlJ8dGQ}r;r{@CE9M3|b8dC)?U^fCr5Bq20R9O>Z$l*cjmTJA<;4>! zNNg6+PNE?Y!rlvrX~meDu~S4f=`6u1*_5OLK}?w{bXu*}z~okII@xhi+MQUd0Nh4<#hV%uuAcCcNL`X28WK9gd zH!OxNOa;8;Q6CkcBHonUz2%Vt6Jn2M1pr)IFC+wPn2W zs#ci1UDSM*lG`g?#cC=@0DfO9WAs0+6|w$`#u_J~KHCw-1h4_hgau={W?bWWwl{1SRMLjj9AsPBTLIDtDNBmfr2)4IAkOAS*jqI1 z2JJM+YJgndrXCx5Rnh93)z76l2FH~uZ}p3)z17$(tg`ic>Q<#V`-n`x>MAg~5=nqg z`&!`E?E;5?$t3T2+~bwf?5c9k5T-6y7d*EVr8J~4lr24yVVMbmv=C#HfI0g=%DTdL zRi3WPZ_A@7X(T`~Kc@cx*8&&^D#0qfUsY3HwK-W-w^iR$go1FuYlH+6R3pkHE>Z$_ zOpXt~$nVcMmQ~PEzR}he@DfOk_5%(oPrsCDo)lFA!txDEW zasR9gzr}C{NZ3G!T)6O&rgPWYCd3!j*^8Wx{{?6>Fo9Z6CU3xv1uT>$yzcHM= zz*E5TU8Xup`4U)l4svAiiXa{wK}Q_2v!Ee)pFMaP>C5@%mYXhgUn*tmTJ1hvReivJ zT^~i7y(-qVqJg*2^4U^hDQVTX0aBD!1Po=8DPoAYxRZS=KgYdohFGO=um`mUFL=9tS(kzg9Xhwc$I&btnxKJdETpQYVh%QW;!s?YXXJ5?)x-`sk0 z(@eKbZJ<+yDhUr%Izx`9P>BczNF*3A`e_sbOWkxqKNFSbZ?x%@J=c7hm+zTns`r`b zimsN`8s9C-YR0a23U-`98wI6LBS|{~fMdAk>e@sj+Mr!W-GlmC-KKpoJE#V}cD(K3 zC#N@BFpR&KGYz?SyRB<%RWB@mF;2}TGtML}#*_GZPL!oumaR|{tvWyn7`l@P|64(t?Q>|$VrhOr_wp?#X zL5AK#sFb85)ata)44(7H2OjZY*KSj_9v>#02L{n1#wecGdHM7S}5eO;Dk%vH~6THR{J>MFy@XyKTL#1;@V8 z&t3)J{3J|bo7w<0od-@yz%K@l3r=Drow>V+ zQWOe;l<7iR5)7=XX5jMU6S_gWfzR#ytr~$0aetS|T&Js@Kx3#`!iO$u{_9T3z16bg zpW-zLw$n5;=p-%297p zSh2$LpN_v7whtK9`Cf}DWZT6JpDZS=X{WkAl+;wzR3)%n0l7d34W%GSBo!GF6ONvW z7wFpSAd_ED`BC+MBX+J$kn>g6$4^~PmhSabF4oeTI@)zEeD+GvwKk;@sR=4V3~ez4 z$1atukb?1aY7e~(&hPk@G;LEQ; zbWCudI6>_-#FNVQhk|dkX7k}@n(dcra^*&Q=*8BJnp^IFOui)4)!7{_rAm68y-@oN zsX9YzP+3F(VITt0>h&5KLA?H>`BywK&O@1Ch1+`h;FG33Mal^Aq4sKLv6wP-?v-`- ze7$F@4%S+nN`hAFRP*KqAxhHgY6K7UQ zCCxizzk&XL57FNIuPF43uDw$5vz=}^kEK);K1J;R0Q2e7y0sM9b1FMj)BgbY9b9gO zqyeZw0F5~BYV;a!6O0?k6xZ@V{{U;p`kFm`p~x$l4zp9?^XCo+BZ2Q}>F(gKVr1U1 zWL~-S+y4MLd^pxoR9fj53akZ{nJ+sHAWY@ZTY5 zOz=XH3LmkK_)(OE=EZs82>UfGRci_hNa5;NHEExx*ODg$Bx`~a!)fMT&v~waNHjN} zIH572$5agaf0u4I#z}OrOUPPTEREo&l=an_H+tsi~6EfzwhGrN6GUt7Eq+5NE5a>^1brBx<^?(&wQsx3nKtV+z(FJMAJW;t~CLh7FEpJfe8F-Dw6yx;?W@=WcyYdz)%4Lv?jFBI&ri?P!cw7$fE=pgVngYAU8 z!rT*H;+h#Fut(4@uiZGztka^duP@qILKH}G6!hp){zL_;H=T^0(l9Z|+rcGMw2!MG z50bB6JUV9#z}-Dtj@hZ1bwvDX)ReWRcN&`{NIv3cW41QM;tY!J$yp_T@cASHh#!85 zb#H_0!j&4Dp1aY~GGHHrQci^vxL2Tvi5rgQPT0`j8(_ziXV?1_C&C`#nE>}9DEunr z9JiO&s*b-k@RX_0-5WNhyu^~SqM*GRl`2u*AOW@&CyU86m*r&onoe(pM;j~5~ zvC}-oT(pEXlC%6eqId6qG4CCQJ*>Kz!t?CYJOOIqU(u}9LugfXb+JiFgQ*WBgY(8e z#>3_Yf}C{j+H5X!b)u-Z)TxvDgADG`V((0RR`7Ly87Frg;5+xD$eX7AFz7p5-%tZAdbKuB+3nK!x~YWiSsiyXlYl#yI-X{{Zw| zU!%wW0OM-Z*H)q)luzmxl0M8nxcIxP%l$X#y~o4DL#3*qt_)|iSt^2yX*Dj-#CgS; z_>fxN0LIZf<93OE`k9(M_J9Kh)842z<`%td8d15y-ra*(>b=&}Z9Lp5w3z~BB6gTR z(;5h(xl7ER6WeZ=?NaeKMy8PtTCMMd{!k^#MMwj@s(tZ;!v6sMlTv^EDE%Z|3I727 ziV$*Y{#ahpu~Mqw$!?yii5^a$Fg;Y3$~7iu)Mg{N`QuT4AZ29&@R`4Dc8aJ|REAHQ zz)}{=fy5M<2_TL}2Eodr2sBZ)>0Kfg2IM4}+j5!3^;QlOiU(9cLEc1FE>5sON;#h!gS#N zA?@w~`C$Hk$?R}67oFR>rNkD-#6WR!HxIt^1zT$ z2LP=(UgBC(f4!8D0Xp=UKk1HsraS3{t|@=&R)pOFXVGwo?XPc_91r{Blwu*=Eh1a$ zmsZ}cNCXGOPUI~r{{XHuvIZVfoimc^yOnuKP*|ORjG)91WB&kLX>3B$jE*5<*>|jF z9I5kC0hlT~af^~BoCG1{8${LS%61S`*(E_&~+>cb=#?Q>iimdbEuC|Tyy@rVexo#x|FACn`uo(e0k)N2?1OI zu_Jx|0DpXIZi%5G+LBT`hG1LD^Ays=tK3N)w#LS3$P}|WODno`gC;eUEGVtIFp+eu zLQP7D{{Rkm4bRAP?q+*oWb_;?@;JEHMbK=2^{tSXCy-1>2?w|J+Ihm9N*MV}Y3_L3`BHUsIt z2CULB;+jz1oKgbZAQHYu0|Hu62Uty0an!8~Q121W1zF{Mn&in*J-3s;{c#lnFC|QW z-EvZ$N%Y7%bjaV2>Dv)SE7h$&k6O~Qn2lY(*qj#CRszg0Q!W>nkD^hz*ll@2iu_}}Vtgh_bm>db*i61}bg4$F;E~zd) zwXMOdDML{)J4F8g+~8EZQk%k7qO?ALoh3(6JRkURWKz2-6<;Ar(%{>X$I?4SFEpq* z4)yKTHWHU~levK;e51IY_#3q>^+M9#D-%)cbgdwIr2fJ>@S<(soeqzxrT5}1O2W_aK0 z-wSXm@k-Teuh(!5m4F2xF*0{w`wRtQ)ZDNAF1$BMe`(D_ya|ce?}bR)39+~UznV|A z4>r_i545MRH+sjs#iObh8blbF6#6O0&_h6DE|e1yKCb;rbc1aVLG>2A`s^C#==7;6 zuBH5`94$N<=ihv3_@#nKRt}qg*>C+qyHi;*>k4|M#D@xz`CCAZYEj|=C+c<^;MhfH z0Vsk_7ohT|Mi*jzx;iQ)`HiG#d1NU|bC9KbdcQyp7Ux|QBud6>TBy?s0vbfNpV1S1WZgA{{UPnCx^rx(5)|TwMU}Ar>2Xz z0%_$6NQ49`G{m0U6Sfa|2sUSx&bqVG`_oi!t?D(D6p~&`TaS4h92V;ccAKTbZcS9u zW;#6J!kY_qmJ|D49rY1Rgt? znEi1Syd(1EdT3suuQdq^W~EJ`1OiG_*&moh?>vv54T8#9E3Ram+zrW6Osy|-y zuo!8+5QA&P{w4m(st&q+s9i_#E7jFB?m@Yt&2+X{7jzMf zr%8bc)J}3lK=&s7-+dFF@a8wrF1L8dG^orL+C@{PmYT5Kn@dd~AuY5S03jhU2><{9 zfCj@Eo=dOXRE&YoqWdppn`J&6v7&4>Y%4*kA(YZ+`6*eUsq(t?vL(5B^6 zRM0?Ama<4uRDubAk=Xu|fbwKeqGCT^fxNI&3dSkmmaHa z)C8q%m8@w(jDZue$4g10cn&fOKYf;2brGM-mFFCh_EL3!*2u$zbq^%lyz-Sgmfov+ zV`RupI0tFoc*eiOFyOoBklBrJu2!$JFFjKruQm9Aur%3FN?W((dY9I(kk;d1o_N>} zeefqu3r&|;`}IU6dB6##O#3XIw^qGbpL|Z#+-aPjCYIZgn4xtW>@}LVf`A)wCzI`g z5b5tE*TF-7B$dWhvV-j0=)am8f2euVq)93bxk%KW1Vbloeg6PV36DxoR6=QyZGD_Q zB&54kR8!{Ln5SA&S*5IfYI>drtMM9jzci92Nlk810au*X-D>S zcwv2OPIbzzW^XmPRVD3V#*_})V9A0z>czF1Xw9{Mzcn2^?-h0KMA<&h&$I6-yQ?nv zDd}@g$x(G#Nve}G$S;Q=e1r+xY!hW{b{fzx&>(l1{{YP5RrfCRBcyp%Ix^=*vYoM% zkQ!#$lW18J+g65$ZqxI@ejxA=hLe{PernB0MRK8R{mk2xtfe}W@J)sh1ak-j+BS>{ z)XBwvt1&Qzy;}1v#njTh@lUa!d5)U&N%jCZ;n+szK9L6sGd4ckb7|nAb!?(W z{-GC11ug`U!|SfZXu|16fu9 z948H1u1Zh{c|MNnT%Xj&{{Yl>#IIE{h()rj2vtf*5!{{kB=+7 z^Gj+TaVgLg~LF3ypphgkOEUswUq}yDuPu6M1i;wuh<>`)urK3<@YU7+uo{6K_(CdeLL->6%chLAz-9Ii3HkO%iP=ek@_kJZbIh% z8~hx2cktVrvjFZ08eDs>Lru_<8}AZcB^BIH9#((5~Qx7Ma2}kJ8TjsxY7WO8mkCJ?OA4eN0SpD${C^ryMf|m0@6H#o=RqZ&)Fe|*e#P7KTx}P_FxNvYWTy#fx zv@_YKsTSZGxmxU(bZQ<`bWgv3Z*-nUsq>OSFd(fUj&{VsQpFBJZqHU#M9NWr%eR^b zKlNM|^Hj(%HrGnGU~jQdA2`GrQKxs`@{h802P5W^mgut;x~u2)WVT*yN^m-Cxs8>rvfxQdT}4AA zI)#Likgect#u(X|c@%vR)7mM#b}PgkcKZh{R_{9Pmo0h6D*271ATpHR?X0K>{{R)V zhfXHWJgE(s*C^e*i5%MTc2XG_ZocB~7mUvz9vElajV64fRmdj6U%lBG^F;$Xj zh1#amPWpV>g||Ucl)A9Y8JgDeYk?RZ3W8rr#STQ z{epX=YnyR4sB?BtOV7UPc~6Qeh6uxpaiKU$;j80Brz zc#HH}sOD{5hX8WhX~mA#GQB_4uMoN0JXB?loMsM?BP~(oJ2gcU6qhXI!`1adq2lY# zlHyAaGPS8{(%X=H!el~HpFO4U_;flk1P-<|xx)mTc1g2;kWMi`3cy|e03ZIK)_+j= zll8iwJjd10p@0AYb^vuGo~Z_Z%bBvC$(Qb3F{NGQyFDGskNY)WT$NDV=wE0TXzIqY z777|$O;x0q8()wVRD=MYgEdc@HpMBR2q2C}sPCGw*>KqtS-HUE{nyKcio2?Io`F-; zV_i{2mU32H%XAD?wS3GuO4CnwdE{t$1?JqWEC$iC3oO2*s7WQp z37HX$P|V#<>6j=IcKe1tq+i8pm^qDW9C84^j(>%J)qmrIRm zDQ(EMI@65Pvq-SpG>F_Nq186xoYtWUSpaPc^P2IgpTukmXvTdyu7o~QB5OK<^*R0m z@ntQ2X>r9k;2n~Z2@@g)`{^5vy|8B}s)jg0Q`%^%9xf$>l0QC$2LKyyp+q14m0zYP zxPYL4V{Zwq4MQTK3@9xnC@W^JpVj~$!MrI4k)=jGjs%<{9MU0K-E_-KPE@I2xu`U% zrpY{l2uzfp_U(qm%S)8dT~nn!S9*@Ivqw~-8<1(7SScwZbdlUf+|TQPmLTAiB&F%U z3SJ|6z2Nhy7Vfb4Sn8DvPhJacU-FH`&nDY{c5t8m4^q+DvZ#jY5D%81kiCdd$sF=P z@;C`?*!TXHcyRkydTU*u`Uy=-kUHyTu2{}JHM$^DIa2zyDSksM zaeFL!f|9KYQb{^VD#x|(Z|WO&v~p_)hj!0?m(P1#y=IA%4=!vG`CJDBx2Qe29T$s# zYI6684+-68{@P^wt$t3=mIoC|`|dJ)s@BIem5i&>>na-*s&+CD2OiDGN8)gZn` z9;&-ji$98q)J;CcAi@MfPm%F251&SV;lJ8x{H_9;??e9AdT@GnUWdcHO`3)P;YWfx zkK`WxI6ckXios5#ilop8o3w<)(q!7TA!=x{wI|k= zsx@exho#8dgXy2B!goqAh_*9Fs+l={(&a9iTZ?Y#KC~0;C}eF-v~$m1s}%JAew6CyvBqSK7f@kA$`+dEgg~Q1i_uF^`$5G*Lz1lmCM0e|9^!BX=lw~At$zr+7EjGr+QhYC zv{g8%^;J?Zpw^xDB~T(gfj9?$%L`j%k8+HLQtN0}YAm8M6(8T(qcT&|sb(CZr*UaR z>Kqj*8<-Mwq)hy$7+(JXJndsv=0sv{=Q_O=f2f&AXK69gzh z9kvEf7=D@wBg>9b=X`RXWMlP0v6t2?!r^kPeY$0$DH&iS`LX$>T!bWla-vTAP6)~E zZ3!YK)t(Y3t@az3bsuyysVWLnnu@OkI9GzYz^yrx$Pj$FH1^4qNzEzF9f5J#C# zmGQwl9pZOCSR7$eZtK!jt8sT>CYIZ#seuC zB%4E2W*o{(FEM+44mf>(4m9$SB%O-1@HQOt{IPpk)G6^&Uvn00yf{^GzSPw!nGmw= zLD~q}G5s)_V=w|gY1y)(udTVb&%{<#FX9|*8g|qPR*@h%{{Xl^2Y=Js0vZYQR!%a6 zu~Ys30CH-X`-7|~CtXsMNlEuo6WLK5z$9;iaoFB1Kml^nzP(6)S+-NvRFKlNwEKFH z3`~-f!62RBZ8JEwx2XtRdIUOZo}#ZycS<7aRJ4~JX?jUdVhJ7oVlhNm!m!{1A=;*^ zDt;N;DSeGVr%KEfM8s?W_rQiYbwpg+TjTjz{!f zOYw~v2&}=^%A1XUF`;twR^KJ1Hc*gbK*?8PxZtmf~41fEIOaO+fkiuyb`c`f+QWe zF+VH;y7WgMJT7hH0fAT5zNXQ%g)L5ab)sn~NRo9b`vYysCtv`Rj!f-zo)xPASuXnd zZBKq35$k_T3zvPEVx=Af`guiPOzRIa&B+UG#Aze{0GdyjAy7ufciVXw>*vah_1Mry zttqb{>Rq0H-=JQAr~KNMM#LS?+weY{3<>KMi0gZ}`_YDfP7r62yieDb%>FGUNx0zSXldj9||A%y2eAQFU^%3Wv1PPDZ{)ZOc zRrB#tc*@H|IQUVhxoG@sxtM7y(4oj}%~b9JJ)zW}&|v}MJ!4#WAcOjks9K}X3&#vw zoX`N!Krg?ge`#p&EgZboQn(b}=U4f^ z=hJ*wme(aZN>fv3wNg40Ql+H#DNpO$p7=}jn}!vBBX2g28PHa~Jio+7iQPMooOZ&7 zmtfB+%$z*o5OW1Hnq_By%m(}W{IP9_j){f+*26HB)y-f~mfTjIYqvay0lTYjGZ05cnpm+3fTSW?fTj*`C0TP@TB#`-xw zJ+~N-ic3`2v#K$=%OQWxO<@Yvuu^&3w%Z->vd8vL4rs{24(9bGMObk+L9p2+I}!Bu zkJAo}e>e<;vzIL?v?U|^<7$EMt4nI7pjoPYAu=H+ z(37^{sHFawsa>(2r6JZ0uG@0GgwrLq(w$2HkQWdM-2BNOTxAwgi-Ine{uAb7_^1 z^xKatIP575COtb6R8Q(S!i!Ht&BBwq3bW)gq$DXI$s@6za3p8d2sRNbx#qjy ze;gY_Qpq;7cJ@|urFu3ysS>W(Aix!Z0ukG_PN?$)M2}YF@4wR!fT*0P{`puQX0;_! zcTUoGn8o`l@3M&Blu)7P7*`2Uja>IXJPM-ZB6AaKu3b8mPpw1|ya^M(zZkkStP#S= zy*A)dHIO%g9N+#qg60*(dN=O}vkfM9{`3wn+WmqI4X{(#7DGa_NSMX2E{rkog{3B*cd1kvB zYrE9Ta1B(FuTTW~+y4M@jN=aYEg*Xfpk>SIQUho@pnpakWUIhUQ%XrALj6Q{7)!+)Oauk|(|w?9Jwx`5c!RfAtyK>y^Z0c!%ZJcEQ_?)xE{LvbIjf=SxEuc5VBB| zNZGKJrUB&1*qFvZ;@~?iGB9#7yG1`vsZm=@^(x&8Nzz7%A5%X)z42huPh9j~nedI5 z9HSo&q!zYDm`C+k?r{#Kgs)?+%bQY@nMNwBy?EzudUZJrnf9C2>m=Z!M zl0kHksM~=jwj|9j6gfb_N}S?TbG}*{ z2yL_?o}Gq@Np4P%;*$iKorD1-dbz-eqw0vr;+H>>ENM_*_ALt2sXEIteWTP&4$;BG z8|90j5S-wxPD`Y2f2FqRGOa5qDN>w$Dr9+n$9>P#ZHc&5C~m?nthrT6*jcwQ(t(Ep z>cL*K8b-)6eq@cmk+t>0qeQR10ph0o=jg;ZqOCq-grt9$VG5E283%aUB8-nCHlf?u zP4`NlD*p76NeXPWL{uB^-CKy*os6A^!xkiPKpLg0vQ)m8e^pCcRMJ!-A-Yz=k+B|` z21zDl$N&w!=*Z!PdvdjJD6Pt`jjk1sJeGrPd9EQL1Ne+3A`Fr5F}?(wH)_GG1WIz- zX<1Ux5kHwf5`Ix9{V`XCM3AIoE8E{lhFfeH-A=6W$>*Na+kSB@+9YFE3v)wKQBDdR zCKTNMhIt<`f6wcQ?I^cyf|!>Yrm2FF1xaZ;^S{XMK3>?FQB0a;p?cEl%$-3ZAaepa zjrihzc$5^YLsV129&?Wa1Q1-@Pawws04zhooFQ(;l8%)s4HdfK(3Gv!9pjjh?H=I9 zD{7U5RTUj26KT@e^H%|GY574ScpU68R8adWU2ULhe*xatFq-Di2r%E3~dRC;$v}sa~l*E*(bq`J~3R4&Axi3?C!_$ks&oKCQ%hswZ zesM*VIbCPCQ`6FX1-WgHiM)BFB)vq~d9;U_)D+~mC@ETyK#juP$G_mNoB(#*aeXay z8XVJNf6H`eq_Q;qbq%7_(yDJyX-Z8yY@`Q#%|DLmN@S%!#-IrVm>MoV^gDzfr4azQw+cd1Ko(7vVygS6l+`U1f~_M_>|}ob z08CQ8R>rxM6zU)(?qyLQt}d{s8!1(`*-e-{c`B|IK)&PhwH`og4$^?bnXidHff z%DCPB093VQmx@xMNV>2T35|)3Ab@@2V-tv|;4Po4xwfX#(-i6+WG!BLy$FxZz>^?t zw=+9pE4(OPdg7IZ71Ndy(u=Fmtzl9k1nwe!n|_f?uBjb%YO8lKuP+9xQBE!9q053P zf7uM`D@Z~@lxK0Qhy)lrh!P!mP>^!BrM6tw^R-pknxdtmw5pY+TSHz_G^g_rpIIu@ zW(LFv+DxK_&ZVf!j;_|#9d>8Ay;6`0>yZBdmR4p-(4RtNZ2&}k_rZHgZlmg_e#>fl zvYw%C)Xh4aQkrhD&n?oV>4l_|r~pX#@?1dC zsx+li5TmHc5KhxDF=Est1S@$n1?l><9pCAOHaE z=!6?7eZq#ijaHT{H1^6mc31u8h3Yhb<7v~N>Q15xI}Q|LNQ^?>DO+lYO>I_-e*rGm zD$hz6Q1Vu#Edc6JPM!>aASZ~E$ewPgL5wCeR%;!al@!!=_JUg~Ah@!n9YmeW@ z%go-NVZAB}rhuYcgy|thU;qxpe{Un(1GlQNKzgW(F1G8HMQhiTs+p$Hs(7WB!~^CP z$LBIr0VxCybrZCsYKdtaWiN9uTJxS?`_}W9Y41K;Z;?Y)ZVPqQwn$PNOTdDufjbSx z@xCDZq>Dxl!T>e#K~z~S79=$7v5S?3+J^#Z+qK-@X&zw`Q{;s$qF{gYe=;`2zzP>q zExg6lOEoB^w{-^JQbztw?!=WVO!r+n*dXpilql{w;}p<{787+|;*PgH*-kh(P8>(f$j1>#2wAEFql!UMgw9E3qN?-z{f2&UbM#2dq#aOS3 zHkn#Ty9c;lTk6;TA39n_Uw0{4GySC~SPdeMqKhz6D^vnPQd@W=M&y}+ARIhM-MDZk zfS z^$IRD%vOJMp?;Y`A*Y)Pb;Ye9D52;l)O7M>e~oCI;Ku-De=TDJx?OH?_Y3RI9*fWx zcx=8NJ)3(&oZ>7VPS%sw{gZ);tIj$Ph|al-Ew?!JNq1%uUu(8F<%oo#K6S?8{{WQQ zlH7no5v+opf*weKG3p#+(dm7GL8Bh=fIe%@2ATCu56E$|?jLl&GP;?Pa{mBLF6~;a znYqi$^^}F$f5#l84K0@n!2xikN|q&DfCp{y!_sPH)Q>l#Eb*+zrH;xrnl=!2@}BhZ?8#-RRkJo*o2sHwN=;2L^AQBW`Jl%BpaJ>e z(rO`@f4iD%-jLW|8OUCc==BBLG-f6`tbw(6l+0@3d|yH8i?n8!IFs=1JuT zh?w@~zf$cpg$#OQK8sr;WcYqZ-wWC~JH!V^KG9VF0OUW8bXxjt*2*dnGQM?Yku2J? z8%S(w1;goDiAt5_9R(poAd)>^$H9N7H?#>4e;gj)^Vs9v%H!)aMiEXH%U)OUUEvF; zeF*9kc}u7))MfkquBXq-_v?G5wF5GT>7LtCPcgyV5R<7m_xf#QbH?b+7Lky096tUd z>bO(sWP!p)I~@q=@9p{(*Zewo?mbt&Te>Ua#^phk^YLGiYU(11ZrPd0Od-0af=U^y ze>@eK3)*Dto(GC}DS|IP1G+K)0J)>Hy1Ah6?m+zA*IUEd-e^2G0sLu-;P4JVs)SFsCrl-mkE7W8tqe)k3 z{Hl&Ujvx3_S#U`Fb4~+F-TdQtx6`dvxnhoqfW1ws<#ds>eo!Etgg_qHuO*J)l6?ZB zs*rNfJ}I_V>pn-ZB;2!Ba4xNB)GgLJ6{M`r!Ao4g=eQ@@F`7*VqEk(7JxXjkf9RQ+ z9q<8teet=P?iD7E+iYDW3IR(j(j^I6&Zq^&5JGnB0oB-)ohe0g zF6Mv1)QRr&lcVov+t4Q`_l0mWU;! zh7yD{o;RcNTAZ{jh9B?F& zgt_ADl86Jg_z68_uI{R(e^#>6^{Hv|7NiiCbsZ^6xd>4Lc03*M@ENsGB$Z~Z%k=at zrjplgkfsuDb6P!4bNk0VAMNmrXEq3HTj{*@PP7%FVWB? z6!hS_ul~i*kdjmm?io9n-+z#d9U8R(rQ`aW{c&{d0RI3F{N&GJkEjNMIbSn&q3+IvbvUtl@Rq?XoK@u zAFn?=FglH^3_Goj(7E7{Qe={~*Vu@7hwW$wP)Ucu) zb;7i`nx&;G3s51c1d^a17>SU($~Ft`_{eB!9-LY!=m6e===WEo)+OkAs(trE~y2y^x3f8fQR%Bu58{iW0ef21~Icq#dRKYR!@h#FU#>j2N) zBF;TMLPDIm<%+aZBe``Amm7o3>OygsRfdQ5ApDbJBzzZu=q^pwThRH~x`e5N;MjjAQ=fx{{TLbE-9^U!DtJubxNwWG?hRQ zG>yKSZ5Spr0Fw8-xN|{oPgho|eJOEXqqKuROj!;2B4+X_5pGpUI$clZjU=8w=hFb{ zr0DOelHjE!FqH$?k-zOQCVOq$0vw#yDd_DgtpGlBf&_0f@Ace91<%@128&s8+-QMQZ-qhHJ-=L5{n$q4 zHC#GUeg@fayrl_4kGk6=D1Km__8s?7Bk7Fuy4=?E3ly}iRT+iHn+_&@E^h~eKhJNT ze-^Sj%8+JNG=hBOt4RF9H{*jG{{XHmjHu9QG_vL(>#d}}Cr~4K-?#c=5K*w@NQ}(N z58_sV3s*Z4>h|E`m6{2jTFhkKs+oQAqOi)Ci87c}k@|zM+X@b=v}D){?Pa|sbnUiE zgeG{1-@nTg>NyCSYY6I_f*z5mNKq+Jf8Xo+;3|rR+^Af-C;_F(1c=f({X1@P3kM-U zO2ap#feyF<)xq3wKcBWCYP{A~U%sTEdcpLFAi*2+{P01wgd43u{q-7-r6ypRp7|o=RjV{%|)qn^l5P{{Ve9lzK>skP42&xWppWG^pzDfyDm+h>#*Be_!)s z^~9>-5k1gKyS8fz#7QP}Z39U^rXadid0IPn(;zGvBmhtR?~7G=DivQ=N1a`^9Wb^JmcuU?BnA1u7brg2` zB`h%5aR^d~RBf>4K3K}<5>dApe+d)$(TZyIKXtj%(>moU(!hS94V9ggN&<)~Fp^A8 z!24pVji-7mCrsMgl@qNdOa!I#%u8-&cGyd0QRrF{I}M=)Eb> zUjTNG4LvP#>6#p*y61}Yvb(L(upDNCOQ~3+rBVI>K-S;@xJJ;Bk%F1w?hPCS3~tj! zbh-|kQ&VQ^<1}tUX|oG~f64At%L?|~VBG;sIm6Ey6iBt+u8+p(JMQnMHe8iv1 z2qeV!8^rB{1cw4SLiXa99~o0HEi108bhL#h@F~+qlB7)Tr4^7!fA83U2<9=dvf4(< z$5pi+UVXIy{cUPeloXPd+eWSit&(8#xQG&9n8EHOrR^5CwB_?=Xfa3eDVZZ(T!K_( zN+Y@7lPBmfK+=RQpR+K)Mw)32s!(04aYZ{HpF5d5%*NQOBp~XyrL>d`Dq z@d=Wx_LH|`8^PNUf1c{eq+3+Ud1~_9Yf4-Skxq~Vb|msU!IBOx$^va<)jO-p6>3rt zf;A`81DV@tKK}rwDPH9Q9;JCfP1L$nl2;+q1CBe18%OfQ%_+LLQC16jP*6~%C=ChJ zxiPmN%Ws|{zEPCatuaCkLr8>fk~b!1L~whLkj3WJ(WMKHe~m)wbrCd8mD&Yk`Hf6ehq z2NXZXB`yW1h%yMB&w2WD^2AnM*$rD#%k^mi8j#+Q6jQ>Fsz>RhVpS``(5ikPI>DGaozR*e5P81QX%)GUJk={1ZP%WnG*s1zF zr-zywc}ZL3nIJx$$V}oe2LY9GSbpB$f7x;j(|EP@Qoe@a)!v#aqL(mQZIo{1*GrP(9wNG_je^VC2M3+4IT2I53xLQy_NK$o}P*gzJ zQwHXP-BgY8-dos}d8e;;X_KS@1%CaoO%$j&sBU)(isqMZq+3DPKxMT$ttkb2YEj+* z26mi6F=}qIp5=a;I-7MX7Ha!zNoJeMMKv1*wm_0jl)&0aJNG2SoG*1@9&C48W^A*V zfAYIcJ$R!bhvYQ#X(bC#5>xV20$}nnVa+E6M~48BxpF_5MKe5)pU=JzYF_eCwf8o3 z9cl|qZj-!^_4;Cs+JKU(`A)Mk)!nZ*Yw@>yGquTPg}P*{tIKH#LW1>=^8!I1KVdZ1 zl1-u{3@44(6)qHE8jjxJL=WqRZ3s^be+s)4xItX%AGh<^bBds>i&2}wO35x0>j5Hn zNdEv_R@D{-^HSjt&c}T}x7P=>5yAsju=UqcU@ViSb{miQdvSo;iyW%km1euBF1*HK zsM5u~384`y67PNBb_(2JHL_k`$Kc~+YS`~vqY{k_qFyc%? zxmVYX&n8YNv|5N;)%K;9o?QzGdZeV9bU5yWtzW{0C<0Om08AJg#?gu`prEVD3oX~z zRof`*Zggs8#t=dna-cb|Bqe^6e*_V@oxmU%GB6C>TaiT(t;xM5Zmnus{c9VNH&NSc z7SL33hUG-is8!GIrdL>Lg9xZBg*s8Jl%SImkfK$jkSBg{Bm$+L5`{TSZ#Ao^X05$$ zsmDs5^HRc;kV;VpWTqoZKmgCa2X85W+SR+YU5OOWP>Q$K@X-5|=q*Bke}Z)Z2_*jj z3ECvc0N@-e;;$5kxY%-C`l)rf!z5d4UrNbxrmob|o(Fk8dtZtU!*HN>!~}uW5PN{2 zO?^H~LWeEZ-zzWY4B=}EB$`$;39e-go%Dw8BA{>pgpdI{K){;5p%(L-XgBcvDH&zX zJy5nGEmLQ^4cIM7QAOg;fAs@|cLn-aTtV(OU=Py}0nrI9C#d&l@8+JPsrl{N717^% zO?FaL-jQ3A@AP*9IQ1pBRZjef1_MXh6)}sT4psX-9e(j&$oi$X&a!0RyOnLa=Y(16 z9Z4dWKIMvv1a4%aDw2kj2qZ#51DM!i5Lz*WY~1`+`?9jvNBli!f4f5$I?StOsi^oh zF!j?c1k#{t60pydqLd_%HV3dg;C$%?S+pKo1BfH`T=S}48}hQUrNZT5>V0)8C>Z<~ zYuIkBG(kHBAgqNYM3kg~CBv`;sUr})R^rk3*+wvj3OMcEa2)scT-J40Cx2rzE_b%o zuH|?YiABPV>Pm`bf3%$~r_D^ED?=@|3QUhMH~}ExZfshJ_Q_(_ku#!_+r?Mk#c*z; z{{Z3Z&vlR1-E!Yh>IcHR3UMv7SLdjuDk(5qAyPmDst>1eClt*DEE`zk@%soJs@;;? zK8145qJ4&bDeaZPwyzm&)p<(NrCMI1Kmdu=r79Yv#{7;9e*=pD01lM?R|EI)Q0g@J z1Q32|hR4|<;_lghZq=A6Er_( z!2MGjs?+Wk>IcxK?06FKBavlg-meurgt+r>@-Q%K}xr8Koolae;akY1p ztu2tD0GSx)OX1qqA8IFm?JI10m>e+heZ(N^ZMWR7R$0E~yOq7<5|>k3Zgq_Z>ZFLD zY-DsYvzC$YKf-9*ayU~^W_lZ4)w;%33@20dXm~f|e~mx{sYAItK^yEj#z{>IPh?k+ z7f#AqmoHUZ>1soC?AIzCr>v$>r*eB4Nb=OK(4bG~ahdvu0Zw*3>c*U1hUetErS9N* zr(!uXJyDCp1+=b-%?V<$hZ2+ch|%c^1_&wAb~A(1%o^)qq^GgjYw{O#=!cAIYW$%= z;T!E9e`(C&kSZAz8B0Dc*Q)Jie3YS-)G7*=5(q$C5J81V0V?*M3*%D6107_2N4wqg zTx~{$(H+rI8L{`%)1u|RIX=%zzeFsH&9=+CS;wZAcT}1j#Kk#V4Cz@xL!)J|w5ci_ z#H7J6q>rX}cZrF1mb)Vt!9Ij>{Q56Bs?jjDf6tGBlHd0FgUx+HqI4t19X3p(M?w5h zimc0*kc0h_&bCCRw)bH$0vM=3^;T0V5}hg`Xyg!OLpHlX2AQUPJqDl5!f1co!gxK~ z!Rbex8Y#6h0M`rk=KEj&0E_2qxz=?0>6b;izO~94yJhCw&Cf1gs1{tMxzae0rs^3| zfAlD)a1@mQw$&+6NfC}brMp3Cut(VRE1?@hz5f8Zj=kK;a;I8drg7D)VB>(txzEeo^}U) zhWmYS9jah&bm62f^j3R+O=xM>hnH5D5hp{=fR#L<15^owgTNVQdP78KQK(d+ZkT@C3Sr0I8BYN)_$fHn|S z_sf=5qE#J@EV`wk!&1#f3R1Rp4aggk6%)M2eaw? z!7!ahUe&Vl?fZ^7 zz)=}TxNw_fR3g7O+Gx~CSg&NA92ik2>&6QpU%&KL!(6ODMy&`LrT&s-L2FGST5NgdzUJ6)`LKvfK}XdB6By3}o?v%SCLb-0F8SXm z->|)#xa;#=*Q~ukf9m&5G7d~RkFCk+!t<7Usi(}j+c8<`?r6&tepN&C)WMaZ4IsJY zHqk382_%rSG83tkvS{Pp8Y$M|EEfu)&s!vM$IZ=TGDz*MumGS57u>4#yTxZzGk#3S z7K?9)-k9Y2%eAXA)Yo+nGuzo!y8i91KOPu0H(UCxHzHc>}v_c5OpX|BRK%vM4UE?R3?PJw+jCdh?O4Iewz%{cY*RC9y|GS4`*yH4iw`Z9rC#P|(UD&TB(@*&@d5 zah#AaEQF|pe-b~-&s^9P2XI$;qH?;D{a~rDx2BS)`K?sZH&Nz>TrD!CG?xyYVJb?~ zs6aYo0XSZ~Fv9jU*yJ8KCW;*~ES05Q-&3D)6u!|)o4JBg;RKCLj^mBfg=r|j+U@(M z>Ib*)Us~apU2YQ!2v-~!f`4!^wI+gPPbn!N5vF)df1lG4Kq))5DYytzV^7jS`OoVc zVRw{m<#jHTU7Kq8Lt5i$DAts@yn;QyX~O4j_?*;jphECBQ!;7k*Hd#gNO>hFv}Ov* zW|DUNB)X#C{{T=>N9l)Yq~E7$eyRI%E268{S2mz&l1#za$=m)2#>NE*7fJ@2 zPN1bhe;cP%jn8TMV2g#OwjifPD@Zz=07{}~0lO-k*0p6+KZ=TqWok@zjQif>JKK?F2Xoe2{>4rhMGP7|=LjB`o5P>Ru5 ze{J9usEtJKJHh#U=e7xJcVn{Q}-vYLu*|*&i|2 z)LrW+jYUR;hKMdcBL}~M|83sYB#GZwS+B_bt{r%xBG94wksja1@g50UP^bt~DvkV%5n>N1&f!BzxlbHr4HV!<3g4q$wdYusioZFMpOGdsNu!e_AaS zsacgIY&koT{{TJlHv}c5A^f_vtZ7mv2J;3FA6#DWs)~hl*A?jqA_$Tseuo#iw5&9h z55ZKb;23rBrA8GB>{18y2X6SH@m7dOYgN*-DsS%{MoyxU5&r$KJFQV+3PVp$k6C_I zt9{~rvHtk2$`G^hEYZ9iX=zhqe`rbM{=J~#Zpch%+Kf4(lTwg}Ac4FNK3Gv|J>8OA z#h8}+1d4##R03rt2_Nb(vMDjH3b}8pw^iK5MbXllf`lcf!oVaTl^_!bV52(`xZXs9 zCAY#Yeq)po6&f@x_GOg%IzyO z=Nyl1wpL!<8kW-(TA1>g{{ZM((d3npx`I*(ff(dS3~~@SbrbIxTjC(HyDGML%8cA- zmq4~qKN+BfX(Y*UBW}ZPfByh1E!ROCXxXn2ar&kzHqv)M)L9nVvx-;VO2y*c8KGDZLroHpe^dX z3DlYvti3X`Qae>@sU+Lu*QQ587* z$w=TOQTv~#1M7khAy(Fumag08I9zS-%ubEA0CW0aguaLjb~#I{C@vvF9!iHQ1ab#x z!HHT`d1llop}Cr3N{R;|FiBA$?Y}U zs3LGctv3>~x7+kMf33_2A1LIF$G$8*hpK`#Az|j)8d9Z_WlBB$j>G!m_XHbBD-_IE zJ66&IWl7dlq5#t%ZXohE17bb-7_GruT6s;}p{RdS6hVamM_>9MA+ci>I zTBIpTUc~&ikL8N<1*x^kTlBSPeNfTT6)=J~@BMH=!Ab)KFR8pZmecVKnNIMdxZXBC z(~D3FTG8H?e;!Jg3jri49n7C^rU|^Ea8tihRHD&ZTnB>@Gr=e6iUQRPESklovadB= z#Oj0F`EiS*N^-GBP+oYgM3C9^`nLjj`3;63$x#{c$@37D01&khuUwekPs?yHbW+Hr z&AemucQAN}@Z+1hNt141*j4TaHsH zlKdsams91I!pc_LhY4r-P1x(lUvhlWI!Q~|22TL~o$UQrX3bqn@Ym8SWv@SH?7?UF zS81xQe>rs-a;eJdtC;eOVz!y4yu~ajr7!!+Ty3yON{A>-X)YXsv$8oScG~OLAFA`0 zQu;fb{?T@F_e8QzV83Lpn`I2@jKg}XX~wD^cBvH-uZn#z(&`sXu;m+c%5f~07URT{ zlAQ8JbtGBE-{0OAwx7YqXjvk@AIE<9Uf{9Xf3n6>voV(PPF|+7+Ng(@L2ROIC7Nc6 zl(2-3!&20J$t0c5G&m5kizd!WFYg6_R+qulBXh)d{{UQ8)pcvhziF;_@rh4)=}ou7 zr%$i9me|a-w@kw2nw&h9xXnM5!w<@UN;ExC@Ctxb+D|QvItIj8;^G0JN}Zem*W{$= zf6jXQSYLgkm@?i?v(kkC~7zy;r{{Wrm+Y!_b6b7-?ZuQZWQ+cn{{5x%^6`gUfiIeR+e{JoF zU?@V_+u9#WkP1j6j%Vk$%Y0V~hbpyXqsvq|*6VzsQ_a;@skGIlH7YH-Qk43%NlvK% zNE-au90eeg`D6j^K3_aSf6!2pZ_#S~)U?`Gxh@4vg+}B0jxY`Zsesr*y?6?y zP;Q_h)uj1r8-ywd3WLu3!PxPDQi2C2Uu)a7G@F%UPn5W{rA#(ZOJPJLC`koT$q)(P z4lx=I)hsJ5y86Lrk1t6FV57g!_2Zq!B9;~$zc}qH>kCQ#6zVg%F(1Ane;{Zf{_wO^ z)eBd|Aq#%Et3Y^4))yohne`3_v~3s-xkbAa7bDLW-mvE0r!#iTRaJD9w3fBGM_h}y z!m_5S3V*w4N{Wio>waRCP(s6vq!FNi4+Ore0X42>-sJSF`?S%Fuh&Jn=ewIK6pw~l z6dKKL1uf!HrDjIS5Whg~f9B-r-UfZyLR<*N4}eowW$v~+MwUgwu}kutN>($H(<&f@ zDtFQWJHRpr7$VlF*O691_$x(q#)90YY3i?Sp+U4Y@f8oHzddPh)MUhyrAi=t_KYWG zC|p#O`J_`m9;3d}EovU0E~&DjOmG1*WR1JX9q=W!!K6vOzp5FAe~GVxb>}n?eBhT3 zf(aa?{D|9(K;o}sLS0#7>0W4Bs_q>=wY5-4TbB!MC%{z$%=|?uZOQ#ldBr-OD2yW# z8lY0ke@$%m%(bxDCx(i{W_n@AxmQIwOmGpc+f6HTSs+OP3NNfb9Z7C`c01`%^PQ!Eh;l5Z&^D>{)X4*HPTx{)?skVu{20x(n*E(J|f zmvYU?N~o){Q@RxaYb}KZ2pp0K;D4?QbGxc7Y3P?Pr9C%&e`V$6wsn=21qCT2PhqAu z+w1eihrha_)^kWP(7caM-kM}Q()~kQPQa2$;0TYWJ9_vr#Uow@B=zOSJt1R^Hl^r}1Sy{ zH-oqy-`rF zEQKK19jHP`SXRuvS)#QgS||Sp!9R1*&8TZ>TV7{Z4KB{ zczyarxS*F%&0+XzX5K0D8}i!J8&W0=M?wBv(-*%dy?y(V9V6P^p~i^IWVRemDqK!UZp$(Xm zf4=4-JM4R6nD=g@m2PMO1D7(bUSYT*jl96y4LX^5ZZ#nZ+EhT;05^%?M<))FQ5!6a zOJjE)Q{2$jNVZoyPnWCJQA*kXL$AIyAjA}b6S&?F0LMGyI|Qy4;gt7mX~zgGu+urJ z<}J_Cd5$uYX;2pdO6;BXnCx~u3|xf9e=Q3s#;J5(oaOr0f*7_|(z2$Y`Dmp9NN_}z z1gP!v-U!@p2cJBHu5E0JGI+wdJn!Cg3$>{lY68LX)#>vU*-6-vKARujF@95h7O+iG zS!U+-sg>EUj&_J!AA4W~!Z3e<}n~ zy;VweiJ3m5vVr#m9f=&{K+^yLcPS=f4Gt48zjDV-^35G@-)XF_xVBulQ~8n~K?Lqd z^qCPo{#%lv9GZubR0jnx7Dm8s$yK_{-Ip)-f4ys2@@kgSLX!TcTS5~s0MtDpBy9xG z1F_N~dmFawB)UNJ*+E&nXLDtnbQCJ+RrAip{0WG1R0#fpo?vd(loPOo^8o#e;$Tib#5r9VWp)J^d0`V2Lb^lIwO#~OKH@dJIG1WnBems z$G3Bg>q^vVy8}5}2f3cPr%k=VQzs|pt z8j0==Ek6GM;Um4|9=q5&O_uCEC(QX?ruSgD`PW-^aHDzaMq#8XcU3(^B~G?MTW+Ok zk`~k%25@t>SIE;FfS_>UVB?>APYT-jjE;1TG)GJjd#-$ZEA>k*WqhA}9X#n@P%n1s zT+WQml(R)Dn6jbEf7NPhis)3dETmJd0knlA6(LH3lg3GOZ)`1&IzQ!z?c9x|xHuZS zw;Xl?(}t!Z_hhsZ4UTXskIUw|A5D4#ovd`78tI;JuBN!v-V%)M0z%ujlkjgR zuV2x2n((ITEiR-9Mc;JtWlcOkK`9%L<&2WH<9E3Jp$uSdZ=wEG@x-g{y5`n`3Ld9( zNj%9~c{s_THvq2WEjr9N6{QhUDq7PJrU)mW%AxPyd~W8}Y=qL7!nox7$F?W>Ro+u; zTb^E!L}~eRe?Hx?Jd{Avykr{U#aKy$pm-Gu0a-qOpeBz*Jxt!DAaSZ~H z{VRZ#wxw^R4&p>k-H*OI4QZg!%EbAZ9EIIGC$^iNf1T{Qi<=K7uAwU)YbY94XJ7z5 zg!9JOM2vWnxC=? z<|(zmScGX_m3gX(_aGi{&81Ta+d)kBU%uu_mT5AkS-9QaT&bq*w#RA|KlWXW+b9p6t6t?p9KtMjkl!!ZUVmsqYH9AQd zxw15a>J}%(BOO~$$y+SG7W_(FRw*sL9K1HUAzu`xnE?0v>k*9e>U6L-bKEQ9e@jk| zIUH%D@93W|zz2!@vJGX*&tmu=}O{{RWyNUCXQOr4j1*I|5Wk92LLM%z!aX@kSrb83Wb8{Qy>Ujvwl??*3JYpR%IK ze?ZAy)2#Qvt;ued*H7w+*nVjKbBce8G*veKD%+)h`>9!MUuC~YX|4WlY|j~)NH9~X z;@eACCI~}29ySD@o-@0|-VKJ2ciBz+D@#bSyiemFDdnFJz9+L^NwRHKVl8%qK;;;& zsqS}z%)4b@?rR@p^L>>M8 zw;N+yO%+aQ+N`v>-rVI9yy2@#K`;yvJDss)5>jlFNU99mNacDROW;5n0A9d*{LgF+ z;*rs{HD-8Soe!>xx{j67rW|xtQ~AZjXjmj5yooY_B*1`32b?BbtR_a=K8cS_f3x;y zZ>R>MqOppK71IUPFvSxsmjYB%uhR0C6qPJ?AdQa#62kL>oaVG=E4jZy`bW~xu(ldJWeyUr?#i(l<) z4TCPEX&Y}7$G3RJ`zmmwcR4pFe@e%tU&MR;d-00{2yBG|xy1%$P68NbMiPLM=p`SRfh2bRox5WBDp(w-zqak@C(Z-< zpZPc{r2*Z-2ERLo9ZQIO%1`QHU%BREwgED!Npj8<$$Yxfhvf+ zuk$ClL#ai&tcI29-zu z03;A`&(+7ng4?HX;ZyGx$*!cQb+IO-I-)m(pcS9y0LMApg{G__e{5D(o*rYAz=u|+ zbu3AhDMn;>f;hxzpszNYF=s-n(8?MDH&pE%=jDP>@Vb9U^4pY&X=a><9x_PfQg|oz z!<)hqZFJ8PH;Q&#vt{Hwn5U;mT4%nW`llBe_K86HCYLe$(ww)Y$50INSFsbvIB;=E zAX*-#wWo};T-YQTe}#ZPW_jZlX!KMq1}f>$RI^yoDu7R!-go2Y18(@RZAuCsysfP+ zYAX_;p&%p^KTgpj5L$!)u;ud198--u24_l8t-iZR{{Vbit;kBd-L|2nvqI~Rl%$dP zN|H{~#Kil1Vk@wOaqy*~mlF2DAhsI!9lg7A{`i8_JW`RXf1M*p4k?#b6ksh)!b#u> zo_7K_l74uIMOqoG&t|8saVd2`wE9^o^41Df0Z?|>`o{)9`5YCJsE|3~8%>+2DqCC3 zH1s1>nA$+xN#Y{_)j%r0ykY`TZeLdB8WmKxO1fvz@`9l%KqP4fhzZ;-TQF z5t-$;;8#`y?S#0h zb?FN!RDi8BF{mg{x?>bgC<8}y3NuBG+GgqzR+S;>44t8BGk>u4Zgx?Rk@-vp)H`Vg z_F}O#`qt~k326dK)|o&%okCy;lP9+S09j^`mRU$I?+Ju#|l@!X5BUA~M z0jV-Z!bfZnux%9$riFyLKiT0-rJZBSFzV3&Anmb}vD|EZ{#avNYSN2ukfErnO(IuN zqOg`y6zWt!(0`rCQl#u7-*4F9w~kN{D+x_*da^Q>nX9=l%dVg9&Am|C3xpT|N`c&v zKDfQz5bY$KDYDLHWtwMJg(buz^FEi-5C{M$YM9vSB+Ljnw)RASDsfMGXoMGwNfK0$ zx`xz9fw+ZkH{>1uk%I=3&2>^L^2(9s1)*Apsuq|qK7YRd0JaQeKq*mr#nA4Kb+)RO z=hRG;h2E%AkGiu(rl;WVGzA7wS*mZ;q@<}s%X7?Vf}l`Bh$KTwrpqG*1CGm!czXLf za<@z~u42ypUh56psE$|WipuP_YE?M3(c5XBN;NX-7;{xhmF2Wl*-&5>P@vrE!dn20 zn>T0W=zp|Hs*r#hD+AY$(RxzS?W)acr?BPwMJ>MHMuOE1zTU%ZF-`~YHrsH73Elwr z?}z5HvjTH@Tf0`G=A8x!;3yd$-1D~^;`s`m<7j`qLm^>kN#AYxKHpuUK3JpgRt*G# z`B6aa?$nxMslO;kP#%nJ16=J7L5s z1n{7C>ZKr{xD4;V`~7iL+qE0Q3|zuWkRR9>Qb3scdw0MSX_gj_-6@`@ai^pOHx3l6 zq=^trjt~TtQ4;*uGd9nMJ2MKZZNbHt;(gmqExL$R<$URsO$mQdO!e1BO6>H zvVVC(^%JXIHt7A0IjgIEMzG~uV#)Gr^DX6?Hr^w%VZ{RJ`6LsAE)5oNqgv;av|V;p zj+}VF@VC|r%UM&T-X?N3WV)u0rNCFkL*_p@Pl~qr(<(1)b-QF-TOBx z<6TaQyHoa>B`{E>fTXGQvGEHrB0+8sykW67{E$vb2~w7akyS-{M=R9jb}u&vtbYlj z4!KrMW0VSPl@%RFP)RVYYIKr!B&ta`riNLrdZDs;R?2&!K}Mxcl!NmmpX-KgRb(O? zyOj|ROo=Do{=ZCEwOf?Py(J{2P5@xR3g`ZxD8$OU3!Qk1@nz9Z3wch1JN4f?IbpTk zF3Gl0RU*|@SRScUYjG&kOofm%Hh-fe0k^rrrE?lB{Y@q@l0NqI^`tjPykK~8@eEvN zqn%lyzq-Q;b>=DPs+dqpVrS1~0FfhLNgTvrXw~ITw0~7;%Vmo~s#2ScL#P!bFwH{s z22rIWK>i{L^?HdUsP7N~F{EFrqTrsfcwB|0T7pRQB*{B>_A|fhhHWS}6n}HKUp}0+ z`VzL(m~bi;tBr^|5Kn9k0m5K7v>CExw8M(Er)LVoWyO?gDkO~r!4hU7K3J`{!hzHh zd(G0i=X|cTGf!7UntD*fb)Y36>IFf@fLEvkDUt*h)c^=3ZfW5VAS)HN?3U@weJDeK=Ip@bY07lhE}P}*<{w=%g~U~>$bV%DVSs&WaY+Oj zQUirhmA#K>+D?9I+}KDDAOYw|{d%v^KA*95sL6J9Tr*OyH4a+YRaM@i*eKUp@{kIj zG|5U*z*31JustFHo=LVdi&=ckg7H}2Y2+NnYc&}r7XVz}BhvQyt}=iV_h zYV4vLYcru!Nt`R`AncliGgyTV;X%}SgMQ)3KI0Oz!oE2QWPjeemq0?0&R)8wx0s5X zbBE_6;u3#gF+>iCta_>1>NW0-IH^VpnSl{PxAm4e$_M_jIy^=$m>= zYE30a!KLSy?6Q>*l%jWoB}0Eqf^1A0YOE^}?#~O0^?xU!J|^f`sd0TrtGipuiBnlF zotty3LSHU66oiDjRplQgVJ@gGB0x%sRy29={{W@GJpTZ1QH6e3_XW=pn<}!}Mqj3~ zsj5mw!)DiBmmW(;NK7a^eCE}(l?8%HB$7FR0uG=+DVW&rCU)6a$FMZ>VQUW$9A#0n z-hW`!@7x#4u;Yz9y-Etym8kFlguoh%gGI1KbcK@(v@;fXDQ;k8T zjNt(*Z#|lIl`zm+S|`sdRO?ZIkRxDwPk(>Y0s$%mY9&^OSNNO=A=w}f2Y%DE@;lEs zEtIASO{#7!H$a-A=}kfqe3c;U(Gw~ox<>r)cf!CW-ijP>l(%z3X*GtmY`T&Z2behQ zv>4p>k2X={3oWXqRNxTqUTHFr-TMV5)3lz0M6Phw<|u)*mABXEe3XQE`~ z(t_rLLzUnL>wL6RHu{tnLV~sL>4PXej>#K;u0FP5CdlZ%S{OEGlme~_Y02}DfVNaL z#>ysnJd?rO`QhG3A!jTtHi@UWzJH`4=iXkB%%u~_?BX7(&j&Y85y}P#_pe^29EQoCse^u2|B$bl}B0{El z{(nqmtR<6`I$2X`N?e4;V?3GMj$`^@FF03%6TFJi{?In2v} z-XDHR^gpuOtQj7m4^Hej%9Rinv?wUS{Ik#040H$PSsHjwDabqOfOrrjkC*F+1PS(iHJ3T&yBtd}dL=B*)L z2W+BS3n`fwgOvb&c_{>tAF_jb@p3$e#=Z2GtK`00GUhC z=d)2(ni^BQk{hQ1W0~E;u!X?6waN9uWF9X?o$7x+9aU z&C{Y>x-QV$^&ubuK5M$xRCe4MCIH;y4BjEDduh)#*c$y4TYn1yu-vTDRn}e{Qmw1H z+pS@={3WCBCz=j{uv4iEfRGINVgV*p6hsbK(!l3#djTi7ztw3Dcok$VU9(U#Ox?DI z%}q|i0S&OgOHH5>N%STX1j*QLcgB{=S~*K}ZFegab}AHpDro7-#=>`j`+nZoGb7Jc zL5*(#A4_FJYkvbxI(;WlN;f{jd;M`+iRz&p(Jk2<(XGdm1o~tcKhJUU#aUEMA+B}i ziIYmrNo^y$Oo%6F_rl4tm;fOrqogiWs-nK|>x%ON+6zj53)2vofCtRUoK|UBr7dH0 ztI~yCDxe^r@g`@1u;-JBlC0AFq5Em_rDk05uFhk%zkgCGb0$Nz*0kc>B&o&}^&_Kx zNDMY(wybXO>2~g6?|(2qa8?=ENdt9pY)w$;0hx{^dCCt1+qw^0BOnGz0da+n%+(C7F}fAc1y#hLB(cNd+d zWzypcH7d~A)PkY9lmIdjut_F&AYp8+=$_HAuA7iL-C(-WR@<1&luo*mii&oat4oS0 z1cjJMJ3&VxU|`H2oW z+6c;?*A}pzr6GEdg$XDDM5=Xhyq%A}D1xi4C|A^F6UaM6%zb(9zie0(hz#XG?@`?H zfb+r*q6rCtJCDoR?| zpMR9c7`p6)fH_b*)P|C!Ypdg9DbR^SxaZ7+MO4H7lge7z=Pw&T7J*;9@J5$>g>NkR=| z!eD@TgWt5^EF%KCpkC^Rxl6ThB>H6U|9=1g#R4mZEEJOK)MlT1RXWotB}fTW`)m#X zka<=EK%})@KvG`w-Kko%jYt5*eJ~^g(HI?+)qP1_1=SaZoF$5+>V$*nGD!#D)D$so z;ZbQJbq<^Lz3QOHz=xb#ISKFb{YX_2au9HxKN`emPk$>I< zr*HD&yuHY5x0UHmfOW3i&B>%(D#NsONG(+(RFZ`VB0a}HrZUYI=8&{SB^y`#+Jstj z2(#6vT}$CKmh!@X#zMexZzN0SZWtUxY%Gl@%$z6rrR5N!SuQoERCj2CJg^Ho9i5uhKi`I4hoi&3{^IoC`pA zvq~pZNdS6MlL@LNR{MC1^rT@5Rhl+|kmDPgw*B@UFOAxVwE*z7xl8@N#uC>UKb>nXr#4oezI zC8cSN&vFO6^MfrR4;-Ot&40RyPFAG>mtRmypX}z^QYX3g#4WTX)xs8`*F_@hDI4=1 z3eusbR=qn!$eoGaV|-X`nmj7MX4Yz}?Dl&@)%A3Y($iD6` zFUg`rKys+6P3bbr=1;PX_3w5L=Cr6dw`liUJHjsYb1#qA1~QiLI}%%M6Dr2#&W zK#38-f_UwSKnfE<1#qRMTMnQw-j~x3q_zrN5vNLraT{;jZZTw914sq5r(bF1wBMN1 zYC;^+H6bbkQc`;f37FWx_86ck7HMLx+S7$aX-U?gTnaz|M1MgAME8Vvm zQi636Au>v$U>P_j_gBxkQ)u#aHAS)dTFQmo7^+H|sidoMF18S*Ij9touyHDt1J2L@ z!&q8*OCYr2On=)fwD8kRhWxg}O_0zUP!Ht?vUUar*waFiP72&HZunOy-M7>EOIcft z7Pe6;)Jac$_xkUF4FOnr1#bJ)t~`pjDRn%Al%e1^0Ffi0Wx8$JDy)1cj)b|9a zG?E{1tqE?JLLG$_I93OxMLS6%Vg}|gO1mhNdbOdDq<_&Yd2Fhs0W?dLl@lg3$XS(2 zN2tk>7`i1=u1Q?B&;Bb z3p&*#0Dnm2U``4keUwqoHsqm{D(KMohe8}y>#}<6{JrD`cA@Q7el(TE0j7jHL-N!v73uZX-WYlE09T6kN}yTL=HRRV4(*d zi+cOTEhsj+wtu|T(md;Q%0&5yY68yt5DJkq+<)L4M&R4e-|~z(pjzU7G<;&^Zv!45 zp3Jm1ib|Z#P^RcIc3FKMTTfOzg}9g9LSTw^(3QHdm@6SDkX!^RSz7~6GMlH5&vkSe zEAhLj-9YOXh)$u@XP&0!s@%<-F7F|ht1hnv9c~n*rrJpKu+S<v=sZ^J0H(PT_Qc7GXSxgkECqkeQc*ggzJ-bM-Rxv4!;Dbk^Ox958&QxZG^v+*y z)WsXL%b}|kPoX7hSPdUq$XHU8kO3Q&05Juzyx|LodyX`skfhIrM0xmmY3cRf`*HGEGbg}q=F2@L7ZD$(~xad5Tthf zMX9GvLt!ti2xY>!)};wbNBN1|fPXn0Viy9a8eF%kPQUOQ_V6qyn;LV4a9Fgv`z0d++xB)8Tmlj)iN}j+Ik%`u>{Cznf@ZqPNny zNUBO3f5WDo!V~Gxl@uZd!w*k8xt8Q7oC!Zr+*u(YNlF$ z%~z#CQ>2xxWXR;GbFje2uw*K6B=MDHsLTnqu*#lvHSrGynhttPt{FO0JCgwHH-Jtb zLeN>;eU#2-FCq3>eOgrhuZL~TmgbQvDF=`S`wfQY69B6Q#ej<$wYDpfLb{Zt^|9u* z!i+6wNdT)!+<;V(JOV_W#(yDbD#0Tt1zoCYb4%i?*6I+3lG0vuM8I0M9l_>%6rH!g zV3iAv`X*-NkpYE5wR)vIk=q5gIZ(KjvsX78SV3OE{{RTwd+&iFm4QplUuoBei?3Ze zS97h()>o@*nWPtrLrT(=wyUk|xKv0RB`;Aa_KJxTw6qSQ5&+8|nSZBqI`mp}(>1cU zcN~2G0J`O0Ww(T9t$ALPtNlT;)E9G&sWt0zxs?JeOFF5kP*?m_ZUIv2#1Pvor(&f} zEi5h#+(i@j^-R@B!s5_uec$jG=o&B1Jg+&y5_eSWK0t6b+6QcF@`B18np!iMA8Bjs ze}t)h{l1;O@e4Z@bbmljtyjoir?nqfWq&w3k9<*Ulm^r4OvV~QKzU@Q1oBVLF#s<2 zC{7bL59{JM9MoT7QdpST`4f&|Q2cB>qxh zZ~VBx5UsB6w_V*Zm1znD#;r5AzqDd)35CD}{{Sky`Ln}?N^YR3dK9RTNs0H^4tByw zCCJ!%r5T^6)(71e+hw_`3yW$Zn&oY`vYMt!hM5Y`WN*TO1adJ5G>>*DoF;U(uBA|{ zxQhFIQ(q6IrhlKOQ)Nznol8kDA_kC zW~NZ@rUFqOVML;xmE1edgdN>c!|ORQ#lV{f%`$jw~Ycq`5}+lmT^J-oNPzQHpK zCUGn&U6V|*+c#Godh2GZq+*<;8hYwd-MxepNk1GjFlwEkMYEf7{y@EFx9R=h9q_pQ(!(vcT1Hn@*PBa1iT% zG`Jx{=r;LagNVW(%aFYN*3SanM5wp9Q_w!7P*Xk%iJ;8%Wz?u1$bB*!Ji%LP6UhS& zVAHwd%zp;GKJ8na{geQ;TSg+9K1DY#96ag_+)9IX@INkE-1`xl}xi!~@QvIPiDw<@2s##IieIyS+P@VM= zj&t0f445(iAn$@r zDQie0lkZ#EsAHT6Keemve^9M-w!-Syb)~vfunjBgQVCon5Ryj;Aef1cHyFg&9$i== zZGRH9H1a7>=<|iPs_v?*)wSxD-gK=MG|#C@l&6I9l64*D{CG)7^X;W}hAN(I6qPjz3QEe3lq8fA z0ohv~04Ho*dRNK`V7frk%YQ8 zFk6K!QQU@yRaaxKof*96ROCwB=~}{&OnGNl&PdMU2T2iGT@|ZFs8-IVo zwQ7xw3eknYxcCx`-ra0>`gpZO;3UY0||;Rj#AVEVve1tF&B&OCl6f zM1cczk+g}NW|A3WJ714Of{og^s@iOK1y06)t8#-)wb!XbZWdiyoKnC$?fF1RjiZAH z+ZkOL4$8Lbi4@!_Cs=$)=Dd?pM}L;`?c&@XTVdzc{hcp)O_Kr=;7}@21jz&dHs5@8 zJUhc9)V0z)8sJf{e+!?l@l8gY21eis$;IR2-Ezu)g*{VHt95o_N*73nB@QGhBmzu` zKKn?LM+aqPyG0CU>j%|d zx;1NJ*LJN%6D_8lyIKQbt%5Z;HWTgiMp2ak@@OZ^zaQp6zVRRd67=6Vl6%HSW zv^td+6|g!`dG?f^XMc=xbWS$*_A7Rz0vdXdsaZRzXw12sWxDR4W;+Arrz2<9Sb6r6)2mxWDs`e-c`do2=GGGmI(k472|SAW-FkFAa7I>LmMjoOu7OP{MxY5N z{NDcnJVz@Om{KT$2t<%Ti0_If)m4>Xus(*~Y^e*=Bzs4;{eS-e*A$F!ua~}?EwfOj)S?o!fK;8rNK_CABzG9gA@b!912k5+oaWstwoI_)EQM(n zJeilM?NkUz9}PmlZ7YuIBXt<=qEETTd1aDAZZ>}UCN_!6Z%=zjS*Cb^XHp>ke{=O5 zV>u?1mMgPWHGi6g+UuRc3^3bjao1L1C`b~cC$_}N!d!Ob^i@_>A*{<=pDs-18=6;7 zLerCHp>%1VYKIffqx>l&(hlQMIz%@+k3XU?Lq#hCSEV6AVCzcLv5rU6>nDs7n}wjN zFE1_V22=?EPXae1=kvhrQ+H%lJ>em_NQ8}(*emDs-+!DE5^Wt#du2_Mw?Im`Bfq!l zh@m)JR^FUul=&`hn1HST`S-*^)Q;_cNh8dC0H=M-0y}+o{{XfsvuKOT0N&EuNg?FS zOasr${&S0~R2)={-y2gO5LzddBzBJ9>AoVc?5`YswH+I&&fONvJ$tj$dC%lKo3xjo zEi!)Vu753n;XmbWrM9`)2g&!uYs^!F(2Dr-KX9QN>Z=C+i}OaVpoD4i;2@;!*!<6b zt~at?sZL?zvI4R82qpv*GIs>>dE^bh*9;RBheQxSp#EtJ(+WH)e@;6bIkN(Uz*e=7 z7nv043MogZf9)~q2YrD91SAKQPKgayMw%9yu79R&w7SE-VpJOkR2h$GkT*EHv~6u* zg?Y=JR(91~hZt-jl0tw04@n!1x#mAiSR@5T_^c~+tF6s6g)(X(WAaIk4_=OGON>K!V*Y?F&r9gHHMtZ+a2wAEi56lTL1fG4rTviI8&^oWGy0#GE zNq?+gs7M;*kC^?p#WvFp0uj!wDoRmYNl=~Du|L<3o)`%1s>^r?8osQRnfS3Xb}n)A z`S!q}_KFojd!QMB-M0VG78oH{YnfRqCLPV6AJWu@Zi02d_1Mfq> z)XJ)bLR?t{5VIVE+bx4`a3T1j70^?x3{RCN@pabBUVspKe3kJ^81Uf{28(RXM! zGsVr{L2QzZy*!Wjeg6PlERY8(tf(B#cSX2Io53^d+A#ygDh(vvEnU7`97sPBq=*`h z>W`NH0Mh_pTqZTO=(YRG;8&?t21t+sf1lS7xu_h&y9?&3Dix#`$q7*qPc!{S=YMFx zlW6lu<|-E3Eg^27EiRp5Y1t(3N3f9}t|_jsTSNh+V6$HCR_8~;);!psND7VqcxiPD zO4+#Dw%YoIdu2(haot5JDRBP)of{BjZy@jVpL|e~oD~@Hh0}Ux*XyN%p|6OjUzg6H zsXrkq1U{X*MB=*7EQj~soTtU)>PGouBAd>X+~8}RoKqyKJqxn zCs(Djy`v#?bo!7+(pPPzu~e~EsuyUTOW{!CYDSU|*X!SmVQXupExykx?UeGm$Kp7F zAPq|FpZUMn2UL@Qh|k&TgCgbimKXiExbuD}HBx*9~YEfRoh{<$2Ojg(WhQQX_Nh0mBs=D-2!KLu+}Ypd~Rg zBp-3^HymQXv;@^!-HWmorBW;?5CKl)!R|ey>5JM(wE?vQ_qw3UP(UHIkP;8(J%Rar z@Ij*Rt9e@*<=j@)BaSJh2Y*A2jUpF25U-yjwhL;o@Jf#BQE;KDLta>M2B9bj4QkL% z=~3)BJD3BGabOOpTwP^g-6`3q75+*;70)g7kulqTz{dEL6bCkiudH=e*WRZ{T8^Z& z$yiRZrwk2Ugb3fZEmh?#$`uK$X+EJX zo`2sF0dm!KOOxr?k@Jpm72auKs+FZHlme??tf6#R}D#8W7V`1{{SNewNWJx=eOlT0)WylV+oC}6gU$hdOxVw3xL1Kf+QAqQ2v7^k}V?E(IM}K&T?Tctrl)|ctk<=+G zZ8I=P+qd$=!QznZRjb{$qL7uc6sGu)4&&Iy8rK8wNOMRy%1*0_gn5Td_98&}e=J=Z zL%NVAt*0&zIGP2e-yyA4MFJg6st^pxDKbdfH4bNM7&NF7MX#N>IweS+=bfXs7?c8t zcP@@C8cEVfm4A`P{G385N~AN@=@lM-mk)VCDRo;)WRNG?Nil+;qN`l!DDSsc?U#!k z3$}$>>M7l&twNn!jV!hn5@t|mNRmk+cpw}l;JX}zK!6piBXkPe)l}UoX)=wCninXO zZL5B*X=l$!)UPEWDN%%nR7!*ySQ1YPdziuPX8!<0*nju9f(-%J)mf{26ei;RQ48p+(#@j41;>Z)_?!sSb8scH6st7)p=IIS-@ zmXMbHBn33Hq=2BNyu}<~1{_y6Uo;WAa_4S%vVS@NPsh=B{{RTS8Gg&YyV)(ha_BBg zygy%Ju41OH$9v9IZdBQ;l0wjms%1Dr(iE9Pf?HfjG73hBBGO0$*faWj)>-G(kMiDr zLzUP3LwHE=$Kni7X1==R&>PDXl`3ZH#$s~V)h#lJan(GuC?h~93e>2L_c(mIc%=56 zIDblldEy&bc{f$ncmm~}zRnjsN7;H|(jI{I6ES3pdYZ>BH@vldu734+xC&q~*@oUrxlwhBuPJ4`&qHdqbv)DM>rQrg z(5nq5>4g(S-mO0)r+@y~ zu+hycbDhPSSbB!SwWxj3NR+K)kg8;WqIuX2HCrJ9{j zXlZ0UK!g;y2RaYrBX}Kw?TRAGvhJ!%%VnKlII9I3mQYe$_+;wSGo+ts-Z-350_{!C zC>HIuCX}XWth9{Ydi*Or=pyDPFauN%PXMVn!c91(XAMKPjfI_StD}DJX@d%I8$J2|y6st5Zaz&csa52NXq{Qh)JC_H0>w z53=Xo^6fKfOD-4Js3lP;Cse3PL4({+IDli6Al3&6n-xXAitkXxu#n=SPsQsjt4Nmg zlORAzfDCs&p@So-RtN_QJ0DznahP+H{XMg0(EZw(*V!zZ8kX68)*#fh#X{RlH4ZgD zh=!J>BYi+=R8TG5SCmFMT7S*^aDRT|k$n}J73-)@q$xvbGdvDtcQNgWK?0@pQ^fB^ z{6=NE?A6fjp*5Io*4o5TS3cbZO*m=gHXIFT1Q`I1#P-73BvKL@Zn;d7IU#=6 z3N)<=%z~W_Qn?^D0#JaE0zeQF0N4Nk8$bYiVVFw-xJ)RsTSbI`;(vnR$%sAo`EA<+ zSwtK{gl1)>)s(rpB*#Ce%M?aYTdS1v(V0ul09FX(!QjU*KjFmM6>bU575zJE2i8Q% zng0M%e{4X~6>cc;nF9=}pelT{l>x#1zm_hFuqjJrzn3*UYMF6LoiDYxaU{&lneWEl z*pyY507WM4<^_h5*?)Y*!6jUn=M`0yM58HlCWQqlzye3B^!oPifh<%V-7%%j6!lK6 zD;{7+Iy0(H+P@O>P+xF+20RW={kD{~X9MId=I#SG} z24i&lY<9x7*-ZsB8J$em(ouwxs+UOB8zmq~{&*KOQZ3a=#(&M%M#PRgi3jJ11*=61 zpdb)8m@t3jbAj3vtS#BQf=XN^T#zS`h+3u6DvILM$PaFfME)5(9wYX^mX&r>S~~PL z5|ojsoq*fvimFTwzIjJ8aYmp4-~B$gm1+)ANT~BfAkMA;?0!R>4P{Fzsh9jhbQ?F@ zp1S3pu32sr)PI);t@U+ujySfMt7TeVr*V2Tq2w3~ZA2*~?gZkbsGeB-5y<=btsjNd z{{XPxJaq1vv0c)xs9PV)6xY1DnCU7%_)W38>UyxT?6!i5C+Z|(Hb*q>7%5MRNdEvk zNcVz2RpLb>?z_t<+i>vB1b!my%RJN@|k7okXKg*6}q`a1ai{q5Q zOM2xE{ePY5ed@4LWsalJwDCTQOw8$M3E?TKN8pn`#J?_mupft&qi|`ZwmD;Xry4$} zMzUSv$CxTC4&?ibmF+1cuHLZdsA*DETL>`XU@8hpyyjk=>#AcM~c@<4b`v1gXg@BmhVNi9F+@93EVvo(-i(Bi`T2MRii9rwlfcJY3z&$@SN-a#}k0e07^gRVt0q$}7C05da;gTrS301s?>hi^RH-FgG)f^A%5R$mKt^f;^dF6+|1 zuhw3&)!#1O^5r?ArKEDEp)~Ehln0b#IH_K+qUM-VWF(#-k&i#9(FPH)^NyT zznZ}MtX#8w@`nEakM{jZS{qV;$wzn0|)Jh&Ga23&!DAJ^u zA_(XCd+q+%qOvIvfRYJ9NS)6RJAF*xNy30yeUU&n*wU3s5>!?EzC-DOcYoweY0Bok zVr15M!Rj3lud1ak^y?_Lhv?q&-f2YK;Z3Rzg$a;%f+h|JOfN?7{{V>Z{>H198&A{S z{{Sd%mt+esO!AsCotpP~t)okhywJW}6Hx0#WlCB?f)Gej)TPM;l_^A%IAOdFfB-$i zkCF$-=eW4?ehSG>gz|_;Cx4N_Klks8zUgBnA8%>4v?(;;1ppLg4;%B_0!^YcIwEh3 zp?PlR5P+g>&*>iIAw+-qJYh~b9`KseYUPz`Qs}iU)hHsOk<=+kR{o~cHXLwq$Xo!S#kL)J zVX(ESC;>qYr6Z=o<}iY8$Tl(3sQL`oyxo+SJ)Tf#6rKI!A$}04Yxe`b7jAD79v;&JFavr?+xy!vNO+CT< z!clEwTh~;zOjh#(Jt|5604AUkPViI-8bXN3`M`YwoW?ohg*H^{g(qJqEVtSvyH%H~ zQmUGDJxb*}mF2a7329&}%S;s!!u=#j2UXDBpTAXQg_u09o`0*`W~iZ*p&&Qujsg6s zKRwku`(W!RQzX=*QBxpQL{eH0;+BgtqCKLrE!0il=!g5F`4X zu?WE`2VV-WRezYAs(ou)foMYEL~lPR?Y z^z`j5E;QnX!^|g>9DIlL#Sv%;wFY6O%lXGFR^;s6W^TUGc%yQL=|K17si$>17K806 zCJ5XZBXBS;h&&K_{rwRPWqw5X#qfR9PY8M4`U|^t7k@07S5!t=&FV&`YFRQ;#X^S6 z)gXFQl|Wo-M1?|fwn=t2bpWM$Ph+M8&lBuN(+%?ny)DrKR?QIQ zIYzEQF@HRNs1qXwBp{$MhM}p-T1u!~K_xsW7=-peE#!XKXPQ*<{TAiYCIQpJpnG=% z-{l+}7n*>@YbmH{D$*9MfYSu*N4Nd(LR#eymH^>R@hVbFVbvHCAf1P{{2#9Pu^{Cr zMlXdbYg|+X)CeDxg?zuS`{Ee_X3Q+5^%at2@qZx6AkNe7C$TKRB<=?(;m5N0P8=O`nkuymHrk+9iYZTkMvI9Za)pw6r2Uq}-qq>c#K z{DgO$SC~RAlonLz2tHug&mjK0_uCid9*W5Br4=9mR}gqnJdb~$>wq#S)&t7Hb+D~Q zNPkLTlkPvE`CvT6eqC_4Y2(UVaa)lJ*zMkXjr;uZ1c6(bMNHXBlPlbTxtQPmF-Ark?to0=2sk}3>1pCS3KLl z4D+f|+k%y=V&WuvzP*qAaX%4BW;!atZGWyvP$=3rJI~MzSeXl>DgCbH@Pbaw4S^h> z`+Yb4KWs2g2PtlZkgoYVHC!z9EZl7s@6){7flR#1nqY_^?at%h1}DxE3`M1TW5e&- zkDct6x@^1F9Gr~I!w3j!=|=ims{m~Z3-q{tatZEno$;~6k%RPFBbcyfD(Tl>wts)1 z-5AQD=CV!I>-A_#Z25Yosg%@KJfjFmWwj|mB~Uf5LPx$6L&@YcuqcvwSvC=UhDATr$Qcam9ph3 z!74(u>Q1PX6ELn6AdQX~+c`^j34fBP?v5=9L+-3eE~zc0K2aPH3EqE{eDGq>o>Z%_ z+_YJXL#!UpM_b0aS?NQRwL$b26#HUSNUt8xeD9+-e8NIYO{S|+!u z)|)fb+}YOC%muAd^D8kVAI%4Fdrk~x3#+1nswY~L0XF6B?D6R5_JU~q-`Vqaf>un^jfaq%=y4>JuQ>GO1o|HIvEkX(>cz{pS^(HZUO0o?vsq5C-$U!AK2q{tRzx>+}(NTPE2!HcRkm&(Oc_jS5 zX!pg{1qiUPyPJAeNsC2K`iX=ieEND(o= z`$i(5+^B_85~U<4M2Y(C{@8@tGm@cw@cK$h;(1Vs9C7;g#8+aL8>oJokMoh!O}$G6^XW zx788bibtxafTjCyr;o4igWOOTA?nnJP*P9|ciCRv(fsjX+5?qZy;xG}RZ~d_RGqbK zenV_AuiAmk1yo&nuA1WeRTZ9}DX@x9ECn{8RjG0es475$0DlEL6TCbT-7JbxJzD0X zK_-7NBad=_>5B%`vW9-XR2yU!6(34;k|Sv|*nIiLs=7m$5ZXh(#*}_#8J_Sxg#P~c zstRzcnTGE{WxZ40a}D^@QL{}{@KT@h)1kJ~w{{=m{vM_2JQRXB!ra?%r8sKwu2}n7 zI`5UPHxX^IA%FS``_)~2vX#ZG3VLT$Jhrrf$`F($Nit-_l5lcDLAv2KH^%1jx&~PL zZhGh|Y3&H;`fI9coei-~NmA;ad1Q@{l%`6g4WN!>V>_dH{{Tv5i~Q6VqUiikc#81} z(#ou%){LsgR;I3L;Y(>%%{8@5DcW}#FFKTZSRoD=Y=5g-xH?7!vDKamu_Kz{M(F;F z&KXa_hl`Gy^!DA;e24a(X39%eU$eDuvs%tTw;`sOX&PH>ElXO0K-x%A_mhPPCu=sc zLtfyR>GaNhx*>l50IKu<0NQhu{Apw^faRgpuNT*jrDY4H{j^^wD>B_BBUZZB+bf`O zEwpP=R)3QEWR!rg5_M`5pHj_CZ~|Ro^M$KPCYAELV?#}2)OGsO-|U}XP5K?tzNdJ? z>jq<|vf0JLk1bN%YE!9e45Q+z7-a+0>#JL|=}T#nOJ{%-Md$#9j*-|07L%>rG|h>Y zNXhM=RoQxR;}gTz+C|gc=iz}&RAqbKWwut^?SED*#PdaU?Wr?ORZg_}6zUvHPA!0S zqe;`O0->foOnQ*!99}cm@3K^|$)l042E~l_?`!kx!fm6iO!%hBxm%=}jr^^h&Gp-V z-sz%k_bj9#)@xraxRR0^XU`-MIDkPQSfy*~TgsH^N!f5GaTC8D__1dy@1ikvx>R+e)CBH!_x}Ksi>u13 zq%)6&xTUQT=@F+FRl=f4Dzii@DYG4YUAl`>+NmLG1tn0XTQUmQ=mZ3vw%sL!B4BUFG)@E{%ej&S5F3cXvER_OTl{IsDZrvjtRI!ulx zM#Fd>#xY;%P?3zSnY`On(=M8*E`XIbd2E!-EAV9YIoum6t)7ymxP|AyTs^3_f<*CHE za9b6$=CY(Fq`uuSrgj=>4TTpTS#|?y7+t)%xHLW7^z}~v04fzP{t9)A^Vcb=SB zEfmdD-W{aBJy%a!;=!w1K2=RBP~wV%3@rdM3=HVq?6ufZf62OAxj|gnAxvwGsRnA>Ism)%D?iTWpTGA za6nRogz1~>O`xn+p(#Q9WvS2-h}?tNZ3lmRRRu2=h_B6Prfn=Hv4lFM1)(pwr7$Fd zeo_G2++xuKNu{>-gj0aBfJ%QVOab!xe@sPJX!f%rPL%*i_bQS5;D2_jzNn@%AWC)# z-Zg4hBjt+P?&|jxU8?-m6D##7B~LBI9RU151HV(>bMnNZt)`H-Jol-Ogr|HfSXo)r zNdPC0t`u5IWwmrHn|5`pD+xd`8^D7+pVQ@q0fl_!J)x)-w<>#r>IhQ+g52z6MEm}@ zjtGGxm1t)4N&yc3xBv=ej_QAQFJ;EPE~YgdyPt9L#6%5+C0+PY)0&++l99SXfZwtD z3|3VVD$^PZxu~RV(&zap6rw$wselrx9B>M(^lE=nTdNvU6XpWl zLQ}FINc5D;r)=XmJOVi!{0Qs~)@q5hq8a?Lwybvk4^Pw4Tr!tbGIv$4lzl4k6Vm%7 zK47VBX3FF2qPo|7^3qo4!Mf@Kkn&KH;;EfV9ZEu!pEV7s(a({SX-M38Gzhx7x%2PUnr8K69LIXgYZ6k`4RNTXJ8Y9nQ|2<1 z&t}qt8wC!=CwS*SPtgf;9&POh=ze0pw!EX_H|-wiXM&Fs^d1>JR995dRa`RlJ>s7{ zSS+r&ZKh@C-(|Gb)9Z2ibrn;%b+%tX8<37MvS%2eWaJ&ME(3q58+PBr+7-d)9aNjc zp2!(HEQjs@8oy?*Bd4|49B`j?C&AB!9~C)no2V4jcG{%g>3$~No$_PMAlEj%(&%}F z`E>$k^8>ttxY@93$!K#(Bkv2ISww@%^0!nz%1*H4WxH3?4Bv0gG*3EG#knk+OQOVj zP!hA`x}s!kwEKU?`)xYbZ6u1XzEHLx=YS0Yt-UMzF#JJf_8WgXU+vjBhEN};7u)-9 zI?;nFZibW2O4K(12hvXCoO0yUJ6G(6*f=7;QdZV~`FB`#SFJ10Qv4X)t$8Abuc!I$ zhp1O}l0|hj_Q0z^tV)1zG|ft!Q;a#XKtr0r3Lvcmd}V)&!&x=^Mlb#Si>27yy#P?0J8&?dScvGrszTJ4TDzs6PFo30qCnI<=b0XiFw=1c6Q#J~PflRAqOVp}h0kWJ+ zss==WQlWnY>^tH5&+0G4$GNdOFgdz6?xl}Q{W>(#4e~ZZc&lxD?5?w2W2(rOZ|y~9 zORA_R`IGEiIKw2bC#Ds3;wQJ5K^U`(zrae7(Q`dgGseE4t>tPZs^8Ex&moE(|X$;@%-b*YpuTgC+p)!BL^&@bRAtGduap^R#gTsN4fw0%* z0?F@Zp152IpQzS9XZo{StO4$>7ah$V4eEbQ*=q09RMP6KtWsL67Z)8{ zQ9gf|fe=K%=L&Qt@-f?>QaL@E>s<9E0c_1Hx8DP<_ImFtwq)x?O1AoI>NnB2(84o{9&$v6aO zy0YA^nRWHC@l@2yR*-IF#=sYyT*H`{V%ImJAi1JP#G z(0{>M+HXlHKvWPmNbSFWZvC()g^_%@g{6GxCO&&f`cC+|;*_yPSbBPvh4o1r4=sN& z250?n4+mm43%Xq2sx7$x0E~{IgtlQh8z%rKW9hjbeg6Pl4v_8AJO2RUyZ->Oh~yiX z&^>1s?^Zc0c%h~{{Se}JM2kFAkHzE+Sd>k zwo4)8;4Y8TOsAZBeU@!me#?K=o0Ubn(M|ByyG7M(KGh2;Z751wcj3I{`bL;}YXER& z2xN|S>n6&EP1Z4?s-X(KRg!W zT%o~2*Jj7{nl{~a#i)gU@R@+w z3LS?g%mUn8O+N-Nf1So!Hm-6|UG1~+MD!W3~W*cSJj;75}ZT0lkC@s}nsvGm#c_4`kX-QI6IM|F? z0m6?8xX4~%@jLc?_(seY3!hQwuJqj}RV!uMyUintO`Qg3@o9e?0VtpHu%^j81s$=F z>DpcF;QZ6Zrbaf-K<>XcZ?!pfyUlH`)0x=0)3a2zsqU=Oyu)>f6Aqy-BrORea25d` z*e7WU!m8qaS!~+_Y1!VG-e52Z6!NXgrJym%%l^2lm(dKHN0MoLP zeTd{9-|%97B?*kJ7fS0%2~rh2X;#zk{V;!s1yF|yCl<80503(jvuK0yjZt<@nZ zNGsK}k;fYk+y2-SC{^V8DVcG{5TX$WzL6f>`w#lyeBcU(D=TzChmz8YchIQXK68pQ zQRPo2mg!gFsI~|OW9#q#05|W7GX-so(%d-UK?!X^Bygc0L;Vg1&K=QtWem1a=0}?* zWGwBswEKT?w!>@-=PKJ7JutSTD0x~Nc}jvv1aG%!JQ((z0G|n-QLG|UPpGR>45~LL zfzHk>XQy{^Zx+2#Tn^OBm#_c?)4xm%szi${Ejy&P(I`31|#>t`N3b5R$I(h zI#N>BTT^IBDfqg&fDmE?=tiXh8}9?=FhW-nfW+SDvD77Hd=m89@z$>wnFlY{ zyzAx6#Ldp}Ur+9M2~>CX`eHf32x#h}cOyEtlH-)+Wwd{u z6Y3-N=X_XrQiygE3&%)UsHuA5z*B+UI)jVUG^7Cl9g;aP0F#SrnbkrZQtOvSYbz~_ zx6xZs>uic}m)vR=KPUw!WX}HpN$gH4O^y_;fz8QO?2V9fmS3baSFEdDO-1Lp?Y_Bg zq30^;!W%8rytL^7)smoF-ZTYH@Fag@+4mrnScLJr-;kDTJk0Z=`Z zO1U%Stib^X)Usj;-aW?Mu>lC0wq3sEOud{rALF z4JfK>ej$RwT~lr-Y_vfs`H6q|@3g^T8;Ga;svZzT1S({{ZyFR5Ga@MzUG6g6cAbeXgjg{bZ`P zU8?QtN*<@ATVw}yEa^x|DjNc+b8tk!*lWY9Hm{LHu1ibyba-`Qsi&&0S+cRT!7Mv> zWdM%CTVX1R_8{Sooy7DpsVo<2ogMYO=BE@0 z?I3)xmy&to=%`?;8%&V3X;c7zhhQRm4nI!ViIz~8dUP(G_FQ#n)X5%l6$?h+m=Yju z?>G~l3bC}{pmQ!n$lX%uy-!Uu?Wga{1@6u%u5@*4lIvy^09t>4BG9cR3J_4FB!eRm zHLhs~Agc~@930a`FV24yzh(abiyVN(23+YiUB{_iKeJR-JC<#fFSeV7q|~{s(&Zea zI_i#)Y8uv75|Bbb2^{HkQvpmi25YGOit9611cuxLNw0U`WyZ3XfsYyauK3jsT=3(a zXetfhOuQI|U5UglWOy-(_O!sy0vy2*Q)#?c$v@sA*ikj>K9Ec*?E8JYke(UBJ9Y;f#XZ@4g((L$S$5TL0~1`qBqVvvABu4U30dgo5{cC{+% zm9!qx2-Qy4;eaAQ0Q;ES;88oGc$U!RLR1w2QWK=akC5R10JaDWDhAe7NJThLZ6p-& z8}3de1r&c&G;Ox9u^qI4cRTU_05-*eN*XBbDIg`cNspiGXTB{&GmWj4g)41D8RKvD z-xLj~lu{z4yX|@?!voHFwbYlEvO)_f0H;akPy!4Ho#aLY-sN0?5e`#UN<6evsB4!B zoNyGP4(W*m%m^d^2|L6SBGruYv~r2{J{d}yLP~!|m6fSrl2xfCJ4AY5$(i|JT l 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 delta 757183 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 lx$`LD* zc>g+rwooau1;@o>>S#v!I3gr@3fx1mUWC<#)!y#=qI;PcSDDQjG@(9M#T{ z1QqjZMsb+&yMr&l7lNO{$-26Ip-btr>n1Vvsx;Twsg%R9lX6Lwv2gWAt5LUKeU6+@ z?BiCR7`(j&`)xt-9EM3+OLvy(5fPcqBYV}3qKFa@L#V>#X&-!70w%7wN=+3`LvJs? zfVW|R#48Lk5_82Y&}{j44_w!|B5xYlQQuxZQ^r`$Gv;axhMRXVv=n6T>O`;4oDZv{ z-;M^o?qTDOvo*{DBBd%ZkW?Yk$F-JzpP!QLL@-sq zG+ug7Ruo~w`P9+Ob0X>w3rO)awo~BB$3BRnZss~*Ly=gn9Ng}$CjVJ%+!Dis&Y&y#YT4!a1b%}H|_lxz7D(OK1@O`8z2aR7+FxSA=1AgN%|jl3;7m6Mw) z%dPAF$)Pu$P1QyT;nbEzX&l3xm++KY->Ldsd1s^Rgi${SC_Ej}3P)kY2{rRxL6kANdK#wugG}z)~ zbqQia&^^Ov7uPvF2TkhYe)4zYX?nPR7MBl~0oG&dLtHMI!`geu-V-ngeJ+ce57|wc z9`T`qxHkT>V!G4D&PxKHV234x-oj}<&J;SemY!-%nrWLjIx$BaGYyD)P=5;0<4vB; zz0qKmfTxHK&?k6RM>AT6(vQpQ8#7a8a4&aRJrjGNo(*;qOT*acFneOs97jw6V$DD) zqZCTrFvX*G3Wr7!^T-W054O>hH_8&A`})4ndthjnKgG;{FF~eQyH?k8&s^HKc)iL# zJbpU)5rK=3z+I>qDoRHZ>9v3`W_Jsn}doy9iwi%`szv-OMiSmC8o?Ak!iSk!I(cGJZz&{ z#WPLi<(T}M?h60)GUVkGVT)%051f@w4>g5K-)?bU{;Z^O{HQSS^zXaqD7!ec2Fnz? z7jls9(RLoiAQE;EH7N7T93$**2u@@Kcyibey_8^_O8D*}Cz_m*u2F6V1q$_?bR?o} zd6t_so!7Mc*Fmf%wNR)CdFYmypC^k=DF35l@cHNKs&!>?&*LB@o?EKnNRC>%%|6bG$YN2*lIVS`sdGlPHUDl zc_>Bd_4^$Ycv@=&SyDpXT%w<|r4AA4z-_72sKW4&;^NgmN_h}~#uf4BD`BxpUMRps z%Vt_-@JL`wDf|amg(p$Zpb}CRt+H2xMjcQ@w@;gz z-+wOh4r|q<8>kc0)u^FgdM(P-C;zM(OC{JFDR=o!;QU(A-MSe>_Y5v`f~nP{KD!E37SydGfw1VD%sk&VOL+2j<5}Zy#MfGvIkd zKW4Yvh{9^VW|-QnPijHY@6%<1i( zQgjJ7jD;!lv^M_2&YtG&xc^q-v!U&tC;Ae)U4uPWl>-gslf^Hnz~%? zJI23#EfEHO0DYNYFt6b=8qTV~_Q}R?MH}jZ)$Cg57&}#J`-0#oy(M}{{BT!BJaue< zo>OZ^sW&{ZY4V>1Ax3vjZ0O}KA_?zDsQhwA@>8S>SLz3DNUf4pgM&qw<=;RwA;A^? zHFJ*&Uio=UJm*DIue25&7Nh@4BmXx>17X4zUi2NzUpc4|tNB5jI0Rf!{g0P%8b3Dy zNu2a3hXjQ3(974~W3IHly2MfAB_l*?WhCRnrW#QC(Mc;|t!beIjY%AWuX%X8aJmih z?NLp4KV+T!q}H&Hy(^(m))Ut$QpEyAa_6}G2gKozblrh>i}CO2k6~JVOuH0kR};?z zfufo!On-)RdXlJC%J=hg(|dSLh9+3Mp(kY{KO*H_Z^0gZxu^ z>JDjPimJAaB`8A<;A(^;-pQx99LS1dg@Oea?jMn=U(@8c;iZ#eox6(OZt3`UW*t)s zkH)Z{Mo6*TL*;?ojh7`9_bxGCAr@hwqgo@Q`IXFq&pi}l`@GR6R;jyb_E@W zQ~0bwa@dC*r979WOW)s1T-JPiOENLTC*?EI0z?wzJJ#Yx4shE1YbG5-565u*0Ku=6 z(V9K0r#;0+kIZ63@?GmC2~EqL+&>|gf2t842-+kd0~(Z~`}gFUbSK(2*$etgUAk#7j3Cb(0MSQ|8O!&pT;Zvz z7jCf91}XZLE%0h^nb%3eLfh|MU+aU3iR#?#ZF|aW7!sT|VT6vUQ$NLpD7sCW^vG=@ zT&FH(abk|H6lMPGsreve0LRtW40_Ituo3Wj&UhDTJwa|UKvh>Cy1f7%XvFo#z+YC( zm`=XO%U&bA35j1oz8e%yRDYr&%TXQ^HE!=Cz`iP@lIM`Y8Ojun1vO~%T$p_u<00G! zf>(1%#L(fzG%cj(!}i34aSZ&aWq$IujWRvWhtos!pwEF`bv4DXQm|SJvv;b`Uc?q> zis;sRdnn)~)`xXlKPfh#Gu8Tvb6NN7*~U||cO`+g)vRYQ!srxRaaHvsh~O|Y(%}^w zBA&>@I2<59_iYs5?C_f6aQZPd8!q5<3rY`D4bT5sO|hpgvJJX8()fB@xu00~42b%P+^lm#J2#gAIHOgGA%$(AvIL7sqdIplivZk|D0*Tby4k6kj#Eo_BD z=fk%54U+GD9-_A_RJXTjmT{w1RQxz$nX(@+Sxiz{NBt}nk~i+oh6Ej&Eq@x-hfu@U zjjFpiX4`5L-=6Lc+;VPJ5H#Wx;tFw}!@FGzb#t>oXGY~T3Ks7gRUT;E04)_H4GB%g zf7A-9J94RVq93gu>rW!+MN`~aSwi$>og#lIg6HFwVB__JKQuI>VPsm(^YC>3XGp?fDB2;N7*+ey=f#hICdRADHB z1|ED|wm+kY!IwX*JI5Job4kT4#9=K(#-pDn7t_*RZX$(+C+D%P9D##gSJ`Gh5Y(SQ z;^QD}@H`_=ySC&G9;MUDlxyGos|2gLJ*9=1;k+W21`^c0=f70LN(cC9s{l4tIW$6- zNM}1g@zgquUJyAJR!qHlhoCBxU?wb+zyCqr(UY~%g#w(DVkLHnR6yLjLQi*p**sq| zW(`e~$(JEo4b!_Q>?UI|OcH5&A}g2TF)lj)4_$8^7gf9c?+?;Q2!hfe9fE+QNJ|V# zcXxLS2%Aupj$uHDhM^e{X%GRCmhM)EPH9QM8=rH|^PKbf{r;a90&dp6@3r3Ry6ElL zvjvGhbcqtGQI)b3X`?R@c*@_j7~+}9?`S4qOTA)=h%%V(a$5$}d!K|S2|OP(v`pCR z>A7eQ9Kw&4CMFn_wKkyr<~6vg@SdevD; zPaD6&jGLmfzlGevO5BbjU}Chpxh?1~Q*H8>D*;Ni9y*7tVks~3uP873%y`DM%OqR;d>CTIiSIRUe7Q~HVU zE9}>vIS_GC6X)1c8rn;#v*7%x~yERhMg93W|s~(jQLbCed(1gb%_e-r@Co z${b7B3(4U#9z;8rG%fM`GW z9JQcj_~RC;l{9NM!{={kR6!jw8BQmS=c@ZRg6wAvSd`mc2gon)a&8ew5hr&wSg47* zVq<}TW=$|cfX%jbgUYLGB+i`K0FyKx#mBppzSkiuE#)V3|_P`B&Vt;+m~T7b6hDjv~_S@ zTYUwFNk2Elok%610N%!4-ehMDIG6~L+ly~rMCjfSZtap%8x(AfUN&AWkV4&vVzisV zmjGU`OACWy7Q!o^Kq5Sa1ro<(!DkRrti4IWr~qevZPG3Y&No_dFM%w>Cm)2hGFk&c zYf(mM9RBvgyJuCjg<_@|I6>=zWbi&J%)=jVU-x`Y^6y~bNa${pG()j5eT*Y1ETpey zRI142N90cAv0x_$DJtJWmZ`rj0WuE>I)P{Vr{Nx(GEnj-NcTra`4*+QJ_!(|T##k0 z`rN7;bMML<;W2!bm6vp$&pM;#`R3i*l5~&I^czxg{WcM> z3jk9M$>o`)N0-`Wi{O@|5m^n0kUymfUzED4y6Bf@Wu@qEu9ibkd z2yce!JUrbFIQurzKIR$bSu>+DEm+|ip7-nI+JSS`M7; z1yO6;#TkiYDO_d2zi59$nhh*$IJKg)zKncI0qGe#6U{W%+WRc>%-D^vfk)ouZ|d9v zCO4gG0JbqBle8E!@7jC0pRa!2m?IPM0{1dOcBKiR#QDECYfWil2v65zAk*uS<(&}|o%t+HM5Q_z zz9Qp?pCHm2oWT7r(i-QSi1-}CmGaeqgcBhxu=>cuhfLE$6>8e6J25#ixm&dS>811c zG=}zWp+(KP!Ia}qsSEQDR&3v>eHFooIo^y~$rlksj>aA>yNEEbO~j(gtAlRVaS%3g zC)T{d#jUHclPxX97P)(8#Fb~hbK?RvZGx(>3GN0L(pkq<=N=L!u0Or0spHV;X^cY7 z0e;IaPBf>^#@~DUO!d`XnD3d4-|L=f^!06=KJzCfeeL#hU&14P=&;OkR8Ms?ujvK9n>JBfFv~Iqqyb&f?5B?vbKNe+A7*QsHVJ{FCtpV+B>6XC@wi^DDF}a zZdu}jnbB1cWdBM8%F%1w&n*TR&P|-_eyBOANzIm!W38=3S8iXb9SCXv0a-igI2oLI zY1b7#-oDtM4|#VplGqr6e zmRnS|mxF7k5@YHy{Y-!ThAd`Mb@Z zj9!$_)|CdAB{q}vrJEDhKKzA_(tvVvx9l0ET`er1_&4pJ*Ud^(@byw+9`L#cjQ!8v zVR={pC8Fb3tr|zr@#P~u715eMa6z-4Bhw(&fYHjXPCv`#GkUNQr!JLH`Uf$%1^hQ- zkXKkI$@i_ZO)F$?lKkg>^0$1U-Wiq7lV#s=5D0$QqRGA_i{ziawH=yS(;{fSdviAb z(03h>Tv3_zR1@a7eaU`lM{C#e9igpV)&Sz(4eie^c%SYhr#eV{wh?m;Bl`X{WuSeM zY#|j|u1&Fn=S&Ok@COASj=;^|U`G;J@mb_8-Zu0D|+R>cu*Uq`MaJ!(= z_`qqbQM&W~ZTOBNu&T#0QuP z6gd*GlZ;}?a$uP>QCV{hA}T2#Qm2grlsie6b%DQYR9}fdYCj$BN%`~nx{(4e*NDR> z6dNpP#Lq!8vUWJ~)k8vS>j2`@vN^O=04MTD*^JCY?Bn@qEYn*W5Fzn>%y+PcqgdY1 zcg1MGsq@m`2wJ~rJ2F&sdh08m#UM_;qz!oWJS%ExW}jzt>>6yLni7e$CIZHJzMXlt zXn|#lvX|d@cGe`N**m5nwb#oepS5(jG_N<@3h()9tv^E?w@;z=#rW2xSh9`Vp2CAh zH5th^NlYuM4KMHxu+5elyne;4xKYQKi6Hk>er44?xNNA|Xt;YB0Bd|;$VYr54wLW% zr|z09x3)FY=x4@mKkxejsBE#Re4rbc6&hz7LyW;leX#j7Q=|rj>I9SihK%UtPHpDo z)a>ah4Iq=AxihFG@t;;qj>KTP-t{x&*~;o?XURe$o1i@W$f04CvtuMN z>us3*R4lrf_oCllj0NW8gsf;z%pE&2dittaL%^@C%d{rr6u#}oy|AD+a=h!Jk{i92 z%l^5puRcDfFt(7|hn2DkIiuF7rZ@`7DGM|{+Pe1wi$#q}BoArx&inje+GP8Ijx5a6?7Vu_4+EyDQZGaxm zohon>H>oOF%kc!Hh6dNptR(6B(th{5qp3uD`1q%=&vDlKGM93)3VfE}}d~|6Z)#w7sS+%sETQU^=0F z#k!Phs5)51y;v(AvasrAih^VP0il7p0cVFzd@&w+Mtrr`3xw-fn9*qbf%sBgflk2Q3 zXeuGFA#*f{8ydLgNTYn=+unbjsV@GUsTefY&gZ&KK<$dA+Ew@1TQ*tT%`w3clA`7*mmoT*bksR?CXE9x2&=4#4=2p5!D~>xRP8EtGsxJjf;-SG8(scI zg)2$@aQ&G|V&&C3s20e!QIPN&@-T$lo|GsS#H5Os6_0X~CjUtsIO3diFXTpizCa{| z<>-RrHuKF8KXsNeP7odMlby2~pMG2dOoevTw}H`8f^QhGa7_bY9B?~Wlkv?(Jv-tZ zPAiUDK1L}i&*${p9VQ(XOM7u|(L!k)ju$UsL+*|{EMZE0fduA5TbUW)j#t`yVzEKG zSniOK>`aLb^-jtL#$#|%u;+b?w_Tl4C6&7s0Kanu*Hh%e30xlz`5s&c%Rv6*?@(zC9ufs(gBc+(H_S0V6eNaM z!6R{VUCW$2Bv`8h4`=mPz)Hb4WlsPDY=|j_seSbTtq|OVn3bC|RX}~$x6o^VI3LT+ zK{|i9#=_(I} zAe6K*tIb%sa#!7JqS=%~r;=C6X><|wvjd_(N?KnhCdQk3?J6n7dOnJKq?7!(Tmd~f zITAvM*&~4~gf-_1%!Lm&Ln2`Hfj)yH#Y`~jufZpE%9aiM%n?W1n(!|Q7wN=Aq!?wY z#E+t=WV*ML9*vWA7{l5?&mHxxnEgi#Kl9%Ud31=;E+LFRvqMOKjbJG#pRIxcq6{2G zWenICPsP+HckO{Q+2Hx~Ze^5rJLb|rqQA6rFo%8o*OJ-&iJ z#`}N+eTz-5L$n54LlQhQ*2HvhupVV++5fR^Ko83s%Uj5GP``$CxMM-Ugw{;^M6HCA zn)GV#;}v+~BbH5M<1)Ve)! zwKk2Ord(|{uAP_1uW0$*=ib4ntUf-xbmCCCrdH1sAe?%NSy?7+VJ4bZ%az;!pSo;q z(57LE3Ua3+Z|2JPE~kEPfUp#1;xFpAbuP|}CuV}c_OyYQV%3MniEccEs&K7@mkL{T zAb5;FzBV9%X9^jLx)hZQ`ipDYy_IZUF*du4X7J`enAP$^78MWF13+T+-G36R$#b;< zfsA@*oDFxcvoU$-gW#T{sujIW2LlsdU%iD6@|bx;Ntq=b`A#PU@%l#Qq>13#6Pfg) z%UzJynY`O zD}QxT)wZJCj{gnO0nw2)xvAtnMC{<}$HJ0`An=GA#bC4EiS(fd>=60R8ZX!_Z9^0p@*z%5 zqQ20bO_%Wq-Tc&im`fRe`W?Ron6I9rdqM_5(SQI|@7sY^};1BzT62mp>sMzDnH%(G0h2403%DqA1? z(!sRyNDn<7g5D$!0xJkTn9805Hxp8NVoHcd_}8^ndi(j8;tsL92{Y{&KoN?vT;gaF zmx0kO=NSP9fEfMGV?Zp&k*$NWQ(hb|azNn`8Gi@MmSFeEVb2MAGb&|AQd8JnRs8%) zJ2NEaH2$mf`k;^ln5;B9oz3*`z_b@xx-E_J1m_krLE-^pxnt@>&wGmHoyBm1-In#f z^0QdtjPJ&b-phR_y5ZjJA!Gh4_;vbmaeYMAThOTu5Pazkz}-~xr7qnCQ`c3Dwg^%d zhxn5s={~iv`hI)cgmH~JH;aCiE^@l(bQ__)?fUfLi0+{`#TwPVS8!QJbnoF&hhXFi z%|te*l^-p@P8!Dr@2vVI60w{K$_bLqAkr7Yt7 z+!u2zvZiE-e+%|5 zY0;K8F0Hp0-f_IA!~mOd*|&0CePc*|W?Q$_L;M)P{T&pT%#qLz7JRAHTs3q6?!o0- z)Iu|{2}zkMr9{4K3csOtru7;d&tVckv(PJQNT=lGS&D6mtA{#@f|i0`SKc?qA_1d1 zO%)6$Vyu+5^`1erblI~!TgW;z<~bEooP5Dj;3H;F3EQ%oXn1CQ54pZCrS<)e5AOaQ z;$aj>tR;^j&6~uQd^9<Lg~ZUxkYdRq{Rk`FD*v9o`D1h6Z2FKn>!URe4DHbFf{4hMR`*^92d&?=KyGhN zhCfSr(=(vx_#`o9aXrT8Xyu(sh%@c+8n`f_PX-GKIJ~MZGsaF)SxhKkD+8Vw`ygxB zIuu}HH?KTYVsu`32F3+B7$disTYT1~5e+cUWf@Cg5Owz^rI(U^x;GjTuAfWP9ws4H zs)SqIJ>az~-&*z24o{J?r?eQGO0>{BO>cMQnJ@RdkapVbGb=NQFRr17 zrpNoAQbCMxQtPc?=UX)C^ewUEOC`Ma1+Z~Wqj&5d;2^W!NVuX>n6k^^^tC8k^|<}X zrk&4zkY1KLH_fXTjnhbmYEvn$_5!PP_cDZD!E-`%*7p6QSt;OaIA zFDXa#{Hud^WEeDqPrA#C^F4el#OrM0*2;%fsJJ6+1$w0X6v}dTH0KO1W080bf*|Rl z!GD0HuQ}2x`jK&}BwCaE7eI!wAOO36@#_j30a zilJl}NO~iUOBfhe6MJWwd|{h6<$`y6-B&mwJhO16OH34W+Kmmn!NuG_KJw&WU&#Rw ztRtnlXO@iid*LZo9;Zjg>U6aHVz|ZB;LmH*vU9?D8ycV za;8ex#l^1VFrd7U!oX1-KBHBmFb--e`ZBHwfeS_;+5u`BZN+KNT_Rn`V#OYBxPa8Q z9+?J2CVoTWQjb3HD_Ezp3TW+$U{YwK!KLCGi(#I1g@VndOFh#hVRsPZ4)0klk>TsR zh(W?-&2$?c8ffzb$_bg21h#UMf<~;H2}I5k>&#fu*rB2}lnjaGC3+fq4o$AGs9;Bd zliV!3lIaaAVgH@%6+43hmvpxo5;ZFYYM|+?`URkF>*9%Hb@MCA1B-+1ARM%=M)QKMOviPex7gN$najkqUE&<#5>%y>6 zBZ{2{>^WA(TXw7>pD}cY@&#e&rm3#Uqon+6{3r$R5B%sOZo@NLp;bbClC+^o zXPd7TPGIkz*#D z{rFyS1}#-1u)$a8#(iBl4h8H!J*UQ4<_;HV2DV#|}6@Tve*`$v=1zYxMo}Yt3*E{bQ75ei|;FA=2nwjrXDpSnVwp!PX z_SfwiqE};xeKe%Kgbtjp2@3h8{$9JCQ;^S*WVCv_5+RNA6dWbM30kGDxNpJTj{a-+)tXsGpo9o zhB?N7qC`mcy53doFYP#xpT2x&__(jSL1&`Yi1_}NAQ0Vf*on{h8=~kOlbJWtFuuL} zm;Ywm{!%w)fp|4r#^-kV&yG+`_RUe0l_tIf-K3&z#VSau4DM&2XLF#73mX_%(Ys0R zEFd8Iqp}75vEr|hLU8vy^RS@5t$xbFd1Nc0ItaA>4e=hc;A%X~`@3=i(X-cx+6nRf zG(Ei1#l0W`!YPgTjf`$&wCN{yZ+S}b>nR71a2YznhKqRup$@FmDEc*4 z8ZxGcnJ=V?G4$htC5`_DU%vZ*qkGy~J~4O`qKMXb)p1`%bUb#OqnLXabSs_0SwWYU z93kxiC}pk}Gw?Dzo|pwA_#Z()E0$MirT~tE1}vRvscc3CxiYwJdcI?M@}5`$ zAA+9wi&5>V>%unCC|u#98Q>3sR+q}!-gMhYJ&>Dew1!_!`V7y27u0|X#gf}YRHrOK z!&iY?#Ww6t`N6erD?jFp4qbeG$(Um*)_i1m^q;x!R{2w3QY8;K7Ulqn#!*2@Ni^bm2Bfpj?; z)+4I><+#z=pFa$asz4m`<&)R7#0H)iYb0i!Rj>5NjEAnfjk-x{HmoBilM2FRT7Ybu z4Diw2W6hBd&JMm-{wj6Xhp+6VvO~6c@F7cGHS(F%NDB9FM{TO za6|ou&^_3+W|5S|W!~@P=4dM2-3Ob)J+9m9;92vgMr9Qrb|>+*%mX9vxgjU!z_)F!Lj-!pRJ@609S3l zjr|&znew8@_1nEw&_I>+zV3#A!eY*G@tif1INjQ-Uq5OUYu_JC0={BYw=%~AHS0Mz zpL@ZBW_`9NZQkRv18H`TBB^KwIEe-e+ry*)^bHVhr!L`NqWYux)p>t)9F7#V(-XGt zQ)cF(!;&>9)5R)t%t&+8T;g*;6S{QL&nAvxCbDWe2Pk75k+b7UkmO_Y;1QrP88Wc+ zpWj!&{lTf^K?Eue_(y*huW&F>;bPK{TUWMPt)Ow4LSrB&>m7Gl9m&XKnCmp8r*932 zfn);fC>e{v(;pF-dtG#`1ye*)59S}!f4W@5=$+d;Q^%kr>e*J;q$UPbq1lNvnE|vQ zok|SnIfE=`xOq6^>O`SAwV1>sA0%d1C7L3aB2si$!|REH7z=#^=YQ2F`mG?aA=nm3{ZmMse4M{{K!n>aB2Nkm^Eo0)wx39}#2@)n|Mn^%X zTu4NH=`VtHq(g`!vRy)#zNynhc1mh>XD74M;WlHFv|2^s16G$+-PyvoZ-%Mj)2gfI zEuye$C7C0zhD5)#)RV#=ucm`hT-A`!%*9K`qz0wLzWB6}V$wjofk!@+{q|UF^2>T5 zqCav*)lYQ$7kMgLrp_@A-`(?#rI!wq$ zeP8lkbA?aO&wm{s3ErMuK7jTV(j8 zrjjpjNW%MHR!|?JMPCR+d93H@8F~-7I9YCa(xVarXhGh1POsJkwBX3mjN}|g>gxG`*S)AMrxgf{2A9vWe z%1p+Rk^(mJO9D14GIK-^@3Vwfj#(vfepc1^)3@6?C(s}lmhF~$W1B~!H!JgpXziKo zyoKFLWtt&1!0l96GFz~C?vxz7E;Lh@@i4oE{@LQmJ6yjTR0*10=3jF*A| zpBNh--~deSEWmaWbLDdD?}rX*Vr*tjRJH3KAELEftur@_N_Wb$N_>L|5LNct4ZH%s z1|^6USM_dIr`2p%aIeH)Ht~q1+S&LN^WfDuxx;`4jY5JvH$b^JJ^2TsO2zEy?6P-8vu4l;4dc^{ zZn`U7F8u3E%gbV}v40#J{&nFp6sJH0bp?w`)|6TQ18YC^hFTiR-Mtm$!DbmHI@QpT9E$7S$qA5wHo?=N|EnRUKNym#qYIFcs)78yP(Q9PBKjH>Yj zxX75_R@{ES$J^Q= z1%r#96e*-@s14M_u0c$d)QtW#EUSgemEC0{nGd^HFC5sk3A*ls{HZH?`Q!r zQF=ECr=Z6j7#1%+;3(Fu%eSUFfJ}sX68sns-M0d*tzEQxn%s#T-K*g+1TtplnUZn% zpxl{uN(31WZRR7(u$QWHt$8<)S#(i zX5NX>b*83TUR`01LU!1`-tPV!b65;C_hao3$Vg^zVn-$_id{Hb_q~+1raeJM!72rz zNupzV|0uUx#<@Pg%62?+3RYaFs>@hboz7#Woj}m*Dfl? zB?3JvewDnR6s-Cl;@#|X2Qy(67MZFZad`;B?@V7kUgRS5=oIu#AL`suW>EyN0tj+q z1k9~I1!^nEImu{;#{_6vu1Vf~Y*(SI0w-&Q*@NU=C-tOC8`S`6yauLj|HEvX{;mq? zM;aDFmO5?XYeYSLu+N9ILlJNH8scfQCPD?&9{vhy$bR7Q*}dKrJhq~sIaA5dI{Nzl zJGYtbw!x;g5(|53!o$Oh;sQXE{&u+)SEpL zAb8I~Az)9Puw*p!QnGrBdoKTB!c%(xZS4dKzuN=uoJj7diiC&1hQ?oeSg||qUTwfY zx1y;N!ELYWRH0tYNOL1+QO^TT1p!cXIWkGBpE-3zfxNz6`!`P^4*%UQ@)_& zElSHP3a0CFJ^p4owoZiBFCBHc?Q{LeXx=nKr8!=y6xB9~P<~o>=1#FnXvASIi37_m z*KHq0BslPxHQ}v2NwzuZ1j9knFczYH>r9Wu(IXUR?T`QD2oJBbSYO~@cv;0m7)2NX zu$L&Rt#emU3%Zev`U+d;Hu2)E_5Ji^rhS-zA&XG2{E^)ZA||)Nb~I_Y{(|SoC`WR5>G`*__z6FiF|z%PUHm{0y`en>9hfXy3ZYxuA3&yE^O!)ZYTZ4K66ABW2-|6Zqe%T(Z;ncG$3gZINY+|r&BeCbC-(w@eQdAz{!wHz){>} z)~>Kmtx5H>Y#XBuMkjT{I<%Lw$Fmkb5eHgMhi6>`g`c?(s(w5|xwz1%_1kA5)QkcW z$i%D;+*^aBimz;Q)6Ph;yMyqhsG-dGg?}HPvMejv%Qxt?#>3WaGXu?6MT1ktM zxWeYueEcunHja2QPkr}7THR5Hp6arSTrg~eh5ZHslE_sbp6T8?v4qc#`Wrw``%>py zf=wROzS2kT!$C5v6x<$Oy|@Q9?|wtRfq+kfsYE6i!NZKHT_ENvU6))--FVWqcL&O8 zy67NZUpOxhM%RX|zh1a|;%%Ccg++fD_uE~q{$ts=O(<+=Wj9rafacbu$1bg_nZN+u^y&~NpXPVTV|b;qgQd8<0B{?(fp^DM)s>h*cFu&!qS7fWXdBrh|gc;?5{ ziqQE47tgJIHKA&A&&kBEHJc)5x2RZxb{!|W?$=n8Fg>|JuNrWs9+?h5BDdg>FBkwPcah|xw#7B-yULPc!zOUr4c2+vG z4#KGw$uhg}d&>BmXuh-h2Ewl>8B7E8SlPUF6^ULv{s`*vB&3 zTF)WY!;Upy8~d4II>nNDpy)PxBRUHrJLxMvhkP7e2TiMu5c z*M3FeZQ*VBqKV<&jN@Iy$Gy%giFoS~=>5`~ce*Qzg=;OON0gxvpy8I3G^1#;1@~=63^uAB- z-LIUI%jhr12LOJYyp-%ZVxv#fkC}FBFl+ENQ|5D&i9iwSeMMj)L5fh%IL9hOduY?* zmm!R#*4|Hnty7u)^-NVVuUfS(w}H_nHDNsVQIk^ll7EyyQy}TKLA7R;L}~j8;5pY$ z6Zujtq5tskLXqO}T*p?xILttevbG_pEflMcapk>-aCGG>{{jhQ$Cmq0g}QiA8Ea0> zj#8x}#{q>LyEjOo)=87^m`Yku8b(ZDeh%@tD7~9Ae)p^2u_Wt9eu?_D6NhTfDGXfu z-J^b+oLqP{>xhq-Rnu+N<#%!Tz~faRXzE?7F)R1=tQ^W+rM3H2)>ac?3Nc~0X8Ce@ zH>Vzkc}<|67`Lj9c33{Oo-)kb;7$BH{YwikHH`?D<-+Wu(nWV{j)P|K>-%vC=SVS~>u0{n-A}(0+0M_3Sx9c#kERw}qwAYhFZdXeg>B!2_ zR8XFQXbcpGvNcnyH9irt_yX_Ti#VkHHmZ@XQ^IQylpna?2fiC59*jxgS+<8PnJ0)I z_S?KH+Z>4jpSyo2L3fPD)1GYQK&g5W>qR3j>^?#ClLwU?_V<3ai*5+;0RY!PhP(zR z_jGBwO&-E35aY z$&b_A3-p7UyTeC@$z4FNa3=0oyc@L@e=GKGWpsx>%(iJ|@sV&!i8cExXoINITbopz z_omUMg`T%`#83~<+k;70FvdLYe}pj`0j26fUwT}WSc&#~@nn_)f0?c<&pRX_vBv28 ze9DKLQGdLw-2b-Hf&*1}AK~?ZdG`Ab)BKa$tm&*ILz`6n!?n4pd2I z!pPye^-k7DGgGMTAA=UpSF^y z|1A|fQ(;WT_;{Vt=<s+b7Tr)$}sY&eA1RNp!QryLWQbZF5Wo zpOg@j_;scN(GxDNL`^*~2;P@s_!}Y^Ai0@0`SYshJ6b&(OpKtF;ZKIe2)y z^T;+sbbyl!NLhJmY8G+n?-O9=Vwxdq`h+E&Omh9~ED(LFTfI`ykTPi6a_;%EBES@1AP5tnlC`%JP< z%E>`h?8T{(tH>g}cA`IoJBCv(!5^n8Pg97g@UHiW!-<-9=Xf=>K--J9h#d(c(p3-B zVb9)~u3$az`rVuZ8YXvY=nuv2w~3L|`{3lRH`P^i!} z@*LR~2U;PqbVPzG4i;B!$1iD)%tb_TgZ~5=2Z&~kq<($^Z}77pKCHxp9XeD3*)8IS zM_>oNw8~K83OENm!O(W$JbN||P7ZNS93J!I|KAX!Y*H0{w;Z;|NdRIanU*fUad@`{ z{38Ru2P{YBIFH1hwn5jL3}kAv_1W|R_fd6Od6PKzuKD}@wg{c7Zsxe$3WUG}@%q-b zQ+XVymK(C9n^)@v=EA^k`!nsN>dE_!o$LFbN;cM~*S)u=B(NS|E@am5`{`Y3U1&L+ z6^yR6s``eYiNZH8-2r8UOEviaUt?G*IgxGw8eB=BTkUT1MNf?VKa zaQ)Aj!-N%dO^-kkRU9t}iMCbSaWDMEdVk+_i1UJyHdK zFR08SW0ZXt7MHX|SU_C85YkGtRNMH&x$?2}Ptw~fZ2(0`>`AIf36%`&Yz^oUVP#oDOm7A3>Cz#6ff0<`qg$2YDW za>?fCVN6Q#bq|_4+UvzW=SpnUgkIa_!E=e9-Mq>4k&O^4TB9CDa>0TLe&+ua5;jBe z+aK#KNz{p*%JbP(RUde7UCFI9+zOg<4pYF9>AoO(W|-9IP`>wKIM^d~CVK4*1+`T2 z0N@fbD93g%50_?S%W4 z`Gu`J5wB<3LDtTX0!{FPp~YD3w4_SNJ|{+L(&v~pHUy3cjVLIqbxI`bho|qiJvO=+ zMJN;QAAlE_3y48mH6|A#$Dqie}1W7%H98>ik*CzBl2^ z^{Y2$64Qp_w+%$u7c!!rVGl|K*}rFlt{z&1$3#(Mwb}6oy%yBBcX+!Ga8WXq_G-J* z1q^+ehOP{XouKfYOL;m6Xqs8?bS~*#4as9QtW=XF8teuIrbmfkzKsQTdd>?M$&>1Z zpHfVq2eqJ29(XCKj5=HtdxlxL@+QB?zG5qB?aqHkr~15Kc?|irp^zxPfLpulX(Fat z%+6uK5z}fd|2GEbNfCaI*S?-X#8S$MkxlP6qaY5<3?dfV)2xatOPHBN;#2l9wWHOm zbW)Fu-T>*s-}Z^{F>Zl4MX8%l-De)+OEul-vYOgU@ZpJ=LNk_V2zapXH+jFpqu zCtNyO^U}npnBEUM6>^BQSFDGHFH$0hL_EF`7b1#s4J7Ac=f!@!^P>tsiT9Fy5?$wc zsmi~u%hPS_cPKTGWN9Dnm-;zAr+|hceRptFkYMuGQmA|%)B3?}z+et9eOm|`$sL1B z8;8`cOmtm3JM7o#owMB=ohevKHgt~T!+0FT3Ae<&C!t1OF4`KpL;#@+>F17{pdN7r z@nz;uRtcav;>n5hifU>098t2g_ zalk0L=)3Bu%7#^d7?7#^$q~kx<1XMAOrc;k<`q5?5sKq368PgK(Nv;pu+?Z(!JFnT zF5<#`77Z%ytdwGY7RAw)fDqUA6CVb+`VMXgt_LEK-J?v^Yf}|1hs!QG7C{Id07&wU zpUvE=6*~f%r;gGkc>PZ~iMqet3jVZ^JcJZoO5zk0+~Ea&;1Jyl#fphb?l+>x@n}Nf zQ`MT)N{dM}6dVe;t`ysH8HLUu{FvmzvDJ}3IhEx7*&#NnUY8t7zFbt=FxXn~N1c0# zJG8dh_>nhbG%RP{m)xc5(i(Z4ozI||D%@WcT(JLw`u_D~BkQFfg$`**;M>3+qb*h#09@}O$mX7lwe;VAZ80?_@6 ziYBe3fl{(Qr-#F-#5%-ybw?V9r;q=19Z4T5(Il_;P;DA1|6@iU8A+ZGH|Qi0qjTco z)r|7`=afE>tn8h-;vQ*uOmMPh*5m)4(+g;`fb=G{gPtoN4OOm@@uO+LX;Pjue?L9- zB)`5~b+M_HPFxpGk@mDD@OqiF+8o|h>N;bVLs`br)63aBW5V;x$?fU;dVGR!bsCd# zAA_z}rN@%>gpVg}DomI;D;mMQRi627tDa6uqA4_ORQ_Es9*H_N6Lgz|PhW2pn2_?z z+fOB9gC6X}H78m?@PG4>UW>91_(AIbrQ$(pK08OjS^jXvXDBoP%E?>IFVNVnWE^wr zk>>U8UjN^#d(+0g4P`CV%9(`Qvu}`K&a%vBmRy%^MD-`GF{57m))8mPG_qG7_trI;um5cIDZPFF;_k z-Ah1+S(U3))sg!hDjl^elsnwQx<GoZb2Ruj1Eh0Qu{byjJ6QC<&VGS#W?cT!gveLJZDEts#^XpU(-0iJv zc6+C*vi`oz4>Rsz9K4w4meMO}Tz0xmIsF`RxVS3+1dM3{XFl_h&*h_`$a~Il_81LI zw`Z9z>}@*2X)hNiO76cS4eumrRtgagwtRk)jhlI)rTO0Q2d(#+`uyk5x5KD{)-eHA z-A>>UhNCPC%UKk}-0~7fX^SiQ$^1*rlHeD-&#}f0m%MUcP99f!vGlaAA{_7FYEZ@g zKndOD6h0V~$@+}Qou;3sN~IV35Pc7m*4%s3Nb&!1^%ibT_-+6G=#cIhJzA0O?(PPa zloZ(}HH6U!j?pMEMt3VnC=$X3DxFdy-AGHw=ezs9pXd19&+jjQgM;I}YuEL9ohKD^ zl%=$J^zlm_54G)aF{x82;0jem%L|ITmLK)M7ck9#ZVcW$j*iuCgF4~EOTCHjd*Fh0 zU<1f@$mF#15$;6z$Feoq7;oQ1|B@|&#BtnLu!yo2YiI(P!CFP<-8U+T1MzNLqtC{! z#%bwyYDtV;&{08px~#1b@bc^Nj+a5N~MCrm;fe9 z!#TR(%*hXd3fOw+8dJib2drl*t74d?VQ(oHlf@#wea9K*MsG}8()x>#kpZ95?1df(9)2i)! zsYc}7;{PFYBZ?c}_vyap)b(YLc$s8bVNa~WwOzi$;!z2_E*1aJ`^J0Sj0Oyp9i^!O z)B6qy)OSjcI$-0sNPqvVJcW8W+jOx~pU(Zjh#@z>&oESCO(<;Hspwtb01XgzCPPV+ zexMl4qruR_f_lcsI_$|0$=d%qpBi=0n0de^`nG|Y!kjC+dA?(_?uGM)!{M2O4*DZ) zDoPZ759SVMl#^~nUQgN>l+0JRw_S$YS{mf_JGfrOPk&^@E+a1MJnH;7^!KH!&mS2O zqdK51YYW8jeCXhQacF#UfGFj8?h`D+1z{tu8om;eoLqQ2{ zI^OpobN*6o9XAXkJ z)_Jf7cw5Jfn&pHo%3ni=WS}*ze~Mq=zpj0eg%{&4s8$c@Bt0xof+&WYB{5k6#GY-Y zDrd~~+}5&MD01>*hAWZMM*A#cS@hW9^w>W$k>A^=KW`ZjoiVFPOJcqui{rIR{Mc%o znBWOq0GH}B8Dab4KZlCsyb0WU$!Y$9nhNL2<|KlvPnaD3*cu6)OSL}q^yX7-VEC+X z0kmyOmBq-2oKR1`w5!}DSWgpP2Vg5i^>j+*SFPkqx)K5%6&Rc6IQ;~fylb!>BBmKB zgFP1&MPF^`clGN?xHll)!V(PWs1vEe5qSAx@p{nc6@xYb%i8a9ZVE{IL9$Q6mnN8{ zzQ!1IK-HpxsD1S{@tU6U9c!gu5~=;)MV#E2RZw+WGK6NSLxIs&i&_WAcmJrlXcdRE zt{qBphq8Z0S>f$dQOy%ZOGH(+IihXo39hRgG`emL3L)_x-1V@j++c%h=>Zi>qZ84N7ge>2dz$k?74{XSs~TR{{rDzR0K z$S_NDte%^7hO4kUHVj|GGyMYO#Z-T9bwAmQwPG=N80K(})0p2HO8x`rDP>+3-ezJh z=85Q>ndTdupVgaoxSiEo2i3``KApvOxfcW*w6A-`reDou`QrW@|2ZZc@Rz;udBC|{QAbOEQqVrQ z?dv^_^R2(PGx%}XIDS;KSIdxq>9cXr<6c4FcA^rZ^oBC-;f5lHH}i(OH@gaAc5oL! z6YJh$@_fO5M}4^8v&NZaP4}@w)xS4jD^@7ze4%CoF2D5S>e0eSV!5gnca@qoG0$+v zze@j$=OE)y5K*Lev~2!_X z=keL|+jo~aqZaysN>PJf+{+aq|91hF-J2>zn@_^cwp&j`_MZ~e)~S>hbJ6I@0A%uw zq}ij+2D{UgrNZo`4wMk*C1uJ-EX!PfP37-Li`RPT`g-J<)*nh{$ebsFBZ5 z=i(|HM*rbzctRYxZ+?msQoK;nn`ueWv4HAGqpJ-Uhg36KXC?Q%{PuO~95Hr+DiR}V z6@CgZne~I9y{{X%vv-2!qq3Ru5}AdVKO)r1=eNFVmbiaKdN^)Xo?Vvt!{Ei6pz-7x zT2sxISU(y`6-w8*YQ?Nlk=Hqa)!7C!~D&wfHekp zRn)&6bYn*xxMhpl-wxd;FRgGvkFo^qn>AZLACY_1hFg8M*}h;@$^RWlNpN{=1NcWi zK6$_=IjP?qFS0-`WKEkZ|IM6+bG;;Q5v(Vh3u>(nvZFF=p#k*%>i zH<0ZM$*b!D`Kk9f{(l z29ueoPiL2Q;KP~Bff>qBR+4UDYTvu7$}Q&5Zuu^;k4nA?V{_f1geU|KKKH)dYF@{1 z_>th#y6I~f+>?Pn16sK){bTA^QvdHzT77-n8#8r8gBHB~1Bm+<@}RO6I$k^a-<9g7 zR;*M4xh}vp9a(57WQ_|=)=e5LDbWI)>K!|i51AS7Kh)ZI%}*k5r@3fN$s?97QW%oeEDOPwM>e?(EZnW^yJE!q`E|*eP3k-;pl);Yv=A|IPA?XS{DZ-_UviBEa25cDHeLwf~#t zXPJtC_u$&;BW&4hpC?3YeRq^prmt1b9|gHgCyJ7#dpwRK=1TF5@2|7@?;!uKuwM3@ zeXsn3%g!`W?eHFlVmWzX zm3gzLox#~D+ z6NJ8|%#A4234OJUfwt~9`psX=%;LWA3NBG*q+_UYVwNo%-CdCbxn~n#vtixGXIA^? zPAVF4#w?<=h$t|Q`Q@*TJ5yIKu)HZu>?3>@IE3wk_WuAywF7BWm~m3-UU z(%!~qQzBJ-tg0#*rVFMI8=q%S1fLsR>a#IqVW1~ygX*}f>9zL@&p!V_A!M`oH-6SZ>u$E~%Rk!j-dU#r(w z1G|Np)BgPh3A!8O90@Zxa!xJNmLFR0uf4dyRh1f2ZKe#Iz=kgAsC37vL_Tl?M|bUy zzuVq4)k@QCR5cMg#=igeIf$?C02+J3ZJxC+7Om~s|B~RcFK5f~%M-B;udV%YRRrD$ z=0ZYXA@%;ahFmFb1%8|VC|Age)zbO|4|`rO`ac6i*Tbvk$19{GWF&~+5K*|)eP-;3+K%l44nQRgC%)kG=WpG*C2Hd{a%DHrK-q1ZN5bjq}rvUojA%e`= z1TQB{eC&a6>TkmsiL)rY7xflrQa63ZBj}=q08T;vR^`)6tsh`b{Zp->- z{bU`H(7|h*)X;(v)OEmR)9^QvpB27h@%o724BriBOR2Q{SFb0+rf~R0q&6>44ql?= z$8Hfg=3gX-|9uXeoXfr;32rMn6!!kC+-2?jXNm~_I@((KZ-fxS6E~0;X}VN@LjWNv zqNWD_|L5TATnd>BJD~?Y-mYjNrNc}mYs>0-=0-RMm)7-rDlDo*Wj9EP(cgz&Pfz@d zZBzlTR$n)+!Bw}_Kv{^xWRUV9e4+qpaFJK!0y`|jZ}l^WY9 zS(1GoxR!n1!qRSe!p`oe#jwL%fdN1^?C24`w{AOWFjbe&Nesw#kWZdCXU({o9t{b_ zFD}meFsttB@mJ9rlBZ(ws^MOg!Kf=-OS`}6J^gL1w1dAswdoheq6S@047FoE9`ihO zfn~FzXDKPZ$F+BB0=JD!`N?S8!JZ{h5CsD7nebG)u{27~5qdFPY0lo~AAtd52MCgU zyhcqG?y?_{>01c{L(Xq~0vzZKK320TPkJXYuJe(|Xo4jg#N?=96N+@-w+i8Hm0XTf zw9NT2B*x~v6X^ofnj&n3*x#Q}ZWUiT_?*`&mx0N2RBp}f4^BDH_LFmnJkSwE7iot`gfjUCs{Tn6wIG zsO8vO#19v0GhYL$``(18J4Pq`5CH-JT*S457f_g9lwEaL81fHbTAfs#1dXy(*WMzK z@yUd|*ALG4>+2z{^|5*zYC?f%`#tGTzK#M0RpZ59dl5&84oL8SVpj12+NKI)UqQG&uSJaEEuSHv}~}0WgzR9 z4CSyxwv2t<;w#<{Elwegqeq^_Y)tR8|5h{yy?U~_4#PS8{B%QA26#T`>JjWsBoL4d zVzp+XPpK9%PhtS@Ud}VdQP+jAt7~#vQr~pM7(vvC#9$GT7YpDx)(&FXL^7)KiV=_< zuYo$e`83%i=cZ$>h|IR-`522dII9r>sYp^=+}6s{(o}@*gH1}}M65)S5mm3`T;Gm9 z#$!mkhk+<;lWb@Ko|PgK8IqDg>f*!-$~J;7X{lIHPz}7P#MX@j|GoFb#;Z5*j*2wN zZ5_>fFGh4^le&`Ro^eM<2`_Kj3QER^Q$Ln4a?RRAdAPWv+-EXHgzCIF$kw{})Kg*+ z!IcoU`?|z-DzA!Sp1LS-q{7@ienqbbv6e|Us7g(Fp@qr)Ea^Umt+8Nd3gX6jKd3_W z%Mx1h6Bgk?7_e;%|F)t;4tp32M?{Toiu{8G@`IyfE#r4IRlNkC;UXRg+pG3nyTS6s4xSj|yp(=l5j!78e22%M{E&9ioDG&nx`kW-CACBl(Br#Bh9T@0)+wPog z=93il{aL^5v31u3%1Rj%M==-U3>S}(;jO)5rd@x zVt6utw7{Vh7DP^Z#<4})vlpE#MoCErQQ|73 z<-W#)7uoV#Tobu(C-7LL@koc(%?X^w&ZGh3Q|S{?K!((=DIDb4i|iZiECbx}*Z1U; zp9@ZiZ<4}iqkn9KWVLIAazi-zCyR!BwA{z0Ywi!MTEwdLKTsjFCy?0JGhCJrFO_@! zhzhc|YQ;Fv;#)t)BzSG!gyC}b5)NPctNH80)oyH>?9(XF{x9XOtvNunDOwf<~xCqnvMW5?->721i@4_cL&y@3}~Bo@M{nq60bpqsj3 z?rUa|4kvW|=7ibeI%xO@4%mBqzwlGUefPl(&`hIFOQb#@7l z14o73*>uW#><7V|!}lkcWt zAks>H&2#KT+iS`E=1RtbhIF<%eMeKtxhk&9I*p4At*BU;J`CyRX3nW@(8!@84|F zMx#H5;*^K=zj&N?mDNfHp7XZ&8{z{-9didQ?7YS~*`}D__Y5977zb+S-d~Jl?3o_f zzG+sqojMmfdZ`g!Gp~E{ElB+2cx2jK?^J>Dz;#DRlrthEIM|UhnroiN??nCN8v}-V zS;fzeKF3NWW=1deo0H7n@fCLzXJ1x!QrF0&Nyi(OLJm_BM;t?Cx(x}RAOC0sU6XeJIHRw)u7Nn^2X@c4Mlx$HE zNxpI?FEg_Gj05?^@Y9X+Ge3I#egL&Ivh=jXAWzd7i<>`9XC}j_`%nZ2mP^Af`!F)# z%g@>Qid0VqE>0B9MNw`JXFC zHD$*(%O-6X;ywhsgu2YFHfJhUD={EWoL+u*5+ZzA2LVrXlm(PS4QEcisuO(&Tm!%k z`qNV7@DGZSaylLCG30G#GZp%i^Y%YJOo8HKH9{2E0JlF_>J}*(P2KB1%rx?vnD5aGK?+p9vo7X;V>%b}1s;)ggs6vW8xv0CMRH;5bI)ERujm+x& zzN;)9jGV6AqaD8Qv63a!bH}yjWN~S{7kR?}46ZcrKtwO%nSgr-!ibZ4nM#tn9EN1$ z)UJ4ucB}rW&7xD6Jq$N|PO?>97ZB$k8?MSwegdL!$}9Lt`DAnCbZOmWq^P7W?~AAG zNh?94lslyWRR^_ARi~E)X z`S6^)8nc2gt|SD?u~)VMnX>j-IBJ+LS$YRa@*9(qX%B1?fOP~mb@Hx2TUr$l%NsLk zOpZXH%%um`4htLC)IVshd*vCkchVF(CY-al1JH8=wyXY7DurEmwlL+rD3}F}8$|x1 zqOO-$UCFx5wM<=C^+|=F1|AWTxp`{`uECcD?dY8FF9Hem?s}X4a*aM6^;J-Zr1a#O zM2%HcvE+l#il87Cu8>_{c95o|Y8KBsUYI+&Fx#Fk%{um088IbGpuZQ5yCQj;5dU1g z7?9>RS0@SutR-iC1s0u2&k1P50;MLStqJ~O8R+DHONLKu3Z;Sp5k!JC42|%OJrhyD z$Kdm=Ti7K3N77F#NEldK^O7qX5zbb@gA(U>Z`F=LxvNwO*6MZym*qusg^4;0P`e- zGbwYnY^Bdty8CigU#*R>*Tc={L71O~m0a}zNuEWtH=O_<(wmh4KYWWo*|IC9j}fDP zC|vO%9;r3CAdT;y4j$U|ll{tyK!w}JwFt^D;D(lHB|HKIa3WyCnf=IXGOudeI8iaf zU|)z>!H$dPR@mMeS-Zc{k*vO0WlHxx&=5up6egLBWa2NNqv&kiNq=%0}{gET74}7 z@F~?<2HtS?Q7;3|s>}@??Wk_Tauh>wmYGC|Bb3r*U_Py*~uV+e*ksD z89$htm4mORk!w*{XX`~fg0ZTmsds9#bE6ZiL-6h0uk=Xw{Z ze_;4!Qvm5kIHOkIOo>t>Z)h`LckLr z0VS%DpIKYLyOx|7m9-=2d4skkUuOCMe^IW(yC|+-ShI495N@w6`P$cXT9KFEm&{Je zmJ(#{9i~AX4g-w!>P%Y;M)? zqvg5~{>OoOfX%25KkpvE&D1Gb3?fPj<;7d&ZyQOar<_bCDiy-ftWLukvXN+}wWpr$ zjQ;$0w{J$Yc|`q!kuqUj+bd_6QgpH96%Yj-keFX*|4m-l7voI&_)+PDg)UL#fPtXR zHI=UuX-VejN91B2y->r%F%Du1)^>%zQzw~}&KK70;{>IGNDOKDU4l5dTUM8tch=NC_Bg~27 z9#w8KR+C*ax-F^?4XNz1H|M*v@m2;%^=#J6h^(!CfKX{DNKbU&Zud1MULEHp`t-uz zxRen<0xMj0t;%hvM=hK58S>}c`?Q{>XjG}4n}O6pXV)Fb`5^7G1hJ%;^6RpOYp5SAVV`2DhLa1NZdslsJ1)odbf zik(i$Mb}J)Fu?layV3@&`b?81G0R>o6q1^}B7eO(XX@YB>!x`+Fu5T>9U&`IXB z53UAj`v+|cr@S%%2GB$C_5+g;}_$6iGnctPKBU_yqWXKd$hQ;qc z6|$>{sttSsVa#+ugpag*rrtv?IbVw@&-ef`E(?>4{-M#f^O999xp+Ym)M=hmO7qv7 zrZCQF<6zK@9srr}UTiJHvTTiEXs(HWXswkugFEBp26O?=FeJjBc^Q7JUMKk0nYK_% z9q0Frj>R2s^$Q{C?VLrH(w!n()ES`zk`^L^P}GX03=k-%+OBLRp`SbZr!!ecTJWvn zo%IkSu(@abqRdj8nj46NuyStb@wJ)l8AuMkjUjQ}v+VJIh9Mg|FOJb^nj;KW+1Bu* zd=S5WS_q$ru@p8@{h04p< zHTHhF%09!7Ug}R(^7Cf%vaCORGSX%r4jg40@jb<~z5C_ak)3d;AJAT74`p@ZU&OxY zZ|F(WS6HXdn~)x-dLN#(&`-5eEtrl9x4Q6l-XNK_&%j$hQ>bli;eXdX|Ad=PR|;iw zVxI*+XJhoKWShC6g)kr5 z?^@iCigTM|2SgdlUdG>OJT_ac4>$hJl*VRI@G-sUwA!>cvGVq-mxlY(dUMQ7r1Tw1SZTbzb1c`A39zVo-|v9tlettckJ-@_u)_giGk zO-HTvjsDuQ^UhqntP9my7$ag~xfPAg*s8v7h)m=j7ASt0J6jF9U>wUvDi~hBK^)sV z99Z07L4{8YX;B3uW_nXw?>>K%3VQ(OPC5SZq?k*~IJ+p&?_D^hdO6*RT%}lrQ(wC!VN9e9nqC3n_^F%|g5Nd%aBV z)oPaSUwjC(pJwfYyog)eVL?pz z<;~iU&|5L1(_4)Y;NJ-YoNVf1_8YfA$Zb^dZ(UVfrCne5Wt`Rw|ls`bO^(!(} zLrcHOR%~zAk(d0|5c~iaEp)FC)fzk#O=uPj4Cn{C#8C6rJ7h9H4OcA)Vq9u}TUZD< zUZmc$mvJxF-+lJHOo!wMLqf=A`@p6NSB~g5?nvM^YSHuNfX=4EIs-=bMN~ar9#rjJ zDuQB2CJ&*1j~?=YW~*u|Qkks793Hjqef;=#f3=OAE5m+`>n{vGJSAgY=j&|0sL~&N zn2hlr!KnN&Te{VgNt7A3HXILyY+UjYQ6g>-XLaM9DdU@H;nxGO2S>MtJjm5Wfp7rz z+MW#wRI#(P@^^4~-EJpjH)O2N>hMMAX>9hzowYvg{6PJZc1@VGYmp1}|=q45Sba&cB?!|CG9ELt)gEI?~U~^Mz4uFm8Q-`I)e`N}MZY ze<+un|LY$>m>%G-uL6v1vLG9IZ>7HAuI*RVgU0-!H)c6T1_ac(!D!Xi9jlke9h=iW z26LCSPsrwZPQ_3|ZRj$5IC&Xj5t%^AY^JGPrAvKQ#jMEcs))*&NZe>WUBIl+fcAb8q;A>Y&{weJq}Ng-R)QBkl6?4eVDRhES|YW& z_W7zl{|dZw{WRKQ|Nb+eLn&wTy-UKg)%P!QYX*3?yW{`3r#9AW;Vwcvl0E6bKn;>s zvj-_*fdp ztI?lU%q1kx;mcX#M%*jUx-;{7PBUQZXM>RG3W>ZDTm;Nggm5`A0W}b4#;@B%;my4$ z!gcE&Ds#2~5|pW^831qZ*zB4p{jX1Fa_KZvpPUYm#n`eUaWXW47%W%T%8T;v_{SLU zG&t!O1ZT^D%Y8`uEu5`Pu;@fQc#@`1DkhWz+f?nsvX0k>m@sbckCH+b4A`#IWOQ8M zE=kGaff`47^mwux?Ze{uxr2O#Pkd$B#Ks=Vs zD(xpBO6^-HYbJSNK7z_F!l?D|OXZ0^wAc)ZD~3g7$h_Ko25*a{h9zBT1@L=Er?n{`sNFZzW(l&e$L1@r}?u_2|}cl zAx6G_eG-|i&b?N(hOqQEp@cg_^e@U1lsImZi{=6Wr*|-OqY#<~7{!WPl%~i&VWjee z`dlt6!TeiUHP)->B02U+!7d`e+5&1istB4s$#+sk91nB}-i%_4bVVjAM>4uKi%InE z45-J6uq)hp6Z4SFqNj)wsjbvy0k}f^OcecsavpvUM4^ZU7Hzr?f5jj_647x{vf()3 zev;8`Smc(OiFKan;63h9NnsWi%_!Q6wG_4Q2F3?c8xjvuVn&p#4X9SbwhCe=8hG1( zDx+$4Wg{5N!>oMf(B`H=Aalh%Mw@3rIA3Jz|S+dJgxEaa))ox}D3BjCCaP@#ic& zkuQb0urb1Nbs(w`=c}6wj5GkaGaQQ21g%Wmvu}FKC980U^S%)Z7CHhh%3q@Hg8Ij3 zbMZJ7ffK|D%5R->M&Q{1>qUL+uVH7MKry@?5 z)&6=TT=}wg(bFrUl%au0n14}LV#WQqY@DAt;!7pLOm+&$&P%Wm_KdRsl`8S%ELWin zpW&C@Q3lEk*3fyBTZ|QFT{{VjYO8IBv0wUBNHr_FzTQa@>FafmAZY+G!Ow-|DDC+C z0216K29E%^5z4Yz(AU2oj5|L{JDbX}@UMHpXHzk0{qlkY6HzoL;=&iu=s>X%o^Zq1 zAjllNdy$Zq5`Bt{Rp2}$E56Z!gyFCzfY7bVa)AA-efGCr3p3Hq9h-zbg33>$+VAJj zZtTs!rhHbk{^mQ&KF*Qu(fVM3?0G(%b2Za*=|SRab5m28m2tx16Z@Owe4=5N5-h=I zB8kVFWwhweSq*do&kys+SO5gb0wH5OI}VtYKOL|@{;v-=pGwk25iLE<&jjHLl~>N- zo_bQz9Qm!PyB0<|j`e>4AJyet`&`s;2X$`$)HizuJYCw9Q|V(i>3%fPbCJ?;hNv9Y zgZXHFH}SvV^CExnOSs~2RtX;vEf2!s@6wM5HnwEc2bRITJypIdN&P?69$M(^6V~)l zZ)gfx?cxle{07bxr^|5(Ujrb-B2J{~((Odn7f05;-M;wZneqJZ`y)MtEWQ>bc=sFBgw>FuVqtIGJTfphwA=iw6hI1H*$py7J%e7D44k92ymtF!P{ zrSG$hAzQ72FWrv#Yo_X>zcdBDusv2GGV+`&o2=RmRS{miukNuFr3lBZ)-_z0p9geN zlF^B)l95Eu3Z$3b7k&1aTAJukLwasYh5f9i3FKkGlAW&X;Dw$6q{bkTMk!lnEC(Ay8)Jl4e^DK6J zWNTTbzI&^~aas|djNwDGprDI}_*idD=nX3Va^Pb%)u4FoUJF}!oSqVj_~TuXYXU89@lf;O{;%F<4&&T(Q-3f&QSuPO+ub zk01?8B4bEcz2GL?_`30{3GFLXouyL(t8)kr-rvxYp`IXJ2OlxOg%uY7Q*-PBh$A&M zi|AQKL(t+|Re1tXNKI2m5^ZqxJOH<_+_Uh@DZnriW`vHqIzG^cG`&+?^Tu*qTWvHM z+A=9H0Q4#VBO+xDAfa}ftB;)1_j8pP*$xbE)+dBT83V**c}7g}WKg-b+k$;R6KMDk zej?93PJ@Qw8mFA5+7@_GDtKxWpN6bkQY{PAUYtK+{`2(WV*JI8AkE;2=G7-ln^se3QFP17bNw>lmf{ZTM%|BvufJlt=Io2=s8ua|7ID*-8m2HL z*d;IsJM{5cW^9hDcJjs$hj5yR{$M7}dlRXXab^BXR|#C`$b?DNdg~Y5orNXiVF*yo z0(lC^IBTnZO=N$y7@=c6{yHcypu$UV11JUqDB9QugA$e*^5m}sbWOGmQgp8Ze}pvFj-av>L9mTKjwJ^YcL zoiXmH2N2m>=LW5QhiEQZY;LgrusbtQ2}y?ULVc|2@7`jBXBDuz2eI}eF}Yl1=y8517e!>Qk)Om0HPCZ4%sM^~^7lw0^-vgBP(@O9p zAdUh{DnE26-0I3(KU4a=lJV3aBOn;_Df1}rtvYDm=vnn{UiC>>YYX4u!)4X=Sr4I8 z7DMOCI&av^;EPQVt1bawgPB#{QZK&;)cNP#aE$xS977e!?`zA8;HSQ|oSn{rQRxDZ zK%?NArmL@erK8V3+oZ+swVaO@UDUzznnR@THzwDx_t7^FV$(+*)8*X9>cnV>{GKkF zN|N}`SdMMK?)Wi3=wV(H+_cW+3{Qa$u~h`Iz1+~XUx8iQLUhv<7YrPgjqujfOrXZw z^p4$r4t!{rSaJ_9z9LJ&&Uu~3Ft7R4r$-#KnFNaLW|C48TNS#1TVJ}4ntXUtzh9dy zb6sbBmZ~->M)q;piMl|;jM#l6vO*j%UDcaxuy+fMoi87dbk0-JGV~tQi@H0AaxaA6 zb-7HZSanPm+5T#tZCo?qol3q8-u-s+A#^K{q})F@UVm==;aPqNSRv^iMOu$b>>ry< zXknfZ=*5j?+udV400OS#ZT2Hf?MvpuaaoD{aEV}N_WLY~E?Ce-Wq^5Rhq^MU z>9eR&OG$-W5y$oq{76w50QUk4$Qg$1vWc6!I{V|bIHyUfuo40sOZQ3|{Vi&MK6t(s ztmmLzA4UE0vUXE)qhse?c?~^dohLsc9@|)~P&d<=Qz%xM9vb__;tw2hv1Zw9t1rV! z_)Z8Q@|Bp31*bCnVX(N_k9Epg=~5Or#5;OqVXMa%BKEp%uRWe4-pem*!>vCg;0yP; zjPnN`)cp>6VXuWQrUH86O%MHK2Eoc;sYQE z(rtJv*vY=e#+o$K5%nr;7JZZeaNrJj>&MC36gCbF2K2;QW5~p9pXD#DL-;R-l`2$i zr7?@>Gdb`H91-Nd0)bhljYTVL71j9jwlD{T2UT-42)@b0I+hLirP9)Xlj%9?^waQ- zg7@^q^EL&97!H-?%!xpUOe_pre7DIVxSlL|22~)nG2GFPP1{KvAiZ2d*$!wFh})M` zRcF~5-P1W_qM?(-9$(u$?sX;KLQV@O74=@{HMqi?$q7aR;pO7SU_vU90KuxI%A(uq zQwlGwXf%nLuZx&GQ73wePIygafS@S@XHd$sqZyM$uz6DTg3wDk0kURazm?lsjXb$-HG4>$Fhnr*Uc%izUP@#jp z8IG+7@GM-WwhG|uDrF|SX;M(2QLEYC^n}6z6y|yi(x82%Kz~}?EHqc!Gl2J935iCxP&}PXeUof5 z_n;^i9g(_alF0!Oe5e=9fDPdjgwn@IMR%Nh&XS6xRpY*; z+Uwr~L;}L>x^R)^Vgi?y8*5q@zSv}Pd;lgQ9$+xG^4DA7i?}zjKnU(9;z^n+u>k_Y zR-^EGifF!Y{#K$_50G$&a|cR-)zgyW2o9lFV@gaJQrMya$~pgc_zf#RL#c$i`t5rC zy>^8S@VH6ZSSp()1ocnEyL5$UDrA6i?&y|$Hmyg&XWJ3NNpS!`go!|Zx*%6PGpln= z)#yYEvE~=F5aGbipfsQeU9?&RXk)#tE)V1zl~*$?qFAdGh_;8TlW6^!A`SOyC8Cww zO79)ru{D730(hgi(+*cG^`AK-2xco?kBn)>`t&Mc1<{#0_keG9rYycooAMBBs-i3j zrlu1l&KsT{65M0DicqK~lzAJSK8u(JDJ>>7EhL0;>`2%HNXjXbzr;S|lLv5(q+#Q) zB1;N}*wfKIDWdSiNwf&2MYM@K12>&&A8OmDZs>`RORlxOq*Dw!ZR=SUjto=o9T2{kjCG_V%+Ralcg&NxRa&7pV8yC;Cxg$ALP< zeTEfahMHpzCjH)^ZUp#xVv$u-PvPRo@E0Vmj#w6zTm{eiY9=(=2Ao*Tr+M$i9lV;a zTNV8Vg*+#s6aw^}u@(`INX$o36#k)xkv09jv8(VM!xE1gX5otyG~$qi_vOzpLUHhLnxuo==!7VKZ^goLA_21J(TG!Z2@H@jw$KodaarZZUvJ{?S3J*3 zZ(2T(_K&>ai@o%T^$fB=c_CwBN+|l&@_!FMg%8UKOUJS&tqCMZYi+G5>>cPNLZrkX z5kij9R^h)za?4%x{VGk%c-RwEhAv@u{26>iCHdtYcBZ%;$$Q}@Gr$RA~i z@OG}ZTNC+=z4}~Yil-X-aMr;xVcMa^JU1=b>pV@KK$3e0>av>aHGj<<36m!T&CDDp z-+J1)P;)3wGGt?Fsi20Jtjf<@Jgf+ZvVN)umRd#>M^+dK>v1L8y0{E#Q0k6l-#|MMFLSnDz;Y_P zVx99#DvX3s)F5-;n+(tYDUQug-lo72T|~>YS{l2YUM-*Rf^~K;CzMqff#^xYwR3qv z{xphK?yol7!uUv%3C{`5v9VXd<>8e5E%Jn0=vJky{I{ zLPse@G#M0-yIL@mc5)kTy>BJbGVo?|+f;E9MoD8NXi36S@me%VqIX+3leSu5`4ho% zcHG+%b--e%vd3{AUAuxPu>1`?rq2`syl?rwMU$enWs9je^eX?`h{OU^>T6dy~09NvM+BYyy?%TMbvPV&wGZs(--d~$iw*BVE3)<2R`zVOYIB`(q-kb zT$Xnbx^SwtfP@*BPcvw?3U_SJ=1*F0sV;@W4+F$blhMo%Y?3fJ^E5rjfp{pg01BtL{-oO6Rfh_O6wZKzXhLCSfHO zJ3z-bXzWnM({ny}#`?m;Y=mg!=N8`QQ2Yxm<xvoSad$eKS_~(C1I2L{Ov# zE7?cB2F*qsS-D;`SMsiE^kiQjTVmEBQnE#Ivvu6SH?{D}^!Pis3Y#`?QLU5&ft zIf!U=-hXekFGg$jysSiA;#k=2>f^uv0rWpG>qBrO%~~ALoWiF1m&EP67H01DhS?#Y{H9oIU+41!VobQV7h31-}IkhL~`=8&8)r3Z+6GFzRB)l zqYLvH_;GoQ!@>$ZR*I-*U>0r85HE&q|-J3Ci zN|9h8*|q}}EX~lS#NPM>R*#tAjJLl#1)bHE?fWpe`NFaXvcG(x;-IyNX}i(>2N3VJ zG;AsHoZ?dCQcAb+C$1YYI4=68PFXL+!+pqub%;XT42Wm&ZYA~c*sbQ9-E@;q1#v3y z+&=)gB1Wfb8)ouhsT3NZ3(T}1=8%}%b7^O4PSSOdAKV2WIG@TSl&Rj&Q@H&Rt!tA^oT5xG9;=X8)j~ugwvZ6bcob|Ly*IP5Nbm)E}F2H(;II zXnF!|)9q>{DrIx$|6}Vd9HMNu_H7UpK|)GE>F(|ZsiC_|IwXb^5Jo}}7;*^dnxVTxN@=8q zZe$2)B_*HV{p@((y}$SS3m69Ob+2n(=Q<9vR))4uD6z*{2Hrb)3D%GyUTqCXcgJ}o)(-4P`iQ8J{31=}N z<8&{*R$TnHF~KNs@utGI7z;*1VA{v;QtnH(@G?UeO_QR>v2VnYxB_Ly#p; zPkgLE5;aby;~x*>-U;A-JVA-%s!1=ncf!}y%1{k{xp%UnjJ{%2<@)m5LnrGek-LJT z#u^JbzLK7U(DMs~14MANtn_%BpUo>y;st&+>dyjow*OJ4CK*Rg`sO?nlpve8N(3>=L53QMl2^IV{%!RCcw-6gzkqSwTEgb)3 zV{^sWF)z4xgwXLSH=$5^w*|$}JA{jTQWdA%{TgiFRD-+xY}nw$I>2q4f?`Ar?SVd~ zaRukwyaD0f8)1}`Xl0dch!36S7yo;<%w{>>V+lRF=)tvqjb5d1#^}gWY-}o-*eZ?$ z8((cLQzPtsG;4^PPQMPD#ZxlM7R%2FFFz8DX_65qkM!KY4M)LhLInr9ne#0iZpTru zDLo(bCAWlmME=1+9x~@p44r%f=+8$|+yx7;@=-BaFs3(>MFT-sSLN#IF9b$ePLB+} zbL(`=4G6>(@Q#a>zIDcVxBr;qQ(PptZGda$@+Ep@}xEg zk#Z!ZuOJ?de#z(x(gkITT^sgvFJUe&VltEuz+7EXMS}+jT1a}JxPW~94e6U#?9K&z zgP2Hl>OyumDzAWoI)sfbz7m1fTxw4o3``rS2T_07#y$C%m%V+v4mRk5ZCm&?8^t&& z2+HkHmikHYN-2P20zpRnYEVBv2?sV`Qjm{j>$IC!QYFZN!L6TJkd$EVC0b^!Vvagc z@qd0!J6lW_3fTvcVkJOA+D6J5QsViV{1i>bT(@?bB3BBn3fq12_)t7=TMk6n z_yM-3H=@$B+;OJjwjwX$EytrxK?SJm{qeIC5a`wnzPhA+)SVwWR&0oe$&c>#Bl>_y zh|AYcyypj+Jr~3hk*t1HAH~eQb=in%S7#h4r_~F-5Qkort2|S|49my%lpQ*T$f$x= z2nk_M-wY#iQ%+h#mzP>&6$(N(F5q-n7zi|h3euw$Z8Y@#Ct@cCBN#F1TeiTAH7tCH zRxe53Zg*FRE1J)YoP1ApW9V|@=x8m||0Vr$e6S)jqe>~-?w*|ax0K6+c^Xwh&f3`IRZUxV`LStJ8zY2P%I7JPb2`xryIaTsM^N(n7{*%MJHsvWmRNbuRFXi#+dscpyzM1x6W_0KfmJZ zt46~>A{ta0G-;BQt3WY41q*FAlTLFH#j-2$MROTX6}OTDNbu+v7%-?9Ek`48EQNU|^%>PMP^6agg>bPZj&M`Ic?BITBa} z9c?8dz-W5J-W~=KJCY^MQ1;MFee2g|(r)LeC}A9m;T=EI7Nhtv@$rKJ+X5$@=nqZt z$<-cPB2VlB{BLMI!zZRs)z2E56h3?$B;S856}rzI+*!JVes}b^Oc+;t^`5N_4}Uct zNUI#vbxgQu%F3g}%2*2+->$1Fy33dLfpbeTrzA3xSs8X9C&>Ic_U(wbNduyAt*GW~WZYFg_TMFE(Nl-ErEq9IkKG{6=l6-biF<(YVEn|AmI) zMzAhFs4W!8J|P;Z-d^Hn1^4%;xmSkOem1qzkG@Tcr5x zD0)>I4~LSy8fM%8SlP2UoNsbKuYxY%ljbb#`XeQbl*A{08~}`kURI1h2oPj8tgm_{ z02p4#SQQ9bts{Vss1H_BKC3i$o0SpF)EZ+m1xX`8)$I|(jOm=Vn2G#t7gfLYQ`wUv zEC7mnahZgb(p<;SrNafqMM4laevb%RpB>=CdxS8JL5MsZ1~DU(4Rsq@_>KIu0J}v8 zle7(+JA;zrr{oXNCkF|Ez9=k_!;?|}QOKCPyV>5D8;{!&Vl*sR#pKeFk$8yFr>qRX z8N8ToX!;w+^8yJlp}E8v1dqk+v;&WUShx5uRSiXeih59f0#Lg*^O6_fYMgli4Byb6 zVkP_pu-zqEi!D@#N5SHdNWFvy46(sRc$1)_ua}&97y;(ljYIMLeqLs0UJ2wM(#pTl z#>92j`Rk3sViPR>2WE3I&^+##{Sl+1WmRZcfKtnp5qE*R~;}Zwl*D6Ieb3OL4G{{ta)@T#xvNJB0O3&NENh z0a2N)=`s>Hva@Dx9&&x!ru2}Ue8k+uM4J0U#e*{kp6ysI^;@$d0=_Cyx_WwMmX%&2 z!qYJZd_$L$Zf0K0iM?%dx}yWiug}YCKvS@A7xSuWr#t@U^n@$RgP~H_(mxq+ZS>Xs z7puSqt%gtfoJEl37 z@n=ga&<_K#XT1Abn;e5xOl%U&sh4h`8Wz^ude`=;<3E}W13Q3vg&N?8pt~KFmv}*&j#9joN*rDTR81J+Wv<}5oA20zPoF! zB3Zi^GYwf3w>->rb6N>`F?TH9NuyzzqsT_YIRrX=c-Vk zSnJ0z1fSC+35p;4a8yx2YUalGAGFHP_MbQum1;Pc9GmRmL60YBcrP%naeT_XnE)yB zvekV%Z~DXIr_#S;r@R&mJFjBgc^KFlhF0@7hdl}^inkftkh;xf(sp_J@Wy1V@^!F2 zuXTNMrhri2g5;5*jEH4%I|J+Rnn;V<&m-hR@OP8cGIO{}Z8Zr5U-Se(!+4u`b4XWc z&{%yO4n`&)v9x_u@@9M%EtwdYopdNZZ=q5;jF{?bx%26+N<6WxnXaO*4;}5=4Y1T3 z5XkmB>Op9jct9ioQd4R(D)`#W?d{@(ke3+zv9vi)cguk(d@kYqp7NjA@eInNzJ#Xt zgDcwsJq+g%$vGd!ZOpA{zkewR8vm&vK(H>1wnm82zi!2d`MJI2*LgJGoqPHh8Zxh9 zX=$I913b+WWmNb}e;m62eVt)$_`U$ZaTkF2p9S(uHt!4dQ-rbHN zW?h!9-d_K*BJZ3R=I)?J7bU&&gq(>aQ)#{Kxf3^%+ygYvjfY3?nm3Q;xZq2NOPZ^M zjlR;Ye@uR>>=S~1@DQnDPAMIENZ1m@50;2tR=>3%KkL#kSZ&`67INX*n@^MZVfJz= z&wD3<;!o5qkM7LlXcG^+>YQUhfc%&RLwFE6$9APFn2`{sXC#cCuZc@`G__SD2! zO|0!pUyFdSNrL39BjC8)bLXh9a`_)i@CjO$I-%$ z=5kX=G$Ud^Su2Qqc;QI!fQi8tUp#XOYHFIT=PyxVA>sUp3ekbehOo~QQ=5qXJY1Su zeVkfg2#xeNN>{q(ZO=C2XhREL!2awf(SJUs8VoNMP6c|5J8Js2s;Evq?wyo=4`H1(r z+Lk$RL|lt_g0}D%s(vR%u>Z4k{!ir$1$DT9z;8(J!$cAfU3upQ;K@N#}4Dp}ICR0(ZkEf5yx-RrK!y z$FvlYUc=Y1otu{h!)88DW^9lRU|sS2>`w`kKMd z1L0-8-+umI=<{?PlLfc_j?p?eEj{;)ba>`owr-%?ePFV}QgDCu@+g~302Br#5;xS} zDQ98?>@GXz^^p1NB7l!Y{jtrsv)C#YS;6si1zN$ogvY8WWK;4C5SO`(PXIbizr9Hi z4A0{DiB(c)@5Y(Qj|%qlf0g+Ro7a?I?^)D`m;5bYfiQ?k zd}ik5hSrL=e3l(QEWM(>n~s1PX$YzwHp{kemNeFZyB9@q(C4>`>)#Fz*GcQ!raqWXr^2e&O~F0AdU)Y5wkP zw^DXbKRbTTGvPVc%gty_9%5CZs-sb5kY`ZTlDfHK@ee}2#YAS)fCg6ImAED0rpkBGZ6d^2>|Af7&8ybgc-QMl-ee0NjFW$z{~Vg=#OC#XDK1j(v5J_ zy3%|WH>{m2Yl5wr!<|AhVe_i;Kv&;k0}h8dgE-hsmNPgySURhZR+ASUkG784cb%;D za~ln}ciyLOcQjqKs4b0LuJyFc)V3s7Y}9Yy7Ztm>=xxDb8ycEWl@{&&jae31YMP&n zb~pnzh@MB9zi%?IDPV>a9>e?s_uHlPt=38I(!N0}RhW9ECNO^A@dLQw#BFzp#ibj_ zQGGV#7sZ%gN?NtYo1xp3Fj4BZhgQL=pLer|_hKpb9>0}%zUWON@lhEWYHqYOT6)*B z1~Izt+c`R15G8+-K{s&NDuc8u(X&Fc4}M#QUJZc|tHezc5rDrNOkkT7Q$BOei1ImH zY6pBiPOE$>ghT#V3JGSz}tHo!fP3jgk){-=*56YAY!?bY6bt>0xL;ks^IKqL9T zeI%O%QR7(76f8db0%I-55(K*aKW!w{Q5$W$(?XQBC&X{dNA$d~iA-J-ugt5tt?1Xt zlBLXQPz|kChIx*MT#ry(LE)@%q}U4B=-$#7e?j8TkAG9C$2Rsg$Qh;V)J_6z49 zf=clj2ODlzzD=qlNMNvifKe;IZbaUcec?MOLtsID_TuMkN>(ThweT1W;-fq8tL()S zxa}FwVuq1Ud+~H?wo3HLZ;E`agYh9ans}rXkis5|#eGk3KZ60iX83x{cM$x;?!n$` zq8YycT7p1gu0r^gPS5Yx91+gTb^*t0DLCT9q`O!##fN(Gp)*%BRb0a=4l8kR@3~6z z7BsjWkDOl6i^;Dt1EooR@%Lr8ajoOx+8RhY?;-L*@-baMfk5a{xPn}PcdMQMiGsoa zWaG4?MXO4fj&BHWMt=oezh!KxjK7ffcCD>Ar%y?r_(c8jz&jGO9aIT2Mb2jZ>@z5MQu`69l-Aq_GzmY-oexX{0f#}_ zpPxR#BFSK=OWHe9=2LjjjlKDqn9>)xe>FiPlhJIf#eO9*pVH+TcENk`>%S<;gqeznPGv(R)2ZD?xd5RjO$E6-8+n zP6D1VeM){8tgLEC5&_+%Jtsd<`lb$MfaW%uZYFjltUZDgA1iZX(;DR4Hq&e#LB^e) z;Xe)3e(|b-l0fy*H<6DUSB1UbRmTz#7@eQ~glK7^kv#Kc`J)w*lIS8Y735Q_0=L8W zj#r-hKvE~^!~B87jxu*Aw?|BWH`A~6X@HEXGg?pg*T9Q1)eRN;HP65)>$esiT2gp2 zI&@M|)y~j2R9z`(vAJuX%Vbrs>`{=qn^`nCxX~{^=i{5BNo`z3T}{4mHrhJ6xYkwV zXJaRnbOy=e0Z*{}8%CCu4It!C)p3z8@jNz>7FLZ=RBn6q&EowYpP+g4mq`eP^d2RR z%Xp5{Tue3ms1s_q7aErW?)?a^2` zi{}p+q=Nh9(W(+czU6^3qGF0S1G)*$LS9YwN@PmQzRh0N z>P_qC#(`YgRk;S#Zl~O&rfZLE3}pAkWa3OSlYw*VY~GkFV2Med9c@N!5iFdUOqZ7T zgWe(`0fx27MDGR&5YOHIZV!BpwgDZV`)^>Lf~g{{8=3%-=Lc47%M1Ung9`wn4i-cW z2<(}30<;&kj-9!Eq$2wr(W zel4An)yAMH4E32HNs?8Wumrz;#A!#h{*jIj5l*<^S8NcmVswo9eIg5?H_o=jn){F> zpi02FEAs;sFV08(271r>Iw%DZypo$8^OQ|&xOW4`A=)^Ht?ZFc>I*o5t}o zqX+qJ7DRUtvu}lvGQk)bq-TgGl>s9#S@vu}k(}VzXDQaVkz-Haii;e?B$+S9OugB{ z*U~%Cpf|Br0xoD=go$hwsEcaLH8&&xolj0vUwT%oy@p-Z0~f3H&fM6m7@U*a+!&e13A*iDMJuqZ(vPPZae@A7@K zZ@KlD@>bg!$oxU%_>8E-X=@LFc*8(8MxH5gEw90P@4m8Xn!XxgF>mM1OrjHgHu3Tu zD^=8M7RjrJ6w^&%?GJ6z=dmuEFBrFiSM-|t=`g%M9t?z}FnOsZHDg%@v+E$Dzu}@f zC7wq$hRR}IZASE_h9E`kf|t0}Sjf<$C~@9^@g|q!i;$2kL(FQ;YmD`9?b(lS4(Q{9 zgIR0wcv8h~CY#vs7~TwT>ACbsW_x-GXmVzmLx*9ogM{&@(#deFk{Utb7i5eW*E4HB zY-IV_O2Z)}P;cPUgpimL_klz-rHSzQ1xeH!RQ3_z5c-@<_Z4=LkBw6ih9%1iXxKks z_a4mug2zT16DP_IQBGo;d!_#9WX0G0S|GVW;PTi;-Tum#%9)P7Y)B$K-X+72qmFUo z_DqhOGbr=`s>@B=D!H5aM7>h_$3(M~Q?0O6xEI6|d~gAfB{Fm3T@8Qhi-#cWfBgLA z&K)ao%9}*H-32&j%GE7r$!a8DmzbS_eP7nhymZOpzZ|AST=fAfd8`d&Z#Pghh_|&! z2fYD?xG#SuO8N+3&v<`6v+Z=MjXSpcJ+yTaBD~tlX8*GACfhI;Cka|tQ!r?GXEu90 zZVBC5KO0I?N^sWYnQPJzsrjKt zdbW>b2&Hbn9@J%ox0@ZNdL-hy=l`m|!#8$2Sdg11!-W>+d3loC^o^8>bi(dt*#HvK z?A$new_duVa9DLk@Ty^6Xx0Ewn*4jRkyj3qLNc?eS3DZcL9|Yo2hHlIQ06tX$F1`S zwY3F$d)Zeft^U-qhSWVQ1h=*m;)tO03^f9O`V4LVH5W4C@v` z`f2Vl9=9)A1wC&vg=TtUvwLB0)>V)XXvhI$^QCzUs-~t}ivm{I2Ewm${wouIxGF<=T?@=i)1% zFZS$#LcMd>Qi-RQJ@P~zH0&W}949tu5z`7WV~siR%wQGV~Y}m)= z=_%*FaQ7Elj<@J(hsPC9ud4I=5~d~HmHo~}ksl_DeURrQlt~|VSr+D6W28siMKs4M z`p*;>?=ws#M;qG==9*M`+{Jw&?94cjecQ3n+Y)4N#JfOf}<)a zy*uW^*=W6mG&Mr{S=oBQx<-*> zQA7(KJy8*+T_XFBp#Pb@;X#1_Ssn&xTgAYrv<3bpX%qaDdnPbpT?t zMPQ|l~u&@ zn{Cha3e-7Q}e-9`kO- z@uXks+Wv$KQI-QDN!RYPvD4^?VyJRf9D(Qn-QURmRl|M_;%IGThd?jyOP4(-!>d}k z>dabgSd4#z%l+MhO-vVpe!75Vbg8@#dUaP}uByMU$~Vi5oRuP;Hg2K0d)&0xs2WH> zq{b+>)ngmi6F85L@5`jgU9RfRk-?Qxb;49JB_pywfb5ErfuMbk`$qKq-DUOXamfB< zOX`US$6ka3^Cr&35S#6qyJlgpj$te--AoRX=fp&Ka0-E`{aClXOZSm&J1x)9~**~dXm zj_Y47zEA9i1S$cKaPs!v*!_VAWXDzWYG&iu=T+(P=akVp&g}%o`MlSehF*Za!ozW4 zFSkd~+2GRpSPvEtw#;!+B?ia-Zw(AS>?E9+@O!K5ajC?YFKxPoMY;RCI@_ETCn=ZVoVSSKT2Ft!1oYbpe{R-4V$bS^W-mkl^B|`<{gNsQY*c~pG z){HdQj7((=ihi=Z%A6M-rQ>q%+xVRe51PAJ5nFHg`_};80Ujknjh!vc=>lQSF6?Zv zp6RDpGF5i7dH+!hkG#I?6hX?ZwaAZ<#eRREhJcgQ)Z%_8btxp3{*Bk9iZ!jkW8C#z zteUgRir0((RjJm*NsrHmc8G>49mKpmuOAHFwS!A^bs|SJxbz#fv;v&&4HJBrIC7q( zI(ty}zu*3}ZEoau*^+l zSXCha4~u>9p{wg#<6qxj7(T8>d<{sFMM-%n0rKMT>ewGZ{wtZxe(|p%UrOwKr3F^PloYyLUUsX}VJnt}~+E?h4$@{%B`FYhj>FCGG13l;x*b8*p ziSiAS5o!>08HWt0e;^dzB05>*UGkE{nrklLaVF&w0{xsx>jbXSj+ly8Db(cb>tYm% z6x(Ui{iz#&&hEze{jVtj>lNwo5!^0vXZ70?#rL^YtzOC~oyb1+e|yRQIUOg8%ZaI5 z8FTlPzPVTumHFtWN?BD!l~dge3CUIBk<+XTcYY4_|V!X2AM)CdsMk4J3Q|rMeCN2A#B0+ ze>?y1GEBIkb`5-}ZOOmqp)TBeB96rsTU%XwLOWMX{GDe_kUlPwxS7BZg9(rb>6qP7 zx#s@;+r#QFz=LhR8+zwD=^&2tCr>%}s-1GwOZb;5!?y%W@p+9@Hql~)qq|+E?ipww zwl-lfGs2PO6(0+E(rt@hW#diqI}!!!Xq9O+km;`PQ-}VLRRsR^j&$)KL4yYO%1#H)d zqt3=Q-F4lX6Nb3g*yUKKV(2|#>~i~L7{5QJs+O4o@HP)C;KQ-WZF@Al|as`=5DOW3Q@WLDy8t6g|sXqn}96=w09Gu%R+I1;D{CL z>%uHm!xsLoztzH3?W7vX88>dCqT^ERE>eCisnacEf7hu3_N^l}LwhWaWOUKJKZbuk zDM3i>$*odB2*0fQK#PIj?yEM}RvM2aTof8u@g|B1Om|!+S|+l9jh_1Ms?@96g&*Dx zoKXzq6IughOAiNt2z_=wNXn>a7Snw&V4J_w(^KmLxKFN_*8e}5_a!U<)M{O zbjWm=K$tR#SN;x!_y|LkT$Dw|Gc3c~34?1hwcSdk)Iqv;OdrBe6 z0zFJ%jLk_RxoP^BgzZIHQ(rXl%unDnJUgaZr^O5Df{%{gz7ay2$HvEOp)-eb5+R{A^w7|$veO0PdG^w zvGQ_VB_iD6_uxTU6G5Ed^^@Ue%z?LtTDVhRz*8_$kC?!*TttDu&v}>hx%xpc8rIHt zw`3W1?E+dz)h7#zJ!*>IkGrD6df~#_{&>X-{XCwG0mLG6nCD}i=HH*KuHDq zRl3=^2F2)!4Ti9BJu@VGLm_>hMgBGX#OFjmXV@vakmXg|7!$|i$j?33kk~u+W4p=k zWLpm;Q-1Wur^31XtgV@~$RaVy%blDfn&b2*drljvOCJ zwO26PN`)|Q0Rz`sYzCCU1532x(_}}mGjHwGJh!K4!P7^STjv98&3qJmNz=%Po;T*d z)gLdXuI9P3qW_Sio@st0>4kovj{Ss;WBvfdYbR^FBc)|(ti%qADUF*9-Y&>;xO%ej6tvl3B#LryCmi+mK*UB(`~dyUBLvKtSjn%?*^nB zKljmy=*YiPV8 zh#`{#?Jfyln*8JIj;lLYUKJ|-Huuhe;zbaNMKkWLUfT}us&zFdEyb&|1mLyU*}kF!kU`wk+|z1I_;$fyG6`w9-{22HL2 z(Z+1kL!_%iM9yktWlwoMO=|78+}SjuM)qmw-W`7oc<;E$w?yMn$Uy_cnQ`3#Y+efT zay@5aEph6%UbZ=uS{j#c0!uN7#dE$VM(!0-Gw9RSY_oFMGgTkKO#J~4{4w*wc)7`_vxl|mjKngYuiEbVFg zw-qJ(IeD@vZx59SM$iX>XxPm zhw5q=ptiCyv#^?K6svGjYj9Wo%|qJhB<=+cDxP0a^?x~-Tm&g`=TlT+9YzG-l#rdp z&dRWqFNVELXfyb<)W=49d0DN_qzt%ZSzFr_MaaGYk%K@k!(|?Mc;%rg0WCD?WUigz zKih>N${vxYUc8>ct{~C%ReuW_->JJEA1jg3CJU9|MvQ548PkIXvxkJ=8YRGq!-geJ*mJeZT(3%Nad@!7_4vAb>?S#9IMNs& zwN$ISW7Hnvs((+FI`2kS_{#RRJ4Q1kV0g3mBcQUk|fca$^<|6t=>P3{KQ#J*K;FxYgT*m53A#xW5PW*&)Thy!0EuN(7HINWCyh1YY zdJ|fN5@sU4GL;h>KL6HZs*jlUe5?}%STQ)NsAx*u%_MV#Kg?^xkD^#ke?;%ZKi@eO zk&d;qheXhN(Q?&pT=erN(>r^K(7cglvWaN$pTN|sovGGyMmw1Al#0|3@J>2WJjQ(W zEtpS(FHOnVI#8ETykLBG7qSFTuT6gPrsrn1@KqhklIPEM{yPba@UMXQ(qVJQfVPqm zg*F$DN4ekr_9Eg-%#C1sLm~(>wq1;5i&v_b((vtGAnYqIZy@SPKD^qAez(TdPFRj^ z8Q9;cdZyZMZ?U_8tH0pa24=8Em&=~PbFqw^4n)m2>ELDg8NN{xhu8`#WJr*~_2W{> zw?F?-E~_9twp58Zi)SSrjir9VZY<1=6ty~aJ_a$W47)^M6g&v zML5O6jYDX`=RvffX?0Ev%;T$q=t$3Z$9$Re%*si*tTtE_Vw8HXwc79nQdycf!WbNP zmz$lLaVxh7FDhQLLxwt?6>xOR#y7>0w)P@AxysWd%=)=$O6E|Cy726s(y&LoZB%#| z3MwTuA0PMeKC|5e?+w3pdBUv8))A2#k@@>+=#sPI)6y>yvu0Nr>*ou_69;E4`m$5z1D5Y(cnj+f^ z$qnAa;3#Aik#>R?e0MoqyT~R3N9;{oB!Sj=S;dnrMDuMZ=(&)zx!vuVMm>zPZ@2K` zNR|xdZ3~6)@I*IB z*0WGwb70yJd1=IC?nAzeKN{i2b-R8m%uNBt$tw>WFvy-ijYbZJ4b^@0=Xc z=>nd-yC|`FRfi$nn{HhZUp0vX{y2PDMwwQHx+hjJ6d_~(j{QoHF>j>(1yw_4v5@TP zsu?PlaPw7mVl&9=#1Fo(zu4FqPsj}Xtyn6~J++q&z@yLV|F7zkF8JXMxV zTFO)`i2R90miul@KCWNe*8D?B9ac?~zQGW*BaVn_IYAn3AgIT1=AUzahOE@47ue>- zYNLr`jG|MI`v4jjElwix3nb+H3ys^XMQcwLG7xU)@S~$TP;a}9ZN*A}kxdeZ%VxTc z)g2^>FJr3C&E`wNFkRE65$zPAUJHvKMCdV#hh`Ju{2qJ3iQ5wdI}IAoQ#^Kee#^Jr0`vEOmj#hA}3F*AZ<2GcR=o)#oB_B>Zmqwg^+aR|0`YPwZ>ZM~|#*{CDRSE6&j7Ftybhj}hL#(C9yp z4V|C2=nevGkU;&$Csao>&aL;mQh%W#fMmY$=*n3w3roCm$$P_Qq9k`?v`=NC%s>v< z6nQ>B6T3VxN<_CBiDE=`|BxMre1CQ?O&TWQWQ=|leyS*1@fnm&U4o)vTU*TU8^QPN z3pK04WhxsOm0DePFq8;_8N!*P`YV@B@DiS%>Dxlg?>P#0i2PWyeje`XP_c9v|bqB?DG|xV2^$^AR>CCQ!F5u(1GcgpgIhCsmVo3&s`Gf z4xSL2dI8n<6)bG?X2;^yPapP(`1c6Fr|rVgcOR0QE}nc;>G4eA)xr9y#6%QYw# zaFz(4f1v#f&7X13TPR$7f$5CQ7R?B{6_U!poIJD=ekrNQh6;t8hMxm`B(?_ewaqJ~ zJo|4i#$|QA2s#~^ohk#BBfqHlQVl(Q40;TzGf} zxMyDnp+B2M!~O}8YA`5>Rkm|C^kHMsnY?;bADP3;%OlK6b`|dM0+wriRVKEDopmFpZQfS)`w81WGjLshK{p|bMY=0HR22(RTWoX) z?ho_SGr~w^ozP6fm;T~G&M)>?ndI@eX-2PSOi}z)RE2a9BbUDK;kli?_s*S|Q;}CZ z7?p9k_;}95*eYM#QEj5^1oF>j;!+y)1)$2n+Ccl za5==ah>j2@48#h`DLFS6&*@@Ur~sGshT*rm3VX_V-LMX^P&=)D|Z|rJubk zsH|rC6;jv-d1O+!;z>G_I65JDWAvVBg81dHhPIOjaEuaGw~Q+86?1^{V}K{aSzIYF zrbLBCjz$m&ci@D=-LaZ*k(`z09xDV?V8yVP^{+h%#n9^Lla;(y+DKNy!qNQmJ6?n! z&B7B9f`oodB2ReHq~4)A=`p3Su{bpY_LTaiK&HA7{FAafR-$Qn(PI;714?Rug~3EW zYDs(=j|$yWvHjkY(WdW{Tz3w>&YLj^UT21P z>BfSS&tjdAvlInY>~YK=`R}&&8#w*lS-)B}xtm?h^YwS%QqbYW+rdT84w?Zmo-f~A z+(E_|)$LBdJqj2nxF+>21A6m7!KEOdztEng0Et5oVBS^zeDN8*l`@PkvsXjIQbMYE zd28tw$TBi2G0{Am2O`=vW6p+>$*w`tV+&Hk|v%X%ZuXcb8R0K1&wNZU4nr2 z`>BpbAj{bwWKWuCUW*2qFD1xeLJx?Hp`zUsA-2nbZ?!u9w|r(g?Pa zawfBZS9Y*)WL=2}Yw>JOliBjfru+7Mx@|yEi$}x0d!-g4K_GnS_K@p`zEM8fC8_r<7s91?*SP2WMqr+T6hSLqmX&w+*Vy{d^8GC(m zUcq_|D3O5$ijhY8t!uxotWI%P*53PH;V0yW*%p!JD^=@v!I-_b3%iie6BGID!p;M$ zsyzN~Gu4rUhWf5cA#ah!VE1Ju`Aok*D5^)f=jBM~>W?6wuJ~1+-IdmPrxU@GPcVS1 zX!ZR9Zvbnq6&2xUJ~F;kB^Vq+#&o5s)|k7i0IpXC+x~v>)w=M2k8e;jHC6pp5J!OJ z<@KV~+~^clV*^uzgc*d(bW{huvRc;?Md|oUXz(IH?*Fq$u}rCMrKcE<>&WO>b3G;x zEh@T~QU2%8*x5V7cP6q57O)SB9w8Y1?7uo(AM2AM#P5zEuXef`fLr`Urh3qy zk6d-STHk@)B12RntA$SW`33^1N*K<{qWCQ@USC#sx7rPceh0UllF|mAq-)XXpNr3)!%6H4qZ=4G#L(!^ix! z`~}4W@tESv@=E=*F_x?FxDSpMxWeL)oARO{m&%)p5)Y34)(-zz*9Ip9I{HdM2Vo{u z%GVIb)tT{1%Qtv)#i|@goMFU8e$XU`kX@gQxvG|kYqbNn2oR8x+QS;uew8I3QCeOQ zR^M!pPS;uPWEAIA*1N_JDk*OdEOCI%`h%|IM%~C)E5C?dcbsLvoa4(jDCaf_Mg*OX zmUo*;@yw)e(ers$Dq*8-)_yhgEgNt%0WuUpOZ%7IX8x2#j&DX@f3OwPo4kqnxf9V; zJX3g?yrc$Chrmpuuc4UFal$7gp)`H^KyHqSDM-i{C|WgV%05MW5?XIn752kJ zc-8xkgXc5XlRd9o7~zf167U=NVKwZ)KBV`jRDdMpxpJu()=!sLy8qrt_~$}GsfuAQ zXGt+Q+-xq2F*``Oxp~b(3NvS@cTI#cUSPs>_uqQpe;dYeT)tLoVeMri$DEErnt>Sk zY{13yigGB`< z&>P(7*D%pRiYf%KwMF)?t*yQxlwRYLA02>4)`jg1*w~VAX`H(FWB$**s+1{O3hI=t zlkM%G2VtWNAe}_==#-WeP>@Et zrMp8q1it_Mp5uQU&+~S#_Tt*T`?~JWb)G4Vabw4ksd4W_f0f$#}rKT=|S0cdFe4iTyi3TC#l<-w&xnf0aNoIcskw&yzOPf{+RIvzI1)g5(x{+!u zujrhbjH*pHBv=dI6~1%gL6EPm)YZ+kjAI73A$-e<)eWL!4b*wT4eI>K*3qr9kL^UU zXeG}ldAuQ9Ko@58yG?DbUT|`~rgHKh_W8H^i_wn@NNt?3;ZcU~ppB28ytEg?b#*mp z^9I;c5}&h$Y4q-?>@dz0N7a$rdFsB})pFD6U-|e^3P>M^>8vO*wktmgGJVTdg3Q5m zHrC1}AJN2C4MjKb+qh6KNuLTr!j@3<^ouAPD(4%jGDa(xgQGHU*tL6BMme2nX3v>o za7nL(O!^L*=`o=*WBNS%jgaVVT2n}DJg+iaTda-8!(kE~o%0gX0=xHyft%8{=X#SC zHzW@9p&PP@jjM;a-U&HRbMW-Sv+~WyDD#(zl)U5*3r9r2sUD z3-vZkCG$RE*@g*IUg^SSSEBxge(Y#d?!Im$QO4R86$ha_#q~9nRY?yRX8r(J|Mv&V+fDB^?kV{*77=Gd zF^oPf?6b7}{zfmO2<|DJ;s&REoVeZ}g>Pw!ONTfb)09+M&uM+0jI&H7r|S6XKY>Y> zvN|Ftax*N!-fhLa2^kZin7TTo7WCLB$aiAbpHf9gQVXgnl1dr!tn6}zBO8ff#B|Hm z)!#3TvC{3wNvrh4Gz-keUOZ@DDMamT8`g90$rc$XjPDuQm(FGgA<)bjyOt{}Mwt<2 zrO;qc$*cRB5}|+cSTb-u4&_d}YBrG3)xNsg3oi;e4L^*Z0m*31aK^6y^os%|QVgSB z5aHDEjBMQZs_R%gE;7*DV7^lR6&AqZvYfV00(5<<(+N8wefe0v(rGMAlIN5i$mQCd z!mBwbH~H~|^;4G&9+S?Dny>H}^sFP%%Re zwLw=vGj%eJus3SA+C`|B#t4KYBh`TOrFrrAihSXS_3n37gU@>oj!FQW4lRHroV0jV z0IiI}hcYfSE#)8SWU-K$F&|8%bIZ{7O+0-D4rYn~T{1v-v1c;h zG3{@kVmMcFKjSQ3qu@4VW*Spu1WPS!m~)#Gd{g>{OhOdPwZ}lsGz_US*qQ@w1*32v z#?`7Q|HCQShD?6Uvy=mb9#KRMURi~T#X!)}ZY{dyt1oB(4bw7oz_S#ctGANXcS28$ zq{3-ISvWKnTJaIsq!-cH4cLi99x@flt>Wa4jM?$1R2gh(DKGUSV%{i{w_kEQ4Fr0E zD;yGZN3*7BmoCu`-K+d~F6F>dmp!~YNCq0yNUGm80*S(6k=V`EfYq6>o{s5E3z~w8 z#Dpb4Sz>r)Us^cN^JpR~zwt$KMun+99>v0Es}wq7myXK^4}VBaK$uO=_obIWJY;VW z@15APss*^ta=bU&L`0jy+$7`W)ta`pa5#@5YcdrSW7!_sHosfzLs zLe~041ztLZ>ATeIhiZS^dy=}Ovt|W_mfkMRd-fb(77tjXTZHCis4ObYglsm4;QT!` zKcGu&!xtXb1?dqvHiOzvRe|#1XkegHLeLdv3d=uLIp+Suv8p#idc~vSNU}axJBO7b z7cRUVPB8MS%G~grR^9kc$4iGBVqFP~?+lmDes^r3F`YV?{u@5MIa|*9vQUZf5d+fc zY17R+t|t-82K*gl?MjDx$=C`s&~ZIC!`Z+g6$P7UBe)#pjf}v7Zuk zzQn7-z*tv*Eh7@@Ow;XX_0aB-|`e z3-Y<$P?;VUqtM;741Ri~ZYnw|DUV*m`-92O$pqJQ2vRKWfbj65InPy;F227h59c^q zURE9jFt8WN6DPtjlO<$-l{>%A`SY{1pL4kA*qEWESDZdVoJVZa*^z{oeJsY-Z6b^Ok#2Wp$_SE50 z?9Ji-qiusSKrlwZpEaV;;flIqd`P=cV77Y@_f56>U@3#TW1!+5Pns3Ze(#$%!t~Hd ztz@(bX3&0W-ekvxLlr+j(fo%$614k2%{hK5pV?=V?@9U|g7$sB35Q0@!%$s`X;Dj# z?`@$w;(S`Rh$|IN#_sG%kDb3JsxoA@i6bqHY8A?5ZLweULIt;B8{P@_#v^vA0cnuM zH&tGGe0}p>cR5dcS37k%2F0p%z3-= zRdAkjj~#)731K{ZX->&ccznKbnR!LkaD=9wvWs|7u4xc1WO}OK8y67lRK}!kRu||o5 zU)L0Yu6?uGLkgMp$ajtmk!}f7KM{*|;EBFh@8g7D$80ZmG4P}aCQt92h^BD!;Yl0> zOet*xijLZKIn)%XJ>t>X}@oFmr+(j&_jy*hOWl<7cVworvwj%%Yamv~!C z@<_`I1AV?gVC}qIQm=qP>WTew5111h@g!Zx$49&F~R0^;+N@PdB6GQ$O%7=T#n8CrN%b*A7IA9-t(u)S4qqB!T#o73n%{z z0rYeruh6${M>aV>X7b5zJ^I()p5J}lUkaT0`nJC^x|c1ZDKl6X#$r?j(pEas%l;G{ zdU}IyO3Bg&BaL3`qot29IgPpJ3bqFtS?=e9UmG@-bE-G4V$Km&nc0k?K;NrDXdnF) zb(-3rKPBy`IKB58AB_Q_{jo1YkkGC%$4nBBS?eS!~Ph;4Kh^Tk@A`skth(OjJ2I+2ie zaDfzSmD*?8KUZMRclQ3>?8MI+zCfD3&z$0IV4-xryu@eFyEj_y=mnAg6RSi1--t3g zS2v>FSkC5(BV5)QdsTU$07Em5IF2r7K4gDh=4k)p>X3ARc9n+xfJ$c#c6a=+{7{|J zT=6opINyuG(s@CR2hTt#w{v=kTZ(h|yT+*W%KwNtfyewNV+PePV=RQo!CDi|?B?p! zA6ZMOR*iS>i=Hl#xk*J8R>zmCQ4393Pg>ql%%g&LqcReO&qGQHl4Ff0-T6^b`<0dn zPnc*Ri6mRb5Z9Fq=cZU1+cO^r=U41XM8~oZri|hOMim-@=sfzLJyce2%YT41{_2s! zAL%k0lBhWQ8kf1*p9?~|lwkFazumDu8|_x2JS(FD^%^?J|2LgJrbxZcdGgIZNV3sqU`C;vohbQ`65-O_@a4t!i;kL}= zoHY5qW9@bv__5G-`$N5a6_09K!*{vE*K7Fm@NFFD-8|g zr20|Ocg^p6-RV8#LR`iD!}4GRT|d5o4>!!vsvfS596nv-$%L! zI&B0b_Z>KLLIH@yOqXF~sG%`>aF0gy6dfO=oFuASsaUUTg}oueXUwep>$B{tpIxxA zO||s$%-yQvWX zZ?eAZ#LNmmId|laxEh36#z*q<418^<#bdJA>Du`5O+%D#4q{Y!V`}>CLIEl9Xa0Rc z{QHr2hjW+6Xm`1kH{S@Koo(`9fHs=H{{JbO%eNOnMM+1Sq4?4spy<9Qm%HAT7o#sU zt49~|&0G@%9p7VPji~UTCV5QI!DP|bH51hd-}fv{u*gP@wn$J{4cTu`r2hBOlY>`O zSRahgS4PEA1C3S6wnjF_Hl%(iYOBi4XriMf10OsC+nnjd85{6ujP6U7zB~PMWu2=p zIs`fC+Yr0oMIR#3W!~(k&i7S*hi6>B(JKnEuh0hvF~JbN1SnuOC4u+Nw}VRbA$cy4 z(VO6vaFRCqhR!&!$f&L8=|4a+GW3$A@7JfHQ>><-S5H6W(vUigHI1SFThr=jG@Z(X znfwQ!visL7gU9tJQm=-j<%%)wXM003JkYRl>L8cb_0XN(`U`b9vp~pSn5xo3ZMW(F zMvW4!;JcS+-#c=%{>1f-{<8PPi%psaJvA2pFYRXWe+I1q>MraHnyTL^$GtG+rPKyS zNiB?Azb7FLT)q|^-I(s(%=pZtahbU(4I9B9gMw{ zCRW^sE6t@r#v|y=v3pR{IVH}3@p6}KioT*(Hf8cR7qK=eS1~9ou-@BvWVq(dtJ1f> ztE%6f^2{hvUt11?RUEIDLBKwA(niREcUKSyp;Jx;`Z*OTHUhpEkHD^vBVB4l} zk0Rn_WEG6AsKPL|xX?xX`%KllWP?}N=epmuI4WgShlIUk;IU7*6>&$^Q|Li*bdam? zO+l_x#h(Lg^_H^Nv;%`wW!lrBscB!-8~-#`{Bhswz@3RA*kpL*)yE${7uuI6vD!_r zFu*`&>~dsKkdZP@i(vXS}T;vkNX?JzZteD{D_cI`$kT7z6l;OGR{ED zQie7?QiU$XO+O3lwD8}ZOI)}Dzi{!#s`#U8SN*O^TX_{7yf?cB%l02o#+P!uoHun# zCZB)waM~C5Ll2~;>%)bhi?@@6q>E$J1%SRyB}~|z0`^r=252lwTAe10bns$1=@SyY zpk=$u47 zh|0IW$$dXAae%$-3iZ7V;^WM8V3pQxt6`8h>~E#IxC~?gip16#mU0~?@AM3#6z)| z$7yOSg~qJzjR0{2$88|eVlxO4?Rw}%G$4)jgF9ge>I#tbB2j3}0vepyM}k+ZflhgW zd`iY;)E2oXvn^@1Y)+&iKIl!Da*X~5_)_9JAms?{++S#kBMc2}C%`CBLcXZcolTKX zJYIz9TKQfUg=+lr&p?~(^1;T!P7tDyBErEnJ+NuIcHSo$7ePnIFTm?!d!rBzse0Lh zFOEe1I!mOZ$*jt(HYD9$6%=uOpNSJ2u;L=VuKQj=q7jLAA0PhgNjzM!=UoH^+qC!h)4X&t)_P-~gpeMNa2V#eX^?$OPH zS3ZWIZ!KaeDJ^UPk@S63j&Snq_5_quN8U2D?TWg5ib`FJy<{tv@AV4W1%c2C;)>PT+~*m$UYg0ESSTVr$PnnMvr@euzZf? zm1{=dpRNSkiCkjM)>HT8R$;N)ktkHXfX|1%?j%0d&@wpZ8rc5frk4RcUrL0p6w`^? zHGHE1+K0YTY;b%FAwTWKHK7Lmbi2-Th{XUP=&++dVz5Yz(NfV=n!1s6@R&{VP^|jN zX$TM}=wUD*`z`pyj1oC~rR9^cTnJn*^&OuXdOlJBY#{iU;S zQcbpDp-!I-U0`E1>jn(U%im6ea6=Js7o_k6C7qqRX}B9v*dVY-)qzyjfgE z5;FWmqC{;w#kMcNK!6L2@(R z^}GZ7G(TkHYfMH%z#lh3fe%rbl;adUd)=AyvC38Sh3khk42M$-i~E$X)L5DoXbIri zXxIhMb-C@GZf=erXa0b?$dI>4I(X{@jLgnj<^{G|#V)1kRcIs`GAN|cZ6yo8$18TR zvHvYJI41M{rsR@rE>&>oVOTOcBfhiJ(nCUqXOY5$mUJj!njbdsu_&zn1G!RUfBQ!Y z3ATh^ABT&{t5`U`Y+ zm;YM4s)cs)7Gxm69>a=5a?3q#TnPxNcSuvQc zu(CHx6%@Qc39Fpgphs>oWf&v_Nh`e@i!cPujGytuf)JQo96AH9pg$Zt0q?FLR&Cbg zIh!w=G{7omc9AA;V+dl7O<;mIt;#E zkiVjuR`})!`5mEna?sIvnCnW%4-${!->xU-4W$aDMIr7DQmEs{eu*jet2Z?({2NqK zQ$I1glKX_!5#O&Hy0ETNHL=L6C2K!nMDjBS!)vy1{mXAFt3OFdKJ(FSXs=dyQe)B5 zDy;3i-kv`7ukRy|zK#j|bR(~2;%rlG<>xJ14aC2RH^7x$ZohI@IuFJ}9vGEVwjp8G z{s#XGeO=y{4Zl(GlF2;9^u$u2(LyBuiW@&|RWf;XLe+5RH1-w4f;Z$8lU*@taVxHgWKTO&x>K7fE!^@j7tYj~0)J6s<_E6A+iF zY+krt?Pu{V7!cH?3mb{$+w>u zB_=Y{sz)xwUB@pL$f)B@&(*;ER5K+Coph$0qD6MsLf+p>Fnw9l`+6R=1s-h4srveVPe$eyl+aVeX6 zv|+Lvtxo-`ZFydN_%5#5JLyUEts&k!ReM{Xinc|6{@oY$eX5(rn3nZol^^gcbsKY} zTN2QC!eR@RR*nSKsdiD4cw;`iOi%e$HWF9>fxd&TqP41J!{3X?Zzd_DiGOQTa(~w# z+N?&h#fmrP<}$>T$+vR3-!sL%-f#iZ&bc{$EQ9t#4|~O8VwYkBQ>aFh1hKYl6W}YK zxrzp=A7GF_h|l@l-}HT)s||;dCIiy{0q*xSHnxG+IaRG+cmj-Bi?}k) zaActS${{*ET1vI>`7Ix&p_~RPy{(Kw`$gH@GZt#j-F=-o=8hX$$w%37%mickF+Y2t5Aa0mHb( zNTw>laoGy9&jdP<|N;X@e$=Y%^mVn`QH`nq7l6y%|i*q$S&jOnEl5t7!u2eDyxM9CO|J?pmtNCmf9bajtxM9Ch;{DZG9)nNAX-W z*bIEhUTS+JYz>{=MGh_E143nFzVbBOHAr&LyfM7Q>LPD{$v9cqiY`(MW#FTl#of@~ ztrXRn_1$Be;-&q81>B&txY3VN&PS5(m^AD()@#X8-YU^}Kn5-kWDf*G*sG&Viw`!j z%l5YvZkFN+V%$hFVZ~1mtdUc zc&4NJJA1eBu$)MK`?f=<+MYxTn^ZQL}9kb4)AfULRifp}KTmWzcmiNdN73 z?jC3jpPfJpHX0*ApcAa< zq5)^uxKjRGJwpdA(k+(~r5HNBWCBK2h!vk`BANUZ$k2c~@_IAYOQ=_`lM^WIb10AB zkH*s>{CWY>O}KdLisJwQ-I2-EBJ99#Qy9 z4lC=P@h|TI@t2DnJIbsp`R{+(A&k8**n-=f@1# zWo$PNVX?y-QCGtheYz=8(c~spK9RHwR%P3GOQK#*Jp-9NzoJ!ha9acU;C{SQUJs0V zkgBP!`(l~2{Yp^?>@+tWVAwGjGmE}=Z)M~ZB56+-DuhJJ%~kCxxKkN2U{8mhh>gZL zv5D9^HHYL3i41_C7h;0PS23Pl%p1izH>XxB8LJG%CUqPG%FcwTYN9@?j`>*}x(a_u z-_G9TY?SEh2OU_AHz@@>vXv;_R5)CUOXFaFKl$eE(@Y~~Y2?%%u{!TlCB_r$5pYO> zB$46K*$O6t=OWTMASZaZWq8724|{arE9kw^GY?6|yRURMt3nKI8~ORM{l8J093Lw+ zrhTQDs?3!Gbw}hqAVfC4K1D)d@xhEdorsX>e|i!F&KUK&hw?G%G)MMK zPv3(Ds!*n2?|psGrA&T3AKC8tNsn%1?OI!q5h&K^0^65&R0>nXB#Cgi1QdHx<>oy9 zmDA^bQduaZ<@dW?U}36*mZ~y(?G?Bj}oRGREf$TwJ2x|Yp#33eD? zko^fUQEIiuNW7c{K>)ehVyzsHLzRZE*b1ozZFIdFfbHU5&%l(sar7djlOX|FrHNgw zd=Y-n*uc72%icFNxEpOxH8LvcSFUBkHKgM&?G&9~cg)QHX+K0h1$-B|fwmkf?&6i| z-x{{2_xe}s>f9D3xun^q6=6@YP&N>GcGn=(v$9Nl9~{5ih5A>UV`_ihs`l zztxNOVyqyMSo4Jl<4@Z-I@2LdsZjGJAC={y%dkl2l6mYJM2gC5#Wj`%QVSPy4%oVv zCL_ET(wFqN^!V)>UhdIPvdj6tZOoMmz(ss4{Ls4AFRItte3^+_H5n?$PhqMmdez$E z_MroM!p{6#ibuZVESu)ux7tN#fnJewf9{t%!Qw9zuxV;7HC2dj_#DaT*Rt(@1bsO8 zdwKemhNmMfY4(7w@$17^;q)z>F|=;&d#es`1m&|qtjLw`;+M*nmZYmF`K~Nmn|oll zo%3wxpzqS0J!oNHsY71yZ(MuV;KpqS&suTyn{QbSRNS5~?HravED-QZtqa@yNAQ@Jf1j z^}2_q(!7J;4`2HhJUOb@M?5j z-CV(kvO?KDz1lG?VGIF(o#(^Z)I@UvfGYbW6o?R(R~yIXk9I(wp6>xQ10Odb>xhf0FLS4s04p1G6CMK{WFP- z;03gf8IHbZoSye4qC{(j2gPM(}FHu-AW&ER%;Rb6pk~>I* zMW+vFY?T-YQ~e8KjVN2J6aE3^tk_L}YqMsAqhXFhy;_kUVVMdqNyOp(ZhFu?HXUST z=L^tGitV`;C7dl7PsY_M&JFgBq*AuXs9ub!g)Ir4$uiUy8?uPiOp_D7K0@rEiWdD%bIs}6gotWM^{_A^7YxGvB zCZP!zVOmjpYD>W+0Vr;+v|-j{dEWkFVNfO4VbXb+e1A_N9DK2m;w!*)rHj#7MO4N7 ztF1avf`J#Mai7IcYWiFs+gQE@_iFNIfFKZ=S8~!;)5aOJE`( zEVdS_Eb@#%29K&zz&mKcn`NP!_7Po)#rDZ(tM^u7*MeT>Lu5~o1)dwpJ@%&|A5@p2hCF1?-PVh7^XR! zc+n$Y>C84n88EfQ_H9v)DTFD_AY(B|wa_2_6hEw$60XwxLF<>uu@A=#_0$S|o2UDh z?Dn`;5gO+M8KJ5`urY_DZAyW%=DU(cN+A!1V*7Z1K)~$8cweFY`rpeNHh65MZF{E~ zl7`nYkK#upJnH&fq4QW#7{RFbL6rTU`gV(IOR}m-pL{oY!hiuHOJUxUDZ-oCUDvc- z?Q&jtN~048;607Ju4K=z68GNBjn4(q_h@}!Sbr|K*L2)45P|!eVN?oXisPC-!H8n~ z^tkh(y6!|eHzUl-?bM@3;1db0%{b&lRetoV);McR%&|qXsxg!tURVu!YHqit!hwIBHxm0?p8(NPE5{bKs?Q_z|O*{Ws-a)#R-Q#pXKdsk< zcS>`u+$RF75(BHf`>*Sqy=9`)`6<(1Wz)Aurj>{m zH8CZR_6<3Z?C)ea3|e{g&)w*i^l}_o84qdFS*OLqW5qXk>D%bo z^QmUtfVTq&=p+w)7JFIK(O-;KH5-56qbp-coiC&_{u(6lTd-^7^-SEIhJdKlAA?aG z5twHlKwVD?-KQvJEilfkzaju!f2k2Hl!r?rO`@*YGgaxzc?ftX%Ch%MAdg6gj0MpE28S}y66}e z#?25}WfTe5`sdUwx%HBH%4T{d#MesVgw|)@n$R$8U|AfCR)2umz;&w$*L{9J+lJ1B zFSfP|`*I^Q%a`up>ktZ=msbU}F5>ePIyTv&n6usc!|Az3guMTe_GQ``nSsG0fgIHq zrmNjy569z_p0ptT8b|d0h=e;m%02}TY4E;Z1CZk&4TC)!>_^{(P<>vAC{P$%w!=C1 z^H!n#W-xl$oYEH**T&5B)X1JUkB+pkoBkaU_E-IOPU6*_l7+#crY`4qsKij&&r8Et z8f$b!2v-MSt_E}%_;JB7YDG?w=sLsl4Tb5D(%#&UXA)bn1JP^g_K37@hMy8$$EOMz zt+wZ3b17K_T5JQ-h7KLLO{NmN)!wJZWK>cl=&qekSC9P9_Zn zYV}>lA}@4a@^D-x0)OC6{m%bTfhgtJ>u(_=T94(dq;eG1(rlZRr-9u3*-#>}9GbDo z;L4QbS0{HJA}K#@YxE>|1F=Z^gw>A^^%74eu3vSM(l9uwr6{)9c{E(ptDjN^ zPTevRzt4>0_fN^jj3^ zo#T0Mfj`zjSfgZf{2`ra3`~-Zdmnd9-i9vTRJ43X9^m~|p1V~{%4LZXuoiUgJ(cAW zMS*R#;9ud8I0bfLsBD9z2=(CBi6vq{gf*NhGox;Ywqtm-s#a{K53p-MXFbeBHpVCYT z$v3Bpg#?{P1tni6zjh}+pSx{k-o*@#JPQd9*a&$B0H3M+-d4i2IUBzz^`cTC-}>+~ zhc|6Vuur{nA30l-@r7{PO9Kt@o?h9O!LZwmZ!~3xZ52@9f$8GyT4A(JVZl0*Avzn| zY-oUG#Gk@N{3hwodrh`_0%ey+7)dwAWq|5G$zK9rLc7MiDP&FIs0W*2VG< z^Aa?L(RGvkZh3KEzEbUXA1*gPuCd@1^h8L@gw~D$iN8^p!H3BgyM}?1Bk&`nfMo#n z(Z0m|Buyr$eY6-0FAa?>OmbqFB5u%VGwexQdYX+2I>Zhi$?kYBzOS>$FTktg)(Du1Bb(nI}PlnuI@Wawqc8^Z@;Y8!w;?&8#? zgWHkzrMJcwU0&ZFTAA%d`BMViKKwiT+#{(QrX604p3FJTcx;{L^T2aWJmn&qT=z2U z(mFPC{yy(x2s$~K`b8ra`WG_#I)g$UCZiyi<7W^zv8ADNBU_(7`1);wJ2cj9b$+I7 zK1yS6=LOM4xsPtDgH3!vRTa@D+o-fsiDm%OZT1;K@z{w2UcFG4oc?SpkCI_UP5`e+ zj}Jcy6Y(MCp2>6A$?Tsr@UnDpyLHy&65OEfpsfcX%w<$uP>0I$4|XzZvd ztZk3>=+G0DklbG%PssUHFMJqq0Gc5Bc)*^ke`s$@Ue_f93D3N`**9>8#7h#md5G~2 z8`}>djXCUro_y7yKNXGrXm|4t_zC$sOPTt{DQUKWXVbgC1GA;*8iZjuB-EdTDnhMH z2Rjj(Kt}%{B`@OiSzBzB;0LZLl*)^B<7bE3A7SkeUhnslwDAv&U0N`7X~%Yzz?F{Z zblQ~ta4Rtkr{EBXCo&nQN8WM^Qbr>lgD`^{m|GpG7%?99o)xI3^89mZq-pu1X#VtpM1CVK%DKSmn>)iEw)3J=@E_o@ z0zchZS-fLG1&Xpe}E({b!XMKpZi)P1kadW)F22oHX|2PP*Mhjq=pR)%X{2H zU%J3ysBFESv}Q8$@v9OA1>_IIekey$k-mXa$l#hWhmwlj9RXnHN zH=8%&`oc~Vb!l=TRnDVhhLYnuaS4NRWVf$RyDdKTMFgR&&guX{|9;QcRJ|LxfFhU- zgV3EbZjBEqZ|@UtlTxI69f|EI2)KNS<7Y9{ zpCj&9zKv)~dq%{X_#dE6J9y-=PIa@9Hzu5kUuo~wT}=oas)8v1Ma zvV8RHo17}nu$BnuFEZN;_8;J>k#TTg<2usjN3-F@lH#*n`U5MV)%x|o4ok9%T$}*f zE)L}+{zbNYPU0eiAr)G;<(to&`Wp|tIn^NyWWKtjnj~joc(%V}3^>l0=UvU#!_tAW zO^NaW?8@@#|NTIvVouwWL1ijDc*)X$XlXFL2`|mn+9hNGNyq!`@>mHQc0AUIj~zWM zl6K;((HR}iu782p`FO%jlxCW;N}C@?_KCq&zlMh`P1v`*iYSx5cL2Jj2Udf1;^{&2 zT6w9>e>o&r;HvmW~P%^F|G`~Es;+<)W6@x8jgX!anHs_-OaoJ%>S0hq; zVnd|_;ywk)d#rJ%FU{MBN-8Xx{jhT+pFnFyDIm@zH2S*U;o8M$36LWTtZfjoD0Vo_XWM2M4w!h+eGNN zONIwR`kC;XOq)@v5R>g)tHLAC4RkB~WQ;f0g5bIDX8JBwwG=@;CSVa& zP@LcE%r^9FnXDf{$1Vc{isRa}r#!(;kem#vQA6u<$?X@g?S&qD|IN9YO+%Y#Oh;^c zpp1V7|JP@)YJq*YctKbEz$$=4o>nr6?#t8y=M0p(bTaJO{fsckP1z9jaCSPvOQFNE zzeGA4v*#K%)CrUrC}5+lP5X`c9!vHq6|4wiW%_W@&$x9{(X!A|z^XQeHP`VRN$JP5 zO=2bHz5j4P57JxZ)^rClN1Nh)>IA=K5XNhCX{8`zvBJ7h-(L+eWY5>P195?Um^QWD zxRsOC7SCO6WJyu6%RfK99Agn@Cv1ic^e^GyQ1p^S{R$C>=f|7nTHu2X6RE#nVuq{?U`UfR z5W7aC)I~De-x(^w$t0K^(325LQFt~{+HSROF$AA9?%Kw;ADx*&^T#3d-`w4wTm4YO zYSOk9QLgsssumy+t(R&xkhEXTipW>_4^X?Rb%)Ypl`#rDvY!p5=S0S+qfu!pD?PjX zgPT(e!J_HQ>g@6Wl3@EP%vLxn1xDLX3+xF#N4%jNz!(+2us)Z4*o|v4y<^MC;C}$q zw6`9&#Wn^lgZz1@_jE@nhZjjt1BbVCd=|cvF6K1P)zusb)4bpO>1USKOgn#^+%577q`d|oG)v7DkQEs<&Ku7!qbMAB>>r3r^T4r-)jBf?5!I}tENYvm;6H1%AFpRAYiKFlkW(1s01ZZ z$Gvf>r}JoAiwyp8JWnAdkd}qL)kMm-`aQ>2JA!k6F)l}W3#5*)>SYz{@RrG2DyxQ7 zCq1B;2lN2i_x{)trYfaP=VYO_p1k9*FjQ32idkO2(Aw>sB3nrD3fniF_O}Q|LPxq= zkk6Pw4R5{JC)v`WpAQWW@Ri61#`^Lf2bF(p{GQk1m{pd29y zlRqoF;upD=|7*{*EIM)-wzB}{A-I9!HpF3x$9Ror1dRk?*QG9073mDaqzAK;P|I(8 zRD1>BmwQ`mxXJ-OFgYvhma-kwzxS1nUv>##pLcElY=}&1yCq()%9G8Z6Uj}|A7ew? zVw7d;1hz+<)=R@b=-b=pSugbCbcCkHs|A_UraWk&oh#xI+7Yvk3?8q$|1x#YPPEhL zGV7lQt3fXhtxky+Mek>`vbR?|GxIJO!0Idx3o)a{9dGC|`~u1L?F^*fn%!D%yd_>1 z-ATj9WI;+p{KqyG!@?w~QpXB@(0p)CUeEs<5$(SG)}coYtVJ0zCAz;}AzCQ?pn`5k z;sf>yQ!TYT9kOIvcA3O4t7r6IrLMmlEm42DbP{{QSlC)s?cgo`gS({}I=xcYg_ z>hp*u-KXI%F<-v6WNvR(t5q(=8NJO{Fz=hh@YzS68vH>=iWGtRV1O7fPUSe?q;8g3 zn8g%`%`{q{Ro9^L%{)`?!-E_>TD-0DizDExau(KSe?;)#hle(uQ!t_ZA#m0S?%wNnb)BL8NQ+^YY4MtjkD>=)l+;R_@C73Dq z)mdK_Rcvp{Ia}2}y{Hmmw_Pw$1(kaqpC368NH#;i#wst0it>J%u}S`8Pe4okjC9=) zVq{)evQYB*c~U4Xk^70nsd;3^%GM{DgCuR_d|WlIG%`1Ug`dXcxlrZopa85O0RB>kwnxib@vgx;(?8`xdg z#Tbr?q{rT|B_pCE5XZ$c>G&t!gTl3DW`k5HrjB@z+9<6L)}h7JYf;;(vHaMNl+DPJ zphoxX=OBxiaMoO_ z-7HHiQ-)m|4`~OK>pNT4SK@r|c`U_x3Rd&!oc}3^m2h7yP~{YY;9bSFlWhNBW2sE3 z#-(2L&ae#1aPT#7BSh536l?o*iYbB$)0DboO;7?0*emtv3vusvFJz7^@(uNGn+v>^ zC$_GlKj>XO_)s%;?tlTEDVcCcElSc5_Hp#_nT&HQv6#q+PG;v#k%lSNkUYB%OzH;0 z?AopTDU!4FLN;}gpO-Y;(T+{0Wg|(1Ra~hk1_e)AnyLjWIstJ^8S}1-oHchj1mW>_ z6(UU^c?M`BXh9cGR9~o&$}6h1{h0A@hxx=I^$4InYZ?>ABqC zfS4{JRiN4mKw5mY3Q^kGkf9y=>&dizi*5o&g}|4#VU#wtyf#VLta> zOtqH{m^PGo9yl1btz!!Dm-xIS@`!PWG^5bIR(;*pW+Sdja$(+)3k|b%Hd7U*8WtIT zo-a9k@la=$omm(_u$hP$e@;JfyC0v5PrO7Tf7(?cFD)p?)%U*KHh`F!1n>Xj>MVoW zjM_yT3N3}=?(R_B0t9z=THM_!E-zLnQk>%M?(Qw_?(XhVv^U>5XU@HI|L2|A$s{|E zt|e>9L+LWUzE~mNrw`Q)n*(AL{Zc-2r{rw{b$6Wh?{;YC{fRJP9kfAC5r0FqwKy>? zE^jBSbH9`ZNWyQaIjgqN!dZ~MdSzQG64WuzBX_{>TYd<&gU1t+g&~JC1Q^QVsid`F z$y`gDL$Q`&gv6vjBo3~v`l*8^Q^>+Wdd={~;Oq~{E3uESbS(mT=m7BJm0{62jy>I? zNq!bfgd)*U_?&)q)JpO7S+zwsFEEbvcbaKZ;Lo7N8&S9)UnM!_%aToSXlxBFxP;~B zS3xLBV#+aTEF!o`LoX$ZnZ|l~R3vK*KR}%!{&)jUq(5<*C+GV8>TQu%Z|u~zD?{@~ z@3r)eV(}uY)&_TO3xPZreD%FmXu9&fC!6Te&xB<4N&^q`ERIp`%3X5ed@K3I#Aq=x7~@ z-x|hLAyLKZ4+^LuokUIZsP{Xy^=Ly4TKI-LHN-Wtt3?XPdK1|M*kmx%bsgjLVoat; z(?6&rF(G^pKpBBa(oxSVBTX;s&(O>c&oZ%Q?1^M98shy%!BKh7^1x} zVMSpYoHDJ=D|=JO`4QX&G_<#9UAV1WZZK~&zTj&V0%S-)yj%i>6s1MZ?ha?n-~=2u zZv_aqt7N|*45PW{RI0cXZ5_`LdMEQC5`0+aOMm-@xJ}xwD8vVo@ueBTUuN*OO5mu5 zUH0P$O3R62udWC^?8=PREgJ%1})f}>53nhnY5yJ<`Zfryl2MGN}jVbk~hVI58J zU)Y4x7$Tb>L#387tJQXn>|R%@^aM`PRMBF>R9|l1(NR`UcxmvLza0l>@8ogBGCOUr|ay?o$=Uo3{pMS=a!Newd zRRmWydk-Z2NL3PZd-5nZ7H_2B)MY5f!z1>uFm`Uy-Q|J^pYb8t~St)`!F;B z;}0%@sNg<9otTuH(5M$c(28?fZcXU>MxEZNxBMk}+{(x@#rFy;McW_qmCN zz<@w6f{27A0Yeu1`dF%+BEdvq9)3wFSwwj;ihF^B>uhFGQ}94`fuXeD%Z>v;k=P$n z-wQ=N=5AI0AtQ^8*7u$oMk>D!I*Gay9yB$|8jh!4EorHh$&WcDCnMp#Fa5x_;m+9a zBvX?c9Lx=~8J=9Tylrca=hyGAjp`=}Z?c|IZot(|{)PtetLGL^GDct()HoCWvRkeh z8+gh0P~;t@xc@B<^ZGtNmYN&TOy2c2PY;)FtUl9yQ;)T5AZUbv(3v|ZQ@Rt^43?t9 zAc+w@WFsQsLwh`Q1X|>=Q7G%HQ#SUrC9r7VyTU~%Qibm942lRuzTw?DQYeFsx#4)n zF&#_!GAWpVmCW?L74z?;sypdE$;)iL3dLY=9DryIVseK|)E?DhdIVNYrZa+57`V@U z-|P3v97_`+LDvj?8ASEP%|%hp@66~wQjzUGg@1T|)pP7wQiFixj=%PIM&6#nGX;cb zvS@z~+PTYLlt8aL!_#k|)I8wBU+661EC^AM=lK~A=O7L7_vWJ=nCrcMH0D?!;0wb1E8i)(A7vbP2MGuu?jQjupdVKA6D zGXDVdjzPDan$Z58aK8V@-C+6ZW5gcT=+AWatX_@2MQ0LoRhU%}^n8)3UKo=IXlP6L z_=n!A!2#rHL4vsNrF`zTOBKkei!ZoD$XM@5r_;{0fuG5_5<=`dv{4NxnkXs=TDv(3;>m_nxnw6Yq{d=^a$Smzj6RMEM01=mQwkLI$ zm>r|xl`s&B%VR3Dw)pqPUG$j-+|Lw{=Vm;ROCQvG>r~yBjMQ{RLZ`~GKvG$fevL{N zRWB0;i2qy?{-Dq9F@_@XMblI*k@CZLHeN(lcCXlz^(;1lym?j*iu9}_sy(VSC7nLQ$WB7Fd& zu|{P3$0|};H)89NqP)~0l7rjL>OT>NHs8c&zc_!^UJ>Y3V54^V9iG!ixXr2g-Ye@@ z-D(+rYH*+QPd{^$NYn$Jd<%Nr2|0;XeYIbwFh|-nkxRtAMV7iBAZ)6MgSP#@Ms-<| zUqH|;8jR}HmMrX2guMi2G|3-D3&d8ysl|v>T(5be2`t;L>(iVIR$^4v*M(`k1lqJ0M zoxf6@jQq%Q39AjW-zP`NRuPCE0FnmGa1%94@1tek-I`Sa`uiV0Onvjno{2R2Q+1Hl zJNIwb3BtGW^||%B9hf%$L^(r_J>hnZnPz^cc|Jmid>IvO!Z}Y}794|^s%X~}`feXN z-Z;}kO)N&FV0Op`g4#$D*n~|R{R}tYk(~Y>6k6lkEe^Lpr)7-}%&6sq0qe0k)w9Ij z`O)fCQ_`)8D@1vmP&uR$#}46d5Qx)P4)wDV{o{oR+xT(8%MvrImNEUBMW1esYT;Wh zC-Sno+{>3wPAqAxy(&~@9Ye(697`)3ip~lGxfnlH9frI{e#BgsoMAoqh z@=fNZ2;6g4Q0Tq0(S;2FH^r@F>;n}_X$lzp64 z=D(cPQ;22;g5J25g|;(homL*W{MI4kp@FeBihuQXDg^iW7uzAlWxt0vA88{=_cVy) zwNz;X)1wP3ZXM8p5dyi_?|yj2Oofy^Wgg8BY;O~(RC=(z*?XKi=P#a;MJKV;n^e+1 zJliG%_r&+oI}f^Zug;X7w%_A+`Xx}0ImD8BGMOQqgf9;yT6izV^UM@ak(oO)-ES-hZ&Z9C;Di4hZt}`0 z##hqUjYt4>N5kL|wBa)Nf%1*(6F!z&j{;`jCMh9NnwbPz|MPaKU&%}@GD+Nx{{5uyiAvIJSQ zTi`vEeQAz3cGiad`>FpgOg&@GgaOm-%Mp{Vj0b&`0mx%Bi|G*8Fe+Hmv+&B2GAI@I z4f`Mpi}>mN`WM$lkGnCY1q{OOv0DmK)b?+D9)72hSIHAxa=4CP=y8<(bP+e|)f2|F z14On0(@)2^vjxNvPA|+?yESJDh=!>0yJ}C%B6l)4T3fWeA0G22_wIM2>VL7p&zX_$ zY~l7Yy|=^mKLiVnCoODK2c}K`S=d7D#Q`ygyKFFd?#K1_r3zqbqc{W$p*64MvO<)= z`#<*4k5OUCr+i4S9>-tt9{P3g?h2TG1C(D7q-|dC{swNe^9kXBd}h1qDT0nM6nn!i z4YofSHb!Z!_|hiRSiNRG#R>JW{P4lM?c{iUgMy(jX#L};3<62f-b`NOn)RJ^NGoWQ z>B7t|iYqSpx6!vabN+#R9|~S`Q_4nGusc8ai1}&B>a#(2D)?2SOvBzLEMt7$16R*G z1lsWnf)>~|?D7W6R&jloxC5v8#9SN~)aEx>*4Nh}&q6-J%WOph0SoL%GoFz$PeG!n z{(^!@b6Lv<6jdVYWk%?%5Iz$D;`W0lRYTsZ z?xS!w7*?%-^;kkg6zGlsR&pFn+pBkz$f%QPvY+s zF>?YYEm+u2#^L;o)!W(S<@i{0JgDSi+~2(prPXHRk$$3gv^&=G;=ox?`rb4d|;F_G9bE{ zcfX#VKaNfa5I~Bu!VCM^i@`c@-3Pl*_%qMt+nI7pn~7C z>Bl+szBzkn?W_;y-BUl7k7jn8&nxA1LVHL_&cpDu zY^F^|56HTzY!<%(4%iJSwpD&?z&16gPv$YE;PNp}{A%{`hd8C*_nA@I;1jJ~gk-{p z-}ehQX`WMs)vda5p=p{V+zJL=R&)iuF;o zQ@+he&rOIL^1TIH!dbO609hAAM;@HgY?9cmt%it;p@wY82(9IZl+u3 zzg8b0b+Y2WfGlZ)Euw=8DK?o%0yecwk228~Yr^-zfqx(^`=R8&d=fte(tkl}YXg$3 zpZ1HHj6GqbH~Q(pC_AGfQ7+v?YI33~?0@R7y)Blr9aMaJ@Rm`OToe~*e?f!Bn5|Y* zLyepcbeWdt9jJs%2aZhmPo@aChz5sXD)Jn{uY%467_+lCn8d@u5d}C=kyNTH|M&6uLJL(iLgDo%f zWjyYbS<-1aRg7{dZJ#z3!P2F2YQSCs*3_wTBl$^rZbUyRtz zPc&E#aAPlsjV7(&M{=Mt0Y4PVr?@STOZ6-AxaY6+@TXdt)gVx&T46Q^j>b3N6EmbS zP-W`F6T_>0jgl|EsNW@_PYJhpLw}s+Zn5V%^}dn)tsU!$bje#SmbW}UHmR=38qzsCc4 z8){ZZ6@4mM+{~_@cm32-S*WgY<3=eY)JE*2A8ySsxTU=B4k4BQadba&KNh0a{6Xc| zgEY}aR*Pp>Kx^9|qOZmmXKW(%m}fHz;Fzx~DZ3aTq5FqO3~oiF#>tcyVlG<>ZznaT_z3^0EO6J%8osWAKK2nXXq^u zrpOo=Mhv=eFC~jQAKy?0!YZmvFvL9>yokJ2n`H%t`wcJqqy3R1-^(0o6$rYa7fp(7 zea71K4TSv%f+-pw`W8nah%|{GA(#O(VUUFNnx}&r%g(V0pduY8`tKBt4CXDf@jAnzNQ~$5(z6YY>LZIUWmKJ~^5X+-`|>Jfsc zd$eVT;J2wg^|t*2svX6HHoJm(X$G2vSJj_Ane)r3?77|$J-CH?kDgs3Z~D}F_T`us^mwZXVWx^uZ!~X|D zdfoy#?a51lAHQqO?@G;*-5!c>)J+7V!qAXjlJ|YWrRb{Lq7};d&vLO8w(AxwPtuHA=0O-aDw8E+SjdkJ+a6V97 zjY}vkP|1z}N6;tdwp<1?caew;Bj;Ux@6z_5kzho0q@CWV{n>b!zBGzG_y5-ed}0YFi@rCR3>!Akr2|i_l|?}sfPWy=r{b;-+BNd_R;Hs{ zA%8!jDa!b>_vic0&eJ43JWze5#sqc+Y zx)eQe2dcpQ7u#sHpE!|9= zGS?lxw;5VK8Cn`L=*V9%e?UDw%%%GWGH3KumSZlW;CSa|XE1vJ&M}WIyO>c`@#<5c z=E5yilat`=q^j@etzEo(L9yxGcwf;D3+FX*jO@Ji`(t>q+Qoo?mInUN5hHiKy%6%# z^`qN0z+1x!Nznv%P4#~1#-mDIjx=D{Z#b)H?9%Zh@s;@!r<0(p36g#10ddmfn&aU) ztr~J48LeQ}d2Syb9$z_ZI25%z*K|XUk3_m12UJv4m@Q1FJI6}6cK1l#6x_8T^WSMG zTJ3kpyfgk?D4$Sd zNa%p}G4*$PdYs+YhSG+L>-`c3MbDMTy*7MZHu1q8Uihe#g3yFV-1;W2B%aSudvVq0 zyN3JDMtJ++De(uUk3^XM@Yd7$vuo3PK$pVVo?jy~TTNDZdl=lW<1O7Qd|6AYBTK`V#r}S_ z-|r}cA_et{cU7rM`!HdL)?Z&+4l1fAl3hjmGF18fy6!l;fjWtka@j~tY^d*ki&*oZb;n0qT%IY{ z>uijV^W5y&HE;N7uIO;{3Qu-kuJtl@ZkoFv5nTHfRmiq~1Bwoz8f+QBEq>LF6|?7N zu+uO5YGq)yW{~z$AiR{_p1#Q!rxB`5VCp#Bcr?5CoS7HLIJO1FO9`5dHW7Z14)drm zZ_!JG-lQ*P|7}!>mycUt9+Ht`l>gq(lZkMjx76x)nrdgc>W4Fb&euVzpr0X2ooQu+ za(}-q5cG3^mSj#1P>#3HcyuUYuW#{kVUAj!96 zv%dGUK4xC4!g?;KPKe5|>kfnIF)o#XB`zblQjS+~*K+eZ?zCpP2=|jSo{c8Caw~8x zGI-5gvHyc+js!CfV7`o5eUFUOU0Kol)$uK|FlpFDui*1K;OffG)Igth@duM0pNyH~ zal4hI!(qS5V!tK9%;8FsrCn`u_?|D#yUc>6bAas~>hKy}Zy&v&9`;&;>Oas>V*H&9 zZL0*WORkOrjb2W6ETR3Tl#q(<6nBEK6}JV=xaq1Q%6XQE6jNS)g=-h%{?DiDHpa^F z;gehp@vyv6pwG;xnh1ptkPUZzoQ_k_(;tVz_|9`LPN0-iTcVH|s|WPntsw@io%CH_ zaN#k%b(O=#SE#Z?#W~#fjGpm~rh$}Pbf4`ZPZc++!|6f;{5#J+H7>$EJh5fg%SA`g z#z%8{kMpb~)D_8wzUlqfnK-9euW;AHR(3}_nZ5>Kj5I`Z`s(du%@f(XU)+j17q^a= zDm{nzAwI!(i3_Tx(Z)u<`O2AHS9Cr>nVy)JmZqNW zFx3FiwEyqFPaAeT_lnp%wcIAJgD$>~3csX|_R0!x_u3XaO9Ncl%HaV9b{OK5B77MY z=uNmr&zb73Kx+!cB08xhZu1>4ukU(V{FSrg-KvwrROE#6Kz)X|6B_qrju<`9Rn0tz z7Qywa^4?LXx&hiIR{hu(1ol^|0MrS;PT$5qu;%5e?KYX}+&WuS?DJqndF@m3+gkFP&|O}V92}5`ws-piCYUJv#Vrg+O=G@pc{Ld>*wb9m9Lr-gqvajxVw$JtL`;Z ziP)74m)lJ#EiGj7qkqkx;gTF!4lpi?15Z>~VV7{ju-ap}$fFh7dyLb6Nn6dN57?<9 zLrlt%S*&Y+4;$tD9w8=irw}~*~H1Mu};m1r?W`?xT|Rf_pS)e z8P)oREv9zz;d-|{-7$XirL*5;NgV($OBpl^{SJP| zb_miu_fwG=RB3+QO^@k%7%WWYWJ~UX-W8n^$bni^NQ*mo|3JXEZzV>PkrWVx~>MO+M;`X|+gM&xc;Rw_>q=~${F5UaVrwT#ivHrVGr%)Ds9F_u^ zz0RVOoKX)3*Pqs{2`=$IU5jOEh$6gVVEpG?5$6||I9_abj_~G?tyPS(Xk87IKdDD6 z(9(|ZqwQNaMs&}M7@nFl)lh7s-xjpw6C}5%#8RHq_Uq#^Pm=(51Ex1GV@v2{D$e&WR_^_u znkG|yey3uNy2P9=65ZwQM1FgBk$&MYF&_~|-nMZLZ8vM8wXy9*E9uXcbc3?sh6vtaRgv=`bk!EitJE@Hvr;uex{L@$x10zlw2@wu?9>K+QX<0Iy`@l%dF<`Pd;nRTFt2?^@dr8qL}+ms_6l-{Ng#bN zAAqX(9#)hzYyT)q_T2({yyH%BHq%Feb|jMq@_ay6(h|>i)i{8gjOby^k|^)08XE$E zYQUATOi^TZIM3P8-Qxbtq>45KJDk5s2Fq%Zd_eI%TBYFhhZ(w0K|1?|!SF+~x5Q+>XGY z8I3%En)yuQ;c6y0r<6q5XeCtXuj7iGKH(6hV!(}#tl6)~W-cQuir_A14gXv@zc?*g zy)Tt?j$ItM_Nkb4Ej7$n#N!#}IJLqMS_Ry)^F!F#2$g1)W$<;k1Glw2e!pyl&{4O= z*nj#?Q-CwqUw$A&3lH}uS}3~{Saa!9IlZdD3G@jBdt>Z37UY5%d=v;7-(tgb%_W3b zA5LvbQ4Z2n)5NESuVKHF-Gbj-RVfH4VC}~elZveUrAxSy-+z^Yr4_t&{)ts_P77Q@ z_ly{(d+0u_)Dz>Q!fm<}+dy5g6s0Y9|3Ja*Qg-Fq1Ky@vJINp5At&}~85~_=Ei%M> zYPPivV`l~Fq_(r>QOg)Pb@b33mV=r8{tDjNI^7|D2musEo8^+r>vk&;s`IyHOUJ@n z$I7(*8}I9HoTH2I^#UnHMV369bAaoqwDEw-kLnPYiVy!R42();Vf0FuDAz#{cQ|)O zy{1QN(b}psn4}<8a_j~F<1^P69B+C}%azv5lvkS!-Z@zncLhCuu5b5lajN=1Y1b%A zBhPXgYZ?93Vk9-I|IGiil+5RfjI(-B&~vC<8}DzZAqyq-E)urMRd#ao;sn@D8{G}F z(X1_S;jI|CT4$tIZgW#`i7wRvgTZw3mjG<4&vkCv8CERJ?*>{pf~vjxP!yPBMg zlI7~#=cx*UN5{!rcAxxIbWQC96U$oHIG>7Iul+1V&$M7d#k!AP*@d(Zic~bh6WqKi zjBouMog?ld3rMDIl&yc8kOABu2M?{L%FZYX%>Uy{H^|%2SWvd^vvLZA89ep1-lN-C z{U43_gyEhTdemQNK0KTN4ZS(f>J+$kXXD~*>SP{dewnYfDC$f%M6PHp;>R6+?b#6= zaNo7+X|pl^2WoxH`v^UnL15bC>z|q%>1>m(s(!fUznk&LB zn@i9VhTntnpB~B`=ZK~0`K{w0w9{P;%;jX5r?t6C2{lbIM3v1&hTdG~1~->~ok(^5 z194_SMRzgb&q`AL-aD~>Rfc!|H`p2ek5RDo&|g^WW#j=WX150CK@2Z&>l!Ls`5_w5 z00_>El=Tlu-sGHw45NbcNV$C$<8ftWMrM-YT7V~du+>M6U3D=HU{0uyI}2)YGyav& zPMJ*@!j^vb)+|(@z`d*}3l$G)WZ5XPLfP;iN7{{VKYW+G!Pa^1Cdq!wE&Og^^B%$_ zb2$5}EI)VEw5tPWW{n@Y3|^GV_Uc3%=r4_fepP)*$80Rt^!zOxF_^*loW-*m#`%p_ zLhZlG8EAB3M}W*(iMIbwG>7q7iZm52kI*Tr+n0fLF42;{B0qi&GWQVS` zkB{8HRgZKt=2G`<#8wUk26;?IzJ#GhfE3!2&_Pe(mU)x{h}lHnN!LoV^nt<%@Y9?ZEdAzV>clod@u>;`UISI5W@f=9Y(HLQZUdTqy z0Fip++E0+mnJ~(Z5D)xx2?y0+cw}J51Sj`L+Z-kMfD`HBHmu#y2#J_;1){%PD*Z6GND&a<*7sQId0_yoMQV>0qFo$ ze~vSj3=j4vvNxUn16>9JVSKGNUc*_Z&8W${=@wZDel*Ryk4ww1y?)t*9%oxRjC9>i z0o*{bzMuvkUWsx|aN+0(DJqBTazv8opC3Kluua%*HSrcQaPa(DyebpTSi|yLZxkNm zq@S#&4W$1j`b#g6uD{ibd?`Nm@!>K!vl(bl3>x9zivq|P!^_+ud``8HKbu{l_O1p5 zme)(0goKHi^65sx;7T_rxJ+H@s2DYH(+P;-VZ^`i%vsFJlx$;Bb8)~PDs|Lz|^q6EllwJ3ZsirI+@ z4Ht{3?sd+;$2yhaSITM|lf(XzpAh3Rd!vnfYymBOhTdgMPbB^!a?8fgaPobh^OM;W z(abkCXfACzO%raUxaF}oneAJWJYuYRaygT^=w-~mACr1HT_2k|1 z7%=eS`LyVa{&V0Y+`YPqq~h!@pD6#Z{T$M!OfiiT&>A2+kKF5~p%zt`acV%XDkHu5 z&SmyV8IjUGeUpT@r1_NdCi3A#qQ{aSk1W$=I(0S$!w&vC$?XthY+cA2q)CrT8(nFYh(j0!FSwsQ-Cb1kkmmwsgc;s+(!?NQRT`OTu%NQS%`vFKJ5gm< zSUNe8E{n|>f^(9W))*Y=CWwy%W6qTGU?a+L{$&(|e zD!I(dg`mqUcBMvEdDT9i%$L1!SS3pYigjFqe9eSO0IjvkjhgoWyLlEY3&!gti4I{9;aOAx*{G`8jR)VgD z)Wr!QC*w7&DEK@o0wAApxb1aML zT(h3Pc{`zUSNvUi_8~h}Nj<-UDsxyazpXN|>`NG4EmJw`=m)8sa>qnk)pRoz=b=9C zHtq%k+U(u(TWVlSSnKXghj9S->l4x^M@`ZV8Qm_w5!`LuC0{njX)EWOAd zFnHE4Bs;W{*Oig(a4>xL^BJN!Dy{Bj_85W!hHtQtRLob4+p}Y=AkNZo&1+n?#Hl{g zaCY>V5L<3#kdRc6vT3uuz0>wxMxP9WafJyXBxSuVw*-b&!(BAp{j`y8qST6Bop@VZ1bn*K-}jW&0~!`^Z! z#s$^-47o19xgGhAs1h|<=NXX-f~~{tuK(L$J?K1{NFejTPT~>}&d4^Plfy=aeZ7i+*ry&0Q@B-jImP2_s{h_WAN*nw)-;UwQHIEkBlc zlk}{k%R>~8AMbX!(wYu%+R3c%@a!FTwSO^kzG3&C)9R?4qUmPuca5@+fZ@D{7I-G2 zxPp<{Y*};8fw^nlugXPk#i-M^DWBn`SY~|vZ-vpfB<}n96@!ZQ$mM+&5!3|#O-7g- z^{r!BM@8AO{N?s5nM(B@jWkdt_KSGQuiJF9^G%9wzz-hoaD5FYnk>DRlz?{0M&E;Z*4RyH&I?qcE2m8mAbeu2VIm`74b5bk6j%j zbS{8*oZl@=7ZcENc=lO^Eo|dxIioNtoXMD7*X}V5546)@CTj1f`d>;5?gpLD9k@A~ zd-Q8ECC5?MkGbfX_)=sjb5oiO7*2{u+*KPB`!dnQY5K#u@pNWnO#+)wh^}_-HU)l- z4*NSE8&eHSi&nUpf6i;lE6dP87O@MfS|k`6)UwQ_fUN!hYoHmRN}J64+>S=dRhj5C zOABbPbAc1jY;HTw_PiNaIvOaqIPA~Qz6y*EQIG`R^*K!7Tzpz7xOF>n-Drsb6N~zS ziGv0xK^{jvT$L1ARO#+@HhC*!+@1Ri=0n=CC;H@aa&~;zcoEc#DZ=(2(H%K}yGnOD zS*4|oUvC%xw+1`s!8E{}iS;2AcK^ z5VM6Jm0=?^_Z7xlah_*n9xds4E_qSXy1CACvq>-#dM4(LgQ;E`3I)@xG!n=zuxaAE zxTfuBN8=PvDiR-n>Lc$FwXVQ%u-Yzpd>snvbh8s8=l%}-7}m0CLrdbV+nSz@eW)(F z>Wu^(LvrHDxkiH7;86{{TGd=s%WM(XtP;#y9hI7!?SJ&)$! z*iE9GPV-E+PPZ0CCu(IQT$zUAHtTJF`axrM5&T(pUL=Zj~CC!67V_5%60 z>W+bw%G87mFfVt3g-w2(+w>8=0@Xup`hu05Tkb7wXU!KB=yVIpNANMJ$X3BhQ;DojMPN|7JW?6jpcOGu-jKUmdSC<8U%-O7Zpd$Iqm(A9qxS(Fb3j z4E9?L#%QUs;u0!eCLDPx4u19z4sIrH?)tfQQjiSW6Yz6a;f~>2+?!e6Fi-DkX)oDY zdB?5k@cbI)J!*D6InuShe@M*I_;&hKRzX@i6(xHJ{E0&)?@+6Obn!JN-n#1%r*>uJ zCnP@0(5}&NmWORa@k^a*yl_Ns^##PXw~sf#?hw_hZB@s2=TT}F9SoK=g~#(2-jV_q zD{Mxnbs94F1i>kr^7<6l$M|E(&w?m!_~R`_eYM1~1!th-vLwFZx}~I@wOUK0v~v-h zQ`T>wqzr2*%*m1{49_KsZN3CwNezv0<)xV!K>%h_13ComBA+tIC4))vWtD#Q7~xGr z`g4xkr-}h5W38D6dC_I$mM|LfiqKzL`&8d-pQ2?o3EddSh>CM+@nBYhCK|NpXr0Ny z(eDFD2Bu@CX?XB>;Ykk)sGz8F_Dq;U94=!3+-;A7P(mc5L(9bX9|kieSIe=%`@49H z?GqhtyAsDZotxF#T~vn(&%ed`v^7a{^%IR6N}9Jv`qbsV$SJ(w&B$;GTb>d`Is)O& zK!1~Qk3Pa6tV{4g13AL&lNzSj50&*Yr<{D)I8@GZ!XJdyMOT)DC}%wdM)s^xG7#X1 z0I^g7A+|Y9ifX1gl?v_}wNS90*67QR&DeTF4TMOBjY|4eZoDt=Am2I5VIywpEy6Ks z;@$C^cZ-h}IFZRz*Esqeg%A;~ck{saxtk%^?f0B9^V!+)135)#)n|WUDKlr;u2*9f zy`BgN-xH$z!JMEZrl&P@l9s|Jawi3TB8M|6xA1a;b<5tJ5g}O=Pz|ZzvASf5(sSbw zhrkOs$zU5regNs`ra}Y210rSc$8@CV{^adbA)!Bi_hV9;pdMU^{N;zw zz`GQX}0xEFBGInexj zaX7kw@Er-SE{{sM84S@o?@73#BF?aucL!IuC0L;clru!zsRY839v{*S|HLtfWcxfB zrxCnEaYtFR!l=iBMu9oGf^=pmNq9rqAtLeev9ig3tv}S09J@?tia+4~2T)NuqtFAtD4kI&DDavg-jk}62oNdWGZ7XQ6X-jgG5pR8H~E!} zlJ_oOdMY+{VcDPEHACcfg#HeXk^@hqgd$*)GajCy@_o#`>ghzRWbfJgKu$p7x# zM#kg|&BN1Bb|c{N94h#AnPn;Q$e?IxZDE^~OLnDz{7gdcO5%|om=~VF>OeSB1 z3$4$R(eJJ-!mIqSJpz~;kRJqb=gmgYz>V=loBu%WkkX_61Bh%C$}6fxn8e`MiU1EP zm>s971SqH6;=|7!6+pUrp54Sz?I=7`Q_z%krJDa;dX!cE~^9NeHps+XYSmdM?tn?AbHS2M)FYAT?q@Z8kthmM1EN^SC1A z%-}M{N(FiUX%!{!A?U7rjXR{Ya?kxLGw9=E1ECMlN&k$%iHeI|FdX+He%Y=|tcmmh z)5AFjZ%jf%jW0<5SCQk_>^AQ$#dlG818qr(4d{X_e5JZID8{q9La@BYc-wf@$LcaQ zqs)2KY0)(gIPUXxrW;AxY5JZ``7Ms^01jpCM(lTuuNB9BSr(erm@mt{?)M6PNz+wU z#{q#S*TRzeu!67PuaQB$H7PIk)aF0T{14Ti<~>~UNM$5wTm#RpnLn?vHN$yFD;0B1 zdVUy|CWZ@_g3wu_O_!=C9r8ib{b5aTTZMN2I{dF40QrL~iIg9kA{u7m7y$dXlk}r? zSpMLy749g>2ijM)*g(`8t||D*p3h1}4gWwyi+{!Bd>xeS)^dN4rb^zDGz^7Ro!;_S zd$?hu+O8%}WIm0GR1>coC39sotMO~4SL*l@Kbsq9VloQY<-h0<1nTC|dD zSp}b^SN*Z?FIPsx(I7DLDoI0rDfonH#=FEv=5GJyVqb^5{sbXPw-%$l|mENa$RGYw)Y3 zjGMIx@RG2dHb@W$J4KF_6zC^+{0x*89cN^Ta9J4Fi4tQq&Lo~X3&F0JCcNgW*U!LJH=r^&bi9UrvD-MNjqPj2IQ^js5NV5C^Zr>g0$HGTi6N9&-T^(~?yvasGtbP$mI1af-a zu#P15)GWduW@c7V=)1s~Th))yXdIbzo?0y7B$V7{W#xNX5NDugEIauhP2ffevaT(< zXQ&V0R4dZYTSQP(+>(8PTk7W2>Mf{M+Io1W!zw$Xx>(y|=CoXyyBi;Ic(!m?_dJ<< zjT3euFXGy2lDxCmUy)pmFivTVG(KD~y8re2vqszgAk7 zd_9LITl=BZ7REH+(GvApK`%BHdJa#}n(%)@TZQo2f$HRFURw>VqSO2xXkzXI&8WmP z27Nk;_62A()3@U61=(8F3DEG zlN^OF)nA>GTS(W-WO*Kl7o^s{0qiPC*6hv*6S6y&M-5}+ZZGZW>T$yu=}069r4sCU zFm1efllBkTT5IcwMc ze9Cf(-_d>nnscSH36ejH{lQfs z)o}S%0DP6UWZ0?=iz<9cc1Wd~yRp}HV1kPF*VY)1?A(%cw{Z@|-{|(-hAi4*TsbYj zcdAc>XBZ}&S*0O23Ka4sl~E`h0gCf55l$^v1B&$kH|#L9ouBuAxO&T|Hr}{v7YfCS zOM&9&|2{Gxz@O zeQj1%foh0yl^T>x`Td3c1w1FYJ?THVRFkA~tC4DxHjk{f;y&h)U4+oZmd0sszp45v zMqRR)IoGFI1s$qOEDrMe&l^kl8UWWH=;)iwaY6VnvRaEkp z6bh!PW5d(d*5ad&V~qyGkt^%JE)H+1%0mAHn*N29&7NiRdW|gOM8k(bnSfqL8+v_$CH@d(kwJYw zvO~9b^PbWRUi|UK6^rnv685%1;!bp2(Zg=Ho@wTg_1}uQW2c^cauMah5#eFQFlokN zwZfXc=o5Q%HIKn(!EG{WnG5Ho!S0x>9m8Df1S$rW4}HY=rP2EU?vOy<9r7v0Hl4cZ zD$8dNm^pXp63Mbb*0kRh=A0kWG48hH*N4^fBWqKIpbqx(Gc}) z@XrrMZHtX*Sa>5K`#l8HWT99BR`X`}2Bt(wyIYLN1?9}F z`U^=FvRjIzcVHsfb-N z%xx`g$%>q)N*XR*P7!#M`@U)j#6VKLs=Kdu$YSr++^)&2t1brIgSOWaV;_gBw|n)g z4D3@$RK&;!`RUa>VqGpltFUR=$&;~ml?O|{TnvEBDCXQ_V+X5R1(n-6v$qB3$vrPo z^l%F7262tRGC3kkpM*4Xf_$G?{ zFnv`s*9G(YWE+jG&#gVfvW58VZ?vc21P-sP7K;-3nGf1|p{K2nt9RaCm)QK?2R02b zb0us-Yf8$_GMIz-+o6wZ7NAs_Y|irVEs9-T&$<8O9CX%sTv_EeyFCHEw=sa_Z4euX zw1!z6;syDj&}*Z$v7JzZ9N=Z)2h9@kv-^-Oeo9mKKRANUzSA=^pX@%4?w}S{J5#Z~ z>FaVw`@Ws~RsMf)->hB<8nTJX(cU3^JBPgHz;w3Ox0Bu{b-O9h)7vzo*r0i%_*-WT zE{Y1BUGkfrl(;4zlc$GMiWfS6wuo(g_38-C!N+#9*-|*&R2>?iAT?7mwIM;&e=OvufaEPUivl-_6gw zB}NXHO+n59W@C?Qtv5_Xc1>?m=R>n%*;Sdw%q96;Y(+!%egyML2kIf6l{Z?v*_yw>KFWTQa@+pSOiuA%+8gb)jVV*zU{E}lRv;V zKwZu-t<|xff5&cXDV_gSr$Gin8s6bN?Q}rCQp8IpJF)ZMftehC*>q%gbPixSqa%sM zr(9P31uxtfzjJz9qru^;Y8FV%K2`-Ay9OYan<~ZCZ;r(Q!@nV zzb~>%s@0kJv=9R)9%WyGz)cA8$ZFV!^MmiQ%0lY>z1P(79Q3V(j{G+yC+}ly*ypu8 zz0_9%8j?FKeEcuJR*q%II`#yPn5_vrda$x#eV_okf4-{2Xwq=M>#ZFwj@xs%#4PPU zxH`{Re@u&Et`YwRZ)unye9WDi1XRLdrwX7AUbXL88nu&}hMTSFk^|K+33cTx#CS zTMg=(+>V<9)P(`^0?dDKk}^8i_@y?NVz?LY3wV2d)EDvgIX*I4ZRmxXzMy%_k1y0t ztx@5HAVyGt1N4kFMtH$JK1$=ZqH*}S@cfR3Dd+KUtBWUMS|WMdgJLzm(rp)4*L<^6tX03Mu|?2Rg4E7h$06r zW@F#5WDB||!lKZ+gUpFq%V=reM*w-Os9kM-Lh+C@aWug*!d%lM9%;4Xc$m#IA zPcuyVG`KD8@7>N~x7hVL#{(ehUrs&X+397C8&oQrQ8)$8b=*Pv`>y=m8OcA;J(hYk z^|(JqhLbuW6TNzV!QLFEHpzj>8L_LG5mVHU5;bl}LCkwRVVs@FvG}s3b^zWKA8Wi% zOFNlk!pEMea>U}oecVB^7)ZS-ro5V~;rZ8SQs_#lD-n^#y;Z9K8~pHrd&z2{r$t!s zpPF5JL?6K7i+tDmRl+|w&lks}&B4oe6}QhTGQ=$BulRLnbZbhtu~e><;=&*E1b>_` zXTwijDubh`I#%rk^=U|w9{@JDb0Uq728!rXTZT`@G~VVLe`e*}aeqM?$b_%%bz}9Y z{!C;tBzutVu&jyp!kE_tck*uNN#wn~hxDYiDFwe+i}&s-T!xcnnOd$;9cu+_MiJ}l z=Qhi~IPkL@ZoZUJrrN0bnVn_neOOLDCAjL#L1(&ooHa~qm7~3=;sZvJmMp=&O+vFW zyx`Y3hE$QTU$!`JiT{8EYr_WpH@<}y;V@(#j8+heqTW1LBn;*}FTVOW(>S~Mk;(TW z5?!j%(h_s~9=|xsR=mgEW-!Z6ao4i|EtlQ?fwvK9KU7q}$?z&i63z~h^N=y%<}NWP zc<{5nxvtu`Y75ugeFJa?`4T8edh$@^lfECNIKa=$w&`%y`BKLP(SiBYXyLF&QA95` zqvG*8QQJP>v8*=xVw@D=c|G$o2v+rcz#raYTo z*o}>iQc#FW;<2ob_yzHKgK01h-QrQBqm5K`E1Qfd97hhsa4bRfTk;RrvBYA8DzYR9 zHCi>uPL>LuXSHMK2j%HDG$J>W(t95oA-^At(5my9XkvNVbx)ZXJE=kMM9x3_F?Q_# zW61&jzn&aSr{oS>#Jgj||DP!*C23D{+2SW;ex|BwNW}~EvUBUb?iRvz5S|nI5ALW6 zvSwHf8}F@+UAVAsY_FcIlGO;p*}VOFNGzTh%pydv@V}fn4eop1AI!?c5&m9hp>n;p#uPeL!xEAsQ_vJS2xgBm6#gELRrRJb&wOoCzK`+fRh; zJ^c}**cac(j;;$#8|H}GZBtgs9fIi7ps?{{Cv+p<%g1&hW+X$3C)EwJ#~NYUI4g(O z%QVM8LBcga%MJQ`!(BkMSqUsaWRLs&ein3{&3d+gg25S~0;SfQKM zW&bdACHpXJV)-amtx?95YK4sjx46I*z$9?%?Cd&FUeH-5)9gBciC=f-n3V&QCu$aE zy&WdaicKiIex^SdFa-wI_>pl<+7&G(EFIf=T?XmpYqYx~_8|Ohe>g+FB;eT+(XMr@ zUNi06hS0%AbW&I_r7|KRGSv?K5i_87$OhXKs_qMG*qnVzq?_g%KFt~8|rjoboYX|I29;)dRi@{hp@ zN@r;q_M&6T`XC$lu3xsqWMVz9UI`yGp#q(&rz|TVmNg@$Ql9!ISRK7RJ=d<&w7Ze2 zNZo&dvi}={=%5wVgR29JN(|fW?aj2Zc)^N;c;Byq&OdFmb;Eb}Oj#k5H7_Q3iCV&} z0;RwO-CXu`-xnSPQ4*49W6x(MIqtBQ(~0&yA6QbL{nJiRwvr^nGIw8$_`z(|kzxJP zjRp{C`84Fj_3fHG7noAJ;>CaX-?4@@C*?<&e^abg*HOL?#ujwZ$k@VvD!In~3=T~Y zgbTxzKiF(4)R+%T1==dby(&j^ZmnBVPU(sb3tKJV%{jLMN?jQRgq6ICw}33QbI_ea zgdiA+U9z~noGWl*HE$S4 zCj|@5&w}j*S%e+xa`Sb3H-vpu%70d(vn46O4meb2ZowJ2gb7^6#dn~($y%9kTEkNVhekC9q&(BoAE+Q~UtZ!au zU(Nv{a0}}S*BL(jU*^8-uu&o;vCzILX3iU(|8@On5o@E}Nbdf7{$f9uA)N+acH01zy@+hk!=tJP7+#^`uT(o zUX2J~yH*1{e#)|yZUWn_90nI1obd6nR}CrrQMjJ8h^RW&f~+>DX*t}rE}RCpt?s8l z^BFJZaIEV;kqvp8axZ3U#;q#Zv!|GCTcxk6osrp~-XLyn*^MCwBpwpgJ3SgX%gPADI7f<;MK3LALX!B0&fx zx&M_ChJjxBhZvrcw3=&&qub!1{;zr#%WmSn-6sB!ySivqw>t;gk`{a6lE;#hy3}Kv z;O||37w>>mc2tF49r`1|lK>k%ZP-2XY>7uaQ;e?arGP?)wkX;6Lb2wOPDyn?Lz9q~`j<0}NiF0dg_{o>T| zf03+`u0zuO>K!r)30Dr?FZ6KExjszSQy(9+B7$mM+Wc!_HNktRz%PxsbNp*+{m*sf z6Xb*!wBndOIsky4(ihdrlobxw6zv(DH3NT$Rf6nk^G&;R*!x%$ z3(d91__acu{8u`uxOC z)32jICd2zbiq1(B((h{)LrMOQCH+>Kr?A z8`{d?V4q4}p3-WjN!t7-`Tmvg#q`VO+UKgrim%;Zq?dvN#1empgP*sPhTk(q+*Q7c zJBZS>#LM@pE#Q~|rZ)CsqQ^49XPX4XFgy)fQjl{~L_T>BXptupfX^z8P{FxrbKhjX zerp0|Ic)J~^!<&q$RdnKUIb+l0J6KXUY*uv}4DqN+{Ci@oP+t6^<&zKwCYk#8M z&K+rsXQ>uP&Xg*At}tDcz`RICZQ@5feStTac-Kn&@i-KC^({ZaBV43gFXxDVmS>oF z%qhrM_Q<<_t&6zeKKrDy9pvI-GfyvKzPlh7D|x#6m}aIupH2KVpG;!YW0D_)wbtIv zOeU?4Kz$bcOpIE3l9a2f{baI>$pG4$R)6;?(K?g42C}x6eJW*l&b~MC_htBu38o%| zL2cb^-IRdl#!o+-vKD0VrY+&4hJ~+SB@{f0(2f4*;-}f_5#n!^dnEIr5T+SIhPJnw zpZU0U<1zQN5wCZ61X40VWr*Iy*95pRf*te_=aLo?4p4X>}bI$xrw){O6cQMN`xifyV%mOYVB~IMHGLAd8qk`Xo;-`6svF z`e^XkxtRl07<4i5)$nor0Y=&ZgPMGdD8cRE{NdY&Svh zb<#)KwL2gUlrJZ`DXFR5M>O$^V}?0Xm?V(UAzauC3sL(>xxt!8#AhFj8_c9K(!=kpgSMniZ5wa70F77>oppK)U6WGdaphHYb|@z&qhY$jXS_XG z7}{>Oxm=ZJyO_Wlnqo+s{)5tGmm4;>-n}s7q62ddCH7L6;>_C8k_R19VK=VzAI~pv zDp-hIx_ylGA&c<+ewDMIIxoYTNuu@}WT#Dx^BDp9VCO`_8bPzq0AnbFQY80)yVJRg z!nDi}gJKuIY-25*q5`a)iZ79Qvv3TBgKD9qmMvuCQdC4!jPG!|(5*3VSnV@YI0R@) zDJj#}@#bpnk>0vCbEja59!}y){5AJFRB?#d7{rE=ONQ;)C#p$s^qol)u=@OAWg?sw zHqp@I*-q1Pogd^<1KzN9tK=r2bfVkO#RFDR(F55*PFOBLfpk!CXmY8bv@|^z+!YpB zg`#v2mk_dyv%5*&7GN)?g~1)>{QM||$|>o9+6Wf>o+p%$hA&!T}stHLvo3*6cSwC%9}3J z=zI^kjQH!v}~Wm#tS#^IU^4|X2i1t9$!ghe(#z4 z`=gCbDIYs)$5)JZ4`aAL}dGSAZQ{_wqjH-HzOx^$>X`y+ntzX@!Pv{@(hAJ z7z!yQLv*PKVe=RWlCQ(5F`!GL-kU1jD?cC{usZ6i<9uI*0_v$)h?C@bj_( z)4t5AN(*uWLWD_=_IG!mUkxZ~1^=78Zcc58->#^N-=pt$D=O(R`)58DDFvZt1vU%D zDo0D~r6nrQ)kkZW{q{Ur?J?sq$zOpMPjo9mO#nxmM%+qIaDyZEy{4lpny=rjLp#`l zS~_`J50H54K9=3yQ}b9|ZhHh(I+7gRBKiPwk;qa>w)|!Kn8j-!EHu2@RI|A(rMJ6WU zZim~xFKRfImf{5V%5Pf7STNn}N)>hWy5>I30emSc4<)I8k~Ifu4H5_a1FkzD6!m7M zc7;qVt&Z2Hdp&*Eqh(9LH$+*^JpJ=qvaUi z`moR|_7`x&ahTr=(`?ChO1Hl&3zN9ue;NG$9Hxj>FhY$`v>!Gf+^|Oq;7H2f0u|_r zoo(7TDRtJpJbpQVEpI>dXO^Hw)N=@y(*Z%#g6SeG?!Nb5h+gk4?GHUhLIxr(*C%JIJvWxSbRLO?n7iw%4;gbOPOz z<-BdZ&^zYCcR6kN9x(4AzjJ;0jm-mxjFz=U)7MXY2aN~h3uwVJ9+#I}rbb&ZOT?!a z=hnwKa|ox-6|w;FNG@G`KKqjQmP_`=%VXp?Gn{KiIihXtr<1nczFrrYVK-x=FTg&i1-`p2 zq!zNXPqWxmJUP~RI%yN&9NY%8OtWa`Nc1JXr$=iatJP;3-B|mZDUh_q_~x* zuL_cV)SuDR0E}<DR+Kj{%=T^D*{$Y zjZUBmqh2LXyqc zd!r{72}oL$%meTwxa8(Kp0wy7pGKI2JS6a($#WiOm8(&T6CIGg;fmcO^GwV(lM*E$ z&s|p9&Df1_As>gv;vz-e?u5wlsrM&u9c$7?A~QT_sSaRc2Dil6Np=2uv13iGoaCvK z>+cpE(vTR*fvv$(A9>ZM{y@2iiW0%D)KV}Sh(Q@vLl7)59xzmwBW(9)rDI7##zoIb ztQE!r%jt|V94pZB@ClLy*{39jZg1#4QONavmF%1)L=!cLLcXf~`?n{-*v8EEUGZ;6 zg#(E(|Hi4HY5LxKxrqne@op5_aeA=WdAo;^tbSa~hoU!lbA7#>2aWbpAtF;>4z;5v z0e6)#O#F*i{2E(9+_)iQ7vTnBpR&=gj-ZO}x6_kr%l`B0Km7~SkSO?kM{g>?Y{SF7 zb*VI|EN;Dr3KiK6-y7b*ktVdhXKI{1lHz3+q}eRCtOX;scXkVR>bQ6;C2Xi@&C6Sq z*_l6|bj$mQUKnidk1?3M?Qtt(TcSj_1|GN5zMOb8)wz~rHm%XftgC4vsWLGxPo@&$ zV(Z&nMDo&^NlU_0Qk@88ec<^T!fvR%wz``5(3wBs|&R-mE% zb6C9l?dSEnpHfu^Hx-b08+@B1!lrdWZ6f5Hovo}HZrsLf@1stPAAded``~_JQ6iOQ z1q&_EDnTK_xhkrAIt;D|_#>U4SD{lcaaag6q8>v??-|JypF>i}V)EcC*X7<9A7Ja+ zx4%E#Y=_h+C;yn0YJuhYFY8q2FGO!wWl(SOYn;?q-W?8^|y z4OgrJ>D7o`1g1+ZRGx+xXq*$sG01tk0&W=gy=_cZ)UhO3I#o!)p&g&i>`b?6?Q&zn z=eL?WQr7Dhhv)RCY@~#8bL&65m=BY1S)Jt@j&3TB$Wz2@e`gysccru?$N^ed*TNi) zzSiLTh}s#3>&fnv4a+TK?md0GD`hDvsEMUUb=qZxw{cZeNp<7~)l;RLF+V82{+{PL z&3iaic?WIN>HIr8PLvu&gpRUbotyQ<dLv1*cC1uBoPq?25dkdX3 zgrdzMuZ%6L;c}3?LzIPy#upe(xKp^oDgS($K^Z2bz12}06nm>D@#B_d2o})$@n>_p z>LsdWz1h!xpM}R49SbS@r^?FmNP@{}gVzt@M?kToQAtj3ekL(#q{f3L0Pdqs04hGt za6bfYg`ysxn7e0YSWDEvKW{(po7MW^klr)|>Z&>-zSt7i$%}^cNegJaR~Npijp=Qn zy}HB3I@H{8m(@?OmRHxlTo2G{Z1U!IIhhk@>{mS!wNJU>-rUsxYVACpK)9F}L#)V8 z`J{!{j%aOrs1t;;$0{Ezo!8^B7@{W^>p(I+0S-viQcBEKmGe!MlRn`$`Ab{r(As&Iezk;#LaNA8}Sci*U$J z{&Bdh@Fk4Fv*1wkWau6N!~4jY><|{zTR^yS2ar3iYjIO%K|?pHOKMetwbivP&fZS! zd?G)Hyb-Mt!dIIHbiFEvodvFFA51S`>Ef)Fh=o#%D%63CFk#ZfsVb}xa5-zIA|>w#9z>SxZYj;jeybTr8{=G~TQ#I75Bp)sW& z8hc9#=z>n^yn=4#=^soY--d0?A@;zU1M$F5zHaHjPL-_}H$TH(ZM>S;JsEy3*VYpCMNT2@We6 zjEcLC#BOR1Q^Jl9Mt^&14<|YFI(BbpV`*AkAM`Oj^k=|nc)4}6z4eZ3M*m|iG%l+z zxJh(DXkbeyu)3~gDj%ymJFNx{iSrT%%&0XlINdO0>L;7H^t7Fz+EO z&XMY9LZa7JDJn7>tS}3P_hF3XcwskE(B&Yur(Lv_|I&AwNZ8EELkC+9_V{!Olih3<6d_z5P`$8_&f7XIXC z-=KATX0YaeQk@p~2n>E*t1inSU07|0p1ZOf2Kcm<^hm`KdBuw+%y%k#({)tk@-q0E zZv4k-s(TqZ-C2)sJ>>;qcwviWS5^Jav7TKrwc5++5VGcIIW{}$T>2wk zpkYZ72YMCCoy7Z=K(5K5Tc5`dqO;4{wpW8IS2Am?t?P7w&zs~iv8_KSNrUFPFN^BX z)Ke3>_*zvtR4@F8?$mUeaffAU#AxkQh&%)_5A`kn=u{#e5EAp$6ZV+2#;s{z zFO!RL%>X$0Fh zF&-pGt4pQ&?&=}4W|%E)_r9~}yEpz9=&$(bFyI5T&0N{~r>qoj`?IVKVG|RvZ_PX_ zhH8*iZrm`Y6~6(*@jq&-plg-CUfvcX!+($5XvdGqqrN>o5hxFb*f%Q|lbE-B_7%2^uQP z@^(<1HPzJfcC6}dKH{k7lNBH8l}Q1pahhx)?66vw%CHF9c?uqvQ;vNT^7vZa?mk_c zn}hj!{vj1B^oZdOT8cE=n{p%eTW+`X!3qJypyBPO8xpvg~nyQg{ExvuvuEoRig_c@MiFPq;=n+Jg zx1{I)yj2-nP20|rtEBFlT+cw06zsq9d)_3st{cWGoP}X27>>DtGp^F!slCoGl|&?Y zRi4G(MQeI9t+p;1dfvf$!8H!eM^lbNK99AhH6TucQ1H?=HX9t(c#`nh$;}2WJk?}&!5oFsXvp)M>DkW$ClXz>)aqK30 zheL#lI+i$A1eD-g&zsD;OsnYq_z^VgI2k``o^y&!yp!)RB~<+nF8`?L^*Y}(7TiTb z6WYy?H#x^!YN&`YB<3g#qfchQMu>U0{&giBzL9JB8^3}(OIj~4dtpr#u*9lA6@!Jy zb^%U58JD&m=VHeu}CXet4U-7bd9libWKRzT2K8;1?3i%`tj$ItKk9+eGVi@CqLfa zp5Nql2vjJmY4Y{4!mvfpM>FWszS>;klB#r2BlW;YQY6x!(%w`-Qqt*g*4ByNL(4EK z6eL&OfDyQz&2Xu12do@~ky_FsS-Gy%`+G~FyqxQTYz%%dsYfWpwwFhD&)!y0{}Oa2 zTBROoXY$!{8F_0qOAje3okmcAXFHNDy6$^NYPp(!i=wWqf!Zc~gK!YDVW&@5qbdlG zG+6sYjVt#f(yo6vsAzli?$;UVdotlgZap4VU~k#QkjD#|#-5fuVv#$hl#k0xIG1vD zYXzQFbAmwLB=J1KF{OJ?zBsaUYFgnhL+si4O((rX#WgBmLsM^f=LaOc-x8bDaFz z<8316!VSp}+LWnnjK*TlPc-LDqy!aCB?%6~_O+^O;a_Y9s9ZQvs#Lda-G5_Y=kmEW zj(sZ*?780QgVC1NGRXuSo>Ll6W2l>A0Q^0p99VI|8gwNu%ZJt~1leVQOi7{Y+b+Vi z$FUS*ji3bah-p-1kqt|%m?b>vtb#Q3L7)Q17mQwu>v4W{iUX0q*vr zqAlqo_&`HSKT%3aum50ZdgC#@%%py+@{f!?DNLC8ALLjP>E-dQkVC;a+$172j{K~YZ|IQJeM#OJSVuYf84!ul}IG1`Oi_jh{ zi`Z`Yt&JPg-)mA^gAKahnCy{g3Z#AMgcW0vQ}bi0pwD0?$hmNZ9!oKN`HHYZ>#>AS z)kc{-fW1!on$|CzZneI?or+ka*n=tL{}Vd6#x&ubGq)VZkPVD(Fe|z2pm!em;^Tjw z$kTtkl9*VF8KLX)*BL}pqe4a~ENq}=Tgbk?A>hZACc0?3h_wI@Qj&G<0=JcKE1mmE zZ>9~M^=-V35&DutbqGB8t>l$kFtRKE!7WtmtS??4uKya;X&VvV&c`9zB7z9L7hb4*_So>h92m^Y#093^Ism$DV9ockR|L=V)SXgW{7w3i~|PUV9T z$&wG1Jd^k5XG^-T9&{w~1{f0DPYs8RKj%~UJ`I77a9?8Q4%of7V-!aZBZTrbU#I@T zVV?F-H~2OW;`psb&Q-KTSJD)EB!qm}Z(Z@CvpN%1P+^rL6MiSsLyWQ~U+dB$u*!pz zs@RU*NUTHbdYqM=;-@xv9&>Ak(ZbZDQ-#y3INyXcg=I zyPplz8pv`R)Zh}3TTA@b&RggbU{>g+&t@yfJ4JAx!t~cYB*u#L4nab>Eh~`8EGQv0 zCw~~S`vi?ik?=_J0A`btx~D*-m?4i@y6lX$t00klb>MMc5Vc65L{yaPLAzNdItC8G z$KPDB#JWy^@(MJX+pp~+XpSU+za7`{?8Gdu+M`Z&1`@OQt%gr)JFoK~j~Ktm#&oBsu7I63}MKp?jcME*{M)22nNCP`jOti_U~ zR^|(~8qqk8#rBV&5$0h=s)@unvDNCF_Al+eDFx2|5N9 zK5Sjvh<@Y4L#f>s1i(lFXTkbhB}rfU6}h~j3d z#H~+oL_A(Alq+`<wWtN2Mbii(;>2h%}#~G z^Vxj>B8pA%M1L0)(b~^OM%{8G?6g|*mjS^%X?W|R9lIBFzu>Z?#Sf09!ah`jHMZmS zNYZ~pD+6f7U1qp_>(!?)2K-;_19mb0^F=hQy+KD%d?rh4C5pjbnV=njc$(}`G1lsFK91#r`2~fwVt_Qkft;9! z!Z_J3P_cKEo@lxNaXttZM{!PN82s;o@PN7`h;AQbtn^_V`&lvV`5&CkIv9*9Q1W-Q zueMoIj8b6-!$~{eV~8$_$#TVB#J9i$0ax?|_Kv=~REEUDqs7zfB7JvO18U#P1>jXL zN!w8{w?=0uO$~L_Hp}2KXF7?;5W>tsV#)w8mo~1ibsO;gH=?P zHyW#EC>87d;Q_KAc}oD2xJxqgeYX-Zwbczz?t2QO*mdMM&oETS&}7h@U46~a4e3|b zS=zC&@~{3g-R#hS@?xBjNu`vU9idI^0m4#AU6x>R^rIQH={&^1%|l*ekRrgak- z7J$PVj?*Wh-V1gez{ky`KjXVA(HUF^W0|!403!*@sSzLGBXfSl1h^E+MELwnzemOF z6Viz6TBfjk0qKc&-4-?_0X@IaJ$Yi3v0y&@1;%u)pD*_M$nI-pfT2CyiS1tHvXVyW z#bVyK(Yr{JXv*8NR{CA^wUCiLUXkC#kL2XXSfRopOT=*PDFz*N!hQKUh)QxHOFG=4C-Q{ z*zt(h#i7)GUhIQ^_2sb4{Sayu^>}(Ar>c8r>s+j{oNmI2fPVn?@&-RBU|$oJvAEj* zpp=jYqPmJ9_U`R4($0_V!s>XI_ab*5pI>$0!nGNT1Zg6X?p#2lJT80_D$<%tZio`y zpYY+WHD-McNfass>|`j^!S zzz6Ct+u*xAfVwM<=#=I%qe0+E7UP{X((vq)ZpRbLL~^@#(uInh)bb(wGq06RnW~GI z!q-iMH?|CR8&jg6OPM~fIQi8No+IfWc}r2CZ^=`dWj?QmV8YxbOeX0mF_-K4a5v7d zq{k_aL%N$0Dei=k+YNON<%(8KmRM=H%xnuA;@Z1DpzW9ibI9WEV-oT(|{EJ zbY>JnV@F7yn&OW|~LAEK=>xo-SvU^eX-i2;TC>tJ2Sv#v3>>>DN= z+H}E(18l7}^C)j%8y+dhkB!N@v|_YqTV_W3Sa_9_EhZ=;yw+R_RIC1GLm^aGioRsW zE(u>MEZKhM`bf8HED}nU~2pd7RTV>2CMY-H6WI z#_#&NOQRjev{9^H*3=a|u4Z!9|2!f{n{&W3AI&y#;WoBrjR@yAU0$m>pS>ov>!Wy_ z1Ke$gD9bFbB%wcQS@y<)mutek<+yTthZO3p*H_^0kVq;YwPf`xoL78UZ5h^|bm*10 zd0lA3_o-rrQA!&M;!#|setBV}CSRBAP1qHW*-KW){Z0lES>!9{`#Wk{8ye^ax*jm( zt*ifJu(~GswOG~_9e(|H;+;f2{50~eE3g;)(BmZdX}YFgM>XqGRNm9tgEr`6{Q45B zRcQiLM^sMaX94`4V`SUX4%T+;ZeX4R`&}C{;3eRP?b* zzy8fWjH#nCn*_C%r0*;%)8CNNb_;fJFQ#Hu4oGhQ+*0y%m$XZ9?peG%n(yd}oa-pP@q4#M{c(E|9}eSM;%a{8#t%)uBZ)u0MW)|zXcY_#JDkwIgWZGL zB`!XPzEayI zhfUIE`~E4(5~~|*jDfCg%Y7!y1gr&je`DbXnWS7aQj6nxYJ?0cd(5a%=vn#xS+;yu zn+YAo<*(D;&R@vnAS1z`z`xG19ZzbwrPN_%AzYfHc8xW(rK3rub?>i!tj4Mz!Vt%A zxtLCWAd~p@v!ULSE?(C5zWNgp$}e#7S2z0?)nP~SFNqhbTP`$h7>VDmK!61a&*P!; zv$kZ~`}LipkA_O`EQ5RaU*DHBS=nSIhz87%;u^;67-9#ibRw|5!K!DV&sfkRTrzm~ ztlYVS622ZDTVF*b;=uxZpXfob$MJvJykSB0;7_n-yWo2gH2HD_7S>HfifC-IF$kvH zLLxEb8j&c^Dveao9Of<#R00-A!v0{DtpYkSJx5smiz6%fs8uTyp>Ddr}xC6W@nd@M%q1e9ME3|5D)^e|U4}l|y zUJr>p8~BV1pVIWGbvQcCUMY!gOAcubD^?K3^FX2sPs3@H+U4Lj4MK-7e4r&@p@JoO z+Ol~JehQV=KPxaR1=wA#r9ZK%I%s;UGYki-Y)2jY6Fle=f(NR zNBOpK*w z<8R03I_7D09Kh|)rA&bT8)hPU-qyH`2Xsmwty86-5Vr*m4Tned~MsyL*J+>AL(rWCgN98{L*v(rZDAr@%+5G)_79^x$=_0qQ z5RsZZji2?wT6yA&@gvTuq{xr~Nsfyk>B5k)VC-OSVKb2Y{Abxdp5tY1x|K=+C4Qc^ z&*!TU#HXquwUJ~rneWdJ0WuZYI{lF@i_j@7GevxvJupEx(-qEL2Z1g=NcTjc1U_|i zXEj9@r**ZDXbOWbY>CJvf#hBI8hJSk#)LmiH##!GsU}!W{r%yf+Nqdu`HGkw>g`4g>)Vv|_rrDPwWXJ=U?QzSP zEOW869<>@3r9`SewkBZR6fKh2cqb(dxc47QX8TZYg3G zrzYoI=vmOC{lVm#OEwr?WSsBromJM5MR#h3@z2NQX?;#ukhE3(L1A2s;EzLg3p0B2 zN-A1S}0!(>04midfw35 zet=5I<|?8$PK3$@A#{%N($OEU4U$=W=KM}4T0M-VS`Iyh(%NYkJ76wl&$?E%hVLTu ze$m{*aS`ctVLRd^ISK)@qijrdB;SFYyl1}1kp;R&WIVhXp%vEvK`3?LdzTq8v7JHj*K<^pRZrtGo#V#1j?{SO=HP=MCcAaT!O*MwO%2hUv|S@hkFMy_l51K~mYzA^bcEO3uV*?1 z^h-}PA?&N<1IlzSoKg#B`2MNHdkqkRE26(f2Ymadv9_Qq72J)O?YSrk!EZckANei9 z$5g^gwY_M`xpHDvjNg}{vPQ&rJ^&28wDI`S^m!FN6y0mFP3*eqWaZ_xw1iYBg&oIQ zH2SH3L-6KGS)kzJF*Sr(>}xvV20;+H*~U&i{qbylW?d@4juYJa z=m<97V8NW1lK#MX)qiliVJ^SG%(t5}Z=OhGv?CNkaus;r39noJc@@K`OfQQ7_~5fU zu612ctegdfem|#n^N~c-+pB|>;}_UClfSgQP>c26>CpUz$fE`n!fwBJk1vZpUz}f> z49@MkkDU!l7d?*3D>*Bt36L(vT<2o1%G{Oc?+ke3Th7y#`(d64;o24Q&%C(Dje;G^`~Du!$lk3#xEs&c;fd$iUBu*pC$b4#@w6x)be~Q@iE2Xq8hX4AiyjMaIaiz zs_!;>u-4R$QNNXw)&3w9RNatmu5&lDJP8fXm#JM(K*cW^4T=@0?3t@NM*kZcmYEE* zowg93{?WlgmAWz`q1s$0UI$5zx|toG5klypV5Y4mSWNNMX~?4NFzcL}P|e3L#079$ z(^l=D3gng-ho)R3)+#X}TfT{e`BC#ungZIFh3$WIoo%!JC>L>B_w603Mj9oQVvixSPOghG9+@GX*7lXf+{j!PGhb)ZW)njb%*yL5`Lg|V*opH1WY|cC(38iYB~%A-R9`C%jk@F?egLj zuxBJ#9&)t#{QRO_iqI0vG6JlJ9Ua*8Hmrq{wexQI8{0HGY~5)pxVBpm}bA>n;C~fze{H%-Gi( z_spJBUD>GW_ugJOM>9MLGBO$S*>T8&vHN`6#XKhk8n^a;ZWaD_%3*u?$L%DeJizjm z`TR?J(rGf@PxBx6^et%K{_+_bV|oXdJdo6H%er0`-9l{E%2VbgXcoDL+3DN_RQgRY z$JmT%aD9a;=IueVPifPQNzwCG6TwX7qLt9!Ns=06Q{!$s&HjVR9EC#r`! zA>m)t!b+a`jLV%JzF6c?Q1494=jk!TM~zG5=%)#rr?ZBrIW;`5w-l0V?m4 zr!)+1{UJu}W>bhQ;XBxQmGsH;sF!b+a0(Kp+P2#!H4UCC8B-0dXkF#V{0Gof$}{Q5 zzldq0dZ5kV-I1Dz!A>JiLNN7zAx2H!uUC6}>2Z0A-zgdm!9@*xRlYx` zwN)_KeLy0j0r%aN5E%9Sj-Fz6cBa=~)eH1**fG)jV+vMDvyqig2I;++eygJS&z*;vU~t`>Cn3u;@Tkm*Ho4nZPss7xW$ZMmS(``Y zX#86B8bT`X-JXmN9?Js$1Kj)}bh60qG2298YZJw&6G;!DD&k0)F}uJ6KFO^9LJNwj zk^W2u*8F1Z>EQjIc0Nj;+w*Q9{BX*eNiy=8LbbCfnea61)_8|OJzM&^jah8#S>YwR zeyh$8ZXJ-v{f){N!2=66m4;?`VZL2|v&JT^zB~%?XQ^CiHA@4Q)E zuG>+dP<3dDVKn`~@%rviznz&3&Acfz>Lt0Ys7?0F=uq22R?oyL?EIG5;+;xU(q)3%w*qi&ErvYbK@Tr(BqNtC}8j@o#;Kk}y=^jwadbI&*cVyDD zo}P3onLPF%vk8uk`8N1HIXbb0)6_<~dBQ@s=Sj#`QX8P?YHHUaIO@IJ$6C$;zA0Mx zOqi{V><~n!nVZ&czK0E36qy%S?f}`--L`C?%>}hDJpv7eHP?o|*yeWg33$cxD~)gn z&9A#vs-N{&XY>wpwn-!1P^^Av_q#KF=W&?AZ0(C}UTtwSm_gY1jQS1#^Y&Z=U*Sq_ zTSVgfl^G@$r@9vALM_P2XL?Y@6ATo7sU3M9(l?fD!P-K{sJqL-WdVCLCU=d@FZDOd z7s#dKTNHMfH3jBjj*X4A_yfyE%5}#h-XHEQY@)60hxOiav>Uz=SRE=V{U|6d`_225 zW(vRT-JPIoCz1yl$5NVgNg=i27~k-8kkCHL{7fPZ(_InM*_57aM*r^zn(F}mVquH> zy&!qY{hN$}Y#Iv*4-=74C8i|ImfzWP*O%iuqhgTFr(yU*+60;C{hZb%uK!2Mo*K`HQV6K!_HGrq|cuS+V==I$i< zg83K0&&eYt0rdrBnX&$XUzIjIaGTz%IMbJ5X)9#myp&PACTr%)ayzi?)AUSQ`(}}@ zB{C1WAyAG?F2LeX%7!#3wLY$IqL?phgw~#W2MfXL3PkQ(}(|6;aX=d#mfn z(viXK(4A`|nd>06*Mc*5@cJc9G0nl?frRvjVPK9I1>NNEv|LhL8{pPF_`~F8VM<#} z@5QFlWM1?lpFf*;9b6pSXt6|dAV$l%v09wumH^)DEQbz5i~zy$0Fe~O_?tF_capMV zGs;^_o{KR-2H6H@z>NIiKPh=GzFW`>*7Yo;44`QiG=pJzG z2bdP7vLaxMT$5jvOpM-XfjB>7w9F>f)v-TrlX-VOsSl*v^hT9!6hSrl0yd*& z6Sexq^w1xx4>BhDKv$)jvY`O6O6I1hEM_T6P=H4b;k;j9dNvSBuw$+`>n(_E89n)? zX!;lAUTdee=BBb_lO{7#IwnB)vFr`kF7sbsRj@Q9;v}HjzR~y49Du8dUc4UuvfFTM z90x5g;LImmVAQ6e>io1Sl31bQj3u-HGMhCkYAqE%yd%m&sK8xZwe+a zHDo_C?pamK5U+!(xbGl{UxPAl5M$g9!VCyfe{9r_woBGhQ#Z`T&wd$X6uTc`G5Xk9 z<#KqJ;Xi;3+Kz5qL@Yl;l4OM?jtz_SgGX*rioTBfq+1M@8EM8-Q(kTmZD(h8lAkyzw)lKA`*<}qyJMa(Kz9;J{5|Yd5+t@%#1Qz33tdnX>5msil0eK7`|ub zpgs2S!D#9&nwBQEtNN1k-SNIIcbh|7?&l|jSX9vn)2<+C`;a6Jz)dHlTp);dEfQV0 z(HBI2S(tGkrL(AFk03UwmnA-Bi5pg#G?+<6bI_U$r?bTX;v6Y@{`C!c1S zf&?NFzI zQ-a^%LnW87vA{fMnz1Y{V&h}(Y|<{vAbtyuHMLVJG0miwJ5d_Rm1orO-qkeMf$Ae- zADD?JmMzoW_i8lU?qB}HY@5J^;PB#gV&rDGn#R|P{{SKu`4Ts?Bg@K8aI}G<1O=NQ z@pFf7Ro09-&KXleKCeb%pmmMO!!VZ>MvDevHchvHXJrCQ3SZXAi4;Y}_AN~V91^8H zk602S;>Pj0OuffkbACOIYKO|t*Nn(B2PT}oxzd*0J8SVu({498PI+i?zF*bbNUpws zUL|o?rvI8sutXm=6*Lat!x`l3!ny@9I;KgJI=78Yia(n>h$WB%_8zp^=$)Wa$8b`2 zb)!rI>?`Go`anl3chG)fX&t{rI`AOyX&~EZf1UijTl;T{%N8RZ);~3_KjSW4L)yd{}a~C>kzxEKsFf5 z#epBFaAPV8)@Xh3SLF<3Sd!gWroeL42o&!a2p0hHJ+xdA|i6KB%Qai zxQGo?ZIhM*0LL1UTQ9K`379F}xP@!$iJU_?j2e~M#{!o#Y0z1Tv{GSql$^np-G0*J z9a@!D1TE@llg8`SEpR97`a-Zm_k+c)z1f99Fmm`lIRA|CNOMRb2jAn7Fe2bknW`G) zcviu!Wjv~Sso@ar?TlYh%W+KqqtdZ9a;}E`R)!&9JDH$vxD>giw~87p588@#9>)FD zO##au6@s6F0?p{T4UCpr)bkBOA&TX4i^?iN1ZE7_MW}(YLix}e(yq7OZw_F#A3&-f zM|RI@OE`@&|46$FJ){^jDmTWggpa;`>G!;APKFUpR=apf))w8E+$w|!bx=H@$ut=D2EfIU%?C9pXv#%$asFYRX1Eq(AXh5BIfaW%Z@IlUv?FuApsWvD z6!^T@p!ss(VShJ2ti=>qS6o@ua2@zhdc$jIK#6?y%C|QFx$LH^Q0Qn#^d&B9b3RXJ zAMB<1L14$lquj>oDr}xbV7dlU95eDqheeNE#VE%a99|7P`e;YP0@=?&S7z35zSiM) zhChx0b?>W7#dUH#_5(e%xP5#cz!jk_l9craa8_1k!KcNzHG;%+eh9;Il6E2vFOC+g$s${EjOk9oGdLp;{P?`csyYfh_l?!-6%A(>EXvdYwKBcQvF2ft8W3UPlY_kNb0$yWM7 zdp{Ict71m2CUGh!!^{)4(k z{*57}o&N|gFH5C{Ep24!ki0zHC8zd%cLK0qY=!V}LeO#~i&5PXadRR^Y}Nw(P6s`j zgcFTVbb_?(2?mdR3*4LQZ0IPUCZBE3hD+z7Q&-E~6i~((XwnG9UjXldp?{gtS z8|+XdgpU_p!!J)VCbNn?zas|X8G8P(b$|q{!~;0ZH<5^&%TjXi-yU3k`k_y@bK>!L zeU~ZU`O zBEe6O&+J@0P!1`|fUi3e8%!Jzv8I;Fw2AKK4v)8IQ?nHVv)W^2$1fHwdpt;A z>3^43JM7&}w1p>8?m|}rFN(yuhVTlwN1*j^*X4S4MKXvMyX7DZ(C z6z^m?WerCTY3txaMLDfmy|MC~k%H|^Evt9?Y=OUuYf!!~Z z2Xus%?~NYCS2k2Rv@P0t|BONo!8$EHOMIP}n4i7bgBv3$)s-B~3|Gj5=N770kY00& zc49{Yj8D0ER*0kb_N@trVPDzOqGrN(1iITy5a2UOe6d$0h|piBu<6wNQn-`JDXH&W z6{3}17#YMFS9qYsC3Yy#&w!1}SZ5;_8MuZYSAgWHOg~zFrxl3aV(BGfdYq6&3h2A5 zmU3@_KT{(;{(wlaj!k-6EXDSY*zwQ<)Yyjb)kx~X9;AZji1$kwrFdhdqgL-7${S7uMwb3$|cK-ll&rXhE4?+8xQ%5O{) zbv59=w|CGD%5a)_^vrQkWy~LqJ=_X^yoIcU%ip^bH7K|OnVQ;oxu)5J=s4149%3Wm z-zAPR>t>fUwTUet_$XXdm}E9YdfH1B3|wn;jt^h;LT)k_te?HcT zA?Um4B~N9Y;TF^>kFIxVC=pElyA?|9c&fYK0yxKO%G8)%qL!S!2nDW7eQ>B&LcHzT zqh?!Gi;@Zo2t%=32c*k%Sw#2l<8ERZzq?P*<13P1 z6OJ$B<}o{6m&5@iS6_C!O?afVYOVs;EyA0#PQl-aPhy9~Ti2C{KJdu=2`28L{wq?8 zv-s-w{50Q}N_7HFeCBz|mrHPdX7f+CN(-oo^?ThHZfr=B-c!2YWbPHS_0W=m5S3p_ z6z>cKH{^Lv`j(o$J}qJ`P0sA{s70XFx4sn??7nw1nNHsA_Ub8@e;L#mxp}D`ksnG% z{k+KbtCDj^Ln@OaMoR&a+(IF_BZ58?Z_5nnvB{4n1?|f|LVJ0aXI{f&1;xKHG-@gF zLT0}&G}z^b%8ubZqhkBWx^PxXuqW*8NXU6*B1$vwa z&j({OuqgeeGkw;vMMlx-WSQRlGvxXac_<%hj}Q#6!I%=@qI)JdAm&5ZV-{y;nW@sauA zu;N^8qS~))7G2#Ew~;9|BRiyOuq0BN*sQp!uLz0r~wxI-3}4!DKCl*aOrT9vkho?nz=RnXv&s!Zj8HfdON@? zd>oL_&Nlx+IO-!j75J#-8u!zt?iM#xs%7aqEH2#rI>D$3=wVCy$B?a;H<0^QGO|r7iIyR#5@0EfAh<31VGRnLlvNP$i;g4myexxOwmUu=rgI z3@%BuBYl|M9Nj3+8qEkVWPhlz@Z$%d_Pb@o85Wi{?bg74l6b^U`ZE)-NSD(tAF!Ti zU?S5=4%)n{s7}Scl$X`GQ86ZcpwnZ`-gAyyht2ZwcNb-ZgctcTy&yg|zR+%aAS|h8 zmiC(jR-E)|o%Ed~gLeE+mh7;&mM49sV$V6(4{RZKufm!s4v8Aybdp~w5Zn1}gr^S7 zv85^g`>mM4$fJ3a-mt9+qtIg@)zfkv3hOfRAVel9r&1&Am`%3ZzcW8$iNKHg!P`w+ zPb?R`E|8v#!CrXG13gBVxQ8d@rj=BmDXR6!g5dA&`Iq|NGxGQ`rzc148z*?W(QBEVEZ(qMTSF`CYkvD^PcA zL`gRZ`pSQpw4;!G6kuM{H57DvB+-oSrF^d?UOH=T?=UI~2af?5w4;HxIx)MAdBU`n?yT}R~KF*>%# zG|c9c!Q7}SBmj7Fi2?0We3_(g5CIbgaDI#Sb!F9^tbSL-ih94t=@I`Kcd~?5QuWv^1*_Yk6674R-llpY0Fq|nf)K1+}$XrcLR*lVA$x4szWe7YRH2Md6xwLUyLR@ zmkBPHLHxKBXOruE1NHuWeLr7DQa?^+yfqQe>gi@mm`oXuCYvnRCi??Jl_#2(Z)*#6 zNYDGXRMD86z6y1ACYb=Xl5ZH4m^Rh`J$6_)#iCjh{{Lp*o-|L&dcb%*%KwkLQnHl=xA^Lx@n?z+$4WQ z-|*C~9@0UAA3;)%%bdQiJ=3qSfhwGIkIG0Y1JRw7EyfFHigr?+{B03VALVx@LEc$aV)PcU041#C(ZBQ~e9>&N^@#V8`!@=_ zN6AMLs1&$vZdUfIMQx5gHiK=0j|N74Vkch5sOfBT4pGI!?iBo`x()3R^P&;sU!;V) zJp!_k^MVQxKp~~R&U4`$8Yc>=!?^UHYmKma5$g%YUm^s6d_BtN2*kav#~h`G^XTvJ z3?K*}h(%*s>bOh6>w+)CTOiezL-wIjJ{1bB__zJsL6>_vgFE~S#|H?*{{Y2>GQC5f zZn7RX^-9JWM72QR5bupihIWG9!NtR=lGy&$yxz+6=351jJr4$bm3)tons4L#AzqF@ zCcCwX!cF;7mvN0_xU02Dt0?t%Zt2Olw=+9|8_&(z#8|@N`>$ws7W!w;r!m)#CWbKQb%K8*u}YSJw)ta9?YInG;USceQn1R|Xq; zHPRy_GhfK{ujVHsQAV=5-NbOfG_Nandh^`cf$ahC0GqfC7`{I#V z%6IBZzSyIkwNbjRZlrxAx6sipfQa&~U3Z%z*;VbW&QFnQ&z`4tIsO@)D`~z`YlUa) zKWbz8T$gWC*eDP`)DE8!dh`!4f(qhG)EHl@H$DMHz}X6Bx|XV@OlJG1@_77&QK9cD zUQSn-Ld8tjIVr&2l6~R~rygR;jJ^pbAsH=eB&Vq z_7by^a`KPD?KOwBx5urTinZu75;Cj2 zA7?&;Z=TdRBrP`tEE}AXjmsQrd;W-BbU5rSqJaKVR$iX37#8lv`(q#%*^ANRy8@(*%F^6hUN=@sBix7)P2f+xtlMM+hW;m)Ap zD#@8kwZYxBJ&W}4PybTa;tXW^g5P`>1PnAgl9+FLo=z=&8Rw3dA6=nyO_w!<6aNRU zz74j-k_`--)I5H*8`XWZFaP+FNs<1B9I8MM5e*6iveNzofy)Qqg~p`!CrT6m*^qex|p&wuTm5Wht-F4dG}qpRowa zzR1fhA5EziUd{Z7`J>E?O`JY16<1{@%$#U(g0d(|YTgg8$(U zs^RXcPR^^%x3NP9dI5rM%!!oJr6Jm7ara+Q1}toE{~2q*nOyP5&1r9Z`tK|Ari{#l z*^%?2?`V8TGOpdtWraF6)l8%g7vmuO!BVXwVP2=|ZMVcl3b@7a@;w~DCl?THa=>G&8%5)|Z zB>Lc4`h;aH<3$U0;oLD_9I7o)kx5^LE5HSO934pp$tF-{mQxkGInoeXg3B@+)`ReM z$P^7<*02*7_(W421hKBwY3IAGxgNf(*cKLh>NVyktMDHn##rq=-MBMAFw|hCG)o?` z)H!l-zKJG83KM>|I3TW*WQkkv5YUQtqh9!^B_SBS9&pp%V{~f;cvV|wq;ga{-kt#MHsJQBv z$L@XqTl%f=npb0o2LxjrDclhhn%H?_(z{b7^pwqwzxQ}8GkR{Uz$3*q*<`AgyRcO2 zqIR8>K6$f+Fph7#!$EGH&A>f4QTtt9-)g(#C+reSZGLxq%?2n-ow$Y9Nu=&hxXHV( zVnfUN+Y4|}?g3B7P_5De*?(!dt1jeovY{dhOmvz|N6a`pca$wjmA<@R$gprT4Jjlg zTRT?IR(sqT&t-==U5l>MW#|%PK4 zbIuC~$;L;g*ttoM06XQTL8bl5HU#6H{jarnuMJ<~2c^pZ>tHT3WrGcLQ$7UDhv)y} z;N>R5e@N(@dJO?^&kMN*Lo2pwvSs)4&uU(3NIL>656_AOGq&_Uj7D**tUz`C@NM(v z4`c6YQtLELQfAVpXD-#2uBe((7}?DhdGbXE22@gCJIDZL&KSrm&B^yS4)^=bH~W=_ zx0Sk%ZVZ~1o9yuX<_yj35)ar>V8<3kZ|NNTYu@|eKPpTXyqMi?X=;n-Bhi22V1G5V zIBa{DvZTe=iT@g$Rc#ZR3StBLFF0dTQ!0-5Agca^=I6Q9;RG9L2}J6Dn~z6_iT)wA zIQgekeST>1PGFbRGG)aUis5=ob<(k*cW8T6bE=6B=Mlh`^LtVgic*w_LVchQ{%byX zea7H@l|ioGJNAGFQ)pD?@ce@lkwWCCzS!Y;C1hIP`PC6xP<+|u%lL`k@DRi9NqI2P z(%oOqxj@pj{$*Fih~vHyG`m6a3F(T6R*QUOf>D|>A^!FNc+qRYPuuj!5p_mi)<^0u z6u_F%_dD@WB0xqtsI1s=+$8@1Os4>c$Gl3|o$Z}Hf0e5H+lR&g1|-pvLsk6SF;a-t z;%cJQ@JA75);Yh6ycT%MKqq_fXy0nWc8Su6H|S}D#E4=ynY2Hut3#3u}RpBY=ugjrN?h~Ck+zyvHsgUq- zgV(b)rbyyTneCh4^GfzwYTs8>P1`9cx%)a9$WB14(DD~7s5y|WR^!NnQYTMatUy2X zw`(W$JRb5vB?A=v(45Y_$^w5ClV&~08{&9e?K?0sl z**B{~2Nh@T`@^Z#KXfxKxEjZ;WIP-Z2x9Z#gwer}DSuHssuly2J=4_JH;LZ{h=}hu zbY!a=P)?x)lK0|XW&^DS41pjUW+HtzBFS9jVGr|_nUiyM=mrm+FAkg_B`@mEBj2BS z@*|oSCfN}mp;1>r9!o>dB!g4T-_VNSuVatTu3H)1m0^i-FY#s29aLYMT~u+>(x*}UM3czK)HRdAQAE<_jt5+zhKgE?_Z6V z#n#B32mUMW(yNF!rhnsY1TRJ?TrNFBpUBKY@Sgy8SRA!xL*Pn2e)ll8rt#?Y&23K@ z<6evgFvrhU$4i7#)zlF<-)vNmboP)blSRI}ILsNeW)jvVD_^lL5TAH38Ju#DeJ`@S zR_q`c(P}VLrtR7@Bbb)PH)I`sV3duc<2~`b(>|2HRae??)yhT51+xyj`Nr*QItu$4 zckP<&l{+P{sqghjrURv}Tnho51%XPEUoPY|H@HSl; z5Jd(|Dl`(TGfTlU-D89qI=Q?+?f!k6G7lNj4&XXF3YKBli@a~-gdlNEO%gXcDDz95 zgf^v~5zPmVAIU8i;_d@VlG^wgb5*mk@ntG}Co5r>aJC>fPoDVgdIx}~q8z#W94`b~ z=5%eW5eZwrYsdb!gt^K^G9bfI*66%i;A(?Q9s_)@ zjAP-OX^q04$MH^N&yUY)b2`K#@~Vc}TSXR(b_NNt&Dvc28w+7mf0F>k@R=6n_8Xtq zQE!4=2R>qmJ8z5}!z ziCkvGRx%2kMH3ul$}WzX&Rpr&L;+6(T{XB0!%I=5WR=t$6ojTY+Z{PVueXw*QEu?p z?R|G{clR#tC&~iDJefmOrU~%099qEZcB(439L#)B${vA4Zy`C!yplQ z_3BCdKGc9mQ|tVED^7uCBZABMEk5Q{z|#PV`hN?d0*HlJ>{uXDRG7|vdZGftRwKWG z@qWkRx7nLfi0!?zJl{|C)mQ&&-oE$~Sn*&A)RdTX_Le~Tv+!4QJ_lulXi(KSzv9$bfs z-~CS>+b<{n7smQ9J3uMbIW_+IogsfQ#{c%<9cP5_BPXrLf-WsDk%6440?ZYCSOzse z$x^^2Z#|80q{eM1lVPW)^>Qb+rI<3A=9tjfLpZO5zk+dCc05% zNds@u?%xaa6hx*(98Tt*)hjeDge`CoT`&>YY#w*EG5m1d_8?Q8=%$sW|m1c()REPFNyGjT|y9%iOKUYR;+KZjfH)m` z9Pih(^x<&E+{9i7AB(Yd(&i&xro@Xs)p6`n2ar8=E8A8z@;>^Bk^MnXx0^0_!J?~? zkCvR^^`jvkv^JXZ{ZC*TlHVkMv%RXjKf}^`JAwD@EwBf&7ROPl;nP^p)T7CwTw2;k zE(DEP`xz+1mPr)IU~W0*OMg2G*FP&&F&(UKfoC?#%3Kx+QpYnvl=%Jwa8@}AEl+UL z68SJ8Slerym_87)1jh1sSP^UcNPBBesbRqtmDI?yCou=svlOeMf|5eS5&E(qvYD(w zh@7@f7!`}`zzgRDTCNm!ku{r`DL7gq8tp|SEoHOeigNK;vS8`vH!yJpehJa~HFc#7 zZwZwjT%r_TvRdK#K*8}gqjI|eWglm~OlHRGtYP`e_O>YGl~-{2v#%f#Cs#%>V0bS+ zeqJ~1yz-Nx))qbN_1wbx*{#=`&9G|VA3D5c<(57Q%@t8l`|-Xlr0h@rr&d#-uXniI)O;smo4w@^P^>a|aK;qNo<3C{Wbd38v0y=(cdmF;kl`=%R+?h+Yc z7oD!|Xq`_sUtU4-67gg%c9M;|tAleNNPgJ7^ewZc6^$fvsUu@UyO@6v$Mmqa2{wT$ z2{LfV@C#~vp4X=6-fJI!5^f#~@@LUCi=3xfnUQ_u1Db-N@#YJB^mPRe?yj#s!~gZ{ z4z)cieCIRrwq(#M%p^*T?d!tf-s>#J6p`C}J=opRnB%VAGoAE-rH9;KPd$&i+O@a6 zZy$|?W&Rl)k=~jl6dYZ1Iq*u#kTYwRbIKuDZ%g7#0;~%V6J2+l?gT0(Cn;)-zGMPD zWFkwZRiUDMl(P|&^2BzAg68~$TlD2&0%%vsMr8t$fSbnQx$YkxOSTk+Nr2!CADLz9P7PtTtqvM9k z)eNak;=+{V22Ts?3faEtLN-$>BtLtj=n-y634X0BVYY7rAYwWyXTnvUf&0PddH3ujQ?Xh(36^&-uVT zqqayS^BhFAUjF6lKX~`4R_N_#lD+=P&z+R$hB&pgoVAE`_?9KM;(f3 zEInF86zZzGv2bm3k$BafPx{?P`THyV>cGzNrJ*fDQ3KYN1$c3B!i&6xyVAL%?b*7= zFFqib>Hp~PCa!-1dBU1GMpK&ZWJ{Ci^qOZ(|}waDPZ_-yOr_O=xQ+<3S;Ad5-gv~g8Vkj_jCiaLc{&a`- z?Q6c|7;)+pU;F#^q9(}%BZ(N^zk>qkdYyQclwFaEiPgD ze64&g(SZKSE(`uIod&Uu&~;KpW3gky>2zKbU`{^i;f{LCDlEozBPh zg_tB2I8@7)td_4c= z^2v(LOFZh(m(=0!CZ15r$dLSj6zEPQe~sS?T_fPu>b5rLE;flVfplt2V zCD)=D+x?eH9_RPW4mfJA@!7_9q&p;+&b)MVhM&x<*0=sXot;leMcVerOyMFDv&Fu8 zTOyN(+F%pW3B+;qgQSq03Tio7Jh{{3nT+s;yrJ~#8Qq=0_CeIA@7HsdWHuQJ~B0_qTmN1&u&+eFG&JEH= z^d;YID$P{MC2Pa;m)l6ANy&6+BU}35BDOsey|}-9O}H0YN`z{M4Q)=*BwGArbVvQ} ztgBc9gG5H&2(W7}eNfIkOSti^g6NcY{@F)$Blfqcs7FQ);1-??iHKyeWCK_LCIHAc zbwc_dU@|vpIHQLDC*63#J7UI6ihgw_6yOTv6IwO8)4mJUr-9|W@hw>V5w(TuFt8`f zGt%?hGQOJA6NLj1u`?G?Ulcc;3& zmRcOGk5Hi-ZsC_5mREbpE&Sy2+V9HSJrWoKE0z)slw#CZldE3tgFE1^rWGN*RFZZqt)DAJG5#bSmIDY6yI=nvISVRID> zx<#47%hIa~jLq@JviF+j4b4J#B(0|GbVBY9> z$=DDe?+?;62)Qh`?}dMl(s%w6t#lkvv(x|$ki%-k?MUQ_siu@N-F$^7+7;fvId_-F z{-wHEkwVNN1^hRNpv(t5lQ98tkeVg0p|%y z%sX+LUAHMa0ljAqr9bT0J~Wiu8RQx_jqNb=j$bhoG4V5*=fLfKFW#4}lXY6P+S<7_ zdcS&~DhKGfGd(gNuyM26Y8U8h;+Y$=D`CsitI;2*a13M@Aq@>Sha$VoCaV1{*~UyF znyzyuwze|UmZ9TX5`?nOn13TaPl>|=opZ()fvp#Q%s5ISw9;!1{6$;Gfp9O}a} zxarZxDL_H^I{)*SfezC-lG!xI9< zfA7EX)Cd_}yMGcDn8XWS-zkem%kb-A0m6{(>sKun*7Bfdvy(53E<0-Mt|5^|FtG0{ z2}pX^Gw%=ImeF^&@AGef9{pkT9seG~BRvX@2pL#J@po;JwOnawO|8{>Y;R()EY7q; zUd%TvX8%kov(&~l^>GXixh!bHX=0+|f2iQR%zMvIi;S&VUu@S7%-s@(nMvdJqs%mg z(E+)wdotxaCC^~|7qHs=G85#at$T{t5&;38(vQuj=ku84cQ^{l`tjk!YI+WDvX zAMW>_OYrv|O_29TS%d$OpWtZMpX5T51senp0k%SU4BC4?Xr|(-`TKO|y?DL+I+oY4 z8b$h^JrHRUYureWRvOlsm+?%* zN*K-R2JIHPl=YZ~1ZX`X`8t0j9aVp~Xg{_23U2D$Kw(DdCYe`?0e`A3tvlqN!)o|M zy#{hAY}0SC_{lMf<2^lN6rIo#)LNP?rl(H&M`m|dQt^?S6;EE6v9P7+V?e;a35dOm z?DzK-Y3Yej-3#N^)}GeSp)UdqRJ|sFL zt-T&bL#pPmYHh0JF2Q>^@(?j9&w+})uR zEneJtZ{FWIXYM`s|2>n*o;}b0?)9v-J}18tQmk|vunC0EwKeEgbepdBjOzb`(o$H% zdPd$Z`qqAEr-_nFSAZlWL=;1f0;s4+h54^4Cr=ee{@G~M%7=^oF z_|Qyb{kxaVrNQ#8u4N!Ywk`vA;7r2CO5;a$Da=>Fw-b`LrP*wcf%jb(4je9qtY>CbG2D$fKnZOiwN3T!fu=q=tRfg| z>-t4Y7yI+-{i^%tZ*a28Wo|8N&bN%Tc_VcdIA9>(s%pY{Op3{KJ2S_4l~QaIEB6~= zp+s3b5DT}RW7g5Pj;pS!BzIUNIeQyaPT&n-g6nRpv5K@;l`D-~1&(}DIH0>ut-k~K zSC&QuSnN}24rlh(QOtImF|SS1JtyHdF-7@|M5oDiqI?a%*WDA=|NA?N-&It9siXyg z8$INDVg_O*hIZn!7cstk(R!M(6X%87(LEv&PKTbClxRZH!S{wQ5(;#;Rp&(7EYNTh zZj~Y=chuqU%3=`tSH}sS&JtOdK)a4XBPiZkTY~aWV>52-uYZ(3iCN1P9?Q;NZ z6o0m+$w7x1cySUWDz=M64;kc4n~W(32lyaOc{cYmFh-1#TLaOq|AoOSY6n&URmU1< zbFxw*u(4- zhTN&%d+K`6E2*8+C0_#>+vGkrn9-R1+9}(yJeSGr%v;=f2U?D?_89uh=}XMtd~@$~ z(WbglCQfIFL@@c~3B`+wmPz^OHr33w{Q2}u@6R4>->;9Y+>iIPG%>q)G++;Z;|)Xd zOuHt*un~bPBypFoj8zg!9NWxucU___JACnVaW->p;b7c){-h&IcexIh4IRh(3^`Al zdS)qC_q5zxNse*I6vwWDZ$B@#UC=8&z(Qf0*GF@ooaeJ&Oc;tfK}aO*WsKcvmaOO- zQ#rSzcwfOPmL6u_8q1Bt$-V01$BK3zb5-!R;yyV#4vPu<)k_!W62ivmrUDj5X8uQQ z_TN@h6>v5=X1aKGwdBsI@INTQBT5YpAbQqhqm6gbWcenE|2ngEMado&%A7oN8Ur5q zJNFi?2Xdk;<8nr+mMOcR9So*+om^~|YkC#Azd|7n zrM5$E)+!Z@m(7WFKSv?$?<~zAr2fA+i)2l|Y{dVp`RROoMI&H|$%#6yV~%plX}hnv zAkd;}HOlI_7x%wV)0qZ+1*ZJ9jK4+gE$HdJ0>qHFvZ>*;x|bV41od<0{vxI?c-!w~ z!Fl!`q?LP~9D|&m#-ZFZJJyb;SaLkq7zg_Ep>Rf`IjEC|>;`v>9=NkEpk)4a9_OG7 z`wD}_FJi_L#o130H^erIx4X%4Ck_|QHO^@#Q^*4J*7ilfs|Wzvb+z~Q{~wc-u;v|x^ri%AQI`Wj?Qy@^ zZ+E-e!NSg#PlG(2duW&0H!m5Lhw@2H%eQL(?*x+)g6Qp|;QdHm1eEtlab;;N3pn{T zcIICH&w=qZEJ7s9#GcDhK%EoUaSH}EuqSYfML?aHkq^L^rjb>*P9*NNP9vw!PQhA! zm^$gje_pq^Y`kB%Xr(iA`Ro)Sj|5a(FTfeyWCz^)lBX;!Z7wSTPVm`FVA0bItSI?} zF7v2#0LU4aPHSm-d1Ne@sR#o~aUAd`&uZn=6gn7RIr-K5H6kcxD;?!Lz!L(m7B?EI zWI`7liTt$im9GM5nQLn;vzaSj zS67u{tjdgXmfwfUf1A(#Gt5Xb+t9Ri_QAQ%iDA)tX13t7y~u=^DbAmG=EYEuJ;&kc zq_J+0mdS6Tr_}!6l61*;y5P7lV7 zsY9XFXoG1l=d6IF&R^w!9Mt*bU>27_-YW7iHRaex7`}PkZzLNe!{e97B|SzQ8b3S6+g3LzyLH<;+}a`%LM2g$oj zy!&mkqeWy~dms`6?ZdVRO6!RVE0!&kX$NutIWGIQyFki6?Sm@fu?k-bT|q>LeQBm| z5SVKMbN$q5pIobV_><2GCuK${Fw`iRkXBg5hF#Lu#{ul*jWNEvUAn0iTj60@9w*}C zA%{7kbv}sXykflf0GB$v1aRcAkJX{}xXpd~)x^}7>p-^nQLMe<=~m%nu}oC-@Wiad zJ*T6&C12s|45RWtw`{NhxpG?m;=#v(nsP%lXySWIO$a%jNX&(tbJj%_A&AH496C7%55 z4Yu4SyDAz_%o;WGN4k&*TRTm$R7Jb6+%SGjtXGcdwPjjS z(Q=APBPB&84lof#qR>oAjFeJRwnwIw!SST|kULM#8pKV;amauX1?mUbf6&HOiTxc( z5yUKD4tgE03jFMj@fyyZo~5@b$NeksrRn{en+^jBG`8V=yPSmRrHmdIHmKGJ1y>~C zqlys$+r0z{`!77fn_>o?M{Wk!Oj|ST3NSQo;9EpV=3cbX_nO!LL8;KZ zuz-rggroDnEz@2N02q(-|wdBM;iDYQ7L{gP^8M- zC~bg6tM$05i4nF+M3R30RU~3SVnBYO3Ps9*!wrE^(}i?q<}n#jN$oTvePB?TVvRgE za$R~oaF}fP5PDCypy=Rr@fL>$8LE4B(r`ZHhJMJ|Buv9YiTLXm-q7riva)s-QsiMc zi|i3nTvw=>(Il`dQ6-tVxQ42WbHZxM0DOIfQBMU``A`Qd!>Q;#RSHFvUqApb$>WqoYb zCb9MCi$Z^g>wnn75lLx~eY#(HXJOEMF4|_S‹o%ge3Y9SRc*CaIT6z-6HRhePK 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%0A8UFwp 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

    dx6u0c;X-Wi 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�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%0A463%w-|N zYKUp5L7XCU=~#o9FzovMSc*O>1T;;}s?U|aD9^AJ=6nZyI~ANE5G&`6cdK>XpE2!x zcyi93{ISYaxAKB388yOWF&{PQnX-`SOUu5uc@j1CIE%C&MI1~xt~G>5O%|R5!IaA_ zs&k;0q=j{TiVLL8g+seEeZd-Fn?X^}a%uBjH@JX0>`*~IHT1UH+nPL1>v@AZ0S6AU zE*jVT8-ReJrUtHk;8GGBxYzKDl@oV2u)V%pcdp>hLSK<^hEDJ)QmRP=$yE~>!%RYU z(@&zTw>~_K^B`J553MMELzux~Ye3|!$nJ4e@E-@5nA8JB55YEz6X`Ra$@uk&7|(`N z%)1}>%I9|+zLO8Eda{6xZjuRI%Dk_U+zHV8u5G7*StxqC!sAyo@_|$qxb)Y5v|kJ5 z!XNt<7=&-`a-g~U!IsgFf~ zi0Y2KYgJOq++F{az{7M{y{AcB_;tw#;$M77%T(*A}_ zp9U8cDunQBZvkMGds){S)bcx6@fJuVQv;=8*sme-!Kw0naRbs1^1+N5^FgFwgM552 zxG53rhQA^5=v(fVhr48ZVZIvDiI1ECYY0*Ugc}WDPnH1s4{bg4f!~mn6DB7VGBR{) zCPt?1^9e}KEC1l*ce0sxe$%lpH^rULDB7;0y)Cn`9OHepF~NQo-z(zFG{p8keRWK(0_bw^&q4ITW3luTq9Uq%1g+nOQJxmK)CO|Cg74}Cnc zVMkkj+MN7>&$%@kn-2U~N2O{;vqN@H??l=SW7tDLzDSBtK~wI6_mU{duNt5?{CcH8 z!$HWpZlNgH=a~B9?tSK<%-Z`^p2sR2{~O}km#bfK`3NX0^+^G~99StSgB_FVJWV!p zG*Z(FRoV@;W%j)Lwj1t8GqUh)5;|0ir!DWc9E_3qdHn3e8=>17eC*B4_#3j?N|U(o z`PQ~Kdm<8Kkj&Wk7SY4rC!>-Cx>uDTTc0;gMXp^xj*M37NwR45Hp@5?Y$ScCqpkl9 ziFgrz2uz9_7925lF}aj}<*`fr_x~xNy54i&-1Sak?q||2 zVC{H^$?{x==5tJ&?s+VJrJ;Tr>UqHc=Y|+oUKZX?&V7k_9pL?(ZspRck~SfMMdO}- z#%A7yCx_3wE8m@9om{2pfQnhWK=zE_IESqB5lbIwx!QY9Oy)$_@5q0gzfP_i6(6kA zBiEXbZ17ZQzH~ijQE8oDsaw>_RCAZ*waVKK-b=-h=rcFllfyJ(GTe>pew$n#kBA-} z=oDNsU+TGgVq!RP4h0A-x^}}e-$B&G1ZesG}YV`$m zWY^7*?n|sUdm`L-skpijqQut$6%K62D!}MBx$RhAi>kMBy_(+-Uc7iwUvRz<^L;6u znu{u&9oKT9uyiqm_Nmy*C(4pvqq2$C&b&3=DZrIBk$aCXJfoNx-(j(4maK`*VJ~56fk5|e=%Z~6wOfd)* zkMZAIr%`gU%22~oqhG9IeIsd1?i37gU4bt$bzV&Bw%S&oO_{0@z&a5=IwT8!vxH)o zzPviA#g6`3#ApD0Avza~E=S`yRCkV_B3|YJ)p6a&HK-8p@3*cx_eW^U{<CRScJ&(c2#x=Tn*It5t2$Z9eB9Jw2+_+n|UgXK3t~f+{ z(Le#H3c7ARE#q*F$I^|EW6n77Ork7orSA!KpmBH&E+Gi5l6d9&lxfbR` za+z%#CmAnEWmzyFO=DZ;ea-Ir$a8o`!dJRrptikbYCh~GZ(MJI%;sZLse=mW#Mu~h z-A9VaET5+n4;_o~zZm{Htyf~zqE@oqH?LGQ8>JEmxe@E~Ly7t@sqzq2GfB4kUP%!u zlEEtOmQqEpAWkn7;(>SQ8I`BwdAHWl+I3#c-skFp4C82_{=L_z_c1S?Tq{!aDgDr3 zFAZE~AN=Y@ak1-jCT9xd28Q-~7QsK>Vd=E_PGLDs=_oYux5kV!Mjb7<_*16`xil+t zrtfx4_s2J`QkRg{+7E+YH$W7}oA#epeSgvIdMKUp>|2Ny<#W`=&^xq#RX&k%{`2NF zDp=}fE7NZ%{9_uHRlh8kQ);9`>K#2#FJ}TEJ-TXI*8UgHxi0Xj6Jv6Galrv{J4&0+ zm@r+HF#J7|*^smr#E2_C6iKI*RexM?k}mpK9_50W&o+?rz$4ewLRlEZNk3bL!oQ3a z$g#d@1k6{SNGFHIH{bZ7W8Ss0{q|g%W5(#E-Jd@hGnAYZ8Kh)itlU(giA)@OSGg;Q zdc^asEqHZDKr-yz%@Zi?@e>awV7lnT`%z@e$Jf1r;OPDPHzmaCB9!7h3u7 zad3oBWXhjahg(Bw^QAT50{OmLa9#>67|xxUC%;?^&XXUb3Fn1sB+O*k_`{I_oBW3bchFhIaM{LiC^IX@8v z7e^?(OS}H(<8^2TfpGj!0Z24kezGB40&%aCE#fR#E)U87lxXJ5?=pZ(-Le5S z1OgTKPbn%b9J4xC{)R4`Ie+<2)=|2+&wgzAY=&_5{4OIfLDB%%TP>De`PXZ0bY^K4?u(ZeA#^6y1_;mRsLhQ{Lf?7 z5?3+JmfvLp7s{tG1E1!M1DGJ2Z)FDFR>|1cYe@xxV89pZ-)~dC3@T^C2|YQJ|KlQ@ z15qSDwVD7*MuT?Hzf1Q2^-swnGf?tg>}J|cu%+!;|5GyQ>VHWx=OawP+{MFGW|u&n zdH+jN!TX;&Q_Vr0g02FI`k)bZ1cyLG{%7qVwm1Jvl0N_IpWHLhTlqntPBW(el$;6p zr=-Rooe6gCOX{Fb82H%!y+)}a|IEGB6wX0)0-Ki0e`5;gq<}{J^9t3Ur}Ck&q;v$- z;r+j!%E6s~O4|OBgeDep+JjFe>VMT068GPdxWy6b{F;k!W~yc5&dd37e{#%A{_m^# z*TJ&nmzjf2=$?k-BMaw$GzYuP6AL&mrSn}#KG6akxIUZ1#VDpb@?jQmT?*Xud{Ya! zxU18iNOrB%8OWdie;+oc`~P9o-n{1N<9@;Crn}cQ1zFz!um2n-|I-luR}(aDp2_F1 zgp1^ZrWrHmztSzX&irjI2LxUV$``PND^kLLoXNMdgp2Y2ZMi`qkTGy1`(suA>sSRv zra)x||FSM15axef2hVbL&p

    t;UD9$ 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