#base robot_giant.pop #base robot_standard.pop #base robot_gatebot.pop population { Advanced 1 StartingCurrency 1500 CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 6 Templates { T_TFBot_Pyro_Phlog { ClassIcon pyro_phlog Name Pyro Class Pyro Skill Expert WeaponRestrictions PrimaryOnly Attributes SpawnWithFullCharge Attributes DisableDodge Item "the phlogistinator" Item "ghostly gibus" ItemAttributes { ItemName "the phlogistinator" "airblast disabled" 0 } CharacterAttributes { "bombinomicon effect on death" 1 } } T_TFBot_Giant_Pyro_Reflector { Classicon pyro_reflect_daan Health 3000 Name "Giant Reflector Pyro" Class Pyro Skill Expert WeaponRestrictions PrimaryOnly Attributes DisableDodge Attributes MiniBoss Item "the degreaser" Item "traffic cone" ItemAttributes { ItemName "the degreaser" "deflection size multiplier" 1.1 "mult airblast refire time" .1 "minicrits become crits" 1 "weapon burn time reduced" .1 "weapon burn dmg reduced" .5 "airblast pushback scale" 3 "airblast vertical pushback scale" 4 } CharacterAttributes { "move speed bonus" .5 "override footstep sound set" 6 "damage force reduction" .2 "airblast vulnerability multiplier" .1 "airblast vertical vulnerability multiplier" .5 } } T_TFBot_Heavy_Deflector_Regen { ClassIcon heavy_deflector_healonkill Name "Deflector Heavy" Class Heavy Skill Hard WeaponRestrictions PrimaryOnly Item "deflector" Item "tough guy's toque" ItemAttributes { ItemName "deflector" "attack projectiles" 1 } CharacterAttributes { "health regen" 50 } } T_TFBot_Giant_Medic_Uber { ClassIcon medic_uber Health 4500 Name "Giant Uber Medic" Class Medic WeaponRestrictions SecondaryOnly Attributes SpawnWithFullCharge Attributes DisableDodge Attributes IgnoreEnemies Attributes MiniBoss CharacterAttributes { "move speed bonus" .5 "damage force reduction" .2 "airblast vulnerability multiplier" .1 "airblast vertical vulnerability multiplier" .3 "heal rate bonus" 200 "uber duration bonus" -2 "ubercharge rate bonus" 7 } } T_TFBot_Giant_Medic_Uber_Slow_Recharge { ClassIcon medic_uber Health 4500 Name "Giant SlowUber Medic" Class Medic WeaponRestrictions SecondaryOnly Attributes SpawnWithFullCharge Attributes DisableDodge Attributes IgnoreEnemies Attributes MiniBoss CharacterAttributes { "move speed bonus" .5 "damage force reduction" .2 "airblast vulnerability multiplier" .1 "airblast vertical vulnerability multiplier" .3 "heal rate bonus" 200 "uber duration bonus" -2 "ubercharge rate bonus" 1 } } T_TFBot_Giant_Sniper_Huntsman { ClassIcon sniper_bow Health 2200 Name "Giant Bowman" Class Sniper Skill Expert WeaponRestrictions PrimaryOnly Attributes MiniBoss Attributes DisableDodge Item "the huntsman" CharacterAttributes { "move speed bonus" .7 "override footstep sound set" 4 "damage force reduction" .5 "airblast vulnerability multiplier" .2 "airblast vertical vulnerability multiplier" .4 "head scale" .85 "damage bonus" 2 } } T_TFBot_Giant_Sniper_Huntsman_Spammer { ClassIcon sniper_bow_multi Health 2200 Name "Giant Rapid Fire Bowman" Class Sniper Skill Expert WeaponRestrictions PrimaryOnly Attributes MiniBoss Attributes DisableDodge Item "the huntsman" CharacterAttributes { "move speed bonus" .7 "override footstep sound set" 4 "damage force reduction" .5 "airblast vulnerability multiplier" .2 "airblast vertical vulnerability multiplier" .4 "head scale" .85 "fire rate bonus" .2 } } } Mission { Objective DestroySentries Where spawnbot BeginAtWave 1 RunForThisManyWaves 7 InitialCooldown 5 CooldownTime 40 DesiredCount 1 TFBot { Template T_TFBot_SentryBuster Attributes DisableDodge Attributes IgnoreEnemies } } Mission { Objective Sniper Where spawnbot BeginAtWave 3 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 45 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Mission { Objective Spy Where spawnbot BeginAtWave 3 RunForThisManyWaves 1 InitialCooldown 60 CooldownTime 30 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission { Objective Spy Where spawnbot BeginAtWave 4 RunForThisManyWaves 1 InitialCooldown 3 CooldownTime 85 DesiredCount 4 TFBot { Template T_TFBot_Spy } } Mission { Objective Engineer Where spawnbot BeginAtWave 4 RunForThisManyWaves 1 InitialCooldown 10 CooldownTime 60 DesiredCount 7 TFBot { Template T_TFBot_Engineer_Sentry_Battle } } Mission { Objective Engineer Where spawnbot BeginAtWave 5 RunForThisManyWaves 1 InitialCooldown 15 CooldownTime 55 DesiredCount 2 TFBot { Template T_TFBot_Engineer_Sentry_Battle } } Mission { Objective Spy Where spawnbot BeginAtWave 7 RunForThisManyWaves 1 InitialCooldown 3 CooldownTime 80 DesiredCount 5 TFBot { Template T_TFBot_Spy } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { Name 1w1 WaitBetweenSpawns 2 WaitBeforeStarting 1 SpawnCount 1 MaxActive 8 TotalCount 22 TotalCurrency 22 Where spawnbot TFBot { Template T_TFBot_Pyro_Flaregun } } WaveSpawn { WaitBetweenSpawns 12 WaitBeforeStarting 2 SpawnCount 1 MaxActive 12 TotalCount 12 TotalCurrency 100 Where spawnbot TFBot { ClassIcon sniper_jarate WeaponRestrictions SecondaryOnly Skill Normal Name "Jarate Sniper" Class Sniper Attributes AlwaysFireWeapon Item "jarate" Item "the anger" CharacterAttributes { "effect bar recharge rate increased" .01 "fire rate penalty" 2 } } } WaveSpawn { Name 1w1 WaitBetweenSpawns 7 SpawnCount 1 MaxActive 1 TotalCount 2 TotalCurrency 100 Where spawnbot TFBot { Template T_TFBot_Giant_Pyro_Reflector } } WaveSpawn { WaitBetweenSpawns 15 WaitBeforeStarting 0 SpawnCount 1 MaxActive 2 TotalCount 5 TotalCurrency 400 Where spawnbot TFBot { Template T_TFBot_Giant_DemoMan_PrinceTavish } } WaveSpawn { Name 1w1 WaitBetweenSpawns 10 WaitBeforeStarting 0 SpawnCount 2 MaxActive 6 TotalCount 16 TotalCurrency 100 Where spawnbot TFBot { Template T_TFBot_Demoman } } WaveSpawn { Name 1w2 WaitForAllDead 1w1 WaitBetweenSpawns 1 WaitBeforeStarting 3 SpawnCount 2 MaxActive 18 TotalCount 30 TotalCurrency 28 Where spawnbot TFBot { Name "Bonk Scout" Template T_TFBot_Scout_Bonk Attributes AlwaysCrit Item "festive bat 2011" } } WaveSpawn { Name 1w3 WaitForAllDead 1w2 WaitBetweenSpawns 4 WaitBeforeStarting 3 SpawnCount 4 MaxActive 8 TotalCount 16 TotalCurrency 100 Where spawnbot TFBot { ClassIcon soldier Skill Normal Name Soldier Class Soldier } } WaveSpawn { Name 1w3 WaitForAllDead 1w2 WaitBetweenSpawns 1 SpawnCount 2 MaxActive 14 TotalCount 40 TotalCurrency 50 Where spawnbot TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } } WaveSpawn { WaitForAllSpawned 1w3 WaitBeforeStarting 5 SpawnCount 2 MaxActive 2 TotalCount 2 TotalCurrency 200 Where spawnbot Squad { TFBot { Template T_TFBot_Giant_Scout_Baseball_Armored } TFBot { Template T_TFBot_Giant_Medic_Regen } } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { Name 2w1 WaitBetweenSpawns 1 WaitBeforeStarting 0 SpawnCount 2 MaxActive 12 TotalCount 40 TotalCurrency 50 Where spawnbot TFBot { Name "Bat Scout" Template T_TFBot_Scout_Melee } } WaveSpawn { Name 2w1 WaitBetweenSpawns 2 WaitBeforeStarting 3 SpawnCount 1 MaxActive 4 TotalCount 12 TotalCurrency 120 Where spawnbot TFBot { ClassIcon medic WeaponRestrictions PrimaryOnly Health 150 Skill Normal Name "Regen Battle Medic" Class Medic ItemAttributes { ItemName tf_weapon_syringegun_medic "health regen" 25 } Item "berlin brain bowl" Item "bunnyhopper's ballistics vest" } } WaveSpawn { WaitBetweenSpawns 15 WaitBeforeStarting 3 SpawnCount 2 MaxActive 3 TotalCount 12 TotalCurrency 12 Where spawnbot TFBot { ClassIcon sniper_jarate WeaponRestrictions SecondaryOnly Health 3000 Skill Normal Name "Giant Jarate Sniper" Class Sniper Attributes MiniBoss Attributes AlwaysFireWeapon Item "jarate" Item "the anger" CharacterAttributes { "move speed bonus" .5 "override footstep sound set" 6 "damage force reduction" .2 "airblast vulnerability multiplier" .1 "airblast vertical vulnerability multiplier" .5 "effect bar recharge rate increased" .01 "fire rate penalty" 2 } } } WaveSpawn { Name 2w1 WaitBetweenSpawns 3 WaitBeforeStarting 3 SpawnCount 2 MaxActive 6 TotalCount 12 TotalCurrency 10 Where spawnbot TFBot { Template T_TFBot_Pyro_Phlog } } WaveSpawn { WaitBetweenSpawns 7 WaitBeforeStarting 1 SpawnCount 2 MaxActive 5 TotalCount 30 TotalCurrency 48 Where spawnbot TFBot { ClassIcon engineer WeaponRestrictions SecondaryOnly Skill Normal Name "Short Circuit" Class Engineer Item "the short circuit" Item "the brainiac hairpiece" Item "the brainiac goggles" } } WaveSpawn { WaitForAllDead 2w1 WaitBetweenSpawns 1 WaitBeforeStarting 1 SpawnCount 1 MaxActive 8 TotalCount 24 TotalCurrency 230 Where spawnbot TFBot { Template T_TFBot_Scout_Sandman Attributes AlwaysCrit } } WaveSpawn { WaitForAllDead 2w1 WaitBetweenSpawns 14 WaitBeforeStarting 5 SpawnCount 1 MaxActive 1 TotalCount 3 TotalCurrency 15 Where spawnbot TFBot { Template T_TFBot_Giant_Heavyweapons } } WaveSpawn { WaitForAllDead 2w1 WaitBetweenSpawns 40 WaitBeforeStarting 3 SpawnCount 1 MaxActive 2 TotalCount 2 TotalCurrency 135 Where spawnbot Tank { Health 15000 Name Tank Speed 75 OnKilledOutput { Action Trigger Target boss_dead_relay } OnBombDroppedOutput { Action Trigger Target boss_deploy_relay } } } WaveSpawn { WaitForAllDead 2w1 WaitBetweenSpawns 10 WaitBeforeStarting 0 SpawnCount 1 MaxActive 2 TotalCount 4 TotalCurrency 380 Where spawnbot TFBot { Template T_TFBot_Giant_Soldier_Crit } } WaveSpawn { WaitForAllDead 2w1 WaitBetweenSpawns 5 WaitBeforeStarting 6 TotalCount 10 MaxActive 7 SpawnCount 3 TotalCurrency 0 Support 1 Where spawnbot TFBot { Template T_TFBot_Demoman_Knight } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { Name 3w1 WaitBetweenSpawns 2 WaitBeforeStarting 0 SpawnCount 2 MaxActive 30 TotalCount 30 TotalCurrency 300 Where spawnbot TFBot { Template T_TFBot_Pyro } } WaveSpawn { Name 3w1 WaitBetweenSpawns 6 WaitBeforeStarting 4 SpawnCount 2 MaxActive 8 TotalCount 18 TotalCurrency 18 Where spawnbot TFBot { ClassIcon scout_shortstop Skill Hard Name "ShortStop Scout" Class Scout Item "the shortstop" } } WaveSpawn { Name 3w1 WaitBetweenSpawns 3 WaitBeforeStarting 1 SpawnCount 4 MaxActive 7 TotalCount 20 TotalCurrency 21 Where spawnbot TFBot { Template T_TFBot_Heavy_Deflector_Regen } } WaveSpawn { Name 3w2 WaitForAllDead 3w1 WaitBetweenSpawns 22 WaitBeforeStarting 4 SpawnCount 3 MaxActive 3 TotalCount 6 TotalCurrency 60 Where spawnbot Squad { TFBot { Classicon soldier_banner_trio Template T_TFBot_Giant_Soldier_Extended_Buff_Banner } TFBot { Classicon soldier_banner_trio Template T_TFBot_Giant_Soldier_Extended_Concheror } TFBot { Classicon soldier_banner_trio Template T_TFBot_Giant_Soldier_Extended_Battalion } } } WaveSpawn { Name 3w2 WaitForAllDead 3w1 WaitBetweenSpawns 7 WaitBeforeStarting 2 SpawnCount 2 MaxActive 5 TotalCount 12 TotalCurrency 391 Where spawnbot TFBot { Health 1000 Name "Elite Steel Gauntlet" Template T_TFBot_Heavy_IronFist_Airblast Item "war head" Item "batter's bracers" } } WaveSpawn { Name 3w2 WaitForAllDead 3w1 WaitBetweenSpawns 15 WaitBeforeStarting 5 SpawnCount 2 MaxActive 4 TotalCount 8 TotalCurrency 100 Where spawnbot Squad { TFBot { Template T_TFBot_Giant_Soldier_RocketPush } TFBot { Template T_TFBot_Medic_SlowRecharge } } } WaveSpawn { WaitForAllSpawned 3w2 TotalCount 4 TotalCurrency 60 Where spawnbot TFBot { Template T_TFBot_Giant_Scout_Fast } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { WaitBetweenSpawns 35 WaitBeforeStarting 0 SpawnCount 1 MaxActive 2 TotalCount 2 TotalCurrency 600 Where spawnbot TFBot { Health 30000 Template T_TFBot_Chief_Soldier_RocketPush } } WaveSpawn { WaitBetweenSpawns 4 WaitBeforeStarting 2 SpawnCount 5 MaxActive 12 TotalCount 50 TotalCurrency 100 Where spawnbot TFBot { ClassIcon sniper_jarate WeaponRestrictions SecondaryOnly Skill Normal Name "Jarate Sniper" Class Sniper Attributes AlwaysFireWeapon Item "jarate" Item "the anger" CharacterAttributes { "effect bar recharge rate increased" .01 "fire rate penalty" 2 } } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { Name 5w1 WaitBetweenSpawns 15 SpawnCount 1 MaxActive 2 TotalCount 4 TotalCurrency 40 Where spawnbot TFBot { Template T_TFBot_Giant_Heavyweapons_Deflector } } WaveSpawn { Name 5w1 WaitBeforeStarting 28 SpawnCount 3 MaxActive 3 TotalCount 3 TotalCurrency 150 Where spawnbot Squad { TFBot { Template T_TFBot_Giant_Sniper_Huntsman_Spammer } TFBot { Template T_TFBot_Giant_Medic_Uber } TFBot { Template T_TFBot_Giant_Medic_Uber } } } WaveSpawn { Name 5w1 WaitBetweenSpawns 1 WaitBeforeStarting 1 SpawnCount 1 MaxActive 10 TotalCount 40 TotalCurrency 35 Where spawnbot TFBot { Name "Jumping Sandman Scout" Template T_TFBot_Scout_Jumping_Sandman } } WaveSpawn { Name 5w2 WaitForAllDead 5w1 WaitBetweenSpawns 0 WaitBeforeStarting 0 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 200 Where spawnbot TFBot { Name "Stupid Soldier" Template T_TFBot_Giant_Soldier Item "rocket jumper" Item "ghostly gibus" Item "duel medal bronze" } } WaveSpawn { Name 5w2 WaitForAllDead 5w1 WaitBetweenSpawns 3 WaitBeforeStarting 4 SpawnCount 1 MaxActive 25 TotalCount 25 TotalCurrency 250 Where spawnbot Tank { Health 3000 Name Tank Speed 75 OnKilledOutput { Action Trigger Target boss_dead_relay } OnBombDroppedOutput { Action Trigger Target boss_deploy_relay } } } WaveSpawn { WaitForAllDead 5w1 WaitBetweenSpawns 2 WaitBeforeStarting 2 SpawnCount 2 MaxActive 12 TotalCount 30 TotalCurrency 125 Where spawnbot TFBot { Template T_TFBot_Demoman } } WaveSpawn { WaitForAllDead 5w1 WaitBetweenSpawns 5 SpawnCount 2 MaxActive 4 TotalCount 10 Support 1 Where spawnbot TFBot { ClassIcon scout Skill Normal Name Scout Class Scout } } WaveSpawn { WaitForAllDead 5w1 WaitBetweenSpawns 16 WaitBeforeStarting 5 SpawnCount 6 MaxActive 6 TotalCount 10 Support 1 Where spawnbot TFBot { Template T_TFBot_Pyro_Flaregun Skill Hard } } WaveSpawn { WaitForAllDead 5w1 WaitBetweenSpawns 12 WaitBeforeStarting 5 SpawnCount 2 MaxActive 4 TotalCount 10 Support 1 Where spawnbot TFBot { Template T_TFBot_Soldier_RocketShotgun } } WaveSpawn { WaitForAllDead 5w1 WaitBetweenSpawns 10 WaitBeforeStarting 10 SpawnCount 5 MaxActive 10 TotalCount 10 Support 1 Where spawnbot TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { WaitBetweenSpawns 0 WaitBeforeStarting 0 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 250 Where spawnbot Tank { Health 74000 Name Tank Speed 25 Skin 1 OnKilledOutput { Action Trigger Target boss_dead_relay } OnBombDroppedOutput { Action Trigger Target boss_deploy_relay } } } WaveSpawn { Name 6w1 WaitBetweenSpawns 8 WaitBeforeStarting 0 SpawnCount 1 MaxActive 2 TotalCount 5 TotalCurrency 50 Where spawnbot TFBot { Template T_TFBot_Giant_Pyro_Reflector } } WaveSpawn { Name 6w1 WaitBetweenSpawns 5 WaitBeforeStarting 0 SpawnCount 2 MaxActive 2 TotalCount 12 TotalCurrency 120 Where spawnbot TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { Name 6w1 WaitBetweenSpawns 20 WaitBeforeStarting 25 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 90 Where spawnbot TFBot { Health 12000 Name "Mini Chief Tavish" Template T_TFBot_Giant_DemoMan_PrinceTavish Attributes UseBossHealthBar } } WaveSpawn { Name 6w1 WaitBetweenSpawns 12 WaitBeforeStarting 5 SpawnCount 2 MaxActive 4 TotalCount 10 TotalCurrency 140 Where spawnbot Squad { TFBot { Name "Giant Deflector Push Heavy" Template T_TFBot_Giant_Heavyweapons_Deflector ItemAttributes { ItemName "deflector" "apply z velocity on damage" 180 "apply look velocity on damage" 200 } Item "dead of night" } TFBot { Template T_TFBot_Giant_Boxing_Heavy } } } WaveSpawn { Name 6w2 WaitForAllDead 6w1 WaitBetweenSpawns 0 WaitBeforeStarting 0 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 90 Where spawnbot TFBot { Health 20000 Name "Mini Captain Punch" Template T_TFBot_Chief_Gauntlet } } WaveSpawn { Name 6w2 WaitForAllDead 6w1 WaitBetweenSpawns 18 WaitBeforeStarting 2 SpawnCount 2 MaxActive 4 TotalCount 6 TotalCurrency 60 Where spawnbot Squad { TFBot { Template T_TFBot_Giant_Sniper_Huntsman } TFBot { Template T_TFBot_Giant_Medic_Uber_Slow_Recharge } } } WaveSpawn { Name 6w2 WaitForAllDead 6w1 WaitBetweenSpawns 11 WaitBeforeStarting 6 SpawnCount 2 MaxActive 3 TotalCount 4 TotalCurrency 40 Where spawnbot Squad { TFBot { ClassIcon engineer WeaponRestrictions SecondaryOnly Health 1600 Skill Expert Name "Giant Short Circuit Engineer" Class Engineer Attributes MiniBoss Item "the short circuit" Item "the brainiac hairpiece" Item "the brainiac goggles" CharacterAttributes { "move speed bonus" .6 "override footstep sound set" 4 "damage force reduction" .5 "airblast vulnerability multiplier" .1 "airblast vertical vulnerability multiplier" .3 "head scale" .85 "damage bonus" 5 } } TFBot { Template T_TFBot_Giant_Medic_Regen } } } WaveSpawn { WaitForAllDead 6w2 WaitBetweenSpawns 5 WaitBeforeStarting 5 SpawnCount 1 MaxActive 4 TotalCount 8 TotalCurrency 160 Where spawnbot TFBot { Template T_TFBot_Giant_Soldier_Spammer } } WaveSpawn { WaitForAllDead 6w2 WaitBeforeStarting 25 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 200 Where spawnbot TFBot { Health 30000 Template T_TFBot_Chief_Demo_Atomic } } } Wave { Checkpoint Yes WaitWhenDone 65 StartWaveOutput { Action Trigger Target wave_start_relay } DoneOutput { Action Trigger Target wave_finished_relay } WaveSpawn { WaitBetweenSpawns 0 WaitBeforeStarting 0 SpawnCount 1 MaxActive 1 TotalCount 1 TotalCurrency 1337 Where spawnbot TFBot { Classicon heavy_deflector_healonkill Health 75000 Name "The Complex Overlord" Template T_TFBot_Giant_Heavyweapons_Deflector Attributes AlwaysCrit Attributes UseBossHealthBar ItemAttributes { ItemName "blood botkiller minigun mk.i" "health regen" 250 } Item "blood botkiller minigun mk.i" Item "voodoo juju" Item "large luchadore" } } WaveSpawn { WaitBetweenSpawns 8 WaitBeforeStarting 5 SpawnCount 3 MaxActive 15 TotalCurrency 0 Support 1 Where spawnbot TFBot { ClassIcon medic WeaponRestrictions PrimaryOnly Skill Normal Name "Regen CritBoost Medic" Class Medic Attributes "AlwaysFireWeapon" ItemAttributes { ItemName tf_weapon_syringegun_medic "critboost on kill" 5 "health regen" 25 } Item "bunnyhopper's ballistics vest" Item "berlin brain bowl" } } } }