Kodi Docs 20.0
Kodi is an open source media player and entertainment hub.
ADDON Namespace Reference

Namespaces

namespace  AddonEvents
 
namespace  GUI
 

Classes

struct  AddonEvent
 
struct  AddonIdFinder
 
class  AddonVersion
 
class  CAddon
 
class  CAddonBuilder
 
class  CAddonDatabase
 
class  CAddonDatabaseSerializer
 Addon content serializer/deserializer. More...
 
class  CAddonDll
 
class  CAddonDllInformer
 Information class for use on addon type managers. More...
 
class  CAddonExtensions
 
class  CAddonGUITranslator
 Translates data types from GUI API to the corresponding format in Kodi. More...
 
class  CAddonInfo
 
class  CAddonInfoBuilder
 
class  CAddonInstaller
 
class  CAddonInstallJob
 
class  CAddonMgr
 
class  CAddonRepos
 
class  CAddonSettings
 
class  CAddonStatusHandler
 
class  CAddonSystemSettings
 
class  CAddonType
 
class  CAddonUnInstallJob
 
class  CAddonUpdateRules
 
struct  CAddonWithUpdate
 
class  CBinaryAddonBase
 
class  CBinaryAddonCache
 
class  CBinaryAddonManager
 
class  CContextMenuAddon
 
class  CExtValues
 
class  CFontResource
 
class  CGameResource
 
class  CGUIAddonRenderingControl
 
class  CGUIAddonWindow
 
class  CGUIAddonWindowDialog
 
class  CImageDecoder
 
class  CImageResource
 A collection of images. The collection can have a type. More...
 
class  CLanguageResource
 
struct  closestRes
 
struct  ContentMapping
 
class  CPluginSource
 
class  CRepository
 
class  CRepositoryUpdateJob
 
class  CRepositoryUpdater
 
class  CResource
 
class  CScraper
 
class  CScraperError
 
class  CScreenSaver
 
class  CService
 
class  CServiceAddonManager
 
class  CSettingUrlEncodedString
 
class  CSkinInfo
 
class  CSkinSetting
 
class  CSkinSettingBool
 
class  CSkinSettingString
 
class  CSkinSettingUpdateHandler
 
class  CUISoundsResource
 
class  CVFSAddonCache
 
class  CVFSEntry
 A virtual filesystem entry add-on. More...
 
class  CVFSEntryIDirectoryWrapper
 Wrapper equpping a CVFSEntry with an IDirectory interface. More...
 
class  CVFSEntryIFileDirectoryWrapper
 Wrapper equpping a CVFSEntry with an IFileDirectory interface. More...
 
class  CVFSEntryIFileWrapper
 Wrapper equipping a CVFSEntry with an IFile interface. More...
 
class  CVFSURLWrapper
 
class  CVisualization
 
class  CWebinterface
 
struct  DependencyInfo
 
class  IAddon
 
class  IAddonInstanceHandler
 
class  IAddonMgrCallback
 
class  IAddonProvider
 
struct  Interface_Android
 
struct  Interface_AudioEngine
 
struct  Interface_Base
 Global general Add-on to Kodi callback functions. More...
 
struct  Interface_Filesystem
 
struct  Interface_General
 Global general Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlAddonRendering
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlButton
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlEdit
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlFadeLabel
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlImage
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlLabel
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlProgress
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlRadioButton
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlSettingsSlider
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlSlider
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlSpin
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIControlTextBox
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogContextMenu
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogExtendedProgress
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogFileBrowser
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogKeyboard
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogNumeric
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogOK
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogProgress
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogSelect
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogTextViewer
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIDialogYesNo
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIGeneral
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIListItem
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_GUIWindow
 Global gui Add-on to Kodi callback functions. More...
 
struct  Interface_Network
 Global general Add-on to Kodi callback functions. More...
 
struct  RepoInfo
 
struct  SExtValue
 
struct  TypeMapping
 

Typedefs

typedef std::vector< AddonPtrVECADDONS
 
typedef std::vector< AddonPtr >::iterator IVECADDONS
 
typedef std::vector< std::pair< std::string, CAddonExtensions > > EXT_ELEMENTS
 
typedef std::vector< std::pair< std::string, SExtValue > > EXT_VALUE
 
typedef std::vector< std::pair< std::string, CExtValues > > EXT_VALUES
 
typedef std::shared_ptr< CAddonInfoAddonInfoPtr
 
typedef std::vector< AddonInfoPtrAddonInfos
 
typedef std::map< std::string, std::string > InfoMap
 
typedef std::map< std::string, std::string > ArtMap
 
typedef std::map< TYPE, VECADDONSMAPADDONS
 
typedef std::map< TYPE, VECADDONS >::iterator IMAPADDONS
 
typedef std::map< std::string, AddonInfoPtrADDON_INFO_LIST
 
using ADDON_INSTANCE_HANDLER = const void *
 
typedef std::shared_ptr< CAddonDllAddonDllPtr
 
typedef std::shared_ptr< CBinaryAddonBaseBinaryAddonBasePtr
 
typedef std::shared_ptr< IAddonAddonPtr
 
typedef std::shared_ptr< CInstanceVisualization > VizPtr
 
typedef std::shared_ptr< CSkinInfoSkinPtr
 
typedef std::shared_ptr< CPluginSourcePluginPtr
 
typedef void *(* ADDON_GET_INTERFACE_FN) (const std::string &name, const std::string &version)
 
typedef std::map< std::string, std::vector< std::string > > ContentPathMap
 
typedef std::shared_ptr< CRepositoryRepositoryPtr
 
typedef std::shared_ptr< CScraperScraperPtr
 
typedef std::shared_ptr< CSkinSettingCSkinSettingPtr
 
typedef std::shared_ptr< CSkinSettingStringCSkinSettingStringPtr
 
typedef std::shared_ptr< CSkinSettingBoolCSkinSettingBoolPtr
 
typedef std::shared_ptr< CVFSEntryVFSEntryPtr
 
typedef enum ADDON::WebinterfaceType WebinterfaceType
 

Enumerations

enum class  AddonDisabledReason { NONE = 0 , USER = 1 , INCOMPATIBLE = 2 , PERMANENT_FAILURE = 3 }
 
enum class  AddonOriginType { SYSTEM = 0 , REPOSITORY = 1 , MANUAL = 2 }
 
enum class  AddonUpdateRule { ANY = 0 , USER_DISABLED_AUTO_UPDATE = 1 , PIN_OLD_VERSION = 2 , PIN_ZIP_INSTALL = 3 }
 Reasons why an addon is not updateable. More...
 
enum class  AddonLifecycleState { NORMAL = 0 , DEPRECATED = 1 , BROKEN = 2 }
 Add-on state defined within addon.xml to report about the current addon lifecycle state. More...
 
enum  TYPE {
  ADDON_UNKNOWN , ADDON_VIZ , ADDON_SKIN , ADDON_PVRDLL ,
  ADDON_INPUTSTREAM , ADDON_GAMEDLL , ADDON_PERIPHERALDLL , ADDON_SCRIPT ,
  ADDON_SCRIPT_WEATHER , ADDON_SUBTITLE_MODULE , ADDON_SCRIPT_LYRICS , ADDON_SCRAPER_ALBUMS ,
  ADDON_SCRAPER_ARTISTS , ADDON_SCRAPER_MOVIES , ADDON_SCRAPER_MUSICVIDEOS , ADDON_SCRAPER_TVSHOWS ,
  ADDON_SCREENSAVER , ADDON_PLUGIN , ADDON_REPOSITORY , ADDON_WEB_INTERFACE ,
  ADDON_SERVICE , ADDON_AUDIOENCODER , ADDON_CONTEXT_ITEM , ADDON_AUDIODECODER ,
  ADDON_RESOURCE_IMAGES , ADDON_RESOURCE_LANGUAGE , ADDON_RESOURCE_UISOUNDS , ADDON_RESOURCE_GAMES ,
  ADDON_RESOURCE_FONT , ADDON_VFS , ADDON_IMAGEDECODER , ADDON_SCRAPER_LIBRARY ,
  ADDON_SCRIPT_LIBRARY , ADDON_SCRIPT_MODULE , ADDON_GAME_CONTROLLER , ADDON_VIDEOCODEC ,
  ADDON_VIDEO , ADDON_AUDIO , ADDON_IMAGE , ADDON_EXECUTABLE ,
  ADDON_GAME , ADDON_MAX
}
 
enum class  BackgroundJob : bool { YES = true , NO = false }
 
enum class  ModalJob : bool { YES = true , NO = false }
 
enum class  AutoUpdateJob : bool { YES = true , NO = false }
 
enum class  DependencyJob : bool { YES = true , NO = false }
 
enum class  InstallModalPrompt : bool { PROMPT = true , NO_PROMPT = false }
 
enum class  AllowCheckForUpdates : bool { YES = true , NO = false }
 
enum class  RecurseOrphaned : bool { YES = true , NO = false }
 
enum class  AddonCheckType { OUTDATED_ADDONS , AVAILABLE_UPDATES }
 
enum class  OnlyEnabled : bool { YES = true , NO = false }
 
enum class  OnlyEnabledRootAddon : bool { YES = true , NO = false }
 
enum class  CheckIncompatible : bool { YES = true , NO = false }
 
enum class  CheckAddonPath { YES , NO }
 
enum class  AddonRepoUpdateMode { OFFICIAL_ONLY = 0 , ANY_REPOSITORY = 1 }
 
enum  WebinterfaceType { WebinterfaceTypeStatic = 0 , WebinterfaceTypeWsgi }
 

Functions

template<class TSetting >
bool GetSettingValue (CAddon &addon, const std::string &key, typename TSetting::Value &value)
 
template<class TSetting >
bool UpdateSettingValue (CAddon &addon, const std::string &key, typename TSetting::Value value)
 
void OnPreInstall (const AddonPtr &addon)
 
void OnPostInstall (const AddonPtr &addon, bool update, bool modal)
 
void OnPreUnInstall (const AddonPtr &addon)
 
void OnPostUnInstall (const AddonPtr &addon)
 
std::string TranslateContent (const CONTENT_TYPE &type, bool pretty)
 
CONTENT_TYPE TranslateContent (const std::string &string)
 
TYPE ScraperTypeFromContent (const CONTENT_TYPE &content)
 
template<>
CScraperUrl FromFileItem< CScraperUrl > (const CFileItem &item)
 
template<>
CMusicAlbumInfo FromFileItem< CMusicAlbumInfo > (const CFileItem &item)
 
template<>
CMusicArtistInfo FromFileItem< CMusicArtistInfo > (const CFileItem &item)
 
template<>
void DetailsFromFileItem< CAlbum > (const CFileItem &item, CAlbum &album)
 
template<>
void DetailsFromFileItem< CArtist > (const CFileItem &item, CArtist &artist)
 
template<>
void DetailsFromFileItem< CVideoInfoTag > (const CFileItem &item, CVideoInfoTag &tag)
 

Variables

const char *const ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda"
 
constexpr const char * KODI_ADDON_DEFAULT_LANGUAGE_CODE = "en_GB"
 
const std::string ADDON_PYTHON_EXT = "*.py"
 
const int AUTO_UPDATES_ON = 0
 
const int AUTO_UPDATES_NOTIFY = 1
 
const int AUTO_UPDATES_NEVER = 2
 
const std::vector< TYPEADDONS_TO_CACHE = {ADDON_GAMEDLL}
 

Typedef Documentation

◆ ADDON_GET_INTERFACE_FN

typedef void *(* ADDON::ADDON_GET_INTERFACE_FN) (const std::string &name, const std::string &version)

◆ ADDON_INFO_LIST

typedef std::map<std::string, AddonInfoPtr> ADDON::ADDON_INFO_LIST

◆ ADDON_INSTANCE_HANDLER

using ADDON::ADDON_INSTANCE_HANDLER = typedef const void*

Addon instance handler, used as identify for std::map to find related addon instance. This class itself not accessed here.

Todo:
As long game addon system use CAddonDll itself and not IAddonInstanceHandler as parent, is the set of this as "void*" needed. After game system is changed should by this also changed to "const IAddonInstanceHandler*" or direct in map below.

◆ AddonDllPtr

typedef std::shared_ptr< CAddonDll > ADDON::AddonDllPtr

◆ AddonInfoPtr

typedef std::shared_ptr< CAddonInfo > ADDON::AddonInfoPtr

◆ AddonInfos

typedef std::vector<AddonInfoPtr> ADDON::AddonInfos

◆ AddonPtr

typedef std::shared_ptr< IAddon > ADDON::AddonPtr

◆ ArtMap

typedef std::map<std::string, std::string> ADDON::ArtMap

◆ BinaryAddonBasePtr

typedef std::shared_ptr<CBinaryAddonBase> ADDON::BinaryAddonBasePtr

◆ ContentPathMap

typedef std::map<std::string, std::vector<std::string> > ADDON::ContentPathMap

◆ CSkinSettingBoolPtr

typedef std::shared_ptr<CSkinSettingBool> ADDON::CSkinSettingBoolPtr

◆ CSkinSettingPtr

typedef std::shared_ptr<CSkinSetting> ADDON::CSkinSettingPtr

◆ CSkinSettingStringPtr

◆ EXT_ELEMENTS

typedef std::vector<std::pair<std::string, CAddonExtensions> > ADDON::EXT_ELEMENTS

◆ EXT_VALUE

typedef std::vector<std::pair<std::string, SExtValue> > ADDON::EXT_VALUE

◆ EXT_VALUES

typedef std::vector<std::pair<std::string, CExtValues> > ADDON::EXT_VALUES

◆ IMAPADDONS

typedef std::map<TYPE,VECADDONS>::iterator ADDON::IMAPADDONS

◆ InfoMap

typedef std::map<std::string, std::string> ADDON::InfoMap

◆ IVECADDONS

typedef std::vector<AddonPtr>::iterator ADDON::IVECADDONS

◆ MAPADDONS

typedef std::map<TYPE, VECADDONS> ADDON::MAPADDONS

◆ PluginPtr

typedef std::shared_ptr<CPluginSource> ADDON::PluginPtr

◆ RepositoryPtr

typedef std::shared_ptr<CRepository> ADDON::RepositoryPtr

◆ ScraperPtr

typedef std::shared_ptr<CScraper> ADDON::ScraperPtr

◆ SkinPtr

typedef std::shared_ptr<CSkinInfo> ADDON::SkinPtr

◆ VECADDONS

typedef std::vector<AddonPtr> ADDON::VECADDONS

◆ VFSEntryPtr

typedef std::shared_ptr<CVFSEntry> ADDON::VFSEntryPtr

◆ VizPtr

typedef std::shared_ptr<CInstanceVisualization> ADDON::VizPtr

◆ WebinterfaceType

Enumeration Type Documentation

◆ AddonCheckType

enum class ADDON::AddonCheckType
strong
Enumerator
OUTDATED_ADDONS 
AVAILABLE_UPDATES 

◆ AddonDisabledReason

enum class ADDON::AddonDisabledReason
strong
Enumerator
NONE 

Special reason for returning all disabled addons.

Only used as an actual value when an addon is enabled.

USER 
INCOMPATIBLE 
PERMANENT_FAILURE 

◆ AddonLifecycleState

enum class ADDON::AddonLifecycleState
strong

Add-on state defined within addon.xml to report about the current addon lifecycle state.

E.g. the add-on is broken and can no longer be used.

XML examples:

<lifecyclestate type="broken" lang="en_GB">SOME TEXT</lifecyclestate>
Enumerator
NORMAL 

Used if an add-on has no special lifecycle state which is the default state.

DEPRECATED 

the add-on should be marked as deprecated but is still usable

BROKEN 

the add-on should marked as broken in the repository

◆ AddonOriginType

enum class ADDON::AddonOriginType
strong
Enumerator
SYSTEM 

The type of the origin of an addon.

Represents where an addon was installed from.

REPOSITORY 

The addon is a system addon.

MANUAL 

The addon origin is a repository.

◆ AddonRepoUpdateMode

enum class ADDON::AddonRepoUpdateMode
strong
Enumerator
OFFICIAL_ONLY 
ANY_REPOSITORY 

◆ AddonUpdateRule

enum class ADDON::AddonUpdateRule
strong

Reasons why an addon is not updateable.

Enumerator
ANY 

used internally, not to be explicitly set

USER_DISABLED_AUTO_UPDATE 

automatic updates disabled via AddonInfo dialog

PIN_OLD_VERSION 

user downgraded to an older version

PIN_ZIP_INSTALL 

user installed manually from zip

◆ AllowCheckForUpdates

enum class ADDON::AllowCheckForUpdates : bool
strong
Enumerator
YES 
NO 

◆ AutoUpdateJob

enum class ADDON::AutoUpdateJob : bool
strong
Enumerator
YES 
NO 

◆ BackgroundJob

enum class ADDON::BackgroundJob : bool
strong
Enumerator
YES 
NO 

◆ CheckAddonPath

enum class ADDON::CheckAddonPath
strong
Enumerator
YES 
NO 

◆ CheckIncompatible

enum class ADDON::CheckIncompatible : bool
strong
Enumerator
YES 
NO 

◆ DependencyJob

enum class ADDON::DependencyJob : bool
strong
Enumerator
YES 
NO 

◆ InstallModalPrompt

enum class ADDON::InstallModalPrompt : bool
strong
Enumerator
PROMPT 
NO_PROMPT 

◆ ModalJob

enum class ADDON::ModalJob : bool
strong
Enumerator
YES 
NO 

◆ OnlyEnabled

enum class ADDON::OnlyEnabled : bool
strong
Enumerator
YES 
NO 

◆ OnlyEnabledRootAddon

enum class ADDON::OnlyEnabledRootAddon : bool
strong
Enumerator
YES 
NO 

◆ RecurseOrphaned

enum class ADDON::RecurseOrphaned : bool
strong
Enumerator
YES 
NO 

◆ TYPE

Enumerator
ADDON_UNKNOWN 
ADDON_VIZ 
ADDON_SKIN 
ADDON_PVRDLL 
ADDON_INPUTSTREAM 
ADDON_GAMEDLL 
ADDON_PERIPHERALDLL 
ADDON_SCRIPT 
ADDON_SCRIPT_WEATHER 
ADDON_SUBTITLE_MODULE 
ADDON_SCRIPT_LYRICS 
ADDON_SCRAPER_ALBUMS 
ADDON_SCRAPER_ARTISTS 
ADDON_SCRAPER_MOVIES 
ADDON_SCRAPER_MUSICVIDEOS 
ADDON_SCRAPER_TVSHOWS 
ADDON_SCREENSAVER 
ADDON_PLUGIN 
ADDON_REPOSITORY 
ADDON_WEB_INTERFACE 
ADDON_SERVICE 
ADDON_AUDIOENCODER 
ADDON_CONTEXT_ITEM 
ADDON_AUDIODECODER 
ADDON_RESOURCE_IMAGES 
ADDON_RESOURCE_LANGUAGE 
ADDON_RESOURCE_UISOUNDS 
ADDON_RESOURCE_GAMES 
ADDON_RESOURCE_FONT 
ADDON_VFS 
ADDON_IMAGEDECODER 
ADDON_SCRAPER_LIBRARY 
ADDON_SCRIPT_LIBRARY 
ADDON_SCRIPT_MODULE 
ADDON_GAME_CONTROLLER 
ADDON_VIDEOCODEC 
ADDON_VIDEO 

virtual addon types

ADDON_AUDIO 
ADDON_IMAGE 
ADDON_EXECUTABLE 
ADDON_GAME 
ADDON_MAX 

◆ WebinterfaceType

Enumerator
WebinterfaceTypeStatic 
WebinterfaceTypeWsgi 

Function Documentation

◆ DetailsFromFileItem< CAlbum >()

template<>
void ADDON::DetailsFromFileItem< CAlbum > ( const CFileItem item,
CAlbum album 
)

◆ DetailsFromFileItem< CArtist >()

template<>
void ADDON::DetailsFromFileItem< CArtist > ( const CFileItem item,
CArtist artist 
)

◆ DetailsFromFileItem< CVideoInfoTag >()

template<>
void ADDON::DetailsFromFileItem< CVideoInfoTag > ( const CFileItem item,
CVideoInfoTag tag 
)

◆ FromFileItem< CMusicAlbumInfo >()

template<>
CMusicAlbumInfo ADDON::FromFileItem< CMusicAlbumInfo > ( const CFileItem item)

◆ FromFileItem< CMusicArtistInfo >()

template<>
CMusicArtistInfo ADDON::FromFileItem< CMusicArtistInfo > ( const CFileItem item)

◆ FromFileItem< CScraperUrl >()

template<>
CScraperUrl ADDON::FromFileItem< CScraperUrl > ( const CFileItem item)

◆ GetSettingValue()

template<class TSetting >
bool ADDON::GetSettingValue ( CAddon addon,
const std::string &  key,
typename TSetting::Value &  value 
)

◆ OnPostInstall()

void ADDON::OnPostInstall ( const AddonPtr addon,
bool  update,
bool  modal 
)

◆ OnPostUnInstall()

void ADDON::OnPostUnInstall ( const AddonPtr addon)

◆ OnPreInstall()

void ADDON::OnPreInstall ( const AddonPtr addon)
Bug:
If primary extension point have changed we're calling the wrong method.

◆ OnPreUnInstall()

void ADDON::OnPreUnInstall ( const AddonPtr addon)

◆ ScraperTypeFromContent()

TYPE ADDON::ScraperTypeFromContent ( const CONTENT_TYPE content)

◆ TranslateContent() [1/2]

std::string ADDON::TranslateContent ( const CONTENT_TYPE type,
bool  pretty 
)

◆ TranslateContent() [2/2]

CONTENT_TYPE ADDON::TranslateContent ( const std::string &  string)

◆ UpdateSettingValue()

template<class TSetting >
bool ADDON::UpdateSettingValue ( CAddon addon,
const std::string &  key,
typename TSetting::Value  value 
)

Variable Documentation

◆ ADDON_PYTHON_EXT

const std::string ADDON::ADDON_PYTHON_EXT = "*.py"

◆ ADDONS_TO_CACHE

const std::vector<TYPE> ADDON::ADDONS_TO_CACHE = {ADDON_GAMEDLL}

◆ AUTO_UPDATES_NEVER

const int ADDON::AUTO_UPDATES_NEVER = 2

◆ AUTO_UPDATES_NOTIFY

const int ADDON::AUTO_UPDATES_NOTIFY = 1

◆ AUTO_UPDATES_ON

const int ADDON::AUTO_UPDATES_ON = 0

◆ KODI_ADDON_DEFAULT_LANGUAGE_CODE

constexpr const char* ADDON::KODI_ADDON_DEFAULT_LANGUAGE_CODE = "en_GB"
constexpr

Defines the default language code used as fallback in case the requested language is not available. Used, for instance, to handle content from addon.xml.

◆ ORIGIN_SYSTEM

const char* const ADDON::ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda"