/* remote-login-service.c generated by valac 0.56.19, the Vala compiler
 * generated from remote-login-service.vala, do not modify */

/* -*- Mode: Vala; indent-tabs-mode: nil; tab-width: 4 -*-
 *
 * Copyright (C) 2012 Canonical Ltd
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gio/gio.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 TYPE_REMOTE_SERVER_FIELD (remote_server_field_get_type ())
typedef struct _RemoteServerField RemoteServerField;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))

#define TYPE_REMOTE_SERVER_APPLICATION (remote_server_application_get_type ())
typedef struct _RemoteServerApplication RemoteServerApplication;

#define TYPE_REMOTE_SERVER (remote_server_get_type ())
typedef struct _RemoteServer RemoteServer;

#define TYPE_REMOTE_LOGIN_SERVICE (remote_login_service_get_type ())
#define REMOTE_LOGIN_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REMOTE_LOGIN_SERVICE, RemoteLoginService))
#define IS_REMOTE_LOGIN_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REMOTE_LOGIN_SERVICE))
#define REMOTE_LOGIN_SERVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_REMOTE_LOGIN_SERVICE, RemoteLoginServiceIface))

typedef struct _RemoteLoginService RemoteLoginService;
typedef struct _RemoteLoginServiceIface RemoteLoginServiceIface;

#define TYPE_REMOTE_LOGIN_SERVICE_PROXY (remote_login_service_proxy_get_type ())
enum  {
	REMOTE_LOGIN_SERVICE_SERVERS_UPDATED_SIGNAL,
	REMOTE_LOGIN_SERVICE_LOGIN_SERVERS_UPDATED_SIGNAL,
	REMOTE_LOGIN_SERVICE_LOGIN_CHANGED_SIGNAL,
	REMOTE_LOGIN_SERVICE_NUM_SIGNALS
};
static guint remote_login_service_signals[REMOTE_LOGIN_SERVICE_NUM_SIGNALS] = {0};
typedef GDBusProxy RemoteLoginServiceProxy;
typedef GDBusProxyClass RemoteLoginServiceProxyClass;
typedef struct _RemoteLoginServiceGetServersReadyData RemoteLoginServiceGetServersReadyData;
typedef struct _RemoteLoginServiceGetServersForLoginReadyData RemoteLoginServiceGetServersForLoginReadyData;
typedef struct _RemoteLoginServiceGetCachedDomainsForServerReadyData RemoteLoginServiceGetCachedDomainsForServerReadyData;
typedef struct _RemoteLoginServiceSetLastUsedServerReadyData RemoteLoginServiceSetLastUsedServerReadyData;

struct _RemoteServerField {
	gchar* type;
	gboolean required;
	GVariant* default_value;
	GHashTable* properties;
};

struct _RemoteServerApplication {
	gchar* application_id;
	gint pin_position;
};

struct _RemoteServer {
	gchar* type;
	gchar* name;
	gchar* url;
	gboolean last_used_server;
	RemoteServerField* fields;
	gint fields_length1;
	RemoteServerApplication* applications;
	gint applications_length1;
};

struct _RemoteLoginServiceIface {
	GTypeInterface parent_iface;
	void (*get_servers) (RemoteLoginService* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*get_servers_finish) (RemoteLoginService* self, GAsyncResult* _res_, RemoteServer** serverList, gint* serverList_length1, GError** error);
	void (*get_servers_for_login) (RemoteLoginService* self, const gchar* url, const gchar* emailAddress, const gchar* password, gboolean allowCache, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*get_servers_for_login_finish) (RemoteLoginService* self, GAsyncResult* _res_, gboolean* loginSuccess, gchar** dataType, RemoteServer** serverList, gint* serverList_length1, GError** error);
	void (*get_cached_domains_for_server) (RemoteLoginService* self, const gchar* url, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*get_cached_domains_for_server_finish) (RemoteLoginService* self, GAsyncResult* _res_, gchar*** domains, gint* domains_length1, GError** error);
	void (*set_last_used_server) (RemoteLoginService* self, const gchar* uccsUrl, const gchar* serverUrl, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*set_last_used_server_finish) (RemoteLoginService* self, GAsyncResult* _res_, GError** error);
};

struct _RemoteLoginServiceGetServersReadyData {
	GDBusMethodInvocation* _invocation_;
};

struct _RemoteLoginServiceGetServersForLoginReadyData {
	GDBusMethodInvocation* _invocation_;
	gchar* url;
	gchar* emailAddress;
	gchar* password;
	gboolean allowCache;
};

struct _RemoteLoginServiceGetCachedDomainsForServerReadyData {
	GDBusMethodInvocation* _invocation_;
	gchar* url;
};

struct _RemoteLoginServiceSetLastUsedServerReadyData {
	GDBusMethodInvocation* _invocation_;
	gchar* uccsUrl;
	gchar* serverUrl;
};

VALA_EXTERN GType remote_server_field_get_type (void) G_GNUC_CONST ;
VALA_EXTERN RemoteServerField* remote_server_field_dup (const RemoteServerField* self);
VALA_EXTERN void remote_server_field_free (RemoteServerField* self);
VALA_EXTERN void remote_server_field_copy (const RemoteServerField* self,
                               RemoteServerField* dest);
VALA_EXTERN void remote_server_field_destroy (RemoteServerField* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (RemoteServerField, remote_server_field_destroy)
VALA_EXTERN GType remote_server_application_get_type (void) G_GNUC_CONST ;
VALA_EXTERN RemoteServerApplication* remote_server_application_dup (const RemoteServerApplication* self);
VALA_EXTERN void remote_server_application_free (RemoteServerApplication* self);
VALA_EXTERN void remote_server_application_copy (const RemoteServerApplication* self,
                                     RemoteServerApplication* dest);
VALA_EXTERN void remote_server_application_destroy (RemoteServerApplication* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (RemoteServerApplication, remote_server_application_destroy)
VALA_EXTERN GType remote_server_get_type (void) G_GNUC_CONST ;
VALA_EXTERN RemoteServer* remote_server_dup (const RemoteServer* self);
VALA_EXTERN void remote_server_free (RemoteServer* self);
VALA_EXTERN void remote_server_copy (const RemoteServer* self,
                         RemoteServer* dest);
VALA_EXTERN void remote_server_destroy (RemoteServer* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (RemoteServer, remote_server_destroy)
static void _vala_RemoteServerField_array_free (RemoteServerField * array,
                                         gssize array_length);
static void _vala_RemoteServerApplication_array_free (RemoteServerApplication * array,
                                               gssize array_length);
static RemoteServerField* _vala_array_dup4 (RemoteServerField* self,
                                     gssize length);
static RemoteServerApplication* _vala_array_dup5 (RemoteServerApplication* self,
                                           gssize length);
VALA_EXTERN GType remote_login_service_proxy_get_type (void) G_GNUC_CONST ;
VALA_EXTERN guint remote_login_service_register_object (void* object,
                                            GDBusConnection* connection,
                                            const gchar* path,
                                            GError** error);
VALA_EXTERN GType remote_login_service_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RemoteLoginService, g_object_unref)
VALA_EXTERN void remote_login_service_get_servers (RemoteLoginService* self,
                                       GAsyncReadyCallback _callback_,
                                       gpointer _user_data_);
VALA_EXTERN void remote_login_service_get_servers_finish (RemoteLoginService* self,
                                              GAsyncResult* _res_,
                                              RemoteServer** serverList,
                                              gint* serverList_length1,
                                              GError** error);
VALA_EXTERN void remote_login_service_get_servers_for_login (RemoteLoginService* self,
                                                 const gchar* url,
                                                 const gchar* emailAddress,
                                                 const gchar* password,
                                                 gboolean allowCache,
                                                 GAsyncReadyCallback _callback_,
                                                 gpointer _user_data_);
VALA_EXTERN void remote_login_service_get_servers_for_login_finish (RemoteLoginService* self,
                                                        GAsyncResult* _res_,
                                                        gboolean* loginSuccess,
                                                        gchar** dataType,
                                                        RemoteServer** serverList,
                                                        gint* serverList_length1,
                                                        GError** error);
VALA_EXTERN void remote_login_service_get_cached_domains_for_server (RemoteLoginService* self,
                                                         const gchar* url,
                                                         GAsyncReadyCallback _callback_,
                                                         gpointer _user_data_);
VALA_EXTERN void remote_login_service_get_cached_domains_for_server_finish (RemoteLoginService* self,
                                                                GAsyncResult* _res_,
                                                                gchar*** domains,
                                                                gint* domains_length1,
                                                                GError** error);
VALA_EXTERN void remote_login_service_set_last_used_server (RemoteLoginService* self,
                                                const gchar* uccsUrl,
                                                const gchar* serverUrl,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_);
VALA_EXTERN void remote_login_service_set_last_used_server_finish (RemoteLoginService* self,
                                                       GAsyncResult* _res_,
                                                       GError** error);
static void g_cclosure_user_marshal_VOID__POINTER_INT (GClosure * closure,
                                                GValue * return_value,
                                                guint n_param_values,
                                                const GValue * param_values,
                                                gpointer invocation_hint,
                                                gpointer marshal_data);
static void g_cclosure_user_marshal_VOID__STRING_STRING_STRING_POINTER_INT (GClosure * closure,
                                                                     GValue * return_value,
                                                                     guint n_param_values,
                                                                     const GValue * param_values,
                                                                     gpointer invocation_hint,
                                                                     gpointer marshal_data);
static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure,
                                                  GValue * return_value,
                                                  guint n_param_values,
                                                  const GValue * param_values,
                                                  gpointer invocation_hint,
                                                  gpointer marshal_data);
static GType remote_login_service_get_type_once (void);
static void remote_login_service_proxy_g_signal (GDBusProxy* proxy,
                                          const gchar* sender_name,
                                          const gchar* signal_name,
                                          GVariant* parameters);
static void _vala_RemoteServer_array_free (RemoteServer * array,
                                    gssize array_length);
static void _dbus_handle_remote_login_service_servers_updated (RemoteLoginService* self,
                                                        GVariant* parameters);
static void _dbus_handle_remote_login_service_login_servers_updated (RemoteLoginService* self,
                                                              GVariant* parameters);
static void _dbus_handle_remote_login_service_login_changed (RemoteLoginService* self,
                                                      GVariant* parameters);
static void _vala_g_async_ready_callback (GObject *source_object,
                                   GAsyncResult *res,
                                   void *user_data);
static void remote_login_service_proxy_get_servers_async (RemoteLoginService* self,
                                                   GAsyncReadyCallback _callback_,
                                                   gpointer _user_data_);
static void remote_login_service_proxy_get_servers_finish (RemoteLoginService* self,
                                                    GAsyncResult* _res_,
                                                    RemoteServer** serverList,
                                                    gint* serverList_length1,
                                                    GError** error);
static void remote_login_service_proxy_get_servers_for_login_async (RemoteLoginService* self,
                                                             const gchar* url,
                                                             const gchar* emailAddress,
                                                             const gchar* password,
                                                             gboolean allowCache,
                                                             GAsyncReadyCallback _callback_,
                                                             gpointer _user_data_);
static void remote_login_service_proxy_get_servers_for_login_finish (RemoteLoginService* self,
                                                              GAsyncResult* _res_,
                                                              gboolean* loginSuccess,
                                                              gchar** dataType,
                                                              RemoteServer** serverList,
                                                              gint* serverList_length1,
                                                              GError** error);
static void remote_login_service_proxy_get_cached_domains_for_server_async (RemoteLoginService* self,
                                                                     const gchar* url,
                                                                     GAsyncReadyCallback _callback_,
                                                                     gpointer _user_data_);
static void remote_login_service_proxy_get_cached_domains_for_server_finish (RemoteLoginService* self,
                                                                      GAsyncResult* _res_,
                                                                      gchar*** domains,
                                                                      gint* domains_length1,
                                                                      GError** error);
static void remote_login_service_proxy_set_last_used_server_async (RemoteLoginService* self,
                                                            const gchar* uccsUrl,
                                                            const gchar* serverUrl,
                                                            GAsyncReadyCallback _callback_,
                                                            gpointer _user_data_);
static void remote_login_service_proxy_set_last_used_server_finish (RemoteLoginService* self,
                                                             GAsyncResult* _res_,
                                                             GError** error);
static void remote_login_service_proxy_remote_login_service_interface_init (RemoteLoginServiceIface* iface);
static void _dbus_remote_login_service_get_servers (RemoteLoginService* self,
                                             GVariant* _parameters_,
                                             GDBusMethodInvocation* invocation);
static void _dbus_remote_login_service_get_servers_ready (GObject * source_object,
                                                   GAsyncResult * _res_,
                                                   gpointer _user_data_);
static void _dbus_remote_login_service_get_servers_for_login (RemoteLoginService* self,
                                                       GVariant* _parameters_,
                                                       GDBusMethodInvocation* invocation);
static void _dbus_remote_login_service_get_servers_for_login_ready (GObject * source_object,
                                                             GAsyncResult * _res_,
                                                             gpointer _user_data_);
static void _dbus_remote_login_service_get_cached_domains_for_server (RemoteLoginService* self,
                                                               GVariant* _parameters_,
                                                               GDBusMethodInvocation* invocation);
static void _dbus_remote_login_service_get_cached_domains_for_server_ready (GObject * source_object,
                                                                     GAsyncResult * _res_,
                                                                     gpointer _user_data_);
static void _dbus_remote_login_service_set_last_used_server (RemoteLoginService* self,
                                                      GVariant* _parameters_,
                                                      GDBusMethodInvocation* invocation);
static void _dbus_remote_login_service_set_last_used_server_ready (GObject * source_object,
                                                            GAsyncResult * _res_,
                                                            gpointer _user_data_);
static void remote_login_service_dbus_interface_method_call (GDBusConnection* connection,
                                                      const gchar* sender,
                                                      const gchar* object_path,
                                                      const gchar* interface_name,
                                                      const gchar* method_name,
                                                      GVariant* parameters,
                                                      GDBusMethodInvocation* invocation,
                                                      gpointer user_data);
static GVariant* remote_login_service_dbus_interface_get_property (GDBusConnection* connection,
                                                            const gchar* sender,
                                                            const gchar* object_path,
                                                            const gchar* interface_name,
                                                            const gchar* property_name,
                                                            GError** error,
                                                            gpointer user_data);
static gboolean remote_login_service_dbus_interface_set_property (GDBusConnection* connection,
                                                           const gchar* sender,
                                                           const gchar* object_path,
                                                           const gchar* interface_name,
                                                           const gchar* property_name,
                                                           GVariant* value,
                                                           GError** error,
                                                           gpointer user_data);
static void _dbus_remote_login_service_servers_updated (GObject* _sender,
                                                 RemoteServer* serverList,
                                                 gint serverList_length1,
                                                 gpointer* _data);
static void _dbus_remote_login_service_login_servers_updated (GObject* _sender,
                                                       const gchar* url,
                                                       const gchar* emailAddress,
                                                       const gchar* dataType,
                                                       RemoteServer* serverList,
                                                       gint serverList_length1,
                                                       gpointer* _data);
static void _dbus_remote_login_service_login_changed (GObject* _sender,
                                               const gchar* url,
                                               const gchar* emailAddress,
                                               gpointer* _data);
static void _remote_login_service_unregister_object (gpointer user_data);
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 inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_serverList = {-1, "serverList", "a(sssba(sbva{sv})a(si))", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_servers_in[] = {NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_servers_out[] = {&_remote_login_service_dbus_arg_info_get_servers_serverList, NULL};
static const GDBusMethodInfo _remote_login_service_dbus_method_info_get_servers = {-1, "GetServers", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_servers_in), (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_servers_out), NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_url = {-1, "url", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_emailAddress = {-1, "emailAddress", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_password = {-1, "password", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_allowCache = {-1, "allowCache", "b", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_loginSuccess = {-1, "loginSuccess", "b", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_dataType = {-1, "dataType", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_servers_for_login_serverList = {-1, "serverList", "a(sssba(sbva{sv})a(si))", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_servers_for_login_in[] = {&_remote_login_service_dbus_arg_info_get_servers_for_login_url, &_remote_login_service_dbus_arg_info_get_servers_for_login_emailAddress, &_remote_login_service_dbus_arg_info_get_servers_for_login_password, &_remote_login_service_dbus_arg_info_get_servers_for_login_allowCache, NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_servers_for_login_out[] = {&_remote_login_service_dbus_arg_info_get_servers_for_login_loginSuccess, &_remote_login_service_dbus_arg_info_get_servers_for_login_dataType, &_remote_login_service_dbus_arg_info_get_servers_for_login_serverList, NULL};
static const GDBusMethodInfo _remote_login_service_dbus_method_info_get_servers_for_login = {-1, "GetServersForLogin", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_servers_for_login_in), (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_servers_for_login_out), NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_cached_domains_for_server_url = {-1, "url", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_get_cached_domains_for_server_domains = {-1, "domains", "as", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_cached_domains_for_server_in[] = {&_remote_login_service_dbus_arg_info_get_cached_domains_for_server_url, NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_get_cached_domains_for_server_out[] = {&_remote_login_service_dbus_arg_info_get_cached_domains_for_server_domains, NULL};
static const GDBusMethodInfo _remote_login_service_dbus_method_info_get_cached_domains_for_server = {-1, "GetCachedDomainsForServer", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_cached_domains_for_server_in), (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_get_cached_domains_for_server_out), NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_set_last_used_server_uccsUrl = {-1, "uccsUrl", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_set_last_used_server_serverUrl = {-1, "serverUrl", "s", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_set_last_used_server_in[] = {&_remote_login_service_dbus_arg_info_set_last_used_server_uccsUrl, &_remote_login_service_dbus_arg_info_set_last_used_server_serverUrl, NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_set_last_used_server_out[] = {NULL};
static const GDBusMethodInfo _remote_login_service_dbus_method_info_set_last_used_server = {-1, "SetLastUsedServer", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_set_last_used_server_in), (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_set_last_used_server_out), NULL};
static const GDBusMethodInfo * const _remote_login_service_dbus_method_info[] = {&_remote_login_service_dbus_method_info_get_servers, &_remote_login_service_dbus_method_info_get_servers_for_login, &_remote_login_service_dbus_method_info_get_cached_domains_for_server, &_remote_login_service_dbus_method_info_set_last_used_server, NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_servers_updated_serverList = {-1, "serverList", "a(sssba(sbva{sv})a(si))", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_servers_updated[] = {&_remote_login_service_dbus_arg_info_servers_updated_serverList, NULL};
static const GDBusSignalInfo _remote_login_service_dbus_signal_info_servers_updated = {-1, "ServersUpdated", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_servers_updated), NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_servers_updated_url = {-1, "url", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_servers_updated_emailAddress = {-1, "emailAddress", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_servers_updated_dataType = {-1, "dataType", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_servers_updated_serverList = {-1, "serverList", "a(sssba(sbva{sv})a(si))", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_login_servers_updated[] = {&_remote_login_service_dbus_arg_info_login_servers_updated_url, &_remote_login_service_dbus_arg_info_login_servers_updated_emailAddress, &_remote_login_service_dbus_arg_info_login_servers_updated_dataType, &_remote_login_service_dbus_arg_info_login_servers_updated_serverList, NULL};
static const GDBusSignalInfo _remote_login_service_dbus_signal_info_login_servers_updated = {-1, "LoginServersUpdated", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_login_servers_updated), NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_changed_url = {-1, "url", "s", NULL};
static const GDBusArgInfo _remote_login_service_dbus_arg_info_login_changed_emailAddress = {-1, "emailAddress", "s", NULL};
static const GDBusArgInfo * const _remote_login_service_dbus_arg_info_login_changed[] = {&_remote_login_service_dbus_arg_info_login_changed_url, &_remote_login_service_dbus_arg_info_login_changed_emailAddress, NULL};
static const GDBusSignalInfo _remote_login_service_dbus_signal_info_login_changed = {-1, "LoginChanged", (GDBusArgInfo **) (&_remote_login_service_dbus_arg_info_login_changed), NULL};
static const GDBusSignalInfo * const _remote_login_service_dbus_signal_info[] = {&_remote_login_service_dbus_signal_info_servers_updated, &_remote_login_service_dbus_signal_info_login_servers_updated, &_remote_login_service_dbus_signal_info_login_changed, NULL};
static const GDBusPropertyInfo * const _remote_login_service_dbus_property_info[] = {NULL};
static const GDBusInterfaceInfo _remote_login_service_dbus_interface_info = {-1, "com.canonical.RemoteLogin", (GDBusMethodInfo **) (&_remote_login_service_dbus_method_info), (GDBusSignalInfo **) (&_remote_login_service_dbus_signal_info), (GDBusPropertyInfo **) (&_remote_login_service_dbus_property_info), NULL};
static const GDBusInterfaceVTable _remote_login_service_dbus_interface_vtable = {remote_login_service_dbus_interface_method_call, remote_login_service_dbus_interface_get_property, remote_login_service_dbus_interface_set_property};

static gpointer
_g_variant_ref0 (gpointer self)
{
#line 19 "../src/remote-login-service.vala"
	return self ? g_variant_ref (self) : NULL;
#line 409 "remote-login-service.c"
}

static gpointer
_g_hash_table_ref0 (gpointer self)
{
#line 19 "../src/remote-login-service.vala"
	return self ? g_hash_table_ref (self) : NULL;
#line 417 "remote-login-service.c"
}

void
remote_server_field_copy (const RemoteServerField* self,
                          RemoteServerField* dest)
{
	const gchar* _tmp0_;
	gchar* _tmp1_;
	GVariant* _tmp2_;
	GVariant* _tmp3_;
	GHashTable* _tmp4_;
	GHashTable* _tmp5_;
#line 19 "../src/remote-login-service.vala"
	_tmp0_ = (*self).type;
#line 19 "../src/remote-login-service.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 19 "../src/remote-login-service.vala"
	_g_free0 ((*dest).type);
#line 19 "../src/remote-login-service.vala"
	(*dest).type = _tmp1_;
#line 19 "../src/remote-login-service.vala"
	(*dest).required = (*self).required;
#line 19 "../src/remote-login-service.vala"
	_tmp2_ = (*self).default_value;
#line 19 "../src/remote-login-service.vala"
	_tmp3_ = _g_variant_ref0 (_tmp2_);
#line 19 "../src/remote-login-service.vala"
	_g_variant_unref0 ((*dest).default_value);
#line 19 "../src/remote-login-service.vala"
	(*dest).default_value = _tmp3_;
#line 19 "../src/remote-login-service.vala"
	_tmp4_ = (*self).properties;
#line 19 "../src/remote-login-service.vala"
	_tmp5_ = _g_hash_table_ref0 (_tmp4_);
#line 19 "../src/remote-login-service.vala"
	_g_hash_table_unref0 ((*dest).properties);
#line 19 "../src/remote-login-service.vala"
	(*dest).properties = _tmp5_;
#line 456 "remote-login-service.c"
}

void
remote_server_field_destroy (RemoteServerField* self)
{
#line 21 "../src/remote-login-service.vala"
	_g_free0 ((*self).type);
#line 23 "../src/remote-login-service.vala"
	_g_variant_unref0 ((*self).default_value);
#line 24 "../src/remote-login-service.vala"
	_g_hash_table_unref0 ((*self).properties);
#line 468 "remote-login-service.c"
}

RemoteServerField*
remote_server_field_dup (const RemoteServerField* self)
{
	RemoteServerField* dup;
#line 19 "../src/remote-login-service.vala"
	dup = g_new0 (RemoteServerField, 1);
#line 19 "../src/remote-login-service.vala"
	remote_server_field_copy (self, dup);
#line 19 "../src/remote-login-service.vala"
	return dup;
#line 481 "remote-login-service.c"
}

void
remote_server_field_free (RemoteServerField* self)
{
#line 19 "../src/remote-login-service.vala"
	remote_server_field_destroy (self);
#line 19 "../src/remote-login-service.vala"
	g_free (self);
#line 491 "remote-login-service.c"
}

static GType
remote_server_field_get_type_once (void)
{
	GType remote_server_field_type_id;
	remote_server_field_type_id = g_boxed_type_register_static ("RemoteServerField", (GBoxedCopyFunc) remote_server_field_dup, (GBoxedFreeFunc) remote_server_field_free);
	return remote_server_field_type_id;
}

GType
remote_server_field_get_type (void)
{
	static volatile gsize remote_server_field_type_id__once = 0;
	if (g_once_init_enter (&remote_server_field_type_id__once)) {
		GType remote_server_field_type_id;
		remote_server_field_type_id = remote_server_field_get_type_once ();
		g_once_init_leave (&remote_server_field_type_id__once, remote_server_field_type_id);
	}
	return remote_server_field_type_id__once;
}

void
remote_server_application_copy (const RemoteServerApplication* self,
                                RemoteServerApplication* dest)
{
	const gchar* _tmp0_;
	gchar* _tmp1_;
#line 27 "../src/remote-login-service.vala"
	_tmp0_ = (*self).application_id;
#line 27 "../src/remote-login-service.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 27 "../src/remote-login-service.vala"
	_g_free0 ((*dest).application_id);
#line 27 "../src/remote-login-service.vala"
	(*dest).application_id = _tmp1_;
#line 27 "../src/remote-login-service.vala"
	(*dest).pin_position = (*self).pin_position;
#line 530 "remote-login-service.c"
}

void
remote_server_application_destroy (RemoteServerApplication* self)
{
#line 29 "../src/remote-login-service.vala"
	_g_free0 ((*self).application_id);
#line 538 "remote-login-service.c"
}

RemoteServerApplication*
remote_server_application_dup (const RemoteServerApplication* self)
{
	RemoteServerApplication* dup;
#line 27 "../src/remote-login-service.vala"
	dup = g_new0 (RemoteServerApplication, 1);
#line 27 "../src/remote-login-service.vala"
	remote_server_application_copy (self, dup);
#line 27 "../src/remote-login-service.vala"
	return dup;
#line 551 "remote-login-service.c"
}

void
remote_server_application_free (RemoteServerApplication* self)
{
#line 27 "../src/remote-login-service.vala"
	remote_server_application_destroy (self);
#line 27 "../src/remote-login-service.vala"
	g_free (self);
#line 561 "remote-login-service.c"
}

static GType
remote_server_application_get_type_once (void)
{
	GType remote_server_application_type_id;
	remote_server_application_type_id = g_boxed_type_register_static ("RemoteServerApplication", (GBoxedCopyFunc) remote_server_application_dup, (GBoxedFreeFunc) remote_server_application_free);
	return remote_server_application_type_id;
}

GType
remote_server_application_get_type (void)
{
	static volatile gsize remote_server_application_type_id__once = 0;
	if (g_once_init_enter (&remote_server_application_type_id__once)) {
		GType remote_server_application_type_id;
		remote_server_application_type_id = remote_server_application_get_type_once ();
		g_once_init_leave (&remote_server_application_type_id__once, remote_server_application_type_id);
	}
	return remote_server_application_type_id__once;
}

static void
_vala_RemoteServerField_array_free (RemoteServerField * array,
                                    gssize array_length)
{
#line 39 "../src/remote-login-service.vala"
	if (array != NULL) {
#line 590 "remote-login-service.c"
		gssize i;
#line 39 "../src/remote-login-service.vala"
		for (i = 0; i < array_length; i = i + 1) {
#line 39 "../src/remote-login-service.vala"
			remote_server_field_destroy (&array[i]);
#line 596 "remote-login-service.c"
		}
	}
#line 39 "../src/remote-login-service.vala"
	g_free (array);
#line 601 "remote-login-service.c"
}

static void
_vala_RemoteServerApplication_array_free (RemoteServerApplication * array,
                                          gssize array_length)
{
#line 40 "../src/remote-login-service.vala"
	if (array != NULL) {
#line 610 "remote-login-service.c"
		gssize i;
#line 40 "../src/remote-login-service.vala"
		for (i = 0; i < array_length; i = i + 1) {
#line 40 "../src/remote-login-service.vala"
			remote_server_application_destroy (&array[i]);
#line 616 "remote-login-service.c"
		}
	}
#line 40 "../src/remote-login-service.vala"
	g_free (array);
#line 621 "remote-login-service.c"
}

static RemoteServerField*
_vala_array_dup4 (RemoteServerField* self,
                  gssize length)
{
#line 33 "../src/remote-login-service.vala"
	if (length > 0) {
#line 630 "remote-login-service.c"
		RemoteServerField* result;
		gssize i;
#line 33 "../src/remote-login-service.vala"
		result = g_new0 (RemoteServerField, length);
#line 33 "../src/remote-login-service.vala"
		for (i = 0; i < length; i++) {
#line 637 "remote-login-service.c"
			RemoteServerField _tmp0_;
			RemoteServerField _tmp1_ = {0};
#line 33 "../src/remote-login-service.vala"
			_tmp0_ = self[i];
#line 33 "../src/remote-login-service.vala"
			remote_server_field_copy (&_tmp0_, &_tmp1_);
#line 33 "../src/remote-login-service.vala"
			result[i] = _tmp1_;
#line 646 "remote-login-service.c"
		}
#line 33 "../src/remote-login-service.vala"
		return result;
#line 650 "remote-login-service.c"
	}
#line 33 "../src/remote-login-service.vala"
	return NULL;
#line 654 "remote-login-service.c"
}

static RemoteServerApplication*
_vala_array_dup5 (RemoteServerApplication* self,
                  gssize length)
{
#line 33 "../src/remote-login-service.vala"
	if (length > 0) {
#line 663 "remote-login-service.c"
		RemoteServerApplication* result;
		gssize i;
#line 33 "../src/remote-login-service.vala"
		result = g_new0 (RemoteServerApplication, length);
#line 33 "../src/remote-login-service.vala"
		for (i = 0; i < length; i++) {
#line 670 "remote-login-service.c"
			RemoteServerApplication _tmp0_;
			RemoteServerApplication _tmp1_ = {0};
#line 33 "../src/remote-login-service.vala"
			_tmp0_ = self[i];
#line 33 "../src/remote-login-service.vala"
			remote_server_application_copy (&_tmp0_, &_tmp1_);
#line 33 "../src/remote-login-service.vala"
			result[i] = _tmp1_;
#line 679 "remote-login-service.c"
		}
#line 33 "../src/remote-login-service.vala"
		return result;
#line 683 "remote-login-service.c"
	}
#line 33 "../src/remote-login-service.vala"
	return NULL;
#line 687 "remote-login-service.c"
}

void
remote_server_copy (const RemoteServer* self,
                    RemoteServer* dest)
{
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	RemoteServerField* _tmp6_;
	gint _tmp6__length1;
	RemoteServerField* _tmp7_;
	gint _tmp7__length1;
	RemoteServerApplication* _tmp8_;
	gint _tmp8__length1;
	RemoteServerApplication* _tmp9_;
	gint _tmp9__length1;
#line 33 "../src/remote-login-service.vala"
	_tmp0_ = (*self).type;
#line 33 "../src/remote-login-service.vala"
	_tmp1_ = g_strdup (_tmp0_);
#line 33 "../src/remote-login-service.vala"
	_g_free0 ((*dest).type);
#line 33 "../src/remote-login-service.vala"
	(*dest).type = _tmp1_;
#line 33 "../src/remote-login-service.vala"
	_tmp2_ = (*self).name;
#line 33 "../src/remote-login-service.vala"
	_tmp3_ = g_strdup (_tmp2_);
#line 33 "../src/remote-login-service.vala"
	_g_free0 ((*dest).name);
#line 33 "../src/remote-login-service.vala"
	(*dest).name = _tmp3_;
#line 33 "../src/remote-login-service.vala"
	_tmp4_ = (*self).url;
#line 33 "../src/remote-login-service.vala"
	_tmp5_ = g_strdup (_tmp4_);
#line 33 "../src/remote-login-service.vala"
	_g_free0 ((*dest).url);
#line 33 "../src/remote-login-service.vala"
	(*dest).url = _tmp5_;
#line 33 "../src/remote-login-service.vala"
	(*dest).last_used_server = (*self).last_used_server;
#line 33 "../src/remote-login-service.vala"
	_tmp6_ = (*self).fields;
#line 33 "../src/remote-login-service.vala"
	_tmp6__length1 = (*self).fields_length1;
#line 33 "../src/remote-login-service.vala"
	_tmp7_ = (_tmp6_ != NULL) ? _vala_array_dup4 (_tmp6_, _tmp6__length1) : _tmp6_;
#line 33 "../src/remote-login-service.vala"
	_tmp7__length1 = _tmp6__length1;
#line 33 "../src/remote-login-service.vala"
	(*dest).fields = (_vala_RemoteServerField_array_free ((*dest).fields, (*dest).fields_length1), NULL);
#line 33 "../src/remote-login-service.vala"
	(*dest).fields = _tmp7_;
#line 33 "../src/remote-login-service.vala"
	(*dest).fields_length1 = _tmp7__length1;
#line 33 "../src/remote-login-service.vala"
	_tmp8_ = (*self).applications;
#line 33 "../src/remote-login-service.vala"
	_tmp8__length1 = (*self).applications_length1;
#line 33 "../src/remote-login-service.vala"
	_tmp9_ = (_tmp8_ != NULL) ? _vala_array_dup5 (_tmp8_, _tmp8__length1) : _tmp8_;
#line 33 "../src/remote-login-service.vala"
	_tmp9__length1 = _tmp8__length1;
#line 33 "../src/remote-login-service.vala"
	(*dest).applications = (_vala_RemoteServerApplication_array_free ((*dest).applications, (*dest).applications_length1), NULL);
#line 33 "../src/remote-login-service.vala"
	(*dest).applications = _tmp9_;
#line 33 "../src/remote-login-service.vala"
	(*dest).applications_length1 = _tmp9__length1;
#line 762 "remote-login-service.c"
}

void
remote_server_destroy (RemoteServer* self)
{
#line 35 "../src/remote-login-service.vala"
	_g_free0 ((*self).type);
#line 36 "../src/remote-login-service.vala"
	_g_free0 ((*self).name);
#line 37 "../src/remote-login-service.vala"
	_g_free0 ((*self).url);
#line 39 "../src/remote-login-service.vala"
	(*self).fields = (_vala_RemoteServerField_array_free ((*self).fields, (*self).fields_length1), NULL);
#line 40 "../src/remote-login-service.vala"
	(*self).applications = (_vala_RemoteServerApplication_array_free ((*self).applications, (*self).applications_length1), NULL);
#line 778 "remote-login-service.c"
}

RemoteServer*
remote_server_dup (const RemoteServer* self)
{
	RemoteServer* dup;
#line 33 "../src/remote-login-service.vala"
	dup = g_new0 (RemoteServer, 1);
#line 33 "../src/remote-login-service.vala"
	remote_server_copy (self, dup);
#line 33 "../src/remote-login-service.vala"
	return dup;
#line 791 "remote-login-service.c"
}

void
remote_server_free (RemoteServer* self)
{
#line 33 "../src/remote-login-service.vala"
	remote_server_destroy (self);
#line 33 "../src/remote-login-service.vala"
	g_free (self);
#line 801 "remote-login-service.c"
}

static GType
remote_server_get_type_once (void)
{
	GType remote_server_type_id;
	remote_server_type_id = g_boxed_type_register_static ("RemoteServer", (GBoxedCopyFunc) remote_server_dup, (GBoxedFreeFunc) remote_server_free);
	return remote_server_type_id;
}

GType
remote_server_get_type (void)
{
	static volatile gsize remote_server_type_id__once = 0;
	if (g_once_init_enter (&remote_server_type_id__once)) {
		GType remote_server_type_id;
		remote_server_type_id = remote_server_get_type_once ();
		g_once_init_leave (&remote_server_type_id__once, remote_server_type_id);
	}
	return remote_server_type_id__once;
}

void
remote_login_service_get_servers (RemoteLoginService* self,
                                  GAsyncReadyCallback _callback_,
                                  gpointer _user_data_)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_servers) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_servers (self, _callback_, _user_data_);
#line 836 "remote-login-service.c"
	}
}

void
remote_login_service_get_servers_finish (RemoteLoginService* self,
                                         GAsyncResult* _res_,
                                         RemoteServer** serverList,
                                         gint* serverList_length1,
                                         GError** error)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_servers_finish) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_servers_finish (self, _res_, serverList, serverList_length1, error);
#line 854 "remote-login-service.c"
	}
}

void
remote_login_service_get_servers_for_login (RemoteLoginService* self,
                                            const gchar* url,
                                            const gchar* emailAddress,
                                            const gchar* password,
                                            gboolean allowCache,
                                            GAsyncReadyCallback _callback_,
                                            gpointer _user_data_)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_servers_for_login) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_servers_for_login (self, url, emailAddress, password, allowCache, _callback_, _user_data_);
#line 874 "remote-login-service.c"
	}
}

void
remote_login_service_get_servers_for_login_finish (RemoteLoginService* self,
                                                   GAsyncResult* _res_,
                                                   gboolean* loginSuccess,
                                                   gchar** dataType,
                                                   RemoteServer** serverList,
                                                   gint* serverList_length1,
                                                   GError** error)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_servers_for_login_finish) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_servers_for_login_finish (self, _res_, loginSuccess, dataType, serverList, serverList_length1, error);
#line 894 "remote-login-service.c"
	}
}

void
remote_login_service_get_cached_domains_for_server (RemoteLoginService* self,
                                                    const gchar* url,
                                                    GAsyncReadyCallback _callback_,
                                                    gpointer _user_data_)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_cached_domains_for_server) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_cached_domains_for_server (self, url, _callback_, _user_data_);
#line 911 "remote-login-service.c"
	}
}

void
remote_login_service_get_cached_domains_for_server_finish (RemoteLoginService* self,
                                                           GAsyncResult* _res_,
                                                           gchar*** domains,
                                                           gint* domains_length1,
                                                           GError** error)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->get_cached_domains_for_server_finish) {
#line 44 "../src/remote-login-service.vala"
		_iface_->get_cached_domains_for_server_finish (self, _res_, domains, domains_length1, error);
#line 929 "remote-login-service.c"
	}
}

void
remote_login_service_set_last_used_server (RemoteLoginService* self,
                                           const gchar* uccsUrl,
                                           const gchar* serverUrl,
                                           GAsyncReadyCallback _callback_,
                                           gpointer _user_data_)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->set_last_used_server) {
#line 44 "../src/remote-login-service.vala"
		_iface_->set_last_used_server (self, uccsUrl, serverUrl, _callback_, _user_data_);
#line 947 "remote-login-service.c"
	}
}

void
remote_login_service_set_last_used_server_finish (RemoteLoginService* self,
                                                  GAsyncResult* _res_,
                                                  GError** error)
{
	RemoteLoginServiceIface* _iface_;
#line 44 "../src/remote-login-service.vala"
	_iface_ = REMOTE_LOGIN_SERVICE_GET_INTERFACE (self);
#line 44 "../src/remote-login-service.vala"
	if (_iface_->set_last_used_server_finish) {
#line 44 "../src/remote-login-service.vala"
		_iface_->set_last_used_server_finish (self, _res_, error);
#line 963 "remote-login-service.c"
	}
}

static void
g_cclosure_user_marshal_VOID__POINTER_INT (GClosure * closure,
                                           GValue * return_value,
                                           guint n_param_values,
                                           const GValue * param_values,
                                           gpointer invocation_hint,
                                           gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__POINTER_INT) (gpointer data1, gpointer arg_1, gint arg_2, gpointer data2);
	register GMarshalFunc_VOID__POINTER_INT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 44 "../src/remote-login-service.vala"
	g_return_if_fail (n_param_values == 3);
#line 44 "../src/remote-login-service.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 44 "../src/remote-login-service.vala"
		data1 = closure->data;
#line 44 "../src/remote-login-service.vala"
		data2 = param_values->data[0].v_pointer;
#line 989 "remote-login-service.c"
	} else {
#line 44 "../src/remote-login-service.vala"
		data1 = param_values->data[0].v_pointer;
#line 44 "../src/remote-login-service.vala"
		data2 = closure->data;
#line 995 "remote-login-service.c"
	}
#line 44 "../src/remote-login-service.vala"
	callback = (GMarshalFunc_VOID__POINTER_INT) (marshal_data ? marshal_data : cc->callback);
#line 44 "../src/remote-login-service.vala"
	callback (data1, g_value_get_pointer (param_values + 1), g_value_get_int (param_values + 2), data2);
#line 1001 "remote-login-service.c"
}

static void
g_cclosure_user_marshal_VOID__STRING_STRING_STRING_POINTER_INT (GClosure * closure,
                                                                GValue * return_value,
                                                                guint n_param_values,
                                                                const GValue * param_values,
                                                                gpointer invocation_hint,
                                                                gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING_POINTER_INT) (gpointer data1, const char* arg_1, const char* arg_2, const char* arg_3, gpointer arg_4, gint arg_5, gpointer data2);
	register GMarshalFunc_VOID__STRING_STRING_STRING_POINTER_INT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 44 "../src/remote-login-service.vala"
	g_return_if_fail (n_param_values == 6);
#line 44 "../src/remote-login-service.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 44 "../src/remote-login-service.vala"
		data1 = closure->data;
#line 44 "../src/remote-login-service.vala"
		data2 = param_values->data[0].v_pointer;
#line 1026 "remote-login-service.c"
	} else {
#line 44 "../src/remote-login-service.vala"
		data1 = param_values->data[0].v_pointer;
#line 44 "../src/remote-login-service.vala"
		data2 = closure->data;
#line 1032 "remote-login-service.c"
	}
#line 44 "../src/remote-login-service.vala"
	callback = (GMarshalFunc_VOID__STRING_STRING_STRING_POINTER_INT) (marshal_data ? marshal_data : cc->callback);
#line 44 "../src/remote-login-service.vala"
	callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), g_value_get_string (param_values + 3), g_value_get_pointer (param_values + 4), g_value_get_int (param_values + 5), data2);
#line 1038 "remote-login-service.c"
}

static void
g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure,
                                             GValue * return_value,
                                             guint n_param_values,
                                             const GValue * param_values,
                                             gpointer invocation_hint,
                                             gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
	register GMarshalFunc_VOID__STRING_STRING callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 44 "../src/remote-login-service.vala"
	g_return_if_fail (n_param_values == 3);
#line 44 "../src/remote-login-service.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 44 "../src/remote-login-service.vala"
		data1 = closure->data;
#line 44 "../src/remote-login-service.vala"
		data2 = param_values->data[0].v_pointer;
#line 1063 "remote-login-service.c"
	} else {
#line 44 "../src/remote-login-service.vala"
		data1 = param_values->data[0].v_pointer;
#line 44 "../src/remote-login-service.vala"
		data2 = closure->data;
#line 1069 "remote-login-service.c"
	}
#line 44 "../src/remote-login-service.vala"
	callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
#line 44 "../src/remote-login-service.vala"
	callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);
#line 1075 "remote-login-service.c"
}

static void
remote_login_service_default_init (RemoteLoginServiceIface * iface,
                                   gpointer iface_data)
{
#line 44 "../src/remote-login-service.vala"
	remote_login_service_signals[REMOTE_LOGIN_SERVICE_SERVERS_UPDATED_SIGNAL] = g_signal_new ("servers-updated", TYPE_REMOTE_LOGIN_SERVICE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__POINTER_INT, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_INT);
#line 44 "../src/remote-login-service.vala"
	remote_login_service_signals[REMOTE_LOGIN_SERVICE_LOGIN_SERVERS_UPDATED_SIGNAL] = g_signal_new ("login-servers-updated", TYPE_REMOTE_LOGIN_SERVICE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING_STRING_POINTER_INT, G_TYPE_NONE, 5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_INT);
#line 44 "../src/remote-login-service.vala"
	remote_login_service_signals[REMOTE_LOGIN_SERVICE_LOGIN_CHANGED_SIGNAL] = g_signal_new ("login-changed", TYPE_REMOTE_LOGIN_SERVICE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
#line 1088 "remote-login-service.c"
}

static GType
remote_login_service_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (RemoteLoginServiceIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) remote_login_service_default_init, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
	GType remote_login_service_type_id;
	remote_login_service_type_id = g_type_register_static (G_TYPE_INTERFACE, "RemoteLoginService", &g_define_type_info, 0);
	g_type_interface_add_prerequisite (remote_login_service_type_id, G_TYPE_OBJECT);
	g_type_set_qdata (remote_login_service_type_id, g_quark_from_static_string ("vala-dbus-proxy-type"), (void*) remote_login_service_proxy_get_type);
	g_type_set_qdata (remote_login_service_type_id, g_quark_from_static_string ("vala-dbus-interface-name"), "com.canonical.RemoteLogin");
	g_type_set_qdata (remote_login_service_type_id, g_quark_from_static_string ("vala-dbus-interface-info"), (void*) (&_remote_login_service_dbus_interface_info));
	g_type_set_qdata (remote_login_service_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) remote_login_service_register_object);
	return remote_login_service_type_id;
}

GType
remote_login_service_get_type (void)
{
	static volatile gsize remote_login_service_type_id__once = 0;
	if (g_once_init_enter (&remote_login_service_type_id__once)) {
		GType remote_login_service_type_id;
		remote_login_service_type_id = remote_login_service_get_type_once ();
		g_once_init_leave (&remote_login_service_type_id__once, remote_login_service_type_id);
	}
	return remote_login_service_type_id__once;
}

G_DEFINE_TYPE_EXTENDED (RemoteLoginServiceProxy, remote_login_service_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (TYPE_REMOTE_LOGIN_SERVICE, remote_login_service_proxy_remote_login_service_interface_init) )
static void
remote_login_service_proxy_class_init (RemoteLoginServiceProxyClass* klass)
{
	G_DBUS_PROXY_CLASS (klass)->g_signal = remote_login_service_proxy_g_signal;
}

static void
_vala_RemoteServer_array_free (RemoteServer * array,
                               gssize array_length)
{
	if (array != NULL) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			remote_server_destroy (&array[i]);
		}
	}
	g_free (array);
}

static void
_dbus_handle_remote_login_service_servers_updated (RemoteLoginService* self,
                                                   GVariant* parameters)
{
	GVariantIter _arguments_iter;
	RemoteServer* serverList = NULL;
	gint serverList_length1;
	GVariant* _tmp32_;
	RemoteServer* _tmp33_;
	gint _tmp33__length;
	gint _tmp33__size;
	gint _tmp33__length1;
	GVariantIter _tmp34_;
	GVariant* _tmp35_;
	g_variant_iter_init (&_arguments_iter, parameters);
	serverList_length1 = 0;
	_tmp32_ = g_variant_iter_next_value (&_arguments_iter);
	_tmp33_ = g_new (RemoteServer, 5);
	_tmp33__length = 0;
	_tmp33__size = 4;
	_tmp33__length1 = 0;
	g_variant_iter_init (&_tmp34_, _tmp32_);
	for (; (_tmp35_ = g_variant_iter_next_value (&_tmp34_)) != NULL; _tmp33__length1++) {
		RemoteServer _tmp36_;
		GVariantIter _tmp37_;
		GVariant* _tmp38_;
		GVariant* _tmp39_;
		GVariant* _tmp40_;
		GVariant* _tmp41_;
		GVariant* _tmp42_;
		RemoteServerField* _tmp43_;
		gint _tmp43__length;
		gint _tmp43__size;
		gint _tmp43__length1;
		GVariantIter _tmp44_;
		GVariant* _tmp45_;
		GVariant* _tmp56_;
		RemoteServerApplication* _tmp57_;
		gint _tmp57__length;
		gint _tmp57__size;
		gint _tmp57__length1;
		GVariantIter _tmp58_;
		GVariant* _tmp59_;
		if (_tmp33__size == _tmp33__length) {
			_tmp33__size = 2 * _tmp33__size;
			_tmp33_ = g_renew (RemoteServer, _tmp33_, _tmp33__size + 1);
		}
		g_variant_iter_init (&_tmp37_, _tmp35_);
		_tmp38_ = g_variant_iter_next_value (&_tmp37_);
		_tmp36_.type = g_variant_dup_string (_tmp38_, NULL);
		g_variant_unref (_tmp38_);
		_tmp39_ = g_variant_iter_next_value (&_tmp37_);
		_tmp36_.name = g_variant_dup_string (_tmp39_, NULL);
		g_variant_unref (_tmp39_);
		_tmp40_ = g_variant_iter_next_value (&_tmp37_);
		_tmp36_.url = g_variant_dup_string (_tmp40_, NULL);
		g_variant_unref (_tmp40_);
		_tmp41_ = g_variant_iter_next_value (&_tmp37_);
		_tmp36_.last_used_server = g_variant_get_boolean (_tmp41_);
		g_variant_unref (_tmp41_);
		_tmp42_ = g_variant_iter_next_value (&_tmp37_);
		_tmp43_ = g_new (RemoteServerField, 5);
		_tmp43__length = 0;
		_tmp43__size = 4;
		_tmp43__length1 = 0;
		g_variant_iter_init (&_tmp44_, _tmp42_);
		for (; (_tmp45_ = g_variant_iter_next_value (&_tmp44_)) != NULL; _tmp43__length1++) {
			RemoteServerField _tmp46_;
			GVariantIter _tmp47_;
			GVariant* _tmp48_;
			GVariant* _tmp49_;
			GVariant* _tmp50_;
			GVariant* _tmp51_;
			GHashTable* _tmp52_;
			GVariantIter _tmp53_;
			GVariant* _tmp54_;
			GVariant* _tmp55_;
			if (_tmp43__size == _tmp43__length) {
				_tmp43__size = 2 * _tmp43__size;
				_tmp43_ = g_renew (RemoteServerField, _tmp43_, _tmp43__size + 1);
			}
			g_variant_iter_init (&_tmp47_, _tmp45_);
			_tmp48_ = g_variant_iter_next_value (&_tmp47_);
			_tmp46_.type = g_variant_dup_string (_tmp48_, NULL);
			g_variant_unref (_tmp48_);
			_tmp49_ = g_variant_iter_next_value (&_tmp47_);
			_tmp46_.required = g_variant_get_boolean (_tmp49_);
			g_variant_unref (_tmp49_);
			_tmp50_ = g_variant_iter_next_value (&_tmp47_);
			_tmp46_.default_value = g_variant_get_variant (_tmp50_);
			g_variant_unref (_tmp50_);
			_tmp51_ = g_variant_iter_next_value (&_tmp47_);
			_tmp52_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref);
			g_variant_iter_init (&_tmp53_, _tmp51_);
			while (g_variant_iter_loop (&_tmp53_, "{?*}", &_tmp54_, &_tmp55_)) {
				g_hash_table_insert (_tmp52_, g_variant_dup_string (_tmp54_, NULL), g_variant_get_variant (_tmp55_));
			}
			_tmp46_.properties = _tmp52_;
			g_variant_unref (_tmp51_);
			_tmp43_[_tmp43__length++] = _tmp46_;
			g_variant_unref (_tmp45_);
		}
		_tmp36_.fields_length1 = _tmp43__length1;
		_tmp36_.fields = _tmp43_;
		g_variant_unref (_tmp42_);
		_tmp56_ = g_variant_iter_next_value (&_tmp37_);
		_tmp57_ = g_new (RemoteServerApplication, 5);
		_tmp57__length = 0;
		_tmp57__size = 4;
		_tmp57__length1 = 0;
		g_variant_iter_init (&_tmp58_, _tmp56_);
		for (; (_tmp59_ = g_variant_iter_next_value (&_tmp58_)) != NULL; _tmp57__length1++) {
			RemoteServerApplication _tmp60_;
			GVariantIter _tmp61_;
			GVariant* _tmp62_;
			GVariant* _tmp63_;
			if (_tmp57__size == _tmp57__length) {
				_tmp57__size = 2 * _tmp57__size;
				_tmp57_ = g_renew (RemoteServerApplication, _tmp57_, _tmp57__size + 1);
			}
			g_variant_iter_init (&_tmp61_, _tmp59_);
			_tmp62_ = g_variant_iter_next_value (&_tmp61_);
			_tmp60_.application_id = g_variant_dup_string (_tmp62_, NULL);
			g_variant_unref (_tmp62_);
			_tmp63_ = g_variant_iter_next_value (&_tmp61_);
			_tmp60_.pin_position = g_variant_get_int32 (_tmp63_);
			g_variant_unref (_tmp63_);
			_tmp57_[_tmp57__length++] = _tmp60_;
			g_variant_unref (_tmp59_);
		}
		_tmp36_.applications_length1 = _tmp57__length1;
		_tmp36_.applications = _tmp57_;
		g_variant_unref (_tmp56_);
		_tmp33_[_tmp33__length++] = _tmp36_;
		g_variant_unref (_tmp35_);
	}
	serverList_length1 = _tmp33__length1;
	serverList = _tmp33_;
	g_variant_unref (_tmp32_);
	g_signal_emit_by_name (self, "servers-updated", serverList, serverList_length1);
	serverList = (_vala_RemoteServer_array_free (serverList, serverList_length1), NULL);
}

static void
_dbus_handle_remote_login_service_login_servers_updated (RemoteLoginService* self,
                                                         GVariant* parameters)
{
	GVariantIter _arguments_iter;
	gchar* url = NULL;
	GVariant* _tmp64_;
	gchar* emailAddress = NULL;
	GVariant* _tmp65_;
	gchar* dataType = NULL;
	GVariant* _tmp66_;
	RemoteServer* serverList = NULL;
	gint serverList_length1;
	GVariant* _tmp67_;
	RemoteServer* _tmp68_;
	gint _tmp68__length;
	gint _tmp68__size;
	gint _tmp68__length1;
	GVariantIter _tmp69_;
	GVariant* _tmp70_;
	g_variant_iter_init (&_arguments_iter, parameters);
	_tmp64_ = g_variant_iter_next_value (&_arguments_iter);
	url = g_variant_dup_string (_tmp64_, NULL);
	g_variant_unref (_tmp64_);
	_tmp65_ = g_variant_iter_next_value (&_arguments_iter);
	emailAddress = g_variant_dup_string (_tmp65_, NULL);
	g_variant_unref (_tmp65_);
	_tmp66_ = g_variant_iter_next_value (&_arguments_iter);
	dataType = g_variant_dup_string (_tmp66_, NULL);
	g_variant_unref (_tmp66_);
	serverList_length1 = 0;
	_tmp67_ = g_variant_iter_next_value (&_arguments_iter);
	_tmp68_ = g_new (RemoteServer, 5);
	_tmp68__length = 0;
	_tmp68__size = 4;
	_tmp68__length1 = 0;
	g_variant_iter_init (&_tmp69_, _tmp67_);
	for (; (_tmp70_ = g_variant_iter_next_value (&_tmp69_)) != NULL; _tmp68__length1++) {
		RemoteServer _tmp71_;
		GVariantIter _tmp72_;
		GVariant* _tmp73_;
		GVariant* _tmp74_;
		GVariant* _tmp75_;
		GVariant* _tmp76_;
		GVariant* _tmp77_;
		RemoteServerField* _tmp78_;
		gint _tmp78__length;
		gint _tmp78__size;
		gint _tmp78__length1;
		GVariantIter _tmp79_;
		GVariant* _tmp80_;
		GVariant* _tmp91_;
		RemoteServerApplication* _tmp92_;
		gint _tmp92__length;
		gint _tmp92__size;
		gint _tmp92__length1;
		GVariantIter _tmp93_;
		GVariant* _tmp94_;
		if (_tmp68__size == _tmp68__length) {
			_tmp68__size = 2 * _tmp68__size;
			_tmp68_ = g_renew (RemoteServer, _tmp68_, _tmp68__size + 1);
		}
		g_variant_iter_init (&_tmp72_, _tmp70_);
		_tmp73_ = g_variant_iter_next_value (&_tmp72_);
		_tmp71_.type = g_variant_dup_string (_tmp73_, NULL);
		g_variant_unref (_tmp73_);
		_tmp74_ = g_variant_iter_next_value (&_tmp72_);
		_tmp71_.name = g_variant_dup_string (_tmp74_, NULL);
		g_variant_unref (_tmp74_);
		_tmp75_ = g_variant_iter_next_value (&_tmp72_);
		_tmp71_.url = g_variant_dup_string (_tmp75_, NULL);
		g_variant_unref (_tmp75_);
		_tmp76_ = g_variant_iter_next_value (&_tmp72_);
		_tmp71_.last_used_server = g_variant_get_boolean (_tmp76_);
		g_variant_unref (_tmp76_);
		_tmp77_ = g_variant_iter_next_value (&_tmp72_);
		_tmp78_ = g_new (RemoteServerField, 5);
		_tmp78__length = 0;
		_tmp78__size = 4;
		_tmp78__length1 = 0;
		g_variant_iter_init (&_tmp79_, _tmp77_);
		for (; (_tmp80_ = g_variant_iter_next_value (&_tmp79_)) != NULL; _tmp78__length1++) {
			RemoteServerField _tmp81_;
			GVariantIter _tmp82_;
			GVariant* _tmp83_;
			GVariant* _tmp84_;
			GVariant* _tmp85_;
			GVariant* _tmp86_;
			GHashTable* _tmp87_;
			GVariantIter _tmp88_;
			GVariant* _tmp89_;
			GVariant* _tmp90_;
			if (_tmp78__size == _tmp78__length) {
				_tmp78__size = 2 * _tmp78__size;
				_tmp78_ = g_renew (RemoteServerField, _tmp78_, _tmp78__size + 1);
			}
			g_variant_iter_init (&_tmp82_, _tmp80_);
			_tmp83_ = g_variant_iter_next_value (&_tmp82_);
			_tmp81_.type = g_variant_dup_string (_tmp83_, NULL);
			g_variant_unref (_tmp83_);
			_tmp84_ = g_variant_iter_next_value (&_tmp82_);
			_tmp81_.required = g_variant_get_boolean (_tmp84_);
			g_variant_unref (_tmp84_);
			_tmp85_ = g_variant_iter_next_value (&_tmp82_);
			_tmp81_.default_value = g_variant_get_variant (_tmp85_);
			g_variant_unref (_tmp85_);
			_tmp86_ = g_variant_iter_next_value (&_tmp82_);
			_tmp87_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref);
			g_variant_iter_init (&_tmp88_, _tmp86_);
			while (g_variant_iter_loop (&_tmp88_, "{?*}", &_tmp89_, &_tmp90_)) {
				g_hash_table_insert (_tmp87_, g_variant_dup_string (_tmp89_, NULL), g_variant_get_variant (_tmp90_));
			}
			_tmp81_.properties = _tmp87_;
			g_variant_unref (_tmp86_);
			_tmp78_[_tmp78__length++] = _tmp81_;
			g_variant_unref (_tmp80_);
		}
		_tmp71_.fields_length1 = _tmp78__length1;
		_tmp71_.fields = _tmp78_;
		g_variant_unref (_tmp77_);
		_tmp91_ = g_variant_iter_next_value (&_tmp72_);
		_tmp92_ = g_new (RemoteServerApplication, 5);
		_tmp92__length = 0;
		_tmp92__size = 4;
		_tmp92__length1 = 0;
		g_variant_iter_init (&_tmp93_, _tmp91_);
		for (; (_tmp94_ = g_variant_iter_next_value (&_tmp93_)) != NULL; _tmp92__length1++) {
			RemoteServerApplication _tmp95_;
			GVariantIter _tmp96_;
			GVariant* _tmp97_;
			GVariant* _tmp98_;
			if (_tmp92__size == _tmp92__length) {
				_tmp92__size = 2 * _tmp92__size;
				_tmp92_ = g_renew (RemoteServerApplication, _tmp92_, _tmp92__size + 1);
			}
			g_variant_iter_init (&_tmp96_, _tmp94_);
			_tmp97_ = g_variant_iter_next_value (&_tmp96_);
			_tmp95_.application_id = g_variant_dup_string (_tmp97_, NULL);
			g_variant_unref (_tmp97_);
			_tmp98_ = g_variant_iter_next_value (&_tmp96_);
			_tmp95_.pin_position = g_variant_get_int32 (_tmp98_);
			g_variant_unref (_tmp98_);
			_tmp92_[_tmp92__length++] = _tmp95_;
			g_variant_unref (_tmp94_);
		}
		_tmp71_.applications_length1 = _tmp92__length1;
		_tmp71_.applications = _tmp92_;
		g_variant_unref (_tmp91_);
		_tmp68_[_tmp68__length++] = _tmp71_;
		g_variant_unref (_tmp70_);
	}
	serverList_length1 = _tmp68__length1;
	serverList = _tmp68_;
	g_variant_unref (_tmp67_);
	g_signal_emit_by_name (self, "login-servers-updated", url, emailAddress, dataType, serverList, serverList_length1);
	_g_free0 (url);
	_g_free0 (emailAddress);
	_g_free0 (dataType);
	serverList = (_vala_RemoteServer_array_free (serverList, serverList_length1), NULL);
}

static void
_dbus_handle_remote_login_service_login_changed (RemoteLoginService* self,
                                                 GVariant* parameters)
{
	GVariantIter _arguments_iter;
	gchar* url = NULL;
	GVariant* _tmp99_;
	gchar* emailAddress = NULL;
	GVariant* _tmp100_;
	g_variant_iter_init (&_arguments_iter, parameters);
	_tmp99_ = g_variant_iter_next_value (&_arguments_iter);
	url = g_variant_dup_string (_tmp99_, NULL);
	g_variant_unref (_tmp99_);
	_tmp100_ = g_variant_iter_next_value (&_arguments_iter);
	emailAddress = g_variant_dup_string (_tmp100_, NULL);
	g_variant_unref (_tmp100_);
	g_signal_emit_by_name (self, "login-changed", url, emailAddress);
	_g_free0 (url);
	_g_free0 (emailAddress);
}

static void
remote_login_service_proxy_g_signal (GDBusProxy* proxy,
                                     const gchar* sender_name,
                                     const gchar* signal_name,
                                     GVariant* parameters)
{
	if (strcmp (signal_name, "ServersUpdated") == 0) {
		_dbus_handle_remote_login_service_servers_updated ((RemoteLoginService*) proxy, parameters);
	} else if (strcmp (signal_name, "LoginServersUpdated") == 0) {
		_dbus_handle_remote_login_service_login_servers_updated ((RemoteLoginService*) proxy, parameters);
	} else if (strcmp (signal_name, "LoginChanged") == 0) {
		_dbus_handle_remote_login_service_login_changed ((RemoteLoginService*) proxy, parameters);
	}
}

static void
remote_login_service_proxy_init (RemoteLoginServiceProxy* self)
{
	g_dbus_proxy_set_interface_info (G_DBUS_PROXY (self), (GDBusInterfaceInfo *) (&_remote_login_service_dbus_interface_info));
}

static void
_vala_g_async_ready_callback (GObject *source_object,
                              GAsyncResult *res,
                              void *user_data)
{
	g_task_return_pointer (user_data, g_object_ref (res), g_object_unref);
	g_object_unref (user_data);
}

static void
remote_login_service_proxy_get_servers_async (RemoteLoginService* self,
                                              GAsyncReadyCallback _callback_,
                                              gpointer _user_data_)
{
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	G_DBUS_ERROR;
	G_IO_ERROR;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.canonical.RemoteLogin", "GetServers");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	if (_callback_ != NULL) {
		g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_task_new ((GObject *) self, NULL, _callback_, _user_data_));
	} else {
		g_dbus_message_set_flags (_message, G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED);
		g_dbus_connection_send_message (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	}
	g_object_unref (_message);
}

static void
remote_login_service_proxy_get_servers_finish (RemoteLoginService* self,
                                               GAsyncResult* _res_,
                                               RemoteServer** serverList,
                                               gint* serverList_length1,
                                               GError** error)
{
	GAsyncResult *_inner_res;
	GDBusMessage *_reply_message;
	GVariant *_reply;
	GVariantIter _reply_iter;
	RemoteServer* _vala_serverList = NULL;
	gint _vala_serverList_length1;
	GVariant* _tmp101_;
	RemoteServer* _tmp102_;
	gint _tmp102__length;
	gint _tmp102__size;
	gint _tmp102__length1;
	GVariantIter _tmp103_;
	GVariant* _tmp104_;
	_inner_res = g_task_propagate_pointer ((GTask *) _res_, NULL);
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), _inner_res, error);
	g_object_unref (_inner_res);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	_reply = g_dbus_message_get_body (_reply_message);
	g_variant_iter_init (&_reply_iter, _reply);
	_vala_serverList_length1 = 0;
	_tmp101_ = g_variant_iter_next_value (&_reply_iter);
	_tmp102_ = g_new (RemoteServer, 5);
	_tmp102__length = 0;
	_tmp102__size = 4;
	_tmp102__length1 = 0;
	g_variant_iter_init (&_tmp103_, _tmp101_);
	for (; (_tmp104_ = g_variant_iter_next_value (&_tmp103_)) != NULL; _tmp102__length1++) {
		RemoteServer _tmp105_;
		GVariantIter _tmp106_;
		GVariant* _tmp107_;
		GVariant* _tmp108_;
		GVariant* _tmp109_;
		GVariant* _tmp110_;
		GVariant* _tmp111_;
		RemoteServerField* _tmp112_;
		gint _tmp112__length;
		gint _tmp112__size;
		gint _tmp112__length1;
		GVariantIter _tmp113_;
		GVariant* _tmp114_;
		GVariant* _tmp125_;
		RemoteServerApplication* _tmp126_;
		gint _tmp126__length;
		gint _tmp126__size;
		gint _tmp126__length1;
		GVariantIter _tmp127_;
		GVariant* _tmp128_;
		if (_tmp102__size == _tmp102__length) {
			_tmp102__size = 2 * _tmp102__size;
			_tmp102_ = g_renew (RemoteServer, _tmp102_, _tmp102__size + 1);
		}
		g_variant_iter_init (&_tmp106_, _tmp104_);
		_tmp107_ = g_variant_iter_next_value (&_tmp106_);
		_tmp105_.type = g_variant_dup_string (_tmp107_, NULL);
		g_variant_unref (_tmp107_);
		_tmp108_ = g_variant_iter_next_value (&_tmp106_);
		_tmp105_.name = g_variant_dup_string (_tmp108_, NULL);
		g_variant_unref (_tmp108_);
		_tmp109_ = g_variant_iter_next_value (&_tmp106_);
		_tmp105_.url = g_variant_dup_string (_tmp109_, NULL);
		g_variant_unref (_tmp109_);
		_tmp110_ = g_variant_iter_next_value (&_tmp106_);
		_tmp105_.last_used_server = g_variant_get_boolean (_tmp110_);
		g_variant_unref (_tmp110_);
		_tmp111_ = g_variant_iter_next_value (&_tmp106_);
		_tmp112_ = g_new (RemoteServerField, 5);
		_tmp112__length = 0;
		_tmp112__size = 4;
		_tmp112__length1 = 0;
		g_variant_iter_init (&_tmp113_, _tmp111_);
		for (; (_tmp114_ = g_variant_iter_next_value (&_tmp113_)) != NULL; _tmp112__length1++) {
			RemoteServerField _tmp115_;
			GVariantIter _tmp116_;
			GVariant* _tmp117_;
			GVariant* _tmp118_;
			GVariant* _tmp119_;
			GVariant* _tmp120_;
			GHashTable* _tmp121_;
			GVariantIter _tmp122_;
			GVariant* _tmp123_;
			GVariant* _tmp124_;
			if (_tmp112__size == _tmp112__length) {
				_tmp112__size = 2 * _tmp112__size;
				_tmp112_ = g_renew (RemoteServerField, _tmp112_, _tmp112__size + 1);
			}
			g_variant_iter_init (&_tmp116_, _tmp114_);
			_tmp117_ = g_variant_iter_next_value (&_tmp116_);
			_tmp115_.type = g_variant_dup_string (_tmp117_, NULL);
			g_variant_unref (_tmp117_);
			_tmp118_ = g_variant_iter_next_value (&_tmp116_);
			_tmp115_.required = g_variant_get_boolean (_tmp118_);
			g_variant_unref (_tmp118_);
			_tmp119_ = g_variant_iter_next_value (&_tmp116_);
			_tmp115_.default_value = g_variant_get_variant (_tmp119_);
			g_variant_unref (_tmp119_);
			_tmp120_ = g_variant_iter_next_value (&_tmp116_);
			_tmp121_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref);
			g_variant_iter_init (&_tmp122_, _tmp120_);
			while (g_variant_iter_loop (&_tmp122_, "{?*}", &_tmp123_, &_tmp124_)) {
				g_hash_table_insert (_tmp121_, g_variant_dup_string (_tmp123_, NULL), g_variant_get_variant (_tmp124_));
			}
			_tmp115_.properties = _tmp121_;
			g_variant_unref (_tmp120_);
			_tmp112_[_tmp112__length++] = _tmp115_;
			g_variant_unref (_tmp114_);
		}
		_tmp105_.fields_length1 = _tmp112__length1;
		_tmp105_.fields = _tmp112_;
		g_variant_unref (_tmp111_);
		_tmp125_ = g_variant_iter_next_value (&_tmp106_);
		_tmp126_ = g_new (RemoteServerApplication, 5);
		_tmp126__length = 0;
		_tmp126__size = 4;
		_tmp126__length1 = 0;
		g_variant_iter_init (&_tmp127_, _tmp125_);
		for (; (_tmp128_ = g_variant_iter_next_value (&_tmp127_)) != NULL; _tmp126__length1++) {
			RemoteServerApplication _tmp129_;
			GVariantIter _tmp130_;
			GVariant* _tmp131_;
			GVariant* _tmp132_;
			if (_tmp126__size == _tmp126__length) {
				_tmp126__size = 2 * _tmp126__size;
				_tmp126_ = g_renew (RemoteServerApplication, _tmp126_, _tmp126__size + 1);
			}
			g_variant_iter_init (&_tmp130_, _tmp128_);
			_tmp131_ = g_variant_iter_next_value (&_tmp130_);
			_tmp129_.application_id = g_variant_dup_string (_tmp131_, NULL);
			g_variant_unref (_tmp131_);
			_tmp132_ = g_variant_iter_next_value (&_tmp130_);
			_tmp129_.pin_position = g_variant_get_int32 (_tmp132_);
			g_variant_unref (_tmp132_);
			_tmp126_[_tmp126__length++] = _tmp129_;
			g_variant_unref (_tmp128_);
		}
		_tmp105_.applications_length1 = _tmp126__length1;
		_tmp105_.applications = _tmp126_;
		g_variant_unref (_tmp125_);
		_tmp102_[_tmp102__length++] = _tmp105_;
		g_variant_unref (_tmp104_);
	}
	_vala_serverList_length1 = _tmp102__length1;
	_vala_serverList = _tmp102_;
	g_variant_unref (_tmp101_);
	*serverList = _vala_serverList;
	*serverList_length1 = _vala_serverList_length1;
	g_object_unref (_reply_message);
}

static void
remote_login_service_proxy_get_servers_for_login_async (RemoteLoginService* self,
                                                        const gchar* url,
                                                        const gchar* emailAddress,
                                                        const gchar* password,
                                                        gboolean allowCache,
                                                        GAsyncReadyCallback _callback_,
                                                        gpointer _user_data_)
{
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	G_DBUS_ERROR;
	G_IO_ERROR;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.canonical.RemoteLogin", "GetServersForLogin");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (url));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (emailAddress));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (password));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (allowCache));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	if (_callback_ != NULL) {
		g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_task_new ((GObject *) self, NULL, _callback_, _user_data_));
	} else {
		g_dbus_message_set_flags (_message, G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED);
		g_dbus_connection_send_message (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	}
	g_object_unref (_message);
}

static void
remote_login_service_proxy_get_servers_for_login_finish (RemoteLoginService* self,
                                                         GAsyncResult* _res_,
                                                         gboolean* loginSuccess,
                                                         gchar** dataType,
                                                         RemoteServer** serverList,
                                                         gint* serverList_length1,
                                                         GError** error)
{
	GAsyncResult *_inner_res;
	GDBusMessage *_reply_message;
	GVariant *_reply;
	GVariantIter _reply_iter;
	gboolean _vala_loginSuccess = FALSE;
	GVariant* _tmp133_;
	gchar* _vala_dataType = NULL;
	GVariant* _tmp134_;
	RemoteServer* _vala_serverList = NULL;
	gint _vala_serverList_length1;
	GVariant* _tmp135_;
	RemoteServer* _tmp136_;
	gint _tmp136__length;
	gint _tmp136__size;
	gint _tmp136__length1;
	GVariantIter _tmp137_;
	GVariant* _tmp138_;
	_inner_res = g_task_propagate_pointer ((GTask *) _res_, NULL);
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), _inner_res, error);
	g_object_unref (_inner_res);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	_reply = g_dbus_message_get_body (_reply_message);
	g_variant_iter_init (&_reply_iter, _reply);
	_tmp133_ = g_variant_iter_next_value (&_reply_iter);
	_vala_loginSuccess = g_variant_get_boolean (_tmp133_);
	g_variant_unref (_tmp133_);
	*loginSuccess = _vala_loginSuccess;
	_tmp134_ = g_variant_iter_next_value (&_reply_iter);
	_vala_dataType = g_variant_dup_string (_tmp134_, NULL);
	g_variant_unref (_tmp134_);
	*dataType = _vala_dataType;
	_vala_serverList_length1 = 0;
	_tmp135_ = g_variant_iter_next_value (&_reply_iter);
	_tmp136_ = g_new (RemoteServer, 5);
	_tmp136__length = 0;
	_tmp136__size = 4;
	_tmp136__length1 = 0;
	g_variant_iter_init (&_tmp137_, _tmp135_);
	for (; (_tmp138_ = g_variant_iter_next_value (&_tmp137_)) != NULL; _tmp136__length1++) {
		RemoteServer _tmp139_;
		GVariantIter _tmp140_;
		GVariant* _tmp141_;
		GVariant* _tmp142_;
		GVariant* _tmp143_;
		GVariant* _tmp144_;
		GVariant* _tmp145_;
		RemoteServerField* _tmp146_;
		gint _tmp146__length;
		gint _tmp146__size;
		gint _tmp146__length1;
		GVariantIter _tmp147_;
		GVariant* _tmp148_;
		GVariant* _tmp159_;
		RemoteServerApplication* _tmp160_;
		gint _tmp160__length;
		gint _tmp160__size;
		gint _tmp160__length1;
		GVariantIter _tmp161_;
		GVariant* _tmp162_;
		if (_tmp136__size == _tmp136__length) {
			_tmp136__size = 2 * _tmp136__size;
			_tmp136_ = g_renew (RemoteServer, _tmp136_, _tmp136__size + 1);
		}
		g_variant_iter_init (&_tmp140_, _tmp138_);
		_tmp141_ = g_variant_iter_next_value (&_tmp140_);
		_tmp139_.type = g_variant_dup_string (_tmp141_, NULL);
		g_variant_unref (_tmp141_);
		_tmp142_ = g_variant_iter_next_value (&_tmp140_);
		_tmp139_.name = g_variant_dup_string (_tmp142_, NULL);
		g_variant_unref (_tmp142_);
		_tmp143_ = g_variant_iter_next_value (&_tmp140_);
		_tmp139_.url = g_variant_dup_string (_tmp143_, NULL);
		g_variant_unref (_tmp143_);
		_tmp144_ = g_variant_iter_next_value (&_tmp140_);
		_tmp139_.last_used_server = g_variant_get_boolean (_tmp144_);
		g_variant_unref (_tmp144_);
		_tmp145_ = g_variant_iter_next_value (&_tmp140_);
		_tmp146_ = g_new (RemoteServerField, 5);
		_tmp146__length = 0;
		_tmp146__size = 4;
		_tmp146__length1 = 0;
		g_variant_iter_init (&_tmp147_, _tmp145_);
		for (; (_tmp148_ = g_variant_iter_next_value (&_tmp147_)) != NULL; _tmp146__length1++) {
			RemoteServerField _tmp149_;
			GVariantIter _tmp150_;
			GVariant* _tmp151_;
			GVariant* _tmp152_;
			GVariant* _tmp153_;
			GVariant* _tmp154_;
			GHashTable* _tmp155_;
			GVariantIter _tmp156_;
			GVariant* _tmp157_;
			GVariant* _tmp158_;
			if (_tmp146__size == _tmp146__length) {
				_tmp146__size = 2 * _tmp146__size;
				_tmp146_ = g_renew (RemoteServerField, _tmp146_, _tmp146__size + 1);
			}
			g_variant_iter_init (&_tmp150_, _tmp148_);
			_tmp151_ = g_variant_iter_next_value (&_tmp150_);
			_tmp149_.type = g_variant_dup_string (_tmp151_, NULL);
			g_variant_unref (_tmp151_);
			_tmp152_ = g_variant_iter_next_value (&_tmp150_);
			_tmp149_.required = g_variant_get_boolean (_tmp152_);
			g_variant_unref (_tmp152_);
			_tmp153_ = g_variant_iter_next_value (&_tmp150_);
			_tmp149_.default_value = g_variant_get_variant (_tmp153_);
			g_variant_unref (_tmp153_);
			_tmp154_ = g_variant_iter_next_value (&_tmp150_);
			_tmp155_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref);
			g_variant_iter_init (&_tmp156_, _tmp154_);
			while (g_variant_iter_loop (&_tmp156_, "{?*}", &_tmp157_, &_tmp158_)) {
				g_hash_table_insert (_tmp155_, g_variant_dup_string (_tmp157_, NULL), g_variant_get_variant (_tmp158_));
			}
			_tmp149_.properties = _tmp155_;
			g_variant_unref (_tmp154_);
			_tmp146_[_tmp146__length++] = _tmp149_;
			g_variant_unref (_tmp148_);
		}
		_tmp139_.fields_length1 = _tmp146__length1;
		_tmp139_.fields = _tmp146_;
		g_variant_unref (_tmp145_);
		_tmp159_ = g_variant_iter_next_value (&_tmp140_);
		_tmp160_ = g_new (RemoteServerApplication, 5);
		_tmp160__length = 0;
		_tmp160__size = 4;
		_tmp160__length1 = 0;
		g_variant_iter_init (&_tmp161_, _tmp159_);
		for (; (_tmp162_ = g_variant_iter_next_value (&_tmp161_)) != NULL; _tmp160__length1++) {
			RemoteServerApplication _tmp163_;
			GVariantIter _tmp164_;
			GVariant* _tmp165_;
			GVariant* _tmp166_;
			if (_tmp160__size == _tmp160__length) {
				_tmp160__size = 2 * _tmp160__size;
				_tmp160_ = g_renew (RemoteServerApplication, _tmp160_, _tmp160__size + 1);
			}
			g_variant_iter_init (&_tmp164_, _tmp162_);
			_tmp165_ = g_variant_iter_next_value (&_tmp164_);
			_tmp163_.application_id = g_variant_dup_string (_tmp165_, NULL);
			g_variant_unref (_tmp165_);
			_tmp166_ = g_variant_iter_next_value (&_tmp164_);
			_tmp163_.pin_position = g_variant_get_int32 (_tmp166_);
			g_variant_unref (_tmp166_);
			_tmp160_[_tmp160__length++] = _tmp163_;
			g_variant_unref (_tmp162_);
		}
		_tmp139_.applications_length1 = _tmp160__length1;
		_tmp139_.applications = _tmp160_;
		g_variant_unref (_tmp159_);
		_tmp136_[_tmp136__length++] = _tmp139_;
		g_variant_unref (_tmp138_);
	}
	_vala_serverList_length1 = _tmp136__length1;
	_vala_serverList = _tmp136_;
	g_variant_unref (_tmp135_);
	*serverList = _vala_serverList;
	*serverList_length1 = _vala_serverList_length1;
	g_object_unref (_reply_message);
}

static void
remote_login_service_proxy_get_cached_domains_for_server_async (RemoteLoginService* self,
                                                                const gchar* url,
                                                                GAsyncReadyCallback _callback_,
                                                                gpointer _user_data_)
{
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	G_DBUS_ERROR;
	G_IO_ERROR;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.canonical.RemoteLogin", "GetCachedDomainsForServer");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (url));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	if (_callback_ != NULL) {
		g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_task_new ((GObject *) self, NULL, _callback_, _user_data_));
	} else {
		g_dbus_message_set_flags (_message, G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED);
		g_dbus_connection_send_message (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	}
	g_object_unref (_message);
}

static void
remote_login_service_proxy_get_cached_domains_for_server_finish (RemoteLoginService* self,
                                                                 GAsyncResult* _res_,
                                                                 gchar*** domains,
                                                                 gint* domains_length1,
                                                                 GError** error)
{
	GAsyncResult *_inner_res;
	GDBusMessage *_reply_message;
	GVariant *_reply;
	GVariantIter _reply_iter;
	gchar** _vala_domains = NULL;
	gint _vala_domains_length1;
	GVariant* _tmp167_;
	gchar** _tmp168_;
	gint _tmp168__length;
	gint _tmp168__size;
	gint _tmp168__length1;
	GVariantIter _tmp169_;
	GVariant* _tmp170_;
	_inner_res = g_task_propagate_pointer ((GTask *) _res_, NULL);
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), _inner_res, error);
	g_object_unref (_inner_res);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	_reply = g_dbus_message_get_body (_reply_message);
	g_variant_iter_init (&_reply_iter, _reply);
	_vala_domains_length1 = 0;
	_tmp167_ = g_variant_iter_next_value (&_reply_iter);
	_tmp168_ = g_new (gchar*, 5);
	_tmp168__length = 0;
	_tmp168__size = 4;
	_tmp168__length1 = 0;
	g_variant_iter_init (&_tmp169_, _tmp167_);
	for (; (_tmp170_ = g_variant_iter_next_value (&_tmp169_)) != NULL; _tmp168__length1++) {
		if (_tmp168__size == _tmp168__length) {
			_tmp168__size = 2 * _tmp168__size;
			_tmp168_ = g_renew (gchar*, _tmp168_, _tmp168__size + 1);
		}
		_tmp168_[_tmp168__length++] = g_variant_dup_string (_tmp170_, NULL);
		g_variant_unref (_tmp170_);
	}
	_vala_domains_length1 = _tmp168__length1;
	_tmp168_[_tmp168__length] = NULL;
	_vala_domains = _tmp168_;
	g_variant_unref (_tmp167_);
	*domains = _vala_domains;
	*domains_length1 = _vala_domains_length1;
	g_object_unref (_reply_message);
}

static void
remote_login_service_proxy_set_last_used_server_async (RemoteLoginService* self,
                                                       const gchar* uccsUrl,
                                                       const gchar* serverUrl,
                                                       GAsyncReadyCallback _callback_,
                                                       gpointer _user_data_)
{
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	G_DBUS_ERROR;
	G_IO_ERROR;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.canonical.RemoteLogin", "SetLastUsedServer");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (uccsUrl));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (serverUrl));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	if (_callback_ != NULL) {
		g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_task_new ((GObject *) self, NULL, _callback_, _user_data_));
	} else {
		g_dbus_message_set_flags (_message, G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED);
		g_dbus_connection_send_message (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	}
	g_object_unref (_message);
}

static void
remote_login_service_proxy_set_last_used_server_finish (RemoteLoginService* self,
                                                        GAsyncResult* _res_,
                                                        GError** error)
{
	GAsyncResult *_inner_res;
	GDBusMessage *_reply_message;
	_inner_res = g_task_propagate_pointer ((GTask *) _res_, NULL);
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), _inner_res, error);
	g_object_unref (_inner_res);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}

static void
remote_login_service_proxy_remote_login_service_interface_init (RemoteLoginServiceIface* iface)
{
	iface->get_servers = remote_login_service_proxy_get_servers_async;
	iface->get_servers_finish = remote_login_service_proxy_get_servers_finish;
	iface->get_servers_for_login = remote_login_service_proxy_get_servers_for_login_async;
	iface->get_servers_for_login_finish = remote_login_service_proxy_get_servers_for_login_finish;
	iface->get_cached_domains_for_server = remote_login_service_proxy_get_cached_domains_for_server_async;
	iface->get_cached_domains_for_server_finish = remote_login_service_proxy_get_cached_domains_for_server_finish;
	iface->set_last_used_server = remote_login_service_proxy_set_last_used_server_async;
	iface->set_last_used_server_finish = remote_login_service_proxy_set_last_used_server_finish;
}

static void
_dbus_remote_login_service_get_servers (RemoteLoginService* self,
                                        GVariant* _parameters_,
                                        GDBusMethodInvocation* invocation)
{
	GVariantIter _arguments_iter;
	RemoteLoginServiceGetServersReadyData* _ready_data;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	_ready_data = g_slice_new0 (RemoteLoginServiceGetServersReadyData);
	_ready_data->_invocation_ = invocation;
	remote_login_service_get_servers (self, (GAsyncReadyCallback) _dbus_remote_login_service_get_servers_ready, _ready_data);
}

static void
_dbus_remote_login_service_get_servers_ready (GObject * source_object,
                                              GAsyncResult * _res_,
                                              gpointer _user_data_)
{
	RemoteLoginServiceGetServersReadyData* _ready_data;
	GDBusMethodInvocation* invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message = NULL;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	RemoteServer* serverList = NULL;
	gint serverList_length1 = 0;
	RemoteServer* _tmp171_;
	GVariantBuilder _tmp172_;
	gint _tmp173_;
	_ready_data = _user_data_;
	invocation = _ready_data->_invocation_;
	remote_login_service_get_servers_finish ((RemoteLoginService*) source_object, _res_, &serverList, &serverList_length1, &error);
	if (error) {
		g_dbus_method_invocation_take_error (invocation, error);
		goto _error;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_tmp171_ = serverList;
	g_variant_builder_init (&_tmp172_, G_VARIANT_TYPE ("a(sssba(sbva{sv})a(si))"));
	for (_tmp173_ = 0; _tmp173_ < serverList_length1; _tmp173_++) {
		GVariantBuilder _tmp174_;
		RemoteServerField* _tmp175_;
		GVariantBuilder _tmp176_;
		gint _tmp177_;
		RemoteServerApplication* _tmp183_;
		GVariantBuilder _tmp184_;
		gint _tmp185_;
		g_variant_builder_init (&_tmp174_, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_tmp174_, g_variant_new_string ((*_tmp171_).type));
		g_variant_builder_add_value (&_tmp174_, g_variant_new_string ((*_tmp171_).name));
		g_variant_builder_add_value (&_tmp174_, g_variant_new_string ((*_tmp171_).url));
		g_variant_builder_add_value (&_tmp174_, g_variant_new_boolean ((*_tmp171_).last_used_server));
		_tmp175_ = (*_tmp171_).fields;
		g_variant_builder_init (&_tmp176_, G_VARIANT_TYPE ("a(sbva{sv})"));
		for (_tmp177_ = 0; _tmp177_ < (*_tmp171_).fields_length1; _tmp177_++) {
			GVariantBuilder _tmp178_;
			GVariantBuilder _tmp179_;
			GHashTableIter _tmp180_;
			gpointer _tmp181_;
			gpointer _tmp182_;
			g_variant_builder_init (&_tmp178_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp178_, g_variant_new_string ((*_tmp175_).type));
			g_variant_builder_add_value (&_tmp178_, g_variant_new_boolean ((*_tmp175_).required));
			g_variant_builder_add_value (&_tmp178_, g_variant_new_variant ((*_tmp175_).default_value));
			g_hash_table_iter_init (&_tmp180_, (*_tmp175_).properties);
			g_variant_builder_init (&_tmp179_, G_VARIANT_TYPE ("a{sv}"));
			while (g_hash_table_iter_next (&_tmp180_, &_tmp181_, &_tmp182_)) {
				gchar* _key;
				GVariant* _value;
				_key = (gchar*) _tmp181_;
				_value = (GVariant*) _tmp182_;
				g_variant_builder_add (&_tmp179_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
			}
			g_variant_builder_add_value (&_tmp178_, g_variant_builder_end (&_tmp179_));
			g_variant_builder_add_value (&_tmp176_, g_variant_builder_end (&_tmp178_));
			_tmp175_++;
		}
		g_variant_builder_add_value (&_tmp174_, g_variant_builder_end (&_tmp176_));
		_tmp183_ = (*_tmp171_).applications;
		g_variant_builder_init (&_tmp184_, G_VARIANT_TYPE ("a(si)"));
		for (_tmp185_ = 0; _tmp185_ < (*_tmp171_).applications_length1; _tmp185_++) {
			GVariantBuilder _tmp186_;
			g_variant_builder_init (&_tmp186_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp186_, g_variant_new_string ((*_tmp183_).application_id));
			g_variant_builder_add_value (&_tmp186_, g_variant_new_int32 ((*_tmp183_).pin_position));
			g_variant_builder_add_value (&_tmp184_, g_variant_builder_end (&_tmp186_));
			_tmp183_++;
		}
		g_variant_builder_add_value (&_tmp174_, g_variant_builder_end (&_tmp184_));
		g_variant_builder_add_value (&_tmp172_, g_variant_builder_end (&_tmp174_));
		_tmp171_++;
	}
	g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp172_));
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
	_error:
	serverList = (_vala_RemoteServer_array_free (serverList, serverList_length1), NULL);
	g_slice_free (RemoteLoginServiceGetServersReadyData, _ready_data);
}

static void
_dbus_remote_login_service_get_servers_for_login (RemoteLoginService* self,
                                                  GVariant* _parameters_,
                                                  GDBusMethodInvocation* invocation)
{
	GVariantIter _arguments_iter;
	RemoteLoginServiceGetServersForLoginReadyData* _ready_data;
	GVariant* _tmp187_;
	GVariant* _tmp188_;
	GVariant* _tmp189_;
	GVariant* _tmp190_;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	_ready_data = g_slice_new0 (RemoteLoginServiceGetServersForLoginReadyData);
	_ready_data->_invocation_ = invocation;
	_tmp187_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->url = g_variant_dup_string (_tmp187_, NULL);
	g_variant_unref (_tmp187_);
	_tmp188_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->emailAddress = g_variant_dup_string (_tmp188_, NULL);
	g_variant_unref (_tmp188_);
	_tmp189_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->password = g_variant_dup_string (_tmp189_, NULL);
	g_variant_unref (_tmp189_);
	_tmp190_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->allowCache = g_variant_get_boolean (_tmp190_);
	g_variant_unref (_tmp190_);
	remote_login_service_get_servers_for_login (self, _ready_data->url, _ready_data->emailAddress, _ready_data->password, _ready_data->allowCache, (GAsyncReadyCallback) _dbus_remote_login_service_get_servers_for_login_ready, _ready_data);
	_error:
	;
}

static void
_dbus_remote_login_service_get_servers_for_login_ready (GObject * source_object,
                                                        GAsyncResult * _res_,
                                                        gpointer _user_data_)
{
	RemoteLoginServiceGetServersForLoginReadyData* _ready_data;
	GDBusMethodInvocation* invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message = NULL;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	gboolean loginSuccess = FALSE;
	gchar* dataType = NULL;
	RemoteServer* serverList = NULL;
	gint serverList_length1 = 0;
	RemoteServer* _tmp191_;
	GVariantBuilder _tmp192_;
	gint _tmp193_;
	_ready_data = _user_data_;
	invocation = _ready_data->_invocation_;
	remote_login_service_get_servers_for_login_finish ((RemoteLoginService*) source_object, _res_, &loginSuccess, &dataType, &serverList, &serverList_length1, &error);
	if (error) {
		g_dbus_method_invocation_take_error (invocation, error);
		goto _error;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (loginSuccess));
	g_variant_builder_add_value (&_reply_builder, g_variant_new_string (dataType));
	_tmp191_ = serverList;
	g_variant_builder_init (&_tmp192_, G_VARIANT_TYPE ("a(sssba(sbva{sv})a(si))"));
	for (_tmp193_ = 0; _tmp193_ < serverList_length1; _tmp193_++) {
		GVariantBuilder _tmp194_;
		RemoteServerField* _tmp195_;
		GVariantBuilder _tmp196_;
		gint _tmp197_;
		RemoteServerApplication* _tmp203_;
		GVariantBuilder _tmp204_;
		gint _tmp205_;
		g_variant_builder_init (&_tmp194_, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_tmp194_, g_variant_new_string ((*_tmp191_).type));
		g_variant_builder_add_value (&_tmp194_, g_variant_new_string ((*_tmp191_).name));
		g_variant_builder_add_value (&_tmp194_, g_variant_new_string ((*_tmp191_).url));
		g_variant_builder_add_value (&_tmp194_, g_variant_new_boolean ((*_tmp191_).last_used_server));
		_tmp195_ = (*_tmp191_).fields;
		g_variant_builder_init (&_tmp196_, G_VARIANT_TYPE ("a(sbva{sv})"));
		for (_tmp197_ = 0; _tmp197_ < (*_tmp191_).fields_length1; _tmp197_++) {
			GVariantBuilder _tmp198_;
			GVariantBuilder _tmp199_;
			GHashTableIter _tmp200_;
			gpointer _tmp201_;
			gpointer _tmp202_;
			g_variant_builder_init (&_tmp198_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp198_, g_variant_new_string ((*_tmp195_).type));
			g_variant_builder_add_value (&_tmp198_, g_variant_new_boolean ((*_tmp195_).required));
			g_variant_builder_add_value (&_tmp198_, g_variant_new_variant ((*_tmp195_).default_value));
			g_hash_table_iter_init (&_tmp200_, (*_tmp195_).properties);
			g_variant_builder_init (&_tmp199_, G_VARIANT_TYPE ("a{sv}"));
			while (g_hash_table_iter_next (&_tmp200_, &_tmp201_, &_tmp202_)) {
				gchar* _key;
				GVariant* _value;
				_key = (gchar*) _tmp201_;
				_value = (GVariant*) _tmp202_;
				g_variant_builder_add (&_tmp199_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
			}
			g_variant_builder_add_value (&_tmp198_, g_variant_builder_end (&_tmp199_));
			g_variant_builder_add_value (&_tmp196_, g_variant_builder_end (&_tmp198_));
			_tmp195_++;
		}
		g_variant_builder_add_value (&_tmp194_, g_variant_builder_end (&_tmp196_));
		_tmp203_ = (*_tmp191_).applications;
		g_variant_builder_init (&_tmp204_, G_VARIANT_TYPE ("a(si)"));
		for (_tmp205_ = 0; _tmp205_ < (*_tmp191_).applications_length1; _tmp205_++) {
			GVariantBuilder _tmp206_;
			g_variant_builder_init (&_tmp206_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp206_, g_variant_new_string ((*_tmp203_).application_id));
			g_variant_builder_add_value (&_tmp206_, g_variant_new_int32 ((*_tmp203_).pin_position));
			g_variant_builder_add_value (&_tmp204_, g_variant_builder_end (&_tmp206_));
			_tmp203_++;
		}
		g_variant_builder_add_value (&_tmp194_, g_variant_builder_end (&_tmp204_));
		g_variant_builder_add_value (&_tmp192_, g_variant_builder_end (&_tmp194_));
		_tmp191_++;
	}
	g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp192_));
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
	_error:
	_g_free0 (_ready_data->url);
	_g_free0 (_ready_data->emailAddress);
	_g_free0 (_ready_data->password);
	_g_free0 (dataType);
	serverList = (_vala_RemoteServer_array_free (serverList, serverList_length1), NULL);
	g_slice_free (RemoteLoginServiceGetServersForLoginReadyData, _ready_data);
}

static void
_dbus_remote_login_service_get_cached_domains_for_server (RemoteLoginService* self,
                                                          GVariant* _parameters_,
                                                          GDBusMethodInvocation* invocation)
{
	GVariantIter _arguments_iter;
	RemoteLoginServiceGetCachedDomainsForServerReadyData* _ready_data;
	GVariant* _tmp207_;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	_ready_data = g_slice_new0 (RemoteLoginServiceGetCachedDomainsForServerReadyData);
	_ready_data->_invocation_ = invocation;
	_tmp207_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->url = g_variant_dup_string (_tmp207_, NULL);
	g_variant_unref (_tmp207_);
	remote_login_service_get_cached_domains_for_server (self, _ready_data->url, (GAsyncReadyCallback) _dbus_remote_login_service_get_cached_domains_for_server_ready, _ready_data);
	_error:
	;
}

static void
_dbus_remote_login_service_get_cached_domains_for_server_ready (GObject * source_object,
                                                                GAsyncResult * _res_,
                                                                gpointer _user_data_)
{
	RemoteLoginServiceGetCachedDomainsForServerReadyData* _ready_data;
	GDBusMethodInvocation* invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message = NULL;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	gchar** domains = NULL;
	gint domains_length1 = 0;
	gchar** _tmp208_;
	GVariantBuilder _tmp209_;
	gint _tmp210_;
	_ready_data = _user_data_;
	invocation = _ready_data->_invocation_;
	remote_login_service_get_cached_domains_for_server_finish ((RemoteLoginService*) source_object, _res_, &domains, &domains_length1, &error);
	if (error) {
		g_dbus_method_invocation_take_error (invocation, error);
		goto _error;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_tmp208_ = domains;
	g_variant_builder_init (&_tmp209_, G_VARIANT_TYPE ("as"));
	for (_tmp210_ = 0; _tmp210_ < domains_length1; _tmp210_++) {
		g_variant_builder_add_value (&_tmp209_, g_variant_new_string (*_tmp208_));
		_tmp208_++;
	}
	g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp209_));
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
	_error:
	_g_free0 (_ready_data->url);
	domains = (_vala_array_free (domains, domains_length1, (GDestroyNotify) g_free), NULL);
	g_slice_free (RemoteLoginServiceGetCachedDomainsForServerReadyData, _ready_data);
}

static void
_dbus_remote_login_service_set_last_used_server (RemoteLoginService* self,
                                                 GVariant* _parameters_,
                                                 GDBusMethodInvocation* invocation)
{
	GVariantIter _arguments_iter;
	RemoteLoginServiceSetLastUsedServerReadyData* _ready_data;
	GVariant* _tmp211_;
	GVariant* _tmp212_;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	_ready_data = g_slice_new0 (RemoteLoginServiceSetLastUsedServerReadyData);
	_ready_data->_invocation_ = invocation;
	_tmp211_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->uccsUrl = g_variant_dup_string (_tmp211_, NULL);
	g_variant_unref (_tmp211_);
	_tmp212_ = g_variant_iter_next_value (&_arguments_iter);
	_ready_data->serverUrl = g_variant_dup_string (_tmp212_, NULL);
	g_variant_unref (_tmp212_);
	remote_login_service_set_last_used_server (self, _ready_data->uccsUrl, _ready_data->serverUrl, (GAsyncReadyCallback) _dbus_remote_login_service_set_last_used_server_ready, _ready_data);
	_error:
	;
}

static void
_dbus_remote_login_service_set_last_used_server_ready (GObject * source_object,
                                                       GAsyncResult * _res_,
                                                       gpointer _user_data_)
{
	RemoteLoginServiceSetLastUsedServerReadyData* _ready_data;
	GDBusMethodInvocation* invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message = NULL;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	_ready_data = _user_data_;
	invocation = _ready_data->_invocation_;
	remote_login_service_set_last_used_server_finish ((RemoteLoginService*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_take_error (invocation, error);
		goto _error;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
	_error:
	_g_free0 (_ready_data->uccsUrl);
	_g_free0 (_ready_data->serverUrl);
	g_slice_free (RemoteLoginServiceSetLastUsedServerReadyData, _ready_data);
}

static void
remote_login_service_dbus_interface_method_call (GDBusConnection* connection,
                                                 const gchar* sender,
                                                 const gchar* object_path,
                                                 const gchar* interface_name,
                                                 const gchar* method_name,
                                                 GVariant* parameters,
                                                 GDBusMethodInvocation* invocation,
                                                 gpointer user_data)
{
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	if (strcmp (method_name, "GetServers") == 0) {
		_dbus_remote_login_service_get_servers (object, parameters, invocation);
	} else if (strcmp (method_name, "GetServersForLogin") == 0) {
		_dbus_remote_login_service_get_servers_for_login (object, parameters, invocation);
	} else if (strcmp (method_name, "GetCachedDomainsForServer") == 0) {
		_dbus_remote_login_service_get_cached_domains_for_server (object, parameters, invocation);
	} else if (strcmp (method_name, "SetLastUsedServer") == 0) {
		_dbus_remote_login_service_set_last_used_server (object, parameters, invocation);
	} else {
		g_object_unref (invocation);
	}
}

static GVariant*
remote_login_service_dbus_interface_get_property (GDBusConnection* connection,
                                                  const gchar* sender,
                                                  const gchar* object_path,
                                                  const gchar* interface_name,
                                                  const gchar* property_name,
                                                  GError** error,
                                                  gpointer user_data)
{
	return NULL;
}

static gboolean
remote_login_service_dbus_interface_set_property (GDBusConnection* connection,
                                                  const gchar* sender,
                                                  const gchar* object_path,
                                                  const gchar* interface_name,
                                                  const gchar* property_name,
                                                  GVariant* value,
                                                  GError** error,
                                                  gpointer user_data)
{
	return FALSE;
}

static void
_dbus_remote_login_service_servers_updated (GObject* _sender,
                                            RemoteServer* serverList,
                                            gint serverList_length1,
                                            gpointer* _data)
{
	GDBusConnection * _connection;
	const gchar * _path;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	RemoteServer* _tmp213_;
	GVariantBuilder _tmp214_;
	gint _tmp215_;
	_connection = _data[1];
	_path = _data[2];
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_tmp213_ = serverList;
	g_variant_builder_init (&_tmp214_, G_VARIANT_TYPE ("a(sssba(sbva{sv})a(si))"));
	for (_tmp215_ = 0; _tmp215_ < serverList_length1; _tmp215_++) {
		GVariantBuilder _tmp216_;
		RemoteServerField* _tmp217_;
		GVariantBuilder _tmp218_;
		gint _tmp219_;
		RemoteServerApplication* _tmp225_;
		GVariantBuilder _tmp226_;
		gint _tmp227_;
		g_variant_builder_init (&_tmp216_, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_tmp216_, g_variant_new_string ((*_tmp213_).type));
		g_variant_builder_add_value (&_tmp216_, g_variant_new_string ((*_tmp213_).name));
		g_variant_builder_add_value (&_tmp216_, g_variant_new_string ((*_tmp213_).url));
		g_variant_builder_add_value (&_tmp216_, g_variant_new_boolean ((*_tmp213_).last_used_server));
		_tmp217_ = (*_tmp213_).fields;
		g_variant_builder_init (&_tmp218_, G_VARIANT_TYPE ("a(sbva{sv})"));
		for (_tmp219_ = 0; _tmp219_ < (*_tmp213_).fields_length1; _tmp219_++) {
			GVariantBuilder _tmp220_;
			GVariantBuilder _tmp221_;
			GHashTableIter _tmp222_;
			gpointer _tmp223_;
			gpointer _tmp224_;
			g_variant_builder_init (&_tmp220_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp220_, g_variant_new_string ((*_tmp217_).type));
			g_variant_builder_add_value (&_tmp220_, g_variant_new_boolean ((*_tmp217_).required));
			g_variant_builder_add_value (&_tmp220_, g_variant_new_variant ((*_tmp217_).default_value));
			g_hash_table_iter_init (&_tmp222_, (*_tmp217_).properties);
			g_variant_builder_init (&_tmp221_, G_VARIANT_TYPE ("a{sv}"));
			while (g_hash_table_iter_next (&_tmp222_, &_tmp223_, &_tmp224_)) {
				gchar* _key;
				GVariant* _value;
				_key = (gchar*) _tmp223_;
				_value = (GVariant*) _tmp224_;
				g_variant_builder_add (&_tmp221_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
			}
			g_variant_builder_add_value (&_tmp220_, g_variant_builder_end (&_tmp221_));
			g_variant_builder_add_value (&_tmp218_, g_variant_builder_end (&_tmp220_));
			_tmp217_++;
		}
		g_variant_builder_add_value (&_tmp216_, g_variant_builder_end (&_tmp218_));
		_tmp225_ = (*_tmp213_).applications;
		g_variant_builder_init (&_tmp226_, G_VARIANT_TYPE ("a(si)"));
		for (_tmp227_ = 0; _tmp227_ < (*_tmp213_).applications_length1; _tmp227_++) {
			GVariantBuilder _tmp228_;
			g_variant_builder_init (&_tmp228_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp228_, g_variant_new_string ((*_tmp225_).application_id));
			g_variant_builder_add_value (&_tmp228_, g_variant_new_int32 ((*_tmp225_).pin_position));
			g_variant_builder_add_value (&_tmp226_, g_variant_builder_end (&_tmp228_));
			_tmp225_++;
		}
		g_variant_builder_add_value (&_tmp216_, g_variant_builder_end (&_tmp226_));
		g_variant_builder_add_value (&_tmp214_, g_variant_builder_end (&_tmp216_));
		_tmp213_++;
	}
	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp214_));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_connection_emit_signal (_connection, NULL, _path, "com.canonical.RemoteLogin", "ServersUpdated", _arguments, NULL);
}

static void
_dbus_remote_login_service_login_servers_updated (GObject* _sender,
                                                  const gchar* url,
                                                  const gchar* emailAddress,
                                                  const gchar* dataType,
                                                  RemoteServer* serverList,
                                                  gint serverList_length1,
                                                  gpointer* _data)
{
	GDBusConnection * _connection;
	const gchar * _path;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	RemoteServer* _tmp229_;
	GVariantBuilder _tmp230_;
	gint _tmp231_;
	_connection = _data[1];
	_path = _data[2];
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (url));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (emailAddress));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (dataType));
	_tmp229_ = serverList;
	g_variant_builder_init (&_tmp230_, G_VARIANT_TYPE ("a(sssba(sbva{sv})a(si))"));
	for (_tmp231_ = 0; _tmp231_ < serverList_length1; _tmp231_++) {
		GVariantBuilder _tmp232_;
		RemoteServerField* _tmp233_;
		GVariantBuilder _tmp234_;
		gint _tmp235_;
		RemoteServerApplication* _tmp241_;
		GVariantBuilder _tmp242_;
		gint _tmp243_;
		g_variant_builder_init (&_tmp232_, G_VARIANT_TYPE_TUPLE);
		g_variant_builder_add_value (&_tmp232_, g_variant_new_string ((*_tmp229_).type));
		g_variant_builder_add_value (&_tmp232_, g_variant_new_string ((*_tmp229_).name));
		g_variant_builder_add_value (&_tmp232_, g_variant_new_string ((*_tmp229_).url));
		g_variant_builder_add_value (&_tmp232_, g_variant_new_boolean ((*_tmp229_).last_used_server));
		_tmp233_ = (*_tmp229_).fields;
		g_variant_builder_init (&_tmp234_, G_VARIANT_TYPE ("a(sbva{sv})"));
		for (_tmp235_ = 0; _tmp235_ < (*_tmp229_).fields_length1; _tmp235_++) {
			GVariantBuilder _tmp236_;
			GVariantBuilder _tmp237_;
			GHashTableIter _tmp238_;
			gpointer _tmp239_;
			gpointer _tmp240_;
			g_variant_builder_init (&_tmp236_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp236_, g_variant_new_string ((*_tmp233_).type));
			g_variant_builder_add_value (&_tmp236_, g_variant_new_boolean ((*_tmp233_).required));
			g_variant_builder_add_value (&_tmp236_, g_variant_new_variant ((*_tmp233_).default_value));
			g_hash_table_iter_init (&_tmp238_, (*_tmp233_).properties);
			g_variant_builder_init (&_tmp237_, G_VARIANT_TYPE ("a{sv}"));
			while (g_hash_table_iter_next (&_tmp238_, &_tmp239_, &_tmp240_)) {
				gchar* _key;
				GVariant* _value;
				_key = (gchar*) _tmp239_;
				_value = (GVariant*) _tmp240_;
				g_variant_builder_add (&_tmp237_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
			}
			g_variant_builder_add_value (&_tmp236_, g_variant_builder_end (&_tmp237_));
			g_variant_builder_add_value (&_tmp234_, g_variant_builder_end (&_tmp236_));
			_tmp233_++;
		}
		g_variant_builder_add_value (&_tmp232_, g_variant_builder_end (&_tmp234_));
		_tmp241_ = (*_tmp229_).applications;
		g_variant_builder_init (&_tmp242_, G_VARIANT_TYPE ("a(si)"));
		for (_tmp243_ = 0; _tmp243_ < (*_tmp229_).applications_length1; _tmp243_++) {
			GVariantBuilder _tmp244_;
			g_variant_builder_init (&_tmp244_, G_VARIANT_TYPE_TUPLE);
			g_variant_builder_add_value (&_tmp244_, g_variant_new_string ((*_tmp241_).application_id));
			g_variant_builder_add_value (&_tmp244_, g_variant_new_int32 ((*_tmp241_).pin_position));
			g_variant_builder_add_value (&_tmp242_, g_variant_builder_end (&_tmp244_));
			_tmp241_++;
		}
		g_variant_builder_add_value (&_tmp232_, g_variant_builder_end (&_tmp242_));
		g_variant_builder_add_value (&_tmp230_, g_variant_builder_end (&_tmp232_));
		_tmp229_++;
	}
	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp230_));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_connection_emit_signal (_connection, NULL, _path, "com.canonical.RemoteLogin", "LoginServersUpdated", _arguments, NULL);
}

static void
_dbus_remote_login_service_login_changed (GObject* _sender,
                                          const gchar* url,
                                          const gchar* emailAddress,
                                          gpointer* _data)
{
	GDBusConnection * _connection;
	const gchar * _path;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_connection = _data[1];
	_path = _data[2];
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (url));
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (emailAddress));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_connection_emit_signal (_connection, NULL, _path, "com.canonical.RemoteLogin", "LoginChanged", _arguments, NULL);
}

guint
remote_login_service_register_object (gpointer object,
                                      GDBusConnection* connection,
                                      const gchar* path,
                                      GError** error)
{
	guint result;
	gpointer *data;
	data = g_new (gpointer, 3);
	data[0] = g_object_ref (object);
	data[1] = g_object_ref (connection);
	data[2] = g_strdup (path);
	result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_remote_login_service_dbus_interface_info), &_remote_login_service_dbus_interface_vtable, data, _remote_login_service_unregister_object, error);
	if (!result) {
		return 0;
	}
	g_signal_connect (object, "servers-updated", (GCallback) _dbus_remote_login_service_servers_updated, data);
	g_signal_connect (object, "login-servers-updated", (GCallback) _dbus_remote_login_service_login_servers_updated, data);
	g_signal_connect (object, "login-changed", (GCallback) _dbus_remote_login_service_login_changed, data);
	return result;
}

static void
_remote_login_service_unregister_object (gpointer user_data)
{
	gpointer* data;
	data = user_data;
	g_signal_handlers_disconnect_by_func (data[0], _dbus_remote_login_service_servers_updated, data);
	g_signal_handlers_disconnect_by_func (data[0], _dbus_remote_login_service_login_servers_updated, data);
	g_signal_handlers_disconnect_by_func (data[0], _dbus_remote_login_service_login_changed, data);
	g_object_unref (data[0]);
	g_object_unref (data[1]);
	g_free (data[2]);
	g_free (data);
}

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);
}

static inline gpointer
_vala_memdup2 (gconstpointer mem,
               gsize byte_size)
{
	gpointer new_mem;
	if (mem && byte_size != 0) {
		new_mem = g_malloc (byte_size);
		memcpy (new_mem, mem, byte_size);
	} else {
		new_mem = NULL;
	}
	return new_mem;
}

