*` Ju |):8,u)'Fv,#`Od +"TO&F!Ђa&2ذ O~ϬJ6 ?tπDCs %hB 1AF.(zBvPX橹2-BNoneZ!B3B64233488A92D56A9598805380640FjC{gl))ڨj`;OILZXK++UE4+Release-4.26XK++UE4+Release-4.26i' :/Game/NiagaraAudioVisualization/Effects/NS_DansingSpritesk@/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_ColorScript40C/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_SetAudioVolumeRC/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_SpectrumScriptWg+N/Game/NiagaraAudioVisualization/Effects/Scripts/NMS_SpritesSizeByVAudioVolumeJq-/Niagara/DefaultAssets/DefaultSpriteMaterialR-//Niagara/DynamicInputs/Multiply/Multiply_FloatS,/Niagara/Enums/ENiagara_EmitterStateOptions -/Niagara/Enums/ENiagara_InfiniteLoopDurationE'/Niagara/Enums/ENiagaraCoordinateSpace(/Niagara/Enums/ENiagaraCurlNoiseQualitya,/Niagara/Enums/ENiagaraEmitterLifeCycleModeo6/Niagara/Enums/ENiagaraEmitterScalabilityMode_Limitedy$/Niagara/Enums/ENiagaraInactiveMode&/Niagara/Enums/ENiagaraRandomnessModeen*/Niagara/Enums/ENiagaraSystemInactiveMode/b-/Niagara/Enums/ENiagaraTorusDistributionModeh!/Niagara/Enums/ENiagaraTorusModec0{1/Niagara/Functions/Localspace/SimulationPositionx&/Niagara/Modules/Emitter/EmitterStateka#/Niagara/Modules/Emitter/SpawnRatelb0/Niagara/Modules/Solvers/SolveForcesAndVelocitydet9/Niagara/Modules/Spawn/Initialization/InitializeParticle"o./Niagara/Modules/Spawn/Location/TorusLocationv^֥$/Niagara/Modules/System/SystemStateH!./Niagara/Modules/Update/Forces/CurlNoiseForce!L$/Niagara/Modules/Update/Forces/Drag|U`//Niagara/Modules/Update/Lifetime/ParticleStateɾ&/Script/CoreUObjectI->/Script/Engine@I/Script/NiagaraGZ`/Script/NiagaraEditorpo!32D193AA4737D84CA6FB5F86F26899750eہAcceleration LimitnBLAdd(AdditionalDefinesAdvancedPinDisplay~AgecAgeAdvancement?Align Torus With AxisA/9Alive- AmplitudeArrayPropertyIiAssetImportDataQT AttributesAudio Oscilloscope.Audio Oscilloscope001Audio Oscilloscope002fZAudio Spectrum%Audio_OscilloscopeAudio_Spectrume5^AudioSpectrumqIm AudioVolume#̊KBKOBaseIdKBaseScriptCompileHash)bBindingExistsOnSourcewvbCompleteOnInactiveubExperimentalubExposeToLibrary3 bFixedBounds RjobHasCompilerMessage'NbInterpolatedSpawn厵bInterpolatedSpawningp bIsEnabledgeUbIsPlaceholderp bIsValidA bLocalSpaceͳbMemberFunction BoolPropertyBox^7dbPNGCompressed75bRequiresContext?"bRequiresExecPin2*bRequiresPersistentIDsdbSoftDeprecatedFunctiong3 bSupportsCPU { bSupportsGPU@bUseLegacyNameStringbUserSetEnabledStateHbWriteFunctionSZ ByteCodew BytePropertyN-CachedChangeIdeoCachedDefaultDataInterfaces`_#/ CachedNamespacelessVariableNamevCachedScriptVM':CachedScriptVMId&CachedUsageInfo*ث!CalledVMExternalFunctionsbޠCallSortPriorityԥ ChangeId7T ChannelIndex[^Clamp VelocityV/"ClasstwxClassStructOrEnum3gColoreg ColorBinding@hColorScript.Audio Oscilloscope!FColorScript_Emitter!E9KColorScript_Emitter_Func_7( CompileHashdCompileHashFromGraphvjCompilerVersionID]CompressionNoAlphaCConstants.DansingSprites.CurlNoiseForce.Curl Noise Cone Mask AnglehYgKConstants.DansingSprites.CurlNoiseForce.Curl Noise Cone Mask Falloff Angle 8Constants.DansingSprites.CurlNoiseForce.Noise Frequencyb58Constants.DansingSprites.CurlNoiseForce.Pan Noise Field}@4Constants.DansingSprites.CurlNoiseForce.Random Seed)$#Constants.DansingSprites.Drag.DragAl.Constants.DansingSprites.Drag.Rotational Drag1I1Constants.DansingSprites.EmitterState.Loop Delay8̀4Constants.DansingSprites.EmitterState.Loop Duration)2Constants.DansingSprites.EmitterState.MaxDistance+|42Constants.DansingSprites.EmitterState.MinDistance# 2Constants.DansingSprites.InitializeParticle.Color5=55Constants.DansingSprites.InitializeParticle.Lifetime411Constants.DansingSprites.InitializeParticle.MassV7Constants.DansingSprites.InitializeParticle.Mesh ScaleU<Constants.DansingSprites.InitializeParticle.Sprite RotationY̑8Constants.DansingSprites.InitializeParticle.Sprite Size9̫*Constants.DansingSprites.Multiply_Float.BӍCConstants.DansingSprites.SolveForcesAndVelocity.Acceleration Limit]<Constants.DansingSprites.SolveForcesAndVelocity.Speed Limit5Constants.DansingSprites.SpawnRate.Spawn Probability|d.Constants.DansingSprites.SpawnRate.SpawnGroup%ʍ-Constants.DansingSprites.SpawnRate.SpawnRateF2Constants.DansingSprites.SpectrumScript.SmothnessG1Constants.DansingSprites.SpectrumScript.Strengthх@Constants.DansingSprites.SpritesSizeByVAudioolume.MaxSpriteSizeޏ<Constants.DansingSprites.SpritesSizeByVAudioolume.SmothnessGw5Constants.DansingSprites.TorusLocation.Handle Radius;KR8Constants.DansingSprites.TorusLocation.Knot Helix Loopsa7Constants.DansingSprites.TorusLocation.Knot Ring Loops 4Constants.DansingSprites.TorusLocation.Large Radius%9Constants.DansingSprites.TorusLocation.Non Uniform ScaleJConstants.DansingSprites.TorusLocation.Normalized Angle Around Torus Axis3.Constants.DansingSprites.TorusLocation.Offset u7Constants.DansingSprites.TorusLocation.Radius Positionv3Constants.DansingSprites.TorusLocation.Random Seed8Constants.DansingSprites.TorusLocation.Spawn Group Mask8Constants.DansingSprites.TorusLocation.Surface Position'S2Constants.DansingSprites.TorusLocation.Torus Axis >Constants.DansingSprites.TorusLocation.Torus Knot Tube RadiuscEp6Constants.DansingSprites.TorusLocation.U Distribution2Constants.DansingSprites.TorusLocation.U Positiong6Constants.DansingSprites.TorusLocation.V Distribution\U2Constants.DansingSprites.TorusLocation.V Position;g!Constants.SystemState.Loop DelayD)t$Constants.SystemState.Loop DurationPContextStageMaxIndexbContextStageMinIndex{-Coordinate SpaceseCurl Noise Cone Mask AngleCurl Noise Cone Mask Axis#Curl Noise Cone Mask Falloff AngletoT CurlNoiseTCurlNoiseForce60CurlNoiseForce.CurlNoiseAh/CurlNoiseForce.Noise Strength^CurlNoiseForce_Emitter-CurlNoiseForce_Emitter_Func_?CurrentLoopDuration@-Custom\~32CustomSortingBinding7DansingSpritesoDansingSprites.Age ]"DansingSprites.Audio OscilloscopeX|%DansingSprites.Audio Oscilloscope001 %DansingSprites.Audio Oscilloscope002'DansingSprites.Audio Spectrum#DansingSprites.CurrentLoopDurationWZDansingSprites.ExecutionStateY/$DansingSprites.ExecutionStateSourcedL"DansingSprites.InterpSpawnStartDt?DansingSprites.LocalSpacezDansingSprites.LoopCountK{l=DansingSprites.LoopedAge%!DansingSprites.NormalizedLoopAgeYDansingSprites.RandomSeed/,DansingSprites.Scalability.DistanceFractionm DansingSprites.SpawnGroup DansingSprites.SpawnIntervalDansingSprites.SpawnRate!)DansingSprites.SpawnRate.SpawnOutputInfoI(DansingSprites.SpawnRate.SpawnRemainderHù DataHash}FeDataInstance.Alive͌DataInterface\DataInterfaceInfoDataSetCompiledDataDataSetComponentOffsetoDataSetToParameters DebugNameL"Default__NiagaraEmitterEditorDatai!Default__NiagaraSystemEditorDataCDefaultSpriteMaterialۉH DeltaTime2 Description* DestgKDeterministicOffsetpx_ DIParamInfoy+#}DismissedStackIssueIds-7 DisplayNamezBDistanceFraction9Drag܁ Drag_EmitterxDrag_Emitter_Func_aLDynamicAddPin`eEEdGrapho]$EdGraphSchema_NiagaraSystemOverview EditorDataHEmitterAd Emitter.Agee)Emitter.Audio OscilloscopeEmitter.Audio Oscilloscope0012Emitter.Audio Oscilloscope002A0Emitter.Audio SpectrumlDEmitter.CurrentLoopDurationEmitter.ExecutionStateRcEmitter.ExecutionStateSource3$#dEmitter.LocalSpaceEmitter.LoopCount d Emitter.LoopedAgeb Emitter.Module.SpawnOutputInfo@Emitter.Module.SpawnRemainderEmitter.NormalizedLoopAge$D~0Emitter.RandomSeedB%Emitter.Scalability.DistanceFractione3/EmitterAgeVarNo?EmitterHandleGuidEmitterHandleId EmitterHandlesEmitterInstanceSeedVara/8EmitterInterpSpawnStartDTVarN,TEmitterRandomSeedVar09EmitterSpawnGroupVarUpEmitterSpawnIntervalVarl EmitterSpawnScript5EmitterSpawnScriptPropsG EmitterStateZTgEmitterState_DansingSprites72"EmitterState_DansingSprites_Func_Qƈ EmitterTotalSpawnedParticlesVarHhEmitterUpdateScript]'[EmitterUpdateScriptProps⯘Enable Distance CullingЕnEnable Torus Knot RadiusLEnable Visibility Culling EnableScaleRpEngineD#Engine.DansingSprites.InstanceSeed@-#Engine.DansingSprites.NumParticles {&Engine.DansingSprites.SpawnCountScaley ,Engine.DansingSprites.TotalSpawnedParticles~+Engine.DeltaTimer?Engine.Emitter.InstanceSeed-Engine.Emitter.NumParticlesN{{Engine.Emitter.SpawnCountScale7nX%Engine.Emitter.TotalSpawnedParticlesǪZEngine.ExecutionCountxIEngine.Owner.ExecutionState!Engine.Owner.LODDistanceFractionEngine.Owner.PositionU Engine.Owner.SystemLocalToWorldWg'Engine.Owner.SystemLocalToWorldNoScaleۍ\u Engine.Owner.SystemWorldToLocal]|z'Engine.Owner.SystemWorldToLocalNoScale Engine.TimenEngineEmitter  EngineOwner(NNENiagara_EmitterStateOptionsWS8ENiagara_InfiniteLoopDuration<-ENiagaraCoordinateSpaceENiagaraCurlNoiseQualityDENiagaraDataSetTypea\"ENiagaraDataSetType::ParticleData7ENiagaraEmitterLifeCycleModeƉ'ENiagaraEmitterScalabilityMode_LimitedxqENiagaraExecutionStateLsENiagaraExecutionStateSource$ ENiagaraInactiveModeJ ENiagaraRandomnessMode hlENiagaraScriptCompileStatus;I*ENiagaraScriptCompileStatus::NCS_UpToDate0< ENiagaraScriptLibraryVisibility)ENiagaraScriptLibraryVisibility::Library9ENiagaraScriptParameterUsage'n$ENiagaraScriptParameterUsage::Local):%ENiagaraScriptParameterUsage::OutputByENiagaraScriptUsage m(ENiagaraScriptUsage::EmitterSpawnScriptVz)ENiagaraScriptUsage::EmitterUpdateScriptϵX.ENiagaraScriptUsage::ParticleGPUComputeScript_Z)ENiagaraScriptUsage::ParticleSpawnScript5ENiagaraScriptUsage::ParticleSpawnScriptInterpolated*ENiagaraScriptUsage::ParticleUpdateScript l'ENiagaraScriptUsage::SystemSpawnScriptX6(ENiagaraScriptUsage::SystemUpdateScriptqENiagaraSimTargetAENiagaraSimTarget::CPUSim&u!ENiagaraSimTarget::GPUComputeSimV.ENiagaraSystemInactiveModeyl~CENiagaraTorusDistributionModeJ4+ENiagaraTorusMode}ENodeAdvancedPinse !ENodeAdvancedPins::Hidden״gEnumVÅo EnumPropertyQם@ ErrorTypet0ETextureSourceFormatw-ExecutionStatePx?ExecutionStateSourceצExperimentalMessageU`ExposedParametersu Falloffb,> FirstFrame%ޖFixed Random Seed FixedBoundsFloatComponentByteOffsets8+FloatComponentRegisterOffsetsFloatComponentStart: FloatOffsetsC;GFloatPropertyForceFormat9 FriendlyName FullName{*<FunctionDisplayName?EFunctionScript݄FunctionSpecifiers_FunctionVersionQkGPU Capture DatasetDGPUCaptureDataSetCompiledDataoGPUComputeScript! GraphGuidv GraphSource,VR9GuidCPhHalfComponentByteOffsetsHalfComponentRegisterOffsetsHalfComponentStartjR`Handle Radius,4IDtIdtfIdName% ImportedSize] TInactive Response;CIncomingPhysicsDragsIncomingPhysicsForce29InitializeParticle InitializeParticle.Position}NInitializeParticle.Write Color){5"InitializeParticle.Write Positiona$InitializeParticle.Write SpriteSize&InitializeParticle_Emitter 7l>!InitializeParticle_Emitter_Func_ ɠInput| InputMap~]dInputParamLocationsU"?Inputs InstanceGicInt32ComponentByteOffsetstInt32ComponentRegisterOffsetsKInt32ComponentStarta΋' Int32OffsetsInternalConstantInternalParameters7InterpStartDT"1 IntervalDT IntPoint~uI IntProperty6J)Kill Particles When Lifetime Has ElapsedWkM Large RadiuscLastAssemblyTranslation$ LastBuiltTraversalDataChangeIdRLastCompileStatusLastGeneratedVMIdyLastHlslTranslation5n[LastHlslTranslationGPU7 LastOpCountљ LayerFormat_ LayoutInfoLibraryVisibilityQKLife Cycle ModeM Lifetime\ LightingGuidELimit Accelerationh# LinearColorCsFLocalq諺!Local.CurlNoiseForce.VectorFieldOWLocal.Module.AgeAdvancement.Local.Module.DeltaTimeF~!Local.Module.DeterministicOffsetiȚLocal.Module.Fallofffb(Local.Module.InterpStartDTsLocal.Module.IntervalDTԹ$@ Local.Module.LoopCountIncreasedpg9Local.Module.LoopDuration ̓Local.Module.Mass\:g&Local.Module.NoActiveEmitterParticles^)Local.Module.PhysicsForceE"Local.Module.PreviousEmitterStatea7{+Local.Module.RandomRadiusJ2Local.Module.RandomU IVQLocal.Module.RandomVoLocal.Module.Sampled NoiseYLocal.Module.SamplePositionM*OLocal.Module.SpawnCountlLocal.Module.SpawnRate}5CLocal.Module.TorusBitangentaLocal.Module.TorusNormalcLocal.Module.TorusTangent,Local.Module.TorusVector`Local.Module.VectorFieldꈔ LocalSpaceS Locationq|LODDistanceFractionG-Loop Behavior[C} Loop Delay->Loop Duration!dLoop Duration Mode{#K\ LoopCount@GnLoopCountIncreased_y LoopDuration2 LoopedAgeMainL`1MapMain:D MapProperty5 MapSpawnMainɒCMapUpdateMain,Mask Curl Noiseņ֝MaskSpawnGroupshMass^F Material1Material Randomj#MaterialInterfaceYMaterialRandom]MaterialRandomBinding&AMaterialUserParamBinding^MaxSpriteSize/;QMergeId'S Mesh Scaleٺ Metadata MetaData䀴Misc gModule.Acceleration LimitsmGModule.Audio Oscilloscope3Module.Audio SpectrumfN Module.BvT Module.ColorGModule.Coordinate Spacey"Module.Curl Noise Cone Mask Angle9!Module.Curl Noise Cone Mask Axis#*Module.Curl Noise Cone Mask Falloff AngleϞModule.CurlNoisexModule.DeltaTimed Module.DragkModule.EnableScale Module.Fixed Random Seed^ Module.ForcevModule.Handle Radius3| Module.Large Radius%CModule.LifetimeModule.Loop Delayp*Module.Loop Duration> Module.Mass">',Module.Material Random_nMModule.MaxSpriteSize-$Module.Mesh Scale8GModule.Noise Frequency"$jModule.Non Uniform ScaleLlW*Module.Normalized Angle Around Torus AxisөModule.Offset6+Module.Override RandomnessOModule.Override Seed lModule.Pan Noise Field;Module.Position5`Module.PreviousVelocityiModule.Random Seed[:Module.Randomness Mode)@&Module.Recalculate Duration Each Loop.;Module.Rotational DragModule.Sample PositiongModule.Smothness\wModule.Spawn Group MaskModule.Spawn ProbabilityB$JModule.SpawnGroup@Module.SpawnRateModule.Speed Limit0CModule.Sprite Rotation+6:fModule.Sprite SizeModule.Strengthͻ+Module.Surface Position:5Module.Torus AxismModule.Torus OriginfModule.U Distribution`Module.V Distribution Module.Velocity̦Module.Write Lifetime0EModule.Write Mass1Module.Write Material RandomƆModule.Write Scale3pModule.Write SpriteRotationv%Module.Write to Intrinsic PropertiesI (ModuleUsageBitmaskl4]?Multiply_Float7lUMultiply_Float.A.Name98 NamePropertyJ NewInputgks NiagaraBool֛DNiagaraCompileHash~o&NiagaraDataInterfaceAudioOscilloscope"NiagaraDataInterfaceAudioSpectrum:?laNiagaraDataInterfaceCurlNoiseRNiagaraDataInterfaceCurveu:!NiagaraDataInterfaceGPUParamInfo'x NiagaraDataInterfaceVectorFieldWZNiagaraDataSetCompiledData+.9NiagaraDataSetIDsNiagaraEmitterNiagaraEmitterEditorData%0NiagaraEmitterHandleNiagaraEmitterScriptPropertiesb NiagaraFloat5YNiagaraFunctionSignature) NiagaraGraphy7NiagaraGraphScriptUsageInfoy9NiagaraGraphViewSettings NiagaraInt32Ĺ"NiagaraMatrixƌ}NiagaraNodeEmitter)fNiagaraNodeFunctionCallJNiagaraNodeInputNiagaraNodeOutput'NiagaraNodeParameterMapGetFNiagaraNodeParameterMapSetTmNiagaraOverviewf^NiagaraOverviewNode0NiagaraParameterDataSetBinding/ˢ)NiagaraParameterDataSetBindingCollection\NiagaraParameterMap(NiagaraParametersNiagaraParameterStoreQNiagaraPlatformSetʟo NiagaraScript|NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.GPUComputeScript4Y|wNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.SpawnScript 2xNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.UpdateScriptylNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemSpawnScriptVSmNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemUpdateScript &NiagaraScriptDataInterfaceCompileInfoƐNiagaraScriptDataInterfaceInfo@NiagaraScriptSourceP[-NiagaraScriptVariableTNiagaraSpawnInfoQ NiagaraSpriteRendererPropertiessNiagaraStackEditorData_GNiagaraStatScopeNiagaraSystemRN^NiagaraSystemCompiledData4BNiagaraSystemEditorData+NiagaraSystemEditorFolderzNiagaraTypeDefinition8NiagaraTypeLayoutInfo˦rNiagaraUserParameterBinding`Ch%NiagaraUserRedirectionParameterStore{NiagaraVariablej' NiagaraVariableAttributeBinding LDNiagaraVariableLayoutInfoNiagaraVariableMetaData9cNiagaraVariableWithOffsetqNiagaraVMExecutableDataNiagaraVMExecutableDataIdŹNMS_ColorScriptpˠNMS_SetAudioVolume)NMS_SpectrumScript%NMS_SpritesSizeByVAudioVolume@NoActiveEmitterParticlesIѤ NodeGraphT NodeGuidѬ NodePosX[ NodePosYrFeNodeslNoise Frequency Noise Quality / Cost  NoiseFielduqbNon Uniform ScaleqNone #Normalized Angle Around Torus Axis"0NormalizedAgefoNormalizedAgeBinding!ՆNormalizedLoopAge>NormalizedPositionInBufferONormalizedPositionInSpectrumZENS_DansingSpritesa <@NumMips* NumOutputs2& NumParticlesY NumSlices0.NumTempRegistersUObjectPropertyA۳Offset1x OscilloscopewOutF OutPosition Output.Module.CurlNoiseForce"gOutput.Module.FirstFrame"Output.Module.IncomingPhysicsDragK9._#Output.Module.IncomingPhysicsForceɫOutput.Module.PositionFOutput.Module.TorusBitangentqOutput.Module.TorusNormalhoOutput.Module.TorusTangentyXOutput.Module.TorusVector?UOutput.Module.VelocitycK OutputMap9 OutputModulemOutputsOverride Randomness@:iOverride Seed'TOverviewGraphViewSettingsK OwnerNameLB OwnerSystem|:+ OwningSystem?gPackagesGPackageLocalizationNamespacetyPackageMetaData,e Pan Noise Pan Noise Fieldw?k Parameterؙ'BParameterData|p ParameterOffset ؍ ParameterPinOK Parameters/, ParticlesٸParticles.AgePParticles.AudioVolume5PG^Particles.Color2zcParticles.LifetimePnwParticles.MassIbParticles.MaterialRandomrParticles.NormalizedAgeΑParticles.Position8| Particles.Presolve.PhysicsForce j?Particles.Presolve.PositionmParticles.Presolve.VelocityH Particles.Previous.Position>Particles.Previous.VelocityBParticles.ScalerParticles.SpriteRotationeParticles.SpriteSizeT[Particles.Velocity^ParticleStateParticleState_EmitteruParticleState_Emitter_Func_/'5 PhysicsForceh"PinOutputToPinDefaultPersistentId1 PlatformsXJ% Position3+PositionBinding Presolve.PhysicsForce)3;&Presolve.Position胜CPresolve.Velocityz+Previous.Position"nTPrevious.Velocity(fPreviousEmitterState6mPreviousVelocityCiQualityLevelMask Random SeedlRandomness ModeD RandomRadius;lRandomU$RRandomVRapidIterationParameters~G1[Recalculate Duration Each LoopS ReferencedCompileHashesJbRegisteredFunctionsҡRegisteredParameterMapRead RegisteredParameterMapWritel:RendererProperties Results RootFolderylRotational Drag ̩Sample Position; SampleAudioBuffer<Sampled NoiseSampleNoiseFieldYbSamplePositionScalability Mode!/ScaleNvScale Spawn Count!BScaleSpawnCountCurve W Schemaw ScopeName,vScript= ScriptStructK ScriptTypec'ScriptUsageType<"SetAudioVolume.Audio Oscilloscope^SetAudioVolume_Emitter-vܒSetAudioVolume_Emitter_Func_N{ SimTarget &SimulationPositionPA3SizeXȑ*SizeYO SmothnesspKSolveForcesAndVelocity 3SolveForcesAndVelocity_Emitter0F%SolveForcesAndVelocity_Emitter_Func_ӍSortedParameterOffsetslSourceV9Spawn Group Mask+Spawn ProbabilitymSpawnAttributesH= SpawnCount3SpawnCountScale; SpawnGroup֟;SpawnInstanceEmitterBindingsj'SpawnInstanceParamsDataSetCompiledData{h/ SpawnRate*#SpawnRate_DansingSprites SpawnRate_DansingSprites_Func_x SpawnScript$sSpawnScript_MainjsSpawnScript_MapSpawnMainP?SpawnScript_MapUpdateMainyPSpawnScriptProps`W Spectrum;ЯSpectrumScript.Audio Spectrum\SpectrumScript_EmitterSpectrumScript_Emitter_Func_zC Speed LimitXf?Sprite Rotation2H Sprite SizeugDSpriteRotationJ_SpriteRotationBinding SpriteSizer9SpriteSizeBindingJB,SpritesSizeByVAudioolume.Audio Oscilloscope!SpritesSizeByVAudioolume_Emitter&IE'SpritesSizeByVAudioolume_Emitter_Func_gStackEditorDatavStackEntryKeyToDisplayNamep:' StatScopesDv Strength` StrProperty;r$StructProperty0Surface Position0:GSystem B-l System.Age>|System.bCompleteOnInactiveJOSystem.CurrentLoopDurationimSystem.ExecutionState`System.ExecutionStateSourceLSystem.LoopCount^ǒJSystem.LoopedAge0|[System.NormalizedLoopAgeԛSystemCompiledData_)SystemLocalToWorldSystemLocalToWorldNoScale;z{SystemOverviewGraphtK9rSystemScriptGraphQg2SystemScriptSource.SystemSpawnScript1SystemSpawnScript_Main?SystemSpawnScript_MapMain SystemStateSystemState_Func_ٖSystemUpdateScript$SystemUpdateScript_MainvSystemUpdateScript_MapMainFpSystemWorldToLocalWOSystemWorldToLocalNoScale TextProperty:t Texture2D@TextureSourceH'ThumbnailImageY̛*ThumbnailTextureTimet+ Torus AxisA'4Torus Distribution Mode Torus Mode/ Torus OriginFTorusBitangentB2TorusLocation0TorusLocation_EmitterRJTorusLocation_Emitter_Func_ TorusNormal5G TorusTangentFEW TorusVectorKETotalFloatComponents[TotalHalfComponents~TotalInt32ComponentsԴTransient.FirstFrame&9Transient.PhysicsDeltaTimem)?Transient.PhysicsDragޜ Transient.PhysicsForceGS Transient.PhysicsRotationalDrag+Transient.ScalabilityEmitterExecutionState-loR,Transient.ScalabilityEmitterSpawnCountScale3$Transient.ScalabilityExecutionStatel Transient.SpawningbCanEverSpawnReP Traversal5 TSF_BGRA8TypeFrU DistributionUInt16PropertyO`0UInt32Property,8JUnderlyingType UniqueEmitterName-ڠ UniqueIDkUpdateInstanceEmitterBindingsЕc(UpdateInstanceParamsDataSetCompiledData^UpdateInstanceSystemBindingK UpdateScript-XUpdateScript_MainMUpdateScript_MapMain9UpdateScriptProps9iUsageUsageId& UsageTypes`9zUse Linear Dragf;Use Rotational Drags}Use Spawn ProbabilitynFW UseLoopDelayUserDefinedEnum*N UserPtrIdx8 V Distribution|U(Value01 VariablerxVariableLayoutsM VariablesVariableToScriptVariableD`Vectord Vector2DU0l VectorField\&VectorField162&MVectorField32HVectorField64g1 VelocityCVelocityBinding7·VMExternalFunctionBindingInfoVMFunctionSpecifierCEĪ Write Color97Write Lifetimeg Write Mass0pWrite Material RandomO Write Position Write ScaleWrite SpriteRotationÜWrite SpriteSizeķWrite to Intrinsic ParameterssWrite to Intrinsic PropertiesCWrite to Presolve Properties hzXYZjZoom=WSprites Size by VAudioVolume!378A99114C29491B13E0FA96151D63AA/Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!378A99114C29491B13E0FA96151D63AA/Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName^M^+M^M^M^M^M^M^M^M^M^ M^"M^-M^0M^M^ M^M^M^M^M^M^M^M^M^*M^+M^.M^2M^3M4M4MM M"?M"@M"AM"BM"M"M"M"M"M"^M"M"M"M"M"M.M.M2M3MrMrMrMrMrMrMrMrMr Mr Mr Mr Mr MrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMMCMDMM MMMM,M;M;M;M;M;M;M;M;M;/M;0M;1M++tAH1 MH2 M!H3 Mn,1 M-1 M31 MUJ1 MJ2 MJ3 M<H M22 MJ M#H MpI MJ M H MWI MJ M>  ) M/: NW65G }'x 6 j4 w ӵ2 K fSnWWop5WW71NO+Nz1NGqaeim q * EOZ$;u0]D;L*)ۘ K) +-- +-Z + - +e- +f- +g- +h-; +i-h +j- +k-£ +l- +m- +n-I + &v +o- +p-ɪ +q- +r-# +s-P +t-} +u& +v-б +w- +x&* + -P +y-} +z- +{-׸ +|& +}1* +~&[ +- +& +-Կ +- +&. +-T +- +- +- +- +-5 +-b +1 +- +- +- +-G +-t +- +& +& +& +&@ +&f +- +& +& +& +-+ +-X +- +- +- +& +-2 +-_ +- +* +G +-* +-W +- +- +* +- + K5 +!K +"K +#- +$-C +%Gp +&- +'- +(- +&> +)-d +*- ++- +,- +-- +.-E +/-r +0- +1- +2- +&& +3-L +4-y +5- +6- +7- +8-- +9-Z +:- +;- +<- +- +=-; +>-h +?- +@- +A- +B- +C-I +D-v +E-! +F-" +-# +G-*% +H-W& +I-' +K-( +L-) +M- + +N-8, +O-e- +P-. + -/ +Q-0 +R-2 +S-F3 +T-s4 +U-5 +V-6 +WG7 +X-A9 +Y-n: +Z-; + &< +[-= +\-? +]-H@ +^-uA +_-B +`-C +a-D +b-)F +c-VG +d-H +-I +-J + - L +e-7M +f-dN +g-O +h-P +i-Q +j-S +k-ET +l&rU +m-V +n-W + -X +p-Z +q-L[ +r-y\ +s-] +t-^ +u&` +v-&a +w-Sb +x&c + -d +y-e +z-g +{--h +|-Zi +}-j +~-k +-l +-n +&;o +1ap +-q +-r +&s +-u +&?v +-ew +&x +-y +-z +-| +-?} +&l~ +- +- +- +- +-F +1s +- +-ч +- +-+ +*X +- +& +-Վ +- +&/ +&U +&{ +& +-Ǖ +- +-! +-N +-{ +- +-՜ +& +-( +&U +-{ +- +-գ +- +-/ +-\ +- + & +!*ܪ +"* +#*0 +$*Z +%- +&- +'&ޱ +(- +-1 +)-^ +*- ++- +,- +-- +.-? +/-l +0- +1-ƾ +2- +- +3-M +4-z +5- +6- +7- +8-. +9-[ +:- +;- +<- +- +=-< +>-i +?- +@- +A- +B- +C-J +D-w +E- +F- +- +G-+ +H-X +I- +J- +K- +L- +M-9 +N-f +O- +P- + - +Q- +R-G +S-t +T- +U- +V- +W-( +X-U +Y- +Z- + - +[- +\-6 +]-c +^- +_& +`- +a- +b&= +c-c +d& - %n   T  2 A  M  Y  7c DE JIFGMH.6/%70$>#&81,A2='<C!B ")-?(3@*9PQO\gr}RSTUVWXYZ[]^_`abdefhjlmnopqstuvwxyz{|~cik4:5+;*5@KValw&'()+,-./012346789:;<=>?ABCDEFGHIJLMNOPQRSTUWXYZ[\]^_`bcdefghijkmnopqrstuvxyz{|}~     ! "#$%4:+;%71AA= B"!CB" )#>&$0> %/&#8'=C<(?@)"?*@9+5,A -?.6/%0>$12= 3@45+6.78&9*:;<'C=2'>0$#?)-(@(3*A,BC! C'<!BMMMM  M  NNKLPNG  IHDR\rf IDATx̽}s]GwE( P٤fOKLuz&v=_l#h{&ZMRM D H?:'o{/HqPUYYz}?XyB^&SөK=bPɌ^ r+X/|QdEX/\5DКTh=}t2m5_Aôy|GBplўjBGզs:Y^ c"O/9M%C#ӑ-_w8ӭ.\vF^TS<?*<~$Ըh.e _PȠA ;//ap9;ghP.;~Akrkވi9v9%iv/qcr!rҘ̍Q1Q8orV GC{dz D)Gh$*u6qER6CL: L8KV:.G|,as݊[e9i9bزogy7*_֍峬1l2 |VX<| x)i<,pFF\xrGHBGYgu aZֲn4Q%.iN)KK׭c4nF*4Lkw3/>,h#纎i!Aq1L7g5a}"u +ƌXgixipvSGKTs_Q%d!L9K8g1)&.[uε/RtuX}O)zF6erC-oG\vOGβ#.^ F}%jց 9=mݥ3/.A?wnj8" 6V2A:*Ҵ28эo;wk,ӛ2F6@KȌ[؍ur]?M#,™?ӵN3˸L?ygx.Y9NČ1c-c\;L'̓qu|t#-t1Z,wQ22]+͈oȏNoYl[c 8-lP12d ɃqQV+/|1~ͣv,~ ou=Lw> ?tc3{c. 1N$1qsNing9kƙad:?{ ?[cuXm85˘Eq~s:c1|[Yviۿ(gqP@Ѝthk*Dsؼۤc#gd$q·Î˲M'mu &S%ĸqL,wnӘy8iY]:EzC8C+X9R'Ogo7MSC{uWX!0lǴ:KTU(|x\H3lynqrp[/ai-nc|[V˽(e\mcys:u7=w qKczoc(xxc8@e~lb9>,Y1"=s֧S#cq-j</Cu_~#)9\r$MT,7m]H6Yʻ 4cXm|O!gNr3Zpƛ7m{慠h 3.vF?qΨibt3E-z8)fעio7XeŸ7(eS 2vF?yu|0t,V~ZE&1rǝČ!>GYﴜi#"p[<1n,oEe/oy?p-Y8?./3ݘq-tጋ|k3@cr"]-\<-"|Kv̋eaӴ¦5MqHe؟gYE.K<[t鸪O3uf¹on#_oYvqQ/[yθ/o.LEabTH1ǂ.rR4SIS_Iie@k`?Z>@U5iZ9,L\VA[B3.fVx?#+g1yYy3>[t˦L~Fa3>e,./KQWQ~@™7kz.2柇Le7]qU2y3v[e)!K'3R-(\7L.@L'9l1|AܜaixstANfg(ȼc3>ޱ|/?~ `)h3Ʃ$NVYifܪX.hjA7iX$?4Zy\ >.mQ]O_e4iI'iɓA8xD3.W,RsL_#~ gwb'L.iɎq1/}3A<&|XS@/y3qۍ:O-\gt9 >*p~=??ioWIqPeE紿ZvˍuA|x2.u].- K# 9­qQq]mBRФ35ZG1߅( ^}ܜH3/:? jm)rEÍuc>s3.?1XD(߲0.tqķEoe91ݜy?Ӫ,39[Х%Xpx)|LcùR̓kot>eݱrxM8⑍N7Vϴ9HmFޢ ma.Tgm%,5e}!ws~m[D==]"rtXr,E~ybPv+Ee? .O]kp +vm(vPE0-e̋ v-+9"Z3tqr:/E\OGOi?g!҆CU?z .S@zP @8W6舋bcE( ,?~+/Q^I/5`̃r[ivv|gnQ2.t?K1K,\H\\L0ҙ/"C;H37q Ft_mo+AЋf7c~wCkǙt`-(6qo(ot2-'ƛaE~^8*hTr+5H3OX\ MGy\QF--|I+)isz9ɺ^zt)R K knٰzq8-.8TdSh%2L3G5aG\tYl+CKQF0v# ~Co?Y}?Cu:>G'i Loa(ƹ)5Swn z@~w"{HݗH?:'11_= }cSpbэœq¦n)EXq㣬H41L'7ӷ|;22A<ͤ`״溢z;o~ϔIQ]yym5_tc"~t̮ Qpda2.Bs#fiEzp7].҂aDwQ|noΣ3?iEe4 w&uB^7DȯzCñ<*WC G+| kzΏøN3MC|vpn70'"0"n,Dc4.i9'q|3nNcyЗt$0ݘWg~ ]Ke79"@8DBh$\uzۙU\Ȉ5"ܢyɓ6Ykai3++/MMtªRhJ|ۨr%t"GR SSv(x g*?,tg%V9Za25wV!sfI4dϵ[WO/m h} QmȡI7F&VxF^󕇢̠JۇT}]:U9;z& q͸o A.yZ[<м҈2c"4sظ9" h( p yrxV-9.#2`b@'m)r+/-|Q)Q0Y#=d|)+$?7U~:5I<o7X Cӂ"5pce!poH0pTq捰C *.#l(dw7׼ޚ4gFR,w^8!濘l/utFQ5"9Ri: ‘p,ŵexXS&ûA =l|ERX@|ˆ[^P~缰G0ySddZ"摩tLluRJjps^O\7(C._1zUiqKM ˷`Ei`״#iI=#%dI7!G pD|9.}#6t.f>&.d>ݘżE[.De*/crQyuyxDeP82"˴11y3Eqy̛onަ*q9;csMt% \kei[r~.=oQjq)@ԟO2_g~r8gkٶI?[i].9@+eqc2GβuP_-w'q~~Fw,> grǁ8.0wyr8JA NeirVCj!kYrĺr:#yÖifշvV9>o/±\>OYwٍh_&=;R(Yp-osMG'KhALj̨VѝWt,-rnF$Vp._xj\UͤI>A~%3ixLT>~\ǼEи"?*`SdQBϓE\71\> N%qudKG2S<&h&;Ht ia2 C͠e(Z~pҔZOƙȌXu:YB84%qٽt03(DR\^Pq.øȪJ,Օjlxn*bNJ_ Oq>$Jl7QN. θ^@lY맏wʴ.x~LHkF.v*e$ZqqZy*,'y?jor^-7stܱv=~\;̎/n0/~Z3-XƌpL6ǸnAL/vH G.y%<:/ 1(ḙnQ~enVc2 F=F:Aw(B<͈x#kzH9n:n,)@HL;B5fyr3.Z~7T+\._ ҟ'/Vd3.*iq/b,r||k1Q<&c^$ϖiw,-|[+ܘ9Ϙlc~?U/'fWpG\؍6$$FX|YmA&ϜrFN坡 w ER*iceҀO oZn,O7aN8௨zNԏȿDeKʢ.@$"oM wӷ9n o揸WRvvf /Q.gZwti91Ʋn\qlgb^iʵGz(1GGifF9Nź~ˌ㣋ң-(3 xmSML|etc1O;1ԓh}/#P|@߂r[OԊ?eI/,.fGXT)<:\Eyt~8}8E>Ӂ`3Йv&,z8*]E_N`Q.ZWqv3~@Zy[xEv>PĜ3]ˍ.u3&Ý);x̜'^e9ή."bPVb͆,ZƦ4*4|PmG?3os=:FŌE%42;.uF-ZyyeG縘V~bypǼR2f2[ey.Qg/O4(8;ϙJ! NV5yxxgJηﰗ|;h`qSf"GOfeO9g} f0KܘR1Wf!=Pϝ#1:1'Hؼv# |E:wiMse`Ʒ鬋5֮Ï>ydu|5P34AK(S]=S0[]eOQ(zŔeި>{ùO j}]_J{ BnDeB0^gfkS8;>{BϩL*sN@ibx)$֋<ƍ'k:gg|3E񦻈F'l[^*󾱡z2i󧂘lPpPd5Jņa[7^J:/uils}zFF'F`vrX_2G~ft2]W 3]fV<͓eF^…`A\xZT빯i,aW2<Ӵ 91/SdHӺLw: й,쑕soC}z]lu>j>l6L~b'JON'tzFg3L2wI=Ѧ]|`EaeOr@IWn+'>! ;z/q=z[yR\꣢,姍y{ΰ_#C&Jii-ҐD+SFO C'D(IX#}|VG u (ju67X'fQC'ny4' $qi n'?ٴvsYt0L[CAO -v6W& m2zF`={Qz/n8DKl : @5aϠo&R/cؿ-c Gfc"a̐q(%ĵGS~Ӕ:p{׽`9Q|2Z5`NT:bs^$zsw=Gk+Z:Ҧ輪άD1N'ۯjv%޾/ww(kq52r1<<8nN}zp%#1X(:B#x _uP72e}ѕ$tg?j¸%ǜpcY3"ssgZ֊ )δA{7*Fs!_up yrH3xN7^>NsܮF OP[C|4Ef xx^ۃ/kp)c (=~?THQ4{TпO:v3ဎ֕ɮo!%ƫ:xUYlh=@9OB#ŷ:yƬ@4'i:κfÒ &*Q3T?CKQxY<>.]:vN/ ?Q" #:UhVx袁pت;%P,vtH\+1Gp y~5~G! aǝͺ~!@x?F`])|(lDƒÏgGyؔ5x&GtY7o̓gp|''+p䋊OugIxbΆtvy&ap`ܔ!**GM9{v]<vLcEnkM Qt+FU!϶X鉋i*"OG#2Eq@.t-piQVʍ U[uepO3Y81dG/RG9Rs"yЋ( Ag]hTdxeLؖ뚁lI#-?x7A\eÖbk+w6M:0IJqΟXtΪ(i)yM2t@:,:9KLkUcSM>Xy؏=u-#ڕ:<_qpG5l^rYvIƷj4Gu_EC.TvyTgք#γ)$rW4M8kg`Cް+uB}loiiYys̘V&״&gLQVBu„:3,S;֩g)Z5 O=,a*5u</ CN斌߫,:4lCm{Gp3U$;.m;b_mfƯh|nɱ!p6 %>^i !z@/B/Z gM8+,q}0 XS qB[&1-)T;q+G`K3F`nwn=hX G+2XcPiw Ƴ(} )#QւS]p(Fbxz/Da8 46v#W#p諲ZiCˌw~Q@|U?#?IïU ?6 ixWyLˬ9aaC= ir]r^`wwL/=q%٤/)wY_⚶kvϞ<eͅ0ONM.K|LsN]黴QAn}?e訨>o5[OOO߉?ݘ?{sEy>hWW.ϴK9;dKS=[듗T52tIi=$CDkSYUPy;[&VOP]{ ܱS+2\&%t>yC''|Y^^+R`gi=Q^˚ G$_ʫgS3_\F;FG=mrC{ M>:Y lk1(Gu+UP`5 GVz\f,*Jz͚{2e$5RU}eF,7(6 +M:e`cwtLr;~ ugLVx K9UͲ<#1yyIRGaP\( 7NC^YxQ;#r[?:Lq]êXS[~z( w_P^RRѰA0I]PH: 1VVf4 ]p3.w*;\ךwz#]}%x#y eK}e(geɦo3cTM(R -7Í[omN_ՍDK7l RPTv'ˉφ m__ȏME:6y t["# gfZ1+Ie)M8 :x=r<[x7mBfl r?1N8{ 7oμ{+'w&;]o>?|Q ]).ɽnm(oo`'j_ŏ_ޭLǯ KޖQ`>?d_KF}Cdk~n"?x=]7247{4U#øTK%^Wn: ee Fw@Vb5;Vn,"+SvƠ%fB ?|̴U{fA[So<ҁʚ_;L,KlKPwk'޾׆ŷxn~pkm.558c 'z Q}v*vQ~S(>(Of9jףgDsr+=˹- `pt ` Ĉ7n|L[J9=M1 _?; G)!ҟ^~auX IDATEuǚ.ԗ)Qohy_*ldBf>+ b~Vt7^W:gW+:;✟{ ;e&9w,U&om ~<_~dr+/|7V?'td0ʫZk4ʥSO]["_R^FKXZk?gfΊ@7qI?є2yZ,~[[.qW4վ,Q߸/MO~Mky򭞇ǚKˣMC)2aeMOMu5xc-'whZj:?L]4וg˱x\H*"\R )Xy b3{,N]>FC p瑎%tn$:Q# cSy+6&.p *̋ aD6(?-֛w%+]FYeI)9,}13iRWU'AHlpBtcֳ4Xѳ@@ ॴVV"0];XmϚXf9뗥G|jMk_iZGU59M44(=#?-Zf71٭JʼndȠlRIvB䃿)k_z;yk/Ϻ00#tFOt~(C.3 `$7mv5:^ؐ_'d$k S0sbgӺz 3w||h^9,6 퉷ƒ45YFanL~M4Ou0ޥseRWu,UY_-urPuLf%ox4;"N}tDxQ@)_5yYkz6hm遃1drMMξђa+Ź|]W:?~MkΗo+_`h:ym) |P'%㵭rۓ.֔ͣo%ƠAeS} lɯ5E{-&TԶXQwU{HuV6۞ʳA(U))U>T {=}nY,zV' Z5@<$T AF#Cd/kw߶2GdEXӦ^+ L)k 0U襐\r^g۳t׵z Sձ|z,%HGn=DK miN8445`:,mGG?yoc_%ChC4f775P "u Pf^z)=Gz"kS @cqο`:y7ПZ,#8u9=aƈ/2ލF|Fy#<))mn#vU0_Y|zm3ץ:N#=My:}^vQ7Iy%vC A2fGdQL c ׏{ENЂ`=P`G`av(G:^g%dOO;'ڟS8 @ԡ#gD;Qp/Ǧ"3/\8RoȎL!`0^i/뿸E=j(:3(? ^#WΜ]ۊiv|;i`RΫUdtLS\-Nt&#HJ^ݜQ~|/nk׺5ƨN~oa? &uK rJzO&^ Yw}v氌AlQ?5gF0 oEQ}J{y8 ̬`o%vtaӰ- @Se X#KBOdog\Qlg:ϷK D~[?|/|gWʾϘU_2/1LzStCJo}~C%~ h^ "t! 蹇Jp)N([\HD6堛:~bSz˔:,ĔgF#}.~S#ѳ+8f4s)쮦L8{o5qs:߿Qxrllkԫ?_t?Wv5:}kj>%w;y{T>䇓aO O|ygi/ӓ0\ހe7^N)Eȗl{Kd(Ӷ~yi"UKMr+?4żd8W"/p\>N ]B_**Dߖ,`\'Pm̹=bPCG@cnYuU׉-Z2u&P&JhBT'ҙeat ]ػJ:o_6]0b eKs~FF .Sh$EC_XՆ)U1Hb"EomMެeuwVvm"!#phXW'߽ioiCEOL J_h nڒ?Ì藔|zeNezerW?ޚ)g|<0?et [1nkY|tn'2LDaO@_cޮ> h忧4Nb ~B j;X #D@l!?.@'џY`U"3`c@EzrriGL:A12V~oq+` P*XQݘgw\s ^EK"Ncz~ñ֢6."n˽nwʖG66iƹ.#>(Woi$㬇Fs VO49F]1\Wg|F ~!W>ó[V Ùྙ^{8:.mrUGʹ/&i^:u{=՛!/1vJ2t.vKr|mOC~K QAߣj_-{Zcpqߐ^#̧>R4/x 3׵R`ӧN2saGFaKk~. a`yg ߫$&Ϧ]}79WsZ֡ѵAoO4%^/P;atQ3PS; A@@v~M)O'w5Rw^6Ўhp3+(>t_%˙~/{`<ӏܸݛ:YPG)?4"0oE=G ﶏ|<<([6w&_R՞ldC 4FEܪ9Ԅ(NM@yGH |^!oA?ÐG=óeG`UDܼ`خ74\8V=~ `+Q9c#ը-#Hzo*@~օu}7_kG|[#)~Q~E\ίkk#uc׻hZOWfڞE ͭ}x#|JԇEkkh[0v<̅h4 ao]𮭇rL PhAJ%F.E|COr'vfYi̦g׿ ':?HW[(!liP < (?ϻXI>Đʢo{i[[_EN~,ώoaIzO O A؛iʨġ}O4bN lsǩ R_6XPth{x_ '|@Q9#L#bg]CFsظ>\q;t@|yh70Oy_ܭul#GBe  tJ]y/_8 |4ʒO? >&Cw(t[k|NA#\*rS/#_g:xD:81ӰB| #aF\pYi'BTގb?*CVѷMww1Կ'3mV 1_ljx|D{:^oSf#_dС^M}fAn3Yob, &cL5TD⥎d  jT Ȗ5޵.a&[Q%0p.EGpF@#zlgu }ʻ?<8~GY?ѕܓ'x )z+X݊z?p5]ݽ|w&tkjW.n!RD7Ҕ81EypmRy-LiB(Mg2eyyywwnG~vg6нnٖM}gNI05OoϷV|%ŽvE~nEɏt˸pwK#\Rek GuЫ[ܜMY菝f % @O<4P rbި*'nI'Lsm"}_~oCZ437D^^/Ldc7u~fG-m4A_˃rOL3`mq[ۭE 7nE1>"1nx~?}m}OSr~[o''PfOQz΋˽"NߐCo@iw'+). _霟 c0 1[,o@Q~N_ [3xS?#muX6?8A3\+uF_ ?Nzxgsr__)/C?ɢg­zowF@@'LGSЖ2nlt?3fpo-dWloK.Gh#SwV.04*@#.xUB |9 AoCM?dk8~wvj~\11N{|KzVg WoO9'MdnHF~fc5=O8!QAZVc>xZeGQzQ5ϴ?w8&X^/@k{7'aGEٻQ3%\ga/ `?KH.-;ңJ:{YK Ne߿ IDATPBXCJ1o‰)ߡV'ަcAuW'q&tڧK6);5P?޼<7óWzǷ~qJzG.N?p_wN Tgh\Zb} a vY1͗lyqՏLzr9O/ G0ٟ??٠ )S}ц~栟s1gS+E\kYnWzW߿}rORU˾ujt4(~Oy*O QYCghd~Yo~!\in|1>X862a@qAς+(6

1,1SU\ )YKEҊ4NyAy%kGmr_YkP׵b:UU}'O?&x/5?~ߖ^塷n_Wxu@D?g~7^umO~$$| ~.1P> 𶞁ȚѸ 6DTu!P-?0*  ^&ue6ָzJiO #7"@(??߃{~/¿Rm]aWs^p_MkZE'Mg2.S_jgg)`@'9ᙺYrgHD62G]_iSeo|;/MmmyZ?G|}~)G /a1W5t?~K0z{~*^M*f;ï/[qE‚Gz(}`ny7NmE7E9G\TIÎߺ 75f)9kwOQ~C}?*>x+?, fnc8Yam@F@s<ޅcB\EeEݜ,%pUdmK3p`_5 FoB*FhD^xP~/t!T t1o^CiJldg߻&`(}4-23~f7cpe/1|/ 2kGk2"E8=ZyܙݎvIk-r>,;?o;d ײ0ݘF4HO}Ѓ/(ޯu^}$7ˁu)23#??P (FE{cG򓪕_fb eXJV}ֈFhyPqGDφ^ɧc+չǯTztzO`㏋?w7&z-H+_/,%;ҋ;4~ Vy[tk5앥g6rg:)k #KizQKNNB,WIT'şeMB{"++5ِӵ  /<}}ustrd:~H]H54<F7gʽ"QNO`C=7כ̞t:JMSQ}lRs t t`^[]ǗM$<\"gNܐvJon~'ƕ0wJ/7"կײǸoDzeC=>EUWeynX{dp[dI…FM?<,o]{Ȯ(d@|?W9JLp\]? $<2g i! AY=cmX<0:e35+Ш'5*@xY먮Eޙj܅X3>ycB o^>ݿvl ޿{zk]#>ڞ|iMX֖]%k.7|Ui\G]Bड़r{|QM;5إ;.rJKjLg9fQĵ?RO0Qa1J`P 'C}EOL |pxorUë}8O[y[-9w$N=8s&wӝnRl @hǯ~žCJ=~Bgniߌk PBīӾJݿ 8em;Tp}la6tLR__e7=fܺ*%7 Q|f{/{e3oxZ[v >| lCU=AĘL7:Eq-I̠F e3J Hlf/"*"w~fݗ;R~Oko8 eW5?]Z^%THJ >b!E62 4oy!F쭍>^yZ Y1?">v_ 4mgY7xUQ)ѹ#sj(7 פ{N$mjGq;t[mʇu~iun©IQ~`G~ ǧP껚Id#L%}8TktבW_sڜq M !B(H˦Zn9z{gzfgz'&~ab&׍DlD"_hӄIA s*ΛUoynyrVYY|~ч?ze4~jğ>WnߪfDa 2Fi) lwq&@wrE(Υ.i?ŕwwpCP7 ^_}%3 ygYU2pen?כ~gU+2$F.\q;,Z:WS:Xs=}]At|ci:uޠ.3<)8(L퐟Z3 XH؀C\c{Y?Ӥ:bzؗFYltG1gRެ, uvƲ%(l*w ezh4J@yq]) X%JtfxG~SY7קaw}o~bw<]^VܭNL|W(~@?> IVl˨xwCT>Z>!6`06+H [ OHO:ˁ[;?gdۣN@떋i|_m8JrUK(sa0ij|O;Ccn8䰻kl ހ_Ɨy[vwǀo_lvZsG*cFDY,:[/?ӎ7y-.f+no? .nu_|SF/;?QyS JOC¥ yuN|YWr#OۋNTSӆUpƨc88 dS]~Ǧ8 \QoC>AeC}lί菧8ȟG\c)2aR2<ǙL3iS ou|e% u ؗP'I|z+#wErD~g bl4;>BXjGld8=1AS:x'_BfB |g; tlˋxX{ h?Ξ~A]}=bo^AspǗcp"fϟs{ ?@gБPeA(G-?6eRK^Tf,v8|tQ^HK~Dy9>;cGe~ͽU\ZOxrpC{q $| H![8ߺD8̟ Wp=|V/!_^=׵F3;锹Kh+%\4xH_@K G1\S!8i=,.״Cw.:t0^˚Nw7q#6kxjDFG,#^\g(:mNa8fHc'+R^?}f.gro,41sD[wEt8ǝ}G9WYp= .+ ,}Aʹ;ir4[>AL|5j#a{:.4n).ȫ5"! ~t<`ct1':N8s}1#`7nk#诶b&'3:O10:6vi֍N[%/3_gVޯ +ʵ c'zkq6AAwǼGr%9?,3Vn1tG Ca)Z}zi1֥=֩G76|lR '9Pn&61Sܰ= Xw?5Ӥ~Z*]+<<1b_6րxKu|ƍ}l+d_]r{96Zr#kQK3HQp٤ӯ s. S7,qU^2e]~yo=^{`~Iqvniȳ#r))=xqG+gaGrCCٱTN̆dp`ү } v"G *y+^^FUNP@;//<]s9 .^2n}:f;^[IY ggf?ҮxH~vA/gکF70ߪ7:nuLϸs~;U%Ҥ@ώK kG4:4ۂ0psB;boPpX}=As>[}=7.ëKP\4(lxAG"<~@p=&O᧡f}]t ߚ]KfE,ˉXZޏuuF\uuK9 [ B &n?^#GKn3LSS&Su봤?meKYg-y-{n{.RGZV(eNFS:(0K` lg?. sXs O0;Cc+5,uL>,n]ƾ? _v[>ͷ_o~r/asίa)u3zc]{\~ҘXJAҳܳ#o 10t[`S*?jYb[onQ=x oa=>'xw\|\q{ݹ>dz'C,(\"Κ`F?SyoC4X֪MGwif IDATg%-ܦB䂮>]<P**œ]ca=#8E4'g;1 %6]◂u.Q'-|I`cG.1n{|^>gt1p_o𼗏s+8@㗣o!غqy? Rc[ב>/G'su1ʏ|kp i7n_=~I./X^ƉA,_{ 16] \g8lv~ Kg4uẻczV[FeLөo}/w>^FGh0o~W?y5vO Zr8'ʀ[}ZRiЧq1WyE/\oΛa.Σ0gO< oA@!W|I?4|9eEǰF~9,@G 'ϐo&'o |8!SAڊ,31'm,x~0~X*rCa6p ;]fAٸ1 C\@4 -çZeO.A^!qy^2F$ Y7δ_<)$CxQ[_g{%k=$1<"1 w"]uE<\fGؙGsc/.>ۋaaw{?(o2 XbH1|qC| 9 ~!J}|e8o!̠I- :*XsWZ.%@}WS^_s4w%JƝEq4]3pN=Nǂ0_nܽOo})0N :nNxgفSuϘlct-xI7V6~IvO ~Ï|̈erc'@X SA O-TVh)Iٶ:yI@c/Ii8Jfn]jt2~[&8%!}~Z{߼7$iW(\߀ͭq~qO}-|MxgBjPTv*ng}r0 Opѵ`7`Zsawq;~r-Ե~ίዞ~7|S8: Qfى^> ĵ:p +-E!) E2zv9o qQѰ/qOd+egubG 5\Ż|֏ʭA ?B wqYU5x6.,o ^5 4~:wp#@FVe !gqq:fNj!٭ӷA&֗~zˮS o^Op4tESҍwB;Ox|`qGxǠnߺƲns|󚲽֚lFg1sp|F^+V @/J\8C _򖮤.թ5N"/z#g(t6۽e x }|#ߙ\dy7v:}?zLjcqfH~E ʚ2 v.% VStpܯatX B'6x!G>U4Fm_+ y6O[A~KAi`/2ڍy7bS.߹M9$w=M|xdk!N]g?9]<}?%L`0U^ N$>@K,}\@{{nW51Xv{xU;hfkOKbQޱہi4gq,sՁOfAI0WXc} UOĵѽS82a=(SxeC\ .vs%J{U nG,wU:O*qU{ ?fWB3ѺN5~NƟ 6˜ U慴y#nPY&OuЕ'D8  `7-6&G}(:e4*D)w.KiWϑ)N#ywsk ob1|l[ Sqp'w~=هD}(|; G?l&sE/_[\G96!;c+"u A6\ ow6]0LtYt67Ϸ_+-vev.qrny=l)џ3GeIMUsڗ ^%g8w+#Va ۔*]IY?#!SolAqFQ1B\𨍣r8LaU<ţDww?tk9Y狭o`\pJ:;wz>^}g{WߞXpZ׋ŏbs'YE{,(I5½lnH3pGBc|3\Q^OuM;gyvC|⓻8+ywɷw:n78^9җG6?kK<4cE?P4}ow޷F l3Ȇc6-N4~:r0t8 t̀%>w^ti`vKq876#qSt?|0o`: ԟeZe./1\ݷ`K%ݏԊRnӄ/eF ]tSud:p)4~e9bx[Xa $aKgoDsNGDc / q߹A9_ݮAqr;9׳t9%mu|arSB N3CH=,km,vp&#FOо+}=!T⣳e6/k_ < Q=hQ`x"Ol/_m؋:ѧT ʐÔ9 El3.D@ ebJ 7m3wmv;v a>5|7w { ``uA;q֥rvzD?y=%lmgv9yB77Vu'bxC@jd\;GOү㶥a~>ۋhw=\+{>yɷǷS`&;&~_~/6ŝ!p|"z ;sEm|m̥c܆ TJ"(oٴ%bH@z )*,?yvtJ ?$7σ}2Ebn-Oi;0F.Bt +mG8s3x!Yz7ӈ|L$ _LyИq >[|c/^7[qϺczʍpKФwϐ0|6f ]BO\LgkLo}d'Fr|?>AN~Mٿ }dq^`%v5Ӣ'L(ZKçc8s QRxWbGΟE4^zAZ/y4zuWb9x郆YPyLN+qpbpos?W NGqp7%WGk[ƥVauK>#}ܸRiW_ǧ9g ##?v5twl&8y[ap'/[ax(ƿ3X <Ď!r]']V"i4||ـ3bu,iv~cj_2ԃwbvGt pCS8 Ap "oB>nϗ[xSm/P>ݏЁ9s?_ ,ˀ%bs&03 2?Q׼*@,oJ{cyPv[Z/7V¦ޟ f[mrʠ^;HM$5/:g}zٲ| ;{ AS/5౲cB^$ e3~iDzv !w::^@r#;ǘZ,=˸ihs3tzۿΰ_Y{-n|7]|g.;Wt}y{A)+x{1s8Qew_+77om^Yak]lv/>yxҡ;֜-1<}1Ǐb諛/0> mw(;{l:LGCs_`cu{cAW= "ɺ}/{tyFg| ܠ ;&g'uk`7M;.^]d bhoZTO[njbFQVGzd?YSp(%u[ F\9LF:'ETc'tR-Z+v1兣qX"\Ìk4wZቀdZ÷ qG[Kkf_ϝeqǝxŗ;_W=nuz Vw'n^wHo/޼x zOuM:-+#+ O3:ͭk"_]mHlbo 7|YH;Sl~}K=aMȭ/n~_}.mJvC^5?Vh􄄸p3Hk-,ȫv0Q A{h2, uIג4w9Wޤo}؇&93/َ(D×'0}egY~|MW9>Lw ܚC'؄{;|AWoq2Lw7oI?݀1Iѹ38?:ð]sou0ƥ;w,dqfoovǨNfi*=e;KڲQq֢# NBe`SR$+F٢㥏H2sNC7J'pe;.<ˁ竱ɉ%ŘM㗻2;6u,n,3ݔ7Z, _\:>͙g@eޖ 9pwaom=~3poF8' |yIn=ri>pcw~'r LSx`4ݗ8K;uԝ,y^$[lBfN#,x_?ƶN52 %]dZJdEs" 66])>$p6Yq\|<=$p w趾YRYp/Ǔib 6#}mOE> ;,6_l/.$nl=4t:iۻ?C|j{o6^vs7?z7"o?5W߸/m+o¸IH3֋6~ ,%v1祜鳃^+rQuQCV%tt|Mu۔=G~r\ 1[Ҟha?&tW_9ۮ3{A:>.K~)N 5΍3uG/?;ʦS. 4@8VHJ8s%Ā)T5˔/ F~;é%w?iϏ1[<|7n _FD֥/=y¥eq /:4|96(ē G]]0 g۬03bY}rO6cGxZb`6AgG>ƣ{YY<O'?"}tu_u6PfhNGS8W܍_@]ugK-PE{ E7g;1 'dǹ ;>1hs6bt! #D+]$\w?-ϥ|>*Nfce@l45pQ#k6ɺ7ag! \u4c[/c1KG-e¯+Jt4~:?/./9q a?6'᨝:%%A7t} xb}]S;$U:n6ɣ-+vKlsDBV=VMq<(A/C J#,M*LDZa%l a_r%*W]Ĉ:Z, IDAT׉xA`C>$IC(c*\'`I< ߮Ý>_dq k瘼:;xw8yy j|D8 /җ`awsFoz\->+7)ɿϺȕ+GAxnn繊2t߸ǎxFu2;:0 Ѳ'^]'(|0SKtM Z(|s7'˰gm$oK'#9-?ǁթ};a{lJRF~B2ťC@ X臍I?I!_v4U])GqӉkT'xHq|ad'yיqO)P!,6'0 3?;J'xYGw:CĤ9E\݄~B^nۺAϧd#N.:s7L#p?v> <̉ ^|}>ds3ьA>8gSk{ KO]Ȁ2"yz&CLI-K*=j0rEgC ϑݹ3XIu~?mך F~:ӈx0xdFBPcxcgpl9lCurzQDž-F1v>׮F38{v2⹰UmhqJiwۯ:̫J VWe^tbW"o~-yA{diZ3 Jż$՗:̥FN,[]6 d"ӽwm8~e4'Yar<3pM2~Ѵ)r8b;B ^oΐOtMV#L>脓?Sܹ\8 (eeӊc6Qm)Gӗkbkq޹\lؐ)t|\ų!jKI4d\ Ošh6+ y7Mk'֡+pCs/'S>TUwkx;|-@np|P {o\F O~R|;'1 ;):p:TmS:=&ꨔA P/o]t$LS]44neJ.U@ElHp/~Oxypm9}|#'߂`w<_ |j@%C(_KRLGwcaY!r<'ec6l: 8ۉ[NGHKQsSx]3^k=)$thH p.cx /s\rҙ< &X1acu$8}~9~aI)~uXevgP)G ~I&{$f4$SRƙrŬJVj)(\LO<2x@ {ѽ~\O!76^zDi[OGt !f oF>ȟ13hMvxxct[w G[~Mn}uҭ:Qm%]zMe62qʒ f*c@)=B#yeH\D+4х^8I7$ף2D"; {ǿ/xvޛ{!#F>mdQ!Xn%gi36 _MyUe0<\YeHOw9mrm0>IV t3-BZ?2^>a'qsx[tO|\߂<2e(Ɣ͘ϷB^Jl5V!:=KWNB4K{[7OLQ\:0|v.٩3 }΃dd܅Feӆ] JerXj?N[mEzs\a W8gxi+}.Ga  sN2w@)#Y+,ߓhp_#xoT-v9 . #%0KLi?^&[4 >ͨH2ӌ>f眺~v;F;$ڷ5+}Z>[DE0ѭK:78 (f)3®hKѼ \x:l1. 0 zOGs_,B'y[<nj쾽Ģ[dKg}I= )"WegӃ\=P=~UTf^ڗW#RDU(MZ\omTbC91͓ 0.|y'Rh4芷2(F# tNci`5o1[)&luƀ`q\U RLT. Upu {98wr\cpoR)=:#sXO{OC1q/FiO]<!w a luÜg-q,gL4:pa9eq.UJ#p}N@y;swEG\n^;:ؤ(Q c}{oe|,dre4/k~BhN܅UE|7~7.dyp2Q*6)u$:wv*iC]* Jh&̓K̄tSZ7olrr<`wtN _)776ꋏdLn[tqD|e]I^]rh͎O_;Üd~?&_)904TɩTp;yqZp[x \gE]pE4cL3Ղird] v,i8OS9}!$ZHn s:F,fOFMNRޢO9 G~~KQΓsh2T3tcp gWs^r|L[ip@˱3Aav;|ߒՂerɃCS!x}t+L_azV^k5?'cqYM^ta̷|)}OS01 80|+K3'ݞ/O{`9SCsr fkFVGHWϸܕl -ZǻXLj5ЍsypLԯ{!~7巻38(9D:ʖdL/_qWą6\GKXta%C9Ȉe2X>6Нo&TX.U2Y^QP s9 ;`ٟCyF`ңi|y^]r%İ,X|ϥ[g~h>g64] m!O+Ѵ`V@09\V8 '5``jˢU'QX2/C#r- '2㍳An'Asyqjpu/y5sRt)0L% ܼTҷtQdkİ0UJg,NG`>ZZ:3}<3$V\ IYzh,,v Oƙys<8/+c[ W1VY|JUyڃrwȗJg [v1ې1_yh+LYX6+GٔwzIpǑ^x#q@+\J+E2m52(~)>J&xЅyk`Sg0NW4|Ot'Il6~A9<hD~e* UQϪdތK \nJMx-b%(m1vقߒA|SyvGh0q}ndPA5l-Í);ּҳWanL;n".!oRNt)/DFBP/g^.%dqKV}݌'R(7_'edIǙ93N,<#﹤pUYI70t3_ BNqE;$[rD‘Je)esҸ:fQa+-_,'Ew3pD+XAJ*cW%颜i2 JSdFg>[mOC'pfz8D ( ?'MN4.No'JO|KՒ-/x.-Ӟ6r 9ȏ}2W@WKr;>ʷe㭲t.4aχ)F@D#_pҸ[PY :,3.:KNC\Guo1 zʧhґ=r3QheJLe8Z.E6h׍׺{a<4H\1"rQbXN؀k t$ggF-)~*,|\n֑Na{*8楖Y*u7xG{U+v3xy@Zyb[0[Mˊ/E^[NGUsA|h+uѮ5Z"oՁ|GD,=LLSQ qiLR,+aNaҬrҕ| ?yJ ɴǦc}[QE* S>()]ʃ9^e"IiN2 s|2##~B]:{c,MRʤIfh.n=ݐetx[N@G8M)/Y*Q'?Fϝ}N[Ko8h-y61x+,iZά.edxK02?EKhi1ets/%U8$'h;Fpɖ/ ܘ.N+ϡ<*圦kYX)e0,t[-Gi$liv3$@r2ҔOtw=iw0aʱVVAx"y,VXtʥ=-YsQɶABr₋W>ZYza`@ i<9eUҋ4U?•\wJly@m)iO'*ӓ,і: ;TBOY{WVP] *+Z򑞗cWiy:ʔbfLSRpXNpquڰiDrOo8Ù5+9&μO!Q9 )9zуi9맸**zWLюZIwY$|qǹ,ORDn/Q\$6 Hq6p$R^B@NnW^>Czэe%snD/V.C:a >r䟓LӨ[tc}I|o3?zqO-8st+ltV& ʌϽ3D9<ɍ;켭u,kCʍu:_B~]d]|Jyzh2kъ'WurKkwI^t6/J#:y`UVEZ %{ٗ#MkfFVrkk~KE:X1o.Y*g]|W$|幎I6yp/ْwһ<~IJ7tYr#5mǣ%gįr0s$\m:e,SqQ<̈2|SXn4}fL"_ >N~Ot0X` ˱<#N}KGyRpOi xKdJ~8BC&^/ >JFtxpʅ׻N OMx (_6Dʷ_r _ U=616Pv +λ=>'Nsha= qҶ`YwL.:wJ'3Jo_Kuf3Us<5O:RH~WBc=mɗ^cD'MJy5)h1Vtx0^XW#R8t#_15Ѷ|8aqOR>Χp3&q })˯i#ECu_U߱ c./ 'Z0D3.b,~@}.U|07Ur8чS%J&" 8qF(#)#AUpr*/{ne)ӊ ܅U~tGOT:ф$顸S.D:Jΐr!b)(T~:/$(ӵ`fE2Scr8%*/3L\f SƘ]:,k$FynyIf;̓t̋},C>ɸ EF-|-Q1hיBD~K}4&&qdGS6y T  [ fxaxNWBaY ˗<'.Et F=bOKrSX FxsڊG-~sr$MW vC(ɩ]c X-׈IY|&jZfY@鑆KVbΧg< ?q<+~Z_e'hZHtW| iϼ!WfcM e/:2M3|ey6L^Q.cJRAcDtua.;A43;>78<.l Ȯh)>֐9 Lqr2|ʿh[UU|yzRR;Z؅@X\+ #q:vNKBPBW^ Bt{oTt-| GXRPD́^>yZ /?e~KyXx9/w^NZ^e_l(15:/#$>U9ǕpwaL+8},X 3EZ-92]yX4B+N_a &_pϔp).ZĵN(. 'q A~:5-ns2*S/'Ip֢>Kw-:ƅ .-aq> \+DND J9@V#B #!RxNOeLN"Y<}r!|!/oڿnV$ 3v2y񸇕~']o<%sC8xK&a.W4-mhCVMd9>E HBZxakM4bNĒ%0}dD 8+?8VN~ YK' GMWyЅDXf2v=Ac~]+c}r't‹㞶E2E+_4=M4o 1tRڄɵ`ą9Q'%\rw96Cq^tglW2ͱ)tU/\n-$ij4802q*Lq*eH)N>ϯ\2>Fa1x.1:;FJ.u]rs gpDС_e6%Kbg}vX_It<$oIͼ{yr:9.}*~D=&ݖF4TY&2XxQ\fzSߕe3YhVN sxsVH)ҙ..y-QG2<2eVH]K8+(B69*4Ѹ>OE|xӞG7c t>Wݥb<&չ[* bɘy4 ½<ѫL+**sϯpYs[ʴ!s_K#IS+6٦`t7exc@(L#y+C-XK貂9%u|o:.UG9C5t S|iz9xXS> dyĜVi򊌬e8Lzd8tNAJK9 %#-#;ѽ9RFԎ+&>Sԓ*+dƗ.K[VT-ZViODOygZ9Σp|?2TFҫLp18q'q#e:N4)L?hk!<2У$)"T΀+ Vp4-uJ%^xB|wٓ M q_gZS䄾fc'1P2y0DR|(mulf{ZuxO݅2K$&eurF)L4' .m+:E~K޹X#aXͽQ BS"-_8DϘ[ch,qkwx+L>ǃAC8ZrKөj=huuMTSV1^H'\UXsۈ̸h'MYUy tU~K_f-`URS%d FzSʐG+oќF9L{,>F*SsE߂UEڃ˕ G~K`W\[zUnEU-m.k,iڀ^1sYtS4@ʊXN wEx[SLsx+]¨|UEJWyш_qKE'"'|a^Y巌V<._0]0& ir~UY߉Ad)]]ӄS~{:LWw^s+\ `K7+J_wJdMzL^a&Li'U|CNqҏ6JEp+\ ‰N:0{)2-O.3.uU2ߪ|@^ B_(Ì+ ecs\iexȃsL/C]+ _I1' > %3Ra+MӒ4询^r UJ7S9܍8+7VNGlخW6`6{<#N^qZ03r+0!sUFQQY,V$Og EC=x+pv_Ʃ,S\<ʛ|O?GvG7@pp2uC|*@Ċs͕DtIGh: x*.:̏ F FʂQWf DI$VR\^ H'cwTJ? Cpv@7(ǖ xN_֦ծ2 5_>凮uFbj_N#aIENDB`NiagaraSystemNS_DansingSprites)NS_DansingSpritesNiagaraSystembExposeToLibraryFalsebIsTemplateAssetFalseTemplateAssetDescriptiong> []M[]MZH* ZDEPR|/AK^kMMs!B3B64233488A92D56A9598805380640FR秄S Ofc4MRƯbF;EtAMR:K_0%KMRQT>eI MRflIInQ_MR2bES9Eg5MR_E[G?^BkMRs9KwAMRMJ)HQx(J گMR]5KnI<#MR*OJ-MRCH/eMRc]*wF7RMR` tI1_ݩMRWM:o=Jl~.LMRYt,D^MRN3qK&uMR b[LP\MCE3% ZJM% ZIM% ZFM% ZGM5,.?FzzzzDzDzD%!sM?E<EQZM Z;E[R[;aboTETa "投Z+DansingSprites*ZOZHMZM[Rx]vH$Q wRx]vH$Q X*i X4 6R'^(E} ޼lS65#$5ReA*Rvp,Eўj MfA*RE!4 `jGM$* Z.6M6Rze_J'sӓ65#%5ReA*RDgYQL2YMfA*RQ>o=a 6G-M$*Z/%7M6R9SDKT,y<65#'5ReA*Ryт *ԔaxIMfA*R޹u sԶ4n M$*Z0$>#&8M6RBK\8VM#k'w65#)5ReA*R}S_rY5򘾮Q?' MfA*R8v~BځACM$*\Z1,A2='<C!B ")-?(3@*9M6RW0~nIV#Q65#&5ReA*Ryт *ԔaxIMfA*R޹u sԶ4n M$*ZMB/Z_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mb_Z*(M`_Z*(Ma_Z*(M_Z*(M_Z*(M__Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M}_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mh_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mc_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M`_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(MP_Z*(M _Z*(M_Z*(M_Z*(M_Z*(Mb_Z*(M_Z*(Ma_Z*(MQ_Z*(MO!_Z*(M\_Z*(Mg_Z*(Mr_Z*(M}_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M#_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(MR_Z*(MS_Z*(MT_Z*(MU_Z*(MV_Z*(MW_Z*(MX_Z*(MY _Z*(MZ _Z*(M[ _Z*(M] _Z*(M^g_Z*(M_f_Z*(M`d_Z*(Mae_Z*(Mb_Z*(Md_Z*(Meb_Z*(Mf _Z*(Mh_Z*(Mj~_Z*(Ml_Z*(Mm_Z*(Mn_Z*(Mo_Z*(Mp_Z*(Mq_Z*(Ms_Z*(Mt_Z*(Mu_Z*(Mv_Z*(Mw_Z*(Mx_Z*(My_Z*(M?z_Z*(M{_Z*(M|_Z*(M~_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mc__Z*(Mi_Z*(Mk_Z*(M_Z*(M_Z*(M_Z*(MH*Z"6.7/8091)#>$%&'=(?-*@A B!C<",23PRsIAM[R0Ş"[AoV0)wR0Ş"[AoV0)X*X6R9?5 M,e65#*5ReA*R7^UW=&3Nb@!MfA*R:,bO0:OM$*Z4:M6R߉Tr5IwVi*65#+5ReA*Rs4pti >>,UMfA*Ru5Y{wn*R_Z*(M?_Z*(MA_Z*(MB_Z*(MC_Z*(MD_Z*(ME_Z*(MF_Z*(MG_Z*(MH_Z*(MI_Z*(MJ_Z*(ML_Z*(MM_Z*(MN_Z*(MO_Z*(MP_Z*(MQ_Z*(MR_Z*(MS_Z*(MT_Z*(MU_Z*(MW_Z*(MX_Z*(MY_Z*(MZ_Z*(M[_Z*(M\_Z*(M]_Z*(M^_Z*(M__Z*(M`_Z*(Mb_Z*(Mc_Z*(Md_Z*(Me_Z*(Mf_Z*(Mg_Z*(Mh_Z*(Mi_Z*(Mj_Z*(Mk_Z*(Mm_Z*(Mn_Z*(Mo_Z*(Mp _Z*(Mq _Z*(Mr _Z*(Ms _Z*(Mtg_Z*(Muf_Z*(Mvd_Z*(Mxe_Z*(My}_Z*(Mz`_Z*(M{_Z*(M|_Z*(M}_Z*(M~_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mb_Z*(Mh_Z*(M_Z*(M_Z*(Ma_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mc_Z*(M_Z*(M_Z*(M_Z*(Mb_Z*(M _Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M"_Z*(M_Z*(M_Z*(M~_Z*(M _Z*(M _Z*(M _Z*(M _Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M?_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M _Z*(M!_Z*(M__Z*(M_Z*(M _Z*(M"_Z*(M#_Z*(M$_Z*(M%H* Z:4;5+PR &Fo@u)y$MpZR2L7G_uhEmpty5#$[Rbd{G03&FspERguQ~MK{\͐xM֒_7D@^Eg֒_7D@^Egf&MM4{PBi煶ѽmpFhu>ѽmpFhu>i&MM:D` MAS[qpZR2L7G_uhEmpty5#%[RbY8GK(CFspGsER.pFC5MFWL%QrFWL%Qrf&MM+~6C=T!ٳyM7!D J(7!D J(f&MM1C7yHLw-#Z(IeAmo^(IeAmo^t&MMtruelꭇWB5$0lꭇWB5$0i&MMAnwBJLAZ6JZSRj+JYv_ISetAudioVolume[RCEfMIfFs@GsER K*RMeGW7TeGW7Tf&MMAFq;B7+Y:gRȬ{FW/˧gRȬ{FW/˧i&MM=7_d >L!,JZSRhe)w|FBȃ ۲ICurlNoiseForce[R 0uqE#BFsGs$R23ERx[BD#&* &M V%5K{ V%5K{f&MMB *>B@Ge)v 嬕1zIM 0 嬕1zIM 0H^MM lN"H lN"HG^MM ecEÜ ecEÜF^MM J¿L曁 J¿L曁&MMfalse k;{{LBx  k;{{LBx J4MMNewEnumerator3 ed]YNJeT< ed]YNJeT Od'O"[a> Od'O7&MMtrue";zC|v,p";zC|v,p8&MMfalse"6PWP41IQXŜ"6PWP41IQXŜi&MM)OHMu5LJZSRM@iC۫NIInitializeParticle[RϴG!EKAFsGs ER#"G_!M#yA)MBq#yA)MBqf&MM> \O!v#=>A؝f>z#=>A؝f>zi&MM&\!v@E2!֌JZSR!SVA(7M IParticleOwnerPosition[R!?A(`]jFsGsER#wF7AM$vH0$vH0f&MM0.hH=b$pvb vF $pvb vF ^&MM>WnHrv@dE2JZSRq@7~QI EmitterState[R2yyI/4+FsGs$R23ER4oNhBM %{ɾ&+Ab"%{ɾ&+Ab"f&MM/9KH 9%gqO;[6%gqO;[6^MM%39G6pS%39G6pS&MMfalse%PG)CPӟ%PG)CPӟ&MMfalse%*@IǗ%*@IǗ[4MMNewEnumerator0% 0-/Q\KG% 0-/Q\KG4MMNewEnumerator1%  AEa"E%  AEa"E4MMNewEnumerator0%F[k>Dy:n%F[k>Dy:n4MMNewEnumerator0%2?ͧ$)KY%2?ͧ$)KYDz4MMNewEnumerator0% @dL"d% @dL"d䅴&MMfalse%o|ʰ-[E3Q& %o|ʰ-[E3Q& :&MMfalse%;ΕGbT8%;ΕGbT8i&MMf:ܠFlJZSR`?A w ;ITorusLocation[RwfIH/Iۙ'FspGs ERӷ9Jy[Dh*M&\!v@E2!֌&\!v@E2!֌f&MM#=>A؝f>z&fBEDtH&fBEDtH'&MMfalse&* agB󢿱+L&* agB󢿱+L&MMfalse&WJoNM:&WJoNM:&MMfalse&ԯ!NGs^>@&ԯ!NGs^>@4MMNewEnumerator0&K8*I(c}e&K8*I(c}e4MMNewEnumerator0&2vCP:&2vCP:i&MM8!I(PJZSRkD9B*ISpectrumScript[R$(c|mJ-;cFs`GsERqzJwM'M*_tK,YhpӮ'M*_tK,YhpӮf&MM=CkGL'Y>!n3\'nQ!jBU~Ot<'nQ!jBU~Ot#ӛUj+Mcv$vH0eL8f_Z*(M[RE# ?u@ݣ3@FsGsERO'OTnp-M1C7yHLw-#Z1C7yHLw-#Ze&MM7!D J(eL80_Z*(MZsZ[R]tFInfFs@GsER(a|NOy3M2qZx3Bbm+2;t2qZx3Bbm+2;te^MM=ƧNE<eL8/_Z*(MZsZ [RwpJBNA]AZFsPGsERlwEIC*CM3C7JCo3C7JCoe^MM@;oIPJ}"eL8f_Z*(M[R&IGFsER1u C VTnM4{PBi煶4{PBi煶e&MM֒_7D@^EgeM8f_Z*(M[R^iL / ݌FsPGsER] nhN%뤅M5MCp5MCpe&MM+=zG\ﺌ/k*kL8]_Z*(M5#$[Rf>XbI1ZzERЮ !CGsM6I0%Jp6I0%Jp]&MM.qAU }k*kL8]_Z*(M5#%[R<7k0iPGy3GsERи;7 J)TW&M7HPKt~7HPKt~]&MMFNPH\ k*kM8]_Z*(M5#'[R/DeOj$ JGs ERHclepD5qrUmM8!I(P8!I(P]&MM&2vCP:k*kL8]_Z*(M5#)[R8<-4@~ %^\GsER'X6dO, M9y}7B.ތF}9y}7B.ތF}]&MM*]$Od9k*kL8]_Z*(M5#*[RˑmE)1YER,XDcU)&M:D` MAS[q:D` MAS[q]&MMѽmpFhu>k*kL8]_Z*(M5#+[R.OxfB NeGsERRQdqF݈ڄRM;؋RNt{4Me;؋RNt{4Me]&MM&h^+O jM&_(*QB n3 VG8|J%aFy[R좶JȻYh#ӛU#ӛUL!,=7_d >L!,&MMgRȬ{FW/˧H&Ol =ƧNE<=ƧNE<^MM2qZx3Bbm+2;t=CkGL'Y>!n3\=CkGL'Y>!n3\&MM'M*_tK,YhpӮζMO=+^DB̙=+^DB̙"Mi9+[L˽:_j[RI:'FsPGs ERaHvC<=xM>j+Mcv>j+Mcv&MM0.hH=bKw5Kk>VѼD]F/ >VѼD]F/ b!410DF1C24DBAD57EE4B2C99C05C900CA$InitializeParticle.Write SpriteSize&zMtrue"r9C+Ͼ>DMJcR4>DMJcR4`!9B92FCA541F2CF41DBE346BF63F0C1A3InitializeParticle.Write Color&zMtrueIB+KOC~>A1')FwfZ>A1')FwfZa!C3B110E7431866D7EB6CF88CCEFC13FB"InitializeParticle.Write Position&zMfalseIb섍Ekht>WnHrv@dE2>WnHrv@dE2_!D9CA4424477BB10DD0B899BA8A45F563InitializeParticle.Position&zM$pvb vF uCLiD@RC)"> \O!v> \O!v&MM#yA)MBq8+$@2>@WdKL=>@WdKL="M=FJF4)[R,&BHp,FsGsERڀ?6iIM?W3+IĜ}a?W3+IĜ}a&MM) "JR '7$NԪA?aBTFb\C?aBTFb\Cb^zM- A&Rg?p@ѦF'v?;qE-ImQ?;qE-ImQ&MM(#nEf DDϧ,J 8?OPG 5w?OPG 5w"Mog3J}?(Œň[R2XшM/OOhxFsGsER>CA("M@gkuxL@Zl4i ,@gkuxL@Zl4i ,&MM(&ױgEv{xW,'Mog^DR@;oIPJ}"@;oIPJ}"^MM3C7JCo@ $7.ES% @ $7.ES% &MM*g%OB@Ge)vB *>B@Ge)v&MM V%5K{8H*ɝ(B&E=B&E="M}Iib[RaTz;Hҗ^LFsGsERU5-9A2E1MC|UH]Bm 8рC|UH]Bm 8р&MM'nQ!jBU~Ot<M{XGlQx CɊ iJ HCɊ iJ H&zM<Lڨ4qO3UfO@·F+~,0CAwNL0)CAwNL0)&MM!ƭ-MDBSLbz\UG{ C52 UeDPK MWC52 UeDPK MW"M3[JfpqZGsER|i4E5(PMqZR2L7G_uhFsGsOEER%'kġI/ft:XM45#$5{ ZVNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterSpawnScriptMZMy>gR M-RعeQ+5#$#*&Emitter.LocalspaceCPUSim7A*RxSu_{i֊vl@;:EM*Q*RāMnM[_+rb7M*R}cF&b, PM*RW47-$ 4ި ?M*R˷ZȠjRڜvM*R*%LR?L1%M*Rwj.C=Wc~E*AMMM45#%5' *I<p_Z*(Mq_Z*(Mr_Z*(Ms_Z*(M }_Z*(M~_Z*(M_Z*(Mx* R?@E?@F[WNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterUpdateScriptMZMy>gR M-RعeQ+5#%#*&Emitter.LocalspaceCPUSim7A*RāMnM[_+rb7M*Q*RxSu_{i֊vl@;:EM*R}cF&b, PM*RW47-$ 4ި ?M*R˷ZȠjRڜvM*R*%LR?L1%M*Rwj.C=Wc~E*AMMM45#&5 *1 % <i_Z*(Mj_Z*(Mk_Z*(Ml_Z*(M m_Z*(Mn_Z*(Mo_Z*(M t_Z*(M$u_Z*(M4v_Z*(M8w_Z*(M<x_Z*(MHy_Z*(MLz_Z*(MT{_Z*(MX|_Z*(M\_Z*(M`_Z*(Md_Z*(Mh_Z*(Ml_Z*(Mp_Z*(Mt_Z*(Mx_Z*(M|_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(Mx*R;==??????@A????@@@F<FzD?BHBfff?B????? AXTNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:GPUComputeScriptMZMWh>gRO}`,@| 'iß5#&#*InterpolatedSpawnEmitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim>E7A*R޹u sԶ4n M*u@@*R޹u sԶ4n M*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*R8v~BځACM*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMyh>gRO}`,@| 'iß5#&#*InterpolatedSpawnEmitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim>E7A*R޹u sԶ4n M*u@@*R޹u sԶ4n M*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*R8v~BځACM*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMV={ {*m  {8 8u_Z*(M?t_Z*(M????v_Z*(M?y_Z*(M A Ax_Z*(Mw_Z*(M ???_Z*(M_Z*(M_Z*(M_Z*(M_Z*(MA_Z*(MB_Z*(M ???_Z*(M ?_Z*(M_Z*(M _Z*(M_Z*(MB_Z*(M?z_Z*(M?m_Z*(Mk_Z*(ML=l_Z*(M i_Z*(Mj_Z*(Mn_Z*(M?o_Z*(M?|_Z*(MzD{_Z*(M<F_Z*(MHB_Z*(Mfff?_Z*(MM,*,8%_Z*(M4_Z*(M`_Z*(M_Z*(M_Z*(M_Z*(MO_Z*(M_Z*(M _Z*(M_Z*(M_Z*(M_Z*(M _Z*(M _Z*(M_Z*(M_Z*(M,_Z*(MI_Z*(M*6++(<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM<s&@4_Z*(M*3h*h8_Z*(MS_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK M3h*h8_Z*(MS_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM<s&@4_Z*(M*h*h8K_Z*(MX_Z*(Mk*kL8>_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMAEM<s&@4_Z*(M*5MAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM*c ./H#G#MHdGcMHGMHGMHGMHGMHGMHGMHGMHdGcMHGM{^^// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; int Engine_System_SignificanceIndex; int Engine_System_PaddingInt32_0; int Engine_System_PaddingInt32_1; int Engine_System_PaddingInt32_2; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_InstanceSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float4 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float4 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float4 Constants_Emitter_TorusLocation_NonUniformScale; float4 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; float Constants_Emitter_SpectrumScript_Strength; float Constants_Emitter_SpectrumScript_Smothness; float Constants_Emitter_Multiply_Float_B; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; float Constants_Emitter_SpritesSizeByVAudioolume_Smothness; float Emitter_SpawnRate; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; int PREV_Engine_QualityLevel; int PREV_Engine_PaddingInt32_0; int PREV_Engine_PaddingInt32_1; int PREV_Engine_PaddingInt32_2; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; int PREV_Engine_System_SignificanceIndex; int PREV_Engine_System_PaddingInt32_0; int PREV_Engine_System_PaddingInt32_1; int PREV_Engine_System_PaddingInt32_2; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_InstanceSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float4 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float4 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float4 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float4 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; float PREV_Constants_Emitter_SpectrumScript_Strength; float PREV_Constants_Emitter_SpectrumScript_Smothness; float PREV_Constants_Emitter_Multiply_Float_B; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_Drag_Drag; float PREV_Constants_Emitter_Drag_RotationalDrag; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; float PREV_Constants_Emitter_SpritesSizeByVAudioolume_Smothness; float PREV_Emitter_SpawnRate; } struct FParamMap0_Transient { bool FirstFrame; float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float NormalizedAngleAroundTorusAxis; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; float3 TorusAxis; float3 TorusOrigin; }; struct FParamMap0_SolveForcesAndVelocity { float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles_Previous { float3 Position; float3 Velocity; }; struct FParamMap0_Particles_Presolve { float3 PhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_Particles { float Age; float AudioVolume; float4 Color; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; FParamMap0_Particles_Presolve Presolve; FParamMap0_Particles_Previous Previous; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_CurlNoiseForce CurlNoiseForce; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Multiply_Float { float A; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float MaterialRandom; float3 Position; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int SignificanceIndex; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int NumParticles; int PaddingInt32_0; int PaddingInt32_1; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; int RandomSeed; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseStrength; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume { float MaxSpriteSize; float Smothness; }; struct FParamMap0_Constants_Emitter_SpectrumScript { float Smothness; float Strength; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_Multiply_Float { float B; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_Multiply_Float Multiply_Float; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_SpectrumScript SpectrumScript; FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume SpritesSizeByVAudioolume; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_Multiply_Float Multiply_Float; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope001(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context); void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context); void SpectrumScript_Emitter_Func_(inout FSimulationContext Context); void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context); void SampleNoiseField_CurlNoiseForceCurlNoise(float3 In_XYZ, out float3 Out_Value); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void ColorScript_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope002(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant20 = true; float3 Constant21 = float3(0,0,0); float3 Vector_IfResult; if(Constant20) { Vector_IfResult = Constant21; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void GetRandomInfo_Emitter_Determinism_false_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant33 = false; int Constant34 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant34); bool Result1 = Constant33 && Result; int Constant35 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant35); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant36 = 0; int Constant37 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant36; Seed3_IfResult = Constant37; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant38 = -1; int Constant39 = -1; int Constant40 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant38; Seed2_IfResult1 = Constant39; Seed3_IfResult1 = Constant40; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant28 = (0); bool Constant29 = false; int Constant30 = 0; int Constant31 = (0); bool Constant32 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Particle_Func_(In_Seed, Constant28, In_OverrideSeed, Constant30, Constant31, Constant32, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant45 = true; float3 Constant46 = float3(0,0,0); float3 Vector_IfResult1; if(Constant45) { Vector_IfResult1 = Constant46; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant64 = (0); bool Constant65 = false; int Constant66 = 0; int Constant67 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Particle_Func_(In_Seed, Constant64, In_OverrideSeed, Constant66, Constant67, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Particle_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant74 = 1; float Result17 = cos(In_U*(TWO_PI/Constant74)); float Constant75 = 1; float Result18 = sin(In_U*(TWO_PI/Constant75)); float Constant76 = 1; float Result19 = cos(In_V*(TWO_PI/Constant76)); float Constant77 = 1; float Result20 = sin(In_V*(TWO_PI/Constant77)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context) { int Constant81 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant81); int Constant82 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant82); bool Result28 = Result26 && Result27; int Constant83 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant83); int Constant84 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant84); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant85 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant85); int Constant86 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant86); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; Out_LocalToWorld = Result52; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant80 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; bool TransformBase_Func_Output_LocalToWorld; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant80, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, TransformBase_Func_Output_LocalToWorld, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant59 = 0; float Constant60 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant59,Constant60); float Constant61 = 1; int Constant62 = 0; bool Constant63 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant62; Override_IfResult = Constant63; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant61, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant68 = 0; float Constant69 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant68,Constant69); float Constant70 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant70, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant71 = 0; float Constant72 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant71,Constant72); float Constant73 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant73, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant78 = 0; bool Constant79 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant78, Constant79, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant87 = 0; bool Constant88 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant87, Constant88, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant89 = 0; bool Constant90 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant89, Constant90, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; Context.MapUpdate.Transient.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant92 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant92); float Constant93 = 0.0001; float Result60 = Result59 - Constant93; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant94 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant94; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result64 = ExecIndex(); float Output0; Output0 = Result64; int Constant96 = -1; int Result65 = In_EngineExecutionCount + Constant96; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result65; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result66 = Output0 / Output01; Out_NormalizedExecIndex = Result66; } void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result63 = ExecIndex(); bool Constant95 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result63, Constant95, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant97 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant97, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude); int Constant98 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant98, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1); float Result67 = SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; Out_Volume = Result67; } void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context) { float SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SetAudioVolume_FunctionScriptAudio_Emitter_Func_(SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); Context.MapUpdate.Particles.AudioVolume = SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; } void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context) { float Constant99 = 0; bool Result68 = NiagaraAll(In_Y <= Constant99); float Constant100 = 1; float Result69 = abs(In_Y); float Constant101 = 0.001; float Result70 = max(Result69, Constant101); float Result71 = atan2(In_X,Result70)*(180.0f/PI); float Constant102 = 90; float Result72 = Result71 + Constant102; float Constant103 = 360; float Result73 = Result72 / Constant103; float Constant104 = 2; float Result74 = Result73 * Constant104; float float_IfResult; if(Result68) { float_IfResult = Constant100; } else { float_IfResult = Result74; } float Result75 = float_IfResult - Result73; Out_NormalizedAngle = Result75; } void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context) { float Result77 = length(In_V); float Result78 = Reciprocal(Result77); float3 Result79 = In_V * Result78; Out_Direction = Result79; Out_Length = Result77; } void SpectrumScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.MapUpdate.Particles.Position.x; Y = Context.MapUpdate.Particles.Position.y; Z = Context.MapUpdate.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle; NMS_GetNormalized2DAngle_Func_(X, Y, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Context); int Constant105 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant105, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); int Constant106 = 1; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant106, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1); float Result76 = AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude + AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; float3 DirectionAndLength_Func_Output_Direction; float DirectionAndLength_Func_Output_Length; DirectionAndLength_Func_(Context.MapUpdate.Particles.Position, DirectionAndLength_Func_Output_Direction, DirectionAndLength_Func_Output_Length, Context); float3 Result80 = Result76 * Context.MapUpdate.Constants.Emitter.SpectrumScript.Strength * DirectionAndLength_Func_Output_Direction; float3 Result81 = lerp(Result80,Context.MapUpdate.Particles.Position,Context.MapUpdate.Constants.Emitter.SpectrumScript.Smothness); float X1; float Y1; float Z1; X1 = Result81.x; Y1 = Result81.y; Z1 = Result81.z; float Constant107 = 0; float3 Output11; Output11.x = X1; Output11.y = Y1; Output11.z = Constant107; Context.MapUpdate.Particles.Position = Output11; } void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context) { float Result82 = Context.MapUpdate.Multiply_Float.A * Context.MapUpdate.Constants.Emitter.Multiply_Float.B; Out_Result = Result82; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result88 = length(In_V); bool Result89 = NiagaraAll(Result88 < In_Threshold); float Result90 = length(In_Fallback); float3 Vector_IfResult3; float float_IfResult1; if(Result89) { Vector_IfResult3 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult3 = In_V; float_IfResult1 = Result88; } float3 Result91 = Vector_IfResult3 / float_IfResult1; float3 Vector_IfResult4; float float_IfResult2; if(Result89) { Vector_IfResult4 = In_Fallback; float_IfResult2 = Result90; } else { Vector_IfResult4 = Result91; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult4; Out_Length = float_IfResult2; Out_BelowThreshold = Result89; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant116 = false; float AgeAdvancement_IfResult; if(Constant116) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant117 = 4096; int Constant118 = 0; float Result83 = rand_float(Constant117, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant118); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result83; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result84 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result85 = Result84 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result86 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement; float3 Result87 = Result85 - Result86; float3 SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value; SampleNoiseField_CurlNoiseForceCurlNoise(Result87, SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value); float3 Constant119 = float3(0,0,1); float Constant120 = 1e-05; float Constant121 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value, Constant119, Constant120, Constant121, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant122 = 0; float Constant123 = 1; float Result92 = clamp(DirectionAndLengthSafe_Func_Output_Length,Constant122,Constant123); float3 Result93 = DirectionAndLengthSafe_Func_Output_Direction * Result92; Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Result93; float Constant124 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant124; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result94 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.CurlNoiseForce.NoiseStrength; float3 Result95 = Context.MapUpdate.Transient.PhysicsForce + Result94; Context.MapUpdate.Transient.PhysicsForce = Result95; Context.MapUpdate.OUTPUT_VAR.CurlNoiseForce.CurlNoiseForce = Result94; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result96 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result96; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Particles.Presolve.Position = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.PhysicsForce = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant134 = 0.0001; float Result97 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant134); float Result98 = Reciprocal(Result97); float3 Result99 = Result98 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result99; float3 Result100 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant135 = 0; float Result101 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant135); float Result102 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result101; float Constant136 = 1; float Result103 = Result102 + Constant136; float3 Result104 = Result100 / Result103; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result104; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result105 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result105; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.Particles.Position; Velocity_IfResult = Context.MapUpdate.Particles.Velocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; float3 Constant137 = float3(0,0,0); float Constant138 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant137; Drag_IfResult = Constant138; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result106 = ExecIndex(); bool Constant139 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result106, Constant139, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant140 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant140, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant141 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant141, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result107 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result107; } void ColorScript_Emitter_Func_(inout FSimulationContext Context) { float ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; ColorScript_FunctionScriptAudio_Emitter_Func_(ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result108 = sin(Context.MapUpdate.Engine.Time); float Result109 = abs(Result108); float X2; float Y2; float Z2; X2 = Context.MapUpdate.Particles.Position.x; Y2 = Context.MapUpdate.Particles.Position.y; Z2 = Context.MapUpdate.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; NMS_GetNormalized2DAngle_Func_(X2, Y2, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1, Context); float Result110 = Result109 * NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; float Result111 = length(Context.MapUpdate.Particles.Position); float Constant142 = 0.002; float Result112 = Result109 * Result111 * Constant142; float Constant143 = 1; float4 Output12; Output12.r = ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; Output12.g = Result110; Output12.b = Result112; Output12.a = Constant143; Context.MapUpdate.Particles.Color = Output12; } void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result113 = ExecIndex(); bool Constant144 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2; NormalizedExecutionIndex_Func_(Result113, Constant144, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Context); int Constant145 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant145, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude); int Constant146 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant146, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1); float Result114 = SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; Out_Volume = Result114; } void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context) { float SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result115 = SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume * Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize; float X3; float Y3; X3 = Context.MapUpdate.Particles.SpriteSize.x; Y3 = Context.MapUpdate.Particles.SpriteSize.y; float Result116 = lerp(Result115,X3,Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.Smothness); float2 Output13; Output13.x = Result116; Output13.y = Result116; Context.MapUpdate.Particles.SpriteSize = Output13; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 0; Context.MapSpawn.Particles.MaterialRandom = Constant; float Constant1 = 1; Context.MapSpawn.Particles.Lifetime = Constant1; float4 Constant2 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant2; float Constant3 = 1; Context.MapSpawn.Particles.Mass = Constant3; float2 Constant4 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant4; float Constant5 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant5; float3 Constant6 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant6; float Constant7 = 0; Context.MapSpawn.Particles.Age = Constant7; float Constant8 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.AudioVolume = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; float3 Constant11 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Velocity = Constant11; float3 Constant12 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Position = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.PhysicsForce = Constant13; float3 Constant14 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Velocity = Constant14; float3 Constant15 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Position = Constant15; //End Initialize Parameter Map Defaults bool Constant16 = true; bool Constant17 = true; bool Constant18 = false; bool Constant19 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant16; Context.MapSpawn.InitializeParticle.WriteColor = Constant17; Context.MapSpawn.InitializeParticle.WritePosition = Constant18; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant22 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant22; float Constant23 = 0; float Constant24 = 1; int Constant25 = -1; int Constant26 = 0; bool Constant27 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant23, Constant24, Constant25, Constant26, Constant27, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; bool Constant41 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant42; bool Constant43 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant43; bool Constant44 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant44; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant47 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant47; int Constant48 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant48; bool Constant49 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant49; bool Constant50 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant50; float Constant51 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant51; float Constant52 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant52; float Constant53 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant56; bool Constant57 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant57; int Constant58 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant58; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! RandomCounterDeterministic = 0; bool Constant91 = true; Context.MapUpdate.DataInstance.Alive = Constant91; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(3 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); EnterStatScope(4 /**SetAudioVolume_Emitter_Func_*/); SetAudioVolume_Emitter_Func_(Context); ExitStatScope(/**SetAudioVolume_Emitter_Func_*/); EnterStatScope(5 /**SpectrumScript_Emitter_Func_*/); SpectrumScript_Emitter_Func_(Context); ExitStatScope(/**SpectrumScript_Emitter_Func_*/); Context.MapUpdate.Multiply_Float.A = Context.MapUpdate.Particles.AudioVolume; float Multiply_Float_Emitter_Func_Output_Result; Multiply_Float_Emitter_Func_(Multiply_Float_Emitter_Func_Output_Result, Context); Context.MapUpdate.CurlNoiseForce.NoiseStrength = Multiply_Float_Emitter_Func_Output_Result; bool Constant108 = false; int Constant109 = (0); float Constant110 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant110; float Constant111 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant111; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant112 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant112; float3 Constant113 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant113; float Constant114 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant114; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant115 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant115; EnterStatScope(6 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant109, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float Constant125 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant125; float Constant126 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant126; EnterStatScope(7 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant127 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant127; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant128 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant128; float3 Constant129 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant129; float3 Constant130 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant130; float Constant131 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant131; float3 Constant132 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant132; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.Previous.Velocity; bool Constant133 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant133; EnterStatScope(8 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(9 /**ColorScript_Emitter_Func_*/); ColorScript_Emitter_Func_(Context); ExitStatScope(/**ColorScript_Emitter_Func_*/); EnterStatScope(10 /**SpritesSizeByVAudioolume_Emitter_Func_*/); SpritesSizeByVAudioolume_Emitter_Func_(Context); ExitStatScope(/**SpritesSizeByVAudioolume_Emitter_Func_*/); //End Update Script! } Buffer AudioBuffer_Emitter_AudioOscilloscope001; int NumChannels_Emitter_AudioOscilloscope001; Buffer SpectrumBuffer_Emitter_AudioSpectrum; int NumChannels_Emitter_AudioSpectrum; int Resolution_Emitter_AudioSpectrum; float3 OffsetFromSeed_CurlNoiseForce_CurlNoise; float3 TilingAxes_Local_CurlNoiseForce_VectorField; float3 Dimensions_Local_CurlNoiseForce_VectorField; float3 MinBounds_Local_CurlNoiseForce_VectorField; float3 MaxBounds_Local_CurlNoiseForce_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce_VectorField; Buffer AudioBuffer_Emitter_AudioOscilloscope; int NumChannels_Emitter_AudioOscilloscope; Buffer AudioBuffer_Emitter_AudioOscilloscope002; int NumChannels_Emitter_AudioOscilloscope002; void SampleAudioBuffer_EmitterAudioOscilloscope001(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * 512 / NumChannels_Emitter_AudioOscilloscope001; int LowerIndex = floor(FrameIndex); int UpperIndex = LowerIndex < 512 ? LowerIndex + 1.0 : LowerIndex; float Fraction = FrameIndex - LowerIndex; float LowerValue = AudioBuffer_Emitter_AudioOscilloscope001.Load(LowerIndex * NumChannels_Emitter_AudioOscilloscope001 + In_ChannelIndex); float UpperValue = AudioBuffer_Emitter_AudioOscilloscope001.Load(UpperIndex * NumChannels_Emitter_AudioOscilloscope001 + In_ChannelIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_AudioSpectrum; int MaxIndex = Resolution_Emitter_AudioSpectrum - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_AudioSpectrum ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_AudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_AudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_AudioSpectrum + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void SampleNoiseField_CurlNoiseForceCurlNoise(float3 In_XYZ, out float3 Out_Value) { // NOTE(mv): The comments in random.ush claims that the unused part is optimized away, so it only uses 6 out of 12 values in our case. float3x4 J = JacobianSimplex_ALU(In_XYZ + OffsetFromSeed_CurlNoiseForce_CurlNoise, false, 1.0); Out_Value = float3(J[1][2]-J[2][1], J[2][0]-J[0][2], J[0][1]-J[1][0]); // See comments to JacobianSimplex_ALU in Random.ush } void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * 512 / NumChannels_Emitter_AudioOscilloscope; int LowerIndex = floor(FrameIndex); int UpperIndex = LowerIndex < 512 ? LowerIndex + 1.0 : LowerIndex; float Fraction = FrameIndex - LowerIndex; float LowerValue = AudioBuffer_Emitter_AudioOscilloscope.Load(LowerIndex * NumChannels_Emitter_AudioOscilloscope + In_ChannelIndex); float UpperValue = AudioBuffer_Emitter_AudioOscilloscope.Load(UpperIndex * NumChannels_Emitter_AudioOscilloscope + In_ChannelIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void SampleAudioBuffer_EmitterAudioOscilloscope002(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * 512 / NumChannels_Emitter_AudioOscilloscope002; int LowerIndex = floor(FrameIndex); int UpperIndex = LowerIndex < 512 ? LowerIndex + 1.0 : LowerIndex; float Fraction = FrameIndex - LowerIndex; float LowerValue = AudioBuffer_Emitter_AudioOscilloscope002.Load(LowerIndex * NumChannels_Emitter_AudioOscilloscope002 + In_ChannelIndex); float UpperValue = AudioBuffer_Emitter_AudioOscilloscope002.Load(UpperIndex * NumChannels_Emitter_AudioOscilloscope002 + In_ChannelIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void InitConstants(inout FSimulationContext Context) { Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize.xy; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Constants.Emitter.SpectrumScript.Strength = Constants_Emitter_SpectrumScript_Strength; Context.MapUpdate.Constants.Emitter.SpectrumScript.Smothness = Constants_Emitter_SpectrumScript_Smothness; Context.MapUpdate.Constants.Emitter.Multiply_Float.B = Constants_Emitter_Multiply_Float_B; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize = Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.Smothness = Constants_Emitter_SpritesSizeByVAudioolume_Smothness; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; } void InitSpawnVariables(inout FSimulationContext Context) { Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.AudioVolume = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.x = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.y = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.z = 0.0f; Context.MapSpawn.Particles.Presolve.Position.x = 0.0f; Context.MapSpawn.Particles.Presolve.Position.y = 0.0f; Context.MapSpawn.Particles.Presolve.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.x = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.y = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.z = 0.0f; Context.MapSpawn.Particles.Previous.Position.x = 0.0f; Context.MapSpawn.Particles.Previous.Position.y = 0.0f; Context.MapSpawn.Particles.Previous.Position.z = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.x = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.y = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.DataInstance.Alive=true; } void LoadUpdateVariables(inout FSimulationContext Context, int InstanceIdx) { Context.MapUpdate.Particles.Age = InputDataFloat(0, 0, InstanceIdx); Context.MapUpdate.Particles.AudioVolume = InputDataFloat(0, 1, InstanceIdx); Context.MapUpdate.Particles.Color.r = InputDataFloat(0, 2, InstanceIdx); Context.MapUpdate.Particles.Color.g = InputDataFloat(0, 3, InstanceIdx); Context.MapUpdate.Particles.Color.b = InputDataFloat(0, 4, InstanceIdx); Context.MapUpdate.Particles.Color.a = InputDataFloat(0, 5, InstanceIdx); Context.MapUpdate.Particles.Lifetime = InputDataFloat(0, 6, InstanceIdx); Context.MapUpdate.Particles.Mass = InputDataFloat(0, 7, InstanceIdx); Context.MapUpdate.Particles.MaterialRandom = InputDataFloat(0, 8, InstanceIdx); Context.MapUpdate.Particles.NormalizedAge = InputDataFloat(0, 9, InstanceIdx); Context.MapUpdate.Particles.Position.x = InputDataFloat(0, 10, InstanceIdx); Context.MapUpdate.Particles.Position.y = InputDataFloat(0, 11, InstanceIdx); Context.MapUpdate.Particles.Position.z = InputDataFloat(0, 12, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.x = InputDataFloat(0, 13, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.y = InputDataFloat(0, 14, InstanceIdx); Context.MapUpdate.Particles.Presolve.PhysicsForce.z = InputDataFloat(0, 15, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.x = InputDataFloat(0, 16, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.y = InputDataFloat(0, 17, InstanceIdx); Context.MapUpdate.Particles.Presolve.Position.z = InputDataFloat(0, 18, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.x = InputDataFloat(0, 19, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.y = InputDataFloat(0, 20, InstanceIdx); Context.MapUpdate.Particles.Presolve.Velocity.z = InputDataFloat(0, 21, InstanceIdx); Context.MapUpdate.Particles.Scale.x = InputDataFloat(0, 28, InstanceIdx); Context.MapUpdate.Particles.Scale.y = InputDataFloat(0, 29, InstanceIdx); Context.MapUpdate.Particles.Scale.z = InputDataFloat(0, 30, InstanceIdx); Context.MapUpdate.Particles.SpriteRotation = InputDataFloat(0, 31, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.x = InputDataFloat(0, 32, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.y = InputDataFloat(0, 33, InstanceIdx); Context.MapUpdate.Particles.UniqueID = InputDataInt(0, 0, InstanceIdx); Context.MapUpdate.Particles.Velocity.x = InputDataFloat(0, 34, InstanceIdx); Context.MapUpdate.Particles.Velocity.y = InputDataFloat(0, 35, InstanceIdx); Context.MapUpdate.Particles.Velocity.z = InputDataFloat(0, 36, InstanceIdx); Context.MapUpdate.Particles.Previous.Position = Context.MapUpdate.Particles.Position; Context.MapUpdate.Particles.Previous.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.DataInstance.Alive=true; } void ConditionalInterpolateParameters(inout FSimulationContext Context) { InterpolateParameters(Context); } void TransferAttributes(inout FSimulationContext Context) { Context.MapUpdate.Particles = Context.MapSpawn.Particles; Context.MapUpdate.Particles.Previous.Velocity = Context.MapSpawn.Particles.Velocity; Context.MapUpdate.Particles.Previous.Position = Context.MapSpawn.Particles.Position; } void StoreUpdateVariables(in FSimulationContext Context) { const bool bValid = Context.MapUpdate.DataInstance.Alive; const int WriteIndex = OutputIndex(0, true, bValid); if (bValid) { OutputDataFloat(0, 0, WriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, WriteIndex, Context.MapUpdate.Particles.AudioVolume); OutputDataFloat(0, 2, WriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 3, WriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 4, WriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 5, WriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 6, WriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 7, WriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 8, WriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 9, WriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 10, WriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 11, WriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 12, WriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 13, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 14, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 15, WriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 16, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.x); OutputDataFloat(0, 17, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.y); OutputDataFloat(0, 18, WriteIndex, Context.MapUpdate.Particles.Presolve.Position.z); OutputDataFloat(0, 19, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.x); OutputDataFloat(0, 20, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.y); OutputDataFloat(0, 21, WriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.z); OutputDataFloat(0, 22, WriteIndex, Context.MapUpdate.Particles.Previous.Position.x); OutputDataFloat(0, 23, WriteIndex, Context.MapUpdate.Particles.Previous.Position.y); OutputDataFloat(0, 24, WriteIndex, Context.MapUpdate.Particles.Previous.Position.z); OutputDataFloat(0, 25, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.x); OutputDataFloat(0, 26, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.y); OutputDataFloat(0, 27, WriteIndex, Context.MapUpdate.Particles.Previous.Velocity.z); OutputDataFloat(0, 28, WriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 29, WriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 30, WriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 31, WriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 32, WriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 33, WriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, WriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 34, WriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 35, WriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 36, WriteIndex, Context.MapUpdate.Particles.Velocity.z); } } void CopyInstance(in int InstanceIdx) { // TODO! } /* * CS wrapper for our generated code; calls spawn and update functions on the corresponding instances in the buffer */ [numthreads(THREADGROUP_SIZE, 1, 1)] void SimulateMainComputeCS( uint3 DispatchThreadId : SV_DispatchThreadID, uint3 GroupThreadId : SV_GroupThreadID) { GLinearThreadId = DispatchThreadId.x + (DispatchThreadId.y * DispatchThreadIdToLinear); GDispatchThreadId = DispatchThreadId; GGroupThreadId = GroupThreadId; GCurrentPhase = -1; GEmitterTickCounter = EmitterTickCounter; GSimStart = SimStart; GRandomSeedOffset = 0; /* if(CopyInstancesBeforeStart == 1) { UpdateStartInstance = 0; } */ // The CPU code will set UpdateStartInstance to 0 and ReadInstanceCountOffset to -1 for stages. const uint InstanceID = UpdateStartInstance + GLinearThreadId; if (ReadInstanceCountOffset == 0xFFFFFFFF) { GSpawnStartInstance = 0; } else { GSpawnStartInstance = RWInstanceCounts[ReadInstanceCountOffset]; // needed by ExecIndex() } bool bRunUpdateLogic, bRunSpawnLogic; #if USE_SIMULATION_STAGES int IterationInterfaceInstanceCount = SimulationStage_GetInstanceCount(); if (IterationInterfaceInstanceCount > 0) { bRunUpdateLogic = InstanceID < IterationInterfaceInstanceCount && GSimStart != 1; bRunSpawnLogic = InstanceID < IterationInterfaceInstanceCount && GSimStart == 1; } else #endif // USE_SIMULATION_STAGES { const int MaxInstances = GSpawnStartInstance + SpawnedInstances; bRunUpdateLogic = InstanceID < GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; bRunSpawnLogic = InstanceID >= GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; } const float RandomSeedInitialisation = NiagaraInternalNoise(InstanceID * 16384, 0 * 8196, (bRunUpdateLogic ? 4096 : 0) + EmitterTickCounter); // initialise the random state seed FSimulationContext Context = (FSimulationContext)0; BRANCH if (bRunUpdateLogic) { GCurrentPhase = GUpdatePhase; SetupExecIndexForGPU(); InitConstants(Context); LoadUpdateVariables(Context, InstanceID); ReadDataSets(Context); } else if (bRunSpawnLogic) { GCurrentPhase = GSpawnPhase; #if USE_SIMULATION_STAGES // Only process the spawn info for particle-based stages. Stages with an iteration interface expect the exec index to simply be the thread index. if (IterationInterfaceInstanceCount > 0) { SetupExecIndexForGPU(); } else #endif { SetupExecIndexAndSpawnInfoForGPU(); } InitConstants(Context); InitSpawnVariables(Context); ReadDataSets(Context); Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); ConditionalInterpolateParameters(Context); SimulateMapSpawn(Context); GCurrentPhase = GUpdatePhase; TransferAttributes(Context); } if (bRunUpdateLogic || bRunSpawnLogic) { SimulateMapUpdate(Context); WriteDataSets(Context); } StoreUpdateVariables(Context); } *Emitter_AudioOscilloscope001&NiagaraDataInterfaceAudioOscilloscope.SampleAudioBuffer_EmitterAudioOscilloscope001Emitter_AudioSpectrum"NiagaraDataInterfaceAudioSpectrum3#AudioSpectrum_EmitterAudioSpectrumCurlNoiseForce_CurlNoiseNiagaraDataInterfaceCurlNoise)SampleNoiseField_CurlNoiseForceCurlNoise!Local_CurlNoiseForce_VectorField NiagaraDataInterfaceVectorFieldEmitter_AudioOscilloscope&NiagaraDataInterfaceAudioOscilloscope+SampleAudioBuffer_EmitterAudioOscilloscopeEmitter_AudioOscilloscope002&NiagaraDataInterfaceAudioOscilloscope.SampleAudioBuffer_EmitterAudioOscilloscope002x5MT*T)Z<s&@4_Z*(MMMMZ<s&@4_Z*(MMMMZ<s&@4_Z*(MMMZ<s&@4_Z*(MMMZ<s&@4_Z*(MMMMZ<s&@4_Z*(MMMMM45#(5O * <t_Z*(Mu_Z*(Mv_Z*(Mw_Z*(Mx_Z*(M$y_Z*(M(_Z*(M0_Z*(M4_Z*(M8_Z*(M<_Z*(M@_Z*(ML_Z*(MP_Z*(M\_Z*(M`_Z*(Md_Z*(Mh_Z*(Ml_Z*(Mx_Z*(M|_Z*(M_Z*(M_Z*(Mx*R????@A????@@B????? ASONiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:SpawnScriptMZMW'>gRO}`,@| 'iß5#(#*InterpolatedSpawnEmitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim>E7A*R޹u sԶ4n M*4?*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*R8v~BځACM*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMy'>gRO}`,@| 'iß5#(#*InterpolatedSpawnEmitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim>E7A*R޹u sԶ4n M*4?*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*R8v~BځACM*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMV=Q*R[PX,DXH [T#X[\`dX#`XX#`XX# hhhh\\[l[p`tx%+|\[XX H , H   W W   \[      &` + X   W W                 \  [. .P ., ,  , . ,. , . , . , . , .  , B  B B= =  = HH H       `       W    % t + `+ `+ X+ X  + ` + ` + X+ X`X       \[tx        `X       `\[XXH,HWW  &`+X \[XXH,HWW x\\VSS SSSSXS`StSS S S S S SSSS S`S`S`S`SSSS`S`S`SXSXSXS`S S!TS"S #S $\Ys{ {* ${x 8u_Z*(M?t_Z*(M????v_Z*(M?y_Z*(M A Ax_Z*(Mw_Z*(M ???_Z*(M_Z*(M_Z*(M_Z*(M_Z*(MA_Z*(MB_Z*(M ???_Z*(M ?_Z*(M_Z*(M _Z*(M_Z*(MB_Z*(M?z_Z*(M?m_Z*(Mk_Z*(ML=l_Z*(M i_Z*(Mj_Z*(Mn_Z*(M?o_Z*(M?|_Z*(MzD{_Z*(M<F_Z*(MHB_Z*(Mfff?_Z*(M_Z*(M_Z*(M_Z*(M_Z*(MMo {* !{P 8n_Z*(M n_Z*(M n_Z*(M?n_Z*(Mn_Z*(Mn_Z*(MyDn_Z*(M@n_Z*(M n_Z*(Mn _Z*(M'7n _Z*(M8n _Z*(Mn _Z*(Mn _Z*(Mn_Z*(Mn_Z*(Mn_Z*(Mn_Z*(Mn_Z*(Mo:n_Z*(M.eBn_Z*(MBn_Z*(MCn_Z*(M@n_Z*(Mn_Z*(M fn_Z*(M_n_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMAEM<s&@4_Z*(M*5MAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEMY*: YKog*EVsK*5KLMog*EVsK*5KLM3og*EVsK*5KLM3og*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLM*A /H$G$MHdGcMHGMHGMHGMHGMHGMHGMHGMHdGcMHGMHGMHGMHGMzy8u8// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; int Engine_System_SignificanceIndex; int Engine_System_PaddingInt32_0; int Engine_System_PaddingInt32_1; int Engine_System_PaddingInt32_2; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_InstanceSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float2 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float3 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float3 Constants_Emitter_TorusLocation_NonUniformScale; float3 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; float Constants_Emitter_SpectrumScript_Strength; float Constants_Emitter_SpectrumScript_Smothness; float Constants_Emitter_Multiply_Float_B; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; float Constants_Emitter_SpritesSizeByVAudioolume_Smothness; int Engine_ExecutionCount; float Emitter_SpawnRate; float Emitter_SpawnInterval; float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; int PREV_Engine_QualityLevel; int PREV_Engine_PaddingInt32_0; int PREV_Engine_PaddingInt32_1; int PREV_Engine_PaddingInt32_2; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; int PREV_Engine_System_SignificanceIndex; int PREV_Engine_System_PaddingInt32_0; int PREV_Engine_System_PaddingInt32_1; int PREV_Engine_System_PaddingInt32_2; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_InstanceSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float2 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float3 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float3 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float3 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; float PREV_Constants_Emitter_SpectrumScript_Strength; float PREV_Constants_Emitter_SpectrumScript_Smothness; float PREV_Constants_Emitter_Multiply_Float_B; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_Drag_Drag; float PREV_Constants_Emitter_Drag_RotationalDrag; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; float PREV_Constants_Emitter_SpritesSizeByVAudioolume_Smothness; int PREV_Engine_ExecutionCount; float PREV_Emitter_SpawnRate; float PREV_Emitter_SpawnInterval; float PREV_Emitter_InterpSpawnStartDt; int PREV_Emitter_SpawnGroup; } struct FParamMap0_Transient { bool FirstFrame; float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float NormalizedAngleAroundTorusAxis; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; float3 TorusAxis; float3 TorusOrigin; }; struct FParamMap0_SolveForcesAndVelocity { float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles_Previous { float3 Position; float3 Velocity; }; struct FParamMap0_Particles_Presolve { float3 PhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_Particles { float Age; float AudioVolume; float4 Color; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; FParamMap0_Particles_Presolve Presolve; FParamMap0_Particles_Previous Previous; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_CurlNoiseForce CurlNoiseForce; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Multiply_Float { float A; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float MaterialRandom; float3 Position; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int SignificanceIndex; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int NumParticles; int PaddingInt32_0; int PaddingInt32_1; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; float InterpSpawnStartDt; int RandomSeed; int SpawnGroup; float SpawnInterval; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseStrength; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume { float MaxSpriteSize; float Smothness; }; struct FParamMap0_Constants_Emitter_SpectrumScript { float Smothness; float Strength; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_Multiply_Float { float B; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_Multiply_Float Multiply_Float; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_SpectrumScript SpectrumScript; FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume SpritesSizeByVAudioolume; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_Multiply_Float Multiply_Float; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope001(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context); void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context); void SpectrumScript_Emitter_Func_(inout FSimulationContext Context); void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context); void SampleNoiseField_CurlNoiseForceCurlNoise(float3 In_XYZ, out float3 Out_Value); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void ColorScript_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope002(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant20 = true; float3 Constant21 = float3(0,0,0); float3 Vector_IfResult; if(Constant20) { Vector_IfResult = Constant21; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant33 = false; int Constant34 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant34); bool Result1 = Constant33 && Result; int Constant35 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant35); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant36 = 0; int Constant37 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant36; Seed3_IfResult = Constant37; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant38 = -1; int Constant39 = -1; int Constant40 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant38; Seed2_IfResult1 = Constant39; Seed3_IfResult1 = Constant40; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant28 = (0); bool Constant29 = false; int Constant30 = 0; int Constant31 = (0); bool Constant32 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant28, In_OverrideSeed, Constant30, Constant31, Constant32, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant45 = true; float3 Constant46 = float3(0,0,0); float3 Vector_IfResult1; if(Constant45) { Vector_IfResult1 = Constant46; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant64 = (0); bool Constant65 = false; int Constant66 = 0; int Constant67 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant64, In_OverrideSeed, Constant66, Constant67, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant74 = 1; float Result17 = cos(In_U*(TWO_PI/Constant74)); float Constant75 = 1; float Result18 = sin(In_U*(TWO_PI/Constant75)); float Constant76 = 1; float Result19 = cos(In_V*(TWO_PI/Constant76)); float Constant77 = 1; float Result20 = sin(In_V*(TWO_PI/Constant77)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, out bool Out_LocalToWorld, inout FSimulationContext Context) { int Constant81 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant81); int Constant82 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant82); bool Result28 = Result26 && Result27; int Constant83 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant83); int Constant84 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant84); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant85 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant85); int Constant86 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant86); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; Out_LocalToWorld = Result52; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant80 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; bool TransformBase_Func_Output_LocalToWorld; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant80, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, TransformBase_Func_Output_LocalToWorld, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant59 = 0; float Constant60 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant59,Constant60); float Constant61 = 1; int Constant62 = 0; bool Constant63 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant62; Override_IfResult = Constant63; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant61, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant68 = 0; float Constant69 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant68,Constant69); float Constant70 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant70, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant71 = 0; float Constant72 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant71,Constant72); float Constant73 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant73, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant78 = 0; bool Constant79 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant78, Constant79, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant87 = 0; bool Constant88 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant87, Constant88, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant89 = 0; bool Constant90 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant89, Constant90, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; Context.MapUpdate.Transient.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant92 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant92); float Constant93 = 0.0001; float Result60 = Result59 - Constant93; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant94 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant94; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result64 = ExecIndex(); float Output0; Output0 = Result64; int Constant96 = -1; int Result65 = In_EngineExecutionCount + Constant96; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result65; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result66 = Output0 / Output01; Out_NormalizedExecIndex = Result66; } void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result63 = ExecIndex(); bool Constant95 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result63, Constant95, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant97 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant97, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude); int Constant98 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant98, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1); float Result67 = SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; Out_Volume = Result67; } void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context) { float SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SetAudioVolume_FunctionScriptAudio_Emitter_Func_(SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); Context.MapUpdate.Particles.AudioVolume = SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; } void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context) { float Constant99 = 0; bool Result68 = NiagaraAll(In_Y <= Constant99); float Constant100 = 1; float Result69 = abs(In_Y); float Constant101 = 0.001; float Result70 = max(Result69, Constant101); float Result71 = atan2(In_X,Result70)*(180.0f/PI); float Constant102 = 90; float Result72 = Result71 + Constant102; float Constant103 = 360; float Result73 = Result72 / Constant103; float Constant104 = 2; float Result74 = Result73 * Constant104; float float_IfResult; if(Result68) { float_IfResult = Constant100; } else { float_IfResult = Result74; } float Result75 = float_IfResult - Result73; Out_NormalizedAngle = Result75; } void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context) { float Result77 = length(In_V); float Result78 = Reciprocal(Result77); float3 Result79 = In_V * Result78; Out_Direction = Result79; Out_Length = Result77; } void SpectrumScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.MapUpdate.Particles.Position.x; Y = Context.MapUpdate.Particles.Position.y; Z = Context.MapUpdate.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle; NMS_GetNormalized2DAngle_Func_(X, Y, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Context); int Constant105 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant105, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); int Constant106 = 1; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant106, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1); float Result76 = AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude + AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; float3 DirectionAndLength_Func_Output_Direction; float DirectionAndLength_Func_Output_Length; DirectionAndLength_Func_(Context.MapUpdate.Particles.Position, DirectionAndLength_Func_Output_Direction, DirectionAndLength_Func_Output_Length, Context); float3 Result80 = Result76 * Context.MapUpdate.Constants.Emitter.SpectrumScript.Strength * DirectionAndLength_Func_Output_Direction; float3 Result81 = lerp(Result80,Context.MapUpdate.Particles.Position,Context.MapUpdate.Constants.Emitter.SpectrumScript.Smothness); float X1; float Y1; float Z1; X1 = Result81.x; Y1 = Result81.y; Z1 = Result81.z; float Constant107 = 0; float3 Output11; Output11.x = X1; Output11.y = Y1; Output11.z = Constant107; Context.MapUpdate.Particles.Position = Output11; } void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context) { float Result82 = Context.MapUpdate.Multiply_Float.A * Context.MapUpdate.Constants.Emitter.Multiply_Float.B; Out_Result = Result82; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result88 = length(In_V); bool Result89 = NiagaraAll(Result88 < In_Threshold); float Result90 = length(In_Fallback); float3 Vector_IfResult3; float float_IfResult1; if(Result89) { Vector_IfResult3 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult3 = In_V; float_IfResult1 = Result88; } float3 Result91 = Vector_IfResult3 / float_IfResult1; float3 Vector_IfResult4; float float_IfResult2; if(Result89) { Vector_IfResult4 = In_Fallback; float_IfResult2 = Result90; } else { Vector_IfResult4 = Result91; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult4; Out_Length = float_IfResult2; Out_BelowThreshold = Result89; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant116 = false; float AgeAdvancement_IfResult; if(Constant116) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant117 = 4096; int Constant118 = 0; float Result83 = rand_float(Constant117, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant118); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result83; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result84 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result85 = Result84 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result86 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement; float3 Result87 = Result85 - Result86; float3 SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value; SampleNoiseField_CurlNoiseForceCurlNoise(Result87, SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value); float3 Constant119 = float3(0,0,1); float Constant120 = 1e-05; float Constant121 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value, Constant119, Constant120, Constant121, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant122 = 0; float Constant123 = 1; float Result92 = clamp(DirectionAndLengthSafe_Func_Output_Length,Constant122,Constant123); float3 Result93 = DirectionAndLengthSafe_Func_Output_Direction * Result92; Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Result93; float Constant124 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant124; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result94 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.CurlNoiseForce.NoiseStrength; float3 Result95 = Context.MapUpdate.Transient.PhysicsForce + Result94; Context.MapUpdate.Transient.PhysicsForce = Result95; Context.MapUpdate.OUTPUT_VAR.CurlNoiseForce.CurlNoiseForce = Result94; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result96 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result96; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Particles.Presolve.Position = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.Particles.Presolve.PhysicsForce = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant134 = 0.0001; float Result97 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant134); float Result98 = Reciprocal(Result97); float3 Result99 = Result98 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result99; float3 Result100 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant135 = 0; float Result101 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant135); float Result102 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result101; float Constant136 = 1; float Result103 = Result102 + Constant136; float3 Result104 = Result100 / Result103; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result104; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result105 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result105; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.Particles.Position; Velocity_IfResult = Context.MapUpdate.Particles.Velocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; float3 Constant137 = float3(0,0,0); float Constant138 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant137; Drag_IfResult = Constant138; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result106 = ExecIndex(); bool Constant139 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result106, Constant139, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant140 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant140, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant141 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant141, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result107 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result107; } void ColorScript_Emitter_Func_(inout FSimulationContext Context) { float ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; ColorScript_FunctionScriptAudio_Emitter_Func_(ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result108 = sin(Context.MapUpdate.Engine.Time); float Result109 = abs(Result108); float X2; float Y2; float Z2; X2 = Context.MapUpdate.Particles.Position.x; Y2 = Context.MapUpdate.Particles.Position.y; Z2 = Context.MapUpdate.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; NMS_GetNormalized2DAngle_Func_(X2, Y2, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1, Context); float Result110 = Result109 * NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; float Result111 = length(Context.MapUpdate.Particles.Position); float Constant142 = 0.002; float Result112 = Result109 * Result111 * Constant142; float Constant143 = 1; float4 Output12; Output12.r = ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; Output12.g = Result110; Output12.b = Result112; Output12.a = Constant143; Context.MapUpdate.Particles.Color = Output12; } void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result113 = ExecIndex(); bool Constant144 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2; NormalizedExecutionIndex_Func_(Result113, Constant144, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Context); int Constant145 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant145, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude); int Constant146 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant146, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1); float Result114 = SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; Out_Volume = Result114; } void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context) { float SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result115 = SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume * Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize; float X3; float Y3; X3 = Context.MapUpdate.Particles.SpriteSize.x; Y3 = Context.MapUpdate.Particles.SpriteSize.y; float Result116 = lerp(Result115,X3,Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.Smothness); float2 Output13; Output13.x = Result116; Output13.y = Result116; Context.MapUpdate.Particles.SpriteSize = Output13; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 0; Context.MapSpawn.Particles.MaterialRandom = Constant; float Constant1 = 1; Context.MapSpawn.Particles.Lifetime = Constant1; float4 Constant2 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant2; float Constant3 = 1; Context.MapSpawn.Particles.Mass = Constant3; float2 Constant4 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant4; float Constant5 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant5; float3 Constant6 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant6; float Constant7 = 0; Context.MapSpawn.Particles.Age = Constant7; float Constant8 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.AudioVolume = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; float3 Constant11 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Velocity = Constant11; float3 Constant12 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.Position = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Presolve.PhysicsForce = Constant13; float3 Constant14 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Velocity = Constant14; float3 Constant15 = float3(0,0,0); Context.MapSpawn.Particles.Previous.Position = Constant15; //End Initialize Parameter Map Defaults bool Constant16 = true; bool Constant17 = true; bool Constant18 = false; bool Constant19 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant16; Context.MapSpawn.InitializeParticle.WriteColor = Constant17; Context.MapSpawn.InitializeParticle.WritePosition = Constant18; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant22 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant22; float Constant23 = 0; float Constant24 = 1; int Constant25 = -1; int Constant26 = 0; bool Constant27 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant23, Constant24, Constant25, Constant26, Constant27, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; bool Constant41 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant42; bool Constant43 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant43; bool Constant44 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant44; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant47 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant47; int Constant48 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant48; bool Constant49 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant49; bool Constant50 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant50; float Constant51 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant51; float Constant52 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant52; float Constant53 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant56; bool Constant57 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant57; int Constant58 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant58; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! RandomCounterDeterministic = 0; bool Constant91 = true; Context.MapUpdate.DataInstance.Alive = Constant91; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(3 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); EnterStatScope(4 /**SetAudioVolume_Emitter_Func_*/); SetAudioVolume_Emitter_Func_(Context); ExitStatScope(/**SetAudioVolume_Emitter_Func_*/); EnterStatScope(5 /**SpectrumScript_Emitter_Func_*/); SpectrumScript_Emitter_Func_(Context); ExitStatScope(/**SpectrumScript_Emitter_Func_*/); Context.MapUpdate.Multiply_Float.A = Context.MapUpdate.Particles.AudioVolume; float Multiply_Float_Emitter_Func_Output_Result; Multiply_Float_Emitter_Func_(Multiply_Float_Emitter_Func_Output_Result, Context); Context.MapUpdate.CurlNoiseForce.NoiseStrength = Multiply_Float_Emitter_Func_Output_Result; bool Constant108 = false; int Constant109 = (0); float Constant110 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant110; float Constant111 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant111; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant112 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant112; float3 Constant113 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant113; float Constant114 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant114; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant115 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant115; EnterStatScope(6 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant109, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float Constant125 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant125; float Constant126 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant126; EnterStatScope(7 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant127 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant127; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant128 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant128; float3 Constant129 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant129; float3 Constant130 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant130; float Constant131 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant131; float3 Constant132 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant132; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.Previous.Velocity; bool Constant133 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant133; EnterStatScope(8 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(9 /**ColorScript_Emitter_Func_*/); ColorScript_Emitter_Func_(Context); ExitStatScope(/**ColorScript_Emitter_Func_*/); EnterStatScope(10 /**SpritesSizeByVAudioolume_Emitter_Func_*/); SpritesSizeByVAudioolume_Emitter_Func_(Context); ExitStatScope(/**SpritesSizeByVAudioolume_Emitter_Func_*/); //End Update Script! } void SimulateMain() { EnterStatScope(11 /**SpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.AudioVolume = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.x = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.y = 0.0f; Context.MapSpawn.Particles.Presolve.PhysicsForce.z = 0.0f; Context.MapSpawn.Particles.Presolve.Position.x = 0.0f; Context.MapSpawn.Particles.Presolve.Position.y = 0.0f; Context.MapSpawn.Particles.Presolve.Position.z = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.x = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.y = 0.0f; Context.MapSpawn.Particles.Presolve.Velocity.z = 0.0f; Context.MapSpawn.Particles.Previous.Position.x = 0.0f; Context.MapSpawn.Particles.Previous.Position.y = 0.0f; Context.MapSpawn.Particles.Previous.Position.z = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.x = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.y = 0.0f; Context.MapSpawn.Particles.Previous.Velocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Constants.Emitter.SpectrumScript.Strength = Constants_Emitter_SpectrumScript_Strength; Context.MapUpdate.Constants.Emitter.SpectrumScript.Smothness = Constants_Emitter_SpectrumScript_Smothness; Context.MapUpdate.Constants.Emitter.Multiply_Float.B = Constants_Emitter_Multiply_Float_B; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize = Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; Context.MapUpdate.Constants.Emitter.SpritesSizeByVAudioolume.Smothness = Constants_Emitter_SpritesSizeByVAudioolume_Smothness; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Emitter.SpawnInterval = Emitter_SpawnInterval; Context.MapUpdate.Emitter.InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapUpdate.Emitter.SpawnGroup = Emitter_SpawnGroup; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; ReadDataSets(Context); InterpolateParameters(Context); EnterStatScope(12 /**SpawnScript_MapSpawnMain*/); SimulateMapSpawn(Context); ExitStatScope(/**SpawnScript_MapSpawnMain*/); //Begin Transfer of Attributes! Context.MapUpdate.Particles = Context.MapSpawn.Particles; Context.MapUpdate.Particles.Previous.Velocity = Context.MapSpawn.Particles.Velocity; Context.MapUpdate.Particles.Previous.Position = Context.MapSpawn.Particles.Position; //End Transfer of Attributes! EnterStatScope(13 /**SpawnScript_MapUpdateMain*/); SimulateMapUpdate(Context); ExitStatScope(/**SpawnScript_MapUpdateMain*/); WriteDataSets(Context); { bool bValid = Context.MapUpdate.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.MapUpdate.Particles.AudioVolume); OutputDataFloat(0, 2, TmpWriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 3, TmpWriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 4, TmpWriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 5, TmpWriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 6, TmpWriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 7, TmpWriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 8, TmpWriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 9, TmpWriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 10, TmpWriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 11, TmpWriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 12, TmpWriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 13, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 14, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 15, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 16, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.x); OutputDataFloat(0, 17, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.y); OutputDataFloat(0, 18, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Position.z); OutputDataFloat(0, 19, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.x); OutputDataFloat(0, 20, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.y); OutputDataFloat(0, 21, TmpWriteIndex, Context.MapUpdate.Particles.Presolve.Velocity.z); OutputDataFloat(0, 22, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.y); OutputDataFloat(0, 24, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Position.z); OutputDataFloat(0, 25, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.MapUpdate.Particles.Previous.Velocity.z); OutputDataFloat(0, 28, TmpWriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 29, TmpWriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 30, TmpWriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 31, TmpWriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 32, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 33, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 34, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 35, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 36, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.z); } ExitStatScope(/**SpawnScript_Main*/); } vSqOq ------------------------------- Summary ------------------------------- Num Byte Code Ops: 255 Num Constants: 437 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Engine_Owner_TimeSinceRendered 36 | Engine_Owner_LODDistance 40 | Engine_Owner_LODDistanceFraction 44 | Engine_System_Age 48 | Engine_Owner_ExecutionState 52 | Engine_System_TickCount 56 | Engine_System_NumEmitters 60 | Engine_System_NumEmittersAlive 64 | Engine_System_SignificanceIndex 68 | Engine_System_PaddingInt32_0 72 | Engine_System_PaddingInt32_1 76 | Engine_System_PaddingInt32_2 80 | Engine_Owner_SystemLocalToWorldRow0x 84 | Engine_Owner_SystemLocalToWorldRow0y 88 | Engine_Owner_SystemLocalToWorldRow0z 92 | Engine_Owner_SystemLocalToWorldRow0w 96 | Engine_Owner_SystemLocalToWorldRow1x 100 | Engine_Owner_SystemLocalToWorldRow1y 104 | Engine_Owner_SystemLocalToWorldRow1z 108 | Engine_Owner_SystemLocalToWorldRow1w 112 | Engine_Owner_SystemLocalToWorldRow2x 116 | Engine_Owner_SystemLocalToWorldRow2y 120 | Engine_Owner_SystemLocalToWorldRow2z 124 | Engine_Owner_SystemLocalToWorldRow2w 128 | Engine_Owner_SystemLocalToWorldRow3x 132 | Engine_Owner_SystemLocalToWorldRow3y 136 | Engine_Owner_SystemLocalToWorldRow3z 140 | Engine_Owner_SystemLocalToWorldRow3w 144 | Engine_Owner_SystemWorldToLocalRow0x 148 | Engine_Owner_SystemWorldToLocalRow0y 152 | Engine_Owner_SystemWorldToLocalRow0z 156 | Engine_Owner_SystemWorldToLocalRow0w 160 | Engine_Owner_SystemWorldToLocalRow1x 164 | Engine_Owner_SystemWorldToLocalRow1y 168 | Engine_Owner_SystemWorldToLocalRow1z 172 | Engine_Owner_SystemWorldToLocalRow1w 176 | Engine_Owner_SystemWorldToLocalRow2x 180 | Engine_Owner_SystemWorldToLocalRow2y 184 | Engine_Owner_SystemWorldToLocalRow2z 188 | Engine_Owner_SystemWorldToLocalRow2w 192 | Engine_Owner_SystemWorldToLocalRow3x 196 | Engine_Owner_SystemWorldToLocalRow3y 200 | Engine_Owner_SystemWorldToLocalRow3z 204 | Engine_Owner_SystemWorldToLocalRow3w 208 | Engine_Owner_SystemLocalToWorldTransposedRow0x 212 | Engine_Owner_SystemLocalToWorldTransposedRow0y 216 | Engine_Owner_SystemLocalToWorldTransposedRow0z 220 | Engine_Owner_SystemLocalToWorldTransposedRow0w 224 | Engine_Owner_SystemLocalToWorldTransposedRow1x 228 | Engine_Owner_SystemLocalToWorldTransposedRow1y 232 | Engine_Owner_SystemLocalToWorldTransposedRow1z 236 | Engine_Owner_SystemLocalToWorldTransposedRow1w 240 | Engine_Owner_SystemLocalToWorldTransposedRow2x 244 | Engine_Owner_SystemLocalToWorldTransposedRow2y 248 | Engine_Owner_SystemLocalToWorldTransposedRow2z 252 | Engine_Owner_SystemLocalToWorldTransposedRow2w 256 | Engine_Owner_SystemLocalToWorldTransposedRow3x 260 | Engine_Owner_SystemLocalToWorldTransposedRow3y 264 | Engine_Owner_SystemLocalToWorldTransposedRow3z 268 | Engine_Owner_SystemLocalToWorldTransposedRow3w 272 | Engine_Owner_SystemWorldToLocalTransposedRow0x 276 | Engine_Owner_SystemWorldToLocalTransposedRow0y 280 | Engine_Owner_SystemWorldToLocalTransposedRow0z 284 | Engine_Owner_SystemWorldToLocalTransposedRow0w 288 | Engine_Owner_SystemWorldToLocalTransposedRow1x 292 | Engine_Owner_SystemWorldToLocalTransposedRow1y 296 | Engine_Owner_SystemWorldToLocalTransposedRow1z 300 | Engine_Owner_SystemWorldToLocalTransposedRow1w 304 | Engine_Owner_SystemWorldToLocalTransposedRow2x 308 | Engine_Owner_SystemWorldToLocalTransposedRow2y 312 | Engine_Owner_SystemWorldToLocalTransposedRow2z 316 | Engine_Owner_SystemWorldToLocalTransposedRow2w 320 | Engine_Owner_SystemWorldToLocalTransposedRow3x 324 | Engine_Owner_SystemWorldToLocalTransposedRow3y 328 | Engine_Owner_SystemWorldToLocalTransposedRow3z 332 | Engine_Owner_SystemWorldToLocalTransposedRow3w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 368 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 372 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 376 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 380 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 384 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 388 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 392 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 396 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 432 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 436 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 440 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 444 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 448 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 452 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 456 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 460 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 464 | Engine_Owner_Rotationx 468 | Engine_Owner_Rotationy 472 | Engine_Owner_Rotationz 476 | Engine_Owner_Rotationw 480 | Engine_Owner_Positionx 484 | Engine_Owner_Positiony 488 | Engine_Owner_Positionz 492 | Engine_Owner_Positionw 496 | Engine_Owner_Velocityx 500 | Engine_Owner_Velocityy 504 | Engine_Owner_Velocityz 508 | Engine_Owner_Velocityw 512 | Engine_Owner_SystemXAxisx 516 | Engine_Owner_SystemXAxisy 520 | Engine_Owner_SystemXAxisz 524 | Engine_Owner_SystemXAxisw 528 | Engine_Owner_SystemYAxisx 532 | Engine_Owner_SystemYAxisy 536 | Engine_Owner_SystemYAxisz 540 | Engine_Owner_SystemYAxisw 544 | Engine_Owner_SystemZAxisx 548 | Engine_Owner_SystemZAxisy 552 | Engine_Owner_SystemZAxisz 556 | Engine_Owner_SystemZAxisw 560 | Engine_Owner_Scalex 564 | Engine_Owner_Scaley 568 | Engine_Owner_Scalez 572 | Engine_Owner_Scalew 576 | Engine_Emitter_NumParticles 580 | Engine_Emitter_TotalSpawnedParticles 584 | Engine_Emitter_SpawnCountScale 588 | Emitter_Age 592 | Emitter_RandomSeed 596 | Engine_Emitter_InstanceSeed 600 | Engine_Emitter_PaddingInt32_0 604 | Engine_Emitter_PaddingInt32_1 608 | Constants_Emitter_InitializeParticle_Lifetime 612 | Constants_Emitter_InitializeParticle_Colorx 616 | Constants_Emitter_InitializeParticle_Colory 620 | Constants_Emitter_InitializeParticle_Colorz 624 | Constants_Emitter_InitializeParticle_Colorw 628 | Constants_Emitter_InitializeParticle_Mass 632 | Constants_Emitter_InitializeParticle_SpriteSizex 636 | Constants_Emitter_InitializeParticle_SpriteSizey 640 | Constants_Emitter_InitializeParticle_SpriteRotation 644 | Constants_Emitter_InitializeParticle_MeshScalex 648 | Constants_Emitter_InitializeParticle_MeshScaley 652 | Constants_Emitter_InitializeParticle_MeshScalez 656 | Constants_Emitter_TorusLocation_SurfacePosition 660 | Constants_Emitter_TorusLocation_UDistribution 664 | Constants_Emitter_TorusLocation_VDistribution 668 | Constants_Emitter_TorusLocation_RandomSeed 672 | Constants_Emitter_TorusLocation_HandleRadius 676 | Constants_Emitter_TorusLocation_LargeRadius 680 | Constants_Emitter_TorusLocation_NonUniformScalex 684 | Constants_Emitter_TorusLocation_NonUniformScaley 688 | Constants_Emitter_TorusLocation_NonUniformScalez 692 | Constants_Emitter_TorusLocation_TorusAxisx 696 | Constants_Emitter_TorusLocation_TorusAxisy 700 | Constants_Emitter_TorusLocation_TorusAxisz 704 | Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 708 | Constants_Emitter_TorusLocation_Offsetx 712 | Constants_Emitter_TorusLocation_Offsety 716 | Constants_Emitter_TorusLocation_Offsetz 720 | Constants_Emitter_TorusLocation_SpawnGroupMask 724 | Constants_Emitter_SpectrumScript_Strength 728 | Constants_Emitter_SpectrumScript_Smothness 732 | Constants_Emitter_Multiply_Float_B 736 | Constants_Emitter_CurlNoiseForce_RandomSeed 740 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 744 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 748 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 752 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 756 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 760 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 764 | Constants_Emitter_Drag_Drag 768 | Constants_Emitter_Drag_RotationalDrag 772 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 776 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 780 | Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize 784 | Constants_Emitter_SpritesSizeByVAudioolume_Smothness 788 | Engine_ExecutionCount 792 | Emitter_SpawnRate 796 | Emitter_SpawnInterval 800 | Emitter_InterpSpawnStartDt 804 | Emitter_SpawnGroup 808 | PREV_Engine_DeltaTime 812 | PREV_Engine_InverseDeltaTime 816 | PREV_Engine_Time 820 | PREV_Engine_RealTime 824 | PREV_Engine_QualityLevel 828 | PREV_Engine_PaddingInt32_0 832 | PREV_Engine_PaddingInt32_1 836 | PREV_Engine_PaddingInt32_2 840 | PREV_Engine_Owner_TimeSinceRendered 844 | PREV_Engine_Owner_LODDistance 848 | PREV_Engine_Owner_LODDistanceFraction 852 | PREV_Engine_System_Age 856 | PREV_Engine_Owner_ExecutionState 860 | PREV_Engine_System_TickCount 864 | PREV_Engine_System_NumEmitters 868 | PREV_Engine_System_NumEmittersAlive 872 | PREV_Engine_System_SignificanceIndex 876 | PREV_Engine_System_PaddingInt32_0 880 | PREV_Engine_System_PaddingInt32_1 884 | PREV_Engine_System_PaddingInt32_2 888 | PREV_Engine_Owner_SystemLocalToWorldRow0x 892 | PREV_Engine_Owner_SystemLocalToWorldRow0y 896 | PREV_Engine_Owner_SystemLocalToWorldRow0z 900 | PREV_Engine_Owner_SystemLocalToWorldRow0w 904 | PREV_Engine_Owner_SystemLocalToWorldRow1x 908 | PREV_Engine_Owner_SystemLocalToWorldRow1y 912 | PREV_Engine_Owner_SystemLocalToWorldRow1z 916 | PREV_Engine_Owner_SystemLocalToWorldRow1w 920 | PREV_Engine_Owner_SystemLocalToWorldRow2x 924 | PREV_Engine_Owner_SystemLocalToWorldRow2y 928 | PREV_Engine_Owner_SystemLocalToWorldRow2z 932 | PREV_Engine_Owner_SystemLocalToWorldRow2w 936 | PREV_Engine_Owner_SystemLocalToWorldRow3x 940 | PREV_Engine_Owner_SystemLocalToWorldRow3y 944 | PREV_Engine_Owner_SystemLocalToWorldRow3z 948 | PREV_Engine_Owner_SystemLocalToWorldRow3w 952 | PREV_Engine_Owner_SystemWorldToLocalRow0x 956 | PREV_Engine_Owner_SystemWorldToLocalRow0y 960 | PREV_Engine_Owner_SystemWorldToLocalRow0z 964 | PREV_Engine_Owner_SystemWorldToLocalRow0w 968 | PREV_Engine_Owner_SystemWorldToLocalRow1x 972 | PREV_Engine_Owner_SystemWorldToLocalRow1y 976 | PREV_Engine_Owner_SystemWorldToLocalRow1z 980 | PREV_Engine_Owner_SystemWorldToLocalRow1w 984 | PREV_Engine_Owner_SystemWorldToLocalRow2x 988 | PREV_Engine_Owner_SystemWorldToLocalRow2y 992 | PREV_Engine_Owner_SystemWorldToLocalRow2z 996 | PREV_Engine_Owner_SystemWorldToLocalRow2w 1000 | PREV_Engine_Owner_SystemWorldToLocalRow3x 1004 | PREV_Engine_Owner_SystemWorldToLocalRow3y 1008 | PREV_Engine_Owner_SystemWorldToLocalRow3z 1012 | PREV_Engine_Owner_SystemWorldToLocalRow3w 1016 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0x 1020 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0y 1024 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0z 1028 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0w 1032 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1x 1036 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1y 1040 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1z 1044 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1w 1048 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2x 1052 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2y 1056 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2z 1060 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2w 1064 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3x 1068 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3y 1072 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3z 1076 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3w 1080 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0x 1084 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0y 1088 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0z 1092 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0w 1096 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1x 1100 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1y 1104 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1z 1108 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1w 1112 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2x 1116 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2y 1120 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2z 1124 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2w 1128 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3x 1132 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3y 1136 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3z 1140 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3w 1144 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0x 1148 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0y 1152 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0z 1156 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0w 1160 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1x 1164 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1y 1168 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1z 1172 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1w 1176 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2x 1180 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2y 1184 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2z 1188 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2w 1192 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3x 1196 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3y 1200 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3z 1204 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3w 1208 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0x 1212 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0y 1216 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0z 1220 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0w 1224 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1x 1228 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1y 1232 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1z 1236 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1w 1240 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2x 1244 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2y 1248 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2z 1252 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2w 1256 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3x 1260 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3y 1264 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3z 1268 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3w 1272 | PREV_Engine_Owner_Rotationx 1276 | PREV_Engine_Owner_Rotationy 1280 | PREV_Engine_Owner_Rotationz 1284 | PREV_Engine_Owner_Rotationw 1288 | PREV_Engine_Owner_Positionx 1292 | PREV_Engine_Owner_Positiony 1296 | PREV_Engine_Owner_Positionz 1300 | PREV_Engine_Owner_Positionw 1304 | PREV_Engine_Owner_Velocityx 1308 | PREV_Engine_Owner_Velocityy 1312 | PREV_Engine_Owner_Velocityz 1316 | PREV_Engine_Owner_Velocityw 1320 | PREV_Engine_Owner_SystemXAxisx 1324 | PREV_Engine_Owner_SystemXAxisy 1328 | PREV_Engine_Owner_SystemXAxisz 1332 | PREV_Engine_Owner_SystemXAxisw 1336 | PREV_Engine_Owner_SystemYAxisx 1340 | PREV_Engine_Owner_SystemYAxisy 1344 | PREV_Engine_Owner_SystemYAxisz 1348 | PREV_Engine_Owner_SystemYAxisw 1352 | PREV_Engine_Owner_SystemZAxisx 1356 | PREV_Engine_Owner_SystemZAxisy 1360 | PREV_Engine_Owner_SystemZAxisz 1364 | PREV_Engine_Owner_SystemZAxisw 1368 | PREV_Engine_Owner_Scalex 1372 | PREV_Engine_Owner_Scaley 1376 | PREV_Engine_Owner_Scalez 1380 | PREV_Engine_Owner_Scalew 1384 | PREV_Engine_Emitter_NumParticles 1388 | PREV_Engine_Emitter_TotalSpawnedParticles 1392 | PREV_Engine_Emitter_SpawnCountScale 1396 | PREV_Emitter_Age 1400 | PREV_Emitter_RandomSeed 1404 | PREV_Engine_Emitter_InstanceSeed 1408 | PREV_Engine_Emitter_PaddingInt32_0 1412 | PREV_Engine_Emitter_PaddingInt32_1 1416 | PREV_Constants_Emitter_InitializeParticle_Lifetime 1420 | PREV_Constants_Emitter_InitializeParticle_Colorx 1424 | PREV_Constants_Emitter_InitializeParticle_Colory 1428 | PREV_Constants_Emitter_InitializeParticle_Colorz 1432 | PREV_Constants_Emitter_InitializeParticle_Colorw 1436 | PREV_Constants_Emitter_InitializeParticle_Mass 1440 | PREV_Constants_Emitter_InitializeParticle_SpriteSizex 1444 | PREV_Constants_Emitter_InitializeParticle_SpriteSizey 1448 | PREV_Constants_Emitter_InitializeParticle_SpriteRotation 1452 | PREV_Constants_Emitter_InitializeParticle_MeshScalex 1456 | PREV_Constants_Emitter_InitializeParticle_MeshScaley 1460 | PREV_Constants_Emitter_InitializeParticle_MeshScalez 1464 | PREV_Constants_Emitter_TorusLocation_SurfacePosition 1468 | PREV_Constants_Emitter_TorusLocation_UDistribution 1472 | PREV_Constants_Emitter_TorusLocation_VDistribution 1476 | PREV_Constants_Emitter_TorusLocation_RandomSeed 1480 | PREV_Constants_Emitter_TorusLocation_HandleRadius 1484 | PREV_Constants_Emitter_TorusLocation_LargeRadius 1488 | PREV_Constants_Emitter_TorusLocation_NonUniformScalex 1492 | PREV_Constants_Emitter_TorusLocation_NonUniformScaley 1496 | PREV_Constants_Emitter_TorusLocation_NonUniformScalez 1500 | PREV_Constants_Emitter_TorusLocation_TorusAxisx 1504 | PREV_Constants_Emitter_TorusLocation_TorusAxisy 1508 | PREV_Constants_Emitter_TorusLocation_TorusAxisz 1512 | PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 1516 | PREV_Constants_Emitter_TorusLocation_Offsetx 1520 | PREV_Constants_Emitter_TorusLocation_Offsety 1524 | PREV_Constants_Emitter_TorusLocation_Offsetz 1528 | PREV_Constants_Emitter_TorusLocation_SpawnGroupMask 1532 | PREV_Constants_Emitter_SpectrumScript_Strength 1536 | PREV_Constants_Emitter_SpectrumScript_Smothness 1540 | PREV_Constants_Emitter_Multiply_Float_B 1544 | PREV_Constants_Emitter_CurlNoiseForce_RandomSeed 1548 | PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency 1552 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 1556 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 1560 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 1564 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 1568 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 1572 | PREV_Constants_Emitter_Drag_Drag 1576 | PREV_Constants_Emitter_Drag_RotationalDrag 1580 | PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 1584 | PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 1588 | PREV_Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize 1592 | PREV_Constants_Emitter_SpritesSizeByVAudioolume_Smothness 1596 | PREV_Engine_ExecutionCount 1600 | PREV_Emitter_SpawnRate 1604 | PREV_Emitter_SpawnInterval 1608 | PREV_Emitter_InterpSpawnStartDt 1612 | PREV_Emitter_SpawnGroup 1616 | 11 1620 | 12 1624 | 1 1628 | 2 1632 | 0 1636 | 999 1640 | 6.28318548 1644 | 13 1648 | 3 1652 | 9.99999975e-06 1656 | 9.99999975e-05 1660 | True 1664 | False 1668 | 4 1672 | -1 1676 | 0 1680 | 1 1684 | 5 1688 | 0.00100000005 1692 | 57.2957764 1696 | 90 1700 | 360 1704 | 2 1708 | 6 1712 | 1664525 1716 | 1013904223 1720 | 8 1724 | 16777215 1728 | 16777216 1732 | 4096 1736 | 9 1740 | 0.00200000009 1744 | 10 ------------------------------- Byte Code (255 Ops) ------------------------------- 0 | enter_stat_scope(C[1616]); 1 | R[0] = __OP__88; 2 | R[1] = addi(C[580], R[0]); 3 | R[0] = __OP__88; 4 | R[2] = i2f(R[0]); 5 | R[0] = mad(C[796], R[2], C[800]); 6 | R[2] = sub(C[0], R[0]); 7 | enter_stat_scope(C[1620]); 8 | R[0] = random(C[1624]); 9 | enter_stat_scope(C[1628]); 10 | R[3] = clamp(C[656], C[1632], C[1636]); 11 | R[4] = sub(C[1624], R[3]); 12 | R[5] = random(R[4]); 13 | R[4] = add(R[3], R[5]); 14 | R[3] = clamp(C[660], C[1632], C[1624]); 15 | R[5] = sub(C[1624], R[3]); 16 | R[6] = random(R[5]); 17 | R[5] = add(R[3], R[6]); 18 | R[3] = clamp(C[664], C[1632], C[1624]); 19 | R[6] = sub(C[1624], R[3]); 20 | R[7] = random(R[6]); 21 | R[6] = add(R[3], R[7]); 22 | R[3] = sqrt(R[4]); 23 | R[4] = mul(R[3], C[672]); 24 | R[3] = mul(R[6], C[1640]); 25 | R[7] = cos(R[3]); 26 | R[3] = mad(R[4], R[7], C[676]); 27 | R[7] = mul(R[5], C[1640]); 28 | R[8] = cos(R[7]); 29 | R[7] = mul(R[3], R[8]); 30 | R[8] = mul(R[5], C[1640]); 31 | R[5] = sin(R[8]); 32 | R[8] = mul(R[3], R[5]); 33 | R[3] = mul(R[6], C[1640]); 34 | R[5] = sin(R[3]); 35 | R[3] = mul(R[4], R[5]); 36 | R[4] = add(R[7], C[708]); 37 | R[5] = add(R[8], C[712]); 38 | R[6] = add(R[3], C[716]); 39 | exit_stat_scope(); 40 | exit_stat_scope(); 41 | enter_stat_scope(C[1644]); 42 | enter_stat_scope(C[1648]); 43 | R[3] = max(C[608], C[1652]); 44 | R[7] = sub(R[3], C[1656]); 45 | R[8] = cmplt(R[2], R[7]); 46 | R[7] = select(R[8], C[1660], C[1664]); 47 | R[8] = div(R[2], R[3]); 48 | exit_stat_scope(); 49 | enter_stat_scope(C[1668]); 50 | R[3] = __OP__88; 51 | R[9] = __OP__88; 52 | R[10] = i2f(R[9]); 53 | R[9] = addi(R[3], C[1672]); 54 | R[3] = i2f(R[9]); 55 | R[9] = div(R[10], R[3]); 56 | SampleAudioBuffer_EmitterAudioOscilloscope001[func0](R[9], C[1676], R[3]); 57 | SampleAudioBuffer_EmitterAudioOscilloscope001[func1](R[9], C[1680], R[10]); 58 | R[9] = add(R[3], R[10]); 59 | exit_stat_scope(); 60 | enter_stat_scope(C[1684]); 61 | R[3] = abs(R[5]); 62 | R[10] = max(R[3], C[1688]); 63 | R[3] = atan2(R[4], R[10]); 64 | R[10] = mad(R[3], C[1692], C[1696]); 65 | R[3] = div(R[10], C[1700]); 66 | R[10] = mul(R[3], C[1704]); 67 | R[11] = cmple(R[5], C[1632]); 68 | R[12] = select(R[11], C[1624], R[10]); 69 | R[10] = sub(R[12], R[3]); 70 | AudioSpectrum_EmitterAudioSpectrum[func2](R[10], C[1676], R[3]); 71 | AudioSpectrum_EmitterAudioSpectrum[func3](R[10], C[1680], R[11]); 72 | R[10] = add(R[3], R[11]); 73 | R[3] = mul(R[10], C[724]); 74 | R[10] = mul(R[5], R[5]); 75 | R[11] = mad(R[4], R[4], R[10]); 76 | R[10] = mad(R[6], R[6], R[11]); 77 | R[11] = rsq(R[10]); 78 | R[10] = mul(R[4], R[11]); 79 | R[12] = mul(R[5], R[11]); 80 | R[13] = mul(R[6], R[11]); 81 | R[11] = mul(R[3], R[10]); 82 | R[10] = mul(R[3], R[12]); 83 | R[12] = mul(R[3], R[13]); 84 | R[3] = lerp(R[11], R[4], C[728]); 85 | R[11] = lerp(R[10], R[5], C[728]); 86 | exit_stat_scope(); 87 | R[10] = mul(R[9], C[732]); 88 | enter_stat_scope(C[1708]); 89 | R[12] = muli(C[736], C[1712]); 90 | R[13] = muli(C[592], C[1712]); 91 | R[14] = muli(C[1680], C[1712]); 92 | R[15] = addi(R[12], C[1716]); 93 | R[12] = addi(R[13], C[1716]); 94 | R[13] = addi(R[14], C[1716]); 95 | R[14] = muli(R[12], R[13]); 96 | R[16] = addi(R[15], R[14]); 97 | R[14] = muli(R[13], R[16]); 98 | R[15] = addi(R[12], R[14]); 99 | R[12] = muli(R[16], R[15]); 100 | R[14] = addi(R[13], R[12]); 101 | R[12] = muli(R[15], R[14]); 102 | R[13] = addi(R[16], R[12]); 103 | R[12] = muli(R[14], R[13]); 104 | R[16] = addi(R[15], R[12]); 105 | R[12] = muli(R[13], R[16]); 106 | R[15] = addi(R[14], R[12]); 107 | R[12] = bit_rshift(R[13], C[1720]); 108 | R[13] = bit_rshift(R[16], C[1720]); 109 | R[14] = bit_rshift(R[15], C[1720]); 110 | R[15] = bit_and(R[12], C[1724]); 111 | R[12] = bit_and(R[13], C[1724]); 112 | R[13] = bit_and(R[14], C[1724]); 113 | R[14] = i2f(R[15]); 114 | R[15] = i2f(R[12]); 115 | R[12] = i2f(R[13]); 116 | R[13] = div(R[14], C[1728]); 117 | R[12] = mad(R[13], C[1732], R[3]); 118 | R[14] = mad(R[13], C[1732], R[11]); 119 | R[15] = mad(R[13], C[1732], C[1632]); 120 | R[13] = mul(R[12], C[740]); 121 | R[12] = mul(R[14], C[740]); 122 | R[14] = mul(R[15], C[740]); 123 | R[15] = mul(C[744], C[8]); 124 | R[16] = mul(C[748], C[8]); 125 | R[17] = mul(C[752], C[8]); 126 | R[18] = sub(R[13], R[15]); 127 | R[13] = sub(R[12], R[16]); 128 | R[12] = sub(R[14], R[17]); 129 | SampleNoiseField_CurlNoiseForceCurlNoise[func4](R[18], R[13], R[12], R[14], R[15], R[16]); 130 | R[12] = mul(R[15], R[15]); 131 | R[13] = mad(R[14], R[14], R[12]); 132 | R[12] = mad(R[16], R[16], R[13]); 133 | R[13] = sqrt(R[12]); 134 | R[12] = cmplt(R[13], C[1652]); 135 | R[17] = select(R[12], C[1632], R[14]); 136 | R[14] = select(R[12], C[1632], R[15]); 137 | R[15] = select(R[12], C[1624], R[16]); 138 | R[16] = select(R[12], C[1624], R[13]); 139 | R[13] = div(R[17], R[16]); 140 | R[17] = div(R[14], R[16]); 141 | R[14] = div(R[15], R[16]); 142 | R[15] = select(R[12], C[1632], R[13]); 143 | R[13] = select(R[12], C[1632], R[17]); 144 | R[17] = select(R[12], C[1624], R[14]); 145 | R[14] = select(R[12], C[1624], R[16]); 146 | R[12] = clamp(R[14], C[1632], C[1624]); 147 | R[14] = mul(R[15], R[12]); 148 | R[15] = mul(R[13], R[12]); 149 | R[13] = mul(R[17], R[12]); 150 | R[12] = mul(R[14], R[10]); 151 | R[14] = mul(R[15], R[10]); 152 | R[15] = mul(R[13], R[10]); 153 | exit_stat_scope(); 154 | enter_stat_scope(C[1720]); 155 | R[10] = max(C[628], C[1656]); 156 | R[13] = rcp(R[10]); 157 | R[10] = mul(R[13], R[12]); 158 | R[16] = mul(R[13], R[14]); 159 | R[17] = mul(R[13], R[15]); 160 | R[13] = mul(R[10], R[2]); 161 | R[10] = mul(R[16], R[2]); 162 | R[16] = mul(R[17], R[2]); 163 | R[17] = max(C[764], C[1632]); 164 | R[18] = mad(R[2], R[17], C[1624]); 165 | R[17] = div(R[13], R[18]); 166 | R[13] = div(R[10], R[18]); 167 | R[10] = div(R[16], R[18]); 168 | R[16] = mad(R[17], R[2], R[3]); 169 | R[18] = mad(R[13], R[2], R[11]); 170 | R[19] = mad(R[10], R[2], C[1632]); 171 | exit_stat_scope(); 172 | enter_stat_scope(C[1736]); 173 | R[20] = __OP__88; 174 | R[21] = __OP__88; 175 | R[22] = i2f(R[21]); 176 | R[21] = addi(R[20], C[1672]); 177 | R[20] = i2f(R[21]); 178 | R[21] = div(R[22], R[20]); 179 | SampleAudioBuffer_EmitterAudioOscilloscope[func5](R[21], C[1676], R[20]); 180 | SampleAudioBuffer_EmitterAudioOscilloscope[func6](R[21], C[1680], R[22]); 181 | R[21] = add(R[20], R[22]); 182 | R[20] = sin(C[8]); 183 | R[22] = abs(R[20]); 184 | R[20] = abs(R[18]); 185 | R[23] = max(R[20], C[1688]); 186 | R[20] = atan2(R[16], R[23]); 187 | R[23] = mad(R[20], C[1692], C[1696]); 188 | R[20] = div(R[23], C[1700]); 189 | R[23] = mul(R[20], C[1704]); 190 | R[24] = cmple(R[18], C[1632]); 191 | R[25] = select(R[24], C[1624], R[23]); 192 | R[23] = sub(R[25], R[20]); 193 | R[20] = mul(R[22], R[23]); 194 | R[23] = mul(R[18], R[18]); 195 | R[24] = mad(R[16], R[16], R[23]); 196 | R[23] = mad(R[19], R[19], R[24]); 197 | R[24] = sqrt(R[23]); 198 | R[23] = mul(R[22], R[24]); 199 | R[22] = mul(R[23], C[1740]); 200 | exit_stat_scope(); 201 | enter_stat_scope(C[1744]); 202 | R[23] = __OP__88; 203 | R[24] = __OP__88; 204 | R[25] = i2f(R[24]); 205 | R[24] = addi(R[23], C[1672]); 206 | R[23] = i2f(R[24]); 207 | R[24] = div(R[25], R[23]); 208 | SampleAudioBuffer_EmitterAudioOscilloscope002[func7](R[24], C[1676], R[23]); 209 | SampleAudioBuffer_EmitterAudioOscilloscope002[func8](R[24], C[1680], R[25]); 210 | R[24] = add(R[23], R[25]); 211 | R[23] = mul(R[24], C[780]); 212 | R[24] = lerp(R[23], C[632], C[784]); 213 | exit_stat_scope(); 214 | exit_stat_scope(); 215 | [R][23] = AcquireIndex(0, [R][7]); 216 | OutputDataFloat(0, 0, [R][23], [R][2]); 217 | OutputDataFloat(0, 1, [R][23], [R][9]); 218 | OutputDataFloat(0, 2, [R][23], [R][21]); 219 | OutputDataFloat(0, 3, [R][23], [R][20]); 220 | OutputDataFloat(0, 4, [R][23], [R][22]); 221 | OutputDataFloat(0, 5, [R][23], [C][1624]); 222 | OutputDataFloat(0, 6, [R][23], [C][608]); 223 | OutputDataFloat(0, 7, [R][23], [C][628]); 224 | OutputDataFloat(0, 8, [R][23], [R][0]); 225 | OutputDataFloat(0, 9, [R][23], [R][8]); 226 | OutputDataFloat(0, 10, [R][23], [R][16]); 227 | OutputDataFloat(0, 11, [R][23], [R][18]); 228 | OutputDataFloat(0, 12, [R][23], [R][19]); 229 | OutputDataFloat(0, 13, [R][23], [R][12]); 230 | OutputDataFloat(0, 14, [R][23], [R][14]); 231 | OutputDataFloat(0, 15, [R][23], [R][15]); 232 | OutputDataFloat(0, 16, [R][23], [R][3]); 233 | OutputDataFloat(0, 17, [R][23], [R][11]); 234 | OutputDataFloat(0, 18, [R][23], [C][1632]); 235 | OutputDataFloat(0, 19, [R][23], [C][1632]); 236 | OutputDataFloat(0, 20, [R][23], [C][1632]); 237 | OutputDataFloat(0, 21, [R][23], [C][1632]); 238 | OutputDataFloat(0, 22, [R][23], [R][4]); 239 | OutputDataFloat(0, 23, [R][23], [R][5]); 240 | OutputDataFloat(0, 24, [R][23], [R][6]); 241 | OutputDataFloat(0, 25, [R][23], [C][1632]); 242 | OutputDataFloat(0, 26, [R][23], [C][1632]); 243 | OutputDataFloat(0, 27, [R][23], [C][1632]); 244 | OutputDataFloat(0, 28, [R][23], [C][1624]); 245 | OutputDataFloat(0, 29, [R][23], [C][1624]); 246 | OutputDataFloat(0, 30, [R][23], [C][1624]); 247 | OutputDataFloat(0, 31, [R][23], [C][1632]); 248 | OutputDataFloat(0, 32, [R][23], [R][24]); 249 | OutputDataFloat(0, 33, [R][23], [R][24]); 250 | OutputDataInt(0, 0, [R][23], [R][1]); 251 | OutputDataFloat(0, 34, [R][23], [R][17]); 252 | OutputDataFloat(0, 35, [R][23], [R][13]); 253 | OutputDataFloat(0, 36, [R][23], [R][10]); 254 | exit_stat_scope(); ------------------------------- |)x5MT*T)Z <s&@4_Z*(MMMMZ<s&@4_Z*(MMMMZ<s&@4_Z*(MMMZ<s&@4_Z*(MMMZ <s&@4_Z*(MMMMZ <s&@4_Z*(MMMMM45#)5X *](<i_Z*(Mj_Z*(Mk_Z*(Ml_Z*(M m_Z*(Mn_Z*(Mo_Z*(M z_Z*(M${_Z*(M(|_Z*(M,_Z*(M0_Z*(M4_Z*(M8_Z*(M<x*DR@;==??@F<FzD?BHBfff?TPNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:UpdateScriptMZMW>gRO}`,@| 'iß5#)#*Emitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim7A*R8v~BځACM*4?*R޹u sԶ4n M*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMy>gRO}`,@| 'iß5#)#*Emitter.LocalspacelNiagaraEmitter /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0GPUComputeSim7A*R8v~BځACM*4?*R޹u sԶ4n M*R4ޕ(f:~M*Rie(٩85&M*R]{Fis{UM*R@,AS~VnWM*R4ޕ(f:~M*R/ !Y!4M*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*RE{UѳH`uM*R@,AS~VnWM*Rovh j0kTM*Rt E#(֢PNЕM*Rȑ#7&kBzM*Rȑ#7&kBzM*Rr|G8^)J2(M*R/2eb:^|롵 =.M*Rr|G8^)J2(M*Rr|G8^)J2(M*R}߉i|=QS]M*Rk:PhjRhfu!_3zM*R [ ɡa|jVM*R [ ɡa|jVM*R [ ɡa|jVM*R4ޕ(f:~M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*Rv4ŵ񊑍-=RM*R؉x6d(Z1qSj)-M*RciҏNnZgв8DvM*RS^k RCL(GM*R HDyP:OPՐl"M*R `H6M*R<:4 tȄM*RXYwy,]M*Rȿ`,[wCM*Rv&$]`esE=g~M*R s68CV2L>M*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*Rr|G8^)J2(M*R.'HDPR(EM*R PlAGtnGq|RM*RN>) &8|\[^P- *M*RUJ\핛GKʄnM*R4ޕ(f:~M*Rr|G8^)J2(M*Rr|G8^)J2(M*RJ3d~&|R4M*R HDyP:OPՐl"M*R `H6M*RXYwy,]M*RR Kȯ0V;k9M*R HDyP:OPՐl"M*R `H6M*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMVF,=Q*!R[MMMMM M M MMM M M N M" M#M$[[[%+\[XXH,HWW\[ &+WW`dd\h[.l.P.,,,.,.,.,.,.,.,BBB===HHHppptx|W %++++++++\[ \[XXH ,H WW    !!!!!&"+"!##! !!!""! !" "!!  \[X!X"H"#,!"H"!#!"W"!W"#!#""!! "\\\V S S S S S S S S S S  S  S  S  S  S S S S S S S S S S S S S S S S S S S " S "!T S "S #S $\Ys${{*{h8_Z*(MB_Z*(M?z_Z*(M?m_Z*(Mk_Z*(ML=l_Z*(M i_Z*(Mj_Z*(Mn_Z*(M?o_Z*(M?|_Z*(MzD{_Z*(M<F_Z*(MHB_Z*(Mfff?Mo {*{8n_Z*(M n_Z*(M n_Z*(Mn_Z*(Mn_Z*(M'7n_Z*(M8n_Z*(Mn_Z*(Mn_Z*(Mn _Z*(Mn _Z*(Mn _Z*(Mo:n _Z*(M.eBn _Z*(MBn_Z*(MCn_Z*(M@n_Z*(Mn_Z*(M?n_Z*(Mn_Z*(M fn_Z*(M_n_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMAEM<s&@4_Z*(M*5MAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEM<s&@4_Z*(M*h*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK Mh*h8\_Z*(MR_Z*(M\_Z*(Mk*kL8)_Z*(MoHEIEDE:E: L)LEMEPEKEsssK MMMAEMY*: YKog*EVsK*5KLMog*EVsK*5KLM3og*EVsK*5KLM3og*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLMog*EVsK*5KLM*c ./H%G%MHGMHGMHGMHGMHGMHGMHdGcMHGMH1GMH2GMz // Shader generated by Niagara HLSL Translator struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; int Engine_System_SignificanceIndex; int Engine_System_PaddingInt32_0; int Engine_System_PaddingInt32_1; int Engine_System_PaddingInt32_2; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_InstanceSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_SpectrumScript_Strength; float Constants_Emitter_SpectrumScript_Smothness; float Constants_Emitter_Multiply_Float_B; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; float Constants_Emitter_SpritesSizeByVAudioolume_Smothness; } struct FParamMap0_Transient { bool FirstFrame; float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_SolveForcesAndVelocity { float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles_Previous { float3 Position; float3 Velocity; }; struct FParamMap0_Particles_Presolve { float3 PhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_Particles { float Age; float AudioVolume; float4 Color; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; FParamMap0_Particles_Presolve Presolve; FParamMap0_Particles_Previous Previous; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_CurlNoiseForce { float3 CurlNoiseForce; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_CurlNoiseForce CurlNoiseForce; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Multiply_Float { float A; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int SignificanceIndex; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int NumParticles; int PaddingInt32_0; int PaddingInt32_1; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; int RandomSeed; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseStrength; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume { float MaxSpriteSize; float Smothness; }; struct FParamMap0_Constants_Emitter_SpectrumScript { float Smothness; float Strength; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_Multiply_Float { float B; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_Multiply_Float Multiply_Float; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_SpectrumScript SpectrumScript; FParamMap0_Constants_Emitter_SpritesSizeByVAudioolume SpritesSizeByVAudioolume; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_Multiply_Float Multiply_Float; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void ParticleState_Emitter_Func_(inout FSimulationContext Context); void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope001(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context); void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context); void AudioSpectrum_EmitterAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context); void SpectrumScript_Emitter_Func_(inout FSimulationContext Context); void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context); void SampleNoiseField_CurlNoiseForceCurlNoise(float3 In_XYZ, out float3 Out_Value); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void ColorScript_Emitter_Func_(inout FSimulationContext Context); void SampleAudioBuffer_EmitterAudioOscilloscope002(float In_NormalizedPositionInBuffer, int In_ChannelIndex, out float Out_Amplitude); void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context); void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result = NiagaraAll(Context.Map.Particles.Age <= Context.Map.Engine.DeltaTime); Context.Map.OUTPUT_VAR.ParticleState.FirstFrame = Result; Context.Map.Transient.FirstFrame = Result; float Result1 = Context.Map.Particles.Age + Context.Map.ParticleState.DeltaTime; float Constant1 = 1e-05; float Result2 = max(Context.Map.ParticleState.Lifetime, Constant1); float Constant2 = 0.0001; float Result3 = Result2 - Constant2; bool Result4 = NiagaraAll(Result1 < Result3); bool Constant3 = false; bool bool_IfResult; if(Result4) { bool_IfResult = Context.Map.DataInstance.Alive; } else { bool_IfResult = Constant3; } float Result5 = Result1 / Result2; Context.Map.DataInstance.Alive = bool_IfResult; Context.Map.Particles.Age = Result1; Context.Map.Particles.NormalizedAge = Result5; } void NormalizedExecutionIndex_Func_(int In_EngineExecutionCount, bool In_NormalizedRangeIncludesOne, out float Out_NormalizedExecIndex, inout FSimulationContext Context) { int Result7 = ExecIndex(); float Output0; Output0 = Result7; int Constant5 = -1; int Result8 = In_EngineExecutionCount + Constant5; int int32_IfResult; if(In_NormalizedRangeIncludesOne) { int32_IfResult = Result8; } else { int32_IfResult = In_EngineExecutionCount; } float Output01; Output01 = int32_IfResult; float Result9 = Output0 / Output01; Out_NormalizedExecIndex = Result9; } void SetAudioVolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result6 = ExecIndex(); bool Constant4 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex; NormalizedExecutionIndex_Func_(Result6, Constant4, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Context); int Constant6 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant6, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude); int Constant7 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope001(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex, Constant7, SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1); float Result10 = SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope001Output_Amplitude1; Out_Volume = Result10; } void SetAudioVolume_Emitter_Func_(inout FSimulationContext Context) { float SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SetAudioVolume_FunctionScriptAudio_Emitter_Func_(SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); Context.Map.Particles.AudioVolume = SetAudioVolume_FunctionScriptAudio_Emitter_Func_Output_Volume; } void NMS_GetNormalized2DAngle_Func_(float In_X, float In_Y, out float Out_NormalizedAngle, inout FSimulationContext Context) { float Constant8 = 0; bool Result11 = NiagaraAll(In_Y <= Constant8); float Constant9 = 1; float Result12 = abs(In_Y); float Constant10 = 0.001; float Result13 = max(Result12, Constant10); float Result14 = atan2(In_X,Result13)*(180.0f/PI); float Constant11 = 90; float Result15 = Result14 + Constant11; float Constant12 = 360; float Result16 = Result15 / Constant12; float Constant13 = 2; float Result17 = Result16 * Constant13; float float_IfResult; if(Result11) { float_IfResult = Constant9; } else { float_IfResult = Result17; } float Result18 = float_IfResult - Result16; Out_NormalizedAngle = Result18; } void DirectionAndLength_Func_(float3 In_V, out float3 Out_Direction, out float Out_Length, inout FSimulationContext Context) { float Result20 = length(In_V); float Result21 = Reciprocal(Result20); float3 Result22 = In_V * Result21; Out_Direction = Result22; Out_Length = Result20; } void SpectrumScript_Emitter_Func_(inout FSimulationContext Context) { float X; float Y; float Z; X = Context.Map.Particles.Position.x; Y = Context.Map.Particles.Position.y; Z = Context.Map.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle; NMS_GetNormalized2DAngle_Func_(X, Y, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Context); int Constant14 = 0; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant14, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude); int Constant15 = 1; float AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; AudioSpectrum_EmitterAudioSpectrum(NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle, Constant15, AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1); float Result19 = AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude + AudioSpectrum_EmitterAudioSpectrumOutput_Amplitude1; float3 DirectionAndLength_Func_Output_Direction; float DirectionAndLength_Func_Output_Length; DirectionAndLength_Func_(Context.Map.Particles.Position, DirectionAndLength_Func_Output_Direction, DirectionAndLength_Func_Output_Length, Context); float3 Result23 = Result19 * Context.Map.Constants.Emitter.SpectrumScript.Strength * DirectionAndLength_Func_Output_Direction; float3 Result24 = lerp(Result23,Context.Map.Particles.Position,Context.Map.Constants.Emitter.SpectrumScript.Smothness); float X1; float Y1; float Z1; X1 = Result24.x; Y1 = Result24.y; Z1 = Result24.z; float Constant16 = 0; float3 Output1; Output1.x = X1; Output1.y = Y1; Output1.z = Constant16; Context.Map.Particles.Position = Output1; } void Multiply_Float_Emitter_Func_(out float Out_Result, inout FSimulationContext Context) { float Result25 = Context.Map.Multiply_Float.A * Context.Map.Constants.Emitter.Multiply_Float.B; Out_Result = Result25; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result31 = length(In_V); bool Result32 = NiagaraAll(Result31 < In_Threshold); float Result33 = length(In_Fallback); float3 Vector_IfResult; float float_IfResult1; if(Result32) { Vector_IfResult = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult = In_V; float_IfResult1 = Result31; } float3 Result34 = Vector_IfResult / float_IfResult1; float3 Vector_IfResult1; float float_IfResult2; if(Result32) { Vector_IfResult1 = In_Fallback; float_IfResult2 = Result33; } else { Vector_IfResult1 = Result34; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult1; Out_Length = float_IfResult2; Out_BelowThreshold = Result32; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant25 = false; float AgeAdvancement_IfResult; if(Constant25) { AgeAdvancement_IfResult = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult = Context.Map.Engine.Time; } float Constant26 = 4096; int Constant27 = 0; float Result26 = rand_float(Constant26, Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.Map.Emitter.RandomSeed, Constant27); Context.Map.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.Map.Local.CurlNoiseForce.DeterministicOffset = Result26; Context.Map.Local.CurlNoiseForce.SamplePosition = Context.Map.CurlNoiseForce.SamplePosition; float3 Result27 = Context.Map.Local.CurlNoiseForce.DeterministicOffset + Context.Map.Local.CurlNoiseForce.SamplePosition; float3 Result28 = Result27 * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result29 = Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.Map.Local.CurlNoiseForce.AgeAdvancement; float3 Result30 = Result28 - Result29; float3 SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value; SampleNoiseField_CurlNoiseForceCurlNoise(Result30, SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value); float3 Constant28 = float3(0,0,1); float Constant29 = 1e-05; float Constant30 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(SampleNoiseField_CurlNoiseForceCurlNoiseOutput_Value, Constant28, Constant29, Constant30, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant31 = 0; float Constant32 = 1; float Result35 = clamp(DirectionAndLengthSafe_Func_Output_Length,Constant31,Constant32); float3 Result36 = DirectionAndLengthSafe_Func_Output_Direction * Result35; Context.Map.Local.CurlNoiseForce.SampledNoise = Result36; float Constant33 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant33; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result37 = Context.Map.Local.CurlNoiseForce.SampledNoise * Context.Map.CurlNoiseForce.NoiseStrength; float3 Result38 = Context.Map.Transient.PhysicsForce + Result37; Context.Map.Transient.PhysicsForce = Result38; Context.Map.OUTPUT_VAR.CurlNoiseForce.CurlNoiseForce = Result37; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result39 = Context.Map.Constants.Emitter.Drag.Drag + Context.Map.Transient.PhysicsDrag; Context.Map.Transient.PhysicsDrag = Result39; Context.Map.Transient.PhysicsRotationalDrag = Context.Map.Transient.PhysicsRotationalDrag; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Context.Map.SolveForcesAndVelocity.DeltaTime; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.SolveForcesAndVelocity.Velocity; Context.Map.Local.SolveForcesAndVelocity.Mass = Context.Map.SolveForcesAndVelocity.Mass; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Context.Map.SolveForcesAndVelocity.Position; Context.Map.Particles.Presolve.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.Particles.Presolve.Position = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.Map.Particles.Presolve.PhysicsForce = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce; float Constant43 = 0.0001; float Result40 = max(Context.Map.Local.SolveForcesAndVelocity.Mass, Constant43); float Result41 = Reciprocal(Result40); float3 Result42 = Result41 * Context.Map.Local.SolveForcesAndVelocity.PhysicsForce; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Result42; float3 Result43 = Context.Map.Local.SolveForcesAndVelocity.PhysicsForce * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant44 = 0; float Result44 = max(Context.Map.Transient.PhysicsDrag, Constant44); float Result45 = Context.Map.Local.SolveForcesAndVelocity.DeltaTime * Result44; float Constant45 = 1; float Result46 = Result45 + Constant45; float3 Result47 = Result43 / Result46; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result47; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.Map.Transient.PhysicsDrag; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result48 = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result48; float3 Position_IfResult; float3 Velocity_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.Map.Particles.Position; Velocity_IfResult = Context.Map.Particles.Velocity; } Context.Map.Particles.Position = Position_IfResult; Context.Map.Particles.Velocity = Velocity_IfResult; float3 Constant46 = float3(0,0,0); float Constant47 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant46; Drag_IfResult = Constant47; } else { ForceVector_IfResult = Context.Map.Transient.PhysicsForce; Drag_IfResult = Context.Map.Transient.PhysicsDrag; } Context.Map.Transient.PhysicsForce = ForceVector_IfResult; Context.Map.Transient.PhysicsDrag = Drag_IfResult; } void ColorScript_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result49 = ExecIndex(); bool Constant48 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1; NormalizedExecutionIndex_Func_(Result49, Constant48, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Context); int Constant49 = 0; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant49, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude); int Constant50 = 1; float SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex1, Constant50, SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1); float Result50 = SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscopeOutput_Amplitude1; Out_Volume = Result50; } void ColorScript_Emitter_Func_(inout FSimulationContext Context) { float ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; ColorScript_FunctionScriptAudio_Emitter_Func_(ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result51 = sin(Context.Map.Engine.Time); float Result52 = abs(Result51); float X2; float Y2; float Z2; X2 = Context.Map.Particles.Position.x; Y2 = Context.Map.Particles.Position.y; Z2 = Context.Map.Particles.Position.z; float NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; NMS_GetNormalized2DAngle_Func_(X2, Y2, NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1, Context); float Result53 = Result52 * NMS_GetNormalized2DAngle_Func_Output_NormalizedAngle1; float Result54 = length(Context.Map.Particles.Position); float Constant51 = 0.002; float Result55 = Result52 * Result54 * Constant51; float Constant52 = 1; float4 Output11; Output11.r = ColorScript_FunctionScriptAudio_Emitter_Func_Output_Volume; Output11.g = Result53; Output11.b = Result55; Output11.a = Constant52; Context.Map.Particles.Color = Output11; } void SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(out float Out_Volume, inout FSimulationContext Context) { int Result56 = ExecIndex(); bool Constant53 = true; float NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2; NormalizedExecutionIndex_Func_(Result56, Constant53, NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Context); int Constant54 = 0; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant54, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude); int Constant55 = 1; float SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; SampleAudioBuffer_EmitterAudioOscilloscope002(NormalizedExecutionIndex_Func_Output_NormalizedExecIndex2, Constant55, SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1); float Result57 = SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude + SampleAudioBuffer_EmitterAudioOscilloscope002Output_Amplitude1; Out_Volume = Result57; } void SpritesSizeByVAudioolume_Emitter_Func_(inout FSimulationContext Context) { float SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume; SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_(SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume, Context); float Result58 = SpritesSizeByVAudioolume_FunctionScriptAudio_Emitter_Func_Output_Volume * Context.Map.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize; float X3; float Y3; X3 = Context.Map.Particles.SpriteSize.x; Y3 = Context.Map.Particles.SpriteSize.y; float Result59 = lerp(Result58,X3,Context.Map.Constants.Emitter.SpritesSizeByVAudioolume.Smothness); float2 Output12; Output12.x = Result59; Output12.y = Result59; Context.Map.Particles.SpriteSize = Output12; } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.UpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = true; Context.Map.DataInstance.Alive = Constant; Context.Map.ParticleState.DeltaTime = Context.Map.Engine.DeltaTime; Context.Map.ParticleState.Lifetime = Context.Map.Particles.Lifetime; EnterStatScope(1 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); EnterStatScope(2 /**SetAudioVolume_Emitter_Func_*/); SetAudioVolume_Emitter_Func_(Context); ExitStatScope(/**SetAudioVolume_Emitter_Func_*/); EnterStatScope(3 /**SpectrumScript_Emitter_Func_*/); SpectrumScript_Emitter_Func_(Context); ExitStatScope(/**SpectrumScript_Emitter_Func_*/); Context.Map.Multiply_Float.A = Context.Map.Particles.AudioVolume; float Multiply_Float_Emitter_Func_Output_Result; Multiply_Float_Emitter_Func_(Multiply_Float_Emitter_Func_Output_Result, Context); Context.Map.CurlNoiseForce.NoiseStrength = Multiply_Float_Emitter_Func_Output_Result; bool Constant17 = false; int Constant18 = (0); float Constant19 = (0.0); Context.Map.Local.CurlNoiseForce.AgeAdvancement = Constant19; float Constant20 = (0.0); Context.Map.Local.CurlNoiseForce.DeterministicOffset = Constant20; Context.Map.CurlNoiseForce.SamplePosition = Context.Map.Particles.Position; float3 Constant21 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SamplePosition = Constant21; float3 Constant22 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SampledNoise = Constant22; float Constant23 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant23; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; float3 Constant24 = float3(0,0,0); Context.Map.Transient.PhysicsForce = Constant24; EnterStatScope(4 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant18, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float Constant34 = 0; Context.Map.Transient.PhysicsDrag = Constant34; float Constant35 = 0; Context.Map.Transient.PhysicsRotationalDrag = Constant35; EnterStatScope(5 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); Context.Map.Transient.PhysicsDeltaTime = Context.Map.Engine.DeltaTime; Context.Map.SolveForcesAndVelocity.DeltaTime = Context.Map.Transient.PhysicsDeltaTime; float Constant36 = (0.0); Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Constant36; Context.Map.SolveForcesAndVelocity.Force = Context.Map.Transient.PhysicsForce; Context.Map.SolveForcesAndVelocity.Velocity = Context.Map.Particles.Velocity; Context.Map.SolveForcesAndVelocity.Mass = Context.Map.Particles.Mass; Context.Map.SolveForcesAndVelocity.Position = Context.Map.Particles.Position; float3 Constant37 = float3(0.0, 0.0, 0.0); Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Constant37; float3 Constant38 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Constant38; float3 Constant39 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant39; float Constant40 = (0.0); Context.Map.Local.SolveForcesAndVelocity.Mass = Constant40; float3 Constant41 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant41; Context.Map.SolveForcesAndVelocity.PreviousVelocity = Context.Map.Particles.Previous.Velocity; bool Constant42 = true; Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant42; EnterStatScope(6 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(7 /**ColorScript_Emitter_Func_*/); ColorScript_Emitter_Func_(Context); ExitStatScope(/**ColorScript_Emitter_Func_*/); EnterStatScope(8 /**SpritesSizeByVAudioolume_Emitter_Func_*/); SpritesSizeByVAudioolume_Emitter_Func_(Context); ExitStatScope(/**SpritesSizeByVAudioolume_Emitter_Func_*/); ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:DansingSprites_0.UpdateScript*/); } void SimulateMain() { EnterStatScope(9 /**UpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Particles.Age = InputDataFloat(0, 0); Context.Map.Particles.AudioVolume = InputDataFloat(0, 1); Context.Map.Particles.Color.r = InputDataFloat(0, 2); Context.Map.Particles.Color.g = InputDataFloat(0, 3); Context.Map.Particles.Color.b = InputDataFloat(0, 4); Context.Map.Particles.Color.a = InputDataFloat(0, 5); Context.Map.Particles.Lifetime = InputDataFloat(0, 6); Context.Map.Particles.Mass = InputDataFloat(0, 7); Context.Map.Particles.MaterialRandom = InputDataFloat(0, 8); Context.Map.Particles.NormalizedAge = InputDataFloat(0, 9); Context.Map.Particles.Position.x = InputDataFloat(0, 10); Context.Map.Particles.Position.y = InputDataFloat(0, 11); Context.Map.Particles.Position.z = InputDataFloat(0, 12); Context.Map.Particles.Presolve.PhysicsForce.x = InputDataFloat(0, 13); Context.Map.Particles.Presolve.PhysicsForce.y = InputDataFloat(0, 14); Context.Map.Particles.Presolve.PhysicsForce.z = InputDataFloat(0, 15); Context.Map.Particles.Presolve.Position.x = InputDataFloat(0, 16); Context.Map.Particles.Presolve.Position.y = InputDataFloat(0, 17); Context.Map.Particles.Presolve.Position.z = InputDataFloat(0, 18); Context.Map.Particles.Presolve.Velocity.x = InputDataFloat(0, 19); Context.Map.Particles.Presolve.Velocity.y = InputDataFloat(0, 20); Context.Map.Particles.Presolve.Velocity.z = InputDataFloat(0, 21); Context.Map.Particles.Scale.x = InputDataFloat(0, 28); Context.Map.Particles.Scale.y = InputDataFloat(0, 29); Context.Map.Particles.Scale.z = InputDataFloat(0, 30); Context.Map.Particles.SpriteRotation = InputDataFloat(0, 31); Context.Map.Particles.SpriteSize.x = InputDataFloat(0, 32); Context.Map.Particles.SpriteSize.y = InputDataFloat(0, 33); Context.Map.Particles.UniqueID = InputDataInt(0, 0); Context.Map.Particles.Velocity.x = InputDataFloat(0, 34); Context.Map.Particles.Velocity.y = InputDataFloat(0, 35); Context.Map.Particles.Velocity.z = InputDataFloat(0, 36); Context.Map.Particles.Previous.Position = Context.Map.Particles.Position; Context.Map.Particles.Previous.Velocity = Context.Map.Particles.Velocity; Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Constants.Emitter.SpectrumScript.Strength = Constants_Emitter_SpectrumScript_Strength; Context.Map.Constants.Emitter.SpectrumScript.Smothness = Constants_Emitter_SpectrumScript_Smothness; Context.Map.Constants.Emitter.Multiply_Float.B = Constants_Emitter_Multiply_Float_B; Context.Map.Emitter.Age = Emitter_Age; Context.Map.Engine.Time = Engine_Time; Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; Context.Map.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.Map.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.Map.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.Map.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.Map.Constants.Emitter.SpritesSizeByVAudioolume.MaxSpriteSize = Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize; Context.Map.Constants.Emitter.SpritesSizeByVAudioolume.Smothness = Constants_Emitter_SpritesSizeByVAudioolume_Smothness; Context.Map.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.Map.Engine.Emitter.InstanceSeed = Engine_Emitter_InstanceSeed; ReadDataSets(Context); EnterStatScope(10 /**UpdateScript_MapMain*/); Simulate(Context); ExitStatScope(/**UpdateScript_MapMain*/); WriteDataSets(Context); { bool bValid = Context.Map.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.Particles.AudioVolume); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.Particles.Color.r); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.Particles.Color.g); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.Particles.Color.b); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.Particles.Color.a); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.Particles.Lifetime); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.Particles.Mass); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.Particles.MaterialRandom); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.Particles.NormalizedAge); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.Particles.Position.x); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.Particles.Position.y); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.Particles.Position.z); OutputDataFloat(0, 13, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.x); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.y); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Particles.Presolve.PhysicsForce.z); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Particles.Presolve.Position.x); OutputDataFloat(0, 17, TmpWriteIndex, Context.Map.Particles.Presolve.Position.y); OutputDataFloat(0, 18, TmpWriteIndex, Context.Map.Particles.Presolve.Position.z); OutputDataFloat(0, 19, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.x); OutputDataFloat(0, 20, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.y); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Particles.Presolve.Velocity.z); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Particles.Previous.Position.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Particles.Previous.Position.y); OutputDataFloat(0, 24, TmpWriteIndex, Context.Map.Particles.Previous.Position.z); OutputDataFloat(0, 25, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.Map.Particles.Previous.Velocity.z); OutputDataFloat(0, 28, TmpWriteIndex, Context.Map.Particles.Scale.x); OutputDataFloat(0, 29, TmpWriteIndex, Context.Map.Particles.Scale.y); OutputDataFloat(0, 30, TmpWriteIndex, Context.Map.Particles.Scale.z); OutputDataFloat(0, 31, TmpWriteIndex, Context.Map.Particles.SpriteRotation); OutputDataFloat(0, 32, TmpWriteIndex, Context.Map.Particles.SpriteSize.x); OutputDataFloat(0, 33, TmpWriteIndex, Context.Map.Particles.SpriteSize.y); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.Particles.UniqueID); OutputDataFloat(0, 34, TmpWriteIndex, Context.Map.Particles.Velocity.x); OutputDataFloat(0, 35, TmpWriteIndex, Context.Map.Particles.Velocity.y); OutputDataFloat(0, 36, TmpWriteIndex, Context.Map.Particles.Velocity.z); } ExitStatScope(/**UpdateScript_Main*/); } v@@ ------------------------------- Summary ------------------------------- Num Byte Code Ops: 234 Num Constants: 196 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Engine_Owner_TimeSinceRendered 36 | Engine_Owner_LODDistance 40 | Engine_Owner_LODDistanceFraction 44 | Engine_System_Age 48 | Engine_Owner_ExecutionState 52 | Engine_System_TickCount 56 | Engine_System_NumEmitters 60 | Engine_System_NumEmittersAlive 64 | Engine_System_SignificanceIndex 68 | Engine_System_PaddingInt32_0 72 | Engine_System_PaddingInt32_1 76 | Engine_System_PaddingInt32_2 80 | Engine_Owner_SystemLocalToWorldRow0x 84 | Engine_Owner_SystemLocalToWorldRow0y 88 | Engine_Owner_SystemLocalToWorldRow0z 92 | Engine_Owner_SystemLocalToWorldRow0w 96 | Engine_Owner_SystemLocalToWorldRow1x 100 | Engine_Owner_SystemLocalToWorldRow1y 104 | Engine_Owner_SystemLocalToWorldRow1z 108 | Engine_Owner_SystemLocalToWorldRow1w 112 | Engine_Owner_SystemLocalToWorldRow2x 116 | Engine_Owner_SystemLocalToWorldRow2y 120 | Engine_Owner_SystemLocalToWorldRow2z 124 | Engine_Owner_SystemLocalToWorldRow2w 128 | Engine_Owner_SystemLocalToWorldRow3x 132 | Engine_Owner_SystemLocalToWorldRow3y 136 | Engine_Owner_SystemLocalToWorldRow3z 140 | Engine_Owner_SystemLocalToWorldRow3w 144 | Engine_Owner_SystemWorldToLocalRow0x 148 | Engine_Owner_SystemWorldToLocalRow0y 152 | Engine_Owner_SystemWorldToLocalRow0z 156 | Engine_Owner_SystemWorldToLocalRow0w 160 | Engine_Owner_SystemWorldToLocalRow1x 164 | Engine_Owner_SystemWorldToLocalRow1y 168 | Engine_Owner_SystemWorldToLocalRow1z 172 | Engine_Owner_SystemWorldToLocalRow1w 176 | Engine_Owner_SystemWorldToLocalRow2x 180 | Engine_Owner_SystemWorldToLocalRow2y 184 | Engine_Owner_SystemWorldToLocalRow2z 188 | Engine_Owner_SystemWorldToLocalRow2w 192 | Engine_Owner_SystemWorldToLocalRow3x 196 | Engine_Owner_SystemWorldToLocalRow3y 200 | Engine_Owner_SystemWorldToLocalRow3z 204 | Engine_Owner_SystemWorldToLocalRow3w 208 | Engine_Owner_SystemLocalToWorldTransposedRow0x 212 | Engine_Owner_SystemLocalToWorldTransposedRow0y 216 | Engine_Owner_SystemLocalToWorldTransposedRow0z 220 | Engine_Owner_SystemLocalToWorldTransposedRow0w 224 | Engine_Owner_SystemLocalToWorldTransposedRow1x 228 | Engine_Owner_SystemLocalToWorldTransposedRow1y 232 | Engine_Owner_SystemLocalToWorldTransposedRow1z 236 | Engine_Owner_SystemLocalToWorldTransposedRow1w 240 | Engine_Owner_SystemLocalToWorldTransposedRow2x 244 | Engine_Owner_SystemLocalToWorldTransposedRow2y 248 | Engine_Owner_SystemLocalToWorldTransposedRow2z 252 | Engine_Owner_SystemLocalToWorldTransposedRow2w 256 | Engine_Owner_SystemLocalToWorldTransposedRow3x 260 | Engine_Owner_SystemLocalToWorldTransposedRow3y 264 | Engine_Owner_SystemLocalToWorldTransposedRow3z 268 | Engine_Owner_SystemLocalToWorldTransposedRow3w 272 | Engine_Owner_SystemWorldToLocalTransposedRow0x 276 | Engine_Owner_SystemWorldToLocalTransposedRow0y 280 | Engine_Owner_SystemWorldToLocalTransposedRow0z 284 | Engine_Owner_SystemWorldToLocalTransposedRow0w 288 | Engine_Owner_SystemWorldToLocalTransposedRow1x 292 | Engine_Owner_SystemWorldToLocalTransposedRow1y 296 | Engine_Owner_SystemWorldToLocalTransposedRow1z 300 | Engine_Owner_SystemWorldToLocalTransposedRow1w 304 | Engine_Owner_SystemWorldToLocalTransposedRow2x 308 | Engine_Owner_SystemWorldToLocalTransposedRow2y 312 | Engine_Owner_SystemWorldToLocalTransposedRow2z 316 | Engine_Owner_SystemWorldToLocalTransposedRow2w 320 | Engine_Owner_SystemWorldToLocalTransposedRow3x 324 | Engine_Owner_SystemWorldToLocalTransposedRow3y 328 | Engine_Owner_SystemWorldToLocalTransposedRow3z 332 | Engine_Owner_SystemWorldToLocalTransposedRow3w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 368 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 372 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 376 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 380 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 384 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 388 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 392 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 396 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 432 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 436 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 440 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 444 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 448 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 452 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 456 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 460 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 464 | Engine_Owner_Rotationx 468 | Engine_Owner_Rotationy 472 | Engine_Owner_Rotationz 476 | Engine_Owner_Rotationw 480 | Engine_Owner_Positionx 484 | Engine_Owner_Positiony 488 | Engine_Owner_Positionz 492 | Engine_Owner_Positionw 496 | Engine_Owner_Velocityx 500 | Engine_Owner_Velocityy 504 | Engine_Owner_Velocityz 508 | Engine_Owner_Velocityw 512 | Engine_Owner_SystemXAxisx 516 | Engine_Owner_SystemXAxisy 520 | Engine_Owner_SystemXAxisz 524 | Engine_Owner_SystemXAxisw 528 | Engine_Owner_SystemYAxisx 532 | Engine_Owner_SystemYAxisy 536 | Engine_Owner_SystemYAxisz 540 | Engine_Owner_SystemYAxisw 544 | Engine_Owner_SystemZAxisx 548 | Engine_Owner_SystemZAxisy 552 | Engine_Owner_SystemZAxisz 556 | Engine_Owner_SystemZAxisw 560 | Engine_Owner_Scalex 564 | Engine_Owner_Scaley 568 | Engine_Owner_Scalez 572 | Engine_Owner_Scalew 576 | Engine_Emitter_NumParticles 580 | Engine_Emitter_TotalSpawnedParticles 584 | Engine_Emitter_SpawnCountScale 588 | Emitter_Age 592 | Emitter_RandomSeed 596 | Engine_Emitter_InstanceSeed 600 | Engine_Emitter_PaddingInt32_0 604 | Engine_Emitter_PaddingInt32_1 608 | Constants_Emitter_SpectrumScript_Strength 612 | Constants_Emitter_SpectrumScript_Smothness 616 | Constants_Emitter_Multiply_Float_B 620 | Constants_Emitter_CurlNoiseForce_RandomSeed 624 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 628 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 632 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 636 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 640 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 644 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 648 | Constants_Emitter_Drag_Drag 652 | Constants_Emitter_Drag_RotationalDrag 656 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 660 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 664 | Constants_Emitter_SpritesSizeByVAudioolume_MaxSpriteSize 668 | Constants_Emitter_SpritesSizeByVAudioolume_Smothness 672 | 9 676 | 10 680 | 0 684 | 1 688 | 9.99999975e-06 692 | 9.99999975e-05 696 | True 700 | False 704 | 2 708 | -1 712 | 3 716 | 0.00100000005 720 | 57.2957764 724 | 90 728 | 360 732 | 2 736 | 0 740 | 1 744 | 4 748 | 1664525 752 | 1013904223 756 | 8 760 | 16777215 764 | 16777216 768 | 4096 772 | 6 776 | 7 780 | 0.00200000009 ------------------------------- Byte Code (234 Ops) ------------------------------- 0 | enter_stat_scope(C[672]); 1 | [R][0] = InputDataFloat(0, 0); 2 | [R][1] = InputDataFloat(0, 6); 3 | [R][2] = InputDataFloat(0, 7); 4 | [R][3] = InputDataFloat(0, 8); 5 | [R][4] = InputDataFloat(0, 10); 6 | [R][5] = InputDataFloat(0, 11); 7 | [R][6] = InputDataFloat(0, 12); 8 | [R][7] = InputDataFloat(0, 28); 9 | [R][8] = InputDataFloat(0, 29); 10 | [R][9] = InputDataFloat(0, 30); 11 | [R][10] = InputDataFloat(0, 31); 12 | [R][11] = InputDataFloat(0, 32); 13 | [R][12] = InputDataInt(0, 0); 14 | [R][13] = InputDataFloat(0, 34); 15 | [R][14] = InputDataFloat(0, 35); 16 | [R][15] = InputDataFloat(0, 36); 17 | enter_stat_scope(C[676]); 18 | enter_stat_scope(C[680]); 19 | enter_stat_scope(C[684]); 20 | R[16] = add(R[0], C[0]); 21 | R[0] = max(R[1], C[688]); 22 | R[17] = sub(R[0], C[692]); 23 | R[18] = cmplt(R[16], R[17]); 24 | R[17] = select(R[18], C[696], C[700]); 25 | R[18] = div(R[16], R[0]); 26 | exit_stat_scope(); 27 | enter_stat_scope(C[704]); 28 | R[0] = __OP__88; 29 | R[19] = __OP__88; 30 | R[20] = i2f(R[19]); 31 | R[19] = addi(R[0], C[708]); 32 | R[0] = i2f(R[19]); 33 | R[19] = div(R[20], R[0]); 34 | SampleAudioBuffer_EmitterAudioOscilloscope001[func0](R[19], C[680], R[0]); 35 | SampleAudioBuffer_EmitterAudioOscilloscope001[func1](R[19], C[684], R[20]); 36 | R[19] = add(R[0], R[20]); 37 | exit_stat_scope(); 38 | enter_stat_scope(C[712]); 39 | R[0] = abs(R[5]); 40 | R[20] = max(R[0], C[716]); 41 | R[0] = atan2(R[4], R[20]); 42 | R[20] = mad(R[0], C[720], C[724]); 43 | R[0] = div(R[20], C[728]); 44 | R[20] = mul(R[0], C[732]); 45 | R[21] = cmple(R[5], C[736]); 46 | R[22] = select(R[21], C[740], R[20]); 47 | R[20] = sub(R[22], R[0]); 48 | AudioSpectrum_EmitterAudioSpectrum[func2](R[20], C[680], R[0]); 49 | AudioSpectrum_EmitterAudioSpectrum[func3](R[20], C[684], R[21]); 50 | R[20] = add(R[0], R[21]); 51 | R[0] = mul(R[20], C[608]); 52 | R[20] = mul(R[5], R[5]); 53 | R[21] = mad(R[4], R[4], R[20]); 54 | R[20] = mad(R[6], R[6], R[21]); 55 | R[21] = rsq(R[20]); 56 | R[20] = mul(R[4], R[21]); 57 | R[22] = mul(R[5], R[21]); 58 | R[23] = mul(R[6], R[21]); 59 | R[21] = mul(R[0], R[20]); 60 | R[20] = mul(R[0], R[22]); 61 | R[22] = mul(R[0], R[23]); 62 | R[0] = lerp(R[21], R[4], C[612]); 63 | R[21] = lerp(R[20], R[5], C[612]); 64 | exit_stat_scope(); 65 | R[20] = mul(R[19], C[616]); 66 | enter_stat_scope(C[744]); 67 | R[22] = muli(C[620], C[748]); 68 | R[23] = muli(C[592], C[748]); 69 | R[24] = muli(C[684], C[748]); 70 | R[25] = addi(R[22], C[752]); 71 | R[22] = addi(R[23], C[752]); 72 | R[23] = addi(R[24], C[752]); 73 | R[24] = muli(R[22], R[23]); 74 | R[26] = addi(R[25], R[24]); 75 | R[24] = muli(R[23], R[26]); 76 | R[25] = addi(R[22], R[24]); 77 | R[22] = muli(R[26], R[25]); 78 | R[24] = addi(R[23], R[22]); 79 | R[22] = muli(R[25], R[24]); 80 | R[23] = addi(R[26], R[22]); 81 | R[22] = muli(R[24], R[23]); 82 | R[26] = addi(R[25], R[22]); 83 | R[22] = muli(R[23], R[26]); 84 | R[25] = addi(R[24], R[22]); 85 | R[22] = bit_rshift(R[23], C[756]); 86 | R[23] = bit_rshift(R[26], C[756]); 87 | R[24] = bit_rshift(R[25], C[756]); 88 | R[25] = bit_and(R[22], C[760]); 89 | R[22] = bit_and(R[23], C[760]); 90 | R[23] = bit_and(R[24], C[760]); 91 | R[24] = i2f(R[25]); 92 | R[25] = i2f(R[22]); 93 | R[22] = i2f(R[23]); 94 | R[23] = div(R[24], C[764]); 95 | R[22] = mad(R[23], C[768], R[0]); 96 | R[24] = mad(R[23], C[768], R[21]); 97 | R[25] = mad(R[23], C[768], C[736]); 98 | R[23] = mul(R[22], C[624]); 99 | R[22] = mul(R[24], C[624]); 100 | R[24] = mul(R[25], C[624]); 101 | R[25] = mul(C[628], C[8]); 102 | R[26] = mul(C[632], C[8]); 103 | R[27] = mul(C[636], C[8]); 104 | R[28] = sub(R[23], R[25]); 105 | R[23] = sub(R[22], R[26]); 106 | R[22] = sub(R[24], R[27]); 107 | SampleNoiseField_CurlNoiseForceCurlNoise[func4](R[28], R[23], R[22], R[24], R[25], R[26]); 108 | R[22] = mul(R[25], R[25]); 109 | R[23] = mad(R[24], R[24], R[22]); 110 | R[22] = mad(R[26], R[26], R[23]); 111 | R[23] = sqrt(R[22]); 112 | R[22] = cmplt(R[23], C[688]); 113 | R[27] = select(R[22], C[736], R[24]); 114 | R[24] = select(R[22], C[736], R[25]); 115 | R[25] = select(R[22], C[740], R[26]); 116 | R[26] = select(R[22], C[740], R[23]); 117 | R[23] = div(R[27], R[26]); 118 | R[27] = div(R[24], R[26]); 119 | R[24] = div(R[25], R[26]); 120 | R[25] = select(R[22], C[736], R[23]); 121 | R[23] = select(R[22], C[736], R[27]); 122 | R[27] = select(R[22], C[740], R[24]); 123 | R[24] = select(R[22], C[740], R[26]); 124 | R[22] = clamp(R[24], C[736], C[740]); 125 | R[24] = mul(R[25], R[22]); 126 | R[25] = mul(R[23], R[22]); 127 | R[23] = mul(R[27], R[22]); 128 | R[22] = mul(R[24], R[20]); 129 | R[24] = mul(R[25], R[20]); 130 | R[25] = mul(R[23], R[20]); 131 | exit_stat_scope(); 132 | enter_stat_scope(C[772]); 133 | R[20] = max(R[2], C[692]); 134 | R[23] = rcp(R[20]); 135 | R[20] = mul(R[23], R[22]); 136 | R[26] = mul(R[23], R[24]); 137 | R[27] = mul(R[23], R[25]); 138 | R[23] = mad(R[20], C[0], R[13]); 139 | R[20] = mad(R[26], C[0], R[14]); 140 | R[26] = mad(R[27], C[0], R[15]); 141 | R[27] = max(C[648], C[736]); 142 | R[28] = mad(C[0], R[27], C[740]); 143 | R[27] = div(R[23], R[28]); 144 | R[23] = div(R[20], R[28]); 145 | R[20] = div(R[26], R[28]); 146 | R[26] = mad(R[27], C[0], R[0]); 147 | R[28] = mad(R[23], C[0], R[21]); 148 | R[29] = mad(R[20], C[0], C[736]); 149 | exit_stat_scope(); 150 | enter_stat_scope(C[776]); 151 | R[30] = __OP__88; 152 | R[31] = __OP__88; 153 | R[32] = i2f(R[31]); 154 | R[31] = addi(R[30], C[708]); 155 | R[30] = i2f(R[31]); 156 | R[31] = div(R[32], R[30]); 157 | SampleAudioBuffer_EmitterAudioOscilloscope[func5](R[31], C[680], R[30]); 158 | SampleAudioBuffer_EmitterAudioOscilloscope[func6](R[31], C[684], R[32]); 159 | R[31] = add(R[30], R[32]); 160 | R[30] = sin(C[8]); 161 | R[32] = abs(R[30]); 162 | R[30] = abs(R[28]); 163 | R[33] = max(R[30], C[716]); 164 | R[30] = atan2(R[26], R[33]); 165 | R[33] = mad(R[30], C[720], C[724]); 166 | R[30] = div(R[33], C[728]); 167 | R[33] = mul(R[30], C[732]); 168 | R[34] = cmple(R[28], C[736]); 169 | R[35] = select(R[34], C[740], R[33]); 170 | R[33] = sub(R[35], R[30]); 171 | R[30] = mul(R[32], R[33]); 172 | R[33] = mul(R[28], R[28]); 173 | R[34] = mad(R[26], R[26], R[33]); 174 | R[33] = mad(R[29], R[29], R[34]); 175 | R[34] = sqrt(R[33]); 176 | R[33] = mul(R[32], R[34]); 177 | R[32] = mul(R[33], C[780]); 178 | exit_stat_scope(); 179 | enter_stat_scope(C[756]); 180 | R[33] = __OP__88; 181 | R[34] = __OP__88; 182 | R[35] = i2f(R[34]); 183 | R[34] = addi(R[33], C[708]); 184 | R[33] = i2f(R[34]); 185 | R[34] = div(R[35], R[33]); 186 | SampleAudioBuffer_EmitterAudioOscilloscope002[func7](R[34], C[680], R[33]); 187 | SampleAudioBuffer_EmitterAudioOscilloscope002[func8](R[34], C[684], R[35]); 188 | R[34] = add(R[33], R[35]); 189 | R[33] = mul(R[34], C[664]); 190 | R[34] = lerp(R[33], R[11], C[668]); 191 | exit_stat_scope(); 192 | exit_stat_scope(); 193 | exit_stat_scope(); 194 | [R][11] = AcquireIndex(0, [R][17]); 195 | OutputDataFloat(0, 0, [R][11], [R][16]); 196 | OutputDataFloat(0, 1, [R][11], [R][19]); 197 | OutputDataFloat(0, 2, [R][11], [R][31]); 198 | OutputDataFloat(0, 3, [R][11], [R][30]); 199 | OutputDataFloat(0, 4, [R][11], [R][32]); 200 | OutputDataFloat(0, 5, [R][11], [C][740]); 201 | OutputDataFloat(0, 6, [R][11], [R][1]); 202 | OutputDataFloat(0, 7, [R][11], [R][2]); 203 | OutputDataFloat(0, 8, [R][11], [R][3]); 204 | OutputDataFloat(0, 9, [R][11], [R][18]); 205 | OutputDataFloat(0, 10, [R][11], [R][26]); 206 | OutputDataFloat(0, 11, [R][11], [R][28]); 207 | OutputDataFloat(0, 12, [R][11], [R][29]); 208 | OutputDataFloat(0, 13, [R][11], [R][22]); 209 | OutputDataFloat(0, 14, [R][11], [R][24]); 210 | OutputDataFloat(0, 15, [R][11], [R][25]); 211 | OutputDataFloat(0, 16, [R][11], [R][0]); 212 | OutputDataFloat(0, 17, [R][11], [R][21]); 213 | OutputDataFloat(0, 18, [R][11], [C][736]); 214 | OutputDataFloat(0, 19, [R][11], [R][13]); 215 | OutputDataFloat(0, 20, [R][11], [R][14]); 216 | OutputDataFloat(0, 21, [R][11], [R][15]); 217 | OutputDataFloat(0, 22, [R][11], [R][4]); 218 | OutputDataFloat(0, 23, [R][11], [R][5]); 219 | OutputDataFloat(0, 24, [R][11], [R][6]); 220 | OutputDataFloat(0, 25, [R][11], [R][13]); 221 | OutputDataFloat(0, 26, [R][11], [R][14]); 222 | OutputDataFloat(0, 27, [R][11], [R][15]); 223 | OutputDataFloat(0, 28, [R][11], [R][7]); 224 | OutputDataFloat(0, 29, [R][11], [R][8]); 225 | OutputDataFloat(0, 30, [R][11], [R][9]); 226 | OutputDataFloat(0, 31, [R][11], [R][10]); 227 | OutputDataFloat(0, 32, [R][11], [R][34]); 228 | OutputDataFloat(0, 33, [R][11], [R][34]); 229 | OutputDataInt(0, 0, [R][11], [R][12]); 230 | OutputDataFloat(0, 34, [R][11], [R][27]); 231 | OutputDataFloat(0, 35, [R][11], [R][23]); 232 | OutputDataFloat(0, 36, [R][11], [R][20]); 233 | exit_stat_scope(); ------------------------------- |)x5MT*T)Z <s&@4_Z*(MMMMZ<s&@4_Z*(MMMMZ<s&@4_Z*(MMMZ<s&@4_Z*(MMMZ <s&@4_Z*(MMMMZ <s&@4_Z*(MMMMM45#*] <8NiagaraScript /Game/AudioVis.AudioVis:SystemSpawnScriptMZNW >gRO}`,@| 'iß5#*#*DansingSprites.LocalspaceZNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSpritesCPUSim7A*R:,bO0:OM*] (( *RE!4 `jGM*RQ>o=a 6G-M*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*Ru5Y{wn*Ro=a 6G-M*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMy >gRO}`,@| 'iß5#*#*DansingSprites.LocalspaceZNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSpritesCPUSim7A*R:,bO0:OM*] (( *RE!4 `jGM*RQ>o=a 6G-M*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*Ru5Y{wn*Ro=a 6G-M*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMVJ3=Q*R[$V(S,S,T0T0T4T0S,S,S,T0S,S,T0S,T S,T4S, T0T0 T0 S, S, \Ys{{*{P8_Z*(MMo{*{8n_Z*(Mn_Z*(Mn_Z*(Mn_Z*(Mn_Z*(MM,*-,8_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M{*{8_Z*(M_Z*(MM*](/H&G&MHGMHGMHGMz// Shader generated by Niagara HLSL Translator struct NiagaraSpawnInfo { int Count; float InterpStartDt; float IntervalDt; int SpawnGroup; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; int Engine_QualityLevel; int Engine_PaddingInt32_0; int Engine_PaddingInt32_1; int Engine_PaddingInt32_2; } cbuffer FNiagaraSystemParameters { } cbuffer FNiagaraOwnerParameters { } cbuffer FNiagaraEmitterParameters { } cbuffer FNiagaraExternalParameters { int Emitter_RandomSeed; } struct FParamMap0_System { float Age; bool bCompleteOnInactive; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; int LoopCount; float LoopedAge; float NormalizedLoopAge; }; struct FParamMap0_Engine_Emitter { int InstanceSeed; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; int QualityLevel; float RealTime; float Time; }; struct FParamMap0_Emitter { int RandomSeed; }; struct FParamMap0_DansingSprites_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_DansingSprites_Scalability { float DistanceFraction; }; struct FParamMap0_DansingSprites { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_DansingSprites_Scalability Scalability; FParamMap0_DansingSprites_SpawnRate SpawnRate; }; struct FParamMap0 { FParamMap0_DansingSprites DansingSprites; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_System System; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void DansingSprites_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void DansingSprites_Func_(inout FSimulationContext Context) { } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemSpawnScript*/); //Begin Initialize Parameter Map Defaults int Constant = 0; Context.Map.DansingSprites.ExecutionState = Constant; float Constant1 = 0; Context.Map.DansingSprites.Age = Constant1; float Constant2 = 0; Context.Map.DansingSprites.CurrentLoopDuration = Constant2; float Constant3 = 0; Context.Map.DansingSprites.LoopedAge = Constant3; int Constant4 = 0; Context.Map.DansingSprites.LoopCount = Constant4; float Constant5 = (0.0); Context.Map.DansingSprites.NormalizedLoopAge = Constant5; float Constant6 = (0.0); Context.Map.DansingSprites.Scalability.DistanceFraction = Constant6; int Constant7 = 0; Context.Map.System.ExecutionState = Constant7; int Constant8 = 0; Context.Map.System.ExecutionStateSource = Constant8; int Constant9 = 0; Context.Map.DansingSprites.ExecutionStateSource = Constant9; float Constant10 = 0; Context.Map.DansingSprites.SpawnRate.SpawnRemainder = Constant10; NiagaraSpawnInfo Constant11 = (NiagaraSpawnInfo)0; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo = Constant11; bool Constant12 = false; Context.Map.DansingSprites.LocalSpace = Constant12; float Constant13 = 0; Context.Map.System.Age = Constant13; float Constant14 = 0; Context.Map.System.CurrentLoopDuration = Constant14; float Constant15 = 0; Context.Map.System.LoopedAge = Constant15; int Constant16 = 0; Context.Map.System.LoopCount = Constant16; float Constant17 = (0.0); Context.Map.System.NormalizedLoopAge = Constant17; bool Constant18 = false; Context.Map.System.bCompleteOnInactive = Constant18; //End Initialize Parameter Map Defaults EnterStatScope(1 /**DansingSprites*/); DansingSprites_Func_(Context); ExitStatScope(/**DansingSprites*/); // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemSpawnScript*/); } void SimulateMain() { EnterStatScope(2 /**SystemSpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.DansingSprites.Age = 0.0f; Context.Map.DansingSprites.CurrentLoopDuration = 0.0f; Context.Map.DansingSprites.ExecutionState = 0; Context.Map.DansingSprites.ExecutionStateSource = 0; Context.Map.DansingSprites.LocalSpace = false; Context.Map.DansingSprites.LoopCount = 0; Context.Map.DansingSprites.LoopedAge = 0.0f; Context.Map.DansingSprites.NormalizedLoopAge = 0.0f; Context.Map.DansingSprites.Scalability.DistanceFraction = 0.0f; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.DansingSprites.SpawnRate.SpawnRemainder = 0.0f; Context.Map.Emitter.RandomSeed = 0; Context.Map.System.Age = 0.0f; Context.Map.System.bCompleteOnInactive = false; Context.Map.System.CurrentLoopDuration = 0.0f; Context.Map.System.ExecutionState = 0; Context.Map.System.ExecutionStateSource = 0; Context.Map.System.LoopCount = 0; Context.Map.System.LoopedAge = 0.0f; Context.Map.System.NormalizedLoopAge = 0.0f; Context.Map.Engine.Emitter.InstanceSeed = InputDataInt(1, 0); Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 1); Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); EnterStatScope(3 /**SystemSpawnScript_MapMain*/); Simulate(Context); ExitStatScope(/**SystemSpawnScript_MapMain*/); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.DansingSprites.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.DansingSprites.CurrentLoopDuration); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.DansingSprites.ExecutionState); OutputDataInt(0, 1, TmpWriteIndex, Context.Map.DansingSprites.ExecutionStateSource); OutputDataBool(0, 2, TmpWriteIndex, Context.Map.DansingSprites.LocalSpace); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.DansingSprites.LoopCount); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.DansingSprites.LoopedAge); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.DansingSprites.NormalizedLoopAge); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.DansingSprites.Scalability.DistanceFraction); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 5, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnRemainder); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 7, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 8, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 9, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); } ExitStatScope(/**SystemSpawnScript_Main*/); } v ------------------------------- Summary ------------------------------- Num Byte Code Ops: 26 Num Constants: 14 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Emitter_RandomSeed 36 | 2 40 | True 44 | 0 48 | 0 52 | False ------------------------------- Byte Code (26 Ops) ------------------------------- 0 | enter_stat_scope(C[36]); 1 | [R][0] = AcquireIndex(0, [C][40]); 2 | OutputDataFloat(0, 0, [R][0], [C][44]); 3 | OutputDataFloat(0, 1, [R][0], [C][44]); 4 | OutputDataInt(0, 0, [R][0], [C][48]); 5 | OutputDataInt(0, 1, [R][0], [C][48]); 6 | OutputDataInt(0, 2, [R][0], [C][52]); 7 | OutputDataInt(0, 3, [R][0], [C][48]); 8 | OutputDataFloat(0, 2, [R][0], [C][44]); 9 | OutputDataFloat(0, 3, [R][0], [C][44]); 10 | OutputDataFloat(0, 4, [R][0], [C][44]); 11 | OutputDataInt(0, 4, [R][0], [C][48]); 12 | OutputDataFloat(0, 5, [R][0], [C][44]); 13 | OutputDataFloat(0, 6, [R][0], [C][44]); 14 | OutputDataInt(0, 5, [R][0], [C][48]); 15 | OutputDataFloat(0, 7, [R][0], [C][44]); 16 | OutputDataInt(0, 6, [R][0], [C][32]); 17 | OutputDataFloat(0, 8, [R][0], [C][44]); 18 | OutputDataInt(0, 7, [R][0], [C][52]); 19 | OutputDataFloat(0, 9, [R][0], [C][44]); 20 | OutputDataInt(0, 8, [R][0], [C][48]); 21 | OutputDataInt(0, 9, [R][0], [C][48]); 22 | OutputDataInt(0, 10, [R][0], [C][48]); 23 | OutputDataFloat(0, 10, [R][0], [C][44]); 24 | OutputDataFloat(0, 11, [R][0], [C][44]); 25 | exit_stat_scope(); ------------------------------- |)x5MM45#+ * <p_Z*(Mq_Z*(M r_Z*(Ms_Z*(M}_Z*(M~_Z*(M_Z*(M _Z*(M_Z*(Mx*(R$@?@E?@F=9NiagaraScript /Game/AudioVis.AudioVis:SystemUpdateScriptMZNW >gRO}`,@| 'iß5#+#*DansingSprites.LocalspaceZNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSpritesCPUSim7A*Ru5Y{wn*Ro=a 6G-M*RE!4 `jGM*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*RI o=a 6G-M*RE!4 `jGM*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMy >gRO}`,@| 'iß5#+#*DansingSprites.LocalspaceZNiagaraSystem /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSpritesCPUSim7A*Ru5Y{wn*Ro=a 6G-M*RE!4 `jGM*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*RI o=a 6G-M*RE!4 `jGM*Rɽ[D4V}ֹM*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*RdKmn"΋@D?M*Rr.(Cg"8M*R]{Fis{UM*R@,AS~VnWM*R7ZgsOoM*R*%LR?L1%M*RțU'35(kZmMMV>=Q*MRI[@MMNNNNMMMM N N N M NMNM[D[H[L$P)T+    G 2H H  ,  9 H+ + 8 H+H +H <H 8 XC + +X \[X[\(P )T+ G 2 HH   ,9H++ T` ;H;H<\<dCC8C+ +< H;XC<\<dCC8LC+L+L<H<HCC<\<dCC8\C+\+\\[d0h(T+hTG\\\\VlSSTTTTSSS TSST4ST<S TlS T T T S S \Ys{{*{8_Z*(M_Z*(M@q_Z*(Mp_Z*(M_Z*(M~_Z*(M}_Z*(M_Z*(MMo{* {8n_Z*(Mn_Z*(Mn_Z*(Mn_Z*(Mn_Z*(M; Constant7); int Result9 = Result5 + Context.Map.System.LoopCount; Context.Map.System.Age = Result2; Context.Map.System.LoopedAge = Result7; Context.Map.Local.SystemState.LoopCountIncreased = Result8; Context.Map.System.LoopCount = Result9; float float_IfResult; if(Context.Map.SystemState.RecalculateDurationEachLoop) { float_IfResult = Context.Map.Constants.SystemState.LoopDuration; } else { float_IfResult = Context.Map.System.CurrentLoopDuration; } float CurrentLoopDuration_IfResult; float LoopedAge_IfResult; if(Context.Map.Local.SystemState.LoopCountIncreased) { CurrentLoopDuration_IfResult = float_IfResult; LoopedAge_IfResult = Context.Map.System.LoopedAge; } else { CurrentLoopDuration_IfResult = Context.Map.System.CurrentLoopDuration; LoopedAge_IfResult = Context.Map.System.LoopedAge; } Context.Map.System.CurrentLoopDuration = CurrentLoopDuration_IfResult; Context.Map.System.LoopedAge = LoopedAge_IfResult; float Result10 = Context.Map.System.LoopedAge / Context.Map.System.CurrentLoopDuration; Context.Map.System.NormalizedLoopAge = Result10; bool Constant8 = true; int Constant9 = 0; SystemState_SystemChangeState002_Func_(Context.Map.Transient.ScalabilityExecutionState, Constant8, Constant9, Context); int Constant10 = 3; bool Constant11 = false; int Constant12 = 3; SystemState_SystemChangeState_Func_(Constant10, Constant11, Constant12, Context); bool Constant13 = true; Context.Map.System.bCompleteOnInactive = Constant13; int Constant14 = 0; bool Result15 = NiagaraAll(Context.Map.Engine.Owner.ExecutionState != Constant14); int Constant15 = 2; SystemState_SystemChangeState001_Func_(Context.Map.Engine.Owner.ExecutionState, Result15, Constant15, Context); } void EmitterState_EmitterChangeState002_DansingSprites_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant27 = 3; bool Result32 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant27); int Constant28 = 4; bool Result33 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant28); bool Result34 = Result32 && Result33; bool Result35 = In_Condition && Result34; bool Result36 = NiagaraAll(Context.Map.DansingSprites.ExecutionStateSource <= In_NewStateSource); bool Result37 = Result35 && Result36; int ENiagaraExecutionState_IfResult3; int ENiagaraExecutionStateSource_IfResult3; if(Result37) { ENiagaraExecutionState_IfResult3 = In_NewState; ENiagaraExecutionStateSource_IfResult3 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult3 = Context.Map.DansingSprites.ExecutionState; ENiagaraExecutionStateSource_IfResult3 = Context.Map.DansingSprites.ExecutionStateSource; } Context.Map.DansingSprites.ExecutionState = ENiagaraExecutionState_IfResult3; Context.Map.DansingSprites.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult3; } void EmitterState_EmitterChangeState005_DansingSprites_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant33 = 3; bool Result41 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant33); int Constant34 = 4; bool Result42 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant34); bool Result43 = Result41 && Result42; bool Result44 = In_Condition && Result43; bool Result45 = NiagaraAll(Context.Map.DansingSprites.ExecutionStateSource <= In_NewStateSource); bool Result46 = Result44 && Result45; int ENiagaraExecutionState_IfResult4; int ENiagaraExecutionStateSource_IfResult4; if(Result46) { ENiagaraExecutionState_IfResult4 = In_NewState; ENiagaraExecutionStateSource_IfResult4 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult4 = Context.Map.DansingSprites.ExecutionState; ENiagaraExecutionStateSource_IfResult4 = Context.Map.DansingSprites.ExecutionStateSource; } Context.Map.DansingSprites.ExecutionState = ENiagaraExecutionState_IfResult4; Context.Map.DansingSprites.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult4; } void EmitterState_EmitterChangeState003_DansingSprites_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant39 = 3; bool Result51 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant39); int Constant40 = 4; bool Result52 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant40); bool Result53 = Result51 && Result52; bool Result54 = In_Condition && Result53; bool Result55 = NiagaraAll(Context.Map.DansingSprites.ExecutionStateSource <= In_NewStateSource); bool Result56 = Result54 && Result55; int ENiagaraExecutionState_IfResult5; int ENiagaraExecutionStateSource_IfResult5; if(Result56) { ENiagaraExecutionState_IfResult5 = In_NewState; ENiagaraExecutionStateSource_IfResult5 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult5 = Context.Map.DansingSprites.ExecutionState; ENiagaraExecutionStateSource_IfResult5 = Context.Map.DansingSprites.ExecutionStateSource; } Context.Map.DansingSprites.ExecutionState = ENiagaraExecutionState_IfResult5; Context.Map.DansingSprites.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult5; } void EmitterState_DansingSprites_Func_(inout FSimulationContext Context) { Context.Map.Local.EmitterState.PreviousEmitterState = Context.Map.DansingSprites.ExecutionState; float Constant16 = 0.016667; float Result18 = max(Context.Map.Constants.DansingSprites.EmitterState.LoopDuration, Constant16); Context.Map.Local.EmitterState.LoopDuration = Result18; float Constant17 = 0; bool Result19 = NiagaraAll(Context.Map.DansingSprites.Age == Constant17); float Duration_IfResult1; if(Result19) { Duration_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { Duration_IfResult1 = Context.Map.DansingSprites.CurrentLoopDuration; } float Constant18 = 0; Context.Map.DansingSprites.CurrentLoopDuration = Duration_IfResult1; Context.Map.EmitterState.LoopDelay = Constant18; float Result20 = Context.Map.DansingSprites.Age + Context.Map.Engine.DeltaTime; float Result21 = Context.Map.Engine.DeltaTime + Context.Map.DansingSprites.LoopedAge; float Result22 = Result21 / Context.Map.DansingSprites.CurrentLoopDuration; int Count1; Count1 = Result22; int Constant19 = 0; int Result23 = max(Count1, Constant19); float Result24 = Result23 * Context.Map.DansingSprites.CurrentLoopDuration; float Result25 = Result21 - Result24; int Constant20 = 0; bool Result26 = NiagaraAll(Result23 > Constant20); int Result27 = Result23 + Context.Map.DansingSprites.LoopCount; Context.Map.DansingSprites.Age = Result20; Context.Map.DansingSprites.LoopedAge = Result25; Context.Map.Local.EmitterState.LoopCountIncreased = Result26; Context.Map.DansingSprites.LoopCount = Result27; bool Constant21 = false; Context.Map.EmitterState.RecalculateDurationEachLoop = Constant21; float float_IfResult1; if(Context.Map.EmitterState.RecalculateDurationEachLoop) { float_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { float_IfResult1 = Context.Map.DansingSprites.CurrentLoopDuration; } float CurrentLoopDuration_IfResult1; float LoopedAge_IfResult1; if(Context.Map.Local.EmitterState.LoopCountIncreased) { CurrentLoopDuration_IfResult1 = float_IfResult1; LoopedAge_IfResult1 = Context.Map.DansingSprites.LoopedAge; } else { CurrentLoopDuration_IfResult1 = Context.Map.DansingSprites.CurrentLoopDuration; LoopedAge_IfResult1 = Context.Map.DansingSprites.LoopedAge; } Context.Map.DansingSprites.CurrentLoopDuration = CurrentLoopDuration_IfResult1; Context.Map.DansingSprites.LoopedAge = LoopedAge_IfResult1; float Result28 = Context.Map.DansingSprites.LoopedAge / Context.Map.DansingSprites.CurrentLoopDuration; Context.Map.DansingSprites.NormalizedLoopAge = Result28; float Constant22 = 0; float Constant23 = 1.0001; float Result29 = clamp(Context.Map.Engine.Owner.LODDistanceFraction,Constant22,Constant23); Context.Map.DansingSprites.Scalability.DistanceFraction = Result29; int Constant24 = 0; Context.Map.Transient.ScalabilityEmitterExecutionState = Constant24; int Constant25 = 0; bool Result30 = NiagaraAll(Context.Map.Engine.DansingSprites.NumParticles == Constant25); Context.Map.Local.EmitterState.NoActiveEmitterParticles = Result30; int Constant26 = 0; bool Result31 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant26); EmitterState_EmitterChangeState002_DansingSprites_Func_(Context.Map.System.ExecutionState, Result31, Context.Map.System.ExecutionStateSource, Context); int Constant29 = 1; int Constant30 = 0; bool Result38 = NiagaraAll(Context.Map.System.ExecutionState != Constant30); int Constant31 = 2; bool Result39 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant31); bool Result40 = Result38 && Result39; int Constant32 = 1; EmitterState_EmitterChangeState005_DansingSprites_Func_(Constant29, Result40, Constant32, Context); int Constant35 = 3; int Constant36 = 0; bool Result47 = NiagaraAll(Context.Map.DansingSprites.ExecutionState != Constant36); int Constant37 = 0; bool Result48 = NiagaraAll(Context.Map.DansingSprites.ExecutionStateSource != Constant37); bool Result49 = Result47 && Result48; bool Result50 = Context.Map.Local.EmitterState.NoActiveEmitterParticles && Result49; int Constant38 = 3; EmitterState_EmitterChangeState003_DansingSprites_Func_(Constant35, Result50, Constant38, Context); } void SpawnRate_DansingSprites_Func_(inout FSimulationContext Context) { float Constant41 = 1; Context.Map.Transient.ScalabilityEmitterSpawnCountScale = Constant41; float Result57 = Context.Map.Constants.DansingSprites.SpawnRate.SpawnRate * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.DansingSprites.SpawnCountScale; float Result58 = Reciprocal(Result57); float Result59 = 1 - Context.Map.DansingSprites.SpawnRate.SpawnRemainder; float Result60 = Result58 * Result59; Context.Map.Local.SpawnRate.SpawnRate = Result57; Context.Map.Local.SpawnRate.IntervalDT = Result58; Context.Map.Local.SpawnRate.InterpStartDT = Result60; float Constant42 = 0; bool Result61 = NiagaraAll(Context.Map.DansingSprites.LoopedAge >= Constant42); float Constant43 = 1; float Constant44 = 0; float float_IfResult2; if(Result61) { float_IfResult2 = Constant43; } else { float_IfResult2 = Constant44; } float Result62 = Context.Map.Local.SpawnRate.SpawnRate * float_IfResult2; float Result63 = Result62 * Context.Map.Engine.DeltaTime + Context.Map.DansingSprites.SpawnRate.SpawnRemainder; float Result64 = floor(Result63); float Result65 = Result63 - Result64; Context.Map.Local.SpawnRate.SpawnCount = Result64; Context.Map.DansingSprites.SpawnRate.SpawnRemainder = Result65; NiagaraSpawnInfo Output1; Output1.Count = Context.Map.Local.SpawnRate.SpawnCount; Output1.InterpStartDt = Context.Map.Local.SpawnRate.InterpStartDT; Output1.IntervalDt = Context.Map.Local.SpawnRate.IntervalDT; Output1.SpawnGroup = Context.Map.Constants.DansingSprites.SpawnRate.SpawnGroup; bool Constant45 = true; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo = Output1; Context.Map.Transient.SpawningbCanEverSpawn = Constant45; } void DansingSprites_Func_(inout FSimulationContext Context) { EnterStatScope(3 /**EmitterState_DansingSprites_Func_*/); EmitterState_DansingSprites_Func_(Context); ExitStatScope(/**EmitterState_DansingSprites_Func_*/); EnterStatScope(4 /**SpawnRate_DansingSprites_Func_*/); SpawnRate_DansingSprites_Func_(Context); ExitStatScope(/**SpawnRate_DansingSprites_Func_*/); } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemUpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = (false); Context.Map.Local.SystemState.LoopCountIncreased = Constant; bool Constant1 = false; Context.Map.SystemState.RecalculateDurationEachLoop = Constant1; int Constant2 = 0; Context.Map.Transient.ScalabilityExecutionState = Constant2; EnterStatScope(1 /**SystemState_Func_*/); SystemState_Func_(Context); ExitStatScope(/**SystemState_Func_*/); EnterStatScope(2 /**DansingSprites*/); DansingSprites_Func_(Context); ExitStatScope(/**DansingSprites*/); ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_DansingSprites.NS_DansingSprites:SystemUpdateScript*/); } void SimulateMain() { EnterStatScope(5 /**SystemUpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.DansingSprites.Age = InputDataFloat(0, 0); Context.Map.DansingSprites.CurrentLoopDuration = InputDataFloat(0, 1); Context.Map.DansingSprites.ExecutionState = InputDataInt(0, 0); Context.Map.DansingSprites.ExecutionStateSource = InputDataInt(0, 1); Context.Map.DansingSprites.LocalSpace = InputDataBool(0, 2); Context.Map.DansingSprites.LoopCount = InputDataInt(0, 3); Context.Map.DansingSprites.LoopedAge = InputDataFloat(0, 2); Context.Map.DansingSprites.NormalizedLoopAge = InputDataFloat(0, 3); Context.Map.DansingSprites.Scalability.DistanceFraction = InputDataFloat(0, 4); Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.DansingSprites.SpawnRate.SpawnRemainder = InputDataFloat(0, 7); Context.Map.Emitter.RandomSeed = InputDataInt(0, 6); Context.Map.System.Age = InputDataFloat(0, 8); Context.Map.System.bCompleteOnInactive = InputDataBool(0, 7); Context.Map.System.CurrentLoopDuration = InputDataFloat(0, 9); Context.Map.System.ExecutionState = InputDataInt(0, 8); Context.Map.System.ExecutionStateSource = InputDataInt(0, 9); Context.Map.System.LoopCount = InputDataInt(0, 10); Context.Map.System.LoopedAge = InputDataFloat(0, 10); Context.Map.System.NormalizedLoopAge = InputDataFloat(0, 11); Context.Map.Engine.DansingSprites.NumParticles = InputDataInt(1, 0); Context.Map.Engine.DansingSprites.SpawnCountScale = InputDataFloat(1, 0); Context.Map.Engine.Emitter.InstanceSeed = InputDataInt(1, 1); Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 2); Context.Map.Engine.Owner.ExecutionState = InputDataInt(1, 3); Context.Map.Engine.Owner.LODDistanceFraction = InputDataFloat(1, 1); Context.Map.Constants.SystemState.LoopDelay = Constants_SystemState_LoopDelay; Context.Map.Constants.SystemState.LoopDuration = Constants_SystemState_LoopDuration; Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Constants.DansingSprites.EmitterState.LoopDuration = Constants_DansingSprites_EmitterState_LoopDuration; Context.Map.Constants.DansingSprites.EmitterState.LoopDelay = Constants_DansingSprites_EmitterState_LoopDelay; Context.Map.Constants.DansingSprites.SpawnRate.SpawnRate = Constants_DansingSprites_SpawnRate_SpawnRate; Context.Map.Constants.DansingSprites.SpawnRate.SpawnGroup = Constants_DansingSprites_SpawnRate_SpawnGroup; Context.Map.Constants.DansingSprites.SpawnRate.SpawnProbability = Constants_DansingSprites_SpawnRate_SpawnProbability; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); EnterStatScope(6 /**SystemUpdateScript_MapMain*/); Simulate(Context); ExitStatScope(/**SystemUpdateScript_MapMain*/); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.DansingSprites.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.DansingSprites.CurrentLoopDuration); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.DansingSprites.ExecutionState); OutputDataInt(0, 1, TmpWriteIndex, Context.Map.DansingSprites.ExecutionStateSource); OutputDataBool(0, 2, TmpWriteIndex, Context.Map.DansingSprites.LocalSpace); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.DansingSprites.LoopCount); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.DansingSprites.LoopedAge); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.DansingSprites.NormalizedLoopAge); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.DansingSprites.Scalability.DistanceFraction); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 5, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.DansingSprites.SpawnRate.SpawnRemainder); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 7, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 8, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 9, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); } ExitStatScope(/**SystemUpdateScript_Main*/); } v ------------------------------- Summary ------------------------------- Num Byte Code Ops: 141 Num Constants: 28 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_QualityLevel 20 | Engine_PaddingInt32_0 24 | Engine_PaddingInt32_1 28 | Engine_PaddingInt32_2 32 | Constants_SystemState_LoopDelay 36 | Constants_SystemState_LoopDuration 40 | Constants_DansingSprites_EmitterState_LoopDuration 44 | Constants_DansingSprites_EmitterState_LoopDelay 48 | Constants_DansingSprites_SpawnRate_SpawnRate 52 | Constants_DansingSprites_SpawnRate_SpawnGroup 56 | Constants_DansingSprites_SpawnRate_SpawnProbability 60 | Emitter_RandomSeed 64 | 5 68 | 6 72 | 0 76 | 1 80 | 0.0166669991 84 | 0 88 | 2 92 | 3 96 | 1.00010002 100 | 4 104 | 1 108 | True ------------------------------- Byte Code (141 Ops) ------------------------------- 0 | enter_stat_scope(C[64]); 1 | [R][0] = InputDataFloat(0, 0); 2 | [R][1] = InputDataFloat(0, 1); 3 | [R][2] = InputDataInt(0, 0); 4 | [R][3] = InputDataInt(0, 1); 5 | [R][4] = InputDataInt(0, 2); 6 | [R][5] = InputDataInt(0, 3); 7 | [R][6] = InputDataFloat(0, 2); 8 | [R][7] = InputDataFloat(0, 7); 9 | [R][8] = InputDataFloat(0, 8); 10 | [R][9] = InputDataFloat(0, 9); 11 | [R][10] = InputDataInt(0, 8); 12 | [R][11] = InputDataInt(0, 9); 13 | [R][12] = InputDataInt(0, 10); 14 | [R][13] = InputDataFloat(0, 10); 15 | [R][14] = InputDataInt(1, 0); 16 | [R][15] = InputDataFloat(1, 0); 17 | [R][16] = InputDataInt(1, 3); 18 | [R][17] = InputDataFloat(1, 1); 19 | enter_stat_scope(C[68]); 20 | enter_stat_scope(C[72]); 21 | enter_stat_scope(C[76]); 22 | R[18] = max(C[36], C[80]); 23 | R[19] = cmpeq(R[8], C[84]); 24 | R[20] = select(R[19], R[18], R[9]); 25 | R[9] = add(C[0], R[13]); 26 | R[13] = div(R[9], R[20]); 27 | R[18] = f2i(R[13]); 28 | R[13] = maxi(R[18], C[72]); 29 | R[18] = i2f(R[13]); 30 | R[19] = mul(R[18], R[20]); 31 | R[18] = sub(R[9], R[19]); 32 | R[9] = addi(R[13], R[12]); 33 | R[12] = add(R[8], C[0]); 34 | R[8] = cmpgti(R[13], C[72]); 35 | R[13] = select(R[8], R[20], R[20]); 36 | R[19] = select(R[8], R[18], R[18]); 37 | R[8] = div(R[19], R[13]); 38 | R[18] = cmplei(R[11], C[72]); 39 | R[20] = select(R[18], C[72], R[10]); 40 | R[10] = select(R[18], C[72], R[11]); 41 | R[11] = cmpneqi(R[16], C[72]); 42 | R[18] = cmplei(R[10], C[88]); 43 | R[21] = logic_and(R[11], R[18]); 44 | R[11] = select(R[21], R[16], R[20]); 45 | R[16] = select(R[21], C[88], R[10]); 46 | exit_stat_scope(); 47 | enter_stat_scope(C[88]); 48 | enter_stat_scope(C[92]); 49 | R[10] = max(C[40], C[80]); 50 | R[18] = cmpeq(R[0], C[84]); 51 | R[20] = select(R[18], R[10], R[1]); 52 | R[1] = add(C[0], R[6]); 53 | R[6] = div(R[1], R[20]); 54 | R[10] = f2i(R[6]); 55 | R[6] = maxi(R[10], C[72]); 56 | R[10] = i2f(R[6]); 57 | R[18] = mul(R[10], R[20]); 58 | R[10] = sub(R[1], R[18]); 59 | R[1] = addi(R[6], R[5]); 60 | R[5] = add(R[0], C[0]); 61 | R[0] = cmpgti(R[6], C[72]); 62 | R[6] = select(R[0], R[20], R[20]); 63 | R[18] = select(R[0], R[10], R[10]); 64 | R[0] = div(R[18], R[6]); 65 | R[10] = clamp(R[17], C[84], C[96]); 66 | R[17] = cmpeqi(R[14], C[72]); 67 | R[14] = cmpeqi(R[16], C[72]); 68 | R[20] = cmpneqi(R[2], C[92]); 69 | R[21] = cmpneqi(R[2], C[100]); 70 | R[22] = logic_and(R[20], R[21]); 71 | R[20] = logic_and(R[14], R[22]); 72 | R[14] = cmplei(R[3], R[16]); 73 | R[21] = logic_and(R[20], R[14]); 74 | R[14] = select(R[21], R[11], R[2]); 75 | R[2] = select(R[21], R[16], R[3]); 76 | R[3] = cmpneqi(R[11], C[72]); 77 | R[20] = cmpeqi(R[16], C[88]); 78 | R[21] = logic_and(R[3], R[20]); 79 | R[3] = cmpneqi(R[14], C[92]); 80 | R[20] = cmpneqi(R[14], C[100]); 81 | R[22] = logic_and(R[3], R[20]); 82 | R[3] = logic_and(R[21], R[22]); 83 | R[20] = cmplei(R[2], C[76]); 84 | R[21] = logic_and(R[3], R[20]); 85 | R[3] = select(R[21], C[76], R[14]); 86 | R[14] = select(R[21], C[76], R[2]); 87 | R[2] = cmpneqi(R[3], C[72]); 88 | R[20] = cmpneqi(R[14], C[72]); 89 | R[21] = logic_and(R[2], R[20]); 90 | R[2] = logic_and(R[17], R[21]); 91 | R[17] = cmpneqi(R[3], C[92]); 92 | R[20] = cmpneqi(R[3], C[100]); 93 | R[21] = logic_and(R[17], R[20]); 94 | R[17] = logic_and(R[2], R[21]); 95 | R[2] = cmplei(R[14], C[92]); 96 | R[20] = logic_and(R[17], R[2]); 97 | R[2] = select(R[20], C[92], R[3]); 98 | R[3] = select(R[20], C[92], R[14]); 99 | exit_stat_scope(); 100 | enter_stat_scope(C[100]); 101 | R[14] = mul(C[48], R[15]); 102 | R[15] = rcp(R[14]); 103 | R[17] = sub(C[104], R[7]); 104 | R[20] = mul(R[15], R[17]); 105 | R[17] = cmpge(R[18], C[84]); 106 | R[21] = select(R[17], C[104], C[84]); 107 | R[17] = mul(R[14], R[21]); 108 | R[14] = mad(R[17], C[0], R[7]); 109 | R[7] = floor(R[14]); 110 | R[17] = f2i(R[7]); 111 | R[21] = sub(R[14], R[7]); 112 | exit_stat_scope(); 113 | exit_stat_scope(); 114 | exit_stat_scope(); 115 | exit_stat_scope(); 116 | [R][7] = AcquireIndex(0, [C][108]); 117 | OutputDataFloat(0, 0, [R][7], [R][5]); 118 | OutputDataFloat(0, 1, [R][7], [R][6]); 119 | OutputDataInt(0, 0, [R][7], [R][2]); 120 | OutputDataInt(0, 1, [R][7], [R][3]); 121 | OutputDataInt(0, 2, [R][7], [R][4]); 122 | OutputDataInt(0, 3, [R][7], [R][1]); 123 | OutputDataFloat(0, 2, [R][7], [R][18]); 124 | OutputDataFloat(0, 3, [R][7], [R][0]); 125 | OutputDataFloat(0, 4, [R][7], [R][10]); 126 | OutputDataInt(0, 4, [R][7], [R][17]); 127 | OutputDataFloat(0, 5, [R][7], [R][20]); 128 | OutputDataFloat(0, 6, [R][7], [R][15]); 129 | OutputDataInt(0, 5, [R][7], [C][52]); 130 | OutputDataFloat(0, 7, [R][7], [R][21]); 131 | OutputDataInt(0, 6, [R][7], [C][60]); 132 | OutputDataFloat(0, 8, [R][7], [R][12]); 133 | OutputDataInt(0, 7, [R][7], [C][108]); 134 | OutputDataFloat(0, 9, [R][7], [R][13]); 135 | OutputDataInt(0, 8, [R][7], [R][11]); 136 | OutputDataInt(0, 9, [R][7], [R][16]); 137 | OutputDataInt(0, 10, [R][7], [R][9]); 138 | OutputDataFloat(0, 10, [R][7], [R][19]); 139 | OutputDataFloat(0, 11, [R][7], [R][8]); 140 | exit_stat_scope(); ------------------------------- |)x5MMDZMDZM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8a_Z*(Ms;j45 !U\MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !ULMM?L8_Z*(Ms;e45 !U MM?L8_Z*(Ms;e45 !UNMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U[MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8 _Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !UMM?L8!_Z*(Ml;45 !NEMM?L8 _Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !UMM?L8g_Z*(Ms;j45 !UMM?L8f_Z*(Ms;j45 !UMM?L8d_Z*(Ms;j45 !UMM?L8e_Z*(Ms;j45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8b_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !U MM?L8__Z*(Ms;j45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ml;45 !NEMM?P8~_Z*(Ms;|45 !U4MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !U5MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !U&MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UIMM?L8_Z*(Ms;e45 !UvMM?L8_Z*(Ms;45 !UEMM?L8_Z*(Ms;45 !UMM?P8_Z*(M?s;45 !U<MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UqMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UpMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !U8MM?L8_Z*(Ms;45 !UCMM?L8_Z*(Ms;45 !UWMM?P8#_Z*(Ml;45 !NEMM?L8_Z*(M;45 !UNEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?P8 _Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UQMM?P8b_Z*(M;45 "UTNEMM?P8`_Z*(M;45 "UMNEMM?P8a_Z*(M;45 "UQNEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8__Z*(M;45 "UNEMM?L8_Z*(Ms;e45 !UNMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !U`MM?L8_Z*(Ms;|45 !U`MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UOMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;45 !U%MM?L8_Z*(Ms;e45 !USMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !URMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;|45 !UMM?L8`_Z*(Ms;j45 !U=MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U'MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U=MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UlMM?L8_Z*(Ms;|45 !UIMM?L8_Z*(Ms;e45 !UEMM?L8_Z*(Ms;e45 !UIMM?L8_Z*(Ms;e45 !UMM?L8h_Z*(Ms;j45 !UIMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UmMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U!MM?L8_Z*(Ms;e45 !U>MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8c_Z*(Ms;j45 !UMM?L8b_Z*(Ms;j45 !U]MM?L8_Z*(Ms;e45 !UVMM?L8_Z*(Ms;e45 !UPMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;|45 !UOMM?L8}_Z*(Ms;|45 !U%MM?L8_Z*(M;45 !U(NEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UVMM?L8_Z*(Ms;45 !U9MM?L8_Z*(Ms;45 !U8MM?L8_Z*(Ms;e45 !UuMM?L8_Z*(Ms;45 !U9MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !U8MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;|45 !UIMM?L8_Z*(Ms;e45 !UEMM?L8_Z*(Ms;e45 !UIMM?L8_Z*(Ms;45 !UMM?L8b_Z*(Ms;j45 !U]MM?L8h_Z*(Ms;j45 !UIMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8a_Z*(Ms;j45 !U\MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U!MM?L8_Z*(Ms;e45 !UMM?L8c_Z*(Ms;j45 !UMM?L8_Z*(Ms;e45 !UVMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8b_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UQMM?L8 _Z*(Ms;45 !U MM?L8__Z*(Ms;j45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !U%MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UQMM?L8"_Z*(Ml;45 !NEMM?P8_Z*(Ms;45 !U9MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !U8MM?L8_Z*(Ml;45 !NEMM?L8~_Z*(Ms;|45 !U4MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !U5MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !U&MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UIMM?L8_Z*(Ms;e45 !UvMM?L8_Z*(Ms;45 !UEMM?L8_Z*(Ms;45 !UMM?P8_Z*(M?s;45 !U<MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?P8 _Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !U-MM?L8_Z*(Ms;e45 !U0MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UWMM?L8_Z*(Ms;45 !UCMM?L8_Z*(Ms;45 !U8MM?L8_Z*(Ms;45 !U9MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !U9MM?L8_Z*(Ms;e45 !UMM?L8!_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UqMM?L8_Z*(Ms;45 !UpMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ml;45 !NEMM?P8#_Z*(Ml;45 !NEMM?P8b_Z*(Ml;45 !NEMM?P8`_Z*(Ml;45 !NEMM?P8a_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8__Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UNMM?L8_Z*(Ms;45 !U%MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !U`MM?L8_Z*(Ms;|45 !U`MM?L8_Z*(Ms;e45 !UOMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !USMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !URMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !UPMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U'MM?L8_Z*(Ms;e45 !U=MM?L8_Z*(Ms;e45 !UlMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UmMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U>MM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UVMM?L8_Z*(Ms;e45 !UuMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !ULMM?L8_Z*(Ms;e45 !U MM?L8_Z*(Ms;e45 !UNMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !U[MM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;e45 !UMM?L8 _Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !UMM?L8 _Z*(Ms;45 !UMM?L8g_Z*(Ms;j45 !UMM?L8f_Z*(Ms;j45 !UMM?L8_Z*(Ms;45 !UMM?L8d_Z*(Ms;j45 !UMM?L8e_Z*(Ms;j45 !UMM?L8}_Z*(Ms;|45 !U%MM?L8`_Z*(Ms;j45 !U=MM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;e45 !UMM?L8_Z*(Ms;|45 !UOMM?L8_Z*(Ml;45 !NEMM?L8_Z*(Ms;45 !UMM?L8_Z*(Ml;45 !NEMMZ6wL8M_Z*(MM"98EMa"98EMJ"98EM"98EM"98EM"98EM"98EMP"98EMR0j<5Fq M%ECAA37B4-4D9C-B0FA-9E05-B2A0C229EA4A!378A99114C29491B13E0FA96151D63AASprites Size by VAudioVolume*N!09999975346b734d5dd8e68b904d319c!e9ac4872c57eddb8718d30b0e3fb6b78MM Z* XR2L7G_uhY @EiZMZKZL91$A*EA8_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M@*%@:B)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@* )A* )j* ) k* )S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l) U)~5@*)A*)j*)k*)S*)T*)MMB) l) U)~5@*)A*)j*)k*)S*)T*)MMB) l) U)~5@*)A*)j*)k*)S*)T*)MMB) l) U)~5@*)A*)j*)k*)S*)T*)MM) ) MeA*A8_Z*(M_Z*(M@*1@:B)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MM)M. A* A8_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M_Z*(M@*) @:B)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MM))M*C*5Cm*5mM/8C*wCByssMm*wmByssMM-*m-8C*wCByssMm*wmByssMMM;K7*&NiagaraSystem /Game/AudioVis.AudioVisMZM* L8_Z*(ML8_Z*(ML8_Z*(ML8_Z*(ML8_Z*(ML8_Z*(ML8_Z*(M"A*A8%_Z*(M4_Z*(M`_Z*(M_Z*(M_Z*(M_Z*(MO_Z*(M_Z*(M _Z*(M_Z*(M_Z*(M_Z*(M _Z*(M _Z*(M_Z*(M_Z*(M,_Z*(MI_Z*(M@*@|:B)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*) A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@* )A* )j*)k*)S*)T*)MMB)"l)U)~5@*)A*)j*)k*)S*)T*)MMB)"l)U)~5@*)A*)j*)k*)S*)T*)MMWR &5M)%))JE5,.MN"A*A8%_Z*(M4_Z*(M`_Z*(M_Z*(M_Z*(M_Z*(MO_Z*(M_Z*(M _Z*(M_Z*(M_Z*(M_Z*(M _Z*(M _Z*(M_Z*(M_Z*(M,_Z*(MI_Z*(M@*@|:B)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*) A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB)l)U)~5@*)A*)j*)k*)S*)T*)MMB) l)U)~5@* )A* )j*)k*)S*)T*)MMB)"l)U)~5@*)A*)j*)k*)S*)T*)MMB)"l)U)~5@*)A*)j*)k*)S*)T*)MMWRM&5M)%))JE5,-MMZZZnxDyCLFCYD?BEMMMZr XRV9$p@CڗssXsUsGEFR7%MRZh'Bg%+ZhEM]Zr- XR[ArW^LID.:"ossXsUsGEFR7%}* R%MRbhcqBPv+ZhEM8'']*--x sb``p b``ba6 /у.!omdPax53k 5=^PIQ# V`Q&&6 %9q8U0a38$^rUkdkȬX `FLF 3T=l$Kflecgf}//y99ysn3c988x?zIWg 88r<~p߉z`|uB}ڿvySʋ;hG K^P)(7q̲9yXbpq*E%2)363[_&NSqP?5Ol03BkcU7ߒ'χf cGjW ǀ>=}YetF}iU.̼c:L۩ CEAZ Ep]4%iW.+;}2g{:0l/ !y |ƺS-~33{uD*b̂Yv9E!LGF>?0!c( j@(5S1M΂}쪏:@'b>۔N'qP7%CE돊گg1<#a|Zķ ~PBrlYnjm.u֞ 9l׈O2J2;>vULK34?35њ8 SZ߱'S3RKLVP!rʶr"eH!cОDZ[ׇ 0 :bsXt (fUzGIP͝y#YYsq6;CGKhݧ;:|[  E+FeRZfѝG[mcGMmXQJ?i]V@ޡd3sV_UvtVVym! ??p^N}7yd^ӝ )k|~[m9 < ^' %ia͞g\_:Ͽ:zXܫN?;8 u d [.xw4k,nrx=( {- kDTR 'G/lDk. ):] i:㳏4H'ߖNc4_LZ<̡*  E7_B]g5.JN/U5-~~ y%p[Ђogf^#<DƊS5S+aV`E͎HA#*-o)+<#1{ȇuSm4*/ǻXYI[я>85l--WSg/ϛ=lK9-rK:2;ڨ[I6^Zu7HJ߽~jejSE~YL{]ӦpKa9 !*E(G:S~nvȲU)7nYÿ~Ze TagB_QSSLUf?*=kQ(;nY! [mIiQ r&Cn,0)I"iam-V$a=r^m[5<"O =㤄rViqF3aky Mf~Wy^clԐGŕ/ sɭ{z-s*ͺ!27X)4=fX&v00ldVptLpG^3MXOT="Rr8{5eſuǚdBV?~Aƒ@Iq^C68s6&~j F+^EMÿФ{cG ~?~U|SIW=[[Y\ِ aQDi@xy*kMgN :%?dhQ2scƁc;Rw}[at/$KKŰ)洞wJ/ZĀT#jzBOx,poA? a'vMp}WM !)&gRbi{":/Q ;rxls1x/dt%ڂPr5k(SC--;[708}Zly`恔X#[7&ɀ|lDOSJðٻi w:)t鸙T;H-~w"RJxd'/袈 CHGI#@@%kTC}]o)VPIY88^u zȺ5LzS~~bu;aO]=DvC:d4##?G,լ;W*{)yІˏjwPz}7l)s~S_Lߐc]Mgtr Bo^+a^5~K5 Z^A|_ hQG߰eu  __irIe86]DM|* j5Kmaq3cU3z:1f^~ @ǃ&8xdyҵG`u=\ s?#R!:D7M=VC.Z_^jqHYջ|:tH.ߧ Amq~f4fr"~O_Nמ}c d!# DV@{plsS◛`Jp׊8JZUI>-no?b$]!5]w~r X_souBjB/ؐ-`{UtQJ@jA -w3 ;Wjɧ okuxr>W SP3{ n뚎#aDeȽ-t씠7{V;6/;fWH9~ )??W ؖЖa#RoMS7O7i:2 d}5;2ݾnf/3yچ (GZGE[ǒ(c6o_)v3ӧ[6QLFun,Wb}&LuBn]' Ԫ27k$Ҳj)tF"ݦ+ jw_ĨPQr=?b+0$B3CiUusE}9GKHrYuZFDЕ 9|]ﴺ-)l5SJhUXЙazv}EiTEu#{|æ7geLFu DNSPţz}[i1'ݕ$)#秱߹C1yZ(}DdzTywH4`ay9 kU&{L3ɒT870}Q쏎bq/9:hjޗnSmK?[R?H]ʡ6)KKɋ1d#qK%\kzEҗKW zLj@O ˢfNj2} 'o;|6<FL-CrM6y}ᕆɪMu\ (nUڂv{)KeOao&E55φǐFڊ}< s`q쮃w8}dϿ< ̴A1iE#J{&r6} u|[+/V*; *펯\|4&؟5zPHB&ču֛kͧ7g_XI4Jrm;BEuU o%_~ =k8'W >M*۹;nxd6w\Vej1_OcP¢cֹ[n@Ӷ<[KN7zV4Eak#!Ki-Ah 3&xJȭȟcO Z}2&n з%-o TiaX2ܗ1~?P\a 3.TW$ Pdakbbj;E 0H͊'#ps\͑`,F#L (z sSZL7J^p2&NMR(F ^OWZ/̽MGv@e|ۆ~|AWԴ3V 8I?MS^I~ft(]>%ŸaGfSy[,z/C=/}R{,鳧E,{SkǙ:Qڼ栗1Y*PF@!=@=G76JE8҂;$UhfJ[r [D&mjAB8>Y{Wn:'`+Ë#Џpc~H$:Ňߌ$ `Q:ۣ b3d=,T2iqi@A_`vlss(Z@]E'm& EɏbpNfnthkJ)VKnp(KŠ{iǶ \r|eOT{.x`[ @XyW8BR[(r1cyȗ|ht4Kfq}!~s+Mo!qoRܒ8`}j&G2!u6*AƝ{5-'.]l2c]<z&ӘžCK!v:`WÚQY?aIj}(>>EKZM""|{/~tz<ٺ-VSkOe* @ˡHyl".}詽W55Ajn 0ezU8/<}6 kX|aoi :իkt/*MvU#~%#N5^jNu]t2'U۷s=Wvw*[֏<5 t5u3_<3xT6:2󷐺I-39 Xh sꃖ3m{+u<,ކ:HcD^Ў<<%FD'N?ütѪ7d6H\X<{n7r̒gpTA^juku{[4y a{3su0U6 }p*k:YpdKOC+`(?^N\s Irb|f. 퀸ĩݠ$K\#v0k%-n&!+ҨPoOڮδ+ץ5}UyAm> fU#!jˢʐ ΃$?/6QUDSǞ؍L$j/s4UƋEY_C& kt*n*I-W;3.J{\1 u/&UWPTnnʚ=sЮĽ>\Ew%C&V47<3r?L/+"sl},>916zePu=>_ƮRu =5@Z)9b|e{_sQx:^\29s/*`%W8yŦogȮ RW9Tx{/S(Ԋcgʃ3m˫o9\O\8{ͧ+zqg˛4Ż;FѴZnh!c8ݳ7574`\gn#NB]Dm(H&s1Ur2[o|KXRNyqyη%ӥ>~?_fyp(8n0m{⮃SqQh =~|/@ѻX%ZiѶk坩ol'\idޒaF| 7vk-r/߆\˞ٝ$g̒Ł< 8zfA?(XyN+߇ 5}fE(óE&55<WIz8 08UF=wO_UӶQF4'I8֧1[uzNIlXXɝ{Y iYFӨ6D-w!E E"Ǽ#|gہ\RY~ܖZMz7|΄eO4GA ]ks4>&º hN(8 ٭"SҪw']]W1o]2w @7fTAhX1\+\2#P`d}4% b`Z,币,YHbv1053vS,+]l:`I .+8Jŝ]׾Z:EN0'TÔZp=֞ aZ w̺-踋|3$Vr-ucV_$\\KI#Ū`]CA~R帨\[*+B#6ˡ$]vwߡeSerVs-?d}5a5%[lLr~9K("b'`@ =OhE塚E9ǁ^Ff0E63fA8] N1]۪t8VZ#2bd5eA9<ǽy?dY99?9ުZʸ0 l)p#H^KW~cSB`7 ~"O9@Oa-rfF+uͱnx*4 9iOBl r!7U`T9r[Y !_@c`Zg'&/l!V9^llyt\_ gǮSݿ?bWM\GM׸ "w?FM{a?gf %xӤQ[Œ;5u-4Қ#ޣ4E"+ҙOP2Ci︚lnW7ʜXFcp/UP|`S5Gf0"Np@_8Xo).Mg MfAYmϷSn5/N3kf2bpDԘnS|eѱpcHT;L:,hla 8zx>%!,.o7C~19g={b33:,$UFiuYo_$_SqƱ9ʁZrUƯ]&w4 ֲOy)Oh>l6[Uq۸ _]^ cki_75D !t9^5\it0>ukQMkUvOƾ8_(wc7Ԩ8?JLO-Jp>k(a,`>̋/yź8x,ŶT,*\iy&Ia|Ɓ`NC|sy@U"@ǼCṣ֎ aŵ^R }Mu- K5 OM[T|BŁʌ=tS\硢y؋FDgbU.<ޮU# <tGf}ayS Ų ak=迪 ^ qK ON `>&!*/*"<An%78l'e'`?Z:Q 46KK)3%Yh5ە!gQMuİa 7廓@#]ӡzz: E/ʷ+ƥI~nk]PyPkkG-cS vWUlu;"?;2+O R{bNZfՉG@%≝3G5FVL7S+j@Lf?DAanb<$[L֌ |t[`Xѵ"e.K#m]G A jm!UmoSofU OoHnP?F+S\t%Pg<nWhse:yq"b#6R.Uwu+7Mz^CN."(i-^n4. Y$=O|A\d cK[5E4b8"weD힯Ƀb!& 8L^Y2l=zHzGXv lpÄݾ,K n|l^5R`76qYט8pK׆|Ҋu'Z Rr@AbVbPae=mj|rNI*^~,u[Ho\̔N'/MY~bjyGƗ}3/NtyV^8o?G?J_0t)"eqQ ;7xuzq G ]tUy>{ҜϽG1p:nq9)U5M9`jE&:;{luhnVu+3Bpt ko0Ц&.]hW=q!s$huV/ֺ62[O+;օ~ZNhVָ(=5 :^V՝V4(WurןcDۈӾj n>6ymY&0[c>uEi}/6ļR䨜L٧{z! \=ė^cG1ﴏ jL6UtfBԟH!} OQ,,@!I;@؟/i@򯮓fEM#dt&Jy՞~K"$QMz2݃O;mܸY2_gfnK Km[[#y}ItO0YBv:c)S E#EIM"g$P#;PEY/5%Oa1(c s\S #/tsF[1&#fǺͪsĚK׈%1Ƈj &YႴgT!v"\z%=d/N|P MޫqK^6o|Syo{@3L'nĔWc> g;[elXZ -ItZ! -Ȗk[N"!Z2bR:ѫw)}&[,wf3=#]n:_toƨqs g8󫣍]qʽD݀& JqǍJ)kmI])7`tF~$**y |p~d$!HRRoos 1\o},8TmВJ'c mQM5Gɷ Ir=p#@\ךBTyE/N$lt#PgR<iCuwrIvڎTpkuFƈEJܹwN`?U9-i\b~,i <2p}&FH!^|JA!QiH#3 ˻[sB"U0J$ ||i2Ӥz 82JYty4WbadX"xV?-L>0ӃiMc\Nl}.~aDJ{7Z?Guk 4Yh7K{cQvfU[m0I('t 3uޠN}Pg5HA#gP%w5^cZH=\kCwNCWE!RX2fyz_Zȹ)ֳuGVJhwΰyzoHs,{qAGVe\ڌkdywxH Z>C뙫]"EMI53CT1@˯Z{5h:{_dT: Wybu2@+Ɗe}-{VNB"B <+p,=0_=t[ˌGs>J2WI+ IJdZaunģ\ EBsP/`:q\OԗFm%s(Wef}vdzlpJ^o#w_Se\^8ڙf2=$V .Jr~a~sgD+q?$2I* Ŋ \x1dh,/-  '$mAe=lR9{>XahRaIY7UEMٷGŖv)Ht`v [ eW.(SUIBf6R#`xC#[}N3cLw*^)d{lE\o^sz*XMEo"-wןR_#!01䫥A&q뵓b 4C/,"w_O*vV2$Uyyw [ڄbF*LrMnUDt<Bν 3?$64Vق֋9m0bf] U^YR1솵Ѯu\ű,"zPz]9F[4JjDv7z)iߩf}srG"!&!A$<";|Օo?&@ٿ Sb|T~Qr IDAT1ז^I$ִ ;A0N}>qK8ޮ'uﭮGKm$fﵳv.TGf|5^զ:?'s鞒=}QlR#;9R}˻rq\yYJN[ VH˵Cꚾ2`7z84^4>&<c%d/}&_$m}G5yFk\k.ˎ ic'վ y]q>8C>y5<Vpo/'?Iu=oTv8)c8pN;:)zuҞ99.)׆-kki hf^]|sarV̱65n/cK| c 1n!fT{/(䱱k6EՔLHm}@#1Ƴ+#j_U箜#4bM6eKW8njiPMNX6ϵt7GYAY#rZXtD>f^=qž-ĀՈ}FOkl\s1RN!SFb'X|?m䚘8}{y( &>x\~׮51SWs8_'^+}qK1e ݱ(S 9f|Ma9pB=/'e8 `4%I|]=ީZǝYG~}t%yEp7EVtS׼Ze 2cp}=>srE ~ıQU1mq>;Է{W?a\cؾzf`-bt.kU`1Ûy۸mO L4r,-j8Ɖv?ms87K?5V:7qS542\3s3\]fkau~*FfrVuM]+޾*x6:'FJٛSIbc2#]5*]]6O.Ts—vS}25;p,Ovizd)H^q¦uеޯ Pmu8'i 8?_Ӌ]9tI]zj G/Zs+G/' z&~rL?'}\sa7ŸlȧK۱qaTlyCb_(%bq^}A.QEPg*+\ svO9i}gIܙFҪdXd !_I +ķk;/l/U2/=H+ddWdW֕+g?¶ņk/FIJf1bc3r^{r%d' _qQG#lxNצMu1^0 \s0tRy,6>=9NlwIW?vŏ]k7G.p g7E3z Z:,Oi֡%k6L8R&ׯprsX-!Lu?Ngr!/ױ|ɹ  uháXzh`+n}cr>snNe=֭ZM>ɬe^Wk4i=k\:UH34Ϭ;j|HD\1XlqPȹ?ʨMvfUV吖"6Z ;ur^{no,'X;s|#u}[<݋Ool`OݱĦ9 sxmm{VZԛ`/W6S׊j5Ik]zW=mZs{3Ml-_I 7h\Kp`4?]眚xr]Hڸ1km?!@5C|mΧ C H_﹑kS?z4$gƤ1SƘs?YQqerP>z[ޮIf,vӧ9yQ:+?CbX3ecAqcZ} S܍XI% uKu䃓54r(!8|_ؼwsO"PlimBq-۟_Z7үdʞ>:u:+Ʀ+*iilCGp~n< ¡1˦E}}ZӧM7'Qxw\ QFe CuG`1ݠgaC=tJG_"s)iڐh-s+mkaS(ɞ-l~y?dmCUg |R.ż] sMhڣScW:<K]J+ 6ƍ<@[87m_aNN6(Ùr6>Qt#Ϗa\%#ĥMtMa&\Uh?4ҷۡ=X0ݽ]l3>śkKϪRieA;̏jbH,̉kׯ4ms*.)~MlrL/O +=yRKu7kv欉ctc/ʯn}^ >'*eʝ=ߐsݏ'-I!A ^g-)|dW1v7 !rM^<߈Ðrޙ>C wp$58eilo ր`9X~p+r!'c<{,<5RSb/__ a lc\u^˗* ZKC\5E^`Y.2B9Bn#t# 'A]NͷMQ0pwڐj1{o}+i qnyİǯ=Bϵ0Ǽ~ :JCpJkgyZ xˏ&ds7?sq߉cs'~N@\GoG=-$m7?Fh;5`:l E,\S~lڈ[_8:0JD ǏSytpjXV4YX.#kOy0ubi =ԕ+NF-=RlۗDB7?z  W#W'9RgqWnzvw)o籽iۈ%ؔ l>vn9>Fv':믞X;}yx@l\t @;W}_JfMtS78֪fk&c=8֟ޱy~~'6> יV][/ޱ8.hR~}o/pD W0h8T~%KN%^Cx}(]ߕg&җ櫖EsQ%Hn҅\K= &4.j`4n}9/̕KiՓ>6V!h\m"$#G&L )4q/۟D2erTx4$߼cIy P+9]q⧆XaOh{~r&#~@-"{;Naqƈ67lus\9ק(셹k׎suVk=$ڟ{X Z=VZo k&= җȫXWe[=N=&kƞ5n مϚ8kOXSc`Rb*d1?ZІ&񒳹Z<s#/>1U‘u sX8([kf?Ln :~۵t-fZ4?a S1N{μ[?c}Ovu9~瑍fQ:,X+ţyjmuC}7b?{$q;A "x~OO ,jIG<"Kʊ gsf-N|>_ \m>;tȯ㜛9%\ /d `%:R,XW  ¯UXa955ȋ L!0.pHc1\4af`Jr¨Gm?W+8ML-2() ˵8n5]aAs>Ab%ti|Q⋗ɝ9egPͬg1ΈUٿwNt>p %sEMƈc_`.:5+*k^[S~VtV qBugM|,䖒͂EK !g:XL"k"@EoPxr˖e)Jsz*TqW|ZF?.qcKMnZ7=am<]02T=\bzEё+S>2#O.)}`{iL ڂWͨ8z-9#W_9?uO#(#'πqw'k?ma>KcG]a VIZqT^r{!0ʇFlsvDN3~=4Ec&79|㥭]E} 7H/M dWoyIzK/҃&4:pY,kdwc}=~.X]= ~/ Lƥ9{:5-h @'yڜч81O@xmVF6Ze GrU`FSwՠ~M_㊀p| 3&U7k1C N_;u>Jߊf뗉uoy1nlaMkL,wy_s"7hC@SXrYh Ssl{/0};[ܰg)pdwԚzEg >үe|0'" ݘ?y+`F>5 .9@:4%F~!#8)zftW] ~5 [H5f˺\XB|OB3 '̉/eTί>rV.-zU {󷅙'.}jMS\E4Ou=&wI~Ơnu\j] GZ ͥg\BeGXۈ?TC'#wz6ϣ?w^'N| Scd$}pC(L?9#7?x#'lli.~}­D\n-KȜԋ_c!Ò%ayܜg e5A y+08hVOmˊP; ])@.cȻCrN`xō *:,λ8G({)j#>s-C'SDΥy1BM\ q.'t@nbcv-.?/q5Oy-h .}^V\BV +RM߉-5Ckt&:?2r/]y=$Z p Mdr+Q ^8 ?c?y#OSlٯuzWmyCՐz^\\mӚ/RSW۽Gc<7#Y`.(yq AͰÅ8=f ,y36L iGMׇNޕ G]J\[ʣZ;*9hwPٿɑ+x[xoOij&=jXgGJ̡uw|33.}GFeo.j:7izޱE?|M^_KPvb[ǂ%oHG=盜Cw<9cS47ׄN]vxdkLh);[ǴetQfs#FFդ_倚>{$^{.MyӿRocwrophC>bE ء_CF8cɒu1s/K7Y6He\J\pIo}zJ72]ˤJ߸VDXq| '3~dr򊁾h܃:~mz]1FC]I!>/sLVcv[™W'J-!fWzZ#P]5zmQG k Xd&՘Ia_E| f 2$~![?9sk0oM>x : ixp~>3b~) ~)rY= aO+qqmw҂b`6ؓ%jMs]魽"F€Z9Ȼ m&J$I^}wL.I!(BRdwf+*fnݻD ƺ\=+&\|w}cŽ1}NQ>jPRGN^[Ts]5[e; eȜ8n+*`=om9W-^y^{;jПWZρuHw1cgoL`,yl ZxIYW @/0]sѐ(x .eϊdMsC.7Lyd wOχt,/OPIKL•ޓp>{":ć!թq)u:SyQ%?J`B`8oKû%}}dSoELkW[X[_:``7-6~m. D\f-, \l/ +Wm?#_\mB˝s`9{将:SY ds ָEwS؇;cLk&\7SJzC{z+_b{ uD#K9\|'?+;Ω~6٧FG_!3&sߜ¹i4?TJr.\(rL|qOJ8~nZzk;v992>ƏǏSH3P6_cF60vxP،>1ΙPZuAm/ݴӵM+4?]%)yNL::],_Gl >σ˶5Uk {= ]^x k10x^0NԝlBe w=fI.<7 fGG=\qVrj( &~{<|1N`Y޲acǘcYb\^२lI Z^!95'cZl~{Uzɸ1c.MN7I9RC`;ŶH?Q.u1"m,rd|=Ɯ -g:Pf@C˫ȏJuL.$v55旚㗜.R؟5~kG/5pN\&Db0g!&.kx|!(ߨE ~j~M]C$ѭx 5a3Y|g[6'gvWlN.OnIekNҵBdQs#uA`Ao6 Q_21Šq*RFeRf+ޫqD|&?o 60_D6g=mocj'' J!OE LEQpز|?e SL}0s"q|W-q Z]~{{ >|GIn]؄E6>Ƕӱ{d\1HГkԹ#O#2e3BSKDoc< ;f kzK4 8rڹJ|az?[/˜ly/ :?Գm7,^} ȫU'%FaP/da9g pWނ=?.;Mlj>zN'Ȑ8´ߕ8=M_\!X{fG fj+?fTڌ~=_XƬ;vڐkg~ė q< n4)ӜVr8GM\O,h߲A^[W`\66]~0Y'sS}5da%G;?;m>-\_t<Q`qu]$#ⲣ.`o:\ 4gjz!EJOL[| п~﯇*WoʁR/9-f.|6.MHWz\`Ywb֑%tM we}.㉙k>)<_8a~E]M0@ʘ1JFBTqO?`M>{"|0k?tc]7r?Zj3e" eikጩAV$3w !%>Z9p6];},Zo+΁9ILح] m6Y:;A:,q0q3\· 6;YW@'5U~]cy7Q|Ӷ3F^-cs˅Y5. ~ u{K8bg$OxW&!OKz"b}{vڻ"GM8.}/p' 9n6n6l 0ȃe ڷk`{p@]C1\BbXe'f{R~W$Y`lcP/KޡlK\i8Ako@^ӏ UK1H-2ѭJCΈby-63h91T Ɖև9\ww)k[`r@CQ #?0>.q.o4xSm/~.{11&n_v[MF~r]I0NnC<\._jn9 : E_+}Bko]\*Խk<e^dž!q&;ǃ;Og0_1~8'JϷ ,71wAG? q&vgᔯ1HmVc` an3o)r?9?(Z8_y(u?Bƻl<~`]O 3}{b|(KY|c6NX/L5s=+*4\kbBcwɵuYɊ\q5nWefA9av(YK030w/2e,7WG+jn?eOܝud~L]Ζxa&>2LVg?c=rDƇ- n^#LUٿM{ .Cc4J|. 9c~D^6g\C7[r5Q=л]b>1飛O8\^{W)Ng A \wgj*08ax[n{-gKYqloyj{,q6_2q~ha'YhߘZ< ]0\&I\>qհ9砷}l* ~&y|sda^Ux \SGykعFx̌qs=PHN6|ܼl2/aa.jّ'?Y;V6yH$Q?>ſM{,zoF҇m{I6ckR.̫= voaYB*Kc;kb,zfHYR͈W lݧ6M,R3u;8e~Բie8eFy/uEe=42c @?iw y;G~:أ ed^b2R4)ga39>FwJΔf>I^m{UKos.;1y0(&5Cn&TKM9ABy_r2$܍*Kn BzM|`q=p*vt:VqvX4dE나M c2ڞ;aq6E W!?YSu*e=,gɑ< 2D^_djoc;[ &IゑQՈDŊ>-\h+mSsMM=0qbpnpa%چ*q&[X*CNOXR>Jyca6Ywbgy61^2,V~*my_ϡ\=W%bl7&ظdI-a>.Գ}歵v.p=h\9(kP*u &.׈"K= ይ}qdG 9yu"/gT߉&fbOޗt'O59>s"?誽dx rbk/X`BN>sm Gp,2 0𑙫UF Edex#"e){utcOٯ\D~O%ǣ$ԨFM> lB9B8ʏ,O%!z%ϼ9Jrx7fnbXr1/jeOXfbM0*鹿k0fY\mLrpVv3jO\i HYV_9dMϼf H MEp4DdF?y?k4?/%O&c/|rxbg2HG4[/&8ކe\XU&i/9]0 g|_x\Go^^M63R~t ~O2qXl1CN >}pYJݜsuKI4-OCd+c偋ZtDk>4;<9̚M[Nq/Ư>T`kg9`4xr,=l7rtl8DRuG ?1͓;v{;Mroԟ5GƄbL'=؉MY͙8WPs!11C8c CqN| +mڝSw31 Mբ}y{AYٿ˧ ##b{OqP/nDc|0pIG1q jU+}>gn|nF~`ZଝΚ io6~޸Yi|e$@ۿ6 IDAT ѧpTY_]Ui|{'2Nps{$NOƧ9~W~[;=K5yrݍ ;{tkO/ͥ^&&Ėqob>w/4V߸C_J,O<)W͕hmcBoM /MqW}PB+mx :q]țWc0vQw K 5+8]D?kkǖW q܉Iq^_)V߄'_cn%Ym1FȽGW,N:8~3bsuuĽ_GmD PU%[QrYM,E?8x"$܀}-m/+nKG<ob&#78}l"Zqu'./O=qvRX3LWxfݰ80}ꢿf+"%c1eMh W|5ʫn3cKֆ;_XvQb1gc~лTTԎFv=ª.xv\D38K7 s?ҽ_HV&v3\{EN,q%6tGYbζǶ}e?`t1>%;?I7>jvn+)>a 5TkW] V{^$G ?~{xIw\Y L 5W'v*qu_h8Cj/']p:A[c6\N^>?"ڽ7]MWf6Syo&Q5xޡȗ h& NS~N;9{e# 6\)?@0G[G^7?;wWZp־Iy0YzΘ6?`ռ|b:ǒ\KESe_vScTk9/Ǒ` =8 Ko-^H@'f͉SC㥣ۺï&;zYD8 16vSԒ<~t;7 Wa 9w_7Oŕ_h`NGjx/:m=Kd n}}P:Ǭq\]xz\E06XF;BW^EtE$  B9evId'6zt9ye~,*Z1&ٶZO|-}$p9C3:`Na@98ObرImj *=-Vę{'d-_qZb8Wy |sMc'GQ岨(?}f_.>03O&sQمv|ɸx$)h+ɖgMxW>gԾ<{s~WHUz~%*W{>|d{_ثSa( })UF -uT]❜e>0a+\~J%V3fDž͹@<v7S?ـhp㏻swb s]1S6DgƉPD/T#3m(gaVϾmn8:?&.?.Syxe看?nM~)=N4\~sb>!J,]lc3mҎuC:GLCl6y"OAkj%`n?>x%E#W1ڪ5q2cm+QvRn{S|+^k=aX$W#uռ(4J@W^~H~ Duޫ7mj[spkJ9ky3eqN ȱ_/ޘO#]7<S|׹u] #7⪺w5(?~cի+NS|p,isH7'Z'J`/e7v?y)//y}; 6wqbޭ*oigIكϖN؝K&/r>Տ_)oWlČ0mմ}{A~P`Tޫ/@jt5f1O臛XF_\Gt.5Il76M?IL;es~$Z"N)"^h`#(/Tc;gyp3dG2}}c.@:_#_`L8Xw֯+bvEyp5G_Y:+ah+gB%ͅmD&V㻖|6ٲZKkm1Z,1 P72W5+PbcO'nM9|M"OԜŖ*+(oKJs 洐ޯVJ56fl:Hf`o$HcՑ#xAq_~f_hO #N(sԊ0w2eṳM">~DGe1/nlU䶓.yoc#l}rֵN9>MYS>:YM%Å] noOh|9q` Ogc;)3Js]n<2\h"g2Exn&!unb{)sIw^|v$?u?b6ơ=ٸ H8g~6yvBSн->oX$6=bqMwه0L%.| >\z<g.U2po9\`9/|4:Eހŷ]5>5ǍۚW,_GDҾ-iR_|mSaoԗ5|U^`s3_v?*~'UoSwc 9MU>s(S7ڪcܛaB#Tp? YqP{w)&1)8V.16e;}`$/-< zg!!Ntz=ea}b4~^ ԓkٚ":c[P^NIK q3/?5KLWN =E3V.v^kblK[|֎ CtH:eIE\\C2jfvv_Mv@al\ayvjXTөYlWϕȯeQ#i* 'jîtDX*>Vz>׏29LG׿?5TJmNYy(LfjM @ miaR"^hqj bny%\Bۢ1U| G2^ 6[vG'g G-@^1N Cg\O8NsOaVe$s?K_ gGY+}x.,:WYFcL̴ dpoJ^bx83:v8NoՅ do#:_.1ENzVMsgw #;t߶bCuEh2l5]e*vHgP{;T3G@W VKŜW?էIOk{n{pl_w*y/w ޱD6g=JAm41ȏϋ/ bRb^5sNQUI"@u6Z۩(ul"+Z5DmQoYIz*ضwϟި󌍯-,wp-Y;H_WBB`hdJ0xd٪#j1Nͳ2hu'Exm捷&~QdlWIA}tIbbK/ٮZ?dl_kts'j8 $Cvo+W]JzO,4*}8u;S>[ִ::r`2Ok),p6UҼ9orG'qAT+rԨչmmeY>oXr(7Ҙk"]OX- S]%Z(tgi|rw 7*kL/ߺG#6wda+~\9,^y1JMa4ڻ˝}IQzr=m#B lX@;5tXofv7"x.$[)bq47+z-hG؄<^JlG+pѶ#=1|ߌnFMΠ :ɗ:s4sbO&=#'t\fȪb{K;>ADc~<(]/㝱)O,QJS6;!WIX{c9zm1 5PKh.U6w[lAȊ: 4/-D\\/,˂jb+Hyq#0KCqpG5^ڲ ,}e\Oc-'z"meHYAvDMp0" '&?vɴ[ۿ}( K 9Ukr`5V>7yqdj\ca Z4xt*QHn: Q ]Je37:,N:zN4u=ڈMl'o"m;L=3w6,bw̃۾)0POƾz^&GOBҘq/{9}%6GmrfHg'8-n` _D$-9_dCόjb V۲UM`u Ny|+.^NOҡ>iO%ƞ꺣[З]+뾌XT W2\Xfo1تieAH_ɷ#{M+RL"KшyqM8#eQbgJFA+@Nj#n&#*i{A%/~ƄYOj]m1?*VcmYӾTΪ|ѿ~d?CԹӾP[BX#*x%ğq+l:Q}gxŵmRYZKQyJOZ'㞁쏃Y;698Ay2t_+[MAIُ*~ ;jB(38n`1yru |m7Nܧ_ueˎK;&$YaOqEv _HO5oJ~ ~6g6~KV_i0zhRgr6j7l/QfQ|v/jTØZxȒ>+~ `BjA a_*hI[r+ G}|"a9;] Fd)^wʣg,6s8#'na+ػ}DSu[zP|.g?͇ß<Z8L#)A̝V. I1gÔǵ+5j,lbumy+hk5o08ހM*i_9mӨΝ6zV@ѱM<쓿)h[m6o^stAw˾1kntk*II; '<|jlkA>/ozt:Ox)V?B4ǥ{/-s~g? Kœy|pا /l$#:}l9mv/馿]2݌qt| !v'ضS`8O"~'/6:gB66wyw r`)uXoqؖBh&BXܛȸ *p1?|oס8V:j>. OIi M^V-XG}>@n5gu% 2Z&>\qu?.KN@JMwtCMH9h[)hnŴ7. غd6fr!^X{M]SLZدw-=gS+[:VՑ;mΌD: rNR_!(C}GJt8c\Xr8خ4lVZk0s碩=RLiwc9SUyD N_qbvSgwŒ>_Z|/W`H-xsJLTtS8C:⚺s -񜥮U=3`#KG?lkRC4S ctگZtC۲J^<0@\k9#7թUIW2.7{͛>Ƴ}3^k~=י`%1\\]t :o%?\h?(|=gs tl6Тek.||E1l;~ͣ,%+mY{4LUzkWJJ.lcyZOߴ|Y3܅7~o*r+_5 f9mџ3Wڈ-و%L+<0:$Ng]e@4 q쟾L}l,;5F~e]l-v ӓx#9opvel_d b[ x'_MS鐣c7=M־f!N K yW;q ن>f,5\z6zl*E%sp\olZ_Kb(uۘˌl{W:ϱҗN2rxչ?n}쐥/81#c͏ujǧi?"#;N"zuZ$d?@S7q]Dz0 vn@TzK@xW2@ԍ"('yM(!l'9~J=ųI Fbg%dx:jO~W_:E^'V[ٚkNOām jb%s>z:r o՛xjn-Bw{4־~/,y2&RBk{U?ws㊅[dVTN37yt Nv~ i|ĿXDOnbIr{u:Oא1u\G<&P`찅,M[63Pڤ7[ԤebX&y0^!j_O|=r=>r,ٔ ?ףG'f 萝•/ǰ 3G3gǾQ<%y K;L >N|G$ȭ^ ~aKEV7^))ԭu{{(:g铋g4&o٭,[l WL_n{_rE>Ačr}W?n=>lW\dx÷lÙ჊y8lP{J8YOw{M=إ%(ȨW]%>:. 2_w@#&9)@AsA/ݸ![]5._:m%я?pW6D\Ukn29ڮClۯU:t`^bU8#NhtwS^N9[a5.U P[-Ec_QD )9 *,Ә1MPÉC"35V犫I8ќpzR_Խ&;x:nX4Vҁb d냇p郢aB@Sp@Q_9[ȩ/tle襧i~Oe!H|S Ϥ3C_>WuA}~t6͊@=/*@]}t.mkq ~1c;$ ?{1;kd]`f5`ߴ]TNpN'޴#ɿgZڒ+u%z[bY}9:7!rib~민|EV i19][9ˉ֓,s'HK-{OVycKz /u#>*,Wͫ/o՟zj߿̴^\@\9X!WY^טz\ s:bCN+G?\{'T⥇N?UUm!]؊pY(nN^s yI$5Htz- z"xHjS\Q2<{>[[9?uXit F>sαv#Զ38oih\T3w]Jdu1cwV#ۘn =L-}h'e&WMϸp7׽ڻ#+*yztb% #xs6h>'.׮c3p!Xđ}b ;_UE¯βrL7NZy7 Q0 QŲL`r_-.>XU6_ٛk)fzEWRRg5ߪ_]E#g-^89p#hP>?c8}oUc?ã~>PEsB(T TczCNbA wH+R P1cbWCDAMB5,(JMj} ɔ0vM&7Iuj|U#F=JMl!}8W˷ӱUĎ;3|-ӖEN"ypB&WfO<#R=/ZFA&"(&d <zMq2o.]Ʒ ac$0l9s`kَsT]qlyvh4h_΀@\e:mJW4ʹOv+ZZKх#Z*$_"LNmE%mU7{KQvhu5Ú6a~cENa6džkPk5;+h\W4X?O|+EoFWWFw԰:S庣 㪑_'$jl@s\% n ˀ3˷V*pf׃MaE4#o-MWg?_1x)tl/B˼([z\Q篺 ѩȉH S\ Wߌ7|o8uήk7)uS@0s<:VwU56ѵ;Nd8)wl0 0dYhj2g.fzܜAT~OVѝE^|D:'"O\Y <1Xj%O2kY8 ي±$Ԧ@FMXPBM`zŶ4B1TtEFJf?аnLo|JN<iew9aJ@vt\ & Q첡 OES6l招'?0{#;uIkOzZ?Mx{Ӷ>0\E>1u[aU̼Wcء="/LJlm| JlLe[ԓ0q5+d;ޅ0Qra,#[5g$?x ?B}6=@ |''77-qۋۊ(JՈ;Y{|A_q`斎s^4&sr{ِGV}q8Oy샡?q"K0m_+{H0{*yFVèH+#~;'iِj/1rFl]LU 6%o_p+=/D|g\DZK<\*^¼e J\+S iկ'DV'[߿ Vz:,/Ձ ],A ƁuQQ4[e@~yxjxή'f}yk}_T\rEۢ*ߪu S]~/*Vz7_ЌY0@rڲvRqg|-? )b_7*~ʯ/ }g/6?*v>DFrIJV}e' ́rcIKL?[pB/͋| K{$nN^bg>ՄՐg$īko^kgZ=4М[6{.ڛ0 zl`+|tGB R8k`dP^Mn{nLߍ)jT =5*]/\Ggq8Vkk+yNrHGLJ:ἚYj,Ms~ǐ97P(XOD_2"w'tվӽ㔮b NllR )C9~ZXGcwGjɓLSz:]؂=S,ڡw-+Ulڀ{Nc͓?n{6gPU5Xe:պO>I/bF+Sx>a}| [9Jf\5W&SXӶ&<"ǞbVg6Ņ=xGMIED7t?2ygY Ad>H Qw_xc"R |܇1}ۘ ~ O8K2@Kyl=#ӵt:|.AfיC#Xe~,npO2_7>ϯ YgpiV8uX?p IwaVDZL dQ-=ix &J >ϤoװIqye.*]lt,s__FT'WgRV||ȋ;&Գ%qR#K(K9C̞d.т/%R*^)s[Z +^1y+އovDo4OI8/~˧)O |%:cE >3P1EWG@W%Q{9NN&ϛv5Z,+g恧Ij_\gG qJܵQ ?kcO_9 Tc6RqO ֫88nh][c^1[m&Ʃu[5aZGi”9Z?gO Lv̸霟Bӏm\1O"GTLJb.t+ƀKeȁ&wSg?Sf9? p~Eekq+-r)blj`!v;V<Ǹ:OR_^xO sP3gz=Qk~br't#-xBC;h;fۗnkD)}$|w}D|!4 ~#"c* y$vx%?G$, ɗ8~ʲ)$nv=-߃Ϝd=0K_h?37'hpxjإϫJȐ/!c惸P C|c8L*5Hy+dS_eh=?O6 Jn:~+\(>s} ;םF͘k̋?'c~lh*tՀYd_1e0 Zm+F=щ!_VV9 4K:; 07zxfEE}p;l D/9TDr✶FOׂβ8=5{P-|l"әl^RWL+, N|wMNw'&d0V=5gt`/7MD@ i?`[*TyŜa?kE3>0JB`\v{-0-!Lż5 Z?CM[/቙8rg~rO+ DrܓuG(VgAPhN&|)NN<s#_t>% ivc=qP/5^uBAb'gAIwyLj\?H9@ K<<+g}GEm. gCzO*WMyO%4'^z0BXSG|s"Bx~GN<6~oyx0P?|rbx/Z:1;0E# ~867x<&.l|)ȓ@*[R/bc] f0OMԋC,Xh|6C|S|ey9. y`^*sV|_ovx(.W￧/ѓW |Z "E{Tpa^P/ RszB7}\G݄'zή$ C? |7E6F:?G T?|V8"GXY6vJ,9h^f*" FޞH]ecً?D{aEW5;ViNkd `\BSsύs'||!_[PՏ֚yۑ1:׼U#ӕ?ˉ~ mՃ2 %I P(k'X]" # r7Y[ں&U '$l|mN;^K=|!~SNh8ͣeg=2Aϕ2GEQc[D_iy,ima&7:s{n<ӳo}8?Cn]S9*9N,|MZsٜA:c ٛKB?>/w "YQ𐰨i/fImRLFE.]R-Xf%y9<^y2fSEyODľAܸ(?ԯZ3j.g20ލ8_o2ǚ_Ks M6 >BT~kD\F=܇}̡c+b0hs{.q]rS41~\oĩTdce(oqԳ&$6`i-l.a'"ޜR3Z"K XM1$c|rqXg"-^SXX aTch5sg'9 Z7Ws\ F ϓ)6xʆZ$3yՅznާzr/ztiy6.R;>qV8s= UXMQ߸'SۮR+d56z# gM$[hm} #ԐQʭ*UT3fN~o b N[TOՎHot4=/V÷ċϴX|z(2?.is:8rRxPࠆ*e<4}+F9IxO>`/ou?e|Ԙm=E9uE}_QB(7NO%Ľؤ',rԟWݗBMD$$c;xhN4Yz 1NcI v㕏?qr|_d+DMiow)g})3}0HXx 0ަmvI& ǒPS"5N:,i+: F\w*2nc}Ƅ=.,TtWTCCl[aUsI A W5Xg1/0i5ٴ^Y1=ytWW_R/T{^aI'ӏվ|r3}OGk.'T C=铍~,yŘ{ | ;Ā:qa:FEۅwmjp CG?ѬIy?<:7N'F|JHpvN-%9k'E3>o#>J[IEN84ID"78D^FѧTb-`ND>6+w~ G]bल>Ո= ybp:~wΌ:}8?s=ԉ+R#a~i/˯Łnz|\_>x_'K.q2# WZ91Y 9CON?j$_5I_+J's Wpk U۝G=,arϏTOh~ӝ[g+,Z0|9`5|o w&bꢨWj6q`3Ѷ^󸲟ަy]]pJ2ιd9v C^. Ȧmbж 9CHy7j6= w̰@rpO~'/l u$Bg ] `oUN=.ZFyBy_yfxʲbJ R7~ˠ~'.-UuV@]W"*~#u{/B' \JN7@GyzNWzO>~x=CGb&dc Z[Tm| h|Xz(/U  'Xi?PcPϪ ;p|u+t=F\O~uޠI!Ǖ}RC`˯Vcz5inAtܰϏ6~_u72I$f578r./$crb'Kϊ+֠F{9N2+Iբ['_Oiw]Kn&h^#5)ZΫ5Rt}ty@ a=xxb)Y~shix9%2yگr"4(8ySv`>DC#x]2ҎE%R</ko?~ @SSeع*j(c~#RS+埻g-Fu0oS?u)nWv 5M&ȟR$.ֺ=07upM{<]<'R(ѸL?~?OҼ7nkk&V Ǜ.%η ;-dhJu]|G;THtwkp7 mU'ɤ#7Ӊ:Ŋqo;>_AT"t4yKOGY#6 ̾')"#ք.̨pm&΄I눌RGV [g$ܤ']#DB`&a3|4h5.G `RJ. VZ%]d΅t odY}rq{,Ow+^,:{tZxou}Y߫<iQNՕﻡ!et'n@@e0.W:h#ll9^N}F^l=sXNY+>X I0z:,ZxxE,(m!X 3Zfy1^ Y,Q#M7PFˊiVPS6u^+멌ķľza kJ}/LYĤܮ˩w>84.տGcW:4ʫ?.ω!5 scvfعxϝ¤7OjQ5u"u'8js+KK84'ax.n=v\$8YϗRVIc⹟c3ik47Xl_^4:SX4A 6]EuOWzZ2z@fұ%Ո,) o .„]mHǔ9OwF@CN@@kqR J e㚲hC SJ_HN4#@<4䛟dWyhT:+2z  ]z @;aOMʳ:t'o#m㻝:Ɯo('oH|I,Z:/+s(g;yBvMW5'ß N5S\Bz,ZJ'kAY|Cy|vM!U[5Zy֍] %ԧ);*oijլ|hżt(Y(V&ɰ{@7iʭ\^`:Eb\}eK5ق,K}Y-3S@d+O*_ Ŧ3nұtۏ] ҁ>D-ZΤVsAx6ÉqCBʧmAnoW-|o x2).[`qj8Bs^Un ɮ~mNYi\)OwyrS*Lb2 ,ezUepw}SPֹ;|@H.W(sY Wm31 7eg(.םJ|WP#?r, ,FJ$ g =a2H{#=?N谈4$V6Yg:6C #r˻@5i:f"Aޑb#+Ub&҄$0[@[pu!/!&ѺELa=rC'>' 5ʣ۽/!lؙ"ԇUV'E}m`*OT֨wTǝvyWhj\E*$BvS1KP̹ agq/yY[ `aN4R84} $] p)_C,qb~'t+_ 4I\M/SKΧ7ty^CЎF%|~FVb`+^15W,y͍ɺA2G/}f+a;sGybMyDd=0^~dM m V[/-g;AYx˒gb=G+RZ w.`:!PN+  }vxklA<)K?8XTLyCxE:_pHqIޱE|<<nc)KSXqrq_5|A4׵M.ͣUH{K >rkz=?nٯ+Nk/~y4f|ڇ ų@sڦuE\? o}o@9f~U·nKв>O*H'0]6E6 g˄wH7L//2wMop`/Su,s쮬|m-{ sOZ9fŒऻQM w.yC;hyC?K24 )o3qR ],{׸VwRl"(l31[g/zOR*u;o2's:R 2wFMC3d/jDL4}K׌z"D(7EСC %NjxC0uזP=Yzny2נA[2U`fV1O,~ҤyfGN}iK:c}@g kIK:(y0e:3;,QY4.pR_˹P~,+ߛMLYqi9VI c{hG@4CyFڥ2ffuCx]DX^Lipeɽ)hqx/o}[C_"$NI X0K()˲4y]|;^v[_oܥTy~=^ay"Y}l6P7+!0ٲ`soyօU:gW~Z?HG=۝&d+I7nJD-[TpQN>/SIu˗Y}ftyE>%66Ψ@8AQ녌b*Oo}z\wM@~{Oјhl?@3p%}hnܒijhi;Z ʭ8w%Z/.yb h?5; IDATB>:{@њh%CBYW@jξ}྄ƚH)04bmڼEٴ8 )Gt˗:pp^jA ^0 . p-NJ(hȏ]Lx.+/X?fXu-sCY( (ODRHգ6"3z`Q/@YdJXQjj,1,Nɀ)S4', ɗ^t8'-\3GP J X/DJY֎G9^ ڛ65sVs06i0SVɗ)r*%=!ZL&v4\J̧( r hխ0 CMq:.ݸ%R՗:/tZҋ6 y(ƲC*:1 ].'byxX^2~R`[xmpq[|wnIz) nmyaAxT8 -PRhU}%oOR:a44_}A Ǐp 2'*Y2%Xcǯ~K,aO^9x,I{w.|9x2rkouV8M !Cg/9s+uGY5.3ՓiG΁>Fཐa݃)M^(gŲ&Ad{Eҿ,LCGP22rSG^%׫3%˻(S 2R9thd<` Ŏ#Pu.D.u$ǜ*jɥ_v۟F7u0p7~_YVuip[ xv= ]ǫ~y;~yS=tBc7&Ot<Ҟ+!{'|hs::*҄lVڥQ!k2tnQnaxt>{8LR?QCm=eT+G}L+6vN:20Fh:-nX< ҉@'Ce%GWnRNeˆQKaF"'wWO%`jc:73P ◼0&S~~ Hg[)y 5Gg0'[i3iUV|Lp'tso>^MbwR>KFV?MkRQ6 nK^h&_ph-Qg5L]Y cFd\7eT.5PAp A]eҝ~wDrmp9[:_BjZtݏ^R"^g˝Q\[X2KIKSiL%U:4/|n[ d/ q±8E's)‘Ş W,xv!b (M\rOwt $Iox[9ѱ欗Fx~I)iU9AA9-A30"8) 5â`q7PJ U ԅREpXpP _qE}z?:wx8 _f]bO .`W^B3S`HfNN⻜JzcE1!( ]HͼG2UnE7}I@p'|wB9,h')4S Qz!5thÊʭ~>}t%~UH`[O[!Ti~',58es I÷|fqC:RpݙWuӼ+_!.`BivKgM曙/Q{Xv U#=-|[!WN^{Q7JbȒ6Ohסm:)PpK @9UL>"uSOk[&"@yY(z.>5cF.'3md=d~xl Ήb*$]I\Iy$c]լXciw9 M~b^@0|"v}@T&&Q:k",,<,eAgG:7.g'$,P^ssŞ91wg\5 GqQh ^_U<̐v:շ|4bJIDuȔ@< zB@Xm@Cys4efp?:F-yL{kF~Q8: Д0c/i%Hqԯ%;> V?ex' ~b`(S/o7:xrZYA/QbFQǤamSq3?!| OdSEaމrr9@ǁ5 J?Q)ywruظ. kJ~eM}U*F=B+jOhm<-r{Mⷪ.ăR]0~.t{LImvCL9 >x7:vÕ_{88)\/ŭp0eRsi[) - BP8$Ls߅KcaJP'?[Ӭ[1qva_cN4r<gIg۰Ng J Νf:LD:ך!Ko#c C& KrQ (h1;Q7>dDDt9 KiK():T _A rgAɝUNE^-p<)_hy)K9;K:Q`ͭө]*\pUe0/<øĥ耫 j&xx;eCMrS11FpH8sNK Kc(D -w4Ip}ډufˆW~i7>d?&?Fk0![oJ\s:>4$xRe'}/3 ?,~F x/Fmmy-(uX$ϖ@uT=ȈѾIecSnS`+o7O3[}zBf@,E4||J| -H~2Q[F^Jerx0sH.2đ1V8 @-( QNW yA8u|t8K.䷯զKT]ǰ\7# |k 79؀TaJ}vg1o;x:@sO#x| Z j 5o UpR%=gy@w/&x=^!* ګs[\pp6O*^:}DQV{B0tV&5`Msb Svy7_KBлKEO砣1|}|z9 k2m,M6K:JyJ tJ?(}^'K<EuprwuqgygʞGϩsI |Jp'^$~j_dõ=1=7)of'^ms-k'叢ҡ>c:_dAxiK S;3549粔 G1Di:IyVP: $'.r2'RKߕY(8-VR,젠֚̆qev_@J.#MQ>ܕQfvȨ'K(>L=z\Ns=jgZ6$LsIGehxu\+Ͼ/`KKC<\ kf`<"ݸY&nb1vQ$4:W:TB R*&eAΉ+~u/Y`Űp\i/H{@4W<}ΩgB%)hu^9T`xG€IE~tzڅY7.Kp?5_>k+Ot ,IqZ:5 ̢ܻ'ͱ^:OgV|ŷԷw.hz%\$8<^u>EK`LZט әhaA{j!0|N%Lo(~҇fp,2WxQN$ ёQbzrT9X22tn0ȑNFs#pL^Z'Pwjq_+<?F #|c ѷȋ6F`)`%H:HH?YV-Jh+ɛV_Zz#!~U.K,~ o-[P)ʯ^m NE.S`ԏ^N-e/Q$i)>Lx%6IqJd&?$BCŏ;wIy !4!;9Y6rgv5KA"W(#3(`|.\ZmI{ZHR(hzjgJ#vzE&3q_QQ$(8y}5ǀt[Tm>ruTrǬSt)UAkTY Swm*sOۇ귕Lh\/\gqƴ^w5M j1I"jĩ^Լ~:vg.I]i1:/M6D~LJ:qqo򏠊)7ecKNשׂ5^ &Xڭez_V]@_оȞ0 h&ӭCOG|[] Jh蔫2\0!bM]gTW[MujW)%-P[RдNTo\*vW.7c¾Ś2yD:oJ-\H(I$gKd \d#qɍX(,/D WYIGi XN"gџ==+>'ԫR"]-5Gl.KʏDZLY>Yj`},sW#(!0pqL~ sxR;wnr)%,AibN\#8tQ_'ӣKu^(<sOቸa_EB9<S #>wZ wr"hz϶^Xooߗ4Wƽ{|Z$|yX;F-zJ|TZ}*Ge@йəCIo p+wλ[ة ;.m+3=z8:{=i4| ?B*:J/Pձw4&7# x&(bkqQRޙ7nzcu̧e;_km(?&*?Bx;'eLL!,R` ˍ%C/=Qj0%ABvd:4&bys,n7f/`䳋G܌Sr tH9D$p?BǺ)K*׹.Ap+q奈 }/#씟rp(8ᲈ MQJ9bBgy߅Oժ_+9:(7 )/,<_]*K/KHfekij)h?jws&Z{ѥV½ X,R{FhX( YTP|)،~cvgϙFZXh8V#'Q?D|e)& HRe/F:>E-P̺7ea3 ,lT8X~I;&zǪ}=&[D#Xhx- cQF/0`A [Ka9'7.QK{dWAB99N9!Bm{T) w HO`Y5;? ,3iB3UB"D:,0(7/wQɊ0 @ ޭmǭMOoڄ5 @%hAG#Wp{ҺӮ{dmh㨎%mZT45﹂TyJ^ze($Kt4b[DFA?Mz3*CU, FJp`N |3{LP #D[NeOC> 5uJP򱎠y..WKyQP s\+u:r" 8Pדw?UZ֭q[HK@='Vt;Fh˒\K ( Qdnܷ?GQ sn(#a*KgyiG"FL嬃gtF޽.e4(ILd}范Q,~Pi珁My8Bn r kԇN0+G'%JGmxuL>ds(ξ5`jm8u]URrqQ~LG{Kx % IDAT˝ ]_T(@׿~%\^$%F^?iה1 y/tSo N/q+>G{Q32kزq ޢ^aWq5}ix3`%Q"T,4. ]&J9:uqfn AT3.>x4/j{Zƹ.[":#<&w\i+49"5if.#8Pp BG] PM |ۘJgʽK|̩BWIg2$ qrckwP$-;ϼ[EM#(-< N o۷b .txne*SGNZ0bM#<(i 95 eYp1HM/H"8H?s\)? 'pV ٘L߿啌^enm կsfГFY "edR17ob!жm5@Y%}T䇐9 /- Lpn˔ ~(l6`M߅׍]6־}~)L hM' YocAps)&Oɧ@0<ŮwLs| <=XqJ)ig8a] t‡t";f+H-(w) 0fMP\RNO<8!N*Ӏ}3,'Bԙx.22d4O7v.!j10e1SdEŽدYQBL BVTX1߯IB5mۭ  ֗x' tdՏ k5a'idS;\޽SIL4n]^o=>k"o!Ry, Xj<~CۿSZy=gާ7Va5g Lyx]Ni:,{}L Q 2l.*1q.Un*ŵ(JuRqQ8aga)Ǭ yiJ0 NO'ȼmKU)OHd;J,0fpt'1i:&<_uu>d-~Qy~Sv0 @hm+NIǔ!NLY _|_{|a+5iQ N#StRX.ZB,)+Wc5ۇ|+a斻MʪLK&<6NnX .'25 ,҂65/i`Uw ~sG#vL< -zt)uY3>BSNL㥃GQ讅 .yymTS>Q*Po3N%:*?J)Y|$+֔V(6S}kҐsĹ63bA |NweX-[[y?E"4Į} B.T'It76IUF>\wtOrOM&TӮG!!hh )saBةh!v ~;Wk&[~ۂedi!ϭ2>}]-:Bx*u!΂It` vYDu-&d;3Bis b2*'sRlϦ-N}UցaBU_.G&Sx *4s]>"*#dBA#D`=Z$`(M_Fsŏw9x) &zG?zt5iV]U^fx!BZ𚀖@wg(G9NF">;Q6"_Oj# F􄣼J5G,M?aH9_ip4~SQ'} vN)"uHy SX1%I U<,:n.8:#cJ˫Hɬ!S>GCZ氣] u'V'Ќ8ϔu&AL{=/\ 6iruSB"gZK$xuc]K{u9qll] ,X;}y@3~%9##Ԓ1q6j )+o:YdOL3cg;aM{+4X-Z*AeѢ't"mJ[gR%]fcLC+i\P2I?{|#>RXd/KY wOFOna|q/_s.AJpW"!dQ֏*+K 1#]S 'F?!z:cѼSR4=ΛY}/NEZ)uV M@o%_fcu?cotl[<8k_L礯Vq~: G ( %_})q ?ǎ4{^⎔y`Y4!pEbK}CG6IKX?MͪQTaZ3Jx}aq̢CS!mk_^E$;yJ v_4 (S0QYqVǩr(a̛>1SN8 ^=HPnR9嚲:i._|;\7ubCJ}0 ΔäBI*3dCQr_s"-ifIt𥨼J,*CHF(MP༰T=ޫWcɀ!ϽJO|yQ/j]x(aF?J}~U ^ܨa>?e)ZF-+6)Qj_EI MZ7U(N߱ܗQ!y/BZQ A_ri'SLoFɭZ#X*܊Kdhu[S >z#]uʬ3(;FӞb_!DI_0UncxzE)7F>~iw_ 8Oe/ISh+q-#+ix]7~ʋWIK\VΘqp3xu?J?Z>Fɍ=rp72NZ&,t33eySSu a2_F9J>bn)\ލm, 4RԿ xHKԝ6V}9w3/%r;:YJҗZPkqaf3kR-Q^8O=^{(6|ECՙ]d@ KxQy-9Nz:jh?;4:?ΔϒޒM- &PͅaLo*D'%3|j{YR#N"5N]qv:%d?݈6 EO+ ͶHO^OERS8" `wX0PlŪK e96@\1lx>KA^gu/|\^sO 0V >eĺC3:+Y{%N(U>|.x& TLU40L:!l-/%~|W>+ƫO":>z7_9xn|#B/Ec%c)dtOY]C.8+:&:U%4VhrԧxG[r{/};(,T1A,޳pK*[ɬJ HӞ{~dUM+Ndz8UxCJ% ;#%o2.CsuEsEꃈXC6OI0°o굄#l_sǝ<, h\Ӱw dr@U&xheMZXG@eh%m7!\ȶP '%b%UV-wlDqK2x\}>eH7Ev2FZ(C^JE!n\`:iD(kE&.̉2/}.B'sp#$y{hMCG3zhlXk;sbl]YA9lF;*E/WR~ho> 籘"ý){?iPSzU'egq]GԉingF^oͣ8fƴq֦("hsŧhTYʞC'ej!F }1ߢ:ʂY{W/p=4a+ q Ϲ*Xv/wƒn 'gBjN껛2<*Ȃb\3!o^)րrJ[93|!~mJI8kxl2U?Rx t ƍlBዶјXO|J}%uS'ĜLպ*xN&쑻M8*ZⳞ"\^jW|q LX\ai$bo\wuwſTIXÛuMikAtdn?/bJuV]ؗt3\Ӟ.sW| +Zذc }j0 Gh|VJzλ]G#tFsmtt5'?#x]g" #4ef%$85: |i-. $*7Kdib! W۸^ګġ$VgxB'vMX<[22Lg;S:*uNГUe;>Ƌr3)[Sڔ.N^yݍWnLZo4 +z`R)lhEw+,c}nC'h_q13Q3Gr#. '%x:"s/Z0vwO ,>wa|<Ih #f]'(\>CߋA-|pa&j?HgL`fD8 /kӏѽl _=dto`; ?svvz%L9ZD}gq&AZɇmr?ǔc ,K)bW@ _[rwkZRlM7Wfem%@snk9K"˷ojy@/"t?>:yV< 56u6aJ?2Ic):MyVM*UsMjqWO_XO) eQ҉(IQ%JC&-틲DѰ3b E_R*甆U(} bsހ/TN\ y]&}#798^:\ӊOnl ?{/ҨC_}VzW{Hgd/U:[G a|[:mJjF-K˯{\W811ŢQ_yi|҂j:QvvdT֎4ΉwF˅[J':`MyF˧T{Qe2|OGC ˫UԭHѣbad6ay@ Pl#_vC`"C{rqPݨ\@cSU0@x{3\n$變F )j YE:%jw45HzP>irS}xkNۙIbx"'yV_ϟ~ &،)Bw6ϳ u"L—\6bO;<}WV?<( kTej"@JXD3'o>Uxrz*tp9쮲t*_t"V_#) o|$,pY}!}Iǧ>S瀥AO>u/`euIz(k r2]`*!!dlJiS\![uriّ8K*a>#gN^ JikyMza_/S_-mU oLgRNm"09JzL S&z@nl}rp4IVeن34WB =v3ry_ ];^ tT۰NλN:g{.|: ɧb7RF=1MAUF*:۔eöc Pntʗə3o%mܤ]xs@O-I< kt.!.QJ5׽ӹN/ ~N~#-ڔq\%RNt?'X6?Jlo,ghձfe%I]}VfӚ3ForxeA"JJ4V0SY.E 9F%Y$X$ImeC=$SW*ز>~0eMH貝 AyxfBwJTH]ѧ%n1=k,Xl> p8HLn. ߉q.kҺ{ ̤|Q/SܤwzkIchlcjz#˔`N ߬OD.V*9eq|'5XhCХP3<Y ۫@#HYN{ڟ,ͱBo:Fu:0,mjv3K؏(CZ»QPDɱFD3aHHMv|gnDM{^eA1EZ~ *St[G+A5,Q˔ av#̜ΧOZu/uWwZ\oўLJ _Qg٨h~R#헼B_Ѳ2M<_q s+y5Aj@-: Pu|!6?NSՃ_~qp7Yb0>8,[R܉T=MYY7sm}|'zLUP+4Ycri%+VqG)9w3p?x)ւ9eP0z[/R_].v%,]ih{KRֹߎPoYn2h 9|4%8μ-(M-; 9UXDP*~t=|%R5Pi:c^/HpbEsIt,d/#; K{k~jҙEƇf.J : m].9 yk0Ϯ&1GpoM eZ#9Bڂ9NpbP6j@kX=V&K~`tx3!~C9N8g^6!,/quzjkkz 3 59ԑyS7)mog qSilX,j\?xBǔ,sK}pEs,Kgg#/۫ylRF//-سU/JSVY0iotNNuܲpg*%Eoi30"5_c.S:qT :aN{8К.Β"~QZsNF;Q~N\ZEBꋹ|0mD>gSVnMF[@YU+#PhV5Ϣ3wG}0>"U\c k  qP6}. 累&Y+}y]n.Ma婵DI ^m/|2T_!49I򷥌}yf0č.QP#QB7 v8:Õ=>8),wWY,<3\np;k\=QyIPqR 'xN<(&l^-z6vbҤѕ,}8#+z>U n | cTD1EW鎺2bd`hV̙a7FGxg3h t{B3 S`ix ߝ)Rb.ɥez"?EG<Ӊ5‡IOhXjK^ 4Q5/;ʔҿs,pIx+rX̕o@K@:/cN&X*IKC:p6Sx7#Ù/\?/8JO*S z_]1 LD]YiNߌp$' 'ecQ?Q͡<˻[fJC90)5~/՗б䍰w.ˁ/#yx p!{ꘕ/xkޝ=p^,c4?|٠)U:iԱ)[Qz1 + L:jN:@x/J&aq+[/3re ׈Ckja:}ғ0m">h҅ȷ{8^tYe5=,g]#%B 欣8]Z IF)[~/ĆJ<| =Jr!yɸ*]tSp%`҃ %2pYfJHCZhw ,$qmJoAE!xk{A0*Lo%Uȟ3(hoX?+9P._R]V 4?LNVFD/[s0gD_]1w,="עzkvtaFsTӱzBςy6Cki1YC['~%P4AdK,#{x|dݔ?i襽?#WDu(sj_z}3FI#MlOki>BpWv|a2+r{ VS@Z8/_xE\+1p%q K9M)D%m6 Oe^+WF#`|?8.?kG2*ԩgm}"=/g?(ZoešMX`-A:O]v]7ev_ A8N.gN/Olqtz~voo\kҖn'xG`u>ӹ4J ;LE2ۗCnH5 +F؛Cc_h qu(O~[~gNK0N0kDR$SNIwROLU.Ivƙ>Qkw,p«;.<}9AW ]%w0iibD蛎w8^MM2 bMnpM%۽Wh_^j混 bЀ# c%wf(3[x;N*3Tn?duNmp-ȥMw4Ϧ'L' MIj, 8so2g$d KB`uP۹0nmp+\0 c4%Ft5*ovt>iz \R >6ʁ9js~:u2i: ƈ;-?Eְ*_G`g}%J@Q6ަ؎Go z:<-U1M ^fϙ&.]ɩg_?RP) |maB(ұOK{WJpoEKY@fwYxoA2De&_4Ϝ*G8 pB-/ GWӆo+$B"'C!!NQ87mlҢH>(tl_G97уU]YBGee$f$@ ;^D"ɖ?Nz. &.ˆiJ)c@PhMGx+mJH Uէ*B'PT8RM58UW _$rƍϮ^ 4Ǹ%ѪyDEN|)-QL<$S8&琱|- :&0;/Dꏉhv-/f^5,u#G/s~HPi-cQ_= nq%Em~{N'K@j=jY1FϿ\=xr3NCF1E°~={'tW{4NqI"] '4!J9'>ff/>'oΈ)S#eV:+w9E9hV "[LrkN?Έ֢;T ۡb a~.>\31YŮ (R %OxAkjEx"cjD(U3N&]s0?qz>2ë#AՕ<); ^u-G9.0Oe|NmM|d^wRJiXsYdwpחiyhQeq^Y)PUz9e|o9)z'_ItbZxg\~Yh5%0{Z[#{qhy6C= c9Od8{I_$:ƹ*js9:JI 2*~xFY.GZ-#gBvͅ?r!}sD & *i2"A#~8Y Ixǩk]=K3%Y?%Fw/){y$OӏrڴU92օ-=g~~\5 J-E3K4vN-e]yAFžHq0I+lqLa|#>x& n#(`BQwt;3$A >p;ϿTm_Q3[ +׽ l+|9\ NT`=fd L]Un0+Y8'Jj_p|kEc^=ѕ|\cFLѕofQPdw5z$XؖW4]1ABat>tt^؊ޘF1)PK[``0z(&#fEAbt;{"uܹ%N$4t;_IoŘP.g<]"#(q)'֑9;fz%8S& Y0~P1N%+j ceB1c2?.H:tn饊(ƷhC7d r[\#kUgw7-JOq+#h6002i< Hg/Nϟ*!fQꕶhbI IgcΝ> 傩YR(UN>mbR, WWGݣ}WT%%{ͤ&7 apiPGxz 1IDEj'}qOYj1։w'yǑ ,  Y.EhUeݑ5D/}/SXC>ĂKV[2zH\JYKw1aɗu"CZs˴^偫E|e@̼{玂IN̐Sb+#yFzܑY]KyP& !og'@:MvL(1 <[-vu)},O \K%Y=U+*`;ߢ;ov76c2mK'w.fX'Ӻz; S=K%bqre]~q:hϦ-^gk̻" Y8au)NYZpF\O4hMyh+}v &tZYc{!0͟d$Ҋڞ:s8S 9+~JěΡ41k\is8'Y1Q( VKP$䍊ۭ[to2O(I ?^&hok9_IgQ%΄/=N}+e&W FXYk ;Qxm;qĭ10]VtGs+X2suء?3ĒR }Nc(OM$.etJ uB#A`{|s.w-sk͏ep<1!Of:{k 8qL܎"}Ғg b IDAT+\/1(V "vs^E@,MϦLPMF"Ki-<;ǫĥXSN0]s&jˤU/$x ôP&up=FΪ~- X2c \`U脸]VE1Poa-娻[\~̟R5$V! v4a?i uWx67~xLxoY2#JF*l[_^1g-ʉHFrRJl9/z]>&rSdotBhݸy9ЃT~ujbH2+&$$66O܍ iTm9^8}ANMjۿ=wP_ 1 {!CsN*កģ{|:-c9L4t6nH)^|eeR,WϞe@Q}?a;g*RT{02PU?0m6[i@kN&ݰiHNmpypr5]d,y}#A$* % @uRAܥ/娪p1$P9%/SI}oKIc"5Y%EqPG*Έ`1XJ06& AQQH+R"4s]'L2 }&ǔL")*xHLɏ+Kk%c7dϊwЄgLwڣ)>&x&}cX﹖t *|2 H:a7'; $m|C ցZ;m Wgue ^ϮL{kDY-ꔚȌȘCr]t,Us&L_1/ws6xF9eXdytb R%Y/67Y<%&NLe!,S䭁jAytJN >HT_xP1Jz'$4~ޣ# p׮GP^'Ks=\y)]|XJ*-K۵+kGW`\7 @cJbR"GH\., XS͉uN@}s蕹q y-0!arʋ!ʅXQW, j[ _g_gbqE wV ZJRWYW G5R[vwazx~[_h#.Ju &k @ZN4%j{}?$(#3ĸr3o{yK]SQ8KEn|g0#t/ qJKh,%&nB?[JI^r G 77ナܟ0Zi n ^X%nS4,7ēaL\UpɱHp0Q&-t蚏hoVJ}ܒp;@8A I^۩(ISlL7ؾ! QmV2X+LSawëME20/N'l-h)+wIUcaK(զF+JI&}$J޼-qO=-O+ u^q}w۪rWt~9GI]j^#x z8H*6[/QԨ d~6X%9u;T 3He*sx[dpq2 Pe@LaÌ\`V3]َOGCYMtȇVh^70Yd?^p*+@Pm 6H)/c4 Hں5i72)* Ewq#01Ff ،ݛ R¿=X{'i <ߍvi쳩U5yϸpx`Ȇbgg 2~^jKC ߾z&8¹>ruE;@K|V GgyNoqx9vӯX*ueǴV\ sZC 2`=p丧8BZRd00}-)w^fNJq̗8 o1qZwטQUMA'o.9KOx8{LPӧk?fr TsO.XJ@/71踢GmJZWY|`ֵSOU{j=[bv/gX)H)/ [hÛ7 hHGT[;29&\0qK)k3LG߄q;c0:|L*ű-8avDj%G5p>׺J Jhh6i^z1m^3푺F("6wo'tiԄ(։h(߰C5;N oR 0W+1+oW/2Flz QVh/a EB/ gՙyc_L6lIWne$i?yTO\՛L: "nT+̿m-2Ul+tQؤ}i`!t+} ).#CK1GÀO +%*fTG54cĐoN /?>l, ㎐c76򢍊m-&45vW\&'ӭK 9ߌtauY'["K-6A:?_G tbr`w1 v*t19XG<[—w HJ6. c#L*pus9-+I+mHcGz{E;le>gz5V斧 m{OQs$N|Rs=Y;yYVU( EvE5Nes&oH=nR77f&] H%489h gu{v00}}`am(FKDִ#C!F4k]HrsW09؎Va8dxH*h\T~Mi sO'k GCFLIz!.`\ _ c6e+_&<#Y)voѺx.+q5sF; F9I&kz}#e7Vs}s;)y6gm+;pen夂!c=>f"t*n`>iu 'Wx} . 9ԇ?n" 2HvאC2d!:)zNH Z bkh }}P4 D]/%jl Ďm#7BA?eB]]+I1De}hK}\}+ZKS x<:-VJm=SqJ[4[MLg^`SO:lQܸ#,?X+WXAgEWi)m2m%/չ9f!jaӈ!g񣏘؜dmWht/,0Yk\Q^@Os1hj`HΉ]-[\q;W`i^++6PZ'Cq=qEWYn- ݉RFti˲b-V(NyV\\tr&`U +I`qCWnYImW'(+,,qD x ( 6A>R )^(B#z+ 7̯ I.r&Q)rW`;x+zGSh +AnJ;`E%>s∠$ݏI=ΐ>KwWJKpE؇3+{%NIiOI^"]W^sqP9L^DH9DQR)Pz/o)qNC $<1MN :cay\1uMhG?$"U`EМkpَjW %'hswel:#(2̂CU:5Ylq+bK+6'}89̠(L*^dAO1biJiGzɟĮ< dž+v󢒞V&~+p:*>&!1d&VXށT#+_cDg\|b]3Bo022 ˫  Ȥj :[3ׯB}Ꝏj[;Jc8Q#_Q3Jo8E.eC: [۫wŗݛٻ߮.&>'MJʟ!vnܲG6/ː %, a ̫%F~xN!0_,W=L/zkL#Gfjp~wEP4@ܾ!(^SY0U C݋;0_|x4`M~Dwy&JUuyO^Z K!v铔fitocʷʳgJil#\G9H;2P lөF`+KҾnU&n':El7"E*-jX"g&9[L*60|ÊO>,ܣWb[L/Wf+%QyҜm0=HW!>lPڳ^rK ++IFyIW:'z'L3h_P23ND6s\ IDAT2R"QI2 q rK(Qn!pe1ƕuLܙ/i@-XuSI<HKhUmˊnF]T6CUI6?VY,ڗ.x0+q5ĈU 2]_Ya"RwKV ߓ%t?B{gH='6R. LoDֆ ϣ[ Dat .RQ_33.baj M[p__cz|2hV@ұI^|#HW+g 𝢡w%Qf~-8q{Bz C+ wn*չ* j6rT)R˩O׀G hs+Jyp+34QL1l9MeI41Oȫ.#cJ:*k$t+wW,jvH F=kǧ$ o&<B8;rEC}]v0\5A;0Bi:XǺ.(dk+<"w?>xF|JBZ!oi`RgCPOWxFgO^b>SwL4Dbo8Pc p]-;Ut6&<ftt› Yr%ymةtN4h_N6jL.ɳN&.ЈIՔeHr;@HmXmrJ:Qdr+)yFkjf ¶%D.å2`| 6e061c3 pp z0gg;S&k0`tf2n//S I; .` ߫LߊJr%ňkmW&MJЦ߉(RB `}$e|"*Qn,su2yP:ݝglGu렷 ~`korH 1tFo Jq<>n= cyF850|U+~:1S˖9ēa&6OzQ{)!3o5=?F1‚f# dV'_FzI :`m᳢Zk O\^ 5˗;0[̭zh<>xienRZ-Tir~+ȡtDoiWY5ۇ=1(Wi~{dHAZnEY&پ)ZG[7H#~Zc\C͝nsF<ut {Nz]ay$b_fOd8'08d8]FY56Ie=T(Fw5?o'ZGE7ˀxqxPnQ$mkٶ-Ҷ.߲/ey>  /̀[=$`-ӇW鿜'3/?(TP[hgܗ WFxTa"߆9{l M$iޘO}<ꇴ϶J|Yg9`mRps01ԒMP4m4gҗB,/yt0^|R T1 7:5gȄ'bWEg+$6a`sPSJbvPue$@jw.ɟf'X;M;19iƁR/&Љp'\U Wjß:E=G朗AK%pr40fE`U1^:_*Ş9"oc#Nn{<O"szĤ/R I7V t?_x'`Q:<#+Qdxw{)tE >MlJtY5yɪI[ +9 &" x T`>L. VLIࢼ\q90;io"PI3q|=5L9GFx'e$ :~T|+hf%gRr[&_,Y#L ^O`8.tnGsU|ݟ{qg(@Eۡdĉxӵ$U(i1[4{ Wq2>OBq/mK[| ~sѓ)@fHN\},s5-Mq״I+rw/Sև\b؈Nq8S!PF'HB}|qIW= tB-ʱY,,X哖4`+sP Tf&=0@s@*,gu!t]Ԑ7Lx(PPRFtʾ]#ߨVoqURz-bAJ{q*\Kqq(i *!$@^ @, o_>,zBF\'r_W_`^jpQīBN#d*e&%+<9 /L^e5B'h*):.~=Sac9(7 'vD:/Y89YZZJp)MP/'m4 4~tWkq-t,t8Np P`Fr P bK:{*@ yCSN`N^BN qUkqQf{]x9VK %pR[s2[}~+y)FVk[4$a90iRx ^ "ޢ<)#'>'٧O;D,W[+lf@UU=dUs}hߠO i O0|. 98{u:[]l8m0rOջ?z*ydz`pTػtJ=#[ nd[0!ckC|oX_e8㵐5Gg\㷢{L'"*n @'섿?FiOSQTW`[u(dhF-%X0^( sLn{T\"8l0CӏX w 2nxߖ&IgF4ʳsX}D^pPq8h>PѮ)3ĚefaŶk-)y)=G$s/{˜~hYBG ND]}ܢm\[1|ڱ CK-º t#I+&W4Q(]؈ĻP-ԯɴ(_[:ũ: tM-2VgaUUZIӔWLF0ϐ}eRi|jˣZ/y(¾@T1 G,wӽ|" e"e+R7RTUϛ0,YF A\o1s~؇٧'LiC+IM~"+A@f+xloZ`gK`zE{|rB}\Dyaem{+VT>zcutJ#,ͩ丆˗'PL^$$zqڋpQw;FF oQ(Os+-kSfÕhFC'sڶL)m87 EuZ1CUk< }Sf-t?C. W ҃>q\=ݼR$5q>O#2 lCs-KzSj +7=!G#0JLKS{[gCMȈ(f*9֨r!kX}'x`adtCBh yJ3~oO)4'VJ,sU?XJ̘O.*04ȣG02l.7xbl^a ?#BW\ya_h=*Rhyi @&AJDp9CtL W_tbo~Eryʙ}']X+|rG gu/W1\H!nin?f';e%mcro6\IMyxO#lzRa cɷUIAH& V^T BtՆi9~F8p؆ 5  |]!XZ!G9\?b+|-p|^t{p{ e_ۺ&Oٸμ2DH̜8~Š̼UN3# ~cQ'8ÇcZ÷n9txѮԮٟ*]UgHܺs0^3]-k+̳tAz6mB2~p4N@NN{ &*3֨ m U4d:^˾>'ұeG[RD*X ThS'ᒅ^WI}aAQ?#DT= _ߐ`hCkpOtʝ*宻a8v4O%@ "\Z*f-ZU7V*-@V(uFd=Azշ"u`N NdZ':iO㘁qqaGP+C! O`wQp>0$TSĜD"F IoI9kQ`89 5pL^D^]Јz'p5s޸ 9ژ8sˁ>Vv6W*2d0RA/t)6{JeSWѡX&]φ>ązm>aTEI'*T6tj |G4U/[!FĿӣuGXC:^}?go2sBD7.Gir9~m'=EG m8\{Gy%L9xiy~;mkEH.XE2w/.[*bBCOFc\.HDȮ+'1a_p!W1Q*li'{_"Ԍ=WܱS&B9\7\Ak0,A YvyKZ֓2 n#!*1:E2!ip?=cٿյXO<:WG.r>ەFM[$.h#_һMs-`ȑ#6x{篸7|J]yE&X .YjC :ZaN«v;WYCšL\#y8Z8WuAU[%Ӫ {ª#}K UOs=+>a'T9FU)^Fۙg{ F/`$ bqDڌ~xZ_ZsgH}HǘV<,.aZz4 0YES>9s|k) _fHy  ]("ીɔshCVoYpi}??лrτAIu_Q6C[̘'UPz & e'0 guRBOtd*ܥ,Ywɘu״Ol=yTw% +`H=/ ]<2DF}Wì{ER1.y6c%&Rvi}8JNp~t|ɶ/wah+q-=6,HKBe@cXbBM l 2L=h3ay H\De2g!gSѲi{!LXhqw;m֬Þߐ9D튳g/\oahjz&,%{j;]&H:FFe8\ɟ-d&J_,m2zںe. / tP'G +|> y m{Z+e~-ȧGam) _GEN''`Eg5uB-y+zh;x:[X, J}_fb[kC) GU{VpZUUGM«oA$sT=uŔ(.aDb62G8[,O#| A?pN-j5D=7> ΌX5RGea=lj,Ə]-qv˶'&' 1`CiM`f}X<*yL#pפn b [$8l=F1Pu_G<%c3H- yp'> rgϬZ)3Рr(ߪ_s)ڪۦ+X!&5L1 א2=b 8 Y vFпafoƜp]}y|T>J轿o1!jRY ԓ`#)[:A`gCkVT.\Hlġ#9]4 u2lWj׈n:z'dfuBxraiB@w J9SrМOWEHNqh?_iJ^4/n &Slq{}o{qE:S|p׬KV4xϠ{ݯܼpJG-gY8]ػֆw J$C=0[+͠6aL]^eliUN2.C"g{oteL0Zhi_-(;E~[]`|)3$KV' 'J/ǰ峈J%bOa*#|*Hp>gf;N\%J7[ELďhr11:rM!9L'd!)Dۂv\2Q<\cE0ۇgnsaWwj[qʴ>WI#̀l''%Q _GJt$&={ւx H9D"lÇ/A0js1(M=!@Q.Hu cM{0 EOxiWEUMZ iatSt [sLs.< δcph 5 . 5}CK+n) *tna?cbgls9lω CY?#[)Ol=.<"-S.t4CfK/ U;;0ǜf{Laㄞvѕ*eއLlH,55̳^@qfEJ4~}*Z) c [֫Rgh{]My-XſaDS 3 hҏHCWW'By#7\W 1o1 3-a)W/r=CƇ Teck{2$uA0-P<.8+7K)ń8W9;ޤxC_C!A)qx'!a#I1v3a5>bOv@hx%Α!n }¬YxEसи\{s lkG>pYݛwk>r 2%F -i>:UXkTjO;orU n4j{Ncm2*k ^ N˕AqI׭ua,rV缳 ;J!x EϑXםИgl|zdЉ)2XnSpU[ZO`2uvz6U{g/V'^cFj, D`D ䷾@`(DzgO7_G4# D\ *3'~* ~F)?|1V?oRJB0)L?Ӵ?2 <|׿MG;Zμ//~{gVl->bkViR 㑏*mh q&um׊+t_1FhQհ(J?H}{ϴ=f'^x0E><ѸW&t #tpt^!x3{\-b164Rcl0~(;p2_>x.yA8hhfθ"OTyJ4yG}bɀYҒ9A@;t3ϜݐDP2 H)$g Y5'x񳢥oYUl]g2#!D8xy{äm)s:9KNvN{dQN Wt4tsS,Ww:bx \M+Ai,Y?AFz+WŹ 7փjmnպ |N^s qBW>*)^"ľ9x22?eux/E#Us{AC;+6QE$ PO?PmrE*'..ݐ>Lޣg q[Z(j~̟}A @*؅iw|=jgHEeh 0@ _7$9b1SA⍾X} efd1.pPTճ[8pʃ¹B@;N풞<ɋڦ-+|1 ېoo-oD(d(e)#HxGTaJkq ҡHKz7`*Na1Y)fNM #-& <] d5>9aYpE&:$Xt &*\ BeƳ3>x=#}IvM4^#osJ%.{Y10D\ |kl'qD)JNpq/Dx5+Z,3J4{5ګmHT'+ S'W0d˰andw=m뼓8*(W*petOߢ ?"c![U4DU*F|g$\E<-·1wD }?kYa|P:$s˷Q P\Q3v" Ā2[3ɋi[gxP0ORx7&s'|e^7 } !"/j}н l⭆r/Fx ǣK|U&on̫H+*%q ɪU^#*S*QDi֙+LaIɪ`O jTd$sr9YDNh_\jo;JX#]_DW(ͩč'x ~ٹiEOokg X EVM+t!'')cvH>VETe$;?B$`aI D0O!csE@gH_&tf j@*E6Y\ \ L3^IՆ>/|V߉ImH{J  @LFqty5/'銚ݠ6fe|KH VGLHlUp (F<_t/#LˡW^CUF@G*jBy21q@1-!p:qG'%Y8RLZtG$e䘭}9]7V)NӼ%ZNjngU\c?I:= ?r s?POsev\,mtHܗ4vՙP {pBYU\_fxv h(xbٛ7*@83WBȑl_v0o?uw-?յx=,&EhU[`G.| \.tH&1Cl#O@;2s]"M1}F /T0"8G@}VИ&XK#@SYF|`z3/ۓo;qtZ8y&!{S,q; w}8˿oI]/Y`>b"ڞxZ*l#p uY0v A<Ҥ:ܾƏ{գ{9f֟h/ЧlNNڮ6f?`H%[c0@W/`4~e2Q9"N%L 8"HF-3G"]<@W2^+ ڝYpT/%A?dެ8.ɜ|@ j_NIHJ'lw_txϗ %[$%!"8np7/k3}bGq ǿ17ђM-*C#N]C >dja-L|_A#5?gz MK\>q9n0;Q#,c0!̳{@|+jcu:VݚU,~)xwwzL}ٹՈ9}y/;qQ\R&S$.] |L-{J;d<2Xc/OC#>%4|}y9{ 3Ɗg{! ޔˏ|- p"]ԽO0h?1J6<8MP?G s-l !/yȘ [ːL7} p/׮#8^p=`zư.ܯ -][_ҟq>5]aS|v3V9WkbXߺ@x7Lmó#ui> rTU=7xw9s&p$ؒwq4= wc[n E'薋 =?r`ӻ,lGPAc iOaODaS16(E` a1NX@@ 㥈Bt2c]x;>P}܆8:`i>7mӎcShHU/c|iG~'fvȜ^}B|䵞}XfUzf7FJ4`:>ܐҝN|҈7| F\o4N9yNrCq68_4.<תp;{[o{΁T~ўc>^O{}.o7к_f={ \赻Ub8(CbZZҝϻ7gj{qO_D'07ik_zsvwo.f̳b<(0Oz2{zZcpTS 7O vkfMQ}n]quK?1~~kGRD?$! q) o`6cu!/=Pܲ <>X.os bIv>[MW49tAd[ sXv^̢J"Rp&D\[ 2GjY4b"0N{]>޽?gX? pL?gfP,`_v!<ҋp:ρ s8xv4=G( 愑YEc_i1G̷={Z3 [ Gq$k^i(XPU2/ `G'k &g5; IYw \(/{ Hk i.mn<сo鬑s~,C% 0H%<7]O`(Hf5Yx2M0hgMQ9X(zx~E_IP/?_)9nv|- q%p*$"G1݋@pDE7!/i LZ'O#m#Szj>ʹr|K4 4SNEOWy=/cөJXcx Ѽ{ bqWT,j7P4 ^g9bjnLL|bA+~#tɞor:P^8=gpK)uM@ٯN6G2  xw:xܪM=%;4bCL ֜c)$A%lT-<oW󃭖6'Ocp&@'+QG|q .5 3vT j7Fe!ߣhYҞ^Y+,p,X4'{!W)Nogb9˅7g;Hf\|4FG+W 1~l?}!DYӼz%ڬXʁQQAt$~{`}bON?1o+ _=Q eƸ#Ʀu`n"O肅&}zcI9 w8(㋶WƜR($z)pWhʈ5DXշ8-g#O?_Oʏ'8H-\rc`ݣ3'9|(xI!~?_cYT@=^yȢ;jUE0a xە{NLWd\.RJ/wyT#_p:t5o5xR4hkoՉ{8'gS/q6:ZLX1JvI[ZۏܮGA_iaQ2+1}^]z|om P_`Vd|{͡W|z|*|׉E~&;0 O+azmH|} 4,_as튐,S^ҿkό~] O*"x ;Aֽ>D<3iDFZwON،GQ׸6_R/ .^<m߾!weH'} CˡbRィ݆U{Y602aG(|M󦖱 'auc>m qfgЃqCė*♵mlQ q=!}>MAMG'EyQR>ٶؼsA,^[l%dL} Jq>-uUW}ƾ_4j?U-i}Xo4LBxTu67LR99xs61sk׻ˍE˄x#*Fw}Xs ޑqDz\\v<7j5q D`S{Ř2^1O6O h]Е̂yuAdP{< o︩3neǯAsϮ k>Xu/ 0e~QH޴Hϗ|EH ?/7x SZD.\%e9[G7 "]W @IHSuHZ΂ Ɍfx3Cht&T*xCu=QH/q!*{BMD'~|#]vd`h&oW!YlLQ=w|O1}:Gwvc+O(b1ܐ8; rF=U vg[9V؋@To'^&W^?M*]}k)҃ur7}=X\u@O*xQ8XI!oE,q/`&u,&[PSpӧv@5OW #%t; /7P3Tf4o9RN \BS Y؂˺r^hmg,ˌ]u5Z \tZif,٤?{L@"p"b<ܧ7[1A/i4/oHc&8d9w5fZ yffQN=/иȉ%qprN4twd~qMRɄʁDR@klmI:+?2#c/`puRs.\dUPfz6ƨt ̿(ԧڷQ2!*V);H%\w*CςL^PN[γj1ΕbdHE,C!QoU췫xڒ&HH f>@>>TzviZXeA><߫ՏKH*v~?u݊C,.o( xHH:"I}? |{ @ٻZf\vm pN OZmg0}Z0'q9R_f| X\|vcL8 g;|3)?b"pn<3"pPLiXP#5X\K`)-XҊp-}W,AR \jy-I['R2Fx(^C`޾l"`0i !~eyIxG-)o5KevHxG;?faۀw9(cw]8F|׏wg(S"8L/>*B|=XEM5<\ TnH{%r$A&P$)KNu}gX[5d& s8zlq N\x.»>cE y \_y72 ʈҭOIJ뀕_~{KRr4}qJRpE&Zб14 Hך'95# y_bWae+W}4CҴe8;ucRYn3-u68z$ /o]/eː" PBGWF']628{ڹGp^PU{?Y3n(';>Co0EV6d '(=WYPx<٥ J:XVDr1ۋb ciG&,*>Vj1M** sҽӈk>PD}B5V;괨?=MK_NW ^7o1NО w|utdEVi ۣ{]|-pG[\O7Q oW'YȻ# 4n2xl8pˠ]?$lgWhi{eiuFܻÜ}> /_DZį_p[ߛ ]Bx X]5 ~$z\5 uAe,dNI6,+*䞘ygy<26pt qG*pKĕrw<7{57VIIb E1d|%:H&:W<-툿Bo,e^cnp@[CKLƔ˯>Ҳc 'm~OC.kp^n EW{rhf4*&4[<ÀMhee\fD%KggxZXoiTh\`S4t+L8ׯɭptuR#%]*:3Ae#~KP?dɂ3L׼)xwP*F  C$ƧŹaK#<|K/hGǺY,▆2' UALU2S(c6-B#n]p鵋&?΁oūi2<au[Zr9ꔭLro:>lk.Y0xv:W[/r]9˟ y@{'W͂ýk ޱc<^8=h0տ]לvj ?'&6_9 ˅w ܢb<9Y\J?!@# wGs0x_ 7Ud <Ӟ)+`2"Z(}8dL<8/3)gWDC^򵗝l o APtó:'?hCIpDVҫKB6@ &OxYGxYS78hF4BDGL閒(n4\*CY'[;]}Go9ϫ'lxA:@lou\8C؛ ^{4`> /xfk7Piy}=[).p@8KVMo1½e8vYiU׹櫯ypUNb' zZg}DȇNT&#{_s.CknE`A=ﺔ+/oV9)_yS i>քs;⋡5.pBK#i~}뿿^=}B8%QќLw.Bz+A t!Hli+%L3~'(@1uG&B<#rdGs!LxJI94NJAz Р4)J헚`#59]В"!j=c%|R {PL$D|;/3U&R!j²䑡l ez2]ZdI_>]}ͻX5po#-1;W?R;X [a!eӛA䀙T Oy.Ͳ< ɝgtDBQ۳xecsb𽩏AVptd=sM)h4KStp|#H˗AXNT9kEi|]͚ƀ~F `zMlMF9 ;ҌBch<` rHiJ򔓦8?,hmp,1i.tͲ(p52:3R,%]k~S[mrd p~ Lȃӡ 5!*0 38޲ս6\Ewgft.9~X&wTgXG D?Vqswu7 ;p]Dԭ4, "\@cŹ{l?[1p&xx7l (8 #69$\?G $Y$_!ߴI?l3Uh_ hx<"EpYq`'+K{ЖogM|uu\)yq46kl3Zpû/.lLfPk/㠹Ye^ jCrIǧ 'v/cYXXN>C[kpu˦' Pߙ.)CMfRJ"}k g?PsE~q7ΝbAc2~_SV(낷(hD~'ߡ vH9eRe|ѹWM aƄSwl`LC{>hDy4>NE6)O5ϣ  wvQdY l g؟Q  M} W~8ER(|k Z(!=h^vy{v [w  9(߈" ? 7P6QP4.l s >>_5J~;HB/{ ss ? Q;q_|-gx: W0pɿ=1}{z$-*+ս"ŴDWlzgEPo&sF#]w8`EzW~jLLނҾ5V:RrvpgP6y%KHҫ0(uS7^mN& w.=7ٻnA# ݓp^6EW1*2!o󣮨0[Y<{z g5EwjpQroArDZB漍7UJj>e6 H8R=$%|*{aq }Ж2ӱq!arasa rJVXw >sؙCpN5 (Yqvh޽f qaFe*ܱe~ʚU10h%$# +55s4Lh['lx/'GjTŞY +D$;3v*5H26A^0!EG~~%(*(H*4 K{=+'Q1۷\#%ׯ hԡB.\|e';)d!IA3`Ww_!۳1l Exi<ށQS0?`#3I$Q&e2bBW3tk. Z43n<+B*K!wʹ ` G܉0oHɌBǣ:sw~+sV#CQE`Kvq?>+ה/5R:T<CĎᘯ*Rέ{.HW:-p5ūԸv~꧱~@ |% MOSo5-{(QW=I*uጵGS~Kql+flK ֖P Sf:yxL^GºWQЌ'WA#V6@#h^#se&xzވeeSM DS5V 9If\(`a\J-]B*Vrӿ–+*k~ k%q =y<'?y7sO oAxB]qЄuc t\[b̹C`ܗpRɿ8c/ 3~豵ze3pBOتxBd{ d_o><;Ox?˛6 -#~B[. XgĪR9D"D +F8bbeN p9I*)I @"cK!6V1^hehJvAy*}>?tR{2 p)+ۦ>Ì21Qy6쇑d0۷wq[[c˅7n;P=8Mˢ]ƫ?zN)uH uX3Mx $8O c s؎GqS>{?q}8E>g+"69Lo>7`X<σB˗fudsxaTZ̲矰3o xg2$.ɮk#io aПQQ g*> -fG+TTwW?`ɷ&&\]aHF:4Ky_ō>C6M(/a,>i2ŋ.j\S#a默5\fV٫ܡWGhm.<:6ͷ#os{qSzV vL9qM*`bQ$.!6w^Jl~EC傕bĥE^c?/4/(ߠ˶P lP{ N^0 ؝O~WS\t@T#Ɋ 1Bȇs\5 @;p{!O+?:HK .yh`7uhR~IOf33:_ !CuվX "n=.XxLp :.6rt]y ԙsf;$*,ByŢ>z PG\Qxj\E߫~Ǥt_>yK]|r9]ގxYgqYA@;q^>Y/ "*m>cAǔ5rGOzˆPY3;C6#\!Fx@XP o8Q MWIa-.c( 滅ۂgP+1A 5 ̴5%#qʯh|L~|Mfy0^ɰfdd+0XfHeP1+ʂuEN9 ]ԿT9Qac,t,hoaiB/zls 9G'˧տrCao;1zaZ{]VޮG!O<:̀(WgSY^ĚE[.|b@ 纭lMBW[3S1QO亳ƳmF#pYqsxw.ZfUWS]Ȋ]t^n{6b"Iއ[PKSIV@\/y=~O.:q;g``u7C.pXPAV&,HpPahf{ÑׄQlvtuݒ,Dk~p [<[碢WA{㭟G"3=+}5 ıW[~ Є>a=x:pkᄏ 87u竎i VTF/__#AOzuq6E9\ς l-ͣ?ʜ$:r& >̞ig#q3vn #{3WY|t;2g{bX=ur`ge!@0: [q1_[HxMKto;;zLy>(¼5b#NJ]&5#w<v)uiR%p* Pߛ ut y;G,0TVk#7pѨ 6Z,mu=l7ÿiYѲ C\BgYK&sFf!ZI2^}3a*)H^ØO*v55(j|#HH p$i>&Ly\QsJ,C ^56䗕 o0G|.L9Xv8y61+?=sFapLo?ޮ'=Tw*4{|os;Gpȴ'MɴLVbG'PBAh6HfZH3G+A3eUc &xv7׭khfK# hHggٓOqKMEĨV$\V 0 6uʴ,rM%邾[.P4HSB/AlgYn&,h$%?JvѬs+뎩MFn%}wxp1ߤ.bП3_KW4>S9y7!& r-[].'R۾'#W 4E)p0)!bc n:A )0iHS.5f#q6qdtj,;Q K݊3 >~-socHQҝ xY\F4'`"2'>)Lxل^LF9ytk\ʵV>;B|`!mqisf3~:hc[H0raJ5 st9u]NG v:˜1ݧ<|a_X8 Μt)&x lċ%oB+k#_yi9/x࡭(2Km@5.x Wŝo@H%2^}x:;:_];َƀ mhlZn/i(s"y 22~6.2~wZ YNǑT ǔI'u}`q+: &*qYm孞kWO/0{V_AÒnuu?ވK|T>pD[[&Ŕ,~ rvN<0x,@8JA'*t=dY8WCX.tgW@aP$0K<~K8a ^ ބh3r; +aR2NG8q2QC q˝g,N ^>2@Ȝ_ױ[}q7ij?bhfc|A΅hf}{RFW<쁻Oc|V,@_rY}?3[V?Ƴ9ak9ʗw4dF/߽?0]V8胗߮Con\P;}˖D8E'8\/ULK&Xx +.8$)ֻҬ)2io:NnuKtv`eR<P1K KAW:8?]^K~C^Y#|y Ƿ2䥂N-2>3FJ_lr IpcH:T+Y{iF:-q 3U4| wX?A[;o_oѡ CXfѴ,:#L6GRbn/E Ω,Qm/,(<<{2- Y/.~1: W*:HY[i#6(a2w4µx8m %:`mu(s>2W{F<đ/a*zq29>&x } 2n'%|{h~f!djJtVw)srAowy!EgVwջgس׿}qx019Z`ʼeb9RxKV[xrPns[;~՞ί߸qQWGkJk&_ 9 .H G 眚# oߞV3F3dffByRܣßs8!@͐? ^r}0`1ޓ=#QAGdj1ƒx5dJ%iB^aaX4MXx愙bO.dld.|*'Vz Q\ʡ*\1 W_4s&ɷpIH&p%/k..K=_~4 %:EĀ#J^Y KE]nj2m=Kր~ç$[V|&ġE״*TS?i[ӁgWBixPӋ@{psƽ|G\jw/VhZ92Zڹl[w{w=2D'x(uK6CF=!9[]yiT UyCggww}CEoeKzzjXB+ #xadpoxQrSuUo(;&~ s:{m43h|v q&T>_Q4 X0~i7i:i&ְe\S Д|~XrZ YT:šEqJ$qZln7p4h:$Aw- Y#9ӈ+i\Ɗ4:%c6Plҙ7|irI+{v xF1 Qfb~'>:e_卻J(϶}!<}@2}Cuv>g?QnRi w \)4Ts}:e !甿ݺQ/{xr{~8wÔi8qh3 m|ۈ9 41}jQIO<N)(0нS IDAT.ׅp#hI^VЅ#(L<6sSƧ$89lJ]qln /l*o =s-Y1Ǜ8)Exas@^ #-0l>Mv|`FpB(hiSWg\c|qu NH#vs:#n'?"N8I_{5R%nh{T4k: 7( y o(i؛v=vPL )ٿO'3~ /ý)H%nd6PՍ[c9q㟰c_lPehJ5UP})7 j'JH&k8_eWx+לQűB:yϙ5,y/Ͱ ?+#[kFmߎ[ྃ@WrQS\ 57sBLe7wQ`GbB t3boD暇+;Kܿw> g;e7=cKsS E~ۄt֯zGB&-A&~ azIEA$~:cS6e@   w2(*p( 0p񈏣 dMf x03 -G1isn7ϣg/X%" 1N9Z"u@Dr=Cu) ObV-aם*y* rU>W{zܞ[==:L>Os17o^gىx:Gp.n< gxo1<3q* H][olGANWKfa/@$2z/ͳ"SgN$B&hz(Ufq8ч{Je\y1ؗSBsOA{9L>K0xԒ]扌13fVCٕ%OQr K I-Պ |ӯ[<`_E܍V޳]'6ZaiO,IvAƬuzL[a$jSмyn1`&6]/n Ȼ9L=cGas)pg`eKpF(8-H\BUD>A0Q'GDړGTZOmH8l_wW?C5T ` օ~A;9zd㌛[VթW;pBt9J`9fh\+qSq թ/QBe(G4L.ڟ-|Adz0J(1cԣ8PML;?Y[pOd y'0f)Yxۓl90;W$9l\M}KtuXgVA=6ź@^N#nR(o6  KxqEj7=\.5LŽJ}m&EZ);Kɀ-3=W:N@byEEf{6XK2/;f6cCV5Ep4: pBYkl9iځ PxϱƱn3Ƽ.87;ׅ .ϲ8/cRE, | w -=A7UHbv=p1Z'|>:˘G7Tޱ>;C0K?Z0oL Q)3R wP ;pK \Q=ҮiWߧP[~Iܤ2\Ч2fR+ac pZ{ QyFQ"#o8/tWn]*篸UG.;g~V-sMocw (O ȂV֬vYbC½=jJXkx#;x/or) ^ ӄq<<}t$ _ }K\D4H4\^I"C'Mťr>KlIڄܥ/]-V1 {? /t w8!H&KJ(JD7v3݈ %,e' VUY a `xצӒ[gS4=Dqeܴo!6֙[ I*kg7^칪qir`;Jrt BX-a]Ц< j-kʖ4LYj*zhؓOyQQm4f^/iLGЃǦӽkO_ҮIĬ \'B,;&x<0LypE(=z,`#|g48ea_K`IjẃVqlF/&23JM:[ tb |pd4S9Ѓb5={umOy8ipc~ݔ$`Xc_fċx wsOp9!+`A)v#qAiS掃S*7\y4U6K};4r.3s6:o8!+vBa h@Zmh#@ػ.'pq9g 漀Ww隙L#3=ix147t)~ţAAAFEX•?? ö_f'M g3ç|쎞7BT82p*~ W_[e'^P1-:ynSBUjRY :(\]'=:û z7ۂmy>Ra+W+f#;L,,!W"C]B&t.2sC{whuhLhx!iO;*SNO6GrH[`UMl/\COJ:"Fqh蔷S2J{H'Ӽn3$ \U]`tɘR/F?x'~š܊X .P\}Cy?:,qw?୏+@ XF-HR|[$+WTz njak-oxZO撜sdN0Qk欼' g"3ؠa~Bo]]`┅|RfAFU0 #o$x]9׊ƧajZ =|@kԬ宄\+Yw&`}?Pf^szA]=(=J݋y1`\x΃]!T'?+Wsxkf(A_Dnzm@ĉ?Qv+)$D Fno41[Õꃢ}>!,9gEl6(왴;} J!؀:z4 |ޘR&k8lcT}6B?c=;`pK1hxg^sվd3uBo?56Xbc5;"q=ǜM3q;nϑkpdlNkT#W6 3h$h|Ud:f I?Cxw't:>0o5bb|"/ɯ78&0:OC̰E'd |S_hRt_ɛCAoXGHWr3gyj`l+wb Y%nd`d|P {{Yv)H|VXpqnz0^b*l3mx02n{y"/iWO^Z$E{{/؇КaAGiN ^2/X&PiH SƲ3љ&R. ڻ<i,dS®3-{ոŀVAY3 M x $/=s+5v=`בq6{sKz& -ic('+~os5 @zp {y{F2\pS:?34GOsvO3(6Ō(uS5Ƒ# 'DXnf H L)UZ6f1>ˠz h9F {ŀ'FiZM.jjEPFXb6HĊС ,T]_Ŋ5_90٩$REޱ(#(z\b<\c5p0o"mOt*`kzg.nп-;p~ƞq{wVc䛸шXaL$-LYq)!n U{bg@PW˭?^].eǠ\/QHʘ`FG>D ߡ~NLhr:Q2 6Aq&V҆^Md]S)d]j%Ȫr Nf>%,ŵ,Z_">/}%S(_3::bKI `n/5FN#Jt6~սO t#F6I["bOˋt+5W;$I|+;1Wz'F k 2ԁr_Ocw1>Fe8! Q򪏪@ ]x/32.pL(<"Ҍ0ۭH"t; ,|%@(PAL2_4 g\as+M[,|m&lx[6z b_#߷ֿZ$i\o| ?WwS {tz_alK3^Co#NؚD3X :DC|m),[gߛ"䈁 οfWf"*_2y*,|+f`&M 3F/=4c6i+1'\/ģP&>l ;# z8ds%J +QuZx@Qʻ *{Y,[6jxGgh ҄XuYTbL|F Z/UA<ڄEx8K{7W=8]:Ttd|ZHm p G8Q<YP)y=V-.;*VO|BiO>Ρs5V=|+~Gi Vha32:óviR',p1~b u4A=0Hsmm(;Zlk+`>3 tpU]t <7t)s-d*ldeUQ ]W)Jo򨘎->({pE;|E2O%L% \޼b~"+wk>R:t@n.}wg4N;KwJ}F8y>g { :qx{guxxppۘNJFwv鈀rӐ4u>{1zhn5J;TGf%B<#ɫz6)r (uKh:J{ sl-$|vX_t*եA(ƷlC$R.1 cp%nkO)m<5|13|ESz^5CBz~$Xy$EJ3v|l kr˷: ^aaOHeǰ5dSx @QE*,&]Pmf7;g 鿗Tvnh7%Q~P\ ^6Ţ[~ۙBpyC[؞@g*8vRކ^)ci5o(R&>{J>po"j5?xʞ8zyo/ NzZ$8&{6L3' /hhuPp#k{hG#˥ I':qmMO IDATy^@@5|KMT#sOw$^ɫEaWыֿP |y N0==Ev](@`'gcᜪ_ߘkʺÍ 79a$<ހe|Ĩ2.Ok'?I38(NF*M>DWg+Lћ#6)(T"u7֒O,;n2?6ӘN1SgEoSb뿄%^JMqӻqIuJfR -yC0eh2JCvb=[:Ʒ;˳$+1\O}eK<\O>&y:[ڞW[Ll2 Gv̤ vX:j.G}v];HEm[M]plDWnSyj^>'е)0Gob[`O1o)'c9>[o(kxr,;~KQ^ *bF\l +O0M22?4xϏJY"K2 ?S3yePU5yfFX /܈bx&6(WHwU=4YU_gGƚ]Rራ"(Sq`?ЧA{d]T4">cF%DXa%,G>Kc/.c+'NӰn0>Y}nݾg*`?p[djrpV؇#U:5-z ;z,"(J:.XZSK X-P>D?tKYH0L7A4bսȃG$i] 8A/3M0Mk:-Ϥ]j x^%Ҁ oИsG2!$4iMM;rz-f 5E(k^Ϻ5-ƺ ]!\ܹa䗐' ZTFbp ݘR#9LVLxvR(8 會t gwؓha`͝xn)'}w/VO~3mo_%%]dhD NԮчGH?zWVGa20%a|Fza1#i"݉ "=p*Ӕ. tKҵhId&BJS&w 3C0RE#5Zƒ-7v[ wHhj!7!6 V}3,g^ĠFӘ YvsܕXX]PGO%;|m`XieM l*P:yx5/+_16H9Xs5gb] ӞT{ldcRq\WM~fS񾞹0"M|2ZpLM{6 ,O{Ftl08uєl](ؚQps2 |['_ʼnIMU.8M HŢnxWIʷWQ+;5='0~Qww!\=v x՜" a}hĭc'ʊ y}E 1t Yw_9xkz Ȁ+FJw#aRUW8UO=twl8}1; Evi887ZrrG_;/ɻ'o9jL[ ~]PbOqdIq]ըAZ'FB L`"qxETqIY(Bd2VJ@Bz# a(|߆s "v{`ź AS|$A Z*VQ5S'eu-h{Ϩ[)Oxgp4&{A`dD4_|SƪIH =' 3_^@\LJY}5E[2ڰfO#4gnHFdxBaPXWk0Ql3n!hϽ/=QaR=L,^u@;9o+f+ k<=Ko/ރ|y'u8*B!nUF<™~ ,ãj B_Flć ICz Hsn{J-ikۥfG8|M`OB {z AH]' #}D_'@,!+L%ybu[K0 mJ L ) ]3 e/}gF?+y+ȤAh/.&:Q=Cn omtx ;~8PsZ6<4ǓݲG͏i4XyKoC&:`1S(=?*l_h%RXx{vWFZӳȆ +>>&ˣ]H`"sifG^<>&̜2ǣW<fzz-rajz꧕WHOq+PG x$~<{!kОJ n'++ZIqև--,]h*M@yI Ϸ>IbВM˗%:;F8KlUqوګtYMQBiՓq(g֭^H!H?'lC B^i5k:_L^O^d`kFb23~"孴{6!mϝ|&P:7yri1 YA}(ΝV%Fxs9a6 8[g[qys`q RyVpp -ktƶ8#l1,:^)^9;cv8QڣWona qaaҊ%U056Q6Zk_pxg^0 @0MCWxG$d7qP4%ӅsQP1 A.xOx޽/tA3\::h>w#V[qpy@#ʛk'r3wR6>A2كgc^zw  YlXHҰ"O6 p +$B']^Obd7bwdi 5+$4RZGc/*Ksڴ/i2?oPB69K$J>S#JGpTރ}I!S*5,k*\91S(6VW"ȃ @:&8+&UMֳTOse%k~6'0JpsijouwuoNVNE^|/uG 4+b|cG7VIa=Ѕ74< /,(N9xm?Fax8XIL?rQ0b\2ȵ qvQd9gl8X"v%)S8 -s]n6w56*}Uh$LװٴJ#7FQEgSe5x}h+2g}k%i1j_jdrp:8mt 1\:W {`jB˿bDwGgZYഃw6'>:!3Y+W/V~W=To^||{G\apJ}9hP8a޽[R\Ez uapPd'B5uW"{v o6xEiĝT–>dњ3 ~>`"qiTWiW)I\91Μ a-'Uϰ:ԜN)'Q&Ļ3yeΘC_1ox5m0ii`ob*e1;nlx,`EևmLu_ LKuWWMR h[p.[x;ᡎCutV>J` w /9E o(\s,1Dm^vz F7.~k؅it>#L![K@>Bpnj98ViӰPBv@f"TzOMKҕ;w(QiU:unݮFLxGt^Q=ʹC4s}E%/GމB+9T-|T|+C-ȫ'l&S\-ʰ% $47Aа`Hɻ=h/i*":썢Zh^^`hEelk+eEb"~@ f7=pu=m1; 2g"XT"&Vip[Y|y+~G N=w$0vwq봀ֆg4 l xV; p$ဏƊNW"  ɹpp-dtJV-͚~j;@;tG5%_K1lHq yuz<*yR~Q>0%GH5\)lES@Ӟ&L֡q'!õI ׄ3IfZ3 /‘UI`3lTf/{C{gjxd3= zWކ1 qidpć>dkpqs.p. do#=s!x#'y+)fXxSa)è#?y>r]\NdDEF!s!mt9SijTֵNRO{MuC"0@!ׄS$~CF}WCEאGNPcI3;*n#O3Nk :Ú o ٛt#u$n303,Xgޔ'/޳=$KKxݙծ>钴ǵ+G9q2P' m~Ro;:wc GkF `EU9\)ŔǑW6>zj'eݟ/ ۏYuҠħ~{}&ԉ[76_Hx/NXjP28zm.lXV#!\r+(KĊ]#fx3iS..L Czo|IkF09+ȨK`܀1GBלQ x3Ey7yu0:+SX$5_D7g?oy徙먜/~kx+mM^:n'XcXm:x,8@\ӎL-Р]LC%4bxΈhEPSfT>2Q+F惬"لzt^pc*+w"W%S%j89XmZM^# zVAెͨzgy8.6p eBoՁ/́i_{W [:NOKdͨtpׁgm,4cOڈQ :+ %/s<2G,D8B> pۋ f=&WӤaΖ>: LWd-ŠVao#.hK'zg8Wճ$𳿷N{߲q}Gw&c%99v8i%;?.arN k% E9kdE3c0YW&{unOH3H(!_1c `B^ W:/Ky ȚYNriM6joriF|nX,;b;%f7<𯨸?ZgdGc9lZ >8`0:7twMc6=[v0mǟu6YP<g>~Ňt9`A`K OxQm}oƜQKϹH.-{ٙ ^l;wl~.ta[b來X Z\4% 6&GΔ殫i%H>aWt }Yⷰ^.#L󆰔߀t(?{M( ӒNJ@mh|'0FL&zd4)5a7p z!}<w}÷9e_ɦ3gt|o3 i9­_.HY.# L>c¡?H,C9xIa>zjĕM{% lfPx&> âotuP87h nRxca+.U[t Sto|:gܩ}8}-۽Nb݆*Tb6(,y@y~@p\E$ ˎ[4Bȝ#vΡcR'GIӊ@=ΈaN(=aW7鳓 Tj( =6M zzɆoҕLa5ь[Ql¯|VYf kuuſmtX 2B lۤ]KôuEw6AEOZBSʯ NF/pU_ Tx"_ @;S2\oHW]@)#oîӯl1CoiQa\tȤ f #96P8;NQJ"; =_WYMG 1%{3q'Ϸ'O\z/'bČ|NO?g9ct@g"E;C&Kxc*%t |6+{xRE M>}嘲*ĩ6ѭq!2ǾߢZJF˟D>WUϥ(np] Un'ח-X=ݸ9 9-آ 8F S{+:MXY_7/v+vx|bݿyjd:`>e3>%[߾^yM˛,S4:6>9pa%#]<Gȅ Do'JaiV  1Z Bjms'qPW/ԭL lﮣMX2C=ƍ%n3wߟ J .85iN%kP,R%]d7x1MXsŁvQԅ2Av^ 5ÖGe;z5qT:wmm%{}phʚ iMa T4+m#kgq}b1-Yi4؛̠n<d;{0痳wt=.b8._0ݲKNলHChGwKByg$PqJ?Oq akc[>눔 _{Axvn눖& `1\ЌWlTC>E ˜W~M0 ɷ_$z AVUUߥhKC~>S⇀:0]oyr\_3+8tgJ]v]A6^HҴ"K_39la] ƘnqFv37ݛlE7WNS]<؇ %Ө_\ظȁA3~"vrq8ɓ 8^gf L=B}9 )=-zvJ_ TVEEc ïFh҆ {vfVZcTk\%_ P"eH/KB܊KYн9<1}-uDZI ~p  -1|s-2~ |xX~#~b^ ` ]Ui-;\C<7Lfҗ4ǤvN;,z2ipsѰX|BYd#%e9V >3N*^|&ivA;ܶ9cPZDUA=z:κ9niJH1aN8[$YHّVq yl#t#ƓHtJE==1tOڔ:8,x;Q<;A |gk_*?⽱[؆N`0ZM:q2pT5FN ͏/yJ.5\X3 WV Qܕj143AtxY|P@R>_[|͛aF{kv{O_|FK0vKe" Ņid?) [~+Y IwdmJb!$ly\UQo,sJ)U8 Wpv, \~aL7<óA&2_xWX)4R$fcFl9:řѤ7,XCpMώ9(-+"0:tŁ_ O1șiN`2ĵ4}MΠqd-ucZu; 2{ ~׈&W;;l#'uG10~$]@x<>hcXXDgA\ۄ $_Sj9ʖD0 ݓ6W"* <+]jE1)JxD Mxp⣷aYL]J榿RVZ굆ͣdl\q́2J(6`4[5ޞ/=32\ge8[vX`yexb.'^Ih| iMֲ f&@[X˟] A!1/i(oO>R3MS(">3`sa>;c+"+w6XUP%F5# !(~TVVH8umdЛxga, 344q( ߐ0V)Զpt#~37ݭC8S<3X>bpeteհo?”_~{feE̖wxuXͺ3ԍyW.GCzUݟ+<$pY+:9g^kn?^ҙfQ/_4~qޯ~)B8 yֽ(e%v(wlDr(uP~ck\Yb+`(0DRݨs=_x'# ̰5:ׂىe,^L|:o|zGpT(f5s/n3 &o=ؙ|nʡ?>_i gt{2}b ^go? # ﲣCpziQ.XN>|yv_S_PCiVvU8 a}h("">m}Vv:,Uu٘u s'ӆV,Tc+9WUfۧ]Z23v7TP4?=wF]# ]kcd.)䠢8LXQ:XKZ]a*&45Yh' _Fd6V½sຎL'}2l| ڕ yl`}x2!=%_96,qrs-ؓBw--3H,ݏ<Y bn>_VH痗Ӈ`|pÁKF_.9NC';|/0iLzE 4x.lTuq|aWql<'2S@, ק5@Ɲ}!CΣ[a/Qte)4,WhʔA8qu ++peIoiF x .3^L ݒ;2d$ⴤkэzFkDz]7L/q/{= 2FFt{u嚾 FN;v`.(W%_9g@{LY>bZg3XO*N3CGYuQ?^f炲605'&h,$e >'os?P Ä3bƻ L?ݩ3$?( kwVk_/X4ghXo'~f6=5+%Rr!@޿qY/nFYhA{NvͶ3FXdϿ{Dga?Qa:}QtPm/‰R2-Fvźag}o#jdU.2-/;(kϷ5=):ˏO Aů?ZwB*&93_t"ISx$)0uY)X' Y\ IDATull8*dBu4~+ڎ|A/JOC}V *DօvKc(|Se\슆Q|7b`l9PosU|2 J KEYP9HeJ'U_v9s1X%APwP2XxPiCKҭOb׆ϑ`Hlġ$?Vp knT㧻Q᫃į'RwwS)}}:|P^ܛ^y.\{%D$HG:" p  U]u0bw`M9 zR)_m*v)8B9"GwnX3M5[)nc@x,M# ŏ =S!B)GiKH\cxR Eo&Bhהe4bFXnt]ަ𴋿aFtǗ?pQeWxa)k4[_Z9I!0}_EWtS6(W:F!A_tޡNCEL:z ӰQć*_ş^sɽ$uGH<U۸Դ&֛{Q1ތѢ 63Wnx+Wyݕ[ a5soXso=:&,Ұ/@܊o(^'>np1R*b؀ ߍcÿf5W5qAu얓7ULWyhyY߰V,#oHI8SyW RxiKxxgnK/X^k/߳ yJsGG<(]ˡ>67r͏*BgsuV{98׿@L p˟eG>q̩qSK\,PS*.0N|%j dbf׀`  YZoE_( R7W?qo;t b1X-\$=6#{(>iVL[1w!'_NO'WaqL{ٲJC.ܟlIW_kJR>}$ͺ܋GG8Wto EM|XeoϑREGE{#%-\n J .w*Y&~5̰Aͣ]TI#- w)/QV5Dz⽎e7q~ &4΍kr]l[ |+wm:j_;;[n݇GlC17S?|_mf=vˆ]1Ǻ3򹪛K\odg g?ߺm?F[ /vGý;uDQhۄSg},Ga^D=%ݵ֠_Ҩ5[up܀\ǯRh vZX7 :M"Nw_aO)6*|]ī[7.n[7qU3OO+ݹ~%/Fk1@0c;ʆmtk+ Se0÷Xm+;7@; n;Q::J`d05Fv2dggª>-B᜺~~96̖? F샧nN._ۿ;R\$gǓ)Olr%G\dϩt0pvs>Mt a~|\Vmrb˩bʈcY qڀ%tR3n 6(q 8KzA7洊+ᙺo|pG*B1>Gݷ1 Ʌ.`⥿߳@ x?\ 0-.Y̆;d?G00d hmOSNӐv9ގ$2 "kF l0ʸ3$+#F}5#}!Ấ->xJXlC;&#]T }.j3u!Q(MRJl:Qu[RG|WژjyJpsH|a۰w"a<]x3`ͱ@9(X H9P⻐rx*c\~U58ȗ7_pt +~2琞fߌ.@`_69] ]0hbӭ+ aM d ;"xd]_.$r~+n;+^`_pr`)yx3FΧX|xIbE׌[645.'FTRU$U47HmT,$b bZg&`P3򘎕A@,aHUyRxdFnW⏣pU$2>_eoC" gDrj>!!c&>Lä'sSVXN<ƃ_]W8mS&:?N1{92}Gӣx3bMz{Sv_8G:t됽[( ubWpC4_TucݥӾ&7W;?PF8qo#U \\(]SN 1kN58_kNSil dGn}`UG7̴ \%XW<< sǩ[:x-,HgyxX h_rk {4exI|B(k&sِ*ld ap3. #Y(-zp݆;׺[%̝꯿e}.ҥEmDxW|tpueIDGa`^.-J_p6+=أl1ѻ`!|ۉ;`::{ .!c=`q_unqV -!=N!|w;|u0V\| Eg% ==>xA .q>ѽɥc;JGAGbb!!Y1HnMdrnCT8OGK e=kkpz02@Y;s)godwԢ/YKE'v*) x 8qlh/5n=zM:={|@||}9a2/?˹:F3oZg>)eSNk^kqnR*~zdP˼W*K^Ȼp5_M?v#3z/[뾠mP͵A/v5]Jar1lcSX'&vuWv&/[#_Bݞwžbл :\u8_3 C 6FuݛxJ7Ȅml+n! ܻ9yFQ:/= t͆ dnF|1=e|u|/İ)S +O1-p1e򐯒p@au9#H!k /NpŐB.vŵ .\u+_5;Ө_`K:uYb2hvalΣA]kG{Өl%vͷGIT”rk Gj?q[qrXp;+CPV!k2?j R7Jy@t4:rѴImµ5'hF5m{H+PfNd}8>ܣcvآ>p k9}:eqnMsg|@Ő-vq^ 4i?\tƱT2ONBHYt؄zοHdOvdP/CP6v3vkLb^`"`N0Lf:F‘f| ӓ_v7h=X7-GqxgERɀ `q*W'cw@tYx4,y0q*udWi]1;*7q+|ȝEP"Sk oi",3@npgZ-hEй^2.y Git{>=@.:'c:bݝi3}2NiqV,;>N8:C#?ʿ7^0o)L0G]S bpC9m'u/02CǬhvV Rn»IsG\5ΛJ zIX)mI C, [WM h%EExEVЬ jd3݌̛ e%wS"?c#I(ZZȻҮ71yeWM]'%b'"63Uyژ~Qx:eȏ*se n PW#z/ {+kRO s8e*vʯ=0=#,_~fYnRDOsky4f=C4#µgp=% &ZD\\؉n\r\L{C88+I4i52U*cBjbÓg0OHEdf^e!^njk&&H5- :^ w/X0VCmJ!Yi,>&^\ݔ[uQ/vv@#x?R3JƩXnx8t E\=mwW>_Q{Q>;;젢EEKqW<'"ϝ#GTE[̈SaGx|` NL! |dM_dtܦxu&459Rwvk5|@{m*wU0lcJx[~k15=tld'BVt ]E72.f(ֵ߂aߝMA78WV9덜HY0,&[#'2  N',4 ;)wx]qmh>~pȳB+mxف;V .e]|PH&W .] A\:_p{3 >_xgUho{jI{GIRy4^O?gJpxw̱[t4ctqՈ^Xְa17^`oqH3r+LA+6NYm|+$ $d&EBkkug0*VdBҧ7xngaD5f)yr÷(JJ+$Y2 OۯEˈYٳxiBgU9 *d0SQ^yҹ{;Gu Ǐ:8$h3^=2?s X:?Oࢮ'*AO7a;v` Ib~vz9s=l`*L 1:l)3:.L9;2N,5JNѺ3-"|ÒIK9C$(oI*Vr?K3u,mo߳)%n5Ș}7,s]4[u%@S|6L+si"lk݁Q豬c_U)hDg+6u;fsBƺlڗt\p.lffxSpw܉!u!=|A1_O`! 5{Xtz=? 6ku|[]'4WW*e##7iӷ|N=FX<*];GEҥyZYEòoPϙj ^0>! a2?JtgAO˪ 4*;rYTŅ/΢ܨV8o0m9af%1ZUkA7S>i IDAT3ѺZIv겊~: w߷S{w/}:ڻSy͇/o~~/GZ+mqs~xsw;^|~{Y{l:5@~9f8SF6t CO@3bX8L} w,].&dw,/@2!Af+9/\imn7"ӹqLg}W s8L,M71,_߬@tY))H\X/+ X3Z׮ˡ03!"K@ȷS!ygM« xjD[^8^mE[ kn\K\S,͒[?oiuxv(ѯ3~JݧT [̂}(/<6zpicT x|ޱ6OrmA`ΘBA1{xg8g]Xqjx [,)V ɀH2 l\#zk&Y+_BGv)P JJEff#lgYi MuȡCyox]t9kfafm ޒ.p1sD ~~",߲=û5  MW)YۛqR)RROcB[n3b6SE@f]-3F>f=:^rT±9pL_~O\u:+O^oq>>Hި׻+N[m)O]uX6Hc]G]nKpM#uB^NrP29-/- ]<ߐ e} fﲯ a-lί7P~@C^7ϼG!_73?˂8`7&ʩ@7&k 6+`Ψ WBėjYXʛ#i+}o Ύ 8ƅxfzkx p۠*2RZғ >?iWa7$_}w=O-.niCnml3-=E^X7{Eؠ ۡO"c +߀b]l(v~Cc?4Tkoi| _ jAP3ύklXO;+tܻlw5\}#>==_\.'{rY{NOLJL=ۚ^}w4La8>= ߓ\b׵A9է0 ZtPAqvt x>izzi50rf_Dqʫڪŷm3hڔM=[Ħ"JdX, 7x߉;hRp#s%؀4RVơlqm4p/W1_tT䆓v۬an]gM)5ޚHM=aE /Rz pxTcìi8d|vE> ZQy!Z nX޷s~(p-slӗ>y_8܇Sokۛ㯯|x#q5愯 uqՃ,|Tk;|E8`6 W\4$9*ب$j4nydso #Ib+z1R8 ObXED̊w#3!uxO *r+ Gh9k/=˖{PqOaUr|/8R @ֽ Wm5wy,%[XkD׬lG䇼xlQ^^0%C@\~!bקNgܮI>H{ |9;w|qF>xpxɵ#8㒰?^fX-?r# 1qu|><$Po=# \ۙ# 6W!̆(ɇcF[giQ.0AeYrTz D9gUU^Fv8Wүp ! CL .nU 0̉>h6'SpA-[*l$*8FfmDTk\exJ#[ ho=V,"7Aq L&kjM eAM-*aQt-[)<:bX }(дGCYy@gFF[a._ a( lO,LJ߿ՓoDYiyDJG|w;Xw|z¢@iF2G5O93(ob:p>! VǝžI|xzwHCN7TR$H;Y藻Ny &2f P5u8$PMb /pĀ'sZHAlod ̔XdzH|4ugWb -ςځUYX!%~+wY]h_pv8ĽYr` #a·*\BJu6y0j~ódK B'c_;+[-k95RH*Pۋv۹@H&Kи£e;>v᠗xsPx~懿|X[#RO}|_2+>b>aX7Rzt(/N+;Ryܡ^T`F daCo.낢.I)W@3! <;x R_KXގj\Q \#z2ZF\g)D|uRydCxJA]5&a~q77Zx6#^ݭQf8UqsGC_e{DsZq:~>U_*"VehT)dxc {$>tL]}l.N:|spplLSI?c9p6^8JpBh'^hAa":Uvʹ".bgxؽfS.etȎ#~SSo/,sd< ҆}8C*SI12Ü ՠo$Xb׮RwO`F@"߆ 9jI^0Ŗ[riŬ2W3ubH"Mg&ntDŽ+UA3}T 43)pHL6=zx^eOY$βZ +FRd̻'ZL?5gk)x6g?-bvvm$xhg a}s]4vKNޞ>_d||s>SW(rs2u]v|9 ~9Q8}JyvIBdW2MAk$ݭGFrX޳Å sfg*}ekH^ra0+4V+xk)z 1 mĝ~E4h| Vە!x:TZ%vM:ht܂%nOέt+u@p)[\?C~R V+TNYC|Zj52،P@fMes?9.#k4 6+ߟpn/7ӓei<` |a'Ws++YǍCz߅ >_n;d1tٸ0wϮA`}s .}p@3mggY:8FC:|1|:AW4k2Ǻȁ>(!LaEbqAؙ864wd`P^D$< 䁑,oSGx*M16{m[XgGyDG~0z5?F6 MA1>^yx=WEqx3dmwV~*ٔŤg$-+!dw_xb;>E>m年 DI{eV ?`#jC !落+/@&AOVOpNӣp$p|a#1;Dk^_YmSgͪ]ax|SD[0x,4c*vOKZb?՝ QJUy ZYm=;cIH~34sf+ ÿ)<.XHwWtFߟ]}#% \# Q{U4nJwH 4]o 7tg=r+;p$SW\sAgvl!y;. |JC> 1/{(nAInw6vQ<8[Zy򟝃 W<8kG9=j{a`!t84;_믙On\¡Ÿ{ߞ=6t3[ݴ5ό,,Ekaj9[œho%`o.# ԰~%kޑH :-cUdP d(lѼ}C޽{]]g-)9_I@>lH-h|߱(|V?^d~z뇏?^|缣7(aD:v AOeTJ_?Z J!I#\iTTqߊ҆1Ë4~etDƋc| u+*9_˪GZ.x|vWUCLyxWTC&=0¤wގ i*671ԙ= 5tCyS&-NM#?pZ3^1-w;> ``4&&|X4vk,uvW 2n{Ec/7?M_\N?|mG wg1ur<4:gҝP.bǐ{$SN<紐n6bEb'<6z -_;|p2*MV@*\1/x0v8F :;8 0{pd9ȷ@v@h'>#ƭb):V#5 n`TfZxy&h!oPa54a^EmVă2÷^Ǩact ^"ꊬÔ9*֣c"XZp{3 V o9H('7 :ϾNdFOXgC1CN+3L/6u=?OhpamtϹK:G|T8wʡ;6t]b ilr@v34f߬EZw =e5JnE~D'g6.Qq;A׳w4S_$mk 2I2t¯* 1+z f`7߭i.٩֐uF~ErYd7ae^"$IX$]3; (⬁gŧ?yB1gua0e!gFQ4Gū)/s1@6N `^b]p^6ϠuxBQAOW0"|)\9B+4á[ }@) ҽ^y5M[0Y&Iי$ʈs53᳝Nީ5;YUrʗ4og|~qgzaZ\uQ.КS&0?'6v^_z6sl<=^lzGvwCMg+``*=cZÆXtH'LN9.rwmn#b㈅#"YB9#6 IDAT pD΍0%Z/H4ŭ9[NvV4+Z@?~]>sX P7l]oh7:WVJ^µV~Ћ:bfq#2f:-*Uf>+70p̻yp:AYx.?eo**'e6w,h 41=50tguJ㐂Ye#3m4 N;E'Ft.n:`ۍN-\#}ZHNswv) 쇅Hʸ*`xl%{:=#Ui5מ`Os0c(wT?lqƢA4w8bɏtHn;2"{,4\>a+Cg?J-C*̭{n/d я]Vc;JbL63|N|B\mgalO㔔9?&nf+/=[R!c}`*!IOL>#^ k)EqKUD_N@1.?G Nd/OLX$UK@];vS*N oo !e37XGYMw Y$Q.(:|4k:ƃ~ r'iwČ#wZ~w8ij N8VġNeL*(%kx"% f[!$kpāBt2E&yT~$4&)+aV :Ew?0J1H|ּ >l7+3_Km:H͜ ź W&o~{0z@oدF/8 X0%[ OS/ìM9xz 90{Q"gx|:53ZƑqܓmPqЖ|8 i Sz |4{8|Jwӷ\9ugOoϐ츤2g8͐z ͻؖF4 Ρ[0kC{rn?lA ke׹5'x޳ Ud.Yvek?OGtNсGg[ W9jyՆF֔w@oώ30g% xwh?NIMw83*]tofs`ƛ-wA֛3+7oz+Sat+³w]Ҽ{7{Q$gP3ir&e6k9~z^iJ`17s7mz]0]k&LޥXʚĸAw-it*Px-z- C?{,QQ)FӘ WA3+6 Wyŀz<87Q$G<3=rMR3!jzѧfזk{F0w7`X0 Wi @w(c]w?Vx ֢𧆯ǺƆHC\yͥA$/:Dg)DgRznsß#'aC)^te%ZN5Vx{SÊES>>un=Mu{ΰrΕW Ǩ.f/SeZ ftJ"ld[ȼ+'is5*HC':V MCE3 =HP_"\[LO^:1MGB+ȉV|L/ aR58Z.T=-)3;؝2)i3 (g3I6*8;S_f0t~lr|^3Nڧ'gأ?>ϪV1͖&ofsla~BBC51z2{0֋H^i7>oׇweoi7@uhAbo\\g:2n%dA.Tg}W& X9/u;"Iޑ^<*VRkHH#K2M-V=P sbѾȗ^1o (3sġᄋ<|]ms˄Z`FF}TujquZ925HymufNY,84e{4uҙ%z`9՞pB ZuGPGNkYΝyPW4InҖo a|-h`@22nI̮W+fBRXN{Yj.oŃ^^KZ Ȯ{8™BIoT`lpQfBѵ" ֤B`FNcsP)UxAO XD}xeSlb+=IFS.9a{F}<*"ʘ ѻTRN b\z;Ċn&}|9|<:o9[T!}|ҎRw?^ ܯ`:L~^#`e5G*ǰE(ǔM-kB{ʐ"Z#TlP>-([q[+0vDqO_,S9ꉛ~tNOH4M#N.ք6,p%*IKjalؚRXꈥQ9B{"fy?Ӳ1!Pa\O>۬Se"Εq E% 4{/*)$]pS>cn8z3'H&v}$bH>ߜܹĤNlm#ַde̵qᷲ́W,PN+A$o_ Kh> 3jQ}]fXA r SuGY*>QR;0ܘgh-{;iLq[.1ل)H3ՃF)E_ wqҭ9&Ng/ )׬Е._Qe ͍B>wC?˄ da~2+ȳ < _s@_ېVUUi4!ɴ좈ԏ<{ Ohr[;UN6;V:#?za93{Q2-DO7aUNV'h_#.n$/L߿? Q?)iFx@=k+m؇ ݃ .oaR)טQ#q0*p\R_af*vOGjDj}dD?>&{ab0L7<(x23G{SqŽ;`\-&8*)a{:FwOMɠ+v[8ތ6j 0|0TY{y3pvp|x Ctv!q;A< ݲ{o)aR"y@;(컁 , gR]"0[rXRg7Ptt'sWuƵ9^i"f=ر"7);!:X$OidRҍxgŘɕgQ6Kz2Ǥ}+H|=9L7h(J6<3>9$J^ y Y`ٿݼ@P\z7Cymͳ ʧmı)=]K-܆14MSߖQ0J_e陑z*yzOQ:+'PcP;d=0'7? o~dFA~rv5<{Jhx~p*Q$9=Bm$@r?>n3c4\0"OYL ˫螣hd}=\BEi }y% lc~briκ"O&a*x9+.VFT=d"|YuYS6WE$LV|w'}ti*FGkT~Id:5gAK v)ƕ$c>)ma}Z/Mx$gGl [%Ym _^- Lc  uIhJIڗ0w:-a X|} y㺝+?oB_@S]ek}閫}8-%fVoWDYֽJ0m㕱?DE:}.Ro=UJ.ٷ:H@:Ll:0?J^UIO}_U' G#|MLy&zi67ꇨoO13y9a3PYh ST3WHɤby]h)\~5P0R~0ҵK`ӛ^+ ֞~K5eBf\s$L0Z嬻% /LjS57篚ű4t3>]0-'$U @Dë? ìޏ/G 4rR.`PrU.BJfr|kWܽw6 eDsĿdS\tʀ `Ƶ*2zTxYc4쀘>IJua"%Ygb@uuLo $QO&VSd9*)]le(_TLʶ ށ_~ۓ-sVg>T7vk`v$\˿Si$h$Rx[I ߞ '6%C(U]<V^ptY\51ܧ. ҹOR_m[8.WH8[9X ,#*Y֕v@{t8V0- ҭڔ%p<5NUTLo&Qӣ巢. 3Z \Y=_/,Xp'Uy*+Α ֫&TH B ϊ3M4q]Г0)$ IcJY&45˕|O N1}Rf7Z3}a5|eOZ!{Q[҄DpuVٟbT _f};>8Z-fEs6T^k U' 4+{hOfuyy&R'ݢMZRkQcl= BfޖfP^+/,s 8^dvi_OqiM1bIܯjy|6s+Ah<]I{Єb)[@,|7ǖ}*LjDyM ZĥFq FVk`7ؠ#,9P-2odP~MS(tWF~d,}dJwZ]1$!˽'NGvc2V^-Wb\3 v n?PPovu"~ =Bs6ާ3|ևMhPO-ӠU}#XĞ kۈBX"/%/gMq5zĆleWkDC+1cSd$.aRVR#.s9?A#KR0e0"1i?%_ rs +@?~#l|(kuZ褧9$drplrs{Oh^qkt/Roz&uHbGgD֟ne.B\^[©|@`#>#  j%>F-,6L~_3i'2PO;y?a)!ܨ̓s@ ʳalf\&ݣnY)0/Jl}=~g?Sbҟw8+QT~(C_1~V9VWm+{6vJ]7L+B%]Ӑ_ib;oExӉc m!-,S/XcRT"9#TB`ҷշ[U>s]uPxDzLsFgZʙs 9>Ҳk1.\}Ɨ> 7[θ"`Ys  _ k\sͧ?sZ tV/`\Nb*'e S&kP/G{I# M'V&7}?mڐ[{ 9R /8f+E i{ P*OOfA%ۏHΛ[;x3|t+g=n%S{A2kK{超țhEѿٳN <ì~i3:|B'Tay=+L0h"Ȑsp Jkj2X1<8lq#bBDk(cdPfZ[DՍujjl%m0Zwo4%[*3m'NJоK(?[)i# z8aNy)iʳLh_szX:d\ IDATZ2~ l=R)]wI](xZo{0Mpm{*mo<6пѮg?9>G?Iw*1|55*]E?'fPe߽-$`[囀19 Q˃B,vfKHueb%O6!-Nl/̀8CQ?KؗzZ03@oO#BFo {C_mE~{<},D 1nDC-}&c^.V sꅪC C[*g$y#dPfG!:nG^O[jV I&^INX}7'8Ӻt⫂Ägaq2c>5dLdhJRrgge)u@5vf=[$lb9b@ \8uU40O~4x .(xæѩjQ瞣FLHLӫnPh/.XY?| ϱ+/>c{` k-b aDV9Wv:G9uhtmnagw(6=O~2BNC17m `ʗ>;T}6i !7Wn']Ɣ(}c'_)^Lhs/eeI*_-ء;mWz{UjۘS(XN_<`Kj7}=7HOeP: ?{>bI6 ~2޷|7ډ=Wmk_S.rZ㲠]*ۗ9 ^c gXaS/-'-pcK1^zCu>)#tx~Z.K _;A/پJ _~v)Z&l1ha ,*Yh䥕FSA-Gѿ@5sTo>oODZT>,xMVZ'1^mf+b ?fy9h _(Gv1H;Oo~tr16*.9bߔg7Li*5y_''kw.7}ԙ9~{9p:3,5-uu8bz]y}yP{t>.OGe0 YŀWWB*9qܰخV(` ~+)\Ш<:p5`} p ,FG[ᕖtio%^daID#@zDq(YE˿ 4i*Bglf*-<mW .wҟsUZI)FA.iǎ4Kƀ%8W-s)0ՀVs!Vu+uDzJ+48QOoq8]1+sw{1x1\H\h{[Nm MzN1坾[r [ 5VC֩A{gOUPY7DɧU_/R໷Zj`1W`S|H`>~ 51Hˊ['}'h6ߍxv{u7 )XrHCN;|lej3 J67{͝sʀM) N، LעZ\?5zTKғ-O f6-l8p#h* .i ~gıb~)BI˼ ^,˯0O{)h1=䇘gg!gC P3hX##bxi:򞢽 y|Z^ ՑL|9'(PG!te`la9obOF7rCp]]{,-hXHAXFW힣ǘvv,!bO綅XD'Ԩܾ>{*[࿆aԮO-i 2aؑm6-9!L` ҮR;)tQD3 ނ9=Q{{6⻧ës0[HVt ] (|` ۮ @#p@@WvYi^{0PJ٭+pb10bZEsjd;x8Iy&Oi'Qc&,dЂ#$-&ߦ}60"cNج_wm=Bse*=% c"5Fu&z8n2T*8o//;!+ZtكYtl/9@wˈ!';c [Y3g;{l__xge 22s;T:m0{wkpx*¸-v6mI} ν@;2ٻ67GVbvj_ӬYdMF߲Ǽ+SH&0]Me9k>—'+s'n?y,t>C"|r!?t8~%eċʡ鑰 D;L6|䮜ec&aHGϣ6y3h J!ƒ{k {2,2"y2hAf Yf!- TkGOi}V+S*Xaf 4W9x}zsIm@[ % Zf?@&}9-TUy6 7m[@e 78 "UZqs9O|E7;.#I/?? _o [Ox[pw 7.2 [4Sń5SD׳'GZaUQ gp44?1j KYlnb_8 \) C=K*`o3 R(O. ${z1Zà ppF>ps9LKe*v`O4}iY/;a'd]u$2{gPcK"(.{G*ɠ+Ic}~%, 9ka4 Hz}7b#dDaow+m1cb)JuqCrǹn=zD;/|Fa϶ [XaR!ҵ0̩!hykGx٤[KGL n'J.x}ux2dH_,3U#6*Ih L 2>џ`8j6]mbҽz 50[]۽kk'\ȁ탮Y~^QZ ݎi927g\-SI%ocAWU} W2:t+m fR]%A%{ݹ4,cDo{ƙb-gY\m߈n_p\ ga-Jcm8t~ gWnZ35[M[2X2= 2b1+^+4լ{9Mv~b2e8Aqs*ojmՏ_QxOā' oP_VzX崽sd|}fB{ڟJ2-_)~yWZ$ Ǽ~gB_=+ uI|- .xHu:-\[\4.5 _I=@'˘똬=EN2D)dӸ2 x;!ಯtB)L)*|D7vi0!#RЗo.sE~Mi?UF'*&?.RT-Ѣ~ov V)M󍰼m:J؄MiTgVX=gfj '騴H:#,⩶\<ÅPSfRA=&aV~7Q$r$tf8ɨ%r3 U__l(\E,55pvq{Oq~8^ '{Lnw6+&:WY s 9` G]=(a[HWuHVMxkA4mV^&$>xܗWT$S銺 2:qBuRH}'c#os*Ae$kģn)4޸xpl-ym Uj3A &s:G;anY1uu, qxx F)r2XwKcp4bD3R"L8\PdR('?3s8lml[r;+JyӦmFgOVaoQx> % ML`jB fe{ŵ ^ƈeڇl$ /N&2Z_5`)fԇdܶ鈿,[EϿ{[[\]S8|oHg)eo::y7;yGQa$_9ϷFGq62V_םX;euVIN}HXkw`*;_?>v論5W?_ػ|2^ c^#rL00?u2:I}5Гn kVgt@{Ꞩg)s|1g-WŠcV5L瘶u$/_gT8fu7E;Yn+l^ޑjϥzcZ*:Sq=f^X@`Z`\1 Xi]L<%2kͫ3)KѤ`z] V|Un@RYoiDTJ9:%+Z7 s@>n+ /dPA }Œ\ 4@+jgH@ܛUi5uO=8/v+NֹzZ2$ΝHa[`!46Zu@A,gwB i]ɥ,Rui Bp&zvkZVB3XFORgi[NUqd̿ߖ[i 3=y7qlF|)YQMUehg;6O{r0lAbGdI"mKڌIvv8x3~7OO08v>y 5`U@5~VTߡܕn'HW$& NimgfxIx~|q3T=`|`Ҋ@;\W؄͢5'#59S,ƏqWǼ̕a=<޼p?]@xiolV ݕw3``59Ɗ —? &*ĉ/vg=v2_Yɗo դW#Ҋ:F FZF hX[\Mj1 UAksI)I?d !d#煏߱ZaGhR~ 6+l9[A! "hH6ʜH#8W(Ԩ"Haxɽӛ_mf:դ$cwU,\1K2&=(_|-SZ-3w*aԃ1[p&qUloϮ#͑+dZrGVxI<3* Q:}wp|Hݡ*M8'[3{mKЏ3zvGpx9 J%O@+3`>~'_d{ }\.~a^46ΌvNPO$Jl+8=~^O~ qD;>=C!}0nz8 nK߱홤~{s8@I]bZ%8eЙCLDŶ0သc"[2*tP$,oy,}?1\ 13am}S059$/|%N6Q%l~DXӍx!ݛ*# \H$.]0|l% oVgtKϳCDr8I.C vƄ;a LP pG&7g5VNM{{㷅f_#>ϰ>Il3,1xݯ*#,, < ڞ㘓,Xcfbmя?IK[0GTWnڠq#+K}S9jශ+ӲZd8߉|iMq4$ g~q{-`!M C._~7lmV* =v pMo}?WL2brG]9J?*jN!$ěw`Z|:Мi?'ܣS29ȶV#I2PV4 ~Dת_Q'<˵^*6Ait0_mx)< FX:G<=f['7PՉuLP3}իeݺӟ^ ۟q^ ՟> p[kz/o?ber`1bQ:QQJĶCOI# O#9d K VN=l l=ϔY0CJd ; wcTIO* iGWhK Ӫ lJI RnS26f$E!ƉT Aj6FH vOH^g _.3V\rʺ@؁-"hU.,Ҋ 78qQꒃcnEi{'nMy~Rߢuu+g Cns>FU8e6T~#sڛx|PJ|랱 le5'̿i 05Ɖj*³`/;>*5V&,'\.ǍZ\+>YVktc#%taz*Zf hOZ oy S{ :DPiHO`Ѻ#rŬ=DN[Gd L6h V@8W\!KLHy:AoPpA_OThY s)| gNdJ}懲ё$!UZ0E,|KH+LffĻЊ:}# M^o@ɃV쩻K \˴J";{\@e p=JJ[^3Ҝ]Ati-Xپv69U^͑Fzgq.Gڅ.p/rɬT5LFĿjG!OՔ 7 X"~9drJײe/x@(rUIS]O~E ש \n;As=ݔ|1":D5{ i?1)ָ 3#+9t՝'Jx)J[y*@Ҵ|sE._jW@%\D7?2{b[en"JkR-O|m$JIv!/Q40<>x4>(-grQ.s&q?v[z[AB~gL< r}{KS4nj2(gLA5P^^SP Z%ϕҲn_`i,ܞpctNWM4΁w?Rّ|v 5b~{:w~9\w\/#yҺx~{W0m*^nn(Nw"VA>mşomVVuId_bO79e۪ (_{<|;5yqZG!aw ^_;^#R6 'NqH}N+D| ͋G+S$TrKkS#Y=殆o`x,?#>aK z,\qS&:QqEq_$6izm蕿7]1|V\8GdO9%ru N'ٮB'GU0}~Ikj@ɿ|_,nc2ןJ Aiw?rݛ[o9.d4h#wM*_k&8f(&&'}rހ>\A,za { n}dj۪()y*|N صxfW*&)jl[mrm{W-vbGQNV_ ~/U6/bUJXi+>+ ?'iOP_Pz6'p<^} ڣV: 1ܷ?YY?qa~0!! xty*_ih 2VP<Դ&Lgq887hi\C!I] >)֋й8 eZW?%w8bIymw0|+Xnyc RَJdY6}~`]n9ᡏ2`'2}Og)P= c=:ΕF_Zagܛ"I{6Z蓓0o5H߻-T|5HZNΏh7p`jYӱ/8F^i'Gʰ^ƸkL*]Twg= Y#ԜN ϸpogxIGrf*>#6eFAϿTuױcGo V_&,8qkBXzx]\E' PT<ǔyk7fkY@ `ȡlh{q‚:8FwGE8s]igjF[3N% n N *|JP#KH ,И _*I<cO.лLt y~0Ϙ.٭,v,X<`˿Y B_eݱ¨ " 셐t&66{U˽|S 4@4OQcTq(F()Ə!SfjAC(N2Nݖʇ^W,GnQCA t30ª Lo1 ij21-,]9 [ &' 'q9m&Utv7 ۇ`E<Ω9^ҶE蓜q+$230fJȥ@0Y r+;>rLm'>·4@ZeK͡s)qA H-D*HMFAI{Іsع}Dz,mKk _`[<ںU lSڋα@9Wx/@/eJ=g yuR}~3˷8 5\ ^.` < WvFWެQiz3'h1ştǍ*"l|{DlHi=L1EbEzѺ kXQMLy)9& 0u|fq(\}_!aT \K'_T*s"Va*  gs)9p` 90ߢv|a&6 :w>ğ6h Ѫԋ@I <-p0Lj|?| PZXؿ"ǰ<ǯSх[vd b'3{BM0Y) bI K\]-@F=(0mup9rw XG0-h$ [ԈW~){omߙ(/.ɟJb+)w,?; [DC gp²D2ceU0~*rD I ##?3۸a" S`TRJ?"E  9aŏfsM*!A8v 'JaD; {ڌ;lQW+Xs#@7?wEBH>_>/BM]+ Ќu}MwqB>o{4o!X&ϜйDޟ9}`XRqNnAjBҼA޶ as^ky`g 8-Qzt nl)-9y2k}ҁd'eA_N3tSw \GϤO܌3pgV:qw_/~w@5V.) HF{fUY R@ p!Z`%G#7}pωdžIB_-wIHK4t-+gl WxŕG/En١-C@[17w"R4;j2{=cЬR7Cj=&*6q- /`ҫ[S"ۀNDN*Bh}JOS5 AUndLe(rᘞ*{x `VDUӯq+a(8>1(۳V]g"(l؜nN#T/짢MmiՍW*7<{0w߱{XprW ޟxs}ڎF tv)vRwF|v'~yfx#_-CYp#Rڡ2bp O巻(1c֓ AI$ꕱgaDd]P]3am1)~; @ݿHcs?8 ː_\HL:<#z!˹ }ԟydehM_U&3+s?a Ž=eQ'ZU|αYOoȤyUp䄎ߠ'?@Ľ\xϤʄ{q߳nu6z+Myư !?0k9)]wnО0_7wyx-[[C(#ιMׁC)u(nhuP2C[fc@kNq7z~ṫ.L^*Ξ& .NMf/V4&%bSa31EME57O f Lߘ [tbe߄|BNTJ4f\<**)H[R+&Fm "iqғ0: ;&Ot6<}r~>uzvJ(%M_xRAo/^*1dujLМ?o+dtbwFKCk8I >τ Ϫ#=#JeL9cLܑp0`+ÏW֚kDIhIANn$ k1ҏ3j/(EQ<' 89b gvY3&ENA q&wxcDG;ikPN2V0dOD6Aq= ҭvLRdXc-+}aoܭm}#̓}jkl=;yL.C~$9h;q]b C<9Up 'a:P6]MP,&mNߢ̯W9}"O{zx&5y8npJC)&jӮ`mxn!Ĩih Jyrt5o'LQT+9a-IX8VE7.b>5>*i{fT37oÞK5EXؑ<>Z耘ƲMNՈ(ain[±:vd^ !? NM$D53Xj]yU>Y.hGUTjH魏W8MA]:hƁ]\fW$y\$יL?^n d>:t~@Ϊ;pr|ˁ)͜ceʤJV&{Wbh'ZHc$Ù禝l"&LG$TN)8 s@ak<,G ]*pk a{7IZ͡?9Y?}W}m4\W0 7؍na$VaNX:o:wM _ޠxH(r1G`ݵPKlLJIIEPlԉNˉ_'cU.b'7aGJJĺ9m9TlH?/F?01o1ZqʭOg0tT'uXa;9p(7z}cXCB#sSN8Jx&6@Yv#ڵ8aPB^ 2gX#@{\̞pѲ`05 sM6/O= 1g?rbp¶86?L%>j0ߨ}GsGG}>(ơ'e%om%*8(smr."i fKC0B,>YXgɥzX+oTRҼ.lrIr'9 "X({7x%]7A(*F[&, KIRQ3^li'0(R8{ ?JuB߬*Đ$ )pA-ԌH|/ת5cDz8S?HW~gjS l䙉w&i^T$t' N'O=8Qr2A1 ׁuyq(?zƠLuAw'L\T[ stAnEpᬃ AK*` Qk¶0wgT]#Vrr=V΀4Ó'O(mrluVye +&_޽e@]` zr sO2}yb1d$?X ? 0u)gLk`\613XWg??gN;d媤խgVY`\(6{`ō+}N!f5sv}C&abdҚ%A&)*>#y0 sJ=BhAn܀*}F1elze@VXo2-L |b̤̪:3KD3^NTb@NY_X0?hڂaVb¸]+J6{h~.Xm 7a}B~CF <^%0wI5n[/p@oٵYtO Y*hYA|9>㋞Jc~: 68{xw=] +؅ٳpN @\’q DPxK37y\*Gj-切%2̲!В|i*y?UnbZMjE1,>Op =kWp٬\ZqZNU\a4 fWfr @=`dFI 2j1Q퉒? #$W4ao5b_ofe&SwQӹFscvN(\Z S Lal9CZ)  S'"b]c'`3PE8w02z~]'ֱJ[g}keUa^sWk?`\d%Ía@ž;z:&<4G|[?diغ88l>eBGLа:Xͮ3)ɾuhB)=bL4+vWpXcSWi!&'\J^`\BlAꊉ.2 6̧O_M!Cv5'0ң.6"ְ%@Τ2ËQ|5{:`{:;YkON~Wrݥ{iS !@SտP1ST̈2&jY~?#|iY<O@OQ..b wTo9#Q=b頍,FJtl)bƹI+xBFʀ[*zkq#l^^wc>/h! Öώ9oE \&L#f= c܃h: 7>@gglg erڳ: 1k%H`Z|{_c7v+}tOz]]?c[[Vw&q;)ҭ2R@7'g';1t"WDSh%{& k 0(Į(#VB">>y;+i32pU{@a+Jν.>p=+zhl+ ~2VvԣĠ ; xT0Fxխ(cbF{9]&tqe4"jvM] Wع?@η}DAm"͐^uxZ13.F˾*Z[71kDrޚ~ g>"pOML[MH6NN1#每ߵ}.ru=e1<|̋},W~>#W'nL u*goNt NL;e$lN h|9RH*60v)Ѐ>oL?˥sKS1NJ0H`Ní\0nmth-A^ŗոhGN20("*"cZe#?D$MX1dn)@cvDf>/+\# E[,M41YEKc<9dUqcxׂa.8F p# Ȱz7`Oe簭,W '%~,xE̞-i0Eh,](GbZ=zzݐtVZQFs򋷽w&n!`nyX%Ô/9 [ӊu0f~i9^jb5Ji7j=w'XW{8Ehi3f[Ik#ҟ;I[ͷuiO&3Ca9]WX(7m8xm H$mjʃY6n_U慎i|T0Ӗk0 V:{hsRxfn:MC1ILy?/d{cXMn<ͣ5"E_9`;4@!g:&@P'8SYb1hNNCU\|sZT@lg1eR\mX5@0Z[e+F:*OI}77k#GLLXYU^Zm&e=UCNdr:0dy"݁@ Ebtl&C72]Sz~*^3ٳ8 |N$:=x./— Q>b8zg~-P:t-ͿčigZ V @sa'3NrVK0GGf8jzwF Lpa( n4`PB:wVL# ƒ?4tF3i 6u'WdY:52iyFZ=JS_39WzgZiS}셸P?4xzjq>ܩkzG];NX#ezlj kx7ZTQ\H}ίΞ;񚵠S~|W^{9Fqڃ/H`kGȠ?l_+6;e/iK]cנ}͒|PfJ'}K{=5`Ƿ^azN'60[Ğą~:]h'`)Gz|D~Ҟ5YBzˏ Cxrp=y]oڿ +q]*cEL#_z WY>2S99CzQߚY mZOTr߰/DFg5_烱pm}RcQױہ ā,I-p񢙿M9-%!ILa;\gxX}s]txJ5P> RwG>"VH:ӟWuŲ:s>:%:nE̒g8ȠdUY)uI1|f, rƣրqG9X?aF@w G$yn۪,v#Y)_7L25w_[7p՟k:M&9ΥY|^ rkOzvWMrqzzL1A}k*M\y>K׀_`퓟_zJO#Uͧ҇h?P}ԙ+R׫|sO.ց QNQx.:uVڜQUv%WSIk%x%vH._i`ّg5*b@EWi|߹+z[B4AK]7QGݝ6V[$-ʚi`MwV;f?8H/wuRY :a?Q^au:V|5PN+/Q=OEX{?T4鄻آYM?ny4BFOIY IDAT޳Oݱğީ[U@gϴ8{}hFyWK_gmi}f'ɞ)xvpx ;7:!%2cTBj_>hI?"ṿ/,h1O䏂΁xңWeĄ{{+\xmM6LXWl7OVlő:63~ÄA(Ѥ3`f?H56H'2"o%NY3sDIk}G)hs-/ֵRDO{>וॗR:(>4mj 0y yyLYחzHx{W׮oc5=BLU26/ \(hǀlWnhSMym?vW_h_y,U~Z,8دe>t5<JOA;<<:1KLu4kejW;U5wY $9 *xWyg];yxhR`  .i.e$L/s|$>:7[־~wzNP_㳴)vVSfYMκ>>8ܩUO&:_W?h d|4QGiWȾZj"0rjPS:z[ l}g}HK-{.Onv|Y,o Ge2xX#:g|mXdOO߇_sZiA'xgze2Ž"A=BV+j'vc=`%>tN7N&woUW̤xx)yAB=ΪuJ1R~n0.jA5TyD`Il%E|R:; t.gl"ӾNmlY&m/_Tk"r ߴ , wpC 6 NSocGeXzCPy{hE"tC]D`/,ey[tjbU>Lt9OF];H^\c'(.,2mq\Ado_'^.d yZr%/ظʝAnFacaʋ3WIU䍘v*H}{;J^ rl,DƥXw\xEuWZţZ3d@;\_RL@.ly/BWgcD;Ҹ(aZS}SM)/3R!|'t:Wb`mA-l'ke9~@SWGw~UWgg;^|Aw ZHz$Jq׈񱂝 `^k=鿳%^d:.>T??ky| 8Pw@/ݗ2#*f%k~򯦊3GwOut%g3E=hAf1S܉3 b{[ycz}PS,ZUz}(/@JK=AWYz gl5VE LSmodzIjfZtfܙ[@+(n bSwmڬ!q0DAJ ׿\pM_kq[oi1І)4 >YJe#;Y.gr]p3Z4U^4u5/M7t!LvD.a`_U6 ]'?+I"^G-A@StMІ<3"mdiAnj)/~s ڗTZ0<['tècŘ)z>|躶$s;SNrV5?Ln 8hjr.h$Ez.N\-cAy9zvLsqw/9LܩoՇSSZU.ȶIA~@Kr*f9BGL^ {l&O%^d`wX(Gf ~Vͳ̽Z'?n|>cPwwqگe:hKoJo{ޟ4͈w@Zkϴ=g(Bi@:qt𬼿#XN|f륧^<ַvqɝ<ՠH! Gx<>|.>;58R\XcKB=:{ K8pЮK{S~*وVl4!I4.7㶫v8&J"S~\vOQJ`m'yi%D8AD(J)%c#&ߴXc)|- >2puKl=L]"<9l.x Ъ#äf-ƃ y $?Wlb-挿g:W⡲ЙC3x'vNK+%.Hzo8عb9`uÏPJmdT۞ '{ҨTjN9Hţ*" %Ak*P&u!M:hXƅ(0ەrD' q.r@g:q6mᙸ ݬ;}==IG EA>q!g&4\iMs: E{׫cՔD gs#͊_ jJyucwWk.z6!=OʾUw^s}v@:`> ZX"9o{{sdi6P{;NXH~uP:>d<~^B_{fծLO= ^#8W/5{*iOրo݈?A w"zW j-6&Bfנ<:k 맞bND3k: MUZqK![3 E־T{[V:X4HzA:[b`kV$1XbѓS" 뱀A0d85?]L rRlSV8T$h%/ E_:ˠk:rLS66%x{ %!h( #z#OdSGQT>+@Aڠi.c^H2UX)u@ {=s9xm[ф"nE$/,B1|ȲVt]m[?l/)Ja/Y;.箆;|uG&w<Ν_#x~f[Fyv|Hw{/ s^h}CY*UB/_e<Ý-L6zYȔ`xDZXLJ~~!xNEo|ߞ]M=L?hA'D6gu,=Mk<35PwL?B_s7L<3w^jųg~(>\?4/ m bH<޶tUo^>>^ O2V2]60\UxeZk@2O '|F޿-|d߅n |w)t6j)Uaikf̻?4_r씧Qo33YIHBrd9QEhdv[  ":ei) •Gv 6%<_{mhE u–l,13Q^ ~.#+lY n!IFm+!!ʖp\I/=vlXwĒAf o}Lxˮ ݊feat8Qޕ, &tEW3D^dQ恿͏<7"!?2ћ_8 u+#-:0|rqȶPt˗#KKD"XIM 왻Z=N,3.Uʦ9~.=\\=-_hVD L5+_{NTlv#D;*}zyPzhbvsGgD6Loӿ>Bϼs|6yř_M bXСKlÅޱ: *cy4H_T95WWpڪY d/ y]yY^B;h>DX 8/N?2P_0Rz|f^j? jOSgZݯa?H!{ ĆJma&QÙ gmvoZgoT$w1)v׫'Mtڛ_k/W1=0 .c4fUgV-xෲQBIk(Sf]Kvc_6? O9 2sQׅe N<Ci+ylWBfXY WBWx4l̡'o& ZzA6C!~;7mIZf6mi~@`B/Y*ҘV쌨Ҧ1Ǒ%dp7Ao YF Ll}m{] p[lZ4kPwݍrgI:skuoy=y<",wAxbw8gJ*h^$yLXE'N wڶ ;7wLgVz!ӵL`}UjoɎ'ytK䲞QOsNQ6pbz^-%&ClNz_3Og0e^]|uJb6]Vy5$ų]24fEPtُG0(?u|Pwz h0&=^oKhHde9@gԔ*9:C@0DeYKgb+W+KbqjAxdO80Di-]Auytϕ' pE+<[!댇?4:mضb13b`Y`?Y-f v~(Jl gckxQe`q uNqwT($NarC4YeOg҉ LρEw,B39WΚ X;@tm`MwHV?Y4`FG<3u|k})3毚w0N?z+fuckbBlB}0~vg6S "y@̠za͸Hf6e&Ns$ c/;#?:X*Uo#z6A ٸu-#; >|F_^IT]o&x%Ёzl!HAS1L*$eWۧn^R@He+H ;o%KS$Y5#tNy?]~҅Q|4 p/lK\C%S| zܝyK0CTو|Z!YPדTF6u#)rc5.a&:o|aѶ,3 3B{i &`]֌SdK>mjHتx&Kq69u1ֈ#hJG d3o1џXD<!JbH/7%꼘NMlc gZcS'vO=ʄt~ηSl*Zt$F)DS$yNi]CE=:bvOI~LglMK<;]o׫;ܡHG4p?K}6X:|ô0L\"x1^cQ |ڀN[FfGH|r2@_ =/cL`AT^5/'?! a3PuB 2`xDىпwUGoZxE_Q^״(ն6Cŀ́=O"O4P#]:maR/-@٤1~~XP(t [v`>u:{$gڔEgHPMnG=gHvmH /JfYW6qMs>9*%8o3l SռVūdU L CFf?xhWDWNyDB^h#Y$r+Τ/ W#ߒOſbNelji r oBQ8NzC˞.@5OGu.$FeݧPT؂`PtrWő -[u갽3,) ;\Ƃw_g:isJD#ύme9) 8ԏ9V:`pO5av@Y/0[w5?'5`a&s}خ4 C ?U(6dqS"=1>fU|qs-R䭅g\yQ8OKSuta)Z8à oO cg+ک!~,%,S(2Ti$ } zhSd 'c\|ik1r%ޔs&tFf\b1Æ-NEǹ(tR 8cv=; ]w_ЄxDY.>Ex]qdEz ŽTKi8mUYU6tňJRZeX tT_s4$[?'E^zȟ8 CzDL'fᬔ3̠Ɲ*hQ:,mC0H4EV7Թ/̡E+tEq+wq0PF讯Ptfh| tL#* |0U:Iț?wܑ~["\!SjoRwT~W9XpŚ7g<0= M/U >0&^ë_^g+pӺuWT$%3o ˧yd^6~R; OdSfJhQk+)-e8;~,bT9a#%d 𫓧{u۝l{}DG6mXpN=X/mX9er-$Cb}X|H]<$b຤ܴ[[2]dU6ƅ=vƖ6< 5YHM\"+IeZ ?1v*iU?`gXXR љ !sӏ3Žt[G_ ]؏8&1 3Z45.Ϻ]=|9S&-wmOqq<'N hj`lp~[lmB}:icp4}e~p`ڇ8д0CPbY!jr553h!>Ym^c3ꐑT3״4(o;Q9MPL6=N_ܧZw/~$1rͻ~![1"2vgNRI =4A{fw>Ȭ 1#T0]OL8=RpLiQgevHK$,Yԫ^#[+5!V8e1b&m;pHKo6߮يGGh:[eȮ@'e!9Mʓi lRSq>t9lvs$Z6F_G˒3;ۥ># =ݯm1D& 2SHFe#aTul%Y,PKhzϹ{V+N.[bZQXav{/ Sݱ9e\|gxN9S?t` E˼ G;0ݑ'y:޹Atz_S/OZ͝49<<C1g<ϱ?:kl.LP{e]?GbM?-K B Pl}劎l%lY$u\Tʢum/U:AC*v@ &m]U ;>cMY3Ӭ Eޔlh#&|efnq( ̏vCg#b7k'QAi{klhWYˌ0tSv6_t&& Cٺˠɿ0"bʺ`rjG~b+Z q%:̞b4i!bs!X>r\ Rm_ͳMTbZHC~?"GMtal y?*ײu LKC vfL\`K0xgڡ+Ȋ ^g'WrMMۋ[ F3q ![Ga0 i{"dcP>y:%eyD82uBS/z*=zVYlMq2-]|oO$3g!Ѯ1t:t]~Thv3ygD'|> 2gd1;A~]>K ݿ bIozAY_8WS>~N5rJM%0n|OXX`ͅU>t+nld(_f`G 3Cdam|9(ÏC+mP^L]ζEEw!xN;ƿ1aj 7Rt|*wzڻ$ XQfofh?A?.2~zV <EE$7Μv[plvؕjv! d_9r9sJOcJFX޷?bknj6 z/q5}FO>H$3l~T8~'y|'{A!{u9|U`7>.PylByf2)k Do2ytނXi;D'יV/a˟2k'X n߳tpBSq-jdlh[C$(Q(\m,!mvQv !}Wζ{Y6Bv r[(2ZO<]*cg:1IHuORmAd,͘j~hSǢJi&u!jڀ M|!|v^8׫ug+o Ȓ]qng>|U_[rંȋOŎYtytz*\RHW3ꖡm.|A̪ ByaN,eMg"󶺻56؊.$@>]B7y+lt9"LSn=wcnЂpcmؑP ?P*,{,k ]lPù-qv7a l[OR  "0rxNl^݁w;v%wrBy'Ƕx!1 ["[>Z$zuP:Vӯھ)|Pĝ3 +m\Uh= .둈f4Ÿ1;|āYt_jN `'VNްĬuƋ-qP6k>Ef)# `C S6H /Jv"<uLS[uF͑&[SF/ψsx˂+`- >9>)MڀCict:;:iX\RFX-Zx8ߖ| 9RsW GӒRh{'3NK 3 k&p8/"i2PmhGSCCS`WΛ_%uQ\56;=.t\I+fRPUYgD$Ѡ_=($+v 0` ΩA,w( Hdes)qGXFQw}\B|B'—?&`F||N佷}H;2Br!x=M#F!F8T¤e0Ж,]q^I~10H9(4̺遰eFrٵcM$j' ,7COQm0*miR㋁G4k$ }D;@Maϣb5x`"kC g::4W,HV\&]DOIyV0){@U('=ps`ϖdz q] >q]48Wpb!P8ndЙC[E24-fO}v N-V 3L9gQz7q_ ?6?)BdfT0tghG%S+R:Ju_Mua w٤Ahg_#Ξq@:Luޕ<3enXwjgzw}BӴ5 ~-n wM{XTwu'?j!ur@y )w*Ҏs?OI<`99dqC!N~1F-&8KՁ///ZeF$G. n'غ=ToECxV3 :vsbȐ/k R~Pd?lŰaX`>D`[YP:˂"?f\g/N-m&FOb'$8ޜ:rWN _y`ڒF&R%u9*i 'mp~[8>vx?'_t[TIK@LWĆ=9 \lVs&dۺq(?bk8>-ӔKd*b:w%XF66/J+8UȈГbSł'L&_hǖN˸Xur,ȡW70gp TW͎EcS(kGίZA KI,I.rd& '䋶^82[Vւfax_D EE|Ã[}Mc$8A='zZ߲fM+8-~J _imKjkPXI]kmD^A t:&R ,AZy)Pq8ӑIfWvd k>y<mTԿ;rNd@s݀5XUy]pΑ^.)vCu6ȃe˛z3F%,6KM|yn,@$[nͰ.ÈEgak~"!`54HǺ**#NHSB2g\h̶;AΣ&w?NW׸%` (QrL[(>g Wjr& I[ݮ۔WMKXmC`4YHRJ&w*ҁ&3&p7s}6P=}+A+fqo£5[%6^f3$U8wŎ՝$RORMK6Są7*OsƖjW&w m[ڶVao wS/t6G:y=MB|J-vv6 }Uk[μu=h9g O&w$3=zkk0bsyX<"n328BL X[h9->#eFl4w94N}<1iGIq&,O1Dm vl8% HjeVSqo1ɥAhV &]Pq:q=4R_81яYW[9wLS^]{惈Q@Xtqeus;4{C#_6޴%XHg>Gl*]~zx_ˇ4ā?EzPy<8_M|#8kz HDƌ 5SdžoAVL"1zk0xydI2Eu/Ki2L;Ű3GѶۗ TVEp{&rV\)rlVO913I"Eh=٩"Ÿmr'#[Bw)iKfg[2Z~k:Αbh<ۭs|_r&~] "xO̷'YlC8f'iL!?#ÿ<ɘѓţ]ۖ#OGJHX*88~BN4Th;lK6emn]-\IВA}Ö~E2#@ܿH'V"zu҈`!wbY'-O$H*U|pjk%ݘuqբj!)S\2twW}}@o#e7Z@J؅U_mr[9D̍V{@+W oXP:Dcy+@آkU!N0I!\ AW56P TNuV3 vtEm3AQŻ IDATCjWkSys.Vie\UUvۀDPQ !2{Z.3|Ȉ>hɵ!@ɀpl𢯠B\wۢv@.#+ OYoʜMok|KN; )+B,:"gx~蒂%djȔy  vDfѡTC |r)7 d :gT:F–gi0X6 Ÿs9>!ۺ0gSv9xĴߧ7I=hRR:lHM Ep":W/9.+,CJJuT +oyK|oųG<$t_6i!+nM:lRȩpT$bIk]! SA ~Ǡ_vݮ`.ve"t(UvxgH(Жz\Ў )׈b m!ߘ"e3Nٔ_!D}{qNߺ]{x9^[|l`C]kђ4S*?dC5" tָ#*e9S8Mo;cdedV=ogGo|:CL%3dm7!T@%W3>(Zun"?wch"d=4ȑ_B 'O뢔!YMWxX#e_8XSP3` {oYJM-i{sC5ޘA[O\$rW՗eiFۖhXmOLo}vFw҅(^cc(뱃E^ nofz`UVm!18+*C )ИYV +._Tīܚ,fnҲLI6a q/b$SJqi`#UN[QBZ1ﲵ.^db`BW$Gʮf7^p0M-h+XqP,*99v&מh -\zʩ/rIhݖsAMKZ Q _ıo-3ߪ'z В$  j<;߲pKi#pG4)aC(AƃM!$N1^$.8!XIP܊b >/ʰ|S.Y#@sJAWe4- =1+eI]iA5v,ZK€mϧ`"ߝ/\G]}R[|9 \uKH\H]QIcl:0HlJlko x|?tlE@1aa |LPL=[Goì`GIKr5%/Cʦ9Wi .eϔ|cY WG tWQׁ6aV75O]c#*Y֎-9mΕ`f=|]w7(lbgxbk X;Z[0b]<'dͬY%.0 pe1 &3ڲ16"ɧřPMh[,iRbOaF4C΁>O3>hOMg x`\tut)D&576YhvB^mP[,xlA=˞]^DHl|G Hhi)iV]mv *]jHqWnGVM'ZU2XQCRZ܇>0Zy|09.vY2/nyl|hM4%(,%u^Tڢh-Dxᨘ"Q^Yp^:T:Z4 4#,W1;&5bKh0W,))v!ֿSβelI~y"w\7}^!i'9&m?Nvy=GLC d Q&R.Yg*2g$qI[ڡ\h-rr1.TD6> x*LRo[HK"ZNlJBC:5Xpò+)ԔARd&²3\"ϟ(gݡKz %$_g̲1. ez_\/7LH{C\ǣ(-ߎ)U}IwɄO+M譤`%ncC2 vN|`Cf95mcR^U> wKw=9_'{eb+;8(k-_G 7)B\oP܃DS!vDN9O0PIMt o>]x;+ ?-IȩDIkkPm@/ܚPBtrJz3N9v9-ݗKGdgЅ}N$_cׁy]qHေ:K>tG)BTmCS 5}ߔf\cxlMEyk[QF2odbe4Y]l6x*l 3[xdĩjnW!/t\;t>ETcE5dH8J *^vLnkҵiի\($B9e3- .Û',\%¾ZIai䭧s[ҫǺV^EJy;͊l(K`3{؇E|Dz>>yġNsѼ45)oٿk[+#=oY&> f&> 7Z.vIi>TQVYc?NT9D/""4nU :\$Rl"p| 02IG#!՘:M%-j̙y$}6M/+}l<_1H. ".-4ȃܦzn>S$Z%elyy" "koӧm`NJ7A[ lx)*5%,?1pDR!#e 2io|~+1&ܤH Uw&:cf;)cz=D\m`〘a{,Ⱦϴb?,Z~=o9?S+< ן;VTlEZgl" Q$oj1%E,ґҽ,"pl AXIAi.L/:biQpv+pt=m-cwI(29V熆.~<i߁ 6z:5Nx֊rUp^9Ӱzf ǒ0'J@2eӢ6o Nm4|Xj{"h8pM0WhJ>T8=(ʧUϨԐQ0< cC..֖1z蘹W1}1c#&x`<Ч~;X $l},dΰi `U2+fm. N&Phuɓʆ\O1ȰBX2:G%,i |p1^_72 lq̶HM~ŋފsOSȌg Vu p!34{H*Gޅ_r>URb- o{"Z{s ʬ6.4bSrŜ83:@;*{e"׬_^KÙn_|FN `oL\)@TZ|v}}2uZ•HGLp6m0 ;m+9;~|Qw+S~l;v]]W7mI܁C;Po8uLw֝ +#4GřI/Om^oQzTKM NZ׬ǖ`VS'; @ɱ^Z$R=|,#˂6c#$\Q9I2ioWcTGcgv*e5-oQx/eܘ-c 5Agd- &L ];Q,e-TC=#ˇD2~]%;c9p$!Bϊf&ݵ!p]Fp .*L-'z@CNn`о{UViw{S{7ӆ 3@gزhvU/%N~ۤcoEim=v$1M2QYeċDaZ*E-qSؘ|I_jC9K̠R 7p :ʒ`pdh/05F hTTpݿʳ#M,03oGHH@ɠfr;>88(o[ C#5%Dڣӈͥ@~L L\ gz%9GۏH0h P|ei ]鴎 <#,򹞀t~rPur-CgS5O;f~O~Gt#3gߣREпP,!5_vBGt&*>Dp@*q-8(X8ú-Y~P H 1$>N1I5C7lG-ƇŔ6 +:וq}'E}-EG()dH7^˥%di_;ܖ)/am&iN*iKE͞(\RoASVmY8JU5 >i3Xk2}.DzNy%ePm LH '*umlŬi,U1VG# f+/4[)49ۭ񺞒Vz~sl.6tՕ3c^ŏ"+|?aOYǕM u1`kѳ(GSJA0}L`}9 :FXͰpr"AcpǹbV ɺ89v v6dr妾d_ eџgG)(*{|nῆ0h-XqĦk> ^N?)kڋ EFj̫6ip##{MuYbھ??2Y t-.xX&<[\da4HkSc1F [},YX@+~iKCkۋNl>z*g-eWBҶ*P8-02"_e= ް$vϰTiܝܩRjn?KQ[bZ2[|ԩb ͎7%SDsjW:rdCfmZ}y}{>~R}'v-t_ y>u5ϰ52dqvpR5زC53FH ^ 4%FxcMl~eX`!8)OmX tY|uUx៥t=\qm{h[N#m7 =&sgyޝVDC_'S8,\2eً6O?q&|W9?N9@8X&bxO? -oۃmN[ú zlaFmIdɌtKrJͺT:(+cr'g|"0h v< p-;'s%;h(Hy{iʯ* .|_: Fj;z_f#S7 C .Y$ 4{-/d-ۘ0hg0BI|`8:DhYWl  D[)'Na ]vhf1/Sa ʶȷ7󡸐 =+}+B44y #ő&^%>P^7ZV}|{QY(6.*zUCWlEֽyaZ^HPvx me.уzK94q$ߢVb뼉')Oqy٫!aןiWFDǂ˾tIqGIHיz,5_WIHI'n$ΙԉmieKTaڎP{8bȧU,rs.}* y㔻aygC k64O']u_`4B?7=)QS\hSygtʑ2 ><7&l\7YCߔ_H.7e}`WPLwOxWlÏi/gHCb|uə\Vm*t<-# Uo#YN3sm\f IDAT;Nl\Pԅh9vŔ}t|[QF+fB66H/}{,IKysF{ (R`Y|wICk]8RtҤ~@)܂}'_1# &ذDgkqbbU<ϒʹ~o bfedL*_.h΅v\=hV8!rXڦ%}?P gd?`i6Mŋs7A${85ؙPǫ3 U|䍼 ,y.Gm{&)g}P{mU G93rS e/Mqhz)eiܬΝ(OI;06eUN wS /T81i[C~/[.gλnek% %-*7Tə#BR>i$"ڑA>lÝCn6̗2rm8qGlf),T+q#/d"8׷ x atP\mfe3 966<88 C{^͘O )3?pVWJ" |ꥫ;0n}$=ȅ l&u@^vF`z>EEP >h]ZkiBz'|ƟT抰_>Rt&vt矽-w0O^gWv y3 n}q /F669sZW-9輹 {<g|ԁVlrDs|hSD9U CV8ׂ$8BG?46Q8Z܊6$L$`9istv֑ y_uM義K>AvjuL/-P#xE*wMsy[˝237g^O˿Ogo=.0}5K|ʩ7B+_:FjIUn }ǝ|ٴV;mM,f.gƮZdJ?j/|\Ig~b]" BƂ:`unZOA'녫^k~ n=NmA+gk)X͝wbSw-k)>_k2+UׁknOGjP3t)+Aѱ3ςh)(l=.`7ɞŽę6[ Melå7ɓY@lų@Gη^SVnH8_: DKPD1LA}m# hS.}1c>r®"px3b:Xƫ>|0unk%I{d Fc>t7Xw`Zc-MHLϲ ҹ3_S٪ܙ {F H&=P}mJ3s:*eOV +vf ؾt"ۓ]eֶQϠ{>/aIfm_nO/wen+6F(v+>x?1(,8\R :9 rN5"~0BC/^Ȯы~`W#W3W/71+@u.SCƛ7m=rJ`Nz2^Rl5.NAOmc]J6\˜GY9{Ǚ؅r~\GZ!k]&>t &Օe4VlҴ ܟLe1:%'Yh، ^UY\{Z8S#&iz5{m 6qHc]5? *NW`EĥPװ᳾ ZF[0rm~YTWj P7(@K#@9뎒q 3{ȍ+6֜l͑k׽{^͉/[^o6Xǟ_Lps9a:Vc=M)z+M~.ZWchb!܁խZ98&?8_9ȚZ/s?y>Hg\6aĶ!}ONkTb&4 |[p1ےcikyk|df7a.FrQq2RQ+J$g_)S;Yм+oz`x[\FzOuIJW鮷G@_5;je 2mrߥmZT7c]pP)8 s1ac~"j<}B uW}o] \qE71}.#̂-E6ۀ.千`ukFf{hGĝ !WXwok>j{w7e;PyFzƾBWhG,eGlY\ksEy>؍6,kT :W>zAGa_ +>=SֵsJGi۝Me"N-Sܬa,u/MF4HCaI!XGGT^+漐Gc' k64M4|nd$G~TV=@^x/Z\m|M!]A0Q|\\(.,Kڅ>¯ Bi{yјMp5 ?>Y4>1$vA4nX}eB=/eUKhW}c܏a#q'VN~U y !/"wZ@܁B#!Zzm; {^-ݭpc3Ƒmͼho5=~IG87rK~! гЈKϏKf8vCk79Y!ek>Et [Oۄ_ w0f$uŸټ+@SKډV yZLph8nU {p@_4ٳ_ۯpP/3p5dbVP(W+#h:zqOꭀVϧUjchSw!6io᷀ۛ/Q!uG|s[h@{b<koyF{ lq+~('9ϩҍ3G٨Fe v8v tW#r_HkYmA( mpgFKϴAfqjİB}^\ۗk:IW&!bݵeu>\\ꃿ޸d >Ԧ9٨I(ޒxvM j~F-cn[nb5:Tgn~)wg5d?U.YW6c|ٺ t wNiqEښN!q$N#Ņ偿_. 0'oGWawɓ[z~B$ws V$B,8Ի?c\%qbĥy\o~LTf}]&Tpe~M=fү~@wJ簊ɍsLG0Zą+.|M*.= I{z7G=ZM?n}qo a$BHTm隑zhӈfl[x*+XuȾWX ~,nޏƃ>5l:͖Ϟt #qݢQ+tEЗ{K| U~F<7N.uޅS6߉Y(urR~/˾KLC۔xG{K1OM]6Gl-#N}݊h~dO I˯Tܽ*CƆ)i҇=cv7sٸnv,aZrf#84K=suk/#/Kѯ86XCY Kmv6r-敽y.tQ٪ai~(zy`e'Hc:g]jP:T@{^dӹԣi|c'{#cow>5Nop!@޿ Aݽ_kGGoSZ߼!29 γs)O=^5´VOPe\oVMr=w382N yԝD$ezf/mZHkXkFO.TJZ# " -v6b/4[F94h]ot8\S~xq}QλWo1J;kNزL Q, "@8]we#\ɓ:|W+nrv׫> vnʅ2ùm֫^z*ޭCѠX^=k6x&pR y؁~frcoV_mz//N9jwuޥ6M?ag[zVͽ3=jhYS+YVJ& 338z#_ÿrĤ>&[WŬ 8Cr (Cy920Sy=\K+'Yۯ:fj݀qʜ[Q#3x4vFzq1RDQzں/#Oѭ~-Q]{TWr1ǀ}Vxw,zT9oŃK7!jN#5k3)k6m7CDxmp|jW7rgQ_cܬWL߹1"ŵv9F>MSxܗ>㜹nCLnZvݫ?$:3mZiOɯ7ֳ:|B(#t(7ylSgo/Pn-ηj; U!U1ߺn+`{#s/|s@ל6>9w»խ:z[k w_+c=wP+\įQiȀu?IKјI}LiFrjo1#'#f/kyj7=VҾ?Fۥei>mk̸Su0cұS9[5ל>'lV/hu2^Aw^j2:>!/pׯL8qdUĬ{/p(X~ope+j QLf˜0FZCOw\+,AңOOKmM[]L'obBSkD˴ vCr,+s4gq}r<=qW|;rOOI^$9uC| xC[gF0_c*wX:ľ4] T89 KS~^X&eŗoٯN_ѱD?5g^qz_ڝEx4;?+̱؄5B텠2wp _]i`$¬bK׭~yVlLw iz$ؚgx֊H-Z.*KWbd3L)5ŔQĎ־1NxVg{m;nz:7^ǟ-"bǨ&8:0KvGb(/ jtsW O?p,ZK%R/~N65}9]519gdg9whZi.}V9ךFHzw$&::DܹV/_M39>e~j+F~fqnwd̆Tk}~ߡݬuwHcm&C&sLq[0šz\gh5\MJ%p1'o#>1#¦i%_B9uaS0䧧m^H=QQBw=A;걸xX3IT啳{R4<"Zvg_ey=SlstՒS3Hqi}l`) 6>KͲ~b)XП|*>y*Rb˦q<N9{kf$7}nޠKO2? psԩ"ZUK VbP$?Eal7нش >\jYڊW[^hij">Os_rU9';fgMoQ%qA}i o[SN8+]Z/yнk^=F/܄*[@59{/WWI]{Q7]Qms2C}O;G3c}:W3 ѕs]=Ĭs>v5 3êX;c8:U8Zb}nj0_5_1Ҡ;WIئKl\I'v4iAպŏ$c b#L_8@qqN"SUS߭s>1c]}wEnp)0&x#g=kq:l_!I"_N{H4jv+@=ɧ׷_2Wbegw-!l9[ʎg.k1iϸ֚MޥEuOzGEH5>@;r}k5O 2aF{VҸ/xs_\eƿB&xqg..;я/|bmZ5&u>7^ b3簠+'jsj'U㲛n5Ts/WƢ}0xbAvuX^r5ܣ6/FT>?0u?׷_&`9xփxOAބ+&9r-捞z88ȱp |ۇ[5{nmm_4Cen9_BhwCɧ_01Nv5qVdV!}+7F,هFy-n01}]S׭ȏ/i:zj<Ϫ76v{w3nC<Ӿ|&߭]6]o1: |ڞ}yyQ_NV|ʳsa}%cEiSd=>aiDH/?}i7;F͓pDKDBvW^7jj9%w睪xȯL~z&EM5*ƚY&krҪ7"2͏\C=U=SCyw7cKy9~Ha^?-pG-i}bVUpr:&8\\p/|vJSz!ZZW_`>s7uYo<}$^M95ڨեCvoWy>9]؛6] fy{hբPt!wm31Y'+SMc׽DŽX5.r =Nݕ|^׸sNq}kR&@G jJ?hɅ^lA=i >/*o9>!l/G2{fN@#^tP)~ӯsO{-el$;vUhlQSld+k1.U_d^Qsɚ& "{ܧ!n'l6fꕮeG;̟r|ľ_pSaȾJ.Fh,bԱz0Z8]^W.s&k\!"I 6Fj~rn/rL[ R*?r'z`W`OdGSNS+i] ٞ>y&2/1*>jQkz9M&'ݿ~kݑUqUlxpeY A_X ߞŚ;᠎[]WtH3»:ةa,bDL}4۸|#ppZDqq.DS_jz~SoX=ЖP8q쌣:q*lr%N_hj93:8{C*_W~ F6(N4ѡw/"Kond|`"Ɛo|'cCS5{uM6k!E1zg@5Kr*v1QY}.lS(@OOnns:t4dq?H۸0*`}#F}FnL!S Mt&~P8]f}XF'wݧ؜$7>-ìTCQ };}΄C俵kq[j c[~}P&m[b1 Xa&4"H2Y`sMQP}!v6fNk-jt 1㛕zE)%FJoW JMwWVw6b7>jIEo˻5Wu+׹,}chD|JF8g-ȶOuk)F իrSzL}d}BtMoTqWjh9bFF{ n~V>o}/x4V$+M{~0KOl~e%mN3N6mytƶ7_'AJǮd3-h6kX9UO,P-S/P"fGBd:ȡkm; b}MYL^ϽGS{9$w^y{?,Z$7桁81ZלT]o3xG)Vkc9m?O4/˅כvPoSXԜ5f/"p\[%ECsI$k睞V=8Hto\>k)ʝg߲7vJǺ&Ds }+[6Nlh.qF<8&!J@P)Z>k')tEFS!E5{ @=-K r1ޙ7b87Lki4rT68n<+'b4n5s$[ǨP+|~^WLO\ u{"J޸r.]ջ:o&ENncK_.FIw?>8e͸b0G_ <]#Xҡ5xtqsw~t9IxeHUօnm;4g|:cOz^ŷ~@Rc^rýj,e"![j䜞œ,&ݣpi|= .ePK}NqKĪ?p/wLRB'BSc;{8 psa^'"?[o_ܸYۣR&o \%[amjz"vzǕfbK_<+ CcM^uƠW>Xg}?4ڧVHh0_XW"*.һ,m6/CÃærAq/~cn]`ʤ\ĭz:/2=l^Pv*Ҟ1 ^v^H-\ڔc;CζδFWNQ'=u-[Ilԕ௅p;N\7R[Ȯ)$ko '`5_xIeu'[TPDOW?p17mi&\M}}xqyX}\Qo }yH$CysXϔkJ rB[sa+_ꐵP8Z^?|Gl*…- [\'֤9zj2ɕ9k\T#8у;wȰQ+]:撶uɬ7d m/}X1Kte9l5qt| &4su}ohrf"bB_"(Acz%_rM'z/İVzaS[Pq$%d¹I}c_\|lHmC~88;kVygؚ;WaPwk^ obqOK&t}f_S'4ϵlp po^ŝZu?ҳGEn=*4|Td&>k~؈27c V118h)nx^g$d6T&~Qk+;*#e.ԍh%܁4r9{A >>=bclkG`i|h˫ϼ# cF'q<_9zq詜}ÀvַN:&ξ/5q[= [{^1ԧ{~r xߔ֢^#vzfӫ2rڭPU庾8pص"]yyIuֵ1G g87 Q\˟޸lÑ//^5\a LE}nbF~t dCli=pCrs[)7=jzXx_z1羜̇^O{2/h7=w;`;'.-Z;Bi/M"e\gt=m\Uصr|>}{3;Z]uj(!cO &=:`JMQ+%ꐾO<[O`ߙ/gw%^6s_qesH\sl-:uM2&Oʏ:AzSgzzA݊սKm3:)k~ign_թI_X> e8[c6y0~5syKw7 } iu>{uĈ: [O1Ȓ}\Zwh3.?Su}Cc뒩pe3o T%TKDibOi.У!\^X[nH%m_W[Xǩ]9ZvsGYܳU\Nao?=ԝk'W]u wدUŋ>Ǖ}~:7+th.XoC[緩{Pvo:.{C;[Spޚw4f|qZLg?vDN/.\Shq$ #,/&!M5 '509*+@>o~Ym\56ގD̜<}nWz wzxl*|b͡_va]X1+LL"'8}Y[[WeA9\'ԱҎƭ(Qggߔ~iscU}fq35TWv#趆bWwHQGlGFfѬ,jx>ituĹ(r[#F?5?j.zs_o؅C38 :ͧ^,_N{V$L`z{)L.{8hd#&m=Ra|[t!w9vŷmmՇUP<ԕŻRI[p㶽&Nn2.^ܚhNWyWW>һt IǕzy: F^ `'my.8n8jcoGixG45QD}ļ2uIZ/7-G"o_{RCݕO:V\]G.Y\8 wa銘,O~4oLg}6B8}|+A1\zLsM/A䳙/ ӓq++uef- r &R'Q88u8,o7}"k=7"%?X3Y 1nT7F0ŷ7kmYM6vYE.юcQ!󥚂v){1Y"#3kFb5'joo-5>Eo=oSMX 5>6E_=ÇUĐ|+Ʊ8U3*{'%<݋u4KnRF"ەy/؍5FyRZF|Gsgx%-9!n-\?]ńK=/qy3PtQD=m*t]$~a4ZnHuÓkom+Dڲy {D~y@$7WgPל_|3@MA in `:TcM0 `5f,|z|ѳxNG턂4EF :O "T o=Ve=gqͫ_Z—r8Ks'_7˯r"HFLױ?UuFܛO 8r/uz|Zs Mm;=4XR[6 Y4'9r>O}[IDYx7ET- ;.zۇ#>9[!\=p+Tt%S g i4}Z o0~Uߴ“-s/moq]ȹ)`wXHk尿:qpubJ7nn6TN+4&q[`ϒ'G4!ubӽs$Wy=tpoehĮĤGփ,칟@沗DcW95/0/k;!^xyĨC񈣽)| _JE~=Pmb9'韹8_=D_pkʭI0wuO]a:mM2 oՄ!<CjZY+42߹;_QG uFaخ}蠭=gn%+$,mܘ*P6`[x7EI ~Jy!E.9ysN/_T/)R;s/Ws"2}Øصaz{ ; UF]*wn`4 Y|+j9`Dnv%|jz5Р!{Hc363zq0_y=9fL`#ה*Sk~zckȽ1֊6Dʮ^Gew|OЃ8s2Z5\Z;lV|߮u yCJ6ڌ<ɭc%׊X/qZ4PjN^>lwPbeO΢˞etE,$}dܜ|+Nu oܱip.B n@}@kmڂu#0GM'J QKA׋v^ 4v|a*Eн# ׂ-ʤnxRK52K vcY.׿v^2o}s ,^r'M]5mjgƠuX/Lf/skĿ *M.wĖaE“SIds_3gp`$^˞W݇s?xΜW |wLoKNxȏF*'˪gX 7[~騷㺖˧>W֡aDjjWf"]lցW#Ձ}2#5̒=/_%x+W-u5\zn9AIfX `w93id5ޝR\c9Ov~fws(m{8Ww9NM$A˞ea{Ybf<> EGc{A+P:g-&(>9Gx֌ݱQN#?X T05siZ^fCq\oXι2xV \o4E,|8g^m[t U}Ԙg ]52O!m 9ſz2Wcs3[ɑ~4[oYEd+qh{Oڥ_HgEo.b7h樷VE܉ߜWǏѦ?s,/tTDCVrR]1Sƣ e!i\7|yEs_-sň9XQHGa^Ys]N]r䜘9x4/mmqɆ3A-vE9O f;Auek- h5Bi|*W V eF_8l?qF)oW6ۧ0ʛD{Bqƙrz3(5ID']S=|ХxiK~vphmiTwSIL-`}ݣɍ&{4'W팶V-\%pNrM= ˇa !dԔz@nh|=. ^D5낮WK =yhU]oa_s5)|;aQӯb׾I͖&M3iеWo>޴Qc5Xrn,~Rǒ8>mZ >y:V_$8AtP^q*ƘE'@L٘D1HM&.}eowWuy3j!%{XiN9Sc)K&җ1> QBlaR&ŗGޗ_ Uԉ!6mͧ%ۈ8ūnGY;:,Z?y.UJտ$RL.?z:wF kbX9ts7Jm?gQؾ:R86tkmg9I1uod)0fSG)_9ɡ:ߑ`4 Ng=IWtr_躰1{71C3GAԫ0;n%G4ф GS%.>BSVqʐsQy~>=Ө:=Y >H:t@o7˨$d@K>.Lb'ڕιgBн.{ū\kŋ OcQugRhrjE]qqWki}񼌱od7G^bW_WNŝCKGFBUŻli;0CO_\/}S+n\li;ʳHɝ92lCx?)~UđY{sљ59L7vW-Ww~{mWszj).a6h; wx y__qp΂~X|mA_oPo|㞘+p/ĠUo9 A+ޫ9 NY|b@ }zl{JVuU, ȝp/UHfa}J8F#Vk0^Bqs9J2eI"ʹxWp;P¦Os",7Gɼ?9׺&ݏq\~8m-/bIޖ]kՙ?q>ջ9W* 4td9seq)uS=qS3L:' {E,[klo~H:}&brA0 aqX, y!BvLh{'ol8 it}ĝ׽N`v3q),7_ZIy"}K>;I~|m†ebw[kEY+Zu mͳuZ'isS\^*I:k=gXH0$9^:,# k*߳~J+9Fk~yUv/Ռ&V*yGǖfˎ9|aQQ}?mNNn{#V20^Σ]{X"ܲQڼ26r=Q3v~ŏxtW}ި+}31& }+2m98D:~p6S.GC{Q c{~ۅZs^_P6˴&˜:xp?_?(LV>qBz q J}p Y֙]qMcP\G= ! V*Եo=jKk:8pú1Uzlb6fb6Rk=P.UW,YpMI"ē E)vؕS׆r&z1ч^c.cUZdZi[11erf:WK՞#칦-]7o}p[͗uE[bZlN64nXuTx3[%8( qql؃ ~[u}pzx韸_p9˲cT{fk$3vcl+j ni$ KAguL>qǾ3u? πHF ˜M.{K 3y͘Rݞ9\~1uql ry +bo/R@"ah WNN"gCS^Lu.˞=z`#U3񵪩[ujd+Nzm[g1;*מEeT՟cQ{2ԕal,+4;|6g|-mv3~_:qAvr8|9BeGzsZd 5Ă;A+nhk.٣8*$5'L2 M4vs@Ye:/Ao;fK?svf6C~\׽PWP~\{0 AO 9yL^~`݃j\aΨ 쎥&b[C? 0% ]79>'q|)سFhlcV+YɈ4 k[19Zo-e%?#sn]KgVۛDB:.gs1>[\zK?qN}aZiP5qs|y\:8Ƭ/ 40/nl3:W IDAT;P|ʼnmֈq*Ѳ/"ҷ4վOg;`τ˸{&\j^l q?:/ޭGLBh;s巿'i `ݧ&ݷ֟"NX$,Ol0\W{nL6bVkV9&"RXƈ,ppj_`eͤ&mIC+zXaCM¯H8gjO 2gc&Vg`!ͧ>u u 0o Ǐ.[{H ;5f21nɧĠ Tbi\MXGnPۥXqfNp3 ^;%Z伱s?C^sAkDE紞 #{|cc$ƺ^6Kŧw4`BY$ɗetpAleZXz[p4:/Pof90ӶmDS| Go/SmQt(Z:oٳ _U"8S1m<Ѣޥ#cdtLiZ 69ܣc:NҬwqdŖ{(^ m_0c\bꫵc5eschxEX~]KZˈKAGx?#bY8h=[kj9\o#5l~quѓ/_N Lx7"}5y]=8s `K 6ɕsPsxU}6b~9gq wbaML3yKeԐ*եoqZpk0%lʏ4眸-ӷb5C߱GN8eiw;pVVC<ML^V!N7ăZ~o COls|81?x Fzj[qf;xu}R ^^px= )VZq=CS}p.n.+؇ŲM7q$༩KEOIeOR4d_ԝn$U8cp_χ3Ib~ߤM_ג9U  7]ɾ.6K7@OƧnXY4!&Nza5xu`1g9ZksZ'%JRtu6deY']^ƙY_K׬o6I'| ^Kb%ćHFQwѹ{dLr.pm?13(܍Ź4 !?`\/ ~ -Hj7ފqg^cDH׋-53GͅPr$.Fj`lݜ^krvNھ Qh^E?dXh{R1+:02ωBuDpT>˂hS=te <*5溹S|nFn . {b-4nL:G%wݢ8mS#l1=5~YӾBdYܹhGr@vgYKdVI,*@ bdu{wqf'#ކ,`bG#ֵp&Ip}$[2R<dPc'ou>TQեs)T#9_8F Ÿq2ڻ.{M(v?GцCaxl:˦CrѬ}p=[(A| {lqy p7<*|Y/!游Uk`iaĬ ޹693@?Yj źu//o.w){Қ5)X#Rv<_1&Ncr?,vxk2u|Ήb$a^V nx)Kb(Բ!m~St?\Eϗ:nT޹xq)۹}@I+1xE,|R%n?DMrЈ^'WٟMl@O]\/yHJ ߌ*UM|/N̈8Ί;0ι-[EcP˺-98⻏l~Yԇ{=Kx@x:K,%~Α2g9N2sgs#|[i gy☱ZM}Ah)`xlٯ8ynsJ89="i9b yeu'u/x C*yem7sjR~WG)2_,9X!C7LsroW~ ='dahNqOkwtB_X#?,ٔzq1@ka̭?. ( ٌ5.N.co.h.} 0 zutʗ[_MʓYP-Z'0q:?!Vi0>> (%⪜g-&=rC1떿@%.t}eRYeh "Obc}?xy'#(Ogr3`~3r9ΪSL-X!vdV#ƌ?;WR|a8Nȫ::kL[ΧxVɍ-H6{LݩI_J1հ^Ul79>촏FI wg^Sw%#To,w׾ps_=[vm`hΎwٱ'Y:ofKqòby_wYfNf$Orq6ӜޓqiE>Ըt*:/e:۳Cf ~z P㓗P!{# sW5VK*P'8⓵W[^[BV_QMl.e,D!|j1Aģ7vy=He̓"y1k ޑzlƉ+01ĭTFš={TiI?θl{fNxҰ28VBdƦ]n6l^} sW*@JMpI䏬 J i4nGae ԰:r -lC$|xqmNN_XN+w`?׬q,U8|V|37T2wuzUKJO~@ĠS29'zn@S|ž!dDχX{Vi^u7! sM'^]If^\u!sF_F,|R)+E]('{ڿ=`嘴:ťc =T)&6 c[=pgB#yb sYa>r|g-;sg?2rpHմM*lͪaJ3 v nƇpzصNǹ Yl8 va^}D$l5+qׯ\lz~xN2R_%|Bֲz'r/ W_|ZP_ܟB\/|7z8u޸VG,)S0:fUp?M7,VWɿ'/ /v]ֱ7Ps|=yŀdXܯ= b[`o/6z8++KEGq`g/ĶG,U+ޱTJVƽ ĢJ`Ou /ꬰ3PvbeSW4t`ߪOhGgObǂ,X3.çd~\0H}5Ț/5?s]cXK{VɛfcПA5j'O H.&II\3]Sr`&_M)'^wF"$gTm$o t\|hɯʯ\[M|sՖ]T_fQaLC]$'GkϞYҒwjS !7/}Vf̤3B9r~S|J B-ɨ|Ͽ-IXXS\yK/W}ޔ=:iz0zf\VdyDb@n0lL9 2W}]t"ʩC [>! {ہOJqa6{N_ ~'?)p✉4}QZΝ=-8 {lJK9.cM̳xgha%B7V ϻ|ua/2ZYg*}:s.2O[b{OrXU qU\fIE<&'^bʞ5< z?FFYɧH0:xM^[k"Q ٣xQsQGݩ3XY6t]2'Ni*\  b܈K+IlZ60Tצ+Dq'K=e|e%Ήnh?>Οvv?=]ւ5\wO[q¥R7\u /^hz7oŕMy:Kp59n:Guь7+5N\ 9K+ي ?ڼz!A KUL+EShp=C_rN>*9g-p;\:ƢS:eǼt9 iY7b`4yLLƗN#mtEqz3}+UϘs섩f)Up7?HIo/\$D寓roS:0~>ޅ,VRJ[6j/?:qY1?&_F֛ވGLyY a[!_'׷̜|j.8F}[A{~`3s\%_GUa/1u"h\%[쉾`|3$ce3K7z9;*}Gybe;\v8 Vjsf2z{[-߰=9f.ƌ^qE98? u&G@wO1Oa9y:qId.vaN69V7| '8K~!wގ3<8k=iCm\73Y?4IV#R߲ɦ\o}+z)%q_`dЊ[8aFV |g ei\1; CzGfavpQ 7` Q} Ob ɿ7ruʙ@2 J;Vg-Rno<XЂ;}.YYeǦ%PekO:A z780?xpJlbyZ]6s5H-j\rgb&3 }__ .  ja$6|w~6~ǓIvq i0CS3oN7kb|;qqJO!>f]=։Pi=,W>#\*tAFl C$RCCriMn6^af={O|ɲ혢& qЙ\5d?7v:g!'r.UwEl%qC?"|^0[98ζ*$Uy$^G.4(3<' BB k/O#682^W󉇳s8'eSos|‰TKCV%:9F Nımzav'ηS *osuGZ]}U8ؓCx/^6l'/ah#8'> OXvfߓ1* 6ꗎį 401aDmg>r~ 슧<ٶ* x"# \OnAʂ)D*x,YЯWznW;sKLz&߈=2KG%3,x1g#Bd~K0z^g u|?usC_?~^%I+m5UKT]'Yz˹㶳Q_N6<dマsY>¼ngyqræ_7wX|޶/:zcJ9+~Wa9s~8 u g=q4ʑ3|rG`q|#=٧/<Ү4ċ/uYk:8@8[~_2f-g6tjJؓMoj)w3*@yySvr_/ DyV03tbZOFV>V{ߧsO^qcXE,>"yF [9z! ꃫAAM2@\/j˿OlOlȃ r[ /ϒs żgOrޗ ^ݟ ]ҚϘn` 0]KGgr~0C>65Zo?M 3&X"8maOa=;^Bv\N7Wl~&v`Xo'q8經 N3>>NrO }`[;x%SЇx#6L4*YV$zLtw}RM%b?/.ݒCF;6h9\V~@U6zyXy݃xn'pȋT]1ZtRKO$ȧ5$3830~~9U,t_8qRW/.y+_y/ϝ` IDATsFݣN?/Jx> p^aH= {?pUҧIN\8 2`XL!/a2xI͠ܩ- T~w#ÕOIUbYqQOBwHή.k)֘Nk^q zj̞Q*활|s^`2}=B$9xʒQ.s.5&871S}Ap˙BMw̖Cy]!r7]q;flC\ߦãW#Ȭ%Ny ԥ%.IPc>ûtIAv=Z)0[g2,K#qB%ToC3K7,hJ)9?㞍ZΕփ;$4c \_$}p5;欽ągh؉>'$?ft~DTO~/U8,,`:'gy sm^'=u,bo΃ڹ@n>HɆpx/rƇx`_@p'Q$N;7aQU`8/3YȊ8ey9.vVR/s0*vfz/wg/ಮDLܘ4,cW3Z6f^䌇6_qp ΑC tm0b!)_3jM=gy'&Q2m248ťwy|\]~Ț y6#'9XWRTO ѣ=Ar&ȃI}k1UuKTLxYL^EpjcbH^z{9XP-|vY߮>zM`?w~ȉi}`FAY<ݟ= џxKq׸)gOVA5u=&=j@һ ǀNA.q)c%0{Qg] ,>fE5ɓ)AB)rq.t\n늰mbF'VЌ ʽ~tU"3+:_[qmv~?q 3gn!oß(lE;sm7Y}u,bBɇ>szcu$6^WG r|ƜW|-!My\V Vi+& d9́3H:]z~ j53g,d_eYU{=31$eE7R{G`y3l;Uֲ_1zU^!Q,t|SZ홗nTn\?/9j'7+jr!;2N;X:51ŗo)'_lpx]ч.,ۥ-ps>?ْC3 g~. 炮N_S*B}`b}Ji8*c''⚟d-GI*}g,t_)Gܓ<&c8+g 'ۅG6_=uMpIbl 罝)x|zq9$TO7A\kwbstsWuz&&8kK>pǵ?$HlRREx~M.q<.EXi4ixMFO~o}v:ߩ?;_?W:͊vȥtn c$ov7jqNމ⿌'lQA)+Qs5?UQtypȐU+=͹EK{ +Q{?G'UqJό;@[ 5o͵puMyVqgr̾Xngn9{Oexb]q4ɛ_blҚvAUY(/'HvξCqCpɞVӉn{ Vx'=!Vԕ0 |h\9R/`o%]k +F6} 4Zw['ȑ<:}mw>uK o6!F5?UNn.ɀCόV6Q}̜KgK~2bwâX9d^cڔR_|i[uM5϶"#|gmbGaM΀cq<$-c1Sz]8O|xGPwΚ%8wezN-<˧s|S#p*k 0_?e>崁.xgVg3@x~HoG<$?1@;V8L416>w=%?OFW0vGNTxtڻJrQNs5e;<$)nzuO!x]91%L9+Y(XG۲o$'GJw ue\)7a[ʹ6l޿PُKl9x=ʹ9ȔtOt?˞er@+F#lȿA瑌p{=zȥ5z͐9oAj<{S"F2 `KHDI"Dgi|αaN'_Cu=dMpo0Br.4ߔ8up^MȟxJVGOS(ݦ3q.c) =p1Ήwx1U )0|r$UR&Ufo4mς疱B\2z<"#yC`ק@D~M@n\}GϣAYKiGcCnsY@֮.C52<r#?,:l`zFľp:&eRc6\9c~5Ǹg܎CF6e|݇:z&H^S~MGx0f?> ݹ#oo(tn[+ H&?076ɋ3i cd#d,|"g.ێ_bݹhP<]؉[*wKsiD1Vsw9N~[礣縂AdgØC:" [.c(u?(p:&Ԫ7.<܂k6'S3e?} pt~rK$ߌ#A/9'Gie> '9gm[k͖=~uYGg|:W /9Oog@쉩sz~ .˥ve]x#pC7IXx0;c^Yp$lo1nI5%r_ӘzG=] g.q%z묯Խ^CO|y=ɝݗ8'I7Oɇx'gQ;|':w^T<_U4У2>7Ѡ0+YI6'. nqˎkK\Ysn=O>q+]5(\nľڃ`f|.GƮ3G×>=}<Vs60|3{0t o|?e%g2U'?N=;A+د|x `3Vn_Bqg!agA2٧#}N kޞ21E0C7Np{P9H 8=jʓ2 |#sr bcNHgVh\w=& O[[rZ C)U"5OdTЩ:O62pG詘,y*侁VzXՁq #͆gFw^G;|#~KD}=ѩN5;܎#󘟰jyz8^.Xtӥs.^L]ؾ]n1ODBno4'p ?z51+;ݶ>vf_a&ٌ.ʼn Gu7Ef7_E*zÿ%g *|s 3vr{Uج *E/x#uP:>ETGfB)MOAR#Dg {Ʌ_}*57LNW3`Ogdh>0»yR|K]<>:fm) cɝl=Glws|W` @2W~;W*ua?:PhNO/5/OOcw3ڮs{4pPωxm|v~ M`W.fl(0^ם8웫 ɷYJZ+z8'PċSǤ-^T>PNp"h,a7dzXϮeJ%(f! {]~^\O܏zzx/ ۅX)l_eC,7l{镫Mpvy}'a5뷘=)Wb876SwPHv^?+2~`czGyi֧um1 {8 z2N'Nais0_$ _ vz]Rbq_ ٝ<\,{g0= t}pIqY(|3pê/|]^)L4Q\7ZULNʜTT_Rƕa˽1kNsHD՞\CZrFbdЪCβc ;]G~S"}XίA!9y4mB .w9]/;rGƭ.b{ul99FkRE!G>=gġ;7'xȢkƮCmf3롂8Ů]sx &{~c;uObK",fqԁ;qE4om]Knx֔ܺ[uX\ON8;X0ϐ+yjWoH*թXk@q_g7\qf>K=}; ~'GXdv?qtO?x9_:n|QR.bh?qg7_\_=Uur$[I7ky<5rKNgqPÿ/pw\?[_y~D\[2Mw[i֏XI.|7-KI3%foB hdgd}aƦtfWn'tf-^鋥̜Nxm6b )Nq6/ (Rfݷo|[nYb)W:_u|䪏z>~Vl?ϸ}`Hktƥz{w)kq@*фbb_D7~fs˔WY<8|u9bp't\-ob'x. Ϯ[;t "y9.\?8ڽV^\|y2p#m3G=+2S'[~xzoN)]W+GFLJTR7ǯW8ƾ#1՞}͜=u%̹7Zef˟@-5lfCa9ݯG~;ESeǷ=#&Ǻ0؝s{q#KwW1䛳S\5n4pMB> |^Fk2p",!VRL3a|?MZi?81XJ5;x l'^qxӹ:x8?:Kvdx7.iRb9f<♜nq ye Ɋg؝ _˧ZaCxE)I\=ѹ0ǿsOpx3qĹ߃c=@kUyS_2یewN8r]jqϸ?SMƇ}Q_`Rr!.]3\<8!V fdğXcvn|Kä^T>*''I=/@KS]hECTpMឆ&;.;ex]ɊQqnXKŵQ.b]X߉3T#|Spi˙<0D--Mt SC©ԖxS=qo`Gc'"$H!ĽBўKKYT>x8':~_O|'dr]/- 'N*8딃Y;\SsB?yBs~y|4Mh3հ7޸UZ3181+\8_!9$]l[jq&QOSfc^ae7!CM8eMe LI}[`g& 3lj9 =8'Y\?Gi}x~a:OZ%d$zr=k }7@MF؄g'W*}uoTKO>H?S A&L;Y}(S􍠜+}1v%M~ק=3'|yt u;VtؓLn;x}9Bzu='^:c/OO&1ήo $iRG>7oaF70m:LޥRIy]3%_}pSU1ia#k<cs" ^8kzk> O8gwG;؉oWQWLO\/ 3K_5@󲎗i`{tֺ? 粟'^x =!lrHִ5c R^)=/tqf9c${8<~=&-Osw\? bUGaI1ބC%`sVO_0:?qE^n.Ăf4ݧ8qI|%8NXnIϱC5.xd8Qn#xa_4y`ЧIwܮxJ'EGR]γ-9ėM $ڵWVi5M]<Ӥ?9t,YJ~_6p8gy 1;mNyS80]]{\uv#N6x9I8w;)IoSE>SXCQS`>/iW² W3gq| 4 ?S~(eڻgdS sn)uues[rp:K~$ s|o\V?\[œ39`%Ee=ͨi0%#[:S#34Y4緝cļE.KԝD=2"foS$4ǥ)pd~ax,?Rό[.q~:MyJEn`q\a7*L8G0s~Nw2`vy}^K~)zΡp`uZ[|<3q̢ے|Y6:NvNMgc-9w'',[]9;g#5mٖᰛj7|Eܯպ~#Q [q^Fzy u.??m<|{,{5co@FR='uaF}Jl'i}ښ4$>❣n8W8ݿ"7?zlS/p`96շ;5E* n蚞UJɋw%?뇦]&f'AfOv_|43у,<ddws-70W$9ɏuubc9ba~>#yFgK?b#Bv/w?7uѤǓ4Z3jDӧLoqʩq6Hה28l\Nl=?v,;!%c ()L~cqɡ7Z?EurHSl.y[:ܬCݲʞ0u|ӝzzIOy>_ĴfTlqjJ^b v>F ty OwӋcn1sgcfHe4X׍vb7l^q'Y<#uc`+4 #@3pn쩫q&gS^97anGdzytCD65?cdˋ?CƄ̗ x ;l'O j=9['zcv{?O` N;t~!5Ѐkz2WЋAU/4N@h8ƐbAt7x[fFG^JH-Ok޲e?)'׽vNi87V.O6F\s'.xx|&_ޕGc-&N"mG2zT-.=7ΞX~?9g]D?!?x➼׷'-O?w8~N<{距;uQ!xް.1mQͯ.+Y .Z%Nb~T~ǧ^>_~ 2b㔼& gL|f֋҄ g{79uJd5թOʙ:y xSNمrq,E%GJ~|31N>;#@ s~۽7\~g_Qx2_%Ӭԇ=S\b2&\Û]jr<2o2C!.Mo b_g 6='o~3t ln}>%5_|r:vW\kEij_Ebd $Lc3!;>n/?sccKwHʥTs'jR϶JzyKΫcv_mj L<]Ͱty~4jolv:!-Gl~cpch%z G"/g /<'_lڱm5t@;$?=o☓FqǐܝKgpӶMmyv܇{6_1M$qNf|J.})y![!ޤMxImڪ-WsJ| S3^tP$U=_9ti:{Eư]wn=C۳yHsVrC?jmrPx:= q\?kQOT`A{C('ߛ=ڪ>^[e~1ȲV;)M)W׿F>@`wb dagݜ/zzKL>(L}E'WLm!Y0>Ejw%\yF1Z}R14>X?ܖ4Xh&TŒpu|N笃b\'y/ZRzإJf:]ǒpiZ?Ʀ#)?N8#O{)tHbnX{'^ACcؓs$OL`!Ĺ6^(71ntbCەC~`'YtjܴՀ{c$W'fHO{U>aWJozFHZJoNrSlsNʙb%G 7:G.A8Cv~$#x6]?s-G\}]3w\ǝ5f^gb[ZX/6rrqM<6]͕{h@XJ>o7[v笳NH{8izXf~(7~ιbKi+G!4g|?þ9Kr%U]ܰ~|[nou<Z]߱VzH{45ץ 6"{lȿU" fE1zƙ3â~u8Um.⣆~ߩ_7e( VsvfY^˛;Ё]`sN$,M3Bv7,.b` {:iʼn_`Olި^uJ'^޷}" {m>f;o~}ܝ6uK򜶪c7lLBol]/)nŗn?[_=؋ 4}F{~CO=>}=s uED ]ug^\"X\g1e.:|9JD^ΏWzϩwq#X=-$χ{'Khk}xfІK`N~Oy^Sl+']O<#xC7{-<{{BAow ^9龊/(g *0+ #G[ǟ q(l\2WoAۇUV=TxIqwOhjǿcw_v+" fQ0>g1E.L3:3N?6x^ȲC5|^gOuܞc \t9lB_8}:.+:E۫_đuVPQݬY ۅ}=foT)X%zHjs涔盛q?@obKu+bcoK 6*3T=qp:,EjI 9t-'3~#V ܥ-7T*%8o5¢c=Hsu3'ixγel}t @X%_\PDC) >;t*ś2Ls;8Q7Zu.B#7_s?OǦ{!8F >WXCȩ"#%P)'p>a^(嫹/z|/Ȅ v k&dڙ^~`'A%>uapcc8_W`YgeyFS4$|>/@>a.x%r)J9U?2uXz0mwik1 %HCϮysǼH[7CktF9..k]óY82?W:ɷ~+@ޛwg'n5*ƯŵO: x݃H%r,Ǥ9>A>/^p(kPM,|]C8d+Eվqꏲϗ>̫?:zUܜLJi za&<ٝeO0O}Oes*7_^e]Ɵ]n.jMIGD͹?%nǕxxy$Vŕ-OE+w@t2;y |_e=~1=NrκWZ?qf73vt>qIB9Vrg}^pE|ًj>D^ͺ{#0:]MNB(<$ A2fP/cQx{YmoaoP`Se;ϒڨB 27E$lDG<_]ռzøwT]Yͳ>k3\!O5j4n oι˦{0PNBhm<hڕw,v3oCp<-5o^Y{uü-=]KeyIrbvo?&e7X׏x0t_\uBPV';]{|5D^cދYgٱ#(Zz]8zp4k$D߳֌xEqot'_-e?Bʛ%ǫ{>lȷyqVWgŁs?]sst\>Q%c粍"R6)kE&R>Rc6o}V7 L"{n.r ffm+;O&%vSo},[zx]Xnex"/ipn w_+G2'|$us59ff;Q5@@̶bBMb)(l-OXdu.g;m٣g^<u|~u;x6!r>5_|7Nb¼Ȥ_Y.Fȇ)q*ۭAlVkwݎ)1BsIDATʓ]8+w]h.NP=ù5I{8Yb,}ԁOe}E)뜩~!|>Cx~ỷ'=/)PD+ [.[f'LAЁWqbi ͟9ӇQ0W@iss%|P8/bZC7-⥦QK?D|gN[q 7 n`f/%VbG{]}Ӈ=2!r]vTq>;{{~Rogޞj/fsS~wI\+GΑvgۀ-ĩӌ;Q[K?^mdp9C.r¢#_ΟS|к͕SOp< b[YX]-3%I]MߜW@;No>CJ\NE&v҃a+_/GƿN؝gzb׀䇭sd0>> rQ{_׹ M ׻Z 9 kk𕌰#8<.k[̇ g ]2mW 4 ?o.Ԥ]7T=>+~x;;~۵dNz7LKҎ '5!~=5dr5.37b$G/ȾķV=%h#k@d_sfW+d8 ^U0+u\3'ofKVbv8\Ԫkv޼GҚuWg9BF`.'t36o|ɺ+VoЌ}EKH.8b7O6[,EWIENDB`8G*