/* launcher.c generated by valac 0.56.19, the Vala compiler
 * generated from launcher.vala, do not modify */

#include <glib-object.h>
#include <gio/gio.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>
#include <glib/gstdio.h>
#include <json-glib/json-glib.h>
#include <gobject/gvaluecollector.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define PROTON_PLUS_MODELS_TYPE_LAUNCHER (proton_plus_models_launcher_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncher))
#define PROTON_PLUS_MODELS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))
#define PROTON_PLUS_MODELS_IS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_IS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))

typedef struct _ProtonPlusModelsLauncher ProtonPlusModelsLauncher;
typedef struct _ProtonPlusModelsLauncherClass ProtonPlusModelsLauncherClass;
typedef struct _ProtonPlusModelsLauncherPrivate ProtonPlusModelsLauncherPrivate;

#define PROTON_PLUS_MODELS_TYPE_GAME (proton_plus_models_game_get_type ())
#define PROTON_PLUS_MODELS_GAME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGame))
#define PROTON_PLUS_MODELS_GAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGameClass))
#define PROTON_PLUS_MODELS_IS_GAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_GAME))
#define PROTON_PLUS_MODELS_IS_GAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_GAME))
#define PROTON_PLUS_MODELS_GAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGameClass))

typedef struct _ProtonPlusModelsGame ProtonPlusModelsGame;
typedef struct _ProtonPlusModelsGameClass ProtonPlusModelsGameClass;

#define PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER (proton_plus_models_simple_runner_get_type ())
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunner))
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunnerClass))
#define PROTON_PLUS_MODELS_IS_SIMPLE_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER))
#define PROTON_PLUS_MODELS_IS_SIMPLE_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER))
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunnerClass))

typedef struct _ProtonPlusModelsSimpleRunner ProtonPlusModelsSimpleRunner;
typedef struct _ProtonPlusModelsSimpleRunnerClass ProtonPlusModelsSimpleRunnerClass;

#define PROTON_PLUS_MODELS_TYPE_GROUP (proton_plus_models_group_get_type ())
#define PROTON_PLUS_MODELS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroup))
#define PROTON_PLUS_MODELS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))
#define PROTON_PLUS_MODELS_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))

typedef struct _ProtonPlusModelsGroup ProtonPlusModelsGroup;
typedef struct _ProtonPlusModelsGroupClass ProtonPlusModelsGroupClass;
typedef enum  {
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM,
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK,
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP
} ProtonPlusModelsLauncherInstallationTypes;

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_INSTALLATION_TYPES (proton_plus_models_launcher_installation_types_get_type ())
enum  {
	PROTON_PLUS_MODELS_LAUNCHER_0_PROPERTY,
	PROTON_PLUS_MODELS_LAUNCHER_NUM_PROPERTIES
};
static GParamSpec* proton_plus_models_launcher_properties[PROTON_PLUS_MODELS_LAUNCHER_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM (proton_plus_models_launchers_steam_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHERS_STEAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM, ProtonPlusModelsLaunchersSteam))
#define PROTON_PLUS_MODELS_LAUNCHERS_STEAM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM, ProtonPlusModelsLaunchersSteamClass))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_STEAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_STEAM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM))
#define PROTON_PLUS_MODELS_LAUNCHERS_STEAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_STEAM, ProtonPlusModelsLaunchersSteamClass))

typedef struct _ProtonPlusModelsLaunchersSteam ProtonPlusModelsLaunchersSteam;
typedef struct _ProtonPlusModelsLaunchersSteamClass ProtonPlusModelsLaunchersSteamClass;
typedef struct _ProtonPlusModelsLauncherLoadGameLibraryData ProtonPlusModelsLauncherLoadGameLibraryData;
typedef struct _Block11Data Block11Data;

#define PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS (proton_plus_models_launchers_lutris_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHERS_LUTRIS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS, ProtonPlusModelsLaunchersLutris))
#define PROTON_PLUS_MODELS_LAUNCHERS_LUTRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS, ProtonPlusModelsLaunchersLutrisClass))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_LUTRIS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_LUTRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS))
#define PROTON_PLUS_MODELS_LAUNCHERS_LUTRIS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_LUTRIS, ProtonPlusModelsLaunchersLutrisClass))

typedef struct _ProtonPlusModelsLaunchersLutris ProtonPlusModelsLaunchersLutris;
typedef struct _ProtonPlusModelsLaunchersLutrisClass ProtonPlusModelsLaunchersLutrisClass;

#define PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES (proton_plus_models_launchers_bottles_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHERS_BOTTLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES, ProtonPlusModelsLaunchersBottles))
#define PROTON_PLUS_MODELS_LAUNCHERS_BOTTLES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES, ProtonPlusModelsLaunchersBottlesClass))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_BOTTLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_BOTTLES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES))
#define PROTON_PLUS_MODELS_LAUNCHERS_BOTTLES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_BOTTLES, ProtonPlusModelsLaunchersBottlesClass))

typedef struct _ProtonPlusModelsLaunchersBottles ProtonPlusModelsLaunchersBottles;
typedef struct _ProtonPlusModelsLaunchersBottlesClass ProtonPlusModelsLaunchersBottlesClass;

#define PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER (proton_plus_models_launchers_heroic_games_launcher_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHERS_HEROIC_GAMES_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER, ProtonPlusModelsLaunchersHeroicGamesLauncher))
#define PROTON_PLUS_MODELS_LAUNCHERS_HEROIC_GAMES_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER, ProtonPlusModelsLaunchersHeroicGamesLauncherClass))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_HEROIC_GAMES_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_HEROIC_GAMES_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER))
#define PROTON_PLUS_MODELS_LAUNCHERS_HEROIC_GAMES_LAUNCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_HEROIC_GAMES_LAUNCHER, ProtonPlusModelsLaunchersHeroicGamesLauncherClass))

typedef struct _ProtonPlusModelsLaunchersHeroicGamesLauncher ProtonPlusModelsLaunchersHeroicGamesLauncher;
typedef struct _ProtonPlusModelsLaunchersHeroicGamesLauncherClass ProtonPlusModelsLaunchersHeroicGamesLauncherClass;

#define PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI (proton_plus_models_launchers_wine_zgui_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHERS_WINE_ZGUI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI, ProtonPlusModelsLaunchersWineZGUI))
#define PROTON_PLUS_MODELS_LAUNCHERS_WINE_ZGUI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI, ProtonPlusModelsLaunchersWineZGUIClass))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_WINE_ZGUI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI))
#define PROTON_PLUS_MODELS_LAUNCHERS_IS_WINE_ZGUI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI))
#define PROTON_PLUS_MODELS_LAUNCHERS_WINE_ZGUI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHERS_TYPE_WINE_ZGUI, ProtonPlusModelsLaunchersWineZGUIClass))

typedef struct _ProtonPlusModelsLaunchersWineZGUI ProtonPlusModelsLaunchersWineZGUI;
typedef struct _ProtonPlusModelsLaunchersWineZGUIClass ProtonPlusModelsLaunchersWineZGUIClass;
typedef struct _ProtonPlusModelsLauncherGetAllData ProtonPlusModelsLauncherGetAllData;
#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
#define _json_array_unref0(var) ((var == NULL) ? NULL : (var = (json_array_unref (var), NULL)))

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM (proton_plus_models_launcher_json_group_item_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_GROUP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM, ProtonPlusModelsLauncherJsonGroupItem))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_GROUP_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM, ProtonPlusModelsLauncherJsonGroupItemClass))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_GROUP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_GROUP_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_GROUP_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM, ProtonPlusModelsLauncherJsonGroupItemClass))

typedef struct _ProtonPlusModelsLauncherJsonGroupItem ProtonPlusModelsLauncherJsonGroupItem;
typedef struct _ProtonPlusModelsLauncherJsonGroupItemClass ProtonPlusModelsLauncherJsonGroupItemClass;
typedef struct _ProtonPlusModelsLauncherJsonGroupItemPrivate ProtonPlusModelsLauncherJsonGroupItemPrivate;
#define _proton_plus_models_launcher_json_group_item_unref0(var) ((var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_group_item_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM (proton_plus_models_launcher_json_launcher_item_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM, ProtonPlusModelsLauncherJsonLauncherItem))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM, ProtonPlusModelsLauncherJsonLauncherItemClass))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_LAUNCHER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_LAUNCHER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM, ProtonPlusModelsLauncherJsonLauncherItemClass))

typedef struct _ProtonPlusModelsLauncherJsonLauncherItem ProtonPlusModelsLauncherJsonLauncherItem;
typedef struct _ProtonPlusModelsLauncherJsonLauncherItemClass ProtonPlusModelsLauncherJsonLauncherItemClass;

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM (proton_plus_models_launcher_json_launcher_group_item_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_GROUP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM, ProtonPlusModelsLauncherJsonLauncherGroupItem))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_GROUP_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM, ProtonPlusModelsLauncherJsonLauncherGroupItemClass))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_LAUNCHER_GROUP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_LAUNCHER_GROUP_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_GROUP_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM, ProtonPlusModelsLauncherJsonLauncherGroupItemClass))

typedef struct _ProtonPlusModelsLauncherJsonLauncherGroupItem ProtonPlusModelsLauncherJsonLauncherGroupItem;
typedef struct _ProtonPlusModelsLauncherJsonLauncherGroupItemClass ProtonPlusModelsLauncherJsonLauncherGroupItemClass;
typedef struct _ProtonPlusModelsLauncherJsonLauncherGroupItemPrivate ProtonPlusModelsLauncherJsonLauncherGroupItemPrivate;
#define _proton_plus_models_launcher_json_launcher_group_item_unref0(var) ((var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_launcher_group_item_unref (var), NULL)))
typedef struct _ProtonPlusModelsLauncherJsonLauncherItemPrivate ProtonPlusModelsLauncherJsonLauncherItemPrivate;
#define _proton_plus_models_launcher_json_launcher_item_unref0(var) ((var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_launcher_item_unref (var), NULL)))
typedef struct _ProtonPlusModelsGroupPrivate ProtonPlusModelsGroupPrivate;

#define PROTON_PLUS_MODELS_TYPE_RUNNER (proton_plus_models_runner_get_type ())
#define PROTON_PLUS_MODELS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunner))
#define PROTON_PLUS_MODELS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))
#define PROTON_PLUS_MODELS_IS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_IS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_RUNNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))

typedef struct _ProtonPlusModelsRunner ProtonPlusModelsRunner;
typedef struct _ProtonPlusModelsRunnerClass ProtonPlusModelsRunnerClass;

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM (proton_plus_models_launcher_json_runner_item_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_RUNNER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM, ProtonPlusModelsLauncherJsonRunnerItem))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_RUNNER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM, ProtonPlusModelsLauncherJsonRunnerItemClass))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_RUNNER_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_IS_JSON_RUNNER_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM))
#define PROTON_PLUS_MODELS_LAUNCHER_JSON_RUNNER_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM, ProtonPlusModelsLauncherJsonRunnerItemClass))

typedef struct _ProtonPlusModelsLauncherJsonRunnerItem ProtonPlusModelsLauncherJsonRunnerItem;
typedef struct _ProtonPlusModelsLauncherJsonRunnerItemClass ProtonPlusModelsLauncherJsonRunnerItemClass;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC (proton_plus_models_runners_basic_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_BASIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasic))
#define PROTON_PLUS_MODELS_RUNNERS_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasicClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_BASIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RUNNERS_IS_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RUNNERS_BASIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasicClass))

typedef struct _ProtonPlusModelsRunnersBasic ProtonPlusModelsRunnersBasic;
typedef struct _ProtonPlusModelsRunnersBasicClass ProtonPlusModelsRunnersBasicClass;
#define _proton_plus_models_launcher_json_runner_item_unref0(var) ((var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_runner_item_unref (var), NULL)))

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH (proton_plus_models_runners_steam_tinker_launch_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_STEAM_TINKER_LAUNCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsRunnersSteamTinkerLaunch))
#define PROTON_PLUS_MODELS_RUNNERS_STEAM_TINKER_LAUNCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsRunnersSteamTinkerLaunchClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_STEAM_TINKER_LAUNCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH))
#define PROTON_PLUS_MODELS_RUNNERS_IS_STEAM_TINKER_LAUNCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH))
#define PROTON_PLUS_MODELS_RUNNERS_STEAM_TINKER_LAUNCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsRunnersSteamTinkerLaunchClass))

typedef struct _ProtonPlusModelsRunnersSteamTinkerLaunch ProtonPlusModelsRunnersSteamTinkerLaunch;
typedef struct _ProtonPlusModelsRunnersSteamTinkerLaunchClass ProtonPlusModelsRunnersSteamTinkerLaunchClass;

#define PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE (proton_plus_models_steam_profile_get_type ())
#define PROTON_PLUS_MODELS_STEAM_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE, ProtonPlusModelsSteamProfile))
#define PROTON_PLUS_MODELS_STEAM_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE, ProtonPlusModelsSteamProfileClass))
#define PROTON_PLUS_MODELS_IS_STEAM_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE))
#define PROTON_PLUS_MODELS_IS_STEAM_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE))
#define PROTON_PLUS_MODELS_STEAM_PROFILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_STEAM_PROFILE, ProtonPlusModelsSteamProfileClass))

typedef struct _ProtonPlusModelsSteamProfile ProtonPlusModelsSteamProfile;
typedef struct _ProtonPlusModelsSteamProfileClass ProtonPlusModelsSteamProfileClass;
typedef struct _ProtonPlusModelsLaunchersSteamPrivate ProtonPlusModelsLaunchersSteamPrivate;
typedef struct _ProtonPlusModelsLauncherInitializeLaunchersData ProtonPlusModelsLauncherInitializeLaunchersData;
#define __vala_JsonNode_free0(var) ((var == NULL) ? NULL : (var = (_vala_JsonNode_free (var), NULL)))
typedef struct _ProtonPlusModelsLauncherGetRunnersJsonObjectData ProtonPlusModelsLauncherGetRunnersJsonObjectData;
typedef struct _ProtonPlusModelsLauncherJsonRunnerItemPrivate ProtonPlusModelsLauncherJsonRunnerItemPrivate;
typedef struct _ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData;
typedef struct _ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB (proton_plus_models_runners_git_hub_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB, ProtonPlusModelsRunnersGitHub))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB, ProtonPlusModelsRunnersGitHubClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_HUB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_HUB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB, ProtonPlusModelsRunnersGitHubClass))

typedef struct _ProtonPlusModelsRunnersGitHub ProtonPlusModelsRunnersGitHub;
typedef struct _ProtonPlusModelsRunnersGitHubClass ProtonPlusModelsRunnersGitHubClass;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION (proton_plus_models_runners_git_hub_action_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION, ProtonPlusModelsRunnersGitHubAction))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION, ProtonPlusModelsRunnersGitHubActionClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_HUB_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_HUB_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_HUB_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_HUB_ACTION, ProtonPlusModelsRunnersGitHubActionClass))

typedef struct _ProtonPlusModelsRunnersGitHubAction ProtonPlusModelsRunnersGitHubAction;
typedef struct _ProtonPlusModelsRunnersGitHubActionClass ProtonPlusModelsRunnersGitHubActionClass;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB (proton_plus_models_runners_git_lab_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_GIT_LAB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB, ProtonPlusModelsRunnersGitLab))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_LAB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB, ProtonPlusModelsRunnersGitLabClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_LAB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB))
#define PROTON_PLUS_MODELS_RUNNERS_IS_GIT_LAB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB))
#define PROTON_PLUS_MODELS_RUNNERS_GIT_LAB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_GIT_LAB, ProtonPlusModelsRunnersGitLabClass))

typedef struct _ProtonPlusModelsRunnersGitLab ProtonPlusModelsRunnersGitLab;
typedef struct _ProtonPlusModelsRunnersGitLabClass ProtonPlusModelsRunnersGitLabClass;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO (proton_plus_models_runners_forgejo_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_FORGEJO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO, ProtonPlusModelsRunnersForgejo))
#define PROTON_PLUS_MODELS_RUNNERS_FORGEJO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO, ProtonPlusModelsRunnersForgejoClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_FORGEJO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO))
#define PROTON_PLUS_MODELS_RUNNERS_IS_FORGEJO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO))
#define PROTON_PLUS_MODELS_RUNNERS_FORGEJO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_FORGEJO, ProtonPlusModelsRunnersForgejoClass))

typedef struct _ProtonPlusModelsRunnersForgejo ProtonPlusModelsRunnersForgejo;
typedef struct _ProtonPlusModelsRunnersForgejoClass ProtonPlusModelsRunnersForgejoClass;
typedef struct _ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData;
typedef struct _ProtonPlusModelsLauncherParamSpecJsonGroupItem ProtonPlusModelsLauncherParamSpecJsonGroupItem;
typedef struct _ProtonPlusModelsLauncherParamSpecJsonLauncherGroupItem ProtonPlusModelsLauncherParamSpecJsonLauncherGroupItem;
typedef struct _ProtonPlusModelsLauncherParamSpecJsonLauncherItem ProtonPlusModelsLauncherParamSpecJsonLauncherItem;
typedef struct _ProtonPlusModelsLauncherParamSpecJsonRunnerItem ProtonPlusModelsLauncherParamSpecJsonRunnerItem;

struct _ProtonPlusModelsLauncher {
	GObject parent_instance;
	ProtonPlusModelsLauncherPrivate * priv;
	gchar* title;
	gchar* icon_path;
	gchar* directory;
	gboolean installed;
	gboolean has_library_support;
	GList* games;
	GeeArrayList* compatibility_tools;
	ProtonPlusModelsGroup** groups;
	gint groups_length1;
	ProtonPlusModelsLauncherInstallationTypes installation_type;
};

struct _ProtonPlusModelsLauncherClass {
	GObjectClass parent_class;
	void (*load_game_library) (ProtonPlusModelsLauncher* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*load_game_library_finish) (ProtonPlusModelsLauncher* self, GAsyncResult* _res_);
	gint (*get_compatibility_tool_usage_count) (ProtonPlusModelsLauncher* self, const gchar* compatibility_tool_name);
};

struct _ProtonPlusModelsLauncherLoadGameLibraryData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ProtonPlusModelsLauncher* self;
	gboolean result;
};

struct _Block11Data {
	int _ref_count_;
	GList* _launchers;
	gpointer _async_data_;
};

struct _ProtonPlusModelsLauncherGetAllData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GList* launchers;
	gboolean result;
	Block11Data* _data11_;
	ProtonPlusModelsLaunchersSteam* _tmp0_;
	ProtonPlusModelsLaunchersSteam* _tmp1_;
	ProtonPlusModelsLaunchersSteam* _tmp2_;
	ProtonPlusModelsLaunchersLutris* _tmp3_;
	ProtonPlusModelsLaunchersLutris* _tmp4_;
	ProtonPlusModelsLaunchersBottles* _tmp5_;
	ProtonPlusModelsLaunchersBottles* _tmp6_;
	ProtonPlusModelsLaunchersHeroicGamesLauncher* _tmp7_;
	ProtonPlusModelsLaunchersHeroicGamesLauncher* _tmp8_;
	ProtonPlusModelsLaunchersWineZGUI* _tmp9_;
	ProtonPlusModelsLaunchersWineZGUI* _tmp10_;
	GList* _tmp11_;
	GList* _tmp12_;
	GList* _tmp13_;
	gboolean initialized;
	GList* _tmp14_;
};

struct _ProtonPlusModelsLauncherJsonGroupItem {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ProtonPlusModelsLauncherJsonGroupItemPrivate * priv;
	gchar* title;
	gchar* description;
	JsonArray* runners;
};

struct _ProtonPlusModelsLauncherJsonGroupItemClass {
	GTypeClass parent_class;
	void (*finalize) (ProtonPlusModelsLauncherJsonGroupItem *self);
};

struct _ProtonPlusModelsLauncherJsonLauncherGroupItem {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ProtonPlusModelsLauncherJsonLauncherGroupItemPrivate * priv;
	gchar* title;
	gchar* directory;
};

struct _ProtonPlusModelsLauncherJsonLauncherGroupItemClass {
	GTypeClass parent_class;
	void (*finalize) (ProtonPlusModelsLauncherJsonLauncherGroupItem *self);
};

struct _ProtonPlusModelsLauncherJsonLauncherItem {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ProtonPlusModelsLauncherJsonLauncherItemPrivate * priv;
	gchar* title;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** groups;
	gint groups_length1;
	gint _groups_size_;
};

struct _ProtonPlusModelsLauncherJsonLauncherItemClass {
	GTypeClass parent_class;
	void (*finalize) (ProtonPlusModelsLauncherJsonLauncherItem *self);
};

struct _ProtonPlusModelsGroup {
	GObject parent_instance;
	ProtonPlusModelsGroupPrivate * priv;
	GList* runners;
};

struct _ProtonPlusModelsGroupClass {
	GObjectClass parent_class;
};

struct _ProtonPlusModelsLaunchersSteam {
	ProtonPlusModelsLauncher parent_instance;
	ProtonPlusModelsLaunchersSteamPrivate * priv;
	GList* profiles;
	GHashTable* compatibility_tool_hashtable;
};

struct _ProtonPlusModelsLaunchersSteamClass {
	ProtonPlusModelsLauncherClass parent_class;
};

struct _ProtonPlusModelsLauncherInitializeLaunchersData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	GList* launchers;
	gboolean result;
	JsonObject* root_object;
	JsonObject* _tmp0_;
	JsonObject* _tmp1_;
	JsonArray* groups_array;
	JsonObject* _tmp2_;
	JsonArray* _tmp3_;
	JsonArray* _tmp4_;
	JsonArray* _tmp5_;
	guint groups_length;
	JsonArray* _tmp6_;
	GHashTable* json_group_items;
	GHashFunc _tmp7_;
	GEqualFunc _tmp8_;
	GHashTable* _tmp9_;
	gint i;
	gboolean _tmp10_;
	gint _tmp11_;
	JsonObject* group_object;
	JsonArray* _tmp12_;
	JsonObject* _tmp13_;
	JsonObject* _tmp14_;
	ProtonPlusModelsLauncherJsonGroupItem* json_group_item;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp15_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp16_;
	JsonObject* _tmp17_;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp20_;
	JsonObject* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp24_;
	JsonObject* _tmp25_;
	JsonArray* _tmp26_;
	JsonArray* _tmp27_;
	GHashTable* _tmp28_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp29_;
	const gchar* _tmp30_;
	gchar* _tmp31_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp32_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp33_;
	JsonArray* launchers_array;
	JsonObject* _tmp34_;
	JsonArray* _tmp35_;
	JsonArray* _tmp36_;
	JsonArray* _tmp37_;
	guint launchers_length;
	JsonArray* _tmp38_;
	GHashTable* json_launcher_items;
	GHashFunc _tmp39_;
	GEqualFunc _tmp40_;
	GHashTable* _tmp41_;
	gint _vala1_i;
	gboolean _tmp42_;
	gint _tmp43_;
	JsonObject* launcher_object;
	JsonArray* _tmp44_;
	JsonObject* _tmp45_;
	JsonObject* _tmp46_;
	JsonArray* launcher_group_array;
	JsonObject* _tmp47_;
	JsonArray* _tmp48_;
	JsonArray* _tmp49_;
	JsonArray* _tmp50_;
	guint launcher_groups_length;
	JsonArray* _tmp51_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** json_launcher_group_items;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp52_;
	gint json_launcher_group_items_length1;
	gint _json_launcher_group_items_size_;
	gint y;
	gboolean _tmp53_;
	gint _tmp54_;
	JsonObject* launcher_group_object;
	JsonArray* _tmp55_;
	JsonObject* _tmp56_;
	JsonObject* _tmp57_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* json_launcher_group_item;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp58_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp59_;
	JsonObject* _tmp60_;
	const gchar* _tmp61_;
	gchar* _tmp62_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp63_;
	JsonObject* _tmp64_;
	const gchar* _tmp65_;
	gchar* _tmp66_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp67_;
	gint _tmp67__length1;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp68_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp69_;
	ProtonPlusModelsLauncherJsonLauncherItem* json_launcher_item;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp70_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp71_;
	JsonObject* _tmp72_;
	const gchar* _tmp73_;
	gchar* _tmp74_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp75_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp76_;
	gint _tmp76__length1;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp77_;
	gint _tmp77__length1;
	GHashTable* _tmp78_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp79_;
	const gchar* _tmp80_;
	gchar* _tmp81_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp82_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp83_;
	GList* launcher_collection;
	GList* launcher_it;
	ProtonPlusModelsLauncher* _tmp84_;
	ProtonPlusModelsLauncher* launcher;
	ProtonPlusModelsLauncherJsonLauncherItem* _vala1_json_launcher_item;
	GHashTable* _tmp85_;
	ProtonPlusModelsLauncher* _tmp86_;
	const gchar* _tmp87_;
	gconstpointer _tmp88_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp89_;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp90_;
	ProtonPlusModelsGroup** groups;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp91_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp92_;
	gint _tmp92__length1;
	ProtonPlusModelsGroup** _tmp93_;
	gint groups_length1;
	gint _groups_size_;
	gint _vala2_i;
	gboolean _tmp94_;
	gint _tmp95_;
	ProtonPlusModelsGroup** _tmp96_;
	gint _tmp96__length1;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _vala1_json_launcher_group_item;
	ProtonPlusModelsLauncherJsonLauncherItem* _tmp97_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem** _tmp98_;
	gint _tmp98__length1;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp99_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp100_;
	ProtonPlusModelsLauncherJsonGroupItem* _vala1_json_group_item;
	GHashTable* _tmp101_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp102_;
	const gchar* _tmp103_;
	gconstpointer _tmp104_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp105_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp106_;
	ProtonPlusModelsGroup** _tmp107_;
	gint _tmp107__length1;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp108_;
	const gchar* _tmp109_;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp110_;
	const gchar* _tmp111_;
	gchar* _tmp112_;
	gchar* _tmp113_;
	ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp114_;
	const gchar* _tmp115_;
	ProtonPlusModelsLauncher* _tmp116_;
	ProtonPlusModelsGroup* _tmp117_;
	ProtonPlusModelsGroup** _tmp118_;
	gint _tmp118__length1;
	ProtonPlusModelsGroup* _tmp119_;
	ProtonPlusModelsLauncherJsonRunnerItem** json_runner_items;
	ProtonPlusModelsLauncherJsonGroupItem* _tmp120_;
	JsonArray* _tmp121_;
	gint _tmp122_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp123_;
	gint json_runner_items_length1;
	gint _json_runner_items_size_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp124_;
	gint _tmp124__length1;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp125_;
	gint _tmp125__length1;
	ProtonPlusModelsLauncherJsonRunnerItem** json_runner_item_collection;
	gint json_runner_item_collection_length1;
	gint _json_runner_item_collection_size_;
	gint json_runner_item_it;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp126_;
	ProtonPlusModelsLauncherJsonRunnerItem* json_runner_item;
	ProtonPlusModelsRunnersBasic* runner;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp127_;
	ProtonPlusModelsGroup** _tmp128_;
	gint _tmp128__length1;
	ProtonPlusModelsGroup* _tmp129_;
	ProtonPlusModelsRunnersBasic* _tmp130_;
	ProtonPlusModelsRunnersBasic* _tmp131_;
	ProtonPlusModelsGroup** _tmp132_;
	gint _tmp132__length1;
	ProtonPlusModelsGroup* _tmp133_;
	ProtonPlusModelsRunnersBasic* _tmp134_;
	ProtonPlusModelsRunner* _tmp135_;
	ProtonPlusModelsLauncher* _tmp136_;
	const gchar* _tmp137_;
	ProtonPlusModelsRunnersSteamTinkerLaunch* stl_runner;
	ProtonPlusModelsGroup** _tmp138_;
	gint _tmp138__length1;
	ProtonPlusModelsGroup* _tmp139_;
	ProtonPlusModelsRunnersSteamTinkerLaunch* _tmp140_;
	ProtonPlusModelsGroup** _tmp141_;
	gint _tmp141__length1;
	ProtonPlusModelsGroup* _tmp142_;
	ProtonPlusModelsRunnersSteamTinkerLaunch* _tmp143_;
	ProtonPlusModelsRunner* _tmp144_;
	ProtonPlusModelsLauncher* _tmp145_;
	ProtonPlusModelsGroup** _tmp146_;
	gint _tmp146__length1;
	ProtonPlusModelsGroup** _tmp147_;
	gint _tmp147__length1;
	ProtonPlusModelsLauncher* _tmp148_;
	gboolean games_loaded;
	ProtonPlusModelsLauncher* _tmp149_;
	ProtonPlusModelsLauncher* _tmp150_;
	ProtonPlusModelsLaunchersSteam* steam_launcher;
	ProtonPlusModelsLauncher* _tmp151_;
	ProtonPlusModelsLaunchersSteam* _tmp152_;
	ProtonPlusModelsLaunchersSteam* _tmp153_;
	ProtonPlusModelsLaunchersSteam* _tmp154_;
	GList* _tmp155_;
	ProtonPlusModelsLaunchersSteam* _tmp156_;
	GList* _tmp157_;
	GList* profile_collection;
	GList* profile_it;
	ProtonPlusModelsSteamProfile* _tmp158_;
	ProtonPlusModelsSteamProfile* profile;
	ProtonPlusModelsSteamProfile* _tmp159_;
};

struct _ProtonPlusModelsLauncherGetRunnersJsonObjectData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	JsonObject* result;
	gchar* json;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	JsonNode* root_node;
	const gchar* _tmp2_;
	JsonNode* _tmp3_;
	JsonNode* _tmp4_;
	JsonObject* root_object;
	JsonNode* _tmp5_;
	JsonObject* _tmp6_;
	JsonObject* _tmp7_;
	JsonObject* _tmp8_;
	gint64 version;
	JsonObject* _tmp9_;
};

struct _ProtonPlusModelsLauncherJsonRunnerItem {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ProtonPlusModelsLauncherJsonRunnerItemPrivate * priv;
	gchar* title;
	gchar* description;
	gchar* endpoint;
	gint asset_position;
	gchar* asset_position_time_condition;
	JsonArray* directory_name_formats;
	gchar* type;
	gboolean has_latest_support;
	gchar* url_template;
	gchar** request_asset_exclude;
	gint request_asset_exclude_length1;
	gint _request_asset_exclude_size_;
	gchar** request_asset_filter;
	gint request_asset_filter_length1;
	gint _request_asset_filter_size_;
	gboolean asset_position_hwcaps_condition;
};

struct _ProtonPlusModelsLauncherJsonRunnerItemClass {
	GTypeClass parent_class;
	void (*finalize) (ProtonPlusModelsLauncherJsonRunnerItem *self);
};

struct _ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	JsonArray* runners_array;
	ProtonPlusModelsLauncherJsonRunnerItem** result;
	gint result_length1;
	guint runners_length;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp0_;
	gint _tmp0__length1;
	ProtonPlusModelsLauncherJsonRunnerItem** json_runner_items;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp1_;
	gint json_runner_items_length1;
	gint _json_runner_items_size_;
	gint i;
	gboolean _tmp2_;
	gint _tmp3_;
	JsonObject* runner_object;
	JsonObject* _tmp4_;
	JsonObject* _tmp5_;
	gchar** members;
	gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar** _tmp12_;
	gint members_length1;
	gint _members_size_;
	gboolean members_valid;
	gchar** _tmp13_;
	gint _tmp13__length1;
	gchar** member_collection;
	gint member_collection_length1;
	gint _member_collection_size_;
	gint member_it;
	gchar* _tmp14_;
	gchar* member;
	JsonObject* _tmp15_;
	const gchar* _tmp16_;
	ProtonPlusModelsLauncherJsonRunnerItem* json_runner_item;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp17_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp18_;
	JsonObject* _tmp19_;
	const gchar* _tmp20_;
	gchar* _tmp21_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp22_;
	JsonObject* _tmp23_;
	const gchar* _tmp24_;
	gchar* _tmp25_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp26_;
	JsonObject* _tmp27_;
	const gchar* _tmp28_;
	gchar* _tmp29_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp30_;
	JsonObject* _tmp31_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp32_;
	JsonObject* _tmp33_;
	JsonArray* _tmp34_;
	JsonArray* _tmp35_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp36_;
	JsonObject* _tmp37_;
	const gchar* _tmp38_;
	gchar* _tmp39_;
	JsonObject* _tmp40_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp41_;
	JsonObject* _tmp42_;
	JsonObject* _tmp43_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp44_;
	JsonObject* _tmp45_;
	const gchar* _tmp46_;
	gchar* _tmp47_;
	JsonObject* _tmp48_;
	JsonArray* request_asset_exclude_array;
	JsonObject* _tmp49_;
	JsonArray* _tmp50_;
	JsonArray* _tmp51_;
	guint request_asset_exclude_length;
	JsonArray* _tmp52_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp53_;
	gint _tmp53__length1;
	gchar** request_asset_exclude;
	gchar** _tmp54_;
	gint request_asset_exclude_length1;
	gint _request_asset_exclude_size_;
	gint y;
	gboolean _tmp55_;
	gint _tmp56_;
	gchar** _tmp57_;
	gint _tmp57__length1;
	JsonArray* _tmp58_;
	const gchar* _tmp59_;
	gchar* _tmp60_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp61_;
	gchar** _tmp62_;
	gint _tmp62__length1;
	gchar** _tmp63_;
	gint _tmp63__length1;
	JsonObject* _tmp64_;
	JsonArray* request_asset_filter_array;
	JsonObject* _tmp65_;
	JsonArray* _tmp66_;
	JsonArray* _tmp67_;
	guint request_asset_filter_length;
	JsonArray* _tmp68_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp69_;
	gint _tmp69__length1;
	gchar** request_asset_filter;
	gchar** _tmp70_;
	gint request_asset_filter_length1;
	gint _request_asset_filter_size_;
	gint _vala1_y;
	gboolean _tmp71_;
	gint _tmp72_;
	gchar** _tmp73_;
	gint _tmp73__length1;
	JsonArray* _tmp74_;
	const gchar* _tmp75_;
	gchar* _tmp76_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp77_;
	gchar** _tmp78_;
	gint _tmp78__length1;
	gchar** _tmp79_;
	gint _tmp79__length1;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp80_;
	JsonObject* _tmp81_;
	JsonObject* _tmp82_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp83_;
	JsonObject* _tmp84_;
	const gchar* _tmp85_;
	gchar* _tmp86_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp87_;
	gint _tmp87__length1;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp88_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp89_;
	ProtonPlusModelsLauncherJsonRunnerItem** _tmp90_;
	gint _tmp90__length1;
};

struct _ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	JsonArray* directory_name_formats;
	gchar* launcher_title;
	gchar* result;
	guint runners_length;
	GHashTable* directory_name_format_items;
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	gint i;
	gboolean _tmp3_;
	gint _tmp4_;
	JsonObject* directory_name_format_object;
	JsonObject* _tmp5_;
	JsonObject* _tmp6_;
	gchar* launcher;
	JsonObject* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* directory_name_format;
	JsonObject* _tmp10_;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	GHashTable* _tmp13_;
	const gchar* _tmp14_;
	gchar* _tmp15_;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* directory_name_format_item;
	GHashTable* _tmp18_;
	gconstpointer _tmp19_;
	gchar* _tmp20_;
	const gchar* _tmp21_;
	GHashTable* _tmp22_;
	gconstpointer _tmp23_;
	gchar* _tmp24_;
	const gchar* _tmp25_;
};

struct _ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ProtonPlusModelsLauncherJsonRunnerItem* json_runner_item;
	ProtonPlusModelsGroup* group;
	ProtonPlusModelsRunnersBasic* result;
	ProtonPlusModelsRunnersBasic* runner;
	gchar* directory_name_format;
	JsonArray* _tmp0_;
	ProtonPlusModelsLauncher* _tmp1_;
	ProtonPlusModelsLauncher* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	GQuark _tmp9_;
	ProtonPlusModelsRunnersGitHub* github_runner;
	ProtonPlusModelsRunnersGitHub* _tmp10_;
	ProtonPlusModelsRunnersGitHub* _tmp11_;
	gchar** _tmp12_;
	gint _tmp12__length1;
	ProtonPlusModelsRunnersGitHub* _tmp13_;
	gchar** _tmp14_;
	gint _tmp14__length1;
	ProtonPlusModelsRunnersGitHub* _tmp15_;
	ProtonPlusModelsRunnersBasic* _tmp16_;
	ProtonPlusModelsRunnersGitHubAction* github_action_runner;
	ProtonPlusModelsRunnersGitHubAction* _tmp17_;
	ProtonPlusModelsRunnersGitHubAction* _tmp18_;
	const gchar* _tmp19_;
	ProtonPlusModelsRunnersGitHubAction* _tmp20_;
	ProtonPlusModelsRunnersBasic* _tmp21_;
	ProtonPlusModelsRunnersGitLab* gitlab_runner;
	ProtonPlusModelsRunnersGitLab* _tmp22_;
	ProtonPlusModelsRunnersGitLab* _tmp23_;
	gchar** _tmp24_;
	gint _tmp24__length1;
	ProtonPlusModelsRunnersGitLab* _tmp25_;
	ProtonPlusModelsRunnersBasic* _tmp26_;
	ProtonPlusModelsRunnersForgejo* forgejo_runner;
	ProtonPlusModelsRunnersForgejo* _tmp27_;
	ProtonPlusModelsRunnersForgejo* _tmp28_;
	ProtonPlusModelsRunnersBasic* _tmp29_;
	const gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* _tmp32_;
	ProtonPlusModelsRunnersBasic* _tmp33_;
	ProtonPlusModelsRunnersBasic* _tmp34_;
	const gchar* _tmp35_;
	ProtonPlusModelsRunnersBasic* _tmp36_;
	const gchar* _tmp37_;
	gchar* _tmp38_;
	gchar* _tmp39_;
	ProtonPlusModelsRunnersBasic* _tmp40_;
	const gchar* _tmp41_;
	ProtonPlusModelsRunnersBasic* _tmp42_;
	ProtonPlusModelsRunnersBasic* _tmp43_;
	const gchar* _tmp44_;
	ProtonPlusModelsRunnersBasic* _tmp45_;
	JsonArray* _tmp46_;
	ProtonPlusModelsLauncher* _tmp47_;
	ProtonPlusModelsLauncher* _tmp48_;
	const gchar* _tmp49_;
	gchar* _tmp50_;
	gchar* _tmp51_;
	ProtonPlusModelsRunnersBasic* _tmp52_;
	ProtonPlusModelsRunnersBasic* _tmp53_;
	ProtonPlusModelsRunnersBasic* _tmp54_;
};

struct _ProtonPlusModelsLauncherParamSpecJsonGroupItem {
	GParamSpec parent_instance;
};

struct _ProtonPlusModelsLauncherParamSpecJsonLauncherGroupItem {
	GParamSpec parent_instance;
};

struct _ProtonPlusModelsLauncherParamSpecJsonLauncherItem {
	GParamSpec parent_instance;
};

struct _ProtonPlusModelsLauncherParamSpecJsonRunnerItem {
	GParamSpec parent_instance;
};

static gpointer proton_plus_models_launcher_parent_class = NULL;
static gpointer proton_plus_models_launcher_json_group_item_parent_class = NULL;
static gpointer proton_plus_models_launcher_json_launcher_group_item_parent_class = NULL;
static gpointer proton_plus_models_launcher_json_launcher_item_parent_class = NULL;
static gpointer proton_plus_models_launcher_json_runner_item_parent_class = NULL;

VALA_EXTERN GType proton_plus_models_launcher_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncher, g_object_unref)
VALA_EXTERN GType proton_plus_models_game_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsGame, g_object_unref)
VALA_EXTERN GType proton_plus_models_simple_runner_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsSimpleRunner, g_object_unref)
VALA_EXTERN GType proton_plus_models_group_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsGroup, g_object_unref)
VALA_EXTERN GType proton_plus_models_launcher_installation_types_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void proton_plus_models_launcher_load_game_library (ProtonPlusModelsLauncher* self,
                                                    GAsyncReadyCallback _callback_,
                                                    gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_launcher_load_game_library_finish (ProtonPlusModelsLauncher* self,
                                                               GAsyncResult* _res_);
VALA_EXTERN gint proton_plus_models_launcher_get_compatibility_tool_usage_count (ProtonPlusModelsLauncher* self,
                                                                     const gchar* compatibility_tool_name);
static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
VALA_EXTERN ProtonPlusModelsLauncher* proton_plus_models_launcher_new (const gchar* title,
                                                           ProtonPlusModelsLauncherInstallationTypes installation_type,
                                                           const gchar* icon_path,
                                                           gchar** directories,
                                                           gint directories_length1);
VALA_EXTERN ProtonPlusModelsLauncher* proton_plus_models_launcher_construct (GType object_type,
                                                                 const gchar* title,
                                                                 ProtonPlusModelsLauncherInstallationTypes installation_type,
                                                                 const gchar* icon_path,
                                                                 gchar** directories,
                                                                 gint directories_length1);
VALA_EXTERN GType proton_plus_models_launchers_steam_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLaunchersSteam, g_object_unref)
VALA_EXTERN gchar* proton_plus_models_launcher_get_installation_type_title (ProtonPlusModelsLauncher* self);
static void proton_plus_models_launcher_real_load_game_library_data_free (gpointer _data);
static void proton_plus_models_launcher_real_load_game_library (ProtonPlusModelsLauncher* self,
                                                         GAsyncReadyCallback _callback_,
                                                         gpointer _user_data_);
static gboolean proton_plus_models_launcher_real_load_game_library_co (ProtonPlusModelsLauncherLoadGameLibraryData* _data_);
static void proton_plus_models_launcher_get_all_data_free (gpointer _data);
VALA_EXTERN void proton_plus_models_launcher_get_all (GAsyncReadyCallback _callback_,
                                          gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_launcher_get_all_finish (GAsyncResult* _res_,
                                                     GList** launchers);
static gboolean proton_plus_models_launcher_get_all_co (ProtonPlusModelsLauncherGetAllData* _data_);
static Block11Data* block11_data_ref (Block11Data* _data11_);
static void block11_data_unref (void * _userdata_);
VALA_EXTERN ProtonPlusModelsLaunchersSteam* proton_plus_models_launchers_steam_new (ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersSteam* proton_plus_models_launchers_steam_construct (GType object_type,
                                                                              ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersLutris* proton_plus_models_launchers_lutris_new (ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersLutris* proton_plus_models_launchers_lutris_construct (GType object_type,
                                                                                ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN GType proton_plus_models_launchers_lutris_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLaunchersLutris, g_object_unref)
VALA_EXTERN ProtonPlusModelsLaunchersBottles* proton_plus_models_launchers_bottles_new (ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersBottles* proton_plus_models_launchers_bottles_construct (GType object_type,
                                                                                  ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN GType proton_plus_models_launchers_bottles_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLaunchersBottles, g_object_unref)
VALA_EXTERN ProtonPlusModelsLaunchersHeroicGamesLauncher* proton_plus_models_launchers_heroic_games_launcher_new (ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersHeroicGamesLauncher* proton_plus_models_launchers_heroic_games_launcher_construct (GType object_type,
                                                                                                            ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN GType proton_plus_models_launchers_heroic_games_launcher_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLaunchersHeroicGamesLauncher, g_object_unref)
VALA_EXTERN ProtonPlusModelsLaunchersWineZGUI* proton_plus_models_launchers_wine_zgui_new (ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN ProtonPlusModelsLaunchersWineZGUI* proton_plus_models_launchers_wine_zgui_construct (GType object_type,
                                                                                     ProtonPlusModelsLauncherInstallationTypes installation_type);
VALA_EXTERN GType proton_plus_models_launchers_wine_zgui_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLaunchersWineZGUI, g_object_unref)
static void __lambda56_ (Block11Data* _data11_,
                  ProtonPlusModelsLauncher* launcher);
static void ___lambda56__gfunc (gconstpointer data,
                         gpointer self);
static void proton_plus_models_launcher_initialize_launchers (GList* launchers,
                                                       GAsyncReadyCallback _callback_,
                                                       gpointer _user_data_);
static gboolean proton_plus_models_launcher_initialize_launchers_finish (GAsyncResult* _res_);
static void proton_plus_models_launcher_get_all_ready (GObject* source_object,
                                                GAsyncResult* _res_,
                                                gpointer _user_data_);
static void proton_plus_models_launcher_initialize_launchers_data_free (gpointer _data);
static gboolean proton_plus_models_launcher_initialize_launchers_co (ProtonPlusModelsLauncherInitializeLaunchersData* _data_);
static void proton_plus_models_launcher_get_runners_json_object (GAsyncReadyCallback _callback_,
                                                          gpointer _user_data_);
static JsonObject* proton_plus_models_launcher_get_runners_json_object_finish (GAsyncResult* _res_);
static void proton_plus_models_launcher_initialize_launchers_ready (GObject* source_object,
                                                             GAsyncResult* _res_,
                                                             gpointer _user_data_);
static gpointer proton_plus_models_launcher_json_group_item_ref (gpointer instance);
static void proton_plus_models_launcher_json_group_item_unref (gpointer instance);
static GParamSpec* proton_plus_models_launcher_param_spec_json_group_item (const gchar* name,
                                                                    const gchar* nick,
                                                                    const gchar* blurb,
                                                                    GType object_type,
                                                                    GParamFlags flags) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_set_json_group_item (GValue* value,
                                                            gpointer v_object) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_take_json_group_item (GValue* value,
                                                             gpointer v_object) G_GNUC_UNUSED ;
static gpointer proton_plus_models_launcher_value_get_json_group_item (const GValue* value) G_GNUC_UNUSED ;
static GType proton_plus_models_launcher_json_group_item_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncherJsonGroupItem, proton_plus_models_launcher_json_group_item_unref)
static void _g_free0_ (gpointer var);
static void _proton_plus_models_launcher_json_group_item_unref0_ (gpointer var);
static ProtonPlusModelsLauncherJsonGroupItem* proton_plus_models_launcher_json_group_item_new (void);
static ProtonPlusModelsLauncherJsonGroupItem* proton_plus_models_launcher_json_group_item_construct (GType object_type);
static gpointer proton_plus_models_launcher_json_launcher_item_ref (gpointer instance);
static void proton_plus_models_launcher_json_launcher_item_unref (gpointer instance);
static GParamSpec* proton_plus_models_launcher_param_spec_json_launcher_item (const gchar* name,
                                                                       const gchar* nick,
                                                                       const gchar* blurb,
                                                                       GType object_type,
                                                                       GParamFlags flags) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_set_json_launcher_item (GValue* value,
                                                               gpointer v_object) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_take_json_launcher_item (GValue* value,
                                                                gpointer v_object) G_GNUC_UNUSED ;
static gpointer proton_plus_models_launcher_value_get_json_launcher_item (const GValue* value) G_GNUC_UNUSED ;
static GType proton_plus_models_launcher_json_launcher_item_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncherJsonLauncherItem, proton_plus_models_launcher_json_launcher_item_unref)
static void _proton_plus_models_launcher_json_launcher_item_unref0_ (gpointer var);
static gpointer proton_plus_models_launcher_json_launcher_group_item_ref (gpointer instance);
static void proton_plus_models_launcher_json_launcher_group_item_unref (gpointer instance);
static GParamSpec* proton_plus_models_launcher_param_spec_json_launcher_group_item (const gchar* name,
                                                                             const gchar* nick,
                                                                             const gchar* blurb,
                                                                             GType object_type,
                                                                             GParamFlags flags) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_set_json_launcher_group_item (GValue* value,
                                                                     gpointer v_object) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_take_json_launcher_group_item (GValue* value,
                                                                      gpointer v_object) G_GNUC_UNUSED ;
static gpointer proton_plus_models_launcher_value_get_json_launcher_group_item (const GValue* value) G_GNUC_UNUSED ;
static GType proton_plus_models_launcher_json_launcher_group_item_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncherJsonLauncherGroupItem, proton_plus_models_launcher_json_launcher_group_item_unref)
static ProtonPlusModelsLauncherJsonLauncherGroupItem* proton_plus_models_launcher_json_launcher_group_item_new (void);
static ProtonPlusModelsLauncherJsonLauncherGroupItem* proton_plus_models_launcher_json_launcher_group_item_construct (GType object_type);
static ProtonPlusModelsLauncherJsonLauncherItem* proton_plus_models_launcher_json_launcher_item_new (void);
static ProtonPlusModelsLauncherJsonLauncherItem* proton_plus_models_launcher_json_launcher_item_construct (GType object_type);
static ProtonPlusModelsLauncherJsonLauncherGroupItem** _vala_array_dup3 (ProtonPlusModelsLauncherJsonLauncherGroupItem** self,
                                                                  gssize length);
VALA_EXTERN gchar* proton_plus_utils_safe_translate (const gchar* str);
VALA_EXTERN ProtonPlusModelsGroup* proton_plus_models_group_new (const gchar* title,
                                                     const gchar* description,
                                                     const gchar* directory,
                                                     ProtonPlusModelsLauncher* launcher);
VALA_EXTERN ProtonPlusModelsGroup* proton_plus_models_group_construct (GType object_type,
                                                           const gchar* title,
                                                           const gchar* description,
                                                           const gchar* directory,
                                                           ProtonPlusModelsLauncher* launcher);
VALA_EXTERN GType proton_plus_models_runner_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunner, g_object_unref)
static gpointer proton_plus_models_launcher_json_runner_item_ref (gpointer instance);
static void proton_plus_models_launcher_json_runner_item_unref (gpointer instance);
static GParamSpec* proton_plus_models_launcher_param_spec_json_runner_item (const gchar* name,
                                                                     const gchar* nick,
                                                                     const gchar* blurb,
                                                                     GType object_type,
                                                                     GParamFlags flags) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_set_json_runner_item (GValue* value,
                                                             gpointer v_object) G_GNUC_UNUSED ;
static void proton_plus_models_launcher_value_take_json_runner_item (GValue* value,
                                                              gpointer v_object) G_GNUC_UNUSED ;
static gpointer proton_plus_models_launcher_value_get_json_runner_item (const GValue* value) G_GNUC_UNUSED ;
static GType proton_plus_models_launcher_json_runner_item_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncherJsonRunnerItem, proton_plus_models_launcher_json_runner_item_unref)
static void proton_plus_models_launcher_get_json_runner_items_from_array (JsonArray* runners_array,
                                                                   GAsyncReadyCallback _callback_,
                                                                   gpointer _user_data_);
static ProtonPlusModelsLauncherJsonRunnerItem** proton_plus_models_launcher_get_json_runner_items_from_array_finish (GAsyncResult* _res_,
                                                                                                              gint* result_length1);
VALA_EXTERN GType proton_plus_models_runners_basic_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersBasic, g_object_unref)
static void proton_plus_models_launcher_create_runner_from_json_runner_item (ProtonPlusModelsLauncherJsonRunnerItem* json_runner_item,
                                                                      ProtonPlusModelsGroup* group,
                                                                      GAsyncReadyCallback _callback_,
                                                                      gpointer _user_data_);
static ProtonPlusModelsRunnersBasic* proton_plus_models_launcher_create_runner_from_json_runner_item_finish (GAsyncResult* _res_);
VALA_EXTERN GType proton_plus_models_runners_steam_tinker_launch_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersSteamTinkerLaunch, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunnersSteamTinkerLaunch* proton_plus_models_runners_steam_tinker_launch_new (ProtonPlusModelsGroup* group);
VALA_EXTERN ProtonPlusModelsRunnersSteamTinkerLaunch* proton_plus_models_runners_steam_tinker_launch_construct (GType object_type,
                                                                                                    ProtonPlusModelsGroup* group);
static ProtonPlusModelsGroup** _vala_array_dup4 (ProtonPlusModelsGroup** self,
                                          gssize length);
VALA_EXTERN GType proton_plus_models_steam_profile_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsSteamProfile, g_object_unref)
VALA_EXTERN GList* proton_plus_models_steam_profile_get_profiles (ProtonPlusModelsLaunchersSteam* launcher);
VALA_EXTERN void proton_plus_models_steam_profile_load_extra_data (ProtonPlusModelsSteamProfile* self,
                                                       GAsyncReadyCallback _callback_,
                                                       gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_steam_profile_load_extra_data_finish (ProtonPlusModelsSteamProfile* self,
                                                                  GAsyncResult* _res_);
static void proton_plus_models_launcher_get_runners_json_object_data_free (gpointer _data);
static gboolean proton_plus_models_launcher_get_runners_json_object_co (ProtonPlusModelsLauncherGetRunnersJsonObjectData* _data_);
VALA_EXTERN gchar* proton_plus_utils_filesystem_get_file_content (const gchar* path,
                                                      gboolean use_uri);
VALA_EXTERN JsonNode* proton_plus_utils_parser_get_node_from_json (const gchar* json);
static void _vala_JsonNode_free (JsonNode* self);
static void proton_plus_models_launcher_get_json_runner_items_from_array_data_free (gpointer _data);
static gboolean proton_plus_models_launcher_get_json_runner_items_from_array_co (ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData* _data_);
static ProtonPlusModelsLauncherJsonRunnerItem* proton_plus_models_launcher_json_runner_item_new (void);
static ProtonPlusModelsLauncherJsonRunnerItem* proton_plus_models_launcher_json_runner_item_construct (GType object_type);
static gchar** _vala_array_dup5 (gchar** self,
                          gssize length);
static gchar** _vala_array_dup6 (gchar** self,
                          gssize length);
static void proton_plus_models_launcher_get_directory_name_format_from_array_data_free (gpointer _data);
static void proton_plus_models_launcher_get_directory_name_format_from_array (JsonArray* directory_name_formats,
                                                                       const gchar* launcher_title,
                                                                       GAsyncReadyCallback _callback_,
                                                                       gpointer _user_data_);
static gchar* proton_plus_models_launcher_get_directory_name_format_from_array_finish (GAsyncResult* _res_);
static gboolean proton_plus_models_launcher_get_directory_name_format_from_array_co (ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData* _data_);
static void proton_plus_models_launcher_create_runner_from_json_runner_item_data_free (gpointer _data);
static gboolean proton_plus_models_launcher_create_runner_from_json_runner_item_co (ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_);
VALA_EXTERN ProtonPlusModelsLauncher* proton_plus_models_group_get_launcher (ProtonPlusModelsGroup* self);
static void proton_plus_models_launcher_create_runner_from_json_runner_item_ready (GObject* source_object,
                                                                            GAsyncResult* _res_,
                                                                            gpointer _user_data_);
VALA_EXTERN GType proton_plus_models_runners_git_hub_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersGitHub, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunnersGitHub* proton_plus_models_runners_git_hub_new (void);
VALA_EXTERN ProtonPlusModelsRunnersGitHub* proton_plus_models_runners_git_hub_construct (GType object_type);
VALA_EXTERN void proton_plus_models_runners_git_hub_set_request_asset_exclude (ProtonPlusModelsRunnersGitHub* self,
                                                                   gchar** value,
                                                                   gint value_length1);
VALA_EXTERN void proton_plus_models_runners_git_hub_set_request_asset_filter (ProtonPlusModelsRunnersGitHub* self,
                                                                  gchar** value,
                                                                  gint value_length1);
VALA_EXTERN GType proton_plus_models_runners_git_hub_action_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersGitHubAction, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunnersGitHubAction* proton_plus_models_runners_git_hub_action_new (void);
VALA_EXTERN ProtonPlusModelsRunnersGitHubAction* proton_plus_models_runners_git_hub_action_construct (GType object_type);
VALA_EXTERN void proton_plus_models_runners_git_hub_action_set_url_template (ProtonPlusModelsRunnersGitHubAction* self,
                                                                 const gchar* value);
VALA_EXTERN GType proton_plus_models_runners_git_lab_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersGitLab, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunnersGitLab* proton_plus_models_runners_git_lab_new (void);
VALA_EXTERN ProtonPlusModelsRunnersGitLab* proton_plus_models_runners_git_lab_construct (GType object_type);
VALA_EXTERN void proton_plus_models_runners_git_lab_set_request_asset_exclude (ProtonPlusModelsRunnersGitLab* self,
                                                                   gchar** value,
                                                                   gint value_length1);
VALA_EXTERN GType proton_plus_models_runners_forgejo_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersForgejo, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunnersForgejo* proton_plus_models_runners_forgejo_new (void);
VALA_EXTERN ProtonPlusModelsRunnersForgejo* proton_plus_models_runners_forgejo_construct (GType object_type);
VALA_EXTERN void proton_plus_models_runner_set_title (ProtonPlusModelsRunner* self,
                                          const gchar* value);
VALA_EXTERN void proton_plus_models_runner_set_description (ProtonPlusModelsRunner* self,
                                                const gchar* value);
VALA_EXTERN void proton_plus_models_runners_basic_set_endpoint (ProtonPlusModelsRunnersBasic* self,
                                                    const gchar* value);
VALA_EXTERN void proton_plus_models_runners_basic_set_asset_position (ProtonPlusModelsRunnersBasic* self,
                                                          gint value);
VALA_EXTERN void proton_plus_models_runners_basic_set_asset_position_time_condition (ProtonPlusModelsRunnersBasic* self,
                                                                         const gchar* value);
VALA_EXTERN void proton_plus_models_runners_basic_set_directory_name_format (ProtonPlusModelsRunnersBasic* self,
                                                                 const gchar* value);
VALA_EXTERN void proton_plus_models_runner_set_has_latest_support (ProtonPlusModelsRunner* self,
                                                       gboolean value);
VALA_EXTERN void proton_plus_models_runner_set_group (ProtonPlusModelsRunner* self,
                                          ProtonPlusModelsGroup* value);
VALA_EXTERN void proton_plus_models_runner_set_asset_position_hwcaps_condition (ProtonPlusModelsRunner* self,
                                                                    gboolean value);
static gint proton_plus_models_launcher_real_get_compatibility_tool_usage_count (ProtonPlusModelsLauncher* self,
                                                                          const gchar* compatibility_tool_name);
static void proton_plus_models_launcher_json_group_item_finalize (ProtonPlusModelsLauncherJsonGroupItem * obj);
static GType proton_plus_models_launcher_json_group_item_get_type_once (void);
static void proton_plus_models_launcher_json_launcher_group_item_finalize (ProtonPlusModelsLauncherJsonLauncherGroupItem * obj);
static GType proton_plus_models_launcher_json_launcher_group_item_get_type_once (void);
static void proton_plus_models_launcher_json_launcher_item_finalize (ProtonPlusModelsLauncherJsonLauncherItem * obj);
static GType proton_plus_models_launcher_json_launcher_item_get_type_once (void);
static void proton_plus_models_launcher_json_runner_item_finalize (ProtonPlusModelsLauncherJsonRunnerItem * obj);
static GType proton_plus_models_launcher_json_runner_item_get_type_once (void);
static void proton_plus_models_launcher_finalize (GObject * obj);
static GType proton_plus_models_launcher_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);

static GType
proton_plus_models_launcher_installation_types_get_type_once (void)
{
	static const GEnumValue values[] = {{PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM, "PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM", "system"}, {PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK, "PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK", "flatpak"}, {PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP, "PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP", "snap"}, {0, NULL, NULL}};
	GType proton_plus_models_launcher_installation_types_type_id;
	proton_plus_models_launcher_installation_types_type_id = g_enum_register_static ("ProtonPlusModelsLauncherInstallationTypes", values);
	return proton_plus_models_launcher_installation_types_type_id;
}

GType
proton_plus_models_launcher_installation_types_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_installation_types_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_installation_types_type_id__once)) {
		GType proton_plus_models_launcher_installation_types_type_id;
		proton_plus_models_launcher_installation_types_type_id = proton_plus_models_launcher_installation_types_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_installation_types_type_id__once, proton_plus_models_launcher_installation_types_type_id);
	}
	return proton_plus_models_launcher_installation_types_type_id__once;
}

static void
_g_object_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}

static inline void
_g_list_free__g_object_unref0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
}

ProtonPlusModelsLauncher*
proton_plus_models_launcher_construct (GType object_type,
                                       const gchar* title,
                                       ProtonPlusModelsLauncherInstallationTypes installation_type,
                                       const gchar* icon_path,
                                       gchar** directories,
                                       gint directories_length1)
{
	ProtonPlusModelsLauncher * self = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	GeeArrayList* _tmp16_;
	const gchar* _tmp17_;
	gint _tmp18_;
	gint _tmp19_;
	g_return_val_if_fail (title != NULL, NULL);
	g_return_val_if_fail (icon_path != NULL, NULL);
	self = (ProtonPlusModelsLauncher*) g_object_new (object_type, NULL);
	_tmp0_ = g_strdup (title);
	_g_free0 (self->title);
	self->title = _tmp0_;
	self->installation_type = installation_type;
	_tmp1_ = g_strdup (icon_path);
	_g_free0 (self->icon_path);
	self->icon_path = _tmp1_;
	_tmp2_ = g_strdup ("");
	_g_free0 (self->directory);
	self->directory = _tmp2_;
	{
		gchar** current_path_collection = NULL;
		gint current_path_collection_length1 = 0;
		gint _current_path_collection_size_ = 0;
		gint current_path_it = 0;
		current_path_collection = directories;
		current_path_collection_length1 = directories_length1;
		for (current_path_it = 0; current_path_it < current_path_collection_length1; current_path_it = current_path_it + 1) {
			gchar* _tmp3_;
			gchar* current_path = NULL;
			_tmp3_ = g_strdup (current_path_collection[current_path_it]);
			current_path = _tmp3_;
			{
				const gchar* _tmp4_;
				_tmp4_ = current_path;
				if (g_file_test (_tmp4_, G_FILE_TEST_IS_DIR)) {
					gboolean _tmp5_ = FALSE;
					if (!PROTON_PLUS_MODELS_LAUNCHERS_IS_STEAM (self)) {
						_tmp5_ = TRUE;
					} else {
						gboolean _tmp6_ = FALSE;
						const gchar* _tmp7_;
						gchar* _tmp8_;
						gchar* _tmp9_;
						gboolean _tmp10_;
						_tmp7_ = current_path;
						_tmp8_ = g_strconcat (_tmp7_, "/steamclient.dll", NULL);
						_tmp9_ = _tmp8_;
						_tmp10_ = g_file_test (_tmp9_, G_FILE_TEST_IS_REGULAR);
						_g_free0 (_tmp9_);
						if (_tmp10_) {
							const gchar* _tmp11_;
							gchar* _tmp12_;
							gchar* _tmp13_;
							_tmp11_ = current_path;
							_tmp12_ = g_strconcat (_tmp11_, "/steamclient64.dll", NULL);
							_tmp13_ = _tmp12_;
							_tmp6_ = g_file_test (_tmp13_, G_FILE_TEST_IS_REGULAR);
							_g_free0 (_tmp13_);
						} else {
							_tmp6_ = FALSE;
						}
						_tmp5_ = _tmp6_;
					}
					if (_tmp5_) {
						const gchar* _tmp14_;
						gchar* _tmp15_;
						_tmp14_ = current_path;
						_tmp15_ = g_strdup (_tmp14_);
						_g_free0 (self->directory);
						self->directory = _tmp15_;
						_g_free0 (current_path);
						break;
					}
				}
				_g_free0 (current_path);
			}
		}
	}
	_tmp16_ = gee_array_list_new (PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	_g_object_unref0 (self->compatibility_tools);
	self->compatibility_tools = _tmp16_;
	_tmp17_ = self->directory;
	_tmp18_ = strlen (_tmp17_);
	_tmp19_ = _tmp18_;
	self->installed = _tmp19_ > 0;
	return self;
}

ProtonPlusModelsLauncher*
proton_plus_models_launcher_new (const gchar* title,
                                 ProtonPlusModelsLauncherInstallationTypes installation_type,
                                 const gchar* icon_path,
                                 gchar** directories,
                                 gint directories_length1)
{
	return proton_plus_models_launcher_construct (PROTON_PLUS_MODELS_TYPE_LAUNCHER, title, installation_type, icon_path, directories, directories_length1);
}

gchar*
proton_plus_models_launcher_get_installation_type_title (ProtonPlusModelsLauncher* self)
{
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	switch (self->installation_type) {
		case PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM:
		{
			gchar* _tmp0_;
			_tmp0_ = g_strdup ("System");
			result = _tmp0_;
			return result;
		}
		case PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK:
		{
			gchar* _tmp1_;
			_tmp1_ = g_strdup ("Flatpak");
			result = _tmp1_;
			return result;
		}
		case PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP:
		{
			gchar* _tmp2_;
			_tmp2_ = g_strdup ("Snap");
			result = _tmp2_;
			return result;
		}
		default:
		{
			gchar* _tmp3_;
			_tmp3_ = g_strdup ("Invalid type");
			result = _tmp3_;
			return result;
		}
	}
}

static void
proton_plus_models_launcher_real_load_game_library_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherLoadGameLibraryData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ProtonPlusModelsLauncherLoadGameLibraryData, _data_);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
proton_plus_models_launcher_real_load_game_library (ProtonPlusModelsLauncher* self,
                                                    GAsyncReadyCallback _callback_,
                                                    gpointer _user_data_)
{
	ProtonPlusModelsLauncherLoadGameLibraryData* _data_;
	ProtonPlusModelsLauncher* _tmp0_;
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherLoadGameLibraryData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_real_load_game_library_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	proton_plus_models_launcher_real_load_game_library_co (_data_);
}

static gboolean
proton_plus_models_launcher_real_load_game_library_finish (ProtonPlusModelsLauncher* self,
                                                           GAsyncResult* _res_)
{
	gboolean result;
	ProtonPlusModelsLauncherLoadGameLibraryData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	return result;
}

static gboolean
proton_plus_models_launcher_real_load_game_library_co (ProtonPlusModelsLauncherLoadGameLibraryData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->result = TRUE;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

void
proton_plus_models_launcher_load_game_library (ProtonPlusModelsLauncher* self,
                                               GAsyncReadyCallback _callback_,
                                               gpointer _user_data_)
{
	ProtonPlusModelsLauncherClass* _klass_;
	_klass_ = PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS (self);
	if (_klass_->load_game_library) {
		_klass_->load_game_library (self, _callback_, _user_data_);
	}
}

gboolean
proton_plus_models_launcher_load_game_library_finish (ProtonPlusModelsLauncher* self,
                                                      GAsyncResult* _res_)
{
	ProtonPlusModelsLauncherClass* _klass_;
	_klass_ = PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS (self);
	if (_klass_->load_game_library_finish) {
		return _klass_->load_game_library_finish (self, _res_);
	}
	return FALSE;
}

static void
proton_plus_models_launcher_get_all_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherGetAllData* _data_;
	_data_ = _data;
	g_slice_free (ProtonPlusModelsLauncherGetAllData, _data_);
}

void
proton_plus_models_launcher_get_all (GAsyncReadyCallback _callback_,
                                     gpointer _user_data_)
{
	ProtonPlusModelsLauncherGetAllData* _data_;
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherGetAllData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_get_all_data_free);
	proton_plus_models_launcher_get_all_co (_data_);
}

gboolean
proton_plus_models_launcher_get_all_finish (GAsyncResult* _res_,
                                            GList** launchers)
{
	gboolean result;
	ProtonPlusModelsLauncherGetAllData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	if (launchers) {
		*launchers = _data_->launchers;
	} else {
		(_data_->launchers == NULL) ? NULL : (_data_->launchers = (_g_list_free__g_object_unref0_ (_data_->launchers), NULL));
	}
	_data_->launchers = NULL;
	result = _data_->result;
	return result;
}

static Block11Data*
block11_data_ref (Block11Data* _data11_)
{
	g_atomic_int_inc (&_data11_->_ref_count_);
	return _data11_;
}

static void
block11_data_unref (void * _userdata_)
{
	Block11Data* _data11_;
	_data11_ = (Block11Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data11_->_ref_count_)) {
		(_data11_->_launchers == NULL) ? NULL : (_data11_->_launchers = (_g_list_free__g_object_unref0_ (_data11_->_launchers), NULL));
		g_slice_free (Block11Data, _data11_);
	}
}

static GList*
vala_g_list_remove_full (GList* self,
                         gconstpointer data,
                         GFreeFunc func)
{
	GList* l = NULL;
	GList* result;
	l = self;
	while (TRUE) {
		GList* _tmp0_;
		GList* _tmp1_;
		gconstpointer _tmp2_;
		_tmp0_ = l;
		if (!(_tmp0_ != NULL)) {
			break;
		}
		_tmp1_ = l;
		_tmp2_ = ((GList*) _tmp1_)->data;
		if (_tmp2_ != data) {
			GList* _tmp3_;
			GList* _tmp4_;
			_tmp3_ = l;
			_tmp4_ = ((GList*) _tmp3_)->next;
			l = _tmp4_;
		} else {
			GList* _tmp5_;
			gconstpointer _tmp6_;
			GList* _tmp7_;
			_tmp5_ = l;
			_tmp6_ = ((GList*) _tmp5_)->data;
			func (_tmp6_);
			_tmp7_ = l;
			self = g_list_delete_link (self, (GList*) _tmp7_);
			break;
		}
	}
	result = self;
	return result;
}

static void
__lambda56_ (Block11Data* _data11_,
             ProtonPlusModelsLauncher* launcher)
{
	g_return_if_fail (launcher != NULL);
	if (!launcher->installed) {
		_data11_->_launchers = vala_g_list_remove_full (_data11_->_launchers, launcher, _g_object_unref0_);
	}
}

static void
___lambda56__gfunc (gconstpointer data,
                    gpointer self)
{
	__lambda56_ (self, (ProtonPlusModelsLauncher*) data);
}

static void
proton_plus_models_launcher_get_all_ready (GObject* source_object,
                                           GAsyncResult* _res_,
                                           gpointer _user_data_)
{
	ProtonPlusModelsLauncherGetAllData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	proton_plus_models_launcher_get_all_co (_data_);
}

static gboolean
proton_plus_models_launcher_get_all_co (ProtonPlusModelsLauncherGetAllData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_data11_ = g_slice_new0 (Block11Data);
	_data_->_data11_->_ref_count_ = 1;
	_data_->_data11_->_async_data_ = _data_;
	_data_->_data11_->_launchers = NULL;
	_data_->_tmp0_ = proton_plus_models_launchers_steam_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp0_);
	_data_->_tmp1_ = proton_plus_models_launchers_steam_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp1_);
	_data_->_tmp2_ = proton_plus_models_launchers_steam_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp2_);
	_data_->_tmp3_ = proton_plus_models_launchers_lutris_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp3_);
	_data_->_tmp4_ = proton_plus_models_launchers_lutris_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp4_);
	_data_->_tmp5_ = proton_plus_models_launchers_bottles_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp5_);
	_data_->_tmp6_ = proton_plus_models_launchers_bottles_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp6_);
	_data_->_tmp7_ = proton_plus_models_launchers_heroic_games_launcher_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp7_);
	_data_->_tmp8_ = proton_plus_models_launchers_heroic_games_launcher_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp8_);
	_data_->_tmp9_ = proton_plus_models_launchers_wine_zgui_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp9_);
	_data_->_tmp10_ = proton_plus_models_launchers_wine_zgui_new (PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK);
	_data_->_data11_->_launchers = g_list_append (_data_->_data11_->_launchers, (ProtonPlusModelsLauncher*) _data_->_tmp10_);
	_data_->_tmp11_ = _data_->_data11_->_launchers;
	g_list_foreach (_data_->_tmp11_, ___lambda56__gfunc, _data_->_data11_);
	_data_->_tmp12_ = _data_->_data11_->_launchers;
	_data_->_data11_->_launchers = NULL;
	(_data_->launchers == NULL) ? NULL : (_data_->launchers = (_g_list_free__g_object_unref0_ (_data_->launchers), NULL));
	_data_->launchers = _data_->_tmp12_;
	_data_->_tmp13_ = _data_->launchers;
	if (_data_->_tmp13_ == NULL) {
		_data_->result = TRUE;
		block11_data_unref (_data_->_data11_);
		_data_->_data11_ = NULL;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp14_ = _data_->launchers;
	_data_->_state_ = 1;
	proton_plus_models_launcher_initialize_launchers (_data_->_tmp14_, proton_plus_models_launcher_get_all_ready, _data_);
	return FALSE;
	_state_1:
	_data_->initialized = proton_plus_models_launcher_initialize_launchers_finish (_data_->_res_);
	if (!_data_->initialized) {
		_data_->result = FALSE;
		block11_data_unref (_data_->_data11_);
		_data_->_data11_ = NULL;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->result = TRUE;
	block11_data_unref (_data_->_data11_);
	_data_->_data11_ = NULL;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
proton_plus_models_launcher_initialize_launchers_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherInitializeLaunchersData* _data_;
	_data_ = _data;
	g_slice_free (ProtonPlusModelsLauncherInitializeLaunchersData, _data_);
}

static void
proton_plus_models_launcher_initialize_launchers (GList* launchers,
                                                  GAsyncReadyCallback _callback_,
                                                  gpointer _user_data_)
{
	ProtonPlusModelsLauncherInitializeLaunchersData* _data_;
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherInitializeLaunchersData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_initialize_launchers_data_free);
	_data_->launchers = launchers;
	proton_plus_models_launcher_initialize_launchers_co (_data_);
}

static gboolean
proton_plus_models_launcher_initialize_launchers_finish (GAsyncResult* _res_)
{
	gboolean result;
	ProtonPlusModelsLauncherInitializeLaunchersData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	return result;
}

static void
proton_plus_models_launcher_initialize_launchers_ready (GObject* source_object,
                                                        GAsyncResult* _res_,
                                                        gpointer _user_data_)
{
	ProtonPlusModelsLauncherInitializeLaunchersData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	proton_plus_models_launcher_initialize_launchers_co (_data_);
}

static gpointer
_json_array_ref0 (gpointer self)
{
	return self ? json_array_ref (self) : NULL;
}

static void
_g_free0_ (gpointer var)
{
	var = (g_free (var), NULL);
}

static void
_proton_plus_models_launcher_json_group_item_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_group_item_unref (var), NULL));
}

static gpointer
_json_object_ref0 (gpointer self)
{
	return self ? json_object_ref (self) : NULL;
}

static gpointer
_proton_plus_models_launcher_json_group_item_ref0 (gpointer self)
{
	return self ? proton_plus_models_launcher_json_group_item_ref (self) : NULL;
}

static void
_proton_plus_models_launcher_json_launcher_item_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (proton_plus_models_launcher_json_launcher_item_unref (var), NULL));
}

static gpointer
_proton_plus_models_launcher_json_launcher_group_item_ref0 (gpointer self)
{
	return self ? proton_plus_models_launcher_json_launcher_group_item_ref (self) : NULL;
}

static ProtonPlusModelsLauncherJsonLauncherGroupItem**
_vala_array_dup3 (ProtonPlusModelsLauncherJsonLauncherGroupItem** self,
                  gssize length)
{
	if (length >= 0) {
		ProtonPlusModelsLauncherJsonLauncherGroupItem** result;
		gssize i;
		result = g_new0 (ProtonPlusModelsLauncherJsonLauncherGroupItem*, length + 1);
		for (i = 0; i < length; i++) {
			ProtonPlusModelsLauncherJsonLauncherGroupItem* _tmp0_;
			_tmp0_ = _proton_plus_models_launcher_json_launcher_group_item_ref0 (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

static gpointer
_proton_plus_models_launcher_json_launcher_item_ref0 (gpointer self)
{
	return self ? proton_plus_models_launcher_json_launcher_item_ref (self) : NULL;
}

static gpointer
_proton_plus_models_launcher_json_runner_item_ref0 (gpointer self)
{
	return self ? proton_plus_models_launcher_json_runner_item_ref (self) : NULL;
}

static ProtonPlusModelsGroup**
_vala_array_dup4 (ProtonPlusModelsGroup** self,
                  gssize length)
{
	if (length >= 0) {
		ProtonPlusModelsGroup** result;
		gssize i;
		result = g_new0 (ProtonPlusModelsGroup*, length + 1);
		for (i = 0; i < length; i++) {
			ProtonPlusModelsGroup* _tmp0_;
			_tmp0_ = _g_object_ref0 (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

static gboolean
proton_plus_models_launcher_initialize_launchers_co (ProtonPlusModelsLauncherInitializeLaunchersData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		case 2:
		goto _state_2;
		case 3:
		goto _state_3;
		case 4:
		goto _state_4;
		case 5:
		goto _state_5;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_state_ = 1;
	proton_plus_models_launcher_get_runners_json_object (proton_plus_models_launcher_initialize_launchers_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp0_ = proton_plus_models_launcher_get_runners_json_object_finish (_data_->_res_);
	_data_->root_object = _data_->_tmp0_;
	_data_->_tmp1_ = _data_->root_object;
	if (_data_->_tmp1_ == NULL) {
		_data_->result = FALSE;
		_json_object_unref0 (_data_->root_object);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp2_ = _data_->root_object;
	_data_->_tmp3_ = json_object_get_array_member (_data_->_tmp2_, "compat_layers");
	_data_->_tmp4_ = _json_array_ref0 (_data_->_tmp3_);
	_data_->groups_array = _data_->_tmp4_;
	_data_->_tmp5_ = _data_->groups_array;
	if (_data_->_tmp5_ == NULL) {
		_data_->result = FALSE;
		_json_array_unref0 (_data_->groups_array);
		_json_object_unref0 (_data_->root_object);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp6_ = _data_->groups_array;
	_data_->groups_length = json_array_get_length (_data_->_tmp6_);
	if (_data_->groups_length == ((guint) 0)) {
		_data_->result = FALSE;
		_json_array_unref0 (_data_->groups_array);
		_json_object_unref0 (_data_->root_object);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp7_ = g_str_hash;
	_data_->_tmp8_ = g_str_equal;
	_data_->_tmp9_ = g_hash_table_new_full (_data_->_tmp7_, _data_->_tmp8_, _g_free0_, _proton_plus_models_launcher_json_group_item_unref0_);
	_data_->json_group_items = _data_->_tmp9_;
	{
		_data_->i = 0;
		{
			_data_->_tmp10_ = TRUE;
			while (TRUE) {
				if (!_data_->_tmp10_) {
					_data_->_tmp11_ = _data_->i;
					_data_->i = _data_->_tmp11_ + 1;
				}
				_data_->_tmp10_ = FALSE;
				if (!(((guint) _data_->i) < _data_->groups_length)) {
					break;
				}
				_data_->_tmp12_ = _data_->groups_array;
				_data_->_tmp13_ = json_array_get_object_element (_data_->_tmp12_, (guint) _data_->i);
				_data_->_tmp14_ = _json_object_ref0 (_data_->_tmp13_);
				_data_->group_object = _data_->_tmp14_;
				_data_->_tmp15_ = proton_plus_models_launcher_json_group_item_new ();
				_data_->json_group_item = _data_->_tmp15_;
				_data_->_tmp16_ = _data_->json_group_item;
				_data_->_tmp17_ = _data_->group_object;
				_data_->_tmp18_ = json_object_get_string_member (_data_->_tmp17_, "title");
				_data_->_tmp19_ = g_strdup (_data_->_tmp18_);
				_g_free0 (_data_->_tmp16_->title);
				_data_->_tmp16_->title = _data_->_tmp19_;
				_data_->_tmp20_ = _data_->json_group_item;
				_data_->_tmp21_ = _data_->group_object;
				_data_->_tmp22_ = json_object_get_string_member (_data_->_tmp21_, "description");
				_data_->_tmp23_ = g_strdup (_data_->_tmp22_);
				_g_free0 (_data_->_tmp20_->description);
				_data_->_tmp20_->description = _data_->_tmp23_;
				_data_->_tmp24_ = _data_->json_group_item;
				_data_->_tmp25_ = _data_->group_object;
				_data_->_tmp26_ = json_object_get_array_member (_data_->_tmp25_, "runners");
				_data_->_tmp27_ = _json_array_ref0 (_data_->_tmp26_);
				_json_array_unref0 (_data_->_tmp24_->runners);
				_data_->_tmp24_->runners = _data_->_tmp27_;
				_data_->_tmp28_ = _data_->json_group_items;
				_data_->_tmp29_ = _data_->json_group_item;
				_data_->_tmp30_ = _data_->_tmp29_->title;
				_data_->_tmp31_ = g_strdup (_data_->_tmp30_);
				_data_->_tmp32_ = _data_->json_group_item;
				_data_->_tmp33_ = _proton_plus_models_launcher_json_group_item_ref0 (_data_->_tmp32_);
				g_hash_table_insert (_data_->_tmp28_, _data_->_tmp31_, _data_->_tmp33_);
				_proton_plus_models_launcher_json_group_item_unref0 (_data_->json_group_item);
				_json_object_unref0 (_data_->group_object);
			}
		}
	}
	_data_->_tmp34_ = _data_->root_object;
	_data_->_tmp35_ = json_object_get_array_member (_data_->_tmp34_, "launchers");
	_data_->_tmp36_ = _json_array_ref0 (_data_->_tmp35_);
	_data_->launchers_array = _data_->_tmp36_;
	_data_->_tmp37_ = _data_->launchers_array;
	if (_data_->_tmp37_ == NULL) {
		_data_->result = FALSE;
		_json_array_unref0 (_data_->launchers_array);
		_g_hash_table_unref0 (_data_->json_group_items);
		_json_array_unref0 (_data_->groups_array);
		_json_object_unref0 (_data_->root_object);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp38_ = _data_->launchers_array;
	_data_->launchers_length = json_array_get_length (_data_->_tmp38_);
	if (_data_->launchers_length == ((guint) 0)) {
		_data_->result = FALSE;
		_json_array_unref0 (_data_->launchers_array);
		_g_hash_table_unref0 (_data_->json_group_items);
		_json_array_unref0 (_data_->groups_array);
		_json_object_unref0 (_data_->root_object);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp39_ = g_str_hash;
	_data_->_tmp40_ = g_str_equal;
	_data_->_tmp41_ = g_hash_table_new_full (_data_->_tmp39_, _data_->_tmp40_, _g_free0_, _proton_plus_models_launcher_json_launcher_item_unref0_);
	_data_->json_launcher_items = _data_->_tmp41_;
	{
		_data_->_vala1_i = 0;
		{
			_data_->_tmp42_ = TRUE;
			while (TRUE) {
				if (!_data_->_tmp42_) {
					_data_->_tmp43_ = _data_->_vala1_i;
					_data_->_vala1_i = _data_->_tmp43_ + 1;
				}
				_data_->_tmp42_ = FALSE;
				if (!(((guint) _data_->_vala1_i) < _data_->launchers_length)) {
					break;
				}
				_data_->_tmp44_ = _data_->launchers_array;
				_data_->_tmp45_ = json_array_get_object_element (_data_->_tmp44_, (guint) _data_->_vala1_i);
				_data_->_tmp46_ = _json_object_ref0 (_data_->_tmp45_);
				_data_->launcher_object = _data_->_tmp46_;
				_data_->_tmp47_ = _data_->launcher_object;
				_data_->_tmp48_ = json_object_get_array_member (_data_->_tmp47_, "compat_layers");
				_data_->_tmp49_ = _json_array_ref0 (_data_->_tmp48_);
				_data_->launcher_group_array = _data_->_tmp49_;
				_data_->_tmp50_ = _data_->launcher_group_array;
				if (_data_->_tmp50_ == NULL) {
					_data_->result = FALSE;
					_json_array_unref0 (_data_->launcher_group_array);
					_json_object_unref0 (_data_->launcher_object);
					_g_hash_table_unref0 (_data_->json_launcher_items);
					_json_array_unref0 (_data_->launchers_array);
					_g_hash_table_unref0 (_data_->json_group_items);
					_json_array_unref0 (_data_->groups_array);
					_json_object_unref0 (_data_->root_object);
					g_task_return_pointer (_data_->_async_result, _data_, NULL);
					if (_data_->_state_ != 0) {
						while (!g_task_get_completed (_data_->_async_result)) {
							g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
						}
					}
					g_object_unref (_data_->_async_result);
					return FALSE;
				}
				_data_->_tmp51_ = _data_->launcher_group_array;
				_data_->launcher_groups_length = json_array_get_length (_data_->_tmp51_);
				if (_data_->launcher_groups_length == ((guint) 0)) {
					_data_->result = FALSE;
					_json_array_unref0 (_data_->launcher_group_array);
					_json_object_unref0 (_data_->launcher_object);
					_g_hash_table_unref0 (_data_->json_launcher_items);
					_json_array_unref0 (_data_->launchers_array);
					_g_hash_table_unref0 (_data_->json_group_items);
					_json_array_unref0 (_data_->groups_array);
					_json_object_unref0 (_data_->root_object);
					g_task_return_pointer (_data_->_async_result, _data_, NULL);
					if (_data_->_state_ != 0) {
						while (!g_task_get_completed (_data_->_async_result)) {
							g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
						}
					}
					g_object_unref (_data_->_async_result);
					return FALSE;
				}
				_data_->_tmp52_ = g_new0 (ProtonPlusModelsLauncherJsonLauncherGroupItem*, _data_->launcher_groups_length + 1);
				_data_->json_launcher_group_items = _data_->_tmp52_;
				_data_->json_launcher_group_items_length1 = _data_->launcher_groups_length;
				_data_->_json_launcher_group_items_size_ = _data_->json_launcher_group_items_length1;
				{
					_data_->y = 0;
					{
						_data_->_tmp53_ = TRUE;
						while (TRUE) {
							if (!_data_->_tmp53_) {
								_data_->_tmp54_ = _data_->y;
								_data_->y = _data_->_tmp54_ + 1;
							}
							_data_->_tmp53_ = FALSE;
							if (!(((guint) _data_->y) < _data_->launcher_groups_length)) {
								break;
							}
							_data_->_tmp55_ = _data_->launcher_group_array;
							_data_->_tmp56_ = json_array_get_object_element (_data_->_tmp55_, (guint) _data_->y);
							_data_->_tmp57_ = _json_object_ref0 (_data_->_tmp56_);
							_data_->launcher_group_object = _data_->_tmp57_;
							_data_->_tmp58_ = proton_plus_models_launcher_json_launcher_group_item_new ();
							_data_->json_launcher_group_item = _data_->_tmp58_;
							_data_->_tmp59_ = _data_->json_launcher_group_item;
							_data_->_tmp60_ = _data_->launcher_group_object;
							_data_->_tmp61_ = json_object_get_string_member (_data_->_tmp60_, "title");
							_data_->_tmp62_ = g_strdup (_data_->_tmp61_);
							_g_free0 (_data_->_tmp59_->title);
							_data_->_tmp59_->title = _data_->_tmp62_;
							_data_->_tmp63_ = _data_->json_launcher_group_item;
							_data_->_tmp64_ = _data_->launcher_group_object;
							_data_->_tmp65_ = json_object_get_string_member (_data_->_tmp64_, "directory");
							_data_->_tmp66_ = g_strdup (_data_->_tmp65_);
							_g_free0 (_data_->_tmp63_->directory);
							_data_->_tmp63_->directory = _data_->_tmp66_;
							_data_->_tmp67_ = _data_->json_launcher_group_items;
							_data_->_tmp67__length1 = _data_->json_launcher_group_items_length1;
							_data_->_tmp68_ = _data_->json_launcher_group_item;
							_data_->_tmp69_ = _proton_plus_models_launcher_json_launcher_group_item_ref0 (_data_->_tmp68_);
							_proton_plus_models_launcher_json_launcher_group_item_unref0 (_data_->_tmp67_[_data_->y]);
							_data_->_tmp67_[_data_->y] = _data_->_tmp69_;
							_proton_plus_models_launcher_json_launcher_group_item_unref0 (_data_->json_launcher_group_item);
							_json_object_unref0 (_data_->launcher_group_object);
						}
					}
				}
				_data_->_tmp70_ = proton_plus_models_launcher_json_launcher_item_new ();
				_data_->json_launcher_item = _data_->_tmp70_;
				_data_->_tmp71_ = _data_->json_launcher_item;
				_data_->_tmp72_ = _data_->launcher_object;
				_data_->_tmp73_ = json_object_get_string_member (_data_->_tmp72_, "title");
				_data_->_tmp74_ = g_strdup (_data_->_tmp73_);
				_g_free0 (_data_->_tmp71_->title);
				_data_->_tmp71_->title = _data_->_tmp74_;
				_data_->_tmp75_ = _data_->json_launcher_item;
				_data_->_tmp76_ = _data_->json_launcher_group_items;
				_data_->_tmp76__length1 = _data_->json_launcher_group_items_length1;
				_data_->_tmp77_ = (_data_->_tmp76_ != NULL) ? _vala_array_dup3 (_data_->_tmp76_, _data_->_tmp76__length1) : _data_->_tmp76_;
				_data_->_tmp77__length1 = _data_->_tmp76__length1;
				_data_->_tmp75_->groups = (_vala_array_free (_data_->_tmp75_->groups, _data_->_tmp75_->groups_length1, (GDestroyNotify) proton_plus_models_launcher_json_launcher_group_item_unref), NULL);
				_data_->_tmp75_->groups = _data_->_tmp77_;
				_data_->_tmp75_->groups_length1 = _data_->_tmp77__length1;
				_data_->_tmp75_->_groups_size_ = _data_->_tmp75_->groups_length1;
				_data_->_tmp78_ = _data_->json_launcher_items;
				_data_->_tmp79_ = _data_->json_launcher_item;
				_data_->_tmp80_ = _data_->_tmp79_->title;
				_data_->_tmp81_ = g_strdup (_data_->_tmp80_);
				_data_->_tmp82_ = _data_->json_launcher_item;
				_data_->_tmp83_ = _proton_plus_models_launcher_json_launcher_item_ref0 (_data_->_tmp82_);
				g_hash_table_insert (_data_->_tmp78_, _data_->_tmp81_, _data_->_tmp83_);
				_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->json_launcher_item);
				_data_->json_launcher_group_items = (_vala_array_free (_data_->json_launcher_group_items, _data_->json_launcher_group_items_length1, (GDestroyNotify) proton_plus_models_launcher_json_launcher_group_item_unref), NULL);
				_json_array_unref0 (_data_->launcher_group_array);
				_json_object_unref0 (_data_->launcher_object);
			}
		}
	}
	{
		_data_->launcher_collection = _data_->launchers;
		for (_data_->launcher_it = _data_->launcher_collection; _data_->launcher_it != NULL; _data_->launcher_it = _data_->launcher_it->next) {
			_data_->_tmp84_ = _g_object_ref0 ((ProtonPlusModelsLauncher*) _data_->launcher_it->data);
			_data_->launcher = _data_->_tmp84_;
			{
				_data_->_tmp85_ = _data_->json_launcher_items;
				_data_->_tmp86_ = _data_->launcher;
				_data_->_tmp87_ = _data_->_tmp86_->title;
				_data_->_tmp88_ = g_hash_table_lookup (_data_->_tmp85_, _data_->_tmp87_);
				_data_->_tmp89_ = _proton_plus_models_launcher_json_launcher_item_ref0 ((ProtonPlusModelsLauncherJsonLauncherItem*) _data_->_tmp88_);
				_data_->_vala1_json_launcher_item = _data_->_tmp89_;
				_data_->_tmp90_ = _data_->_vala1_json_launcher_item;
				if (_data_->_tmp90_ == NULL) {
					_data_->result = FALSE;
					_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->_vala1_json_launcher_item);
					_g_object_unref0 (_data_->launcher);
					_g_hash_table_unref0 (_data_->json_launcher_items);
					_json_array_unref0 (_data_->launchers_array);
					_g_hash_table_unref0 (_data_->json_group_items);
					_json_array_unref0 (_data_->groups_array);
					_json_object_unref0 (_data_->root_object);
					g_task_return_pointer (_data_->_async_result, _data_, NULL);
					if (_data_->_state_ != 0) {
						while (!g_task_get_completed (_data_->_async_result)) {
							g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
						}
					}
					g_object_unref (_data_->_async_result);
					return FALSE;
				}
				_data_->_tmp91_ = _data_->_vala1_json_launcher_item;
				_data_->_tmp92_ = _data_->_tmp91_->groups;
				_data_->_tmp92__length1 = _data_->_tmp91_->groups_length1;
				_data_->_tmp93_ = g_new0 (ProtonPlusModelsGroup*, _data_->_tmp92__length1 + 1);
				_data_->groups = _data_->_tmp93_;
				_data_->groups_length1 = _data_->_tmp92__length1;
				_data_->_groups_size_ = _data_->groups_length1;
				{
					_data_->_vala2_i = 0;
					{
						_data_->_tmp94_ = TRUE;
						while (TRUE) {
							if (!_data_->_tmp94_) {
								_data_->_tmp95_ = _data_->_vala2_i;
								_data_->_vala2_i = _data_->_tmp95_ + 1;
							}
							_data_->_tmp94_ = FALSE;
							_data_->_tmp96_ = _data_->groups;
							_data_->_tmp96__length1 = _data_->groups_length1;
							if (!(_data_->_vala2_i < _data_->_tmp96__length1)) {
								break;
							}
							_data_->_tmp97_ = _data_->_vala1_json_launcher_item;
							_data_->_tmp98_ = _data_->_tmp97_->groups;
							_data_->_tmp98__length1 = _data_->_tmp97_->groups_length1;
							_data_->_tmp99_ = _data_->_tmp98_[_data_->_vala2_i];
							_data_->_tmp100_ = _proton_plus_models_launcher_json_launcher_group_item_ref0 (_data_->_tmp99_);
							_data_->_vala1_json_launcher_group_item = _data_->_tmp100_;
							_data_->_tmp101_ = _data_->json_group_items;
							_data_->_tmp102_ = _data_->_vala1_json_launcher_group_item;
							_data_->_tmp103_ = _data_->_tmp102_->title;
							_data_->_tmp104_ = g_hash_table_lookup (_data_->_tmp101_, _data_->_tmp103_);
							_data_->_tmp105_ = _proton_plus_models_launcher_json_group_item_ref0 ((ProtonPlusModelsLauncherJsonGroupItem*) _data_->_tmp104_);
							_data_->_vala1_json_group_item = _data_->_tmp105_;
							_data_->_tmp106_ = _data_->_vala1_json_group_item;
							if (_data_->_tmp106_ == NULL) {
								_data_->result = FALSE;
								_proton_plus_models_launcher_json_group_item_unref0 (_data_->_vala1_json_group_item);
								_proton_plus_models_launcher_json_launcher_group_item_unref0 (_data_->_vala1_json_launcher_group_item);
								_data_->groups = (_vala_array_free (_data_->groups, _data_->groups_length1, (GDestroyNotify) g_object_unref), NULL);
								_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->_vala1_json_launcher_item);
								_g_object_unref0 (_data_->launcher);
								_g_hash_table_unref0 (_data_->json_launcher_items);
								_json_array_unref0 (_data_->launchers_array);
								_g_hash_table_unref0 (_data_->json_group_items);
								_json_array_unref0 (_data_->groups_array);
								_json_object_unref0 (_data_->root_object);
								g_task_return_pointer (_data_->_async_result, _data_, NULL);
								if (_data_->_state_ != 0) {
									while (!g_task_get_completed (_data_->_async_result)) {
										g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
									}
								}
								g_object_unref (_data_->_async_result);
								return FALSE;
							}
							_data_->_tmp107_ = _data_->groups;
							_data_->_tmp107__length1 = _data_->groups_length1;
							_data_->_tmp108_ = _data_->_vala1_json_launcher_group_item;
							_data_->_tmp109_ = _data_->_tmp108_->title;
							_data_->_tmp110_ = _data_->_vala1_json_group_item;
							_data_->_tmp111_ = _data_->_tmp110_->description;
							_data_->_tmp112_ = proton_plus_utils_safe_translate (_data_->_tmp111_);
							_data_->_tmp113_ = _data_->_tmp112_;
							_data_->_tmp114_ = _data_->_vala1_json_launcher_group_item;
							_data_->_tmp115_ = _data_->_tmp114_->directory;
							_data_->_tmp116_ = _data_->launcher;
							_data_->_tmp117_ = proton_plus_models_group_new (_data_->_tmp109_, _data_->_tmp113_, _data_->_tmp115_, _data_->_tmp116_);
							_g_object_unref0 (_data_->_tmp107_[_data_->_vala2_i]);
							_data_->_tmp107_[_data_->_vala2_i] = _data_->_tmp117_;
							_g_free0 (_data_->_tmp113_);
							_data_->_tmp118_ = _data_->groups;
							_data_->_tmp118__length1 = _data_->groups_length1;
							_data_->_tmp119_ = _data_->_tmp118_[_data_->_vala2_i];
							(_data_->_tmp119_->runners == NULL) ? NULL : (_data_->_tmp119_->runners = (_g_list_free__g_object_unref0_ (_data_->_tmp119_->runners), NULL));
							_data_->_tmp119_->runners = NULL;
							_data_->_tmp120_ = _data_->_vala1_json_group_item;
							_data_->_tmp121_ = _data_->_tmp120_->runners;
							_data_->_tmp122_ = 0;
							_data_->_state_ = 2;
							proton_plus_models_launcher_get_json_runner_items_from_array (_data_->_tmp121_, proton_plus_models_launcher_initialize_launchers_ready, _data_);
							return FALSE;
							_state_2:
							_data_->_tmp123_ = proton_plus_models_launcher_get_json_runner_items_from_array_finish (_data_->_res_, &_data_->_tmp122_);
							_data_->json_runner_items = _data_->_tmp123_;
							_data_->json_runner_items_length1 = _data_->_tmp122_;
							_data_->_json_runner_items_size_ = _data_->json_runner_items_length1;
							_data_->_tmp124_ = _data_->json_runner_items;
							_data_->_tmp124__length1 = _data_->json_runner_items_length1;
							if (_data_->_tmp124_ == NULL) {
								_data_->result = FALSE;
								_data_->json_runner_items = (_vala_array_free (_data_->json_runner_items, _data_->json_runner_items_length1, (GDestroyNotify) proton_plus_models_launcher_json_runner_item_unref), NULL);
								_proton_plus_models_launcher_json_group_item_unref0 (_data_->_vala1_json_group_item);
								_proton_plus_models_launcher_json_launcher_group_item_unref0 (_data_->_vala1_json_launcher_group_item);
								_data_->groups = (_vala_array_free (_data_->groups, _data_->groups_length1, (GDestroyNotify) g_object_unref), NULL);
								_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->_vala1_json_launcher_item);
								_g_object_unref0 (_data_->launcher);
								_g_hash_table_unref0 (_data_->json_launcher_items);
								_json_array_unref0 (_data_->launchers_array);
								_g_hash_table_unref0 (_data_->json_group_items);
								_json_array_unref0 (_data_->groups_array);
								_json_object_unref0 (_data_->root_object);
								g_task_return_pointer (_data_->_async_result, _data_, NULL);
								if (_data_->_state_ != 0) {
									while (!g_task_get_completed (_data_->_async_result)) {
										g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
									}
								}
								g_object_unref (_data_->_async_result);
								return FALSE;
							}
							_data_->_tmp125_ = _data_->json_runner_items;
							_data_->_tmp125__length1 = _data_->json_runner_items_length1;
							{
								_data_->json_runner_item_collection_length1 = 0;
								_data_->_json_runner_item_collection_size_ = 0;
								_data_->json_runner_item_collection = _data_->_tmp125_;
								_data_->json_runner_item_collection_length1 = _data_->_tmp125__length1;
								for (_data_->json_runner_item_it = 0; _data_->json_runner_item_it < _data_->json_runner_item_collection_length1; _data_->json_runner_item_it = _data_->json_runner_item_it + 1) {
									_data_->_tmp126_ = _proton_plus_models_launcher_json_runner_item_ref0 (_data_->json_runner_item_collection[_data_->json_runner_item_it]);
									_data_->json_runner_item = _data_->_tmp126_;
									{
										_data_->_tmp127_ = _data_->json_runner_item;
										_data_->_tmp128_ = _data_->groups;
										_data_->_tmp128__length1 = _data_->groups_length1;
										_data_->_tmp129_ = _data_->_tmp128_[_data_->_vala2_i];
										_data_->_state_ = 3;
										proton_plus_models_launcher_create_runner_from_json_runner_item (_data_->_tmp127_, _data_->_tmp129_, proton_plus_models_launcher_initialize_launchers_ready, _data_);
										return FALSE;
										_state_3:
										_data_->_tmp130_ = proton_plus_models_launcher_create_runner_from_json_runner_item_finish (_data_->_res_);
										_data_->runner = _data_->_tmp130_;
										_data_->_tmp131_ = _data_->runner;
										if (_data_->_tmp131_ == NULL) {
											_g_object_unref0 (_data_->runner);
											_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
											continue;
										}
										_data_->_tmp132_ = _data_->groups;
										_data_->_tmp132__length1 = _data_->groups_length1;
										_data_->_tmp133_ = _data_->_tmp132_[_data_->_vala2_i];
										_data_->_tmp134_ = _data_->runner;
										_data_->_tmp135_ = _g_object_ref0 ((ProtonPlusModelsRunner*) _data_->_tmp134_);
										_data_->_tmp133_->runners = g_list_append (_data_->_tmp133_->runners, _data_->_tmp135_);
										_g_object_unref0 (_data_->runner);
										_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
									}
								}
							}
							_data_->_tmp136_ = _data_->launcher;
							_data_->_tmp137_ = _data_->_tmp136_->title;
							if (g_strcmp0 (_data_->_tmp137_, "Steam") == 0) {
								_data_->_tmp138_ = _data_->groups;
								_data_->_tmp138__length1 = _data_->groups_length1;
								_data_->_tmp139_ = _data_->_tmp138_[_data_->_vala2_i];
								_data_->_tmp140_ = proton_plus_models_runners_steam_tinker_launch_new (_data_->_tmp139_);
								_data_->stl_runner = _data_->_tmp140_;
								_data_->_tmp141_ = _data_->groups;
								_data_->_tmp141__length1 = _data_->groups_length1;
								_data_->_tmp142_ = _data_->_tmp141_[_data_->_vala2_i];
								_data_->_tmp143_ = _data_->stl_runner;
								_data_->_tmp144_ = _g_object_ref0 ((ProtonPlusModelsRunner*) _data_->_tmp143_);
								_data_->_tmp142_->runners = g_list_append (_data_->_tmp142_->runners, _data_->_tmp144_);
								_g_object_unref0 (_data_->stl_runner);
							}
							_data_->json_runner_items = (_vala_array_free (_data_->json_runner_items, _data_->json_runner_items_length1, (GDestroyNotify) proton_plus_models_launcher_json_runner_item_unref), NULL);
							_proton_plus_models_launcher_json_group_item_unref0 (_data_->_vala1_json_group_item);
							_proton_plus_models_launcher_json_launcher_group_item_unref0 (_data_->_vala1_json_launcher_group_item);
						}
					}
				}
				_data_->_tmp145_ = _data_->launcher;
				_data_->_tmp146_ = _data_->groups;
				_data_->_tmp146__length1 = _data_->groups_length1;
				_data_->_tmp147_ = (_data_->_tmp146_ != NULL) ? _vala_array_dup4 (_data_->_tmp146_, _data_->_tmp146__length1) : _data_->_tmp146_;
				_data_->_tmp147__length1 = _data_->_tmp146__length1;
				_data_->_tmp145_->groups = (_vala_array_free (_data_->_tmp145_->groups, _data_->_tmp145_->groups_length1, (GDestroyNotify) g_object_unref), NULL);
				_data_->_tmp145_->groups = _data_->_tmp147_;
				_data_->_tmp145_->groups_length1 = _data_->_tmp147__length1;
				_data_->_tmp148_ = _data_->launcher;
				if (_data_->_tmp148_->installed) {
					_data_->_tmp149_ = _data_->launcher;
					_data_->_state_ = 4;
					proton_plus_models_launcher_load_game_library (_data_->_tmp149_, proton_plus_models_launcher_initialize_launchers_ready, _data_);
					return FALSE;
					_state_4:
					_data_->games_loaded = proton_plus_models_launcher_load_game_library_finish (_data_->_tmp149_, _data_->_res_);
					if (!_data_->games_loaded) {
						_data_->result = FALSE;
						_data_->groups = (_vala_array_free (_data_->groups, _data_->groups_length1, (GDestroyNotify) g_object_unref), NULL);
						_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->_vala1_json_launcher_item);
						_g_object_unref0 (_data_->launcher);
						_g_hash_table_unref0 (_data_->json_launcher_items);
						_json_array_unref0 (_data_->launchers_array);
						_g_hash_table_unref0 (_data_->json_group_items);
						_json_array_unref0 (_data_->groups_array);
						_json_object_unref0 (_data_->root_object);
						g_task_return_pointer (_data_->_async_result, _data_, NULL);
						if (_data_->_state_ != 0) {
							while (!g_task_get_completed (_data_->_async_result)) {
								g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
							}
						}
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp150_ = _data_->launcher;
					if (PROTON_PLUS_MODELS_LAUNCHERS_IS_STEAM (_data_->_tmp150_)) {
						_data_->_tmp151_ = _data_->launcher;
						_data_->_tmp152_ = _g_object_ref0 (PROTON_PLUS_MODELS_LAUNCHERS_IS_STEAM (_data_->_tmp151_) ? ((ProtonPlusModelsLaunchersSteam*) _data_->_tmp151_) : NULL);
						_data_->steam_launcher = _data_->_tmp152_;
						_data_->_tmp153_ = _data_->steam_launcher;
						_data_->_tmp154_ = _data_->steam_launcher;
						_data_->_tmp155_ = proton_plus_models_steam_profile_get_profiles (_data_->_tmp154_);
						(_data_->_tmp153_->profiles == NULL) ? NULL : (_data_->_tmp153_->profiles = (_g_list_free__g_object_unref0_ (_data_->_tmp153_->profiles), NULL));
						_data_->_tmp153_->profiles = _data_->_tmp155_;
						_data_->_tmp156_ = _data_->steam_launcher;
						_data_->_tmp157_ = _data_->_tmp156_->profiles;
						{
							_data_->profile_collection = _data_->_tmp157_;
							for (_data_->profile_it = _data_->profile_collection; _data_->profile_it != NULL; _data_->profile_it = _data_->profile_it->next) {
								_data_->_tmp158_ = _g_object_ref0 ((ProtonPlusModelsSteamProfile*) _data_->profile_it->data);
								_data_->profile = _data_->_tmp158_;
								{
									_data_->_tmp159_ = _data_->profile;
									_data_->_state_ = 5;
									proton_plus_models_steam_profile_load_extra_data (_data_->_tmp159_, proton_plus_models_launcher_initialize_launchers_ready, _data_);
									return FALSE;
									_state_5:
									proton_plus_models_steam_profile_load_extra_data_finish (_data_->_tmp159_, _data_->_res_);
									_g_object_unref0 (_data_->profile);
								}
							}
						}
						_g_object_unref0 (_data_->steam_launcher);
					}
				}
				_data_->groups = (_vala_array_free (_data_->groups, _data_->groups_length1, (GDestroyNotify) g_object_unref), NULL);
				_proton_plus_models_launcher_json_launcher_item_unref0 (_data_->_vala1_json_launcher_item);
				_g_object_unref0 (_data_->launcher);
			}
		}
	}
	_data_->result = TRUE;
	_g_hash_table_unref0 (_data_->json_launcher_items);
	_json_array_unref0 (_data_->launchers_array);
	_g_hash_table_unref0 (_data_->json_group_items);
	_json_array_unref0 (_data_->groups_array);
	_json_object_unref0 (_data_->root_object);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
proton_plus_models_launcher_get_runners_json_object_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherGetRunnersJsonObjectData* _data_;
	_data_ = _data;
	_json_object_unref0 (_data_->result);
	g_slice_free (ProtonPlusModelsLauncherGetRunnersJsonObjectData, _data_);
}

static void
proton_plus_models_launcher_get_runners_json_object (GAsyncReadyCallback _callback_,
                                                     gpointer _user_data_)
{
	ProtonPlusModelsLauncherGetRunnersJsonObjectData* _data_;
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherGetRunnersJsonObjectData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_get_runners_json_object_data_free);
	proton_plus_models_launcher_get_runners_json_object_co (_data_);
}

static JsonObject*
proton_plus_models_launcher_get_runners_json_object_finish (GAsyncResult* _res_)
{
	JsonObject* result;
	ProtonPlusModelsLauncherGetRunnersJsonObjectData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	_data_->result = NULL;
	return result;
}

static void
_vala_JsonNode_free (JsonNode* self)
{
	g_boxed_free (json_node_get_type (), self);
}

static gboolean
proton_plus_models_launcher_get_runners_json_object_co (ProtonPlusModelsLauncherGetRunnersJsonObjectData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = proton_plus_utils_filesystem_get_file_content ("resource://com/vysp3r/ProtonPlus/runners.json", TRUE);
	_data_->json = _data_->_tmp0_;
	_data_->_tmp1_ = _data_->json;
	if (g_strcmp0 (_data_->_tmp1_, "") == 0) {
		_data_->result = NULL;
		_g_free0 (_data_->json);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp2_ = _data_->json;
	_data_->_tmp3_ = proton_plus_utils_parser_get_node_from_json (_data_->_tmp2_);
	_data_->root_node = _data_->_tmp3_;
	_data_->_tmp4_ = _data_->root_node;
	if (_data_->_tmp4_ == NULL) {
		_data_->result = NULL;
		__vala_JsonNode_free0 (_data_->root_node);
		_g_free0 (_data_->json);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp5_ = _data_->root_node;
	_data_->_tmp6_ = json_node_get_object (_data_->_tmp5_);
	_data_->_tmp7_ = _json_object_ref0 (_data_->_tmp6_);
	_data_->root_object = _data_->_tmp7_;
	_data_->_tmp8_ = _data_->root_object;
	if (_data_->_tmp8_ == NULL) {
		_data_->result = NULL;
		_json_object_unref0 (_data_->root_object);
		__vala_JsonNode_free0 (_data_->root_node);
		_g_free0 (_data_->json);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp9_ = _data_->root_object;
	_data_->version = json_object_get_int_member_with_default (_data_->_tmp9_, "version", (gint64) 0);
	if (_data_->version == ((gint64) 0)) {
		_data_->result = NULL;
		_json_object_unref0 (_data_->root_object);
		__vala_JsonNode_free0 (_data_->root_node);
		_g_free0 (_data_->json);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->result = _data_->root_object;
	__vala_JsonNode_free0 (_data_->root_node);
	_g_free0 (_data_->json);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
proton_plus_models_launcher_get_json_runner_items_from_array_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData* _data_;
	_data_ = _data;
	_json_array_unref0 (_data_->runners_array);
	_data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) proton_plus_models_launcher_json_runner_item_unref), NULL);
	g_slice_free (ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData, _data_);
}

static void
proton_plus_models_launcher_get_json_runner_items_from_array (JsonArray* runners_array,
                                                              GAsyncReadyCallback _callback_,
                                                              gpointer _user_data_)
{
	ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData* _data_;
	JsonArray* _tmp0_;
	g_return_if_fail (runners_array != NULL);
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_get_json_runner_items_from_array_data_free);
	_tmp0_ = _json_array_ref0 (runners_array);
	_json_array_unref0 (_data_->runners_array);
	_data_->runners_array = _tmp0_;
	proton_plus_models_launcher_get_json_runner_items_from_array_co (_data_);
}

static ProtonPlusModelsLauncherJsonRunnerItem**
proton_plus_models_launcher_get_json_runner_items_from_array_finish (GAsyncResult* _res_,
                                                                     gint* result_length1)
{
	ProtonPlusModelsLauncherJsonRunnerItem** result;
	ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	*result_length1 = _data_->result_length1;
	_data_->result = NULL;
	return result;
}

static gchar**
_vala_array_dup5 (gchar** self,
                  gssize length)
{
	if (length >= 0) {
		gchar** result;
		gssize i;
		result = g_new0 (gchar*, length + 1);
		for (i = 0; i < length; i++) {
			gchar* _tmp0_;
			_tmp0_ = g_strdup (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

static gchar**
_vala_array_dup6 (gchar** self,
                  gssize length)
{
	if (length >= 0) {
		gchar** result;
		gssize i;
		result = g_new0 (gchar*, length + 1);
		for (i = 0; i < length; i++) {
			gchar* _tmp0_;
			_tmp0_ = g_strdup (self[i]);
			result[i] = _tmp0_;
		}
		return result;
	}
	return NULL;
}

static gboolean
proton_plus_models_launcher_get_json_runner_items_from_array_co (ProtonPlusModelsLauncherGetJsonRunnerItemsFromArrayData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->runners_length = json_array_get_length (_data_->runners_array);
	if (_data_->runners_length == ((guint) 0)) {
		_data_->_tmp0_ = NULL;
		_data_->_tmp0__length1 = 0;
		_data_->result_length1 = _data_->_tmp0__length1;
		_data_->result = _data_->_tmp0_;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp1_ = g_new0 (ProtonPlusModelsLauncherJsonRunnerItem*, _data_->runners_length + 1);
	_data_->json_runner_items = _data_->_tmp1_;
	_data_->json_runner_items_length1 = _data_->runners_length;
	_data_->_json_runner_items_size_ = _data_->json_runner_items_length1;
	{
		_data_->i = 0;
		{
			_data_->_tmp2_ = TRUE;
			while (TRUE) {
				if (!_data_->_tmp2_) {
					_data_->_tmp3_ = _data_->i;
					_data_->i = _data_->_tmp3_ + 1;
				}
				_data_->_tmp2_ = FALSE;
				if (!(((guint) _data_->i) < _data_->runners_length)) {
					break;
				}
				_data_->_tmp4_ = json_array_get_object_element (_data_->runners_array, (guint) _data_->i);
				_data_->_tmp5_ = _json_object_ref0 (_data_->_tmp4_);
				_data_->runner_object = _data_->_tmp5_;
				_data_->_tmp6_ = g_strdup ("title");
				_data_->_tmp7_ = g_strdup ("description");
				_data_->_tmp8_ = g_strdup ("endpoint");
				_data_->_tmp9_ = g_strdup ("asset_position");
				_data_->_tmp10_ = g_strdup ("directory_name_formats");
				_data_->_tmp11_ = g_strdup ("type");
				_data_->_tmp12_ = g_new0 (gchar*, 6 + 1);
				_data_->_tmp12_[0] = _data_->_tmp6_;
				_data_->_tmp12_[1] = _data_->_tmp7_;
				_data_->_tmp12_[2] = _data_->_tmp8_;
				_data_->_tmp12_[3] = _data_->_tmp9_;
				_data_->_tmp12_[4] = _data_->_tmp10_;
				_data_->_tmp12_[5] = _data_->_tmp11_;
				_data_->members = _data_->_tmp12_;
				_data_->members_length1 = 6;
				_data_->_members_size_ = _data_->members_length1;
				_data_->members_valid = TRUE;
				_data_->_tmp13_ = _data_->members;
				_data_->_tmp13__length1 = _data_->members_length1;
				{
					_data_->member_collection_length1 = 0;
					_data_->_member_collection_size_ = 0;
					_data_->member_collection = _data_->_tmp13_;
					_data_->member_collection_length1 = _data_->_tmp13__length1;
					for (_data_->member_it = 0; _data_->member_it < _data_->member_collection_length1; _data_->member_it = _data_->member_it + 1) {
						_data_->_tmp14_ = g_strdup (_data_->member_collection[_data_->member_it]);
						_data_->member = _data_->_tmp14_;
						{
							_data_->_tmp15_ = _data_->runner_object;
							_data_->_tmp16_ = _data_->member;
							if (!json_object_has_member (_data_->_tmp15_, _data_->_tmp16_)) {
								_data_->members_valid = FALSE;
								_g_free0 (_data_->member);
								break;
							}
							_g_free0 (_data_->member);
						}
					}
				}
				if (!_data_->members_valid) {
					_data_->members = (_vala_array_free (_data_->members, _data_->members_length1, (GDestroyNotify) g_free), NULL);
					_json_object_unref0 (_data_->runner_object);
					continue;
				}
				_data_->_tmp17_ = proton_plus_models_launcher_json_runner_item_new ();
				_data_->json_runner_item = _data_->_tmp17_;
				_data_->_tmp18_ = _data_->json_runner_item;
				_data_->_tmp19_ = _data_->runner_object;
				_data_->_tmp20_ = json_object_get_string_member (_data_->_tmp19_, "title");
				_data_->_tmp21_ = g_strdup (_data_->_tmp20_);
				_g_free0 (_data_->_tmp18_->title);
				_data_->_tmp18_->title = _data_->_tmp21_;
				_data_->_tmp22_ = _data_->json_runner_item;
				_data_->_tmp23_ = _data_->runner_object;
				_data_->_tmp24_ = json_object_get_string_member (_data_->_tmp23_, "description");
				_data_->_tmp25_ = g_strdup (_data_->_tmp24_);
				_g_free0 (_data_->_tmp22_->description);
				_data_->_tmp22_->description = _data_->_tmp25_;
				_data_->_tmp26_ = _data_->json_runner_item;
				_data_->_tmp27_ = _data_->runner_object;
				_data_->_tmp28_ = json_object_get_string_member (_data_->_tmp27_, "endpoint");
				_data_->_tmp29_ = g_strdup (_data_->_tmp28_);
				_g_free0 (_data_->_tmp26_->endpoint);
				_data_->_tmp26_->endpoint = _data_->_tmp29_;
				_data_->_tmp30_ = _data_->json_runner_item;
				_data_->_tmp31_ = _data_->runner_object;
				_data_->_tmp30_->asset_position = (gint) json_object_get_int_member (_data_->_tmp31_, "asset_position");
				_data_->_tmp32_ = _data_->json_runner_item;
				_data_->_tmp33_ = _data_->runner_object;
				_data_->_tmp34_ = json_object_get_array_member (_data_->_tmp33_, "directory_name_formats");
				_data_->_tmp35_ = _json_array_ref0 (_data_->_tmp34_);
				_json_array_unref0 (_data_->_tmp32_->directory_name_formats);
				_data_->_tmp32_->directory_name_formats = _data_->_tmp35_;
				_data_->_tmp36_ = _data_->json_runner_item;
				_data_->_tmp37_ = _data_->runner_object;
				_data_->_tmp38_ = json_object_get_string_member (_data_->_tmp37_, "type");
				_data_->_tmp39_ = g_strdup (_data_->_tmp38_);
				_g_free0 (_data_->_tmp36_->type);
				_data_->_tmp36_->type = _data_->_tmp39_;
				_data_->_tmp40_ = _data_->runner_object;
				if (json_object_has_member (_data_->_tmp40_, "support_latest")) {
					_data_->_tmp41_ = _data_->json_runner_item;
					_data_->_tmp42_ = _data_->runner_object;
					_data_->_tmp41_->has_latest_support = json_object_get_boolean_member (_data_->_tmp42_, "support_latest");
				}
				_data_->_tmp43_ = _data_->runner_object;
				if (json_object_has_member (_data_->_tmp43_, "url_template")) {
					_data_->_tmp44_ = _data_->json_runner_item;
					_data_->_tmp45_ = _data_->runner_object;
					_data_->_tmp46_ = json_object_get_string_member (_data_->_tmp45_, "url_template");
					_data_->_tmp47_ = g_strdup (_data_->_tmp46_);
					_g_free0 (_data_->_tmp44_->url_template);
					_data_->_tmp44_->url_template = _data_->_tmp47_;
				}
				_data_->_tmp48_ = _data_->runner_object;
				if (json_object_has_member (_data_->_tmp48_, "request_asset_exclude")) {
					_data_->_tmp49_ = _data_->runner_object;
					_data_->_tmp50_ = json_object_get_array_member (_data_->_tmp49_, "request_asset_exclude");
					_data_->_tmp51_ = _json_array_ref0 (_data_->_tmp50_);
					_data_->request_asset_exclude_array = _data_->_tmp51_;
					_data_->_tmp52_ = _data_->request_asset_exclude_array;
					_data_->request_asset_exclude_length = json_array_get_length (_data_->_tmp52_);
					if (_data_->request_asset_exclude_length == ((guint) 0)) {
						_data_->_tmp53_ = NULL;
						_data_->_tmp53__length1 = 0;
						_data_->result_length1 = _data_->_tmp53__length1;
						_data_->result = _data_->_tmp53_;
						_json_array_unref0 (_data_->request_asset_exclude_array);
						_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
						_data_->members = (_vala_array_free (_data_->members, _data_->members_length1, (GDestroyNotify) g_free), NULL);
						_json_object_unref0 (_data_->runner_object);
						_data_->json_runner_items = (_vala_array_free (_data_->json_runner_items, _data_->json_runner_items_length1, (GDestroyNotify) proton_plus_models_launcher_json_runner_item_unref), NULL);
						g_task_return_pointer (_data_->_async_result, _data_, NULL);
						if (_data_->_state_ != 0) {
							while (!g_task_get_completed (_data_->_async_result)) {
								g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
							}
						}
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp54_ = g_new0 (gchar*, _data_->request_asset_exclude_length + 1);
					_data_->request_asset_exclude = _data_->_tmp54_;
					_data_->request_asset_exclude_length1 = _data_->request_asset_exclude_length;
					_data_->_request_asset_exclude_size_ = _data_->request_asset_exclude_length1;
					{
						_data_->y = 0;
						{
							_data_->_tmp55_ = TRUE;
							while (TRUE) {
								if (!_data_->_tmp55_) {
									_data_->_tmp56_ = _data_->y;
									_data_->y = _data_->_tmp56_ + 1;
								}
								_data_->_tmp55_ = FALSE;
								if (!(((guint) _data_->y) < _data_->request_asset_exclude_length)) {
									break;
								}
								_data_->_tmp57_ = _data_->request_asset_exclude;
								_data_->_tmp57__length1 = _data_->request_asset_exclude_length1;
								_data_->_tmp58_ = _data_->request_asset_exclude_array;
								_data_->_tmp59_ = json_array_get_string_element (_data_->_tmp58_, (guint) _data_->y);
								_data_->_tmp60_ = g_strdup (_data_->_tmp59_);
								_g_free0 (_data_->_tmp57_[_data_->y]);
								_data_->_tmp57_[_data_->y] = _data_->_tmp60_;
							}
						}
					}
					_data_->_tmp61_ = _data_->json_runner_item;
					_data_->_tmp62_ = _data_->request_asset_exclude;
					_data_->_tmp62__length1 = _data_->request_asset_exclude_length1;
					_data_->_tmp63_ = (_data_->_tmp62_ != NULL) ? _vala_array_dup5 (_data_->_tmp62_, _data_->_tmp62__length1) : _data_->_tmp62_;
					_data_->_tmp63__length1 = _data_->_tmp62__length1;
					_data_->_tmp61_->request_asset_exclude = (_vala_array_free (_data_->_tmp61_->request_asset_exclude, _data_->_tmp61_->request_asset_exclude_length1, (GDestroyNotify) g_free), NULL);
					_data_->_tmp61_->request_asset_exclude = _data_->_tmp63_;
					_data_->_tmp61_->request_asset_exclude_length1 = _data_->_tmp63__length1;
					_data_->_tmp61_->_request_asset_exclude_size_ = _data_->_tmp61_->request_asset_exclude_length1;
					_data_->request_asset_exclude = (_vala_array_free (_data_->request_asset_exclude, _data_->request_asset_exclude_length1, (GDestroyNotify) g_free), NULL);
					_json_array_unref0 (_data_->request_asset_exclude_array);
				}
				_data_->_tmp64_ = _data_->runner_object;
				if (json_object_has_member (_data_->_tmp64_, "request_asset_filter")) {
					_data_->_tmp65_ = _data_->runner_object;
					_data_->_tmp66_ = json_object_get_array_member (_data_->_tmp65_, "request_asset_filter");
					_data_->_tmp67_ = _json_array_ref0 (_data_->_tmp66_);
					_data_->request_asset_filter_array = _data_->_tmp67_;
					_data_->_tmp68_ = _data_->request_asset_filter_array;
					_data_->request_asset_filter_length = json_array_get_length (_data_->_tmp68_);
					if (_data_->request_asset_filter_length == ((guint) 0)) {
						_data_->_tmp69_ = NULL;
						_data_->_tmp69__length1 = 0;
						_data_->result_length1 = _data_->_tmp69__length1;
						_data_->result = _data_->_tmp69_;
						_json_array_unref0 (_data_->request_asset_filter_array);
						_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
						_data_->members = (_vala_array_free (_data_->members, _data_->members_length1, (GDestroyNotify) g_free), NULL);
						_json_object_unref0 (_data_->runner_object);
						_data_->json_runner_items = (_vala_array_free (_data_->json_runner_items, _data_->json_runner_items_length1, (GDestroyNotify) proton_plus_models_launcher_json_runner_item_unref), NULL);
						g_task_return_pointer (_data_->_async_result, _data_, NULL);
						if (_data_->_state_ != 0) {
							while (!g_task_get_completed (_data_->_async_result)) {
								g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
							}
						}
						g_object_unref (_data_->_async_result);
						return FALSE;
					}
					_data_->_tmp70_ = g_new0 (gchar*, _data_->request_asset_filter_length + 1);
					_data_->request_asset_filter = _data_->_tmp70_;
					_data_->request_asset_filter_length1 = _data_->request_asset_filter_length;
					_data_->_request_asset_filter_size_ = _data_->request_asset_filter_length1;
					{
						_data_->_vala1_y = 0;
						{
							_data_->_tmp71_ = TRUE;
							while (TRUE) {
								if (!_data_->_tmp71_) {
									_data_->_tmp72_ = _data_->_vala1_y;
									_data_->_vala1_y = _data_->_tmp72_ + 1;
								}
								_data_->_tmp71_ = FALSE;
								if (!(((guint) _data_->_vala1_y) < _data_->request_asset_filter_length)) {
									break;
								}
								_data_->_tmp73_ = _data_->request_asset_filter;
								_data_->_tmp73__length1 = _data_->request_asset_filter_length1;
								_data_->_tmp74_ = _data_->request_asset_filter_array;
								_data_->_tmp75_ = json_array_get_string_element (_data_->_tmp74_, (guint) _data_->_vala1_y);
								_data_->_tmp76_ = g_strdup (_data_->_tmp75_);
								_g_free0 (_data_->_tmp73_[_data_->_vala1_y]);
								_data_->_tmp73_[_data_->_vala1_y] = _data_->_tmp76_;
							}
						}
					}
					_data_->_tmp77_ = _data_->json_runner_item;
					_data_->_tmp78_ = _data_->request_asset_filter;
					_data_->_tmp78__length1 = _data_->request_asset_filter_length1;
					_data_->_tmp79_ = (_data_->_tmp78_ != NULL) ? _vala_array_dup6 (_data_->_tmp78_, _data_->_tmp78__length1) : _data_->_tmp78_;
					_data_->_tmp79__length1 = _data_->_tmp78__length1;
					_data_->_tmp77_->request_asset_filter = (_vala_array_free (_data_->_tmp77_->request_asset_filter, _data_->_tmp77_->request_asset_filter_length1, (GDestroyNotify) g_free), NULL);
					_data_->_tmp77_->request_asset_filter = _data_->_tmp79_;
					_data_->_tmp77_->request_asset_filter_length1 = _data_->_tmp79__length1;
					_data_->_tmp77_->_request_asset_filter_size_ = _data_->_tmp77_->request_asset_filter_length1;
					_data_->request_asset_filter = (_vala_array_free (_data_->request_asset_filter, _data_->request_asset_filter_length1, (GDestroyNotify) g_free), NULL);
					_json_array_unref0 (_data_->request_asset_filter_array);
				}
				_data_->_tmp80_ = _data_->json_runner_item;
				_data_->_tmp81_ = _data_->runner_object;
				_data_->_tmp80_->asset_position_hwcaps_condition = json_object_has_member (_data_->_tmp81_, "asset_position_hwcaps_condition");
				_data_->_tmp82_ = _data_->runner_object;
				if (json_object_has_member (_data_->_tmp82_, "asset_position_time_condition")) {
					_data_->_tmp83_ = _data_->json_runner_item;
					_data_->_tmp84_ = _data_->runner_object;
					_data_->_tmp85_ = json_object_get_string_member (_data_->_tmp84_, "asset_position_time_condition");
					_data_->_tmp86_ = g_strdup (_data_->_tmp85_);
					_g_free0 (_data_->_tmp83_->asset_position_time_condition);
					_data_->_tmp83_->asset_position_time_condition = _data_->_tmp86_;
				}
				_data_->_tmp87_ = _data_->json_runner_items;
				_data_->_tmp87__length1 = _data_->json_runner_items_length1;
				_data_->_tmp88_ = _data_->json_runner_item;
				_data_->_tmp89_ = _proton_plus_models_launcher_json_runner_item_ref0 (_data_->_tmp88_);
				_proton_plus_models_launcher_json_runner_item_unref0 (_data_->_tmp87_[_data_->i]);
				_data_->_tmp87_[_data_->i] = _data_->_tmp89_;
				_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
				_data_->members = (_vala_array_free (_data_->members, _data_->members_length1, (GDestroyNotify) g_free), NULL);
				_json_object_unref0 (_data_->runner_object);
			}
		}
	}
	_data_->_tmp90_ = _data_->json_runner_items;
	_data_->_tmp90__length1 = _data_->json_runner_items_length1;
	_data_->result_length1 = _data_->_tmp90__length1;
	_data_->result = _data_->_tmp90_;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
proton_plus_models_launcher_get_directory_name_format_from_array_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData* _data_;
	_data_ = _data;
	_json_array_unref0 (_data_->directory_name_formats);
	_g_free0 (_data_->launcher_title);
	_g_free0 (_data_->result);
	g_slice_free (ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData, _data_);
}

static void
proton_plus_models_launcher_get_directory_name_format_from_array (JsonArray* directory_name_formats,
                                                                  const gchar* launcher_title,
                                                                  GAsyncReadyCallback _callback_,
                                                                  gpointer _user_data_)
{
	ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData* _data_;
	JsonArray* _tmp0_;
	gchar* _tmp1_;
	g_return_if_fail (directory_name_formats != NULL);
	g_return_if_fail (launcher_title != NULL);
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_get_directory_name_format_from_array_data_free);
	_tmp0_ = _json_array_ref0 (directory_name_formats);
	_json_array_unref0 (_data_->directory_name_formats);
	_data_->directory_name_formats = _tmp0_;
	_tmp1_ = g_strdup (launcher_title);
	_g_free0 (_data_->launcher_title);
	_data_->launcher_title = _tmp1_;
	proton_plus_models_launcher_get_directory_name_format_from_array_co (_data_);
}

static gchar*
proton_plus_models_launcher_get_directory_name_format_from_array_finish (GAsyncResult* _res_)
{
	gchar* result;
	ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	_data_->result = NULL;
	return result;
}

static gboolean
proton_plus_models_launcher_get_directory_name_format_from_array_co (ProtonPlusModelsLauncherGetDirectoryNameFormatFromArrayData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->runners_length = json_array_get_length (_data_->directory_name_formats);
	if (_data_->runners_length == ((guint) 0)) {
		_data_->result = NULL;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp0_ = g_str_hash;
	_data_->_tmp1_ = g_str_equal;
	_data_->_tmp2_ = g_hash_table_new_full (_data_->_tmp0_, _data_->_tmp1_, _g_free0_, _g_free0_);
	_data_->directory_name_format_items = _data_->_tmp2_;
	{
		_data_->i = 0;
		{
			_data_->_tmp3_ = TRUE;
			while (TRUE) {
				if (!_data_->_tmp3_) {
					_data_->_tmp4_ = _data_->i;
					_data_->i = _data_->_tmp4_ + 1;
				}
				_data_->_tmp3_ = FALSE;
				if (!(((guint) _data_->i) < _data_->runners_length)) {
					break;
				}
				_data_->_tmp5_ = json_array_get_object_element (_data_->directory_name_formats, (guint) _data_->i);
				_data_->_tmp6_ = _json_object_ref0 (_data_->_tmp5_);
				_data_->directory_name_format_object = _data_->_tmp6_;
				_data_->_tmp7_ = _data_->directory_name_format_object;
				_data_->_tmp8_ = json_object_get_string_member (_data_->_tmp7_, "launcher");
				_data_->_tmp9_ = g_strdup (_data_->_tmp8_);
				_data_->launcher = _data_->_tmp9_;
				_data_->_tmp10_ = _data_->directory_name_format_object;
				_data_->_tmp11_ = json_object_get_string_member (_data_->_tmp10_, "directory_name_format");
				_data_->_tmp12_ = g_strdup (_data_->_tmp11_);
				_data_->directory_name_format = _data_->_tmp12_;
				_data_->_tmp13_ = _data_->directory_name_format_items;
				_data_->_tmp14_ = _data_->launcher;
				_data_->_tmp15_ = g_strdup (_data_->_tmp14_);
				_data_->_tmp16_ = _data_->directory_name_format;
				_data_->_tmp17_ = g_strdup (_data_->_tmp16_);
				g_hash_table_insert (_data_->_tmp13_, _data_->_tmp15_, _data_->_tmp17_);
				_g_free0 (_data_->directory_name_format);
				_g_free0 (_data_->launcher);
				_json_object_unref0 (_data_->directory_name_format_object);
			}
		}
	}
	_data_->_tmp18_ = _data_->directory_name_format_items;
	_data_->_tmp19_ = g_hash_table_lookup (_data_->_tmp18_, _data_->launcher_title);
	_data_->_tmp20_ = g_strdup ((const gchar*) _data_->_tmp19_);
	_data_->directory_name_format_item = _data_->_tmp20_;
	_data_->_tmp21_ = _data_->directory_name_format_item;
	if (_data_->_tmp21_ == NULL) {
		_data_->_tmp22_ = _data_->directory_name_format_items;
		_data_->_tmp23_ = g_hash_table_lookup (_data_->_tmp22_, "default");
		_data_->_tmp24_ = g_strdup ((const gchar*) _data_->_tmp23_);
		_g_free0 (_data_->directory_name_format_item);
		_data_->directory_name_format_item = _data_->_tmp24_;
		_data_->_tmp25_ = _data_->directory_name_format_item;
		if (_data_->_tmp25_ == NULL) {
			_data_->result = NULL;
			_g_free0 (_data_->directory_name_format_item);
			_g_hash_table_unref0 (_data_->directory_name_format_items);
			g_task_return_pointer (_data_->_async_result, _data_, NULL);
			if (_data_->_state_ != 0) {
				while (!g_task_get_completed (_data_->_async_result)) {
					g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
				}
			}
			g_object_unref (_data_->_async_result);
			return FALSE;
		}
	}
	_data_->result = _data_->directory_name_format_item;
	_g_hash_table_unref0 (_data_->directory_name_format_items);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
proton_plus_models_launcher_create_runner_from_json_runner_item_data_free (gpointer _data)
{
	ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_;
	_data_ = _data;
	_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
	_g_object_unref0 (_data_->group);
	_g_object_unref0 (_data_->result);
	g_slice_free (ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData, _data_);
}

static void
proton_plus_models_launcher_create_runner_from_json_runner_item (ProtonPlusModelsLauncherJsonRunnerItem* json_runner_item,
                                                                 ProtonPlusModelsGroup* group,
                                                                 GAsyncReadyCallback _callback_,
                                                                 gpointer _user_data_)
{
	ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_;
	ProtonPlusModelsLauncherJsonRunnerItem* _tmp0_;
	ProtonPlusModelsGroup* _tmp1_;
	g_return_if_fail (json_runner_item != NULL);
	g_return_if_fail (group != NULL);
	_data_ = g_slice_new0 (ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData);
	_data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_models_launcher_create_runner_from_json_runner_item_data_free);
	_tmp0_ = _proton_plus_models_launcher_json_runner_item_ref0 (json_runner_item);
	_proton_plus_models_launcher_json_runner_item_unref0 (_data_->json_runner_item);
	_data_->json_runner_item = _tmp0_;
	_tmp1_ = _g_object_ref0 (group);
	_g_object_unref0 (_data_->group);
	_data_->group = _tmp1_;
	proton_plus_models_launcher_create_runner_from_json_runner_item_co (_data_);
}

static ProtonPlusModelsRunnersBasic*
proton_plus_models_launcher_create_runner_from_json_runner_item_finish (GAsyncResult* _res_)
{
	ProtonPlusModelsRunnersBasic* result;
	ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	_data_->result = NULL;
	return result;
}

static void
proton_plus_models_launcher_create_runner_from_json_runner_item_ready (GObject* source_object,
                                                                       GAsyncResult* _res_,
                                                                       gpointer _user_data_)
{
	ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	proton_plus_models_launcher_create_runner_from_json_runner_item_co (_data_);
}

static gboolean
proton_plus_models_launcher_create_runner_from_json_runner_item_co (ProtonPlusModelsLauncherCreateRunnerFromJsonRunnerItemData* _data_)
{
	static GQuark _tmp8_label0 = 0;
	static GQuark _tmp8_label1 = 0;
	static GQuark _tmp8_label2 = 0;
	static GQuark _tmp8_label3 = 0;
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		case 2:
		goto _state_2;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->runner = NULL;
	_data_->_tmp0_ = _data_->json_runner_item->directory_name_formats;
	_data_->_tmp1_ = proton_plus_models_group_get_launcher (_data_->group);
	_data_->_tmp2_ = _data_->_tmp1_;
	_data_->_tmp3_ = _data_->_tmp2_->title;
	_data_->_state_ = 1;
	proton_plus_models_launcher_get_directory_name_format_from_array (_data_->_tmp0_, _data_->_tmp3_, proton_plus_models_launcher_create_runner_from_json_runner_item_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp4_ = proton_plus_models_launcher_get_directory_name_format_from_array_finish (_data_->_res_);
	_data_->directory_name_format = _data_->_tmp4_;
	_data_->_tmp5_ = _data_->directory_name_format;
	if (_data_->_tmp5_ == NULL) {
		_data_->result = NULL;
		_g_free0 (_data_->directory_name_format);
		_g_object_unref0 (_data_->runner);
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp6_ = _data_->json_runner_item->type;
	_data_->_tmp9_ = 0U;
	_data_->_tmp7_ = _data_->_tmp6_;
	_data_->_tmp9_ = (NULL == _data_->_tmp7_) ? 0 : g_quark_from_string (_data_->_tmp7_);
	if (_data_->_tmp9_ == ((0 != _tmp8_label0) ? _tmp8_label0 : (_tmp8_label0 = g_quark_from_static_string ("github")))) {
		switch (0) {
			default:
			{
				_data_->_tmp10_ = proton_plus_models_runners_git_hub_new ();
				_data_->github_runner = _data_->_tmp10_;
				_data_->_tmp11_ = _data_->github_runner;
				_data_->_tmp12_ = _data_->json_runner_item->request_asset_exclude;
				_data_->_tmp12__length1 = _data_->json_runner_item->request_asset_exclude_length1;
				proton_plus_models_runners_git_hub_set_request_asset_exclude (_data_->_tmp11_, _data_->_tmp12_, _data_->_tmp12__length1);
				_data_->_tmp13_ = _data_->github_runner;
				_data_->_tmp14_ = _data_->json_runner_item->request_asset_filter;
				_data_->_tmp14__length1 = _data_->json_runner_item->request_asset_filter_length1;
				proton_plus_models_runners_git_hub_set_request_asset_filter (_data_->_tmp13_, _data_->_tmp14_, _data_->_tmp14__length1);
				_data_->_tmp15_ = _data_->github_runner;
				_data_->_tmp16_ = _g_object_ref0 ((ProtonPlusModelsRunnersBasic*) _data_->_tmp15_);
				_g_object_unref0 (_data_->runner);
				_data_->runner = _data_->_tmp16_;
				_g_object_unref0 (_data_->github_runner);
				break;
			}
		}
	} else if (_data_->_tmp9_ == ((0 != _tmp8_label1) ? _tmp8_label1 : (_tmp8_label1 = g_quark_from_static_string ("github-action")))) {
		switch (0) {
			default:
			{
				_data_->_tmp17_ = proton_plus_models_runners_git_hub_action_new ();
				_data_->github_action_runner = _data_->_tmp17_;
				_data_->_tmp18_ = _data_->github_action_runner;
				_data_->_tmp19_ = _data_->json_runner_item->url_template;
				proton_plus_models_runners_git_hub_action_set_url_template (_data_->_tmp18_, _data_->_tmp19_);
				_data_->_tmp20_ = _data_->github_action_runner;
				_data_->_tmp21_ = _g_object_ref0 ((ProtonPlusModelsRunnersBasic*) _data_->_tmp20_);
				_g_object_unref0 (_data_->runner);
				_data_->runner = _data_->_tmp21_;
				_g_object_unref0 (_data_->github_action_runner);
				break;
			}
		}
	} else if (_data_->_tmp9_ == ((0 != _tmp8_label2) ? _tmp8_label2 : (_tmp8_label2 = g_quark_from_static_string ("gitlab")))) {
		switch (0) {
			default:
			{
				_data_->_tmp22_ = proton_plus_models_runners_git_lab_new ();
				_data_->gitlab_runner = _data_->_tmp22_;
				_data_->_tmp23_ = _data_->gitlab_runner;
				_data_->_tmp24_ = _data_->json_runner_item->request_asset_exclude;
				_data_->_tmp24__length1 = _data_->json_runner_item->request_asset_exclude_length1;
				proton_plus_models_runners_git_lab_set_request_asset_exclude (_data_->_tmp23_, _data_->_tmp24_, _data_->_tmp24__length1);
				_data_->_tmp25_ = _data_->gitlab_runner;
				_data_->_tmp26_ = _g_object_ref0 ((ProtonPlusModelsRunnersBasic*) _data_->_tmp25_);
				_g_object_unref0 (_data_->runner);
				_data_->runner = _data_->_tmp26_;
				_g_object_unref0 (_data_->gitlab_runner);
				break;
			}
		}
	} else if (_data_->_tmp9_ == ((0 != _tmp8_label3) ? _tmp8_label3 : (_tmp8_label3 = g_quark_from_static_string ("forgejo")))) {
		switch (0) {
			default:
			{
				_data_->_tmp27_ = proton_plus_models_runners_forgejo_new ();
				_data_->forgejo_runner = _data_->_tmp27_;
				_data_->_tmp28_ = _data_->forgejo_runner;
				_data_->_tmp29_ = _g_object_ref0 ((ProtonPlusModelsRunnersBasic*) _data_->_tmp28_);
				_g_object_unref0 (_data_->runner);
				_data_->runner = _data_->_tmp29_;
				_g_object_unref0 (_data_->forgejo_runner);
				break;
			}
		}
	} else {
		switch (0) {
			default:
			{
				_data_->_tmp30_ = _data_->json_runner_item->title;
				_data_->_tmp31_ = g_strdup_printf ("%s %s", "Invalid type for runner named", _data_->_tmp30_);
				_data_->_tmp32_ = _data_->_tmp31_;
				g_warning ("launcher.vala:423: %s", _data_->_tmp32_);
				_g_free0 (_data_->_tmp32_);
				break;
			}
		}
	}
	_data_->_tmp33_ = _data_->runner;
	if (_data_->_tmp33_ != NULL) {
		_data_->_tmp34_ = _data_->runner;
		_data_->_tmp35_ = _data_->json_runner_item->title;
		proton_plus_models_runner_set_title ((ProtonPlusModelsRunner*) _data_->_tmp34_, _data_->_tmp35_);
		_data_->_tmp36_ = _data_->runner;
		_data_->_tmp37_ = _data_->json_runner_item->description;
		_data_->_tmp38_ = proton_plus_utils_safe_translate (_data_->_tmp37_);
		_data_->_tmp39_ = _data_->_tmp38_;
		proton_plus_models_runner_set_description ((ProtonPlusModelsRunner*) _data_->_tmp36_, _data_->_tmp39_);
		_g_free0 (_data_->_tmp39_);
		_data_->_tmp40_ = _data_->runner;
		_data_->_tmp41_ = _data_->json_runner_item->endpoint;
		proton_plus_models_runners_basic_set_endpoint (_data_->_tmp40_, _data_->_tmp41_);
		_data_->_tmp42_ = _data_->runner;
		proton_plus_models_runners_basic_set_asset_position (_data_->_tmp42_, _data_->json_runner_item->asset_position);
		_data_->_tmp43_ = _data_->runner;
		_data_->_tmp44_ = _data_->json_runner_item->asset_position_time_condition;
		proton_plus_models_runners_basic_set_asset_position_time_condition (_data_->_tmp43_, _data_->_tmp44_);
		_data_->_tmp45_ = _data_->runner;
		_data_->_tmp46_ = _data_->json_runner_item->directory_name_formats;
		_data_->_tmp47_ = proton_plus_models_group_get_launcher (_data_->group);
		_data_->_tmp48_ = _data_->_tmp47_;
		_data_->_tmp49_ = _data_->_tmp48_->title;
		_data_->_state_ = 2;
		proton_plus_models_launcher_get_directory_name_format_from_array (_data_->_tmp46_, _data_->_tmp49_, proton_plus_models_launcher_create_runner_from_json_runner_item_ready, _data_);
		return FALSE;
		_state_2:
		_data_->_tmp50_ = proton_plus_models_launcher_get_directory_name_format_from_array_finish (_data_->_res_);
		_data_->_tmp51_ = _data_->_tmp50_;
		proton_plus_models_runners_basic_set_directory_name_format (_data_->_tmp45_, _data_->_tmp51_);
		_g_free0 (_data_->_tmp51_);
		_data_->_tmp52_ = _data_->runner;
		proton_plus_models_runner_set_has_latest_support ((ProtonPlusModelsRunner*) _data_->_tmp52_, _data_->json_runner_item->has_latest_support);
		_data_->_tmp53_ = _data_->runner;
		proton_plus_models_runner_set_group ((ProtonPlusModelsRunner*) _data_->_tmp53_, _data_->group);
		_data_->_tmp54_ = _data_->runner;
		proton_plus_models_runner_set_asset_position_hwcaps_condition ((ProtonPlusModelsRunner*) _data_->_tmp54_, _data_->json_runner_item->asset_position_hwcaps_condition);
	}
	_data_->result = _data_->runner;
	_g_free0 (_data_->directory_name_format);
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static gint
proton_plus_models_launcher_real_get_compatibility_tool_usage_count (ProtonPlusModelsLauncher* self,
                                                                     const gchar* compatibility_tool_name)
{
	gint result;
	g_return_val_if_fail (compatibility_tool_name != NULL, -1);
	result = 0;
	return result;
}

gint
proton_plus_models_launcher_get_compatibility_tool_usage_count (ProtonPlusModelsLauncher* self,
                                                                const gchar* compatibility_tool_name)
{
	ProtonPlusModelsLauncherClass* _klass_;
	g_return_val_if_fail (self != NULL, -1);
	_klass_ = PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS (self);
	if (_klass_->get_compatibility_tool_usage_count) {
		return _klass_->get_compatibility_tool_usage_count (self, compatibility_tool_name);
	}
	return -1;
}

static ProtonPlusModelsLauncherJsonGroupItem*
proton_plus_models_launcher_json_group_item_construct (GType object_type)
{
	ProtonPlusModelsLauncherJsonGroupItem* self = NULL;
	self = (ProtonPlusModelsLauncherJsonGroupItem*) g_type_create_instance (object_type);
	return self;
}

static ProtonPlusModelsLauncherJsonGroupItem*
proton_plus_models_launcher_json_group_item_new (void)
{
	return proton_plus_models_launcher_json_group_item_construct (PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM);
}

static void
proton_plus_models_launcher_value_json_group_item_init (GValue* value)
{
	value->data[0].v_pointer = NULL;
}

static void
proton_plus_models_launcher_value_json_group_item_free_value (GValue* value)
{
	if (value->data[0].v_pointer) {
		proton_plus_models_launcher_json_group_item_unref (value->data[0].v_pointer);
	}
}

static void
proton_plus_models_launcher_value_json_group_item_copy_value (const GValue* src_value,
                                                              GValue* dest_value)
{
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = proton_plus_models_launcher_json_group_item_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}

static gpointer
proton_plus_models_launcher_value_json_group_item_peek_pointer (const GValue* value)
{
	return value->data[0].v_pointer;
}

static gchar*
proton_plus_models_launcher_value_json_group_item_collect_value (GValue* value,
                                                                 guint n_collect_values,
                                                                 GTypeCValue* collect_values,
                                                                 guint collect_flags)
{
	if (collect_values[0].v_pointer) {
		ProtonPlusModelsLauncherJsonGroupItem * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = proton_plus_models_launcher_json_group_item_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}

static gchar*
proton_plus_models_launcher_value_json_group_item_lcopy_value (const GValue* value,
                                                               guint n_collect_values,
                                                               GTypeCValue* collect_values,
                                                               guint collect_flags)
{
	ProtonPlusModelsLauncherJsonGroupItem ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = proton_plus_models_launcher_json_group_item_ref (value->data[0].v_pointer);
	}
	return NULL;
}

static GParamSpec*
proton_plus_models_launcher_param_spec_json_group_item (const gchar* name,
                                                        const gchar* nick,
                                                        const gchar* blurb,
                                                        GType object_type,
                                                        GParamFlags flags)
{
	ProtonPlusModelsLauncherParamSpecJsonGroupItem* spec;
	g_return_val_if_fail (g_type_is_a (object_type, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}

static gpointer
proton_plus_models_launcher_value_get_json_group_item (const GValue* value)
{
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM), NULL);
	return value->data[0].v_pointer;
}

static void
proton_plus_models_launcher_value_set_json_group_item (GValue* value,
                                                       gpointer v_object)
{
	ProtonPlusModelsLauncherJsonGroupItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		proton_plus_models_launcher_json_group_item_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_group_item_unref (old);
	}
}

static void
proton_plus_models_launcher_value_take_json_group_item (GValue* value,
                                                        gpointer v_object)
{
	ProtonPlusModelsLauncherJsonGroupItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_group_item_unref (old);
	}
}

static void
proton_plus_models_launcher_json_group_item_class_init (ProtonPlusModelsLauncherJsonGroupItemClass * klass,
                                                        gpointer klass_data)
{
	proton_plus_models_launcher_json_group_item_parent_class = g_type_class_peek_parent (klass);
	((ProtonPlusModelsLauncherJsonGroupItemClass *) klass)->finalize = proton_plus_models_launcher_json_group_item_finalize;
}

static void
proton_plus_models_launcher_json_group_item_instance_init (ProtonPlusModelsLauncherJsonGroupItem * self,
                                                           gpointer klass)
{
	self->ref_count = 1;
}

static void
proton_plus_models_launcher_json_group_item_finalize (ProtonPlusModelsLauncherJsonGroupItem * obj)
{
	ProtonPlusModelsLauncherJsonGroupItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_GROUP_ITEM, ProtonPlusModelsLauncherJsonGroupItem);
	g_signal_handlers_destroy (self);
	_g_free0 (self->title);
	_g_free0 (self->description);
	_json_array_unref0 (self->runners);
}

static GType
proton_plus_models_launcher_json_group_item_get_type_once (void)
{
	static const GTypeValueTable g_define_type_value_table = { proton_plus_models_launcher_value_json_group_item_init, proton_plus_models_launcher_value_json_group_item_free_value, proton_plus_models_launcher_value_json_group_item_copy_value, proton_plus_models_launcher_value_json_group_item_peek_pointer, "p", proton_plus_models_launcher_value_json_group_item_collect_value, "p", proton_plus_models_launcher_value_json_group_item_lcopy_value };
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsLauncherJsonGroupItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_launcher_json_group_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsLauncherJsonGroupItem), 0, (GInstanceInitFunc) proton_plus_models_launcher_json_group_item_instance_init, &g_define_type_value_table };
	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
	GType proton_plus_models_launcher_json_group_item_type_id;
	proton_plus_models_launcher_json_group_item_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ProtonPlusModelsLauncherJsonGroupItem", &g_define_type_info, &g_define_type_fundamental_info, 0);
	return proton_plus_models_launcher_json_group_item_type_id;
}

static GType
proton_plus_models_launcher_json_group_item_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_json_group_item_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_json_group_item_type_id__once)) {
		GType proton_plus_models_launcher_json_group_item_type_id;
		proton_plus_models_launcher_json_group_item_type_id = proton_plus_models_launcher_json_group_item_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_json_group_item_type_id__once, proton_plus_models_launcher_json_group_item_type_id);
	}
	return proton_plus_models_launcher_json_group_item_type_id__once;
}

static gpointer
proton_plus_models_launcher_json_group_item_ref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonGroupItem * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}

static void
proton_plus_models_launcher_json_group_item_unref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonGroupItem * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		PROTON_PLUS_MODELS_LAUNCHER_JSON_GROUP_ITEM_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}

static ProtonPlusModelsLauncherJsonLauncherGroupItem*
proton_plus_models_launcher_json_launcher_group_item_construct (GType object_type)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem* self = NULL;
	self = (ProtonPlusModelsLauncherJsonLauncherGroupItem*) g_type_create_instance (object_type);
	return self;
}

static ProtonPlusModelsLauncherJsonLauncherGroupItem*
proton_plus_models_launcher_json_launcher_group_item_new (void)
{
	return proton_plus_models_launcher_json_launcher_group_item_construct (PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM);
}

static void
proton_plus_models_launcher_value_json_launcher_group_item_init (GValue* value)
{
	value->data[0].v_pointer = NULL;
}

static void
proton_plus_models_launcher_value_json_launcher_group_item_free_value (GValue* value)
{
	if (value->data[0].v_pointer) {
		proton_plus_models_launcher_json_launcher_group_item_unref (value->data[0].v_pointer);
	}
}

static void
proton_plus_models_launcher_value_json_launcher_group_item_copy_value (const GValue* src_value,
                                                                       GValue* dest_value)
{
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = proton_plus_models_launcher_json_launcher_group_item_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}

static gpointer
proton_plus_models_launcher_value_json_launcher_group_item_peek_pointer (const GValue* value)
{
	return value->data[0].v_pointer;
}

static gchar*
proton_plus_models_launcher_value_json_launcher_group_item_collect_value (GValue* value,
                                                                          guint n_collect_values,
                                                                          GTypeCValue* collect_values,
                                                                          guint collect_flags)
{
	if (collect_values[0].v_pointer) {
		ProtonPlusModelsLauncherJsonLauncherGroupItem * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = proton_plus_models_launcher_json_launcher_group_item_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}

static gchar*
proton_plus_models_launcher_value_json_launcher_group_item_lcopy_value (const GValue* value,
                                                                        guint n_collect_values,
                                                                        GTypeCValue* collect_values,
                                                                        guint collect_flags)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = proton_plus_models_launcher_json_launcher_group_item_ref (value->data[0].v_pointer);
	}
	return NULL;
}

static GParamSpec*
proton_plus_models_launcher_param_spec_json_launcher_group_item (const gchar* name,
                                                                 const gchar* nick,
                                                                 const gchar* blurb,
                                                                 GType object_type,
                                                                 GParamFlags flags)
{
	ProtonPlusModelsLauncherParamSpecJsonLauncherGroupItem* spec;
	g_return_val_if_fail (g_type_is_a (object_type, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}

static gpointer
proton_plus_models_launcher_value_get_json_launcher_group_item (const GValue* value)
{
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM), NULL);
	return value->data[0].v_pointer;
}

static void
proton_plus_models_launcher_value_set_json_launcher_group_item (GValue* value,
                                                                gpointer v_object)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		proton_plus_models_launcher_json_launcher_group_item_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_launcher_group_item_unref (old);
	}
}

static void
proton_plus_models_launcher_value_take_json_launcher_group_item (GValue* value,
                                                                 gpointer v_object)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_launcher_group_item_unref (old);
	}
}

static void
proton_plus_models_launcher_json_launcher_group_item_class_init (ProtonPlusModelsLauncherJsonLauncherGroupItemClass * klass,
                                                                 gpointer klass_data)
{
	proton_plus_models_launcher_json_launcher_group_item_parent_class = g_type_class_peek_parent (klass);
	((ProtonPlusModelsLauncherJsonLauncherGroupItemClass *) klass)->finalize = proton_plus_models_launcher_json_launcher_group_item_finalize;
}

static void
proton_plus_models_launcher_json_launcher_group_item_instance_init (ProtonPlusModelsLauncherJsonLauncherGroupItem * self,
                                                                    gpointer klass)
{
	self->ref_count = 1;
}

static void
proton_plus_models_launcher_json_launcher_group_item_finalize (ProtonPlusModelsLauncherJsonLauncherGroupItem * obj)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_GROUP_ITEM, ProtonPlusModelsLauncherJsonLauncherGroupItem);
	g_signal_handlers_destroy (self);
	_g_free0 (self->title);
	_g_free0 (self->directory);
}

static GType
proton_plus_models_launcher_json_launcher_group_item_get_type_once (void)
{
	static const GTypeValueTable g_define_type_value_table = { proton_plus_models_launcher_value_json_launcher_group_item_init, proton_plus_models_launcher_value_json_launcher_group_item_free_value, proton_plus_models_launcher_value_json_launcher_group_item_copy_value, proton_plus_models_launcher_value_json_launcher_group_item_peek_pointer, "p", proton_plus_models_launcher_value_json_launcher_group_item_collect_value, "p", proton_plus_models_launcher_value_json_launcher_group_item_lcopy_value };
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsLauncherJsonLauncherGroupItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_launcher_json_launcher_group_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsLauncherJsonLauncherGroupItem), 0, (GInstanceInitFunc) proton_plus_models_launcher_json_launcher_group_item_instance_init, &g_define_type_value_table };
	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
	GType proton_plus_models_launcher_json_launcher_group_item_type_id;
	proton_plus_models_launcher_json_launcher_group_item_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ProtonPlusModelsLauncherJsonLauncherGroupItem", &g_define_type_info, &g_define_type_fundamental_info, 0);
	return proton_plus_models_launcher_json_launcher_group_item_type_id;
}

static GType
proton_plus_models_launcher_json_launcher_group_item_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_json_launcher_group_item_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_json_launcher_group_item_type_id__once)) {
		GType proton_plus_models_launcher_json_launcher_group_item_type_id;
		proton_plus_models_launcher_json_launcher_group_item_type_id = proton_plus_models_launcher_json_launcher_group_item_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_json_launcher_group_item_type_id__once, proton_plus_models_launcher_json_launcher_group_item_type_id);
	}
	return proton_plus_models_launcher_json_launcher_group_item_type_id__once;
}

static gpointer
proton_plus_models_launcher_json_launcher_group_item_ref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}

static void
proton_plus_models_launcher_json_launcher_group_item_unref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonLauncherGroupItem * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_GROUP_ITEM_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}

static ProtonPlusModelsLauncherJsonLauncherItem*
proton_plus_models_launcher_json_launcher_item_construct (GType object_type)
{
	ProtonPlusModelsLauncherJsonLauncherItem* self = NULL;
	self = (ProtonPlusModelsLauncherJsonLauncherItem*) g_type_create_instance (object_type);
	return self;
}

static ProtonPlusModelsLauncherJsonLauncherItem*
proton_plus_models_launcher_json_launcher_item_new (void)
{
	return proton_plus_models_launcher_json_launcher_item_construct (PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM);
}

static void
proton_plus_models_launcher_value_json_launcher_item_init (GValue* value)
{
	value->data[0].v_pointer = NULL;
}

static void
proton_plus_models_launcher_value_json_launcher_item_free_value (GValue* value)
{
	if (value->data[0].v_pointer) {
		proton_plus_models_launcher_json_launcher_item_unref (value->data[0].v_pointer);
	}
}

static void
proton_plus_models_launcher_value_json_launcher_item_copy_value (const GValue* src_value,
                                                                 GValue* dest_value)
{
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = proton_plus_models_launcher_json_launcher_item_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}

static gpointer
proton_plus_models_launcher_value_json_launcher_item_peek_pointer (const GValue* value)
{
	return value->data[0].v_pointer;
}

static gchar*
proton_plus_models_launcher_value_json_launcher_item_collect_value (GValue* value,
                                                                    guint n_collect_values,
                                                                    GTypeCValue* collect_values,
                                                                    guint collect_flags)
{
	if (collect_values[0].v_pointer) {
		ProtonPlusModelsLauncherJsonLauncherItem * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = proton_plus_models_launcher_json_launcher_item_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}

static gchar*
proton_plus_models_launcher_value_json_launcher_item_lcopy_value (const GValue* value,
                                                                  guint n_collect_values,
                                                                  GTypeCValue* collect_values,
                                                                  guint collect_flags)
{
	ProtonPlusModelsLauncherJsonLauncherItem ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = proton_plus_models_launcher_json_launcher_item_ref (value->data[0].v_pointer);
	}
	return NULL;
}

static GParamSpec*
proton_plus_models_launcher_param_spec_json_launcher_item (const gchar* name,
                                                           const gchar* nick,
                                                           const gchar* blurb,
                                                           GType object_type,
                                                           GParamFlags flags)
{
	ProtonPlusModelsLauncherParamSpecJsonLauncherItem* spec;
	g_return_val_if_fail (g_type_is_a (object_type, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}

static gpointer
proton_plus_models_launcher_value_get_json_launcher_item (const GValue* value)
{
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM), NULL);
	return value->data[0].v_pointer;
}

static void
proton_plus_models_launcher_value_set_json_launcher_item (GValue* value,
                                                          gpointer v_object)
{
	ProtonPlusModelsLauncherJsonLauncherItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		proton_plus_models_launcher_json_launcher_item_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_launcher_item_unref (old);
	}
}

static void
proton_plus_models_launcher_value_take_json_launcher_item (GValue* value,
                                                           gpointer v_object)
{
	ProtonPlusModelsLauncherJsonLauncherItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_launcher_item_unref (old);
	}
}

static void
proton_plus_models_launcher_json_launcher_item_class_init (ProtonPlusModelsLauncherJsonLauncherItemClass * klass,
                                                           gpointer klass_data)
{
	proton_plus_models_launcher_json_launcher_item_parent_class = g_type_class_peek_parent (klass);
	((ProtonPlusModelsLauncherJsonLauncherItemClass *) klass)->finalize = proton_plus_models_launcher_json_launcher_item_finalize;
}

static void
proton_plus_models_launcher_json_launcher_item_instance_init (ProtonPlusModelsLauncherJsonLauncherItem * self,
                                                              gpointer klass)
{
	self->ref_count = 1;
}

static void
proton_plus_models_launcher_json_launcher_item_finalize (ProtonPlusModelsLauncherJsonLauncherItem * obj)
{
	ProtonPlusModelsLauncherJsonLauncherItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_LAUNCHER_ITEM, ProtonPlusModelsLauncherJsonLauncherItem);
	g_signal_handlers_destroy (self);
	_g_free0 (self->title);
	self->groups = (_vala_array_free (self->groups, self->groups_length1, (GDestroyNotify) proton_plus_models_launcher_json_launcher_group_item_unref), NULL);
}

static GType
proton_plus_models_launcher_json_launcher_item_get_type_once (void)
{
	static const GTypeValueTable g_define_type_value_table = { proton_plus_models_launcher_value_json_launcher_item_init, proton_plus_models_launcher_value_json_launcher_item_free_value, proton_plus_models_launcher_value_json_launcher_item_copy_value, proton_plus_models_launcher_value_json_launcher_item_peek_pointer, "p", proton_plus_models_launcher_value_json_launcher_item_collect_value, "p", proton_plus_models_launcher_value_json_launcher_item_lcopy_value };
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsLauncherJsonLauncherItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_launcher_json_launcher_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsLauncherJsonLauncherItem), 0, (GInstanceInitFunc) proton_plus_models_launcher_json_launcher_item_instance_init, &g_define_type_value_table };
	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
	GType proton_plus_models_launcher_json_launcher_item_type_id;
	proton_plus_models_launcher_json_launcher_item_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ProtonPlusModelsLauncherJsonLauncherItem", &g_define_type_info, &g_define_type_fundamental_info, 0);
	return proton_plus_models_launcher_json_launcher_item_type_id;
}

static GType
proton_plus_models_launcher_json_launcher_item_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_json_launcher_item_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_json_launcher_item_type_id__once)) {
		GType proton_plus_models_launcher_json_launcher_item_type_id;
		proton_plus_models_launcher_json_launcher_item_type_id = proton_plus_models_launcher_json_launcher_item_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_json_launcher_item_type_id__once, proton_plus_models_launcher_json_launcher_item_type_id);
	}
	return proton_plus_models_launcher_json_launcher_item_type_id__once;
}

static gpointer
proton_plus_models_launcher_json_launcher_item_ref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonLauncherItem * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}

static void
proton_plus_models_launcher_json_launcher_item_unref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonLauncherItem * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		PROTON_PLUS_MODELS_LAUNCHER_JSON_LAUNCHER_ITEM_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}

static ProtonPlusModelsLauncherJsonRunnerItem*
proton_plus_models_launcher_json_runner_item_construct (GType object_type)
{
	ProtonPlusModelsLauncherJsonRunnerItem* self = NULL;
	self = (ProtonPlusModelsLauncherJsonRunnerItem*) g_type_create_instance (object_type);
	return self;
}

static ProtonPlusModelsLauncherJsonRunnerItem*
proton_plus_models_launcher_json_runner_item_new (void)
{
	return proton_plus_models_launcher_json_runner_item_construct (PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM);
}

static void
proton_plus_models_launcher_value_json_runner_item_init (GValue* value)
{
	value->data[0].v_pointer = NULL;
}

static void
proton_plus_models_launcher_value_json_runner_item_free_value (GValue* value)
{
	if (value->data[0].v_pointer) {
		proton_plus_models_launcher_json_runner_item_unref (value->data[0].v_pointer);
	}
}

static void
proton_plus_models_launcher_value_json_runner_item_copy_value (const GValue* src_value,
                                                               GValue* dest_value)
{
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = proton_plus_models_launcher_json_runner_item_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}

static gpointer
proton_plus_models_launcher_value_json_runner_item_peek_pointer (const GValue* value)
{
	return value->data[0].v_pointer;
}

static gchar*
proton_plus_models_launcher_value_json_runner_item_collect_value (GValue* value,
                                                                  guint n_collect_values,
                                                                  GTypeCValue* collect_values,
                                                                  guint collect_flags)
{
	if (collect_values[0].v_pointer) {
		ProtonPlusModelsLauncherJsonRunnerItem * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = proton_plus_models_launcher_json_runner_item_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}

static gchar*
proton_plus_models_launcher_value_json_runner_item_lcopy_value (const GValue* value,
                                                                guint n_collect_values,
                                                                GTypeCValue* collect_values,
                                                                guint collect_flags)
{
	ProtonPlusModelsLauncherJsonRunnerItem ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = proton_plus_models_launcher_json_runner_item_ref (value->data[0].v_pointer);
	}
	return NULL;
}

static GParamSpec*
proton_plus_models_launcher_param_spec_json_runner_item (const gchar* name,
                                                         const gchar* nick,
                                                         const gchar* blurb,
                                                         GType object_type,
                                                         GParamFlags flags)
{
	ProtonPlusModelsLauncherParamSpecJsonRunnerItem* spec;
	g_return_val_if_fail (g_type_is_a (object_type, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}

static gpointer
proton_plus_models_launcher_value_get_json_runner_item (const GValue* value)
{
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM), NULL);
	return value->data[0].v_pointer;
}

static void
proton_plus_models_launcher_value_set_json_runner_item (GValue* value,
                                                        gpointer v_object)
{
	ProtonPlusModelsLauncherJsonRunnerItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		proton_plus_models_launcher_json_runner_item_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_runner_item_unref (old);
	}
}

static void
proton_plus_models_launcher_value_take_json_runner_item (GValue* value,
                                                         gpointer v_object)
{
	ProtonPlusModelsLauncherJsonRunnerItem * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		proton_plus_models_launcher_json_runner_item_unref (old);
	}
}

static void
proton_plus_models_launcher_json_runner_item_class_init (ProtonPlusModelsLauncherJsonRunnerItemClass * klass,
                                                         gpointer klass_data)
{
	proton_plus_models_launcher_json_runner_item_parent_class = g_type_class_peek_parent (klass);
	((ProtonPlusModelsLauncherJsonRunnerItemClass *) klass)->finalize = proton_plus_models_launcher_json_runner_item_finalize;
}

static void
proton_plus_models_launcher_json_runner_item_instance_init (ProtonPlusModelsLauncherJsonRunnerItem * self,
                                                            gpointer klass)
{
	self->ref_count = 1;
}

static void
proton_plus_models_launcher_json_runner_item_finalize (ProtonPlusModelsLauncherJsonRunnerItem * obj)
{
	ProtonPlusModelsLauncherJsonRunnerItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_LAUNCHER_TYPE_JSON_RUNNER_ITEM, ProtonPlusModelsLauncherJsonRunnerItem);
	g_signal_handlers_destroy (self);
	_g_free0 (self->title);
	_g_free0 (self->description);
	_g_free0 (self->endpoint);
	_g_free0 (self->asset_position_time_condition);
	_json_array_unref0 (self->directory_name_formats);
	_g_free0 (self->type);
	_g_free0 (self->url_template);
	self->request_asset_exclude = (_vala_array_free (self->request_asset_exclude, self->request_asset_exclude_length1, (GDestroyNotify) g_free), NULL);
	self->request_asset_filter = (_vala_array_free (self->request_asset_filter, self->request_asset_filter_length1, (GDestroyNotify) g_free), NULL);
}

static GType
proton_plus_models_launcher_json_runner_item_get_type_once (void)
{
	static const GTypeValueTable g_define_type_value_table = { proton_plus_models_launcher_value_json_runner_item_init, proton_plus_models_launcher_value_json_runner_item_free_value, proton_plus_models_launcher_value_json_runner_item_copy_value, proton_plus_models_launcher_value_json_runner_item_peek_pointer, "p", proton_plus_models_launcher_value_json_runner_item_collect_value, "p", proton_plus_models_launcher_value_json_runner_item_lcopy_value };
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsLauncherJsonRunnerItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_launcher_json_runner_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsLauncherJsonRunnerItem), 0, (GInstanceInitFunc) proton_plus_models_launcher_json_runner_item_instance_init, &g_define_type_value_table };
	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
	GType proton_plus_models_launcher_json_runner_item_type_id;
	proton_plus_models_launcher_json_runner_item_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ProtonPlusModelsLauncherJsonRunnerItem", &g_define_type_info, &g_define_type_fundamental_info, 0);
	return proton_plus_models_launcher_json_runner_item_type_id;
}

static GType
proton_plus_models_launcher_json_runner_item_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_json_runner_item_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_json_runner_item_type_id__once)) {
		GType proton_plus_models_launcher_json_runner_item_type_id;
		proton_plus_models_launcher_json_runner_item_type_id = proton_plus_models_launcher_json_runner_item_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_json_runner_item_type_id__once, proton_plus_models_launcher_json_runner_item_type_id);
	}
	return proton_plus_models_launcher_json_runner_item_type_id__once;
}

static gpointer
proton_plus_models_launcher_json_runner_item_ref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonRunnerItem * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}

static void
proton_plus_models_launcher_json_runner_item_unref (gpointer instance)
{
	ProtonPlusModelsLauncherJsonRunnerItem * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		PROTON_PLUS_MODELS_LAUNCHER_JSON_RUNNER_ITEM_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}

static void
proton_plus_models_launcher_class_init (ProtonPlusModelsLauncherClass * klass,
                                        gpointer klass_data)
{
	proton_plus_models_launcher_parent_class = g_type_class_peek_parent (klass);
	((ProtonPlusModelsLauncherClass *) klass)->load_game_library = (void (*) (ProtonPlusModelsLauncher*, GAsyncReadyCallback, gpointer)) proton_plus_models_launcher_real_load_game_library;
	((ProtonPlusModelsLauncherClass *) klass)->load_game_library_finish = (gboolean (*) (ProtonPlusModelsLauncher*, GAsyncResult*)) proton_plus_models_launcher_real_load_game_library_finish;
	((ProtonPlusModelsLauncherClass *) klass)->get_compatibility_tool_usage_count = (gint (*) (ProtonPlusModelsLauncher*, const gchar*)) proton_plus_models_launcher_real_get_compatibility_tool_usage_count;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_models_launcher_finalize;
}

static void
proton_plus_models_launcher_instance_init (ProtonPlusModelsLauncher * self,
                                           gpointer klass)
{
}

static void
proton_plus_models_launcher_finalize (GObject * obj)
{
	ProtonPlusModelsLauncher * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncher);
	_g_free0 (self->title);
	_g_free0 (self->icon_path);
	_g_free0 (self->directory);
	(self->games == NULL) ? NULL : (self->games = (_g_list_free__g_object_unref0_ (self->games), NULL));
	_g_object_unref0 (self->compatibility_tools);
	self->groups = (_vala_array_free (self->groups, self->groups_length1, (GDestroyNotify) g_object_unref), NULL);
	G_OBJECT_CLASS (proton_plus_models_launcher_parent_class)->finalize (obj);
}

static GType
proton_plus_models_launcher_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsLauncherClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_launcher_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsLauncher), 0, (GInstanceInitFunc) proton_plus_models_launcher_instance_init, NULL };
	GType proton_plus_models_launcher_type_id;
	proton_plus_models_launcher_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusModelsLauncher", &g_define_type_info, 0);
	return proton_plus_models_launcher_type_id;
}

GType
proton_plus_models_launcher_get_type (void)
{
	static volatile gsize proton_plus_models_launcher_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_launcher_type_id__once)) {
		GType proton_plus_models_launcher_type_id;
		proton_plus_models_launcher_type_id = proton_plus_models_launcher_get_type_once ();
		g_once_init_leave (&proton_plus_models_launcher_type_id__once, proton_plus_models_launcher_type_id);
	}
	return proton_plus_models_launcher_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

