Game Update 10/8/24

This commit is contained in:
Wuemeli
2024-10-09 02:41:27 +02:00
parent d2fee113a2
commit d3b1a5e086
64 changed files with 40083 additions and 40083 deletions

View File

@@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-10-05 04:26:11.464349700 UTC
// 2024-10-09 00:40:16.266688100 UTC
#pragma once
@@ -180,7 +180,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Step_PublicOutput {
constexpr std::ptrdiff_t m_OutputIndex = 0x48; // PulseRuntimeOutputIndex_t
constexpr std::ptrdiff_t m_OutputIndex = 0x48; //
}
// Parent: CPulseCell_BaseValue
// Field count: 0
@@ -221,23 +221,23 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Test_MultiOutflow_WithParams {
constexpr std::ptrdiff_t m_Out1 = 0x48; // SignatureOutflow_Continue
constexpr std::ptrdiff_t m_Out2 = 0x78; // SignatureOutflow_Continue
constexpr std::ptrdiff_t m_Out1 = 0x48; //
constexpr std::ptrdiff_t m_Out2 = 0x78; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeVarIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeEntrypointIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeDomainValueIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int16
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 3
@@ -245,14 +245,14 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_Chunk {
constexpr std::ptrdiff_t m_Instructions = 0x0; // CUtlLeanVector<PGDInstruction_t>
constexpr std::ptrdiff_t m_Registers = 0x10; // CUtlLeanVector<CPulse_RegisterInfo>
constexpr std::ptrdiff_t m_InstructionEditorIDs = 0x20; // CUtlLeanVector<PulseDocNodeID_t>
constexpr std::ptrdiff_t m_Instructions = 0x0; //
constexpr std::ptrdiff_t m_Registers = 0x10; //
constexpr std::ptrdiff_t m_InstructionEditorIDs = 0x20; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeInvokeIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 1
@@ -260,7 +260,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_Outflow_CycleOrdered__InstanceState_t {
constexpr std::ptrdiff_t m_nNextIndex = 0x0; // int32
constexpr std::ptrdiff_t m_nNextIndex = 0x0; //
}
// Parent: CPulseCell_BaseYieldingInflow
// Field count: 2
@@ -268,8 +268,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_WaitForCursorsWithTagBase {
constexpr std::ptrdiff_t m_nCursorsAllowedToWait = 0x48; // int32
constexpr std::ptrdiff_t m_WaitComplete = 0x50; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_nCursorsAllowedToWait = 0x48; //
constexpr std::ptrdiff_t m_WaitComplete = 0x50; //
}
// Parent: None
// Field count: 0
@@ -282,7 +282,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseRuntimeRegisterIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int16
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 4
@@ -290,23 +290,23 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_Timeline__TimelineEvent_t {
constexpr std::ptrdiff_t m_flTimeFromPrevious = 0x0; // float32
constexpr std::ptrdiff_t m_bPauseForPreviousEvents = 0x4; // bool
constexpr std::ptrdiff_t m_bCallModeSync = 0x5; // bool
constexpr std::ptrdiff_t m_EventOutflow = 0x8; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_flTimeFromPrevious = 0x0; //
constexpr std::ptrdiff_t m_bPauseForPreviousEvents = 0x4; //
constexpr std::ptrdiff_t m_bCallModeSync = 0x5; //
constexpr std::ptrdiff_t m_EventOutflow = 0x8; //
}
// Parent: None
// Field count: 4
namespace CPulse_OutflowConnection {
constexpr std::ptrdiff_t m_SourceOutflowName = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_nDestChunk = 0x8; // PulseRuntimeChunkIndex_t
constexpr std::ptrdiff_t m_nInstruction = 0xC; // int32
constexpr std::ptrdiff_t m_OutflowRegisterMap = 0x10; // PulseRegisterMap_t
constexpr std::ptrdiff_t m_SourceOutflowName = 0x0; //
constexpr std::ptrdiff_t m_nDestChunk = 0x8; //
constexpr std::ptrdiff_t m_nInstruction = 0xC; //
constexpr std::ptrdiff_t m_OutflowRegisterMap = 0x10; //
}
// Parent: None
// Field count: 1
namespace PulseCursorID_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 0
@@ -321,7 +321,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_Base {
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; //
}
// Parent: None
// Field count: 1
@@ -329,7 +329,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_Test_MultiOutflow_WithParams_Yielding__CursorState_t {
constexpr std::ptrdiff_t nTestStep = 0x0; // int32
constexpr std::ptrdiff_t nTestStep = 0x0; //
}
// Parent: None
// Field count: 5
@@ -337,11 +337,11 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseGraphExecutionHistoryCursorDesc_t {
constexpr std::ptrdiff_t vecAncestorCursorIDs = 0x0; // CUtlVector<PulseCursorID_t>
constexpr std::ptrdiff_t nSpawnNodeID = 0x18; // PulseDocNodeID_t
constexpr std::ptrdiff_t nRetiredAtNodeID = 0x1C; // PulseDocNodeID_t
constexpr std::ptrdiff_t flLastReferenced = 0x20; // float32
constexpr std::ptrdiff_t nLastValidEntryIdx = 0x24; // int32
constexpr std::ptrdiff_t vecAncestorCursorIDs = 0x0; //
constexpr std::ptrdiff_t nSpawnNodeID = 0x18; //
constexpr std::ptrdiff_t nRetiredAtNodeID = 0x1C; //
constexpr std::ptrdiff_t flLastReferenced = 0x20; //
constexpr std::ptrdiff_t nLastValidEntryIdx = 0x24; //
}
// Parent: CPulseCell_BaseYieldingInflow
// Field count: 1
@@ -352,7 +352,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_Yield {
constexpr std::ptrdiff_t m_UnyieldResume = 0x48; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_UnyieldResume = 0x48; //
}
// Parent: CPulseCell_Inflow_BaseEntrypoint
// Field count: 1
@@ -363,7 +363,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_GraphHook {
constexpr std::ptrdiff_t m_HookName = 0x70; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_HookName = 0x70; //
}
// Parent: CPulseCell_BaseYieldingInflow
// Field count: 1
@@ -377,7 +377,7 @@ namespace cs2_dumper {
// MPropertyDescription
// MPulseEditorHeaderIcon
namespace CPulseCell_Inflow_Wait {
constexpr std::ptrdiff_t m_WakeResume = 0x48; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_WakeResume = 0x48; //
}
// Parent: CPulseExecCursor
// Field count: 2
@@ -385,8 +385,8 @@ namespace cs2_dumper {
// Metadata:
// MPulseLibraryBindings
namespace CTestDomainDerived_Cursor {
constexpr std::ptrdiff_t m_nCursorValueA = 0xA8; // int32
constexpr std::ptrdiff_t m_nCursorValueB = 0xAC; // int32
constexpr std::ptrdiff_t m_nCursorValueA = 0xA8; //
constexpr std::ptrdiff_t m_nCursorValueB = 0xAC; //
}
// Parent: None
// Field count: 2
@@ -394,8 +394,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseRegisterMap_t {
constexpr std::ptrdiff_t m_Inparams = 0x0; // KeyValues3
constexpr std::ptrdiff_t m_Outparams = 0x10; // KeyValues3
constexpr std::ptrdiff_t m_Inparams = 0x0; //
constexpr std::ptrdiff_t m_Outparams = 0x10; //
}
// Parent: CPulseCell_WaitForCursorsWithTagBase
// Field count: 1
@@ -409,7 +409,7 @@ namespace cs2_dumper {
// MPropertyDescription
// MPulseEditorHeaderIcon
namespace CPulseCell_CursorQueue {
constexpr std::ptrdiff_t m_nCursorsAllowedToRunParallel = 0x80; // int32
constexpr std::ptrdiff_t m_nCursorsAllowedToRunParallel = 0x80; //
}
// Parent: CPulseCell_Base
// Field count: 0
@@ -424,7 +424,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseNodeDynamicOutflows_t {
constexpr std::ptrdiff_t m_Outflows = 0x0; // CUtlVector<PulseNodeDynamicOutflows_t::DynamicOutflow_t>
constexpr std::ptrdiff_t m_Outflows = 0x0; //
}
// Parent: CPulseCell_BaseValue
// Field count: 0
@@ -462,7 +462,7 @@ namespace cs2_dumper {
// Parent: CPulseCell_Base
// Field count: 1
namespace CPulseCell_Unknown {
constexpr std::ptrdiff_t m_UnknownKeys = 0x48; // KeyValues3
constexpr std::ptrdiff_t m_UnknownKeys = 0x48; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 2
@@ -473,7 +473,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Outflow_StringSwitch {
constexpr std::ptrdiff_t m_DefaultCaseOutflow = 0x48; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_DefaultCaseOutflow = 0x48; //
constexpr std::ptrdiff_t m_CaseOutflows = 0x78; // CUtlVector<CPulse_OutflowConnection>
}
// Parent: CPulseCell_BaseFlow
@@ -496,9 +496,9 @@ namespace cs2_dumper {
// MPulseCellOutflowHookInfo
namespace CPulseCell_FireCursors {
constexpr std::ptrdiff_t m_Outflows = 0x48; // CUtlVector<CPulse_OutflowConnection>
constexpr std::ptrdiff_t m_bWaitForChildOutflows = 0x60; // bool
constexpr std::ptrdiff_t m_OnFinished = 0x68; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_OnCanceled = 0x98; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_bWaitForChildOutflows = 0x60; //
constexpr std::ptrdiff_t m_OnFinished = 0x68; //
constexpr std::ptrdiff_t m_OnCanceled = 0x98; //
}
// Parent: None
// Field count: 2
@@ -507,7 +507,7 @@ namespace cs2_dumper {
// MGetKV3ClassDefaults
namespace CPulseCell_Outflow_CycleShuffled__InstanceState_t {
constexpr std::ptrdiff_t m_Shuffle = 0x0; // CUtlVectorFixedGrowable<uint8,8>
constexpr std::ptrdiff_t m_nNextShuffle = 0x20; // int32
constexpr std::ptrdiff_t m_nNextShuffle = 0x20; //
}
// Parent: CPulseCell_Base
// Field count: 0
@@ -540,7 +540,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_EventHandler {
constexpr std::ptrdiff_t m_EventName = 0x70; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_EventName = 0x70; //
}
// Parent: None
// Field count: 2
@@ -548,8 +548,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_BaseLerp__CursorState_t {
constexpr std::ptrdiff_t m_StartTime = 0x0; // GameTime_t
constexpr std::ptrdiff_t m_EndTime = 0x4; // GameTime_t
constexpr std::ptrdiff_t m_StartTime = 0x0; //
constexpr std::ptrdiff_t m_EndTime = 0x4; //
}
// Parent: IGapHost_ExecLog
// Field count: 0
@@ -561,9 +561,9 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_PublicOutput {
constexpr std::ptrdiff_t m_Name = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_Description = 0x8; // CUtlString
constexpr std::ptrdiff_t m_ParamType = 0x10; // CPulseValueFullType
constexpr std::ptrdiff_t m_Name = 0x0; //
constexpr std::ptrdiff_t m_Description = 0x8; //
constexpr std::ptrdiff_t m_ParamType = 0x10; //
}
// Parent: None
// Field count: 0
@@ -582,10 +582,10 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Timeline {
constexpr std::ptrdiff_t m_TimelineEvents = 0x48; // CUtlVector<CPulseCell_Timeline::TimelineEvent_t>
constexpr std::ptrdiff_t m_bWaitForChildOutflows = 0x60; // bool
constexpr std::ptrdiff_t m_OnFinished = 0x68; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_OnCanceled = 0x98; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_TimelineEvents = 0x48; //
constexpr std::ptrdiff_t m_bWaitForChildOutflows = 0x60; //
constexpr std::ptrdiff_t m_OnFinished = 0x68; //
constexpr std::ptrdiff_t m_OnCanceled = 0x98; //
}
// Parent: None
// Field count: 4
@@ -593,10 +593,10 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_OutputConnection {
constexpr std::ptrdiff_t m_SourceOutput = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_TargetEntity = 0x8; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_TargetInput = 0x10; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_Param = 0x18; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_SourceOutput = 0x0; //
constexpr std::ptrdiff_t m_TargetEntity = 0x8; //
constexpr std::ptrdiff_t m_TargetInput = 0x10; //
constexpr std::ptrdiff_t m_Param = 0x18; //
}
// Parent: CPulseCell_BaseRequirement
// Field count: 1
@@ -611,7 +611,7 @@ namespace cs2_dumper {
// MPulseRequirementPass
// MPulseRequirementSummaryExpr
namespace CPulseCell_LimitCount {
constexpr std::ptrdiff_t m_nLimitCount = 0x48; // int32
constexpr std::ptrdiff_t m_nLimitCount = 0x48; //
}
// Parent: None
// Field count: 2
@@ -619,8 +619,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseGraphExecutionHistoryNodeDesc_t {
constexpr std::ptrdiff_t strCellDesc = 0x0; // CBufferString
constexpr std::ptrdiff_t strBindingName = 0x10; // CUtlSymbolLarge
constexpr std::ptrdiff_t strCellDesc = 0x0; //
constexpr std::ptrdiff_t strBindingName = 0x10; //
}
// Parent: CPulse_ResumePoint
// Field count: 0
@@ -643,11 +643,11 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Step_CallExternalMethod {
constexpr std::ptrdiff_t m_MethodName = 0x48; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_GameBlackboard = 0x50; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_MethodName = 0x48; //
constexpr std::ptrdiff_t m_GameBlackboard = 0x50; //
constexpr std::ptrdiff_t m_ExpectedArgs = 0x58; // CUtlLeanVector<CPulseRuntimeMethodArg>
constexpr std::ptrdiff_t m_nAsyncCallMode = 0x68; // PulseMethodCallMode_t
constexpr std::ptrdiff_t m_OnFinished = 0x70; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_nAsyncCallMode = 0x68; //
constexpr std::ptrdiff_t m_OnFinished = 0x70; //
}
// Parent: CBasePulseGraphInstance
// Field count: 0
@@ -671,16 +671,16 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseGraphExecutionHistoryEntry_t {
constexpr std::ptrdiff_t nCursorID = 0x0; // PulseCursorID_t
constexpr std::ptrdiff_t nEditorID = 0x4; // PulseDocNodeID_t
constexpr std::ptrdiff_t flExecTime = 0x8; // float32
constexpr std::ptrdiff_t unFlags = 0xC; // uint32
constexpr std::ptrdiff_t tagName = 0x10; // CUtlSymbolLarge
constexpr std::ptrdiff_t nCursorID = 0x0; //
constexpr std::ptrdiff_t nEditorID = 0x4; //
constexpr std::ptrdiff_t flExecTime = 0x8; //
constexpr std::ptrdiff_t unFlags = 0xC; //
constexpr std::ptrdiff_t tagName = 0x10; //
}
// Parent: None
// Field count: 1
namespace PulseCursorYieldToken_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 5
@@ -688,9 +688,9 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseGraphExecutionHistory {
constexpr std::ptrdiff_t m_nInstanceID = 0x0; // PulseGraphInstanceID_t
constexpr std::ptrdiff_t m_strFileName = 0x8; // CUtlString
constexpr std::ptrdiff_t m_vecHistory = 0x10; // CUtlVector<PulseGraphExecutionHistoryEntry_t*>
constexpr std::ptrdiff_t m_nInstanceID = 0x0; //
constexpr std::ptrdiff_t m_strFileName = 0x8; //
constexpr std::ptrdiff_t m_vecHistory = 0x10; //
constexpr std::ptrdiff_t m_mapCellDesc = 0x28; // CUtlOrderedMap<PulseDocNodeID_t,PulseGraphExecutionHistoryNodeDesc_t*>
constexpr std::ptrdiff_t m_mapCursorDesc = 0x50; // CUtlOrderedMap<PulseCursorID_t,PulseGraphExecutionHistoryCursorDesc_t*>
}
@@ -703,9 +703,9 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_TestWaitWithCursorState {
constexpr std::ptrdiff_t m_WakeResume = 0x48; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_WakeCancel = 0x78; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_WakeFail = 0xA8; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_WakeResume = 0x48; //
constexpr std::ptrdiff_t m_WakeCancel = 0x78; //
constexpr std::ptrdiff_t m_WakeFail = 0xA8; //
}
// Parent: CPulseCell_Inflow_BaseEntrypoint
// Field count: 2
@@ -716,8 +716,8 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_ObservableVariableListener {
constexpr std::ptrdiff_t m_BlackboardReference = 0x70; // CPulse_BlackboardReference
constexpr std::ptrdiff_t m_bSelfReference = 0x168; // bool
constexpr std::ptrdiff_t m_BlackboardReference = 0x70; //
constexpr std::ptrdiff_t m_bSelfReference = 0x168; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 0
@@ -732,17 +732,17 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PGDInstruction_t {
constexpr std::ptrdiff_t m_nCode = 0x0; // PulseInstructionCode_t
constexpr std::ptrdiff_t m_nVar = 0x4; // PulseRuntimeVarIndex_t
constexpr std::ptrdiff_t m_nReg0 = 0x8; // PulseRuntimeRegisterIndex_t
constexpr std::ptrdiff_t m_nReg1 = 0xA; // PulseRuntimeRegisterIndex_t
constexpr std::ptrdiff_t m_nReg2 = 0xC; // PulseRuntimeRegisterIndex_t
constexpr std::ptrdiff_t m_nInvokeBindingIndex = 0x10; // PulseRuntimeInvokeIndex_t
constexpr std::ptrdiff_t m_nChunk = 0x14; // PulseRuntimeChunkIndex_t
constexpr std::ptrdiff_t m_nDestInstruction = 0x18; // int32
constexpr std::ptrdiff_t m_nCallInfoIndex = 0x1C; // PulseRuntimeCallInfoIndex_t
constexpr std::ptrdiff_t m_nConstIdx = 0x20; // PulseRuntimeConstantIndex_t
constexpr std::ptrdiff_t m_nDomainValueIdx = 0x22; // PulseRuntimeDomainValueIndex_t
constexpr std::ptrdiff_t m_nCode = 0x0; //
constexpr std::ptrdiff_t m_nVar = 0x4; //
constexpr std::ptrdiff_t m_nReg0 = 0x8; //
constexpr std::ptrdiff_t m_nReg1 = 0xA; //
constexpr std::ptrdiff_t m_nReg2 = 0xC; //
constexpr std::ptrdiff_t m_nInvokeBindingIndex = 0x10; //
constexpr std::ptrdiff_t m_nChunk = 0x14; //
constexpr std::ptrdiff_t m_nDestInstruction = 0x18; //
constexpr std::ptrdiff_t m_nCallInfoIndex = 0x1C; //
constexpr std::ptrdiff_t m_nConstIdx = 0x20; //
constexpr std::ptrdiff_t m_nDomainValueIdx = 0x22; //
constexpr std::ptrdiff_t m_nBlackboardReferenceIdx = 0x24; // PulseRuntimeBlackboardReferenceIndex_t
}
// Parent: None
@@ -751,11 +751,11 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_InvokeBinding {
constexpr std::ptrdiff_t m_RegisterMap = 0x0; // PulseRegisterMap_t
constexpr std::ptrdiff_t m_FuncName = 0x20; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_nCellIndex = 0x28; // PulseRuntimeCellIndex_t
constexpr std::ptrdiff_t m_nSrcChunk = 0x2C; // PulseRuntimeChunkIndex_t
constexpr std::ptrdiff_t m_nSrcInstruction = 0x30; // int32
constexpr std::ptrdiff_t m_RegisterMap = 0x0; //
constexpr std::ptrdiff_t m_FuncName = 0x20; //
constexpr std::ptrdiff_t m_nCellIndex = 0x28; //
constexpr std::ptrdiff_t m_nSrcChunk = 0x2C; //
constexpr std::ptrdiff_t m_nSrcInstruction = 0x30; //
}
// Parent: None
// Field count: 7
@@ -763,13 +763,13 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_Variable {
constexpr std::ptrdiff_t m_Name = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_Description = 0x8; // CUtlString
constexpr std::ptrdiff_t m_Type = 0x10; // CPulseValueFullType
constexpr std::ptrdiff_t m_DefaultValue = 0x20; // KeyValues3
constexpr std::ptrdiff_t m_bIsPublic = 0x32; // bool
constexpr std::ptrdiff_t m_bIsObservable = 0x33; // bool
constexpr std::ptrdiff_t m_nEditorNodeID = 0x34; // PulseDocNodeID_t
constexpr std::ptrdiff_t m_Name = 0x0; //
constexpr std::ptrdiff_t m_Description = 0x8; //
constexpr std::ptrdiff_t m_Type = 0x10; //
constexpr std::ptrdiff_t m_DefaultValue = 0x20; //
constexpr std::ptrdiff_t m_bIsPublic = 0x32; //
constexpr std::ptrdiff_t m_bIsObservable = 0x33; //
constexpr std::ptrdiff_t m_nEditorNodeID = 0x34; //
}
// Parent: CPulseCell_Inflow_BaseEntrypoint
// Field count: 5
@@ -780,10 +780,10 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_Method {
constexpr std::ptrdiff_t m_MethodName = 0x70; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_Description = 0x78; // CUtlString
constexpr std::ptrdiff_t m_bIsPublic = 0x80; // bool
constexpr std::ptrdiff_t m_ReturnType = 0x88; // CPulseValueFullType
constexpr std::ptrdiff_t m_MethodName = 0x70; //
constexpr std::ptrdiff_t m_Description = 0x78; //
constexpr std::ptrdiff_t m_bIsPublic = 0x80; //
constexpr std::ptrdiff_t m_ReturnType = 0x88; //
constexpr std::ptrdiff_t m_Args = 0x98; // CUtlLeanVector<CPulseRuntimeMethodArg>
}
// Parent: CBasePulseGraphInstance
@@ -795,12 +795,12 @@ namespace cs2_dumper {
// MPulseLibraryBindings
// MPulseDomainOptInFeatureTag
namespace CPulseGraphInstance_TestDomain {
constexpr std::ptrdiff_t m_bIsRunningUnitTests = 0xF8; // bool
constexpr std::ptrdiff_t m_bExplicitTimeStepping = 0xF9; // bool
constexpr std::ptrdiff_t m_bExpectingToDestroyWithYieldedCursors = 0xFA; // bool
constexpr std::ptrdiff_t m_nNextValidateIndex = 0xFC; // int32
constexpr std::ptrdiff_t m_Tracepoints = 0x100; // CUtlVector<CUtlString>
constexpr std::ptrdiff_t m_bTestYesOrNoPath = 0x118; // bool
constexpr std::ptrdiff_t m_bIsRunningUnitTests = 0xF8; //
constexpr std::ptrdiff_t m_bExplicitTimeStepping = 0xF9; //
constexpr std::ptrdiff_t m_bExpectingToDestroyWithYieldedCursors = 0xFA; //
constexpr std::ptrdiff_t m_nNextValidateIndex = 0xFC; //
constexpr std::ptrdiff_t m_Tracepoints = 0x100; //
constexpr std::ptrdiff_t m_bTestYesOrNoPath = 0x118; //
}
// Parent: None
// Field count: 0
@@ -816,8 +816,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace PulseNodeDynamicOutflows_t__DynamicOutflow_t {
constexpr std::ptrdiff_t m_OutflowID = 0x0; // CGlobalSymbol
constexpr std::ptrdiff_t m_Connection = 0x8; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_OutflowID = 0x0; //
constexpr std::ptrdiff_t m_Connection = 0x8; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 1
@@ -833,12 +833,12 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseRuntimeOutputIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 1
namespace CPulseCell_WaitForCursorsWithTagBase__CursorState_t {
constexpr std::ptrdiff_t m_TagName = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_TagName = 0x0; //
}
// Parent: None
// Field count: 2
@@ -846,8 +846,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_TestWaitWithCursorState__CursorState_t {
constexpr std::ptrdiff_t flWaitValue = 0x0; // float32
constexpr std::ptrdiff_t bFailOnCancel = 0x4; // bool
constexpr std::ptrdiff_t flWaitValue = 0x0; //
constexpr std::ptrdiff_t bFailOnCancel = 0x4; //
}
// Parent: None
// Field count: 3
@@ -855,9 +855,9 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_DomainValue {
constexpr std::ptrdiff_t m_nType = 0x0; // PulseDomainValueType_t
constexpr std::ptrdiff_t m_Value = 0x8; // CGlobalSymbol
constexpr std::ptrdiff_t m_ExpectedRuntimeType = 0x10; // CGlobalSymbol
constexpr std::ptrdiff_t m_nType = 0x0; //
constexpr std::ptrdiff_t m_Value = 0x8; //
constexpr std::ptrdiff_t m_ExpectedRuntimeType = 0x10; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 0
@@ -881,7 +881,7 @@ namespace cs2_dumper {
// MPropertyFriendlyName
// MPulseEditorHeaderText
namespace CPulseCell_Step_TestDomainEntFire {
constexpr std::ptrdiff_t m_Input = 0x48; // CUtlString
constexpr std::ptrdiff_t m_Input = 0x48; //
}
// Parent: None
// Field count: 0
@@ -894,7 +894,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseRuntimeBlackboardReferenceIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int16
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: IGapHost_Cursor
// Field count: 0
@@ -913,11 +913,11 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Test_MultiOutflow_WithParams_Yielding {
constexpr std::ptrdiff_t m_Out1 = 0x48; // SignatureOutflow_Continue
constexpr std::ptrdiff_t m_AsyncChild1 = 0x78; // SignatureOutflow_Continue
constexpr std::ptrdiff_t m_AsyncChild2 = 0xA8; // SignatureOutflow_Continue
constexpr std::ptrdiff_t m_YieldResume1 = 0xD8; // SignatureOutflow_Resume
constexpr std::ptrdiff_t m_YieldResume2 = 0x108; // SignatureOutflow_Resume
constexpr std::ptrdiff_t m_Out1 = 0x48; //
constexpr std::ptrdiff_t m_AsyncChild1 = 0x78; //
constexpr std::ptrdiff_t m_AsyncChild2 = 0xA8; //
constexpr std::ptrdiff_t m_YieldResume1 = 0xD8; //
constexpr std::ptrdiff_t m_YieldResume2 = 0x108; //
}
// Parent: CPulseGraphInstance_TestDomain
// Field count: 1
@@ -927,7 +927,7 @@ namespace cs2_dumper {
// MPulseDomainHookInfo
// MPulseLibraryBindings
namespace CPulseGraphInstance_TestDomain_Derived {
constexpr std::ptrdiff_t m_nInstanceValueX = 0x120; // int32
constexpr std::ptrdiff_t m_nInstanceValueX = 0x120; //
}
// Parent: CPulseCell_Inflow_BaseEntrypoint
// Field count: 4
@@ -938,15 +938,15 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Inflow_EntOutputHandler {
constexpr std::ptrdiff_t m_SourceEntity = 0x70; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_SourceOutput = 0x78; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_TargetInput = 0x80; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_ExpectedParamType = 0x88; // CPulseValueFullType
constexpr std::ptrdiff_t m_SourceEntity = 0x70; //
constexpr std::ptrdiff_t m_SourceOutput = 0x78; //
constexpr std::ptrdiff_t m_TargetInput = 0x80; //
constexpr std::ptrdiff_t m_ExpectedParamType = 0x88; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeConstantIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int16
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 0
@@ -970,7 +970,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseDocNodeID_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: None
// Field count: 4
@@ -979,9 +979,9 @@ namespace cs2_dumper {
// MGetKV3ClassDefaults
namespace CPulse_BlackboardReference {
constexpr std::ptrdiff_t m_hBlackboardResource = 0x0; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIPulseGraphDef>>
constexpr std::ptrdiff_t m_BlackboardResource = 0xE0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_nNodeID = 0xE8; // PulseDocNodeID_t
constexpr std::ptrdiff_t m_NodeName = 0xF0; // CGlobalSymbol
constexpr std::ptrdiff_t m_BlackboardResource = 0xE0; //
constexpr std::ptrdiff_t m_nNodeID = 0xE8; //
constexpr std::ptrdiff_t m_NodeName = 0xF0; //
}
// Parent: None
// Field count: 1
@@ -989,7 +989,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_LimitCount__InstanceState_t {
constexpr std::ptrdiff_t m_nCurrentCount = 0x0; // int32
constexpr std::ptrdiff_t m_nCurrentCount = 0x0; //
}
// Parent: CPulseCell_BaseValue
// Field count: 0
@@ -1008,12 +1008,12 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_CallInfo {
constexpr std::ptrdiff_t m_PortName = 0x0; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t
constexpr std::ptrdiff_t m_RegisterMap = 0x10; // PulseRegisterMap_t
constexpr std::ptrdiff_t m_CallMethodID = 0x30; // PulseDocNodeID_t
constexpr std::ptrdiff_t m_nSrcChunk = 0x34; // PulseRuntimeChunkIndex_t
constexpr std::ptrdiff_t m_nSrcInstruction = 0x38; // int32
constexpr std::ptrdiff_t m_PortName = 0x0; //
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; //
constexpr std::ptrdiff_t m_RegisterMap = 0x10; //
constexpr std::ptrdiff_t m_CallMethodID = 0x30; //
constexpr std::ptrdiff_t m_nSrcChunk = 0x34; //
constexpr std::ptrdiff_t m_nSrcInstruction = 0x38; //
}
// Parent: None
// Field count: 5
@@ -1021,11 +1021,11 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_RegisterInfo {
constexpr std::ptrdiff_t m_nReg = 0x0; // PulseRuntimeRegisterIndex_t
constexpr std::ptrdiff_t m_Type = 0x8; // CPulseValueFullType
constexpr std::ptrdiff_t m_OriginName = 0x18; // CKV3MemberNameWithStorage
constexpr std::ptrdiff_t m_nWrittenByInstruction = 0x50; // int32
constexpr std::ptrdiff_t m_nLastReadByInstruction = 0x54; // int32
constexpr std::ptrdiff_t m_nReg = 0x0; //
constexpr std::ptrdiff_t m_Type = 0x8; //
constexpr std::ptrdiff_t m_OriginName = 0x18; //
constexpr std::ptrdiff_t m_nWrittenByInstruction = 0x50; //
constexpr std::ptrdiff_t m_nLastReadByInstruction = 0x54; //
}
// Parent: CPulseCell_BaseValue
// Field count: 0
@@ -1043,7 +1043,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseRuntimeCellIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: IGapHost_YieldingCursor
// Field count: 0
@@ -1052,7 +1052,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseGraphInstanceID_t {
constexpr std::ptrdiff_t m_Value = 0x0; // uint32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 2
@@ -1063,7 +1063,7 @@ namespace cs2_dumper {
// MPulseCellMethodBindings
// MPulseCellOutflowHookInfo
namespace CPulseCell_Outflow_IntSwitch {
constexpr std::ptrdiff_t m_DefaultCaseOutflow = 0x48; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_DefaultCaseOutflow = 0x48; //
constexpr std::ptrdiff_t m_CaseOutflows = 0x78; // CUtlVector<CPulse_OutflowConnection>
}
// Parent: None
@@ -1072,20 +1072,20 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseGraphDef {
constexpr std::ptrdiff_t m_DomainIdentifier = 0x8; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_ParentMapName = 0x10; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_ParentXmlName = 0x18; // CUtlSymbolLarge
constexpr std::ptrdiff_t m_vecGameBlackboards = 0x20; // CUtlVector<CUtlSymbolLarge>
constexpr std::ptrdiff_t m_Chunks = 0x38; // CUtlVector<CPulse_Chunk*>
constexpr std::ptrdiff_t m_Cells = 0x50; // CUtlVector<CPulseCell_Base*>
constexpr std::ptrdiff_t m_Vars = 0x68; // CUtlVector<CPulse_Variable>
constexpr std::ptrdiff_t m_PublicOutputs = 0x80; // CUtlVector<CPulse_PublicOutput>
constexpr std::ptrdiff_t m_InvokeBindings = 0x98; // CUtlVector<CPulse_InvokeBinding*>
constexpr std::ptrdiff_t m_CallInfos = 0xB0; // CUtlVector<CPulse_CallInfo*>
constexpr std::ptrdiff_t m_Constants = 0xC8; // CUtlVector<CPulse_Constant>
constexpr std::ptrdiff_t m_DomainValues = 0xE0; // CUtlVector<CPulse_DomainValue>
constexpr std::ptrdiff_t m_BlackboardReferences = 0xF8; // CUtlVector<CPulse_BlackboardReference>
constexpr std::ptrdiff_t m_OutputConnections = 0x110; // CUtlVector<CPulse_OutputConnection*>
constexpr std::ptrdiff_t m_DomainIdentifier = 0x8; //
constexpr std::ptrdiff_t m_ParentMapName = 0x10; //
constexpr std::ptrdiff_t m_ParentXmlName = 0x18; //
constexpr std::ptrdiff_t m_vecGameBlackboards = 0x20; //
constexpr std::ptrdiff_t m_Chunks = 0x38; //
constexpr std::ptrdiff_t m_Cells = 0x50; //
constexpr std::ptrdiff_t m_Vars = 0x68; //
constexpr std::ptrdiff_t m_PublicOutputs = 0x80; //
constexpr std::ptrdiff_t m_InvokeBindings = 0x98; //
constexpr std::ptrdiff_t m_CallInfos = 0xB0; //
constexpr std::ptrdiff_t m_Constants = 0xC8; //
constexpr std::ptrdiff_t m_DomainValues = 0xE0; //
constexpr std::ptrdiff_t m_BlackboardReferences = 0xF8; //
constexpr std::ptrdiff_t m_OutputConnections = 0x110; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 0
@@ -1103,8 +1103,8 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulse_Constant {
constexpr std::ptrdiff_t m_Type = 0x0; // CPulseValueFullType
constexpr std::ptrdiff_t m_Value = 0x10; // KeyValues3
constexpr std::ptrdiff_t m_Type = 0x0; //
constexpr std::ptrdiff_t m_Value = 0x10; //
}
// Parent: CPulseCell_WaitForCursorsWithTagBase
// Field count: 2
@@ -1118,8 +1118,8 @@ namespace cs2_dumper {
// MPropertyDescription
// MPulseEditorHeaderIcon
namespace CPulseCell_WaitForCursorsWithTag {
constexpr std::ptrdiff_t m_bTagSelfWhenComplete = 0x80; // bool
constexpr std::ptrdiff_t m_nDesiredKillPriority = 0x84; // PulseCursorCancelPriority_t
constexpr std::ptrdiff_t m_bTagSelfWhenComplete = 0x80; //
constexpr std::ptrdiff_t m_nDesiredKillPriority = 0x84; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 2
@@ -1127,13 +1127,13 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_Inflow_BaseEntrypoint {
constexpr std::ptrdiff_t m_EntryChunk = 0x48; // PulseRuntimeChunkIndex_t
constexpr std::ptrdiff_t m_RegisterMap = 0x50; // PulseRegisterMap_t
constexpr std::ptrdiff_t m_EntryChunk = 0x48; //
constexpr std::ptrdiff_t m_RegisterMap = 0x50; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeCallInfoIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: CPulseCell_BaseYieldingInflow
// Field count: 1
@@ -1141,7 +1141,7 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseCell_BaseLerp {
constexpr std::ptrdiff_t m_WakeResume = 0x48; // CPulse_ResumePoint
constexpr std::ptrdiff_t m_WakeResume = 0x48; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 2
@@ -1154,8 +1154,8 @@ namespace cs2_dumper {
// MPropertyFriendlyName
// MPropertyDescription
namespace CPulseCell_Outflow_TestExplicitYesNo {
constexpr std::ptrdiff_t m_Yes = 0x48; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_No = 0x78; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_Yes = 0x48; //
constexpr std::ptrdiff_t m_No = 0x78; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 2
@@ -1168,8 +1168,8 @@ namespace cs2_dumper {
// MPropertyFriendlyName
// MPropertyDescription
namespace CPulseCell_Outflow_TestRandomYesNo {
constexpr std::ptrdiff_t m_Yes = 0x48; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_No = 0x78; // CPulse_OutflowConnection
constexpr std::ptrdiff_t m_Yes = 0x48; //
constexpr std::ptrdiff_t m_No = 0x78; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 0
@@ -1184,7 +1184,7 @@ namespace cs2_dumper {
// Parent: None
// Field count: 1
namespace PulseRuntimeChunkIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int32
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: CPulseCell_BaseFlow
// Field count: 1
@@ -1203,14 +1203,14 @@ namespace cs2_dumper {
// Metadata:
// MGetKV3ClassDefaults
namespace CPulseRuntimeMethodArg {
constexpr std::ptrdiff_t m_Name = 0x0; // CKV3MemberNameWithStorage
constexpr std::ptrdiff_t m_Description = 0x38; // CUtlString
constexpr std::ptrdiff_t m_Type = 0x40; // CPulseValueFullType
constexpr std::ptrdiff_t m_Name = 0x0; //
constexpr std::ptrdiff_t m_Description = 0x38; //
constexpr std::ptrdiff_t m_Type = 0x40; //
}
// Parent: None
// Field count: 1
namespace PulseRuntimeStateOffset_t {
constexpr std::ptrdiff_t m_Value = 0x0; // uint16
constexpr std::ptrdiff_t m_Value = 0x0; //
}
// Parent: CPulseCell_BaseValue
// Field count: 0
@@ -1231,10 +1231,10 @@ namespace cs2_dumper {
// Metadata:
// MPulseLibraryBindings
namespace CPulseTurtleGraphicsCursor {
constexpr std::ptrdiff_t m_Color = 0xA8; // Color
constexpr std::ptrdiff_t m_vPos = 0xAC; // Vector2D
constexpr std::ptrdiff_t m_flHeadingDeg = 0xB4; // float32
constexpr std::ptrdiff_t m_bPenUp = 0xB8; // bool
constexpr std::ptrdiff_t m_Color = 0xA8; //
constexpr std::ptrdiff_t m_vPos = 0xAC; //
constexpr std::ptrdiff_t m_flHeadingDeg = 0xB4; //
constexpr std::ptrdiff_t m_bPenUp = 0xB8; //
}
}
}