#pragma autorecover
#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Powershellv3")

Instance of __Win32Provider as $prov
{
  Name = "DiscoveryProvider";
  ClsId = "{442FF639-3DA0-4A70-A1D8-579E26C46A60}";
  ImpersonationLevel = 1;
  HostingModel = "NetworkServiceHost";
  version = 1073741825;
};

Instance of __InstanceProviderRegistration
{
  Provider = $prov;
  supportsGet = TRUE;
  supportsPut = TRUE;
  supportsDelete = TRUE;
  supportsEnumeration = TRUE;
  QuerySupportLevels = {"WQL:UnarySelect"};
};

[Association,Abstract,UMLPackagePath("CIM::Core::CoreElements") : ToSubclass,locale(1033)] 
class CIM_Dependency
{
  [key] CIM_ManagedElement Ref Antecedent;
  [key] CIM_ManagedElement Ref Dependent;
};

[Abstract,UMLPackagePath("CIM::Core::CoreElements") : ToSubclass,locale(1033)] 
class CIM_ManagedElement
{
  string InstanceID;
  [MaxLen(64) : ToSubclass] string Caption;
  string Description;
  string ElementName;
};

[UMLPackagePath("CIM::Core::CoreElements") : ToSubclass,ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DiscoveryProvider") : ToInstance] 
class PS_Module : CIM_ManagedElement
{
  [key,Override("instanceID")] string InstanceID;
  string ModuleName;
  [ValueMap{"0", "1"} : ToSubclass] uint16 moduleType;
  [Octetstring : ToSubclass DisableOverride] uint8 moduleManifestFileData[];
};

[UMLPackagePath("CIM::Core::CoreElements") : ToSubclass,ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DiscoveryProvider") : ToInstance] 
class PS_ModuleFile : CIM_ManagedElement
{
  [key,Override("instanceID")] string InstanceID;
  string FileName;
  [Octetstring : ToSubclass DisableOverride] uint8 FileData[];
};

[Association,UMLPackagePath("CIM::Core::CoreElements") : ToSubclass,ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DiscoveryProvider") : ToInstance] 
class PS_ModuleToModuleFile : CIM_Dependency
{
  [key,Override("Antecedent")] PS_Module Ref Antecedent;
  [key,Override("Dependent")] PS_ModuleFile Ref Dependent;
};
