From 3097fd46f5e7abe5c3675e390048099dc8a8c80f Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 30 Oct 2017 17:06:54 -0400 Subject: [PATCH 01/24] Remove library makos --- templates/admin/library/grid.mako | 1 - templates/admin/library/new_library.mako | 44 -- .../galaxy/library/common/browse_library.mako | 615 ----------------- .../library/common/browse_library_opt.mako | 621 ------------------ .../webapps/galaxy/library/common/common.mako | 491 -------------- .../galaxy/library/common/folder_info.mako | 61 -- .../library/common/folder_permissions.mako | 19 - .../common/import_datasets_to_histories.mako | 104 --- .../galaxy/library/common/ldda_edit_info.mako | 181 ----- .../galaxy/library/common/ldda_info.mako | 311 --------- .../library/common/ldda_permissions.mako | 70 -- .../library/common/library_dataset_info.mako | 70 -- .../common/library_dataset_permissions.mako | 25 - .../library_dataset_search_results.mako | 137 ---- .../galaxy/library/common/library_info.mako | 116 ---- .../library/common/library_item_info.mako | 15 - .../library/common/library_permissions.mako | 18 - .../library/common/move_library_item.mako | 106 --- .../galaxy/library/common/new_folder.mako | 38 -- .../webapps/galaxy/library/common/upload.mako | 36 - templates/webapps/galaxy/library/grid.mako | 1 - templates/webapps/galaxy/library/index.mako | 15 - 22 files changed, 3095 deletions(-) delete mode 100644 templates/admin/library/grid.mako delete mode 100644 templates/admin/library/new_library.mako delete mode 100644 templates/webapps/galaxy/library/common/browse_library.mako delete mode 100644 templates/webapps/galaxy/library/common/browse_library_opt.mako delete mode 100644 templates/webapps/galaxy/library/common/common.mako delete mode 100644 templates/webapps/galaxy/library/common/folder_info.mako delete mode 100644 templates/webapps/galaxy/library/common/folder_permissions.mako delete mode 100644 templates/webapps/galaxy/library/common/import_datasets_to_histories.mako delete mode 100644 templates/webapps/galaxy/library/common/ldda_edit_info.mako delete mode 100644 templates/webapps/galaxy/library/common/ldda_info.mako delete mode 100644 templates/webapps/galaxy/library/common/ldda_permissions.mako delete mode 100644 templates/webapps/galaxy/library/common/library_dataset_info.mako delete mode 100644 templates/webapps/galaxy/library/common/library_dataset_permissions.mako delete mode 100644 templates/webapps/galaxy/library/common/library_dataset_search_results.mako delete mode 100644 templates/webapps/galaxy/library/common/library_info.mako delete mode 100644 templates/webapps/galaxy/library/common/library_item_info.mako delete mode 100644 templates/webapps/galaxy/library/common/library_permissions.mako delete mode 100644 templates/webapps/galaxy/library/common/move_library_item.mako delete mode 100644 templates/webapps/galaxy/library/common/new_folder.mako delete mode 100644 templates/webapps/galaxy/library/common/upload.mako delete mode 100644 templates/webapps/galaxy/library/grid.mako delete mode 100644 templates/webapps/galaxy/library/index.mako diff --git a/templates/admin/library/grid.mako b/templates/admin/library/grid.mako deleted file mode 100644 index 6a41b688c5ef..000000000000 --- a/templates/admin/library/grid.mako +++ /dev/null @@ -1 +0,0 @@ -<%inherit file="/grid_base.mako"/> diff --git a/templates/admin/library/new_library.mako b/templates/admin/library/new_library.mako deleted file mode 100644 index 683fdad64844..000000000000 --- a/templates/admin/library/new_library.mako +++ /dev/null @@ -1,44 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> - -%if message: - ${render_msg( message, status )} -%endif - -
-
Create a new data library
-
-
-
- -
- -
-
-
-
- -
- -
-
- Displayed when browsing all libraries -
-
-
-
- -
- -
-
- Displayed when browsing this library -
-
-
-
- -
-
-
-
diff --git a/templates/webapps/galaxy/library/common/browse_library.mako b/templates/webapps/galaxy/library/common/browse_library.mako deleted file mode 100644 index a9668388f5e0..000000000000 --- a/templates/webapps/galaxy/library/common/browse_library.mako +++ /dev/null @@ -1,615 +0,0 @@ -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/library/common/library_item_info.mako" import="render_library_item_info" /> -<%namespace file="/library/common/common.mako" import="render_actions_on_multiple_items" /> -<%namespace file="/library/common/common.mako" import="render_compression_types_help" /> -<%namespace file="/library/common/common.mako" import="common_javascripts" /> - -<%! - def inherit(context): - if context.get('use_panels'): - return '/webapps/galaxy/base_panels.mako' - else: - return '/base.mako' -%> -<%inherit file="${inherit(context)}"/> - -<%def name="init()"> -<% - self.has_left_panel=False - self.has_right_panel=False - self.message_box_visible=False - self.active_view="user" - self.overlay_visible=False - self.has_accessible_datasets = False -%> - - -## -## Override methods from base.mako and base_panels.mako -## -<%def name="center_panel()"> -
-
- ${render_content()} -
-
- - -## Render the grid's basic elements. Each of these elements can be subclassed. -<%def name="body()"> - ${render_content()} - - -<%def name="title()">Browse data library -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "library" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jstorage")} - ${common_javascripts()} - ${self.grid_javascripts()} - - -<%def name="grid_javascripts()"> - - - -<%def name="render_dataset( cntrller, ldda, library_dataset, selected, library, folder, pad, parent, row_counter, tracked_datasets, show_deleted=False, simple=False )"> - <% - ## The received ldda must always be a LibraryDatasetDatasetAssociation object. The object id passed to methods - ## from the drop down menu should be the ldda id to prevent id collision ( which could happen when displaying - ## children, which are always lddas ). We also need to make sure we're displaying the latest version of this - ## library_dataset, so we display the attributes from the ldda. - - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - - if ldda == library_dataset.library_dataset_dataset_association: - current_version = True - if is_admin: - can_modify = can_manage = True - elif cntrller in [ 'library', 'requests' ]: - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, library_dataset ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, library_dataset ) - else: - can_modify = can_manage = False - else: - current_version = False - if current_version and ldda.state not in ( 'ok', 'error', 'empty', 'deleted', 'discarded' ): - tracked_datasets[ldda.id] = ldda.state - info_association, inherited = ldda.get_info_association( restrict=True ) - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - %> - %if current_version and ( not ldda.library_dataset.deleted or show_deleted ): - - - - %if simple: - - %else: - - %if not library.deleted: -
- %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify: - Edit information - Move this dataset - %else: - View information - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify and not info_association: - Use template - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify and info_association: - Edit template - Unuse template - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_manage: - %if not trans.app.security_agent.dataset_is_public( ldda.dataset ): - Make public - %endif - Edit permissions - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify: - Upload a new version of this dataset - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and ldda.has_data: - Import this dataset into selected histories - Download this dataset - %endif - %if can_modify: - %if not library.deleted and not branch_deleted( folder ) and not ldda.library_dataset.deleted: - Delete this dataset - %elif not library.deleted and not branch_deleted( folder ) and not ldda.library_dataset.purged and ldda.library_dataset.deleted: - Undelete this dataset - %endif - %endif -
- %endif - %endif - - % if not simple: - ${render_library_item_info( ldda )} - ${ldda.extension | h} - % endif - ${util.unicodify(ldda.create_time.strftime( trans.app.config.pretty_datetime_format )) | h} - ${ldda.get_size( nice_size=True ) | h} - - <% - my_row = row_counter.count - row_counter.increment() - %> - %endif - - -<%def name="render_folder( cntrller, folder, folder_pad, created_ldda_ids, library, hidden_folder_ids, tracked_datasets, show_deleted=False, parent=None, row_counter=None, root_folder=False, simple=False )"> - <% - from galaxy.webapps.galaxy.controllers.library_common import active_folders, active_folders_and_library_datasets, activatable_folders_and_library_datasets, branch_deleted - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - has_accessible_library_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, folder, trans.user, current_user_roles, search_downward=False ) - - if root_folder: - pad = folder_pad - expander = h.url_for("/static/images/silk/resultset_bottom.png") - folder_img = h.url_for("/static/images/silk/folder_page.png") - else: - pad = folder_pad + 20 - expander = h.url_for("/static/images/silk/resultset_next.png") - folder_img = h.url_for("/static/images/silk/folder.png") - if created_ldda_ids: - created_ldda_ids = util.listify( created_ldda_ids ) - if str( folder.id ) in hidden_folder_ids: - return "" - my_row = None - if is_admin: - can_add = can_modify = can_manage = True - elif cntrller in [ 'library' ]: - can_access, folder_ids = trans.app.security_agent.check_folder_contents( trans.user, current_user_roles, folder ) - if not can_access: - can_show, folder_ids = \ - trans.app.security_agent.show_library_item( trans.user, - current_user_roles, - folder, - [ trans.app.security_agent.permitted_actions.LIBRARY_ADD, - trans.app.security_agent.permitted_actions.LIBRARY_MODIFY, - trans.app.security_agent.permitted_actions.LIBRARY_MANAGE ] ) - if not can_show: - return "" - can_add = trans.app.security_agent.can_add_library_item( current_user_roles, folder ) - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, folder ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, folder ) - else: - can_add = can_modify = can_manage = False - - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - info_association, inherited = folder.get_info_association( restrict=True ) - %> - %if not root_folder and ( not folder.deleted or show_deleted ): - <% encoded_id = trans.security.encode_id( folder.id ) %> - - - - - - - %if not library.deleted: -
- %if not branch_deleted( folder ) and can_add: - Add datasets - Add sub-folder - %endif - %if not branch_deleted( folder ): - %if has_accessible_library_datasets: - Select datasets for import into selected histories - %endif - %if can_modify: - Edit information - Move this folder - %else: - View information - %endif - %endif - %if not branch_deleted( folder ) and can_modify and not info_association: - Use template - %endif - %if not branch_deleted( folder ) and can_modify and info_association: - Edit template - Unuse template - %endif - %if not branch_deleted( folder ) and can_manage: - %if not trans.app.security_agent.folder_is_public( folder ): - Make public - %endif - Edit permissions - %endif - %if can_modify: - %if not library.deleted and not folder.deleted: - Delete this folder - %elif not library.deleted and folder.deleted and not folder.purged: - Undelete this folder - %endif - %endif -
- %endif - - %if folder.description: - ${folder.description | h} - %endif - - - <% - my_row = row_counter.count - row_counter.increment() - %> - %endif - <% - if show_deleted: - sub_folders, library_datasets = activatable_folders_and_library_datasets( trans, folder ) - else: - sub_folders, library_datasets = active_folders_and_library_datasets( trans, folder ) - %> - %if is_admin: - %for sub_folder in sub_folders: - ${render_folder( cntrller, sub_folder, pad, created_ldda_ids, library, [], tracked_datasets, show_deleted=show_deleted, parent=my_row, row_counter=row_counter, root_folder=False )} - %endfor - %for library_dataset in library_datasets: - <% - ldda = library_dataset.library_dataset_dataset_association - if ldda: - # There should always be an ldda, but some users running their own instances have reported that - # some of their LibraryDatasets have no associated lddas - selected = created_ldda_ids and str( ldda.id ) in created_ldda_ids - %> - %if ldda: - ${render_dataset( cntrller, ldda, library_dataset, selected, library, folder, pad, my_row, row_counter, tracked_datasets, show_deleted=show_deleted )} - %endif - %endfor - %else: - %for sub_folder in sub_folders: - ${render_folder( cntrller, sub_folder, pad, created_ldda_ids, library, hidden_folder_ids, tracked_datasets, show_deleted=show_deleted, parent=my_row, row_counter=row_counter, root_folder=False, simple=simple )} - %endfor - %for library_dataset in library_datasets: - <% - ldda = library_dataset.library_dataset_dataset_association - if ldda: - # There should always be an ldda, but some users running their own instances have reported that - # some of their LibraryDatasets have no associated lddas - can_access = trans.app.security_agent.can_access_dataset( current_user_roles, ldda.dataset ) - selected = created_ldda_ids and str( ldda.id ) in created_ldda_ids - else: - can_access = False - %> - %if can_access: - ${render_dataset( cntrller, ldda, library_dataset, selected, library, folder, pad, my_row, row_counter, tracked_datasets, show_deleted=show_deleted, simple=simple )} - %endif - %endfor - %endif - - -<%def name="render_content(simple=False)"> - <% - from galaxy import util - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted - from time import strftime - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - - if is_admin: - can_add = can_modify = can_manage = True - elif cntrller in [ 'library', 'requests' ]: - can_add = trans.app.security_agent.can_add_library_item( current_user_roles, library ) - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, library ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, library ) - else: - can_add = can_modify = can_manage = False - - info_association, inherited = library.get_info_association() - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - - self.has_accessible_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, library.root_folder, trans.user, current_user_roles ) - root_folder_has_accessible_library_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, library.root_folder, trans.user, current_user_roles, search_downward=False ) - has_accessible_folders = is_admin or trans.app.security_agent.has_accessible_folders( trans, library.root_folder, trans.user, current_user_roles ) - - tracked_datasets = {} - - class RowCounter( object ): - def __init__( self ): - self.count = 0 - def increment( self ): - self.count += 1 - def __str__( self ): - return str( self.count ) - %> - -

Data Library “${library.name | h}”

- - - - %if message: - ${render_msg( message, status )} - %endif - - %if library.synopsis not in [ '', 'None', None ]: -
- ${library.synopsis | h} -
- %endif - - %if self.has_accessible_datasets: -
- %endif - %if has_accessible_folders: - - - - - % if not simple: - - - % endif - - - - - <% row_counter = RowCounter() %> - %if cntrller in [ 'library', 'requests' ]: - ${self.render_folder( 'library', library.root_folder, 0, created_ldda_ids, library, hidden_folder_ids, tracked_datasets, show_deleted=show_deleted, parent=None, row_counter=row_counter, root_folder=True, simple=simple )} - %if not library.deleted and self.has_accessible_datasets and not simple: - ${render_actions_on_multiple_items()} - %endif - %elif ( trans.user_is_admin() and cntrller in [ 'library_admin', 'requests_admin' ] ): - ${self.render_folder( 'library_admin', library.root_folder, 0, created_ldda_ids, library, [], tracked_datasets, show_deleted=show_deleted, parent=None, row_counter=row_counter, root_folder=True )} - %if not library.deleted and not show_deleted and self.has_accessible_datasets: - ${render_actions_on_multiple_items()} - %endif - %endif -
- %if self.has_accessible_datasets: - - %endif - Name - MessageData typeDate uploadedFile size
- %endif - %if self.has_accessible_datasets: -
- %endif - - %if tracked_datasets: - - - %endif - - %if self.has_accessible_datasets and not simple: - ${render_compression_types_help( comptypes )} - %endif - %if not has_accessible_folders: - The data library '${library.name | h}' does not contain any datasets that you can access. - %endif - diff --git a/templates/webapps/galaxy/library/common/browse_library_opt.mako b/templates/webapps/galaxy/library/common/browse_library_opt.mako deleted file mode 100644 index 553a674a14b9..000000000000 --- a/templates/webapps/galaxy/library/common/browse_library_opt.mako +++ /dev/null @@ -1,621 +0,0 @@ -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/library/common/library_item_info.mako" import="render_library_item_info" /> -<%namespace file="/library/common/common.mako" import="render_actions_on_multiple_items" /> -<%namespace file="/library/common/common.mako" import="render_compression_types_help" /> -<%namespace file="/library/common/common.mako" import="common_javascripts" /> - -<%! - def inherit(context): - if context.get('use_panels'): - return '/webapps/galaxy/base_panels.mako' - else: - return '/base.mako' -%> -<%inherit file="${inherit(context)}"/> - -<%def name="init()"> -<% - self.has_left_panel=False - self.has_right_panel=False - self.message_box_visible=False - self.active_view="user" - self.overlay_visible=False - self.has_accessible_datasets = False -%> - - -## -## Override methods from base.mako and base_panels.mako -## -<%def name="center_panel()"> -
-
- ${render_content()} -
-
- - -## Render the grid's basic elements. Each of these elements can be subclassed. -<%def name="body()"> - ${render_content()} - - -<%def name="title()">Browse data library -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "library" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jstorage")} - ${common_javascripts()} - ${self.grid_javascripts()} - - -<%def name="grid_javascripts()"> - - - -<%def name="render_dataset( cntrller, ldda, library_dataset, can_modify, can_manage, selected, library, folder, pad, parent, row_counter, tracked_datasets, show_deleted=False, simple=False )"> - <% - ## The received ldda must always be a LibraryDatasetDatasetAssociation object. The object id passed to methods - ## from the drop down menu should be the ldda id to prevent id collision ( which could happen when displaying - ## children, which are always lddas ). We also need to make sure we're displaying the latest version of this - ## library_dataset, so we display the attributes from the ldda. - - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_version = ( ldda == library_dataset.library_dataset_dataset_association ) - if current_version and ldda.state not in ( 'ok', 'error', 'empty', 'deleted', 'discarded' ): - tracked_datasets[ldda.id] = ldda.state - # SM: This causes a query to be emitted, but it quickly goes down a - # rabbit hole of many possible inheritable cases. It may not be - # possible to easily eliminate the extra query from this call. - info_association, inherited = ldda.get_info_association( restrict=True ) - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - %> - %if current_version and ( not ldda.library_dataset.deleted or show_deleted ): - - - - %if simple: - - %else: - - %if not library.deleted: -
- %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify: - Edit information - Move this dataset - %else: - View information - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify and not info_association: - Use template - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify and info_association: - Edit template - Unuse template - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_manage: - %if not trans.app.security_agent.dataset_is_public( ldda.dataset ): - Make public - %endif - Edit permissions - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify: - Upload a new version of this dataset - %endif - %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and ldda.has_data: - Import this dataset into selected histories - Download this dataset - %endif - %if can_modify: - %if not library.deleted and not branch_deleted( folder ) and not ldda.library_dataset.deleted: - Delete this dataset - %elif not library.deleted and not branch_deleted( folder ) and not ldda.library_dataset.purged and ldda.library_dataset.deleted: - Undelete this dataset - %endif - %endif -
- %endif - %endif - - % if not simple: - ${render_library_item_info( ldda )} - ${ldda.extension | h} - % endif - ${ldda.create_time.strftime( "%Y-%m-%d" ) | h} - ${ldda.get_size( nice_size=True ) | h} - - <% - my_row = row_counter.count - row_counter.increment() - %> - %endif - - -<%def name="format_delta( tdelta )"> - <% - from datetime import datetime - return "%d.%.6d" % ( tdelta.seconds, tdelta.microseconds ) - %> - - -<%def name="render_folder( cntrller, folder, folder_pad, created_ldda_ids, library, hidden_folder_ids, tracked_datasets, show_deleted=False, parent=None, row_counter=None, root_folder=False, simple=False )"> - <% - from galaxy.webapps.galaxy.controllers.library_common import active_folders, active_folders_and_library_datasets, activatable_folders_and_library_datasets, map_library_datasets_to_lddas, branch_deleted, datasets_for_lddas - - # SM: DELETEME - from datetime import datetime, timedelta - import logging - log = logging.getLogger( __name__ ) - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - has_accessible_library_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, folder, trans.user, current_user_roles, search_downward=False ) - - if root_folder: - pad = folder_pad - expander = h.url_for("/static/images/silk/resultset_bottom.png") - folder_img = h.url_for("/static/images/silk/folder_page.png") - else: - pad = folder_pad + 20 - expander = h.url_for("/static/images/silk/resultset_next.png") - folder_img = h.url_for("/static/images/silk/folder.png") - # SM: If this is a comma-delimited list of LDDAs, then split them up - # into a list. For anything else, turn created_ldda_ids into a single - # item list. - if created_ldda_ids: - created_ldda_ids = util.listify( created_ldda_ids ) - if str( folder.id ) in hidden_folder_ids: - return "" - my_row = None - if is_admin: - can_add = can_modify = can_manage = True - elif cntrller in [ 'library' ]: - can_access, folder_ids = trans.app.security_agent.check_folder_contents( trans.user, current_user_roles, folder ) - if not can_access: - can_show, folder_ids = \ - trans.app.security_agent.show_library_item( trans.user, - current_user_roles, - folder, - [ trans.app.security_agent.permitted_actions.LIBRARY_ADD, - trans.app.security_agent.permitted_actions.LIBRARY_MODIFY, - trans.app.security_agent.permitted_actions.LIBRARY_MANAGE ] ) - if not can_show: - return "" - can_add = trans.app.security_agent.can_add_library_item( current_user_roles, folder ) - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, folder ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, folder ) - else: - can_add = can_modify = can_manage = False - - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - info_association, inherited = folder.get_info_association( restrict=True ) - %> - %if not root_folder and ( not folder.deleted or show_deleted ): - <% encoded_id = trans.security.encode_id( folder.id ) %> - - - - - - - %if not library.deleted: -
- %if not branch_deleted( folder ) and can_add: - Add datasets - Add sub-folder - %endif - %if not branch_deleted( folder ): - %if has_accessible_library_datasets: - Select datasets for import into selected histories - %endif - %if can_modify: - Edit information - Move this folder - %else: - View information - %endif - %endif - %if not branch_deleted( folder ) and can_modify and not info_association: - Use template - %endif - %if not branch_deleted( folder ) and can_modify and info_association: - Edit template - Unuse template - %endif - %if not branch_deleted( folder ) and can_manage: - %if not trans.app.security_agent.folder_is_public( folder ): - Make public - %endif - Edit permissions - %endif - %if can_modify: - %if not library.deleted and not folder.deleted: - Delete this folder - %elif not library.deleted and folder.deleted and not folder.purged: - Undelete this folder - %endif - %endif -
- %endif - - %if folder.description: - ${folder.description | h} - %endif - - - <% - my_row = row_counter.count - row_counter.increment() - %> - %endif - <% - # TODO: If show_deleted is set to True, then nothing is displayed. Why? This wasn't the case - # in the past. - if show_deleted: - sub_folders, library_datasets = activatable_folders_and_library_datasets( trans, folder ) - else: - sub_folders, library_datasets = active_folders_and_library_datasets( trans, folder ) - # Render all the subfolders: - # TODO: Check permissions first. - for sub_folder in sub_folders: - render_folder( cntrller, sub_folder, pad, created_ldda_ids, library, [], tracked_datasets, show_deleted=show_deleted, parent=my_row, row_counter=row_counter, root_folder=False ) - - # Map LibraryDatasets to LDDAs, then map LDDAs to Datasets. - # Then determine which Datasets are accessible and which are not. - # For every LibraryDataset, if there's an LDDA for it and it's - # accessible then display it. - if ( len( library_datasets ) > 0 ): - lib_dataset_ldda_map = map_library_datasets_to_lddas( trans, library_datasets ) - dataset_list = datasets_for_lddas( trans, lib_dataset_ldda_map.values() ) - #can_access_datasets = trans.app.security_agent.dataset_access_mapping( trans, current_user_roles, dataset_list ) - can_access_datasets = trans.app.security_agent.dataset_permission_map_for_access( trans, current_user_roles, dataset_list ) - can_modify_datasets = trans.app.security_agent.item_permission_map_for_modify( trans, current_user_roles, dataset_list ) - can_manage_datasets = trans.app.security_agent.item_permission_map_for_manage( trans, current_user_roles, dataset_list ) - for library_dataset in library_datasets: - ldda = lib_dataset_ldda_map[ library_dataset.id ] - if ldda: - # SMTODO: Fix awkard modify/manage permission checks. - can_access = is_admin or can_access_datasets[ ldda.dataset_id ] - can_modify = is_admin or ( cntrller in ['library', 'requests'] and can_modify_datasets[ ldda.dataset_id ]) - can_manage = is_admin or ( cntrller in ['library', 'requests'] and can_manage_datasets[ ldda.dataset_id ]) - selected = created_ldda_ids and str( ldda.id ) in created_ldda_ids - if can_access: - render_dataset( cntrller, ldda, library_dataset, can_modify, can_manage, selected, library, folder, pad, my_row, row_counter, tracked_datasets, show_deleted=show_deleted ) - %> - - -<%def name="render_content(simple=False)"> - <% - from galaxy import util - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted - from time import strftime - import logging - log = logging.getLogger( __name__ ) - - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - - if is_admin: - can_add = can_modify = can_manage = True - elif cntrller in [ 'library', 'requests' ]: - can_add = trans.app.security_agent.can_add_library_item( current_user_roles, library ) - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, library ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, library ) - else: - can_add = can_modify = can_manage = False - - info_association, inherited = library.get_info_association() - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE - - # SM: These are mostly display-specific; ignore them for now. - # The has_accessible_folders determines if anything can be shown - use it. - self.has_accessible_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, library.root_folder, trans.user, current_user_roles ) - root_folder_has_accessible_library_datasets = trans.app.security_agent.has_accessible_library_datasets( trans, library.root_folder, trans.user, current_user_roles, search_downward=False ) - has_accessible_folders = is_admin or trans.app.security_agent.has_accessible_folders( trans, library.root_folder, trans.user, current_user_roles ) - - tracked_datasets = {} - - class RowCounter( object ): - def __init__( self ): - self.count = 0 - def increment( self ): - self.count += 1 - def __str__( self ): - return str( self.count ) - %> - -

Data Library “${library.name}”

- - - - %if message: - ${render_msg( message, status )} - %endif - - %if library.synopsis not in [ '', 'None', None ]: -
- ${library.synopsis | h} -
- %endif - - %if self.has_accessible_datasets: -
- %endif - %if has_accessible_folders: - - - - - % if not simple: - - - % endif - - - - - <% row_counter = RowCounter() %> - ## SM: Here is where we render the libraries based on admin/non-admin privileges: - %if cntrller in [ 'library', 'requests' ]: - ${self.render_folder( 'library', library.root_folder, 0, created_ldda_ids, library, hidden_folder_ids, tracked_datasets, show_deleted=show_deleted, parent=None, row_counter=row_counter, root_folder=True, simple=simple )} - ## SM: TODO: WTF? - %if not library.deleted and self.has_accessible_datasets and not simple: - ${render_actions_on_multiple_items()} - %endif - %elif ( trans.user_is_admin() and cntrller in [ 'library_admin', 'requests_admin' ] ): - ${self.render_folder( 'library_admin', library.root_folder, 0, created_ldda_ids, library, [], tracked_datasets, show_deleted=show_deleted, parent=None, row_counter=row_counter, root_folder=True )} - ## SM: TODO: WTF? - %if not library.deleted and not show_deleted and self.has_accessible_datasets: - ${render_actions_on_multiple_items()} - %endif - %endif -
- %if self.has_accessible_datasets: - - %endif - Name - MessageData typeDate uploadedFile size
- %endif - %if self.has_accessible_datasets: -
- %endif - - %if tracked_datasets: - - - %endif - - %if self.has_accessible_datasets and not simple: - ${render_compression_types_help( comptypes )} - %endif - %if not has_accessible_folders: - The data library '${library.name | h}' does not contain any datasets that you can access. - %endif - diff --git a/templates/webapps/galaxy/library/common/common.mako b/templates/webapps/galaxy/library/common/common.mako deleted file mode 100644 index 28b9664de1a1..000000000000 --- a/templates/webapps/galaxy/library/common/common.mako +++ /dev/null @@ -1,491 +0,0 @@ -<%namespace file="/common/template_common.mako" import="render_template_field" /> - -<%def name="common_javascripts()"> - - - -<%def name="render_compression_types_help( comptypes )"> -
-

- TIP: You can download individual library datasets by selecting "Download this dataset" from the context menu (triangle) next to each dataset's name. -

-
- %if len( comptypes ) > 1: -
-

- TIP: Several compression options are available for downloading multiple library datasets simultaneously: -

- -
- %endif - - -<%def name="render_upload_form( cntrller, upload_option, action, library_id, folder_id, replace_dataset, file_formats, dbkeys, space_to_tab, link_data_only, widgets, roles_select_list, history, show_deleted )"> - <% - import os, os.path - from galaxy.web.form_builder import AddressField, CheckboxField, SelectField, TextArea, TextField, WorkflowField, WorkflowMappingField, HistoryField - %> - %if upload_option in [ 'upload_file', 'upload_directory', 'upload_paths' ]: -
- <% - if upload_option == 'upload_directory': - tool_form_title = 'Upload a directory of files' - elif upload_option == 'upload_paths': - tool_form_title = 'Upload files from filesystem paths' - else: - tool_form_title = 'Upload files' - %> -
${tool_form_title | h}
-
-
- - - - - - - %if replace_dataset not in [ None, 'None' ]: - -
- You are currently selecting a new file to replace '${util.unicodify( replace_dataset.name ) | h}'. -
-
- %endif -
- -
- ${upload_option_select_list.get_html()} -
-
- Choose upload option (file, directory, filesystem paths, current history). -
-
-
-
- -
- -
-
-
- %if upload_option == 'upload_file': -
- -
-
-
- -
- -
-
-
-
- -
- -
-
- Specify a list of URLs (one per line) or paste the contents of a file. -
-
-
- %elif upload_option == 'upload_directory': - <% - if ( trans.user_is_admin() and cntrller == 'library_admin' ): - import_dir = trans.app.config.library_import_dir - else: - # Directories of files from the Data Libraries view are restricted to a - # sub-directory named the same as the current user's email address - # contained within the configured setting for user_library_import_dir - import_dir = os.path.join( trans.app.config.user_library_import_dir, trans.user.email ) - %> -
- <% - # See if we have any contained sub-directories, if not the only option - # in the server_dir select list will be library_import_dir - contains_directories = False - for entry in os.listdir( import_dir ): - if os.path.isdir( os.path.join( import_dir, entry ) ): - contains_directories = True - break - %> - -
- -
-
- %if contains_directories: - Upload all files in a sub-directory of ${import_dir | h} on the Galaxy server. - %else: - Upload all files in ${import_dir | h} on the Galaxy server. - %endif -
-
-
- %elif upload_option == 'upload_paths': -
- -
- -
-
- Upload all files pasted in the box. The (recursive) contents of any pasted directories will be added as well. -
-
-
- -
- Yes -
-
- If checked (default), library sub-folders will be used to preserve any subdirectories on the filesystem. - If unchecked, any files in subdirectories on the filesystem will be placed directly in the library folder. -
-
- %endif - %if upload_option in ( 'upload_directory', 'upload_paths' ): -
- -
- -
-
- Normally data uploaded with this tool is copied into Galaxy's configured "file_path" location where Galaxy - has a form of control over the data files. However, this may not be desired (especially for large NGS - datasets), so using the option labeled "Link to files without copying into Galaxy" will force Galaxy to - always read the data from its original path. - %if upload_option == 'upload_directory': - Any symlinks encountered in the uploaded directory will be dereferenced once. That is, Galaxy will - point directly to the file that is linked, but no other symlinks further down the line will be dereferenced. - %endif -
-
- %endif -
- -
- <% - if space_to_tab == 'true': - checked = ' checked' - else: - checked = '' - if upload_option == 'upload_file': - name = 'files_0|space_to_tab' - else: - name = 'space_to_tab' - space2tab = 'Yes' % ( name, checked ) - %> - ${space2tab} -
-
- Use this option if you are entering intervals by hand. -
-
-
- -
- -
- <% - if to_posix_lines == 'true': - checked = ' checked' - else: - checked = '' - if upload_option == 'upload_file': - name = 'files_0|to_posix_lines' - else: - name = 'to_posix_lines' - uni2posix = 'Yes' % ( name, checked ) - %> - ${uni2posix} -
-
- Use this option if you need your datasets to be converted from uni to posix line endings. -
-
-
- -
- -
-
-
-
- -
- %if ldda_message: - - %else: - - %endif -
-
- This information will be displayed in the "Message" column for this dataset in the data library browser -
-
-
- %if roles_select_list: -
- -
- ${roles_select_list.get_html()} -
-
- Multi-select list - hold the appropriate key while clicking to select multiple roles. More restrictions can be applied after the upload is complete. Selecting no roles makes a dataset public. -
-
-
- %endif - %if widgets: - %for i, field in enumerate( widgets ): -
- -
- ${field[ 'widget' ].get_html()} -
-
- %if field[ 'helptext' ]: - ${field[ 'helptext' ] | h}
- %endif - *Inherited template field -
-
-
- %endfor - %endif -
- -
-
-
-
- %elif upload_option == 'import_from_history': -
-
Active datasets in your current history (${ util.unicodify( history.name ) | h})
-
- %if history and history.active_datasets: -
- - - - - <% - role_ids_selected = '' - if roles_select_list: - selected = roles_select_list.get_selected( return_value=True, multi=True ) - if selected: - role_ids_selected = ','.join( selected ) - %> - - %if replace_dataset not in [ None, 'None' ]: - -
- You are currently selecting a new file to replace '${ util.unicodify( replace_dataset.name ) | h}'. -
-
- %endif - %for hda in history.visible_datasets: - <% encoded_id = trans.security.encode_id( hda.id ) %> -
- - -
- %endfor - %if widgets: - - %for i, field in enumerate( widgets ): -
- -
- ${field[ 'widget' ].get_html()} -
-
- %if field[ 'helptext' ]: - ${field[ 'helptext' ] | h}
- %endif - *Inherited template field -
-
-
- %endfor - %endif -
- -
-
- %else: -

Your current history is empty

- %endif -
-
- %endif - - -<%def name="render_actions_on_multiple_items( actions_to_exclude=[] )"> - <% - is_admin = trans.user_is_admin() and cntrller=='library_admin' - can_delete = 'delete' not in actions_to_exclude - can_download = 'download' not in actions_to_exclude - can_import_to_histories = 'import_to_histories' not in actions_to_exclude - can_manage_permissions = 'manage_permissions' not in actions_to_exclude - can_move = 'move' not in actions_to_exclude - %> - - - - For selected datasets: - - - - - - diff --git a/templates/webapps/galaxy/library/common/folder_info.mako b/templates/webapps/galaxy/library/common/folder_info.mako deleted file mode 100644 index e28d6835bc06..000000000000 --- a/templates/webapps/galaxy/library/common/folder_info.mako +++ /dev/null @@ -1,61 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/common/template_common.mako" import="render_template_fields" /> - -<%def name="javascripts()"> - ${parent.javascripts()} - - -<% - from cgi import escape - folder_name = escape( str( folder.name ), quote=True ) - folder_description = escape( str( folder.description ), quote=True ) -%> - -

- - -%if message: - ${render_msg( message, status )} -%endif - -
-
Edit folder name and description
-
- %if ( trans.user_is_admin() and cntrller == 'library_admin' ) or trans.app.security_agent.can_modify_library_item( current_user_roles, folder ): -
-
- - -
-
-
- - -
-
-
- -
-
- %else: -
- - ${folder_name} -
-
-
- - ${folder_description} -
-
- %endif -
-
-%if widgets: - ${render_template_fields( cntrller=cntrller, item_type='folder', widgets=widgets, widget_fields_have_contents=widget_fields_have_contents, library_id=library_id, folder_id=trans.security.encode_id( folder.id ), info_association=info_association, inherited=inherited )} -%endif diff --git a/templates/webapps/galaxy/library/common/folder_permissions.mako b/templates/webapps/galaxy/library/common/folder_permissions.mako deleted file mode 100644 index eeddf72f12da..000000000000 --- a/templates/webapps/galaxy/library/common/folder_permissions.mako +++ /dev/null @@ -1,19 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/dataset/security_common.mako" import="render_permission_form" /> - -

- - -%if message: - ${render_msg( message, status )} -%endif - -%if ( trans.user_is_admin() and cntrller in [ 'library_admin', 'requests_admin' ] ) or trans.app.security_agent.can_manage_library_item( current_user_roles, folder ): - ## LIBRARY_ACCESS is a special permission that is set only at the library level. - ${render_permission_form( folder, folder.name, h.url_for( controller='library_common', action='folder_permissions', cntrller=cntrller, id=trans.security.encode_id( folder.id ), library_id=library_id, show_deleted=show_deleted ), roles, do_not_render=[ 'LIBRARY_ACCESS' ] )} -%endif diff --git a/templates/webapps/galaxy/library/common/import_datasets_to_histories.mako b/templates/webapps/galaxy/library/common/import_datasets_to_histories.mako deleted file mode 100644 index d538c99c6ed4..000000000000 --- a/templates/webapps/galaxy/library/common/import_datasets_to_histories.mako +++ /dev/null @@ -1,104 +0,0 @@ -<%namespace file="/message.mako" import="render_msg" /> -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="javascripts" /> -<%def name="title()">Import library datasets to histories - -<%def name="javascripts()"> - ${parent.javascripts()} - - - -%if message: - ${render_msg( util.unicodify( message ), status )} -%endif - -Import library datasets into histories -

-
-
-
- %if source_lddas: - %for source_ldda in source_lddas: - <% - checked = "" - encoded_id = trans.security.encode_id( source_ldda.id ) - if source_ldda.id in ldda_ids: - checked = " checked='checked'" - %> -
- - -
- %endfor - %else: -
This folder has no accessible library datasets.
- %endif -
-
-
-
-
Destination Histories:
-
-
- -

- Choose multiple histories -
- - %if trans.get_user(): - <% - checked = "" - if "create_new_history" in target_history_ids: - checked = " checked='checked'" - %> -
-
— OR —
-
- - -
- %endif -
-
-
-
- -
-
diff --git a/templates/webapps/galaxy/library/common/ldda_edit_info.mako b/templates/webapps/galaxy/library/common/ldda_edit_info.mako deleted file mode 100644 index eae198db1550..000000000000 --- a/templates/webapps/galaxy/library/common/ldda_edit_info.mako +++ /dev/null @@ -1,181 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/common/template_common.mako" import="render_template_fields" /> -<% from galaxy import util %> - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jquery.autocomplete")} - - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "autocomplete_tagging" )} - - -%if ldda == ldda.library_dataset.library_dataset_dataset_association: - This is the latest version of this library dataset -%else: - This is an expired version of this library dataset -%endif -

- -

- -%if message: - ${render_msg( message, status )} -%endif - -<%def name="datatype( ldda, file_formats )"> - - - -%if ( trans.user_is_admin() and cntrller=='library_admin' ) or trans.app.security_agent.can_modify_library_item( current_user_roles, ldda.library_dataset ): -
-
Edit attributes of ${util.unicodify( ldda.name ) | h}
-
-
- -
- - -
-
-
- - -
-
-
- - %if ldda.message: - - %else: - - %endif -
- This information will be displayed in the library browser -
-
-
- %for name, spec in ldda.metadata.spec.items(): - %if spec.visible: -
- - ${ldda.metadata.get_html_by_name( name, trans=trans )} -
-
- %endif - %endfor -
- -
-
-
-
- - -
- This will inspect the dataset and attempt to correct the above column values if they are not accurate. -
-
-
-
-
-

-

-
Change data type
-
- %if ldda.datatype.allow_datatype_change: -
-
- - - ${datatype( ldda, file_formats )} -
- This will change the datatype of the existing dataset - but not modify its contents. Use this if Galaxy - has incorrectly guessed the type of your dataset. -
-
-
-
- -
-
- %else: -
-
${_('Changing the datatype of this dataset is not allowed.')}
-
- %endif -
-
-
-
Change Extended Metadata
-
-
-
- -
- -
- %if ldda.extended_metadata: - - %else: - - %endif -
-
-
- -
-
-
-
-

-%else: -

-
View information about ${util.unicodify( ldda.name ) | h}
-
-
- - ${util.unicodify( ldda.name ) | h} -
-
-
- - ${util.unicodify( ldda.info ) | h} -
-
-
- - ${ldda.ext | h} -
-
- %for name, spec in ldda.metadata.spec.items(): - %if spec.visible: -
- - ${ldda.metadata.get( name ) | h} -
-
- %endif - %endfor -
-
-%endif -%if widgets: - ${render_template_fields( cntrller=cntrller, item_type='ldda', widgets=widgets, widget_fields_have_contents=widget_fields_have_contents, library_id=library_id, folder_id=trans.security.encode_id( ldda.library_dataset.folder.id ), ldda_id=trans.security.encode_id( ldda.id ), info_association=info_association, inherited=inherited )} -%endif diff --git a/templates/webapps/galaxy/library/common/ldda_info.mako b/templates/webapps/galaxy/library/common/ldda_info.mako deleted file mode 100644 index 87a515e4223e..000000000000 --- a/templates/webapps/galaxy/library/common/ldda_info.mako +++ /dev/null @@ -1,311 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/common/template_common.mako" import="render_template_fields" /> -<% - from galaxy import util - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted, get_containing_library_from_library_dataset - from galaxy.web.framework.helpers import time_ago - - if ldda == ldda.library_dataset.library_dataset_dataset_association: - current_version = True - else: - current_version = False - if ldda.user: - uploaded_by = ldda.user.email - else: - uploaded_by = 'anonymous' - if trans.user_is_admin() and cntrller == 'library_admin': - can_modify = can_manage = True - elif cntrller in [ 'library', 'requests' ]: - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, ldda.library_dataset ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, ldda.library_dataset ) - else: - can_modify = can_manage = False - form_type = trans.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE -%> - -<%def name="javascripts()"> - ${parent.javascripts()} - - -<%def name="stylesheets()"> - ${parent.stylesheets()} - - - -%if current_version: - This is the latest version of this library dataset -%else: - This is an expired version of this library dataset -%endif -

- -

- -%if message: - ${render_msg( message, status )} -%endif - -
-
- Information about - %if not library.deleted and not branch_deleted( ldda.library_dataset.folder ) and not ldda.library_dataset.deleted: -
- %if can_modify: - Edit information - %if not info_association: - Use template - %else: - Edit template - Unuse template - %endif - %endif - %if can_manage: - Edit permissions - %endif - %if current_version and can_modify: - Upload a new version of this dataset - %endif - %if ldda.has_data(): - Import this dataset into selected histories - Download this dataset - %endif - %if show_associated_hdas_and_lddas: - Hide items using this dataset's disk file - %else: - Show items using this dataset's disk file - %endif -
- %endif -
-
- %if ldda.message: -
- -
${ldda.message | h}
-
-
- %endif -
- - ${uploaded_by | h} -
-
-
- - ${util.unicodify(ldda.create_time.strftime( trans.app.config.pretty_datetime_format )) | h} -
-
-
- - ${ldda.get_size( nice_size=True ) | h} -
-
- %if ldda.dataset.uuid: -
- - ${ldda.dataset.uuid | h} -
-
- %endif - %if ldda.tool_version: -
- - ${ldda.tool_version | h} -
-
- %endif -
- - ${ldda.ext | h} -
-
-
- - ${ldda.dbkey | h} -
-
-
- - ${util.unicodify( ldda.info ) | h} -
-
- %if ldda.creating_job_associations: - <% job = ldda.creating_job_associations[0].job %> - %if job.stdout and job.stdout.strip() != '': -
- -
${job.stdout | h}
-
-
- %endif - %if job.stderr and job.stderr.strip() != '': -
- -
${job.stderr | h}
-
-
- %endif - %endif -
-
${ldda.blurb | h}
-
- ## We want to display all metadata item here, whether marked visible or not since they are all pretty useful - %for name, spec in ldda.metadata.spec.items(): -
- - <% - metadata_val = ldda.metadata.get( name ) - if isinstance( metadata_val, trans.model.MetadataFile ): - metadata_val = metadata_val.file_name - elif isinstance( metadata_val, list ): - # Make sure list items are strings - metadata_val = [ str( item ) for item in metadata_val ] - metadata_val = ', '.join( metadata_val ) - %> - ${metadata_val | h} -
-
- %endfor - %if ldda.peek != "no peek": -
-
- -
${util.unicodify( ldda.display_peek() )}
-
-
- %endif - %if ldda.extended_metadata: -
- -
${util.pretty_print_json(ldda.extended_metadata.data) | h}
-
-
- %endif - %if trans.user_is_admin() and cntrller == 'library_admin': -
- - ${ldda.file_name | h} -
-
- %endif -
-
-%if widgets: - ${render_template_fields( cntrller=cntrller, item_type='ldda', widgets=widgets, widget_fields_have_contents=widget_fields_have_contents, library_id=library_id, folder_id=trans.security.encode_id( ldda.library_dataset.folder.id ), ldda_id=trans.security.encode_id( ldda.id ), info_association=info_association, inherited=inherited, editable=False )} -%endif -%if show_associated_hdas_and_lddas: - %if associated_hdas: -

- Active (undeleted) history items that use this library dataset's disk file -

- - - - - - - - - - %for hda in associated_hdas: - - - - - - - %endfor -
HistoryHistory ItemLast UpdatedUser
- %if hda.history: - ${hda.history.get_display_name() | h} - %else: - no history - %endif - ${hda.get_display_name() | h}${time_ago( hda.update_time ) | h} - %if hda.history and hda.history.user: - ${hda.history.user.email | h} - %else: - anonymous - %endif -
-
-

- %endif - %if associated_lddas: -

- Other active (undeleted) library datasets that use this library dataset's disk file -

- - - - - - - - - - - %for copied_ldda in associated_lddas: - <% containing_library = get_containing_library_from_library_dataset( trans, copied_ldda.library_dataset ) %> - - - - - - - - %endfor -
LibraryLibrary FolderLibrary DatasetLast UpdatedUser
- <% - if containing_library: - library_display_name = containing_library.get_display_name() - else: - library_display_name = 'no library' - %> - %if containing_library: - ${library_display_name | h} - %else: - ${library_display_name | h} - %endif - - <% - library_dataset = copied_ldda.library_dataset - folder = library_dataset.folder - folder_display_name = folder.get_display_name() - if folder_display_name == library_display_name: - folder_display_name = 'library root' - %> - ${folder_display_name | h} - ${copied_ldda.library_dataset.folder.get_display_name() | h} - ${copied_ldda.get_display_name() | h}${time_ago( copied_ldda.update_time ) | h} - %if copied_ldda.user: - ${copied_ldda.user.email | h} - %else: - anonymous - %endif -
-
-

- %endif -%endif -%if current_version: - <% expired_lddas = [ e_ldda for e_ldda in ldda.library_dataset.expired_datasets ] %> - %if expired_lddas: -
-

Expired versions of ${util.unicodify( ldda.name ) | h}
- %for expired_ldda in expired_lddas: -
- ${util.unicodify( expired_ldda.name ) | h} -
- %endfor - %endif -%endif diff --git a/templates/webapps/galaxy/library/common/ldda_permissions.mako b/templates/webapps/galaxy/library/common/ldda_permissions.mako deleted file mode 100644 index c1b36f214149..000000000000 --- a/templates/webapps/galaxy/library/common/ldda_permissions.mako +++ /dev/null @@ -1,70 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/dataset/security_common.mako" import="render_permission_form" /> - -<%def name="stylesheets()"> - ${parent.stylesheets()} - - - -<% - if len( lddas ) > 1: - name_str = '%d selected datasets' % len( lddas ) - else: - ldda = lddas[0] - name_str = util.unicodify( ldda.name ) -%> - -

- - -%if message: - ${render_msg( message, status )} -%endif - -%if len( lddas ) > 1: -
Manage the following selected datasets
-

- - %for ldd_assoc in lddas: - - - - - %endfor -
-
- ${ldd_assoc.name | h} - -
- -
- %if ldd_assoc == ldd_assoc.library_dataset.library_dataset_dataset_association: - This is the latest version of this library dataset - %else: - This is an expired version of this library dataset - %endif -
-

-%else: - %if ldda == ldda.library_dataset.library_dataset_dataset_association: - This is the latest version of this library dataset - %else: - This is an expired version of this library dataset - %endif -

-%endif - -<% ldda_ids = ",".join( [ trans.security.encode_id( d.id ) for d in lddas ] ) %> -## LIBRARY_ACCESS is a special permission that is set only at the library level, -## and DATASET_MANAGE_PERMISSIONS is inherited to the dataset from the ldda. -${render_permission_form( lddas[0], name_str, h.url_for( controller='library_common', action='ldda_permissions', cntrller=cntrller, library_id=library_id, folder_id=trans.security.encode_id( lddas[0].library_dataset.folder.id ), id=ldda_ids, show_deleted=show_deleted ), roles, do_not_render=[ 'LIBRARY_ACCESS', 'DATASET_MANAGE_PERMISSIONS' ] )} diff --git a/templates/webapps/galaxy/library/common/library_dataset_info.mako b/templates/webapps/galaxy/library/common/library_dataset_info.mako deleted file mode 100644 index 25a7ed699411..000000000000 --- a/templates/webapps/galaxy/library/common/library_dataset_info.mako +++ /dev/null @@ -1,70 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/common/template_common.mako" import="render_template_fields" /> - -<%def name="javascripts()"> - ${parent.javascripts()} - - -%if library_dataset == library_dataset.library_dataset_dataset_association.library_dataset: - This is the latest version of this library dataset -%else: - This is an expired version of this library dataset -%endif -

- -

- -%if message: - ${render_msg( message, status )} -%endif - -%if ( trans.user_is_admin() and cntrller=='library_admin' ) or trans.app.security_agent.can_modify_library_item( current_user_roles, library_dataset ): -
-
Edit attributes of ${util.unicodify( library_dataset.name ) | h}
-
-
-
- -
- -
-
-
-
- -
- -
-
-
-
- -
-
-
-
-%else: -
-
View information about ${util.unicodify( library_dataset.name ) | h}
-
-
- Name: ${util.unicodify( library_dataset.name ) | h} -
- Info: ${util.unicodify( library_dataset.info ) | h} -
- Dataset Versions: -
-
-
-
-
-%endif - -%if widgets: - ${render_template_fields( cntrller, item_type='library_dataset', widgets=widgets, widget_fields_have_contents=widget_fields_have_contents, library_id=library_id, info_association=None, inherited=False, editable=False )} -%endif diff --git a/templates/webapps/galaxy/library/common/library_dataset_permissions.mako b/templates/webapps/galaxy/library/common/library_dataset_permissions.mako deleted file mode 100644 index b0928df7a2c9..000000000000 --- a/templates/webapps/galaxy/library/common/library_dataset_permissions.mako +++ /dev/null @@ -1,25 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/dataset/security_common.mako" import="render_permission_form" />> - -%if library_dataset == library_dataset.library_dataset_dataset_association.library_dataset: - This is the latest version of this library dataset -%else: - This is an expired version of this library dataset -%endif -

- -

- -%if message: - ${render_msg( message, status )} -%endif - -%if ( trans.user_is_admin() and cntrller == 'library_admin' ) or trans.app.security_agent.can_manage_library_item( current_user_roles, library_dataset ): - ## LIBRARY_ACCESS is a special permission that is set only at the library level. - ${render_permission_form( library_dataset, library_dataset.name, h.url_for( controller='library_common', action='library_dataset_permissions', cntrller=cntrller, id=trans.security.encode_id( library_dataset.id ), library_id=library_id, show_deleted=show_deleted ), roles, do_not_render=[ 'LIBRARY_ACCESS' ] )} -%endif diff --git a/templates/webapps/galaxy/library/common/library_dataset_search_results.mako b/templates/webapps/galaxy/library/common/library_dataset_search_results.mako deleted file mode 100644 index 69df8863e847..000000000000 --- a/templates/webapps/galaxy/library/common/library_dataset_search_results.mako +++ /dev/null @@ -1,137 +0,0 @@ -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/library/common/browse_library.mako" import="render_dataset" /> -<%namespace file="/library/common/common.mako" import="render_actions_on_multiple_items" /> -<%namespace file="/library/common/common.mako" import="render_compression_types_help" /> -<%namespace file="/library/common/common.mako" import="common_javascripts" /> - -<%! - def inherit(context): - if context.get('use_panels'): - return '/webapps/galaxy/base_panels.mako' - else: - return '/base.mako' -%> -<%inherit file="${inherit(context)}"/> - -<%def name="init()"> -<% - self.has_left_panel=False - self.has_right_panel=False - self.message_box_visible=False - self.active_view="user" - self.overlay_visible=False -%> - - -## -## Override methods from base.mako and base_panels.mako -## -<%def name="center_panel()"> -
-
- ${render_content()} -
-
- - -## Render the grid's basic elements. Each of these elements can be subclassed. -<%def name="body()"> - ${render_content()} - - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "library" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jstorage")} - ${common_javascripts()} - - -<%def name="render_searched_components()"> - -
- - -<%def name="render_content()"> - <% - from galaxy import util - from galaxy.webapps.galaxy.controllers.library_common import branch_deleted - from time import strftime - - class RowCounter( object ): - def __init__( self ): - self.count = 0 - def increment( self ): - self.count += 1 - def __str__( self ): - return str( self.count ) - %> - -

- - -

Results for search on “${search_term | h}”

- - %if message: - ${render_msg( message, status )} - %endif - - %if lddas: -

The string "${search_term | h}" was found in at least one of the following information components of the displayed library datasets.

- ${render_searched_components()} -
- - - - - - - - - - - - <% - tracked_datasets = {} - row_counter = RowCounter() - my_row = row_counter.count - %> - %for ldda in lddas: - <% - library_dataset = ldda.library_dataset - folder = library_dataset.folder - library = folder.parent_library - %> - ${render_dataset( cntrller, ldda, library_dataset, False, library, folder, 0, my_row, row_counter, tracked_datasets, show_deleted=False )} - <% - my_row = row_counter.count - row_counter.increment() - %> - %endfor - ${render_actions_on_multiple_items( actions_to_exclude=[ 'manage_permissions' ] )} -
- - Name - MessageUploaded ByDateFile Size
-
- ${render_compression_types_help( comptypes )} - %elif status != 'error': -

The string "${search_term | h}" was not found in any of the following information components for any library datasets that you can access.

- ${render_searched_components()} - %endif - diff --git a/templates/webapps/galaxy/library/common/library_info.mako b/templates/webapps/galaxy/library/common/library_info.mako deleted file mode 100644 index 2da77909b903..000000000000 --- a/templates/webapps/galaxy/library/common/library_info.mako +++ /dev/null @@ -1,116 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/common/template_common.mako" import="render_template_fields" /> - -<%def name="javascripts()"> - ${parent.javascripts()} - - -<% - from galaxy import util - if trans.user_is_admin() and cntrller == 'library_admin': - can_add = can_modify = can_manage = True - elif cntrller in [ 'library', 'requests' ]: - can_add = trans.app.security_agent.can_add_library_item( current_user_roles, library ) - can_modify = trans.app.security_agent.can_modify_library_item( current_user_roles, library ) - can_manage = trans.app.security_agent.can_manage_library_item( current_user_roles, library ) - else: - can_add = can_modify = can_manage = False - library_name = util.unicodify( library.name ) - library_description = util.unicodify(library.description) - library_synopsis = util.unicodify(library.synopsis) -%> - -

- - -%if message: - ${render_msg( message, status )} -%endif - -
-
- - %if can_add or can_modify or can_manage: -
- %if not library.deleted: - %if can_add and not library.info_association: - Use template - %endif - %if can_manage: - Edit permissions - %endif - %if can_modify: - Delete this data library - %endif - %elif can_modify and not library.purged: - Undelete this data library - %elif library.purged: - This data library has been purged - %endif -
- %endif -
-
- %if not library.deleted and can_modify: -
-
- -
- -
-
-
-
- -
- -
-
- Displayed when browsing all libraries -
-
-
-
- -
- -
-
- Displayed when browsing this library -
-
-
-
- -
-
- %else: -
- - ${library_name | h} -
-
-
- - ${library_description | h} -
-
-
- - ${library_synopsis | h} -
-
- %endif -
-
- -%if widgets: - ${render_template_fields( cntrller=cntrller, item_type='library', widgets=widgets, widget_fields_have_contents=widget_fields_have_contents, library_id=trans.security.encode_id( library.id ), info_association=info_association, inherited=inherited, editable=not( library.deleted ) )} -%endif diff --git a/templates/webapps/galaxy/library/common/library_item_info.mako b/templates/webapps/galaxy/library/common/library_item_info.mako deleted file mode 100644 index 1c2a25f45eff..000000000000 --- a/templates/webapps/galaxy/library/common/library_item_info.mako +++ /dev/null @@ -1,15 +0,0 @@ -<%def name="render_library_item_info( ldda )"> - %if ldda.state == 'error': -
Job error (click name for more info)
- %elif ldda.state == 'queued': -
This job is queued
- %elif ldda.state == 'running': -
This job is running
- %elif ldda.state == 'upload': -
This dataset is uploading
- %else: - ${ldda.message | h} - %endif - - -${render_library_item_info( ldda )} diff --git a/templates/webapps/galaxy/library/common/library_permissions.mako b/templates/webapps/galaxy/library/common/library_permissions.mako deleted file mode 100644 index 9f18fd251cc6..000000000000 --- a/templates/webapps/galaxy/library/common/library_permissions.mako +++ /dev/null @@ -1,18 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/dataset/security_common.mako" import="render_permission_form" /> - -

- - -%if message: - ${render_msg( message, status )} -%endif - -%if ( trans.user_is_admin() and cntrller == 'library_admin' ) or trans.app.security_agent.can_manage_library_item( current_user_roles, library ): - ${render_permission_form( library, library.name, h.url_for( controller='library_common', action='library_permissions', cntrller=cntrller, id=trans.security.encode_id( library.id ), show_deleted=show_deleted ), roles, do_not_render=[], all_roles=all_roles )} -%endif diff --git a/templates/webapps/galaxy/library/common/move_library_item.mako b/templates/webapps/galaxy/library/common/move_library_item.mako deleted file mode 100644 index cfb746d99571..000000000000 --- a/templates/webapps/galaxy/library/common/move_library_item.mako +++ /dev/null @@ -1,106 +0,0 @@ -<%namespace file="/message.mako" import="render_msg" /> -<%inherit file="/base.mako"/> - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jquery.autocomplete")} - - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "autocomplete_tagging" )} - - -<% - if source_library: - source_library_id = trans.security.encode_id( source_library.id ) - else: - source_library_id = '' - if target_library: - target_library_id = trans.security.encode_id( target_library.id ) - else: - target_library_id = '' -%> - -%if message: - ${render_msg( message, status )} -%endif - -Move data library items -

-
-
-
- - %if target_library: - - %endif - %if item_type == 'ldda': - %for move_ldda in move_lddas: - <% - checked = "" - encoded_id = trans.security.encode_id( move_ldda.id ) - if move_ldda.id in move_ldda_ids: - checked = " checked='checked'" - %> -
- - -
- %endfor - %elif item_type == 'folder': -
- <% encoded_id = trans.security.encode_id( move_folder.id ) %> - - -
- %endif -
-
-
-
- %if target_library: -
Select folder within data library: ${h.truncate( target_library.name, 30 ) | h}
- %else: -
Select a data library
- %endif -
- %if target_library: -
- %if len( target_folder_id_select_field.options ) >= 1: - ${target_folder_id_select_field.get_html()} - %else: - %if source_library and source_library.id == target_library.id: - You are not authorized to move items within the source data library - %else: - You are not authorized to move items into the selected data library - %endif - %endif - %if source_library: -

- %if target_library.id == source_library.id: - Choose another data library - %else: - Choose source data library - %endif - %elif not target_library_folders: -

- Choose another data library - %endif -
- %else: -
- %if len( target_library_id_select_field.options ) > 1: - ${target_library_id_select_field.get_html()} - %else: - You are not authorized to move items to any data libraries - %endif -
- %endif -
-
-
-
- -
-
diff --git a/templates/webapps/galaxy/library/common/new_folder.mako b/templates/webapps/galaxy/library/common/new_folder.mako deleted file mode 100644 index e17b83ef819c..000000000000 --- a/templates/webapps/galaxy/library/common/new_folder.mako +++ /dev/null @@ -1,38 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> - -
- - -%if message: - ${render_msg( message, status )} -%endif - -
-
Create a new folder
-
-
-
- -
- -
-
-
-
- -
- -
-
-
-
- -
-
-
-
diff --git a/templates/webapps/galaxy/library/common/upload.mako b/templates/webapps/galaxy/library/common/upload.mako deleted file mode 100644 index 08857c36e8b0..000000000000 --- a/templates/webapps/galaxy/library/common/upload.mako +++ /dev/null @@ -1,36 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/library/common/common.mako" import="render_upload_form" /> - -<% import os, os.path %> - -<% - if replace_dataset not in [ None, 'None' ]: - replace_id = trans.security.encode_id( replace_dataset.id ) - else: - replace_id = 'None' -%> - -<%def name="javascripts()"> - ${parent.javascripts()} - ${h.js("libs/jquery/jquery.autocomplete")} - - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "autocomplete_tagging" )} - - -Upload files to a data library -

- - -%if message: - ${render_msg( message, status )} -%endif - -${render_upload_form( cntrller, upload_option, action, library_id, folder_id, replace_dataset, file_formats, dbkeys, space_to_tab, link_data_only, widgets, roles_select_list, history, show_deleted )} diff --git a/templates/webapps/galaxy/library/grid.mako b/templates/webapps/galaxy/library/grid.mako deleted file mode 100644 index 6a41b688c5ef..000000000000 --- a/templates/webapps/galaxy/library/grid.mako +++ /dev/null @@ -1 +0,0 @@ -<%inherit file="/grid_base.mako"/> diff --git a/templates/webapps/galaxy/library/index.mako b/templates/webapps/galaxy/library/index.mako deleted file mode 100644 index 5482845b708d..000000000000 --- a/templates/webapps/galaxy/library/index.mako +++ /dev/null @@ -1,15 +0,0 @@ -<%inherit file="/webapps/galaxy/base_panels.mako"/> - -<%def name="init()"> -<% - self.has_left_panel=False - self.has_right_panel=False - self.active_view="shared" -%> - - -<%def name="center_panel()"> - - - - From 9ff9f4b3219d308d84193e682487c1fe5633d59c Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 31 Oct 2017 17:05:44 -0400 Subject: [PATCH 02/24] Remove functions from controller --- .../webapps/galaxy/controllers/library.py | 113 -------- .../galaxy/controllers/library_admin.py | 247 ------------------ 2 files changed, 360 deletions(-) delete mode 100644 lib/galaxy/webapps/galaxy/controllers/library_admin.py diff --git a/lib/galaxy/webapps/galaxy/controllers/library.py b/lib/galaxy/webapps/galaxy/controllers/library.py index dacb9e8c6bfb..afeb41b57722 100644 --- a/lib/galaxy/webapps/galaxy/controllers/library.py +++ b/lib/galaxy/webapps/galaxy/controllers/library.py @@ -13,68 +13,6 @@ log = logging.getLogger(__name__) -class LibraryListGrid(grids.Grid): - - class NameColumn(grids.TextColumn): - def get_value(self, trans, grid, library): - return escape(library.name) - - class DescriptionColumn(grids.TextColumn): - def get_value(self, trans, grid, library): - if library.description: - return escape(library.description) - return '' - - # Grid definition - title = "Data Libraries" - model_class = model.Library - template = '/library/grid.mako' - default_sort_key = "name" - columns = [ - NameColumn("Data library name", - key="name", - link=(lambda library: dict(operation="browse", id=library.id)), - attach_popup=False, - filterable="advanced"), - DescriptionColumn("Data library description", - key="description", - attach_popup=False, - filterable="advanced"), - ] - columns.append(grids.MulticolFilterColumn("search dataset name, info, message, dbkey", - cols_to_filter=[columns[0], columns[1]], - key="free-text-search", - visible=False, - filterable="standard")) - standard_filters = [] - default_filter = dict(name="All", description="All", deleted="False", purged="False") - num_rows_per_page = 50 - preserve_state = False - use_paging = True - - def build_initial_query(self, trans, **kwargs): - return trans.sa_session.query(self.model_class).filter(self.model_class.table.c.deleted == false()) - - def apply_query_filter(self, trans, query, **kwd): - current_user_role_ids = [role.id for role in trans.get_current_user_roles()] - library_access_action = trans.app.security_agent.permitted_actions.LIBRARY_ACCESS.action - restricted_library_ids = [lp.library_id for lp in trans.sa_session.query(trans.model.LibraryPermissions) - .filter(trans.model.LibraryPermissions.table.c.action == library_access_action) - .distinct()] - accessible_restricted_library_ids = [lp.library_id for lp in trans.sa_session.query(trans.model.LibraryPermissions) - .filter(and_(trans.model.LibraryPermissions.table.c.action == library_access_action, - trans.model.LibraryPermissions.table.c.role_id.in_(current_user_role_ids)))] - if not trans.user: - # Filter to get only public libraries, a library whose id - # is not in restricted_library_ids is a public library - return query.filter(not_(trans.model.Library.table.c.id.in_(restricted_library_ids))) - else: - # Filter to get libraries accessible by the current user, get both - # public libraries and restricted libraries accessible by the current user. - return query.filter(or_(not_(trans.model.Library.table.c.id.in_(restricted_library_ids)), - trans.model.Library.table.c.id.in_(accessible_restricted_library_ids))) - - class Library(BaseUIController): library_list_grid = LibraryListGrid() @@ -89,54 +27,3 @@ def list(self, trans, **kwd): config={ 'title': 'Data Libraries', 'app': app}) - - @web.expose - @web.require_admin - def index(self, trans, **kwd): - message = escape(kwd.get('message', '')) - status = escape(kwd.get('status', 'done')) - default_action = kwd.get('default_action', None) - return trans.fill_template("/library/index.mako", - default_action=default_action, - message=message, - status=status) - - @web.expose - @web.require_admin - def browse_libraries(self, trans, **kwd): - if 'operation' in kwd: - operation = kwd['operation'].lower() - if operation == "browse": - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller='library', - **kwd)) - if 'f-free-text-search' in kwd: - search_term = kwd["f-free-text-search"] - if trans.app.config.enable_lucene_library_search: - indexed_search_enabled = True - search_url = trans.app.config.config_dict.get("fulltext_url", "") - if search_url: - indexed_search_enabled = True - status, message, lddas = lucene_search(trans, 'library', search_term, search_url, **kwd) - elif trans.app.config.enable_whoosh_library_search: - indexed_search_enabled = True - status, message, lddas = whoosh_search(trans, 'library', search_term, **kwd) - else: - indexed_search_enabled = False - if indexed_search_enabled: - comptypes = get_comptypes(trans) - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - return trans.fill_template('/library/common/library_dataset_search_results.mako', - cntrller='library', - search_term=search_term, - comptypes=comptypes, - lddas=lddas, - current_user_roles=trans.get_current_user_roles(), - show_deleted=show_deleted, - use_panels=use_panels, - message=message, - status=status) - # Render the list view - return self.library_list_grid(trans, **kwd) diff --git a/lib/galaxy/webapps/galaxy/controllers/library_admin.py b/lib/galaxy/webapps/galaxy/controllers/library_admin.py deleted file mode 100644 index 922e0da2cd59..000000000000 --- a/lib/galaxy/webapps/galaxy/controllers/library_admin.py +++ /dev/null @@ -1,247 +0,0 @@ -import logging - -from markupsafe import escape - -import galaxy.model -import galaxy.util -from galaxy import web -from galaxy.web.base.controller import BaseUIController -from galaxy.web.framework.helpers import grids, time_ago -from library_common import get_comptypes, lucene_search, whoosh_search - -log = logging.getLogger(__name__) - - -class LibraryListGrid(grids.Grid): - class NameColumn(grids.TextColumn): - def get_value(self, trans, grid, library): - return escape(library.name) - - class DescriptionColumn(grids.TextColumn): - def get_value(self, trans, grid, library): - if library.description: - return escape(library.description) - return '' - - class StatusColumn(grids.GridColumn): - def get_value(self, trans, grid, library): - if library.purged: - return "purged" - elif library.deleted: - return "deleted" - return "" - # Grid definition - title = "Data Libraries" - model_class = galaxy.model.Library - template = '/admin/library/grid.mako' - default_sort_key = "name" - columns = [ - NameColumn("Data library name", - key="name", - link=(lambda library: dict(operation="browse", id=library.id)), - attach_popup=False, - filterable="advanced"), - DescriptionColumn("Data library description", - key="description", - attach_popup=False, - filterable="advanced"), - grids.GridColumn("Created", key="create_time", format=time_ago), - grids.GridColumn("Last Updated", key="update_time", format=time_ago), - StatusColumn("Status", attach_popup=False), - # Columns that are valid for filtering but are not visible. - grids.DeletedColumn("Deleted", key="deleted", visible=False, filterable="advanced") - ] - columns.append(grids.MulticolFilterColumn("search dataset name, info, message, dbkey", - cols_to_filter=[columns[0], columns[1]], - key="free-text-search", - visible=False, - filterable="standard")) - global_actions = [ - grids.GridAction("Create new data library", dict(controller='library_admin', action='create_library')) - ] - standard_filters = [ - grids.GridColumnFilter("Active", args=dict(deleted=False)), - grids.GridColumnFilter("Deleted", args=dict(deleted=True, purged=False)), - grids.GridColumnFilter("Purged", args=dict(purged=True)), - grids.GridColumnFilter("All", args=dict(deleted='All')) - ] - default_filter = dict(name="All", description="All", deleted="False", purged="False") - num_rows_per_page = 50 - preserve_state = False - use_paging = True - - -class LibraryAdmin(BaseUIController): - - library_list_grid = LibraryListGrid() - - @web.expose - @web.require_admin - def browse_libraries(self, trans, **kwd): - if 'operation' in kwd: - operation = kwd['operation'].lower() - if operation == "browse": - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller='library_admin', - **kwd)) - elif operation == "delete": - return self.delete_library(trans, **kwd) - elif operation == "undelete": - return self.undelete_library(trans, **kwd) - self.library_list_grid.operations = [] - if 'f-deleted' in kwd: - if kwd['f-deleted'] != 'All': - if galaxy.util.string_as_bool(kwd['f-deleted']): - # We're viewing deleted data libraries, so add a GridOperation - # enabling one or more of them to be undeleted. - self.library_list_grid.operations = [ - grids.GridOperation("Undelete", - condition=(lambda item: item.deleted), - allow_multiple=True, - allow_popup=False, - url_args=dict(webapp="galaxy")) - ] - else: - # We're viewing active data libraries, so add a GridOperation - # enabling one or more of them to be deleted. - self.library_list_grid.operations = [ - grids.GridOperation("Delete", - condition=(lambda item: not item.deleted), - allow_multiple=True, - allow_popup=False, - url_args=dict(webapp="galaxy")) - ] - else: - # We're viewing active data libraries, so add a GridOperation - # enabling one or more of them to be deleted. - self.library_list_grid.operations = [ - grids.GridOperation("Delete", - condition=(lambda item: not item.deleted), - allow_multiple=True, - allow_popup=False, - url_args=dict(webapp="galaxy")) - ] - if 'f-free-text-search' in kwd: - search_term = kwd["f-free-text-search"] - if trans.app.config.enable_lucene_library_search: - indexed_search_enabled = True - search_url = trans.app.config.config_dict.get("fulltext_find_url", "") - if search_url: - status, message, lddas = lucene_search(trans, 'library_admin', search_term, search_url, **kwd) - elif trans.app.config.enable_whoosh_library_search: - indexed_search_enabled = True - status, message, lddas = whoosh_search(trans, 'library_admin', search_term, **kwd) - else: - indexed_search_enabled = False - if indexed_search_enabled: - comptypes = get_comptypes(trans) - show_deleted = galaxy.util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = galaxy.util.string_as_bool(kwd.get('use_panels', False)) - return trans.fill_template('/library/common/library_dataset_search_results.mako', - cntrller='library_admin', - search_term=search_term, - comptypes=comptypes, - lddas=lddas, - show_deleted=show_deleted, - use_panels=use_panels, - message=escape(message), - status=escape(status)) - # Render the list view - return self.library_list_grid(trans, **kwd) - - @web.expose - @web.require_admin - def create_library(self, trans, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - if kwd.get('create_library_button', False): - name = kwd.get('name', 'No name') - description = kwd.get('description', '') - synopsis = kwd.get('synopsis', '') - if synopsis in ['None', None]: - synopsis = '' - library = trans.app.model.Library(name=name, description=description, synopsis=synopsis) - root_folder = trans.app.model.LibraryFolder(name=name, description='') - library.root_folder = root_folder - trans.sa_session.add_all((library, root_folder)) - trans.sa_session.flush() - message = "The new library named '%s' has been created" % escape(library.name) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller='library_admin', - id=trans.security.encode_id(library.id), - message=message, - status='done')) - return trans.fill_template('/admin/library/new_library.mako', message=message, status=escape(status)) - - @web.expose - @web.require_admin - def delete_library(self, trans, id, **kwd): - # Used by the Delete grid operation in the LibrarylistGrid. - return trans.response.send_redirect(web.url_for(controller='library_common', - action='delete_library_item', - cntrller='library_admin', - library_id=id, - item_id=id, - item_type='library')) - - @web.expose - @web.require_admin - def undelete_library(self, trans, id, **kwd): - # Used by the Undelete grid operation in the LibrarylistGrid. - return trans.response.send_redirect(web.url_for(controller='library_common', - action='undelete_library_item', - cntrller='library_admin', - library_id=id, - item_id=id, - item_type='library')) - - @web.expose - @web.require_admin - def purge_library(self, trans, **kwd): - # TODO: change this function to purge_library_item, behaving similar to delete_library_item - # assuming we want the ability to purge libraries. - # This function is currently only used by the functional tests. - library = trans.sa_session.query(trans.app.model.Library).get(trans.security.decode_id(kwd.get('id'))) - - def purge_folder(library_folder): - for lf in library_folder.folders: - purge_folder(lf) - trans.sa_session.refresh(library_folder) - for library_dataset in library_folder.datasets: - trans.sa_session.refresh(library_dataset) - ldda = library_dataset.library_dataset_dataset_association - if ldda: - trans.sa_session.refresh(ldda) - dataset = ldda.dataset - trans.sa_session.refresh(dataset) - # If the dataset is not associated with any additional undeleted folders, then we can delete it. - # We don't set dataset.purged to True here because the cleanup_datasets script will do that for - # us, as well as removing the file from disk. - # if not dataset.deleted and len( dataset.active_library_associations ) <= 1: # This is our current ldda - dataset.deleted = True - ldda.deleted = True - trans.sa_session.add_all((dataset, ldda)) - library_dataset.deleted = True - trans.sa_session.add(library_dataset) - library_folder.deleted = True - library_folder.purged = True - trans.sa_session.add(library_folder) - trans.sa_session.flush() - if not library.deleted: - message = "Library '%s' has not been marked deleted, so it cannot be purged" % escape(library.name) - return trans.response.send_redirect(web.url_for(controller='library_admin', - action='browse_libraries', - message=message, - status='error')) - else: - purge_folder(library.root_folder) - library.purged = True - trans.sa_session.add(library) - trans.sa_session.flush() - message = "Library '%s' and all of its contents have been purged, datasets will be removed from disk via the cleanup_datasets script" % escape(library.name) - return trans.response.send_redirect(web.url_for(controller='library_admin', - action='browse_libraries', - message=message, - status='done')) From fe5983aafca1fae0b60ed16838799b58f4aca11c Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 08:18:33 -0400 Subject: [PATCH 03/24] Remove library common controller --- .../galaxy/scripts/apps/panels/admin-panel.js | 3 - .../webapps/galaxy/controllers/library.py | 9 - .../galaxy/controllers/library_common.py | 2857 ----------------- static/scripts/bundled/admin.bundled.js | 2 +- static/scripts/bundled/admin.bundled.js.map | 2 +- static/scripts/bundled/libs.bundled.js.map | 2 +- 6 files changed, 3 insertions(+), 2872 deletions(-) delete mode 100644 lib/galaxy/webapps/galaxy/controllers/library_common.py diff --git a/client/galaxy/scripts/apps/panels/admin-panel.js b/client/galaxy/scripts/apps/panels/admin-panel.js index 60e41456bc30..83f9a679815e 100644 --- a/client/galaxy/scripts/apps/panels/admin-panel.js +++ b/client/galaxy/scripts/apps/panels/admin-panel.js @@ -20,9 +20,6 @@ var AdminPanel = Backbone.View.extend({ },{ title : "Data tables", url : "admin/view_tool_data_tables" - },{ - title : "Data libraries", - url : "library_admin/browse_libraries" },{ title : "Display applications", url : "admin/display_applications" diff --git a/lib/galaxy/webapps/galaxy/controllers/library.py b/lib/galaxy/webapps/galaxy/controllers/library.py index afeb41b57722..240d5d9cff56 100644 --- a/lib/galaxy/webapps/galaxy/controllers/library.py +++ b/lib/galaxy/webapps/galaxy/controllers/library.py @@ -1,13 +1,6 @@ import logging - -from markupsafe import escape -from sqlalchemy import and_, false, not_, or_ - -from galaxy import model, util from galaxy import web from galaxy.web.base.controller import BaseUIController -from galaxy.web.framework.helpers import grids -from library_common import get_comptypes, lucene_search, whoosh_search log = logging.getLogger(__name__) @@ -15,8 +8,6 @@ class Library(BaseUIController): - library_list_grid = LibraryListGrid() - @web.expose def list(self, trans, **kwd): # define app configuration for generic mako template diff --git a/lib/galaxy/webapps/galaxy/controllers/library_common.py b/lib/galaxy/webapps/galaxy/controllers/library_common.py deleted file mode 100644 index c977f3196003..000000000000 --- a/lib/galaxy/webapps/galaxy/controllers/library_common.py +++ /dev/null @@ -1,2857 +0,0 @@ -from __future__ import absolute_import - -import glob -import json -import logging -import os -import os.path -import string -import sys -import tarfile -import tempfile -import zipfile - -import requests -from markupsafe import escape -from six.moves.urllib.parse import quote_plus, urlencode -from sqlalchemy import and_, false -from sqlalchemy.orm import eagerload_all - -from galaxy import util, web -from galaxy.security import Action -from galaxy.tools.actions import upload_common -from galaxy.tools.parameters import populate_state -from galaxy.util import ( - FILENAME_VALID_CHARS, - inflector, - unicodify -) -from galaxy.util.path import ( - safe_contains, - safe_relpath, - unsafe_walk -) -from galaxy.util.streamball import StreamBall -from galaxy.web.base.controller import ( - BaseUIController, - UsesExtendedMetadataMixin, - UsesFormDefinitionsMixin, - UsesLibraryMixinItems -) -from galaxy.web.form_builder import ( - AddressField, - build_select_field, - CheckboxField, - SelectField, -) - -# Whoosh is compatible with Python 2.5+ Try to import Whoosh and set flag to indicate whether tool search is enabled. -try: - import whoosh.index - from whoosh.fields import Schema, STORED, TEXT - from whoosh.scoring import BM25F - from whoosh.qparser import MultifieldParser - whoosh_search_enabled = True - # The following must be defined exactly like the - # schema in ~/scripts/data_libraries/build_whoosh_index.py - schema = Schema(id=STORED, name=TEXT, info=TEXT, dbkey=TEXT, message=TEXT) -except ImportError as e: - whoosh_search_enabled = False - schema = None - -log = logging.getLogger(__name__) - -# Test for available compression types -tmpd = tempfile.mkdtemp() -comptypes = [] -for comptype in ('gz', 'bz2'): - tmpf = os.path.join(tmpd, 'compression_test.tar.' + comptype) - try: - archive = tarfile.open(tmpf, 'w:' + comptype) - archive.close() - comptypes.append(comptype) - except tarfile.CompressionError: - log.exception("Compression error when testing %s compression. This option will be disabled for library downloads.", comptype) - try: - os.unlink(tmpf) - except OSError: - pass -try: - import zlib # noqa: F401 - comptypes.append('zip') -except ImportError: - pass - -try: - os.rmdir(tmpd) -except Exception: - pass - - -class LibraryCommon(BaseUIController, UsesFormDefinitionsMixin, UsesExtendedMetadataMixin, UsesLibraryMixinItems): - @web.json - @web.require_admin - def library_item_updates(self, trans, ids=None, states=None): - # Avoid caching - trans.response.headers['Pragma'] = 'no-cache' - trans.response.headers['Expires'] = '0' - # Create new HTML for any that have changed - rval = {} - if ids is not None and states is not None: - ids = map(int, ids.split(",")) - states = states.split(",") - for id, state in zip(ids, states): - data = trans.sa_session.query(self.app.model.LibraryDatasetDatasetAssociation).get(id) - if data.state != state: - job_ldda = data - while job_ldda.copied_from_library_dataset_dataset_association: - job_ldda = job_ldda.copied_from_library_dataset_dataset_association - rval[id] = { - "state": data.state, - "html": unicodify(trans.fill_template("library/common/library_item_info.mako", ldda=data), 'utf-8') - # "force_history_refresh": force_history_refresh - } - return rval - - @web.expose - @web.require_admin - def browse_library(self, trans, cntrller='library', **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - # If use_panels is True, the library is being accessed via an external link - # which did not originate from within the Galaxy instance, and the library will - # be displayed correctly with the mast head. - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - library_id = kwd.get('id', None) - if not library_id: - # To handle bots - message = "You must specify a library id." - status = 'error' - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - library = trans.sa_session.query(trans.app.model.Library).get(trans.security.decode_id(library_id)) - except Exception: - # Protect against attempts to phish for valid keys that return libraries - library = None - # Most security for browsing libraries is handled in the template, but do a basic check here. - if not library or not (is_admin or trans.app.security_agent.can_access_library(current_user_roles, library)): - message = "Invalid library id ( %s ) specified." % str(library_id) - status = 'error' - else: - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - created_ldda_ids = kwd.get('created_ldda_ids', '') - hidden_folder_ids = util.listify(kwd.get('hidden_folder_ids', '')) - if created_ldda_ids and not message: - message = "%d datasets are uploading in the background to the library '%s' (each is selected). " % \ - (len(created_ldda_ids.split(',')), escape(library.name)) - message += "Don't navigate away from Galaxy or use the browser's \"stop\" or \"reload\" buttons (on this tab) until the " - message += "message \"This job is running\" is cleared from the \"Information\" column below for each selected dataset." - status = "info" - comptypes = get_comptypes(trans) - try: - if self.app.config.new_lib_browse: - return trans.fill_template('library/common/browse_library_opt.mako', - cntrller=cntrller, - use_panels=use_panels, - library=library, - created_ldda_ids=created_ldda_ids, - hidden_folder_ids=hidden_folder_ids, - show_deleted=show_deleted, - comptypes=comptypes, - current_user_roles=current_user_roles, - message=escape(message), - status=escape(status)) - else: - return trans.fill_template('library/common/browse_library.mako', - cntrller=cntrller, - use_panels=use_panels, - library=library, - created_ldda_ids=created_ldda_ids, - hidden_folder_ids=hidden_folder_ids, - show_deleted=show_deleted, - comptypes=comptypes, - current_user_roles=current_user_roles, - message=escape(message), - status=escape(status)) - except Exception as e: - message = 'Error attempting to display contents of library (%s): %s.' % (escape(str(library.name)), str(e)) - status = 'error' - default_action = kwd.get('default_action', None) - - return trans.response.send_redirect(web.url_for(use_panels=use_panels, - controller=cntrller, - action='browse_libraries', - default_action=default_action, - message=message, - status=status)) - - @web.expose - @web.require_admin - def library_info(self, trans, cntrller, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - library_id = kwd.get('id', None) - try: - library = trans.sa_session.query(trans.app.model.Library).get(trans.security.decode_id(library_id)) - except Exception: - library = None - self._check_access(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('library_info_button', False): - self._check_modify(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - new_name = kwd.get('name', 'No name') - if not new_name: - message = 'Enter a valid name' - status = 'error' - else: - new_description = kwd.get('description', '') - new_synopsis = kwd.get('synopsis', '') - if new_synopsis in [None, 'None']: - new_synopsis = '' - library.name = new_name - library.description = new_description - library.synopsis = new_synopsis - # Rename the root_folder - library.root_folder.name = new_name - library.root_folder.description = new_description - trans.sa_session.add_all((library, library.root_folder)) - trans.sa_session.flush() - message = "Information updated for library '%s'." % library.name - return trans.response.send_redirect(web.url_for(controller='library_common', - action='library_info', - cntrller=cntrller, - use_panels=use_panels, - id=trans.security.encode_id(library.id), - show_deleted=show_deleted, - message=message, - status='done')) - # See if we have any associated templates - info_association, inherited = library.get_info_association() - widgets = library.get_template_widgets(trans) - widget_fields_have_contents = self.widget_fields_have_contents(widgets) - return trans.fill_template('/library/common/library_info.mako', - cntrller=cntrller, - use_panels=use_panels, - library=library, - widgets=widgets, - widget_fields_have_contents=widget_fields_have_contents, - current_user_roles=current_user_roles, - show_deleted=show_deleted, - info_association=info_association, - inherited=inherited, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def library_permissions(self, trans, cntrller, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - library_id = kwd.get('id', None) - try: - library = trans.sa_session.query(trans.app.model.Library).get(trans.security.decode_id(library_id)) - except Exception: - library = None - self._check_access(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('update_roles_button', False): - # The user clicked the Save button on the 'Associate With Roles' form - permissions = {} - for k, v in trans.app.model.Library.permitted_actions.items(): - in_roles = [trans.sa_session.query(trans.app.model.Role).get(x) for x in util.listify(kwd.get(k + '_in', []))] - permissions[trans.app.security_agent.get_action(v.action)] = in_roles - trans.app.security_agent.set_all_library_permissions(trans, library, permissions) - trans.sa_session.refresh(library) - # Copy the permissions to the root folder - trans.app.security_agent.copy_library_permissions(trans, library, library.root_folder) - message = "Permissions updated for library '%s'." % escape(library.name) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='library_permissions', - cntrller=cntrller, - use_panels=use_panels, - id=trans.security.encode_id(library.id), - show_deleted=show_deleted, - message=message, - status='done')) - roles = trans.app.security_agent.get_legitimate_roles(trans, library, cntrller) - all_roles = trans.app.security_agent.get_all_roles(trans, cntrller) - return trans.fill_template('/library/common/library_permissions.mako', - cntrller=cntrller, - use_panels=use_panels, - library=library, - current_user_roles=current_user_roles, - roles=roles, - all_roles=all_roles, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - def create_folder(self, trans, cntrller, parent_id, library_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller in ('library_admin', 'api') - current_user_roles = trans.get_current_user_roles() - try: - parent_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(parent_id)) - except Exception: - parent_folder = None - # Check the library which actually contains the user-supplied parent folder, not the user-supplied - # library, which could be anything. - self._check_access(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_add(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('new_folder_button', False) or cntrller == 'api': - new_folder = trans.app.model.LibraryFolder(name=kwd.get('name', ''), - description=kwd.get('description', '')) - # We are associating the last used genome build with folders, so we will always - # initialize a new folder with the first dbkey in genome builds list which is currently - # ? unspecified (?) - new_folder.genome_build = trans.app.genome_builds.default_value - parent_folder.add_folder(new_folder) - trans.sa_session.add(new_folder) - trans.sa_session.flush() - # New folders default to having the same permissions as their parent folder - trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder) - # If we're creating in the API, we're done - if cntrller == 'api': - return 200, dict(created=new_folder) - # If we have an inheritable template, redirect to the folder_info page so information - # can be filled in immediately. - widgets = [] - info_association, inherited = new_folder.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = new_folder.get_template_widgets(trans) - if info_association: - message = "The new folder named '%s' has been added to the data library. " % escape(new_folder.name) - message += "Additional information about this folder may be added using the inherited template." - return trans.fill_template('/library/common/folder_info.mako', - cntrller=cntrller, - use_panels=use_panels, - folder=new_folder, - library_id=library_id, - widgets=widgets, - current_user_roles=current_user_roles, - show_deleted=show_deleted, - info_association=info_association, - inherited=inherited, - message=escape(message), - status='done') - # If not inheritable info_association, redirect to the library. - message = "The new folder named '%s' has been added to the data library." % escape(new_folder.name) - # SM: This is the second place where the API controller would - # reference the library id: - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status='done')) - # We do not render any template widgets on creation pages since saving the info_association - # cannot occur before the associated item is saved. - return trans.fill_template('/library/common/new_folder.mako', - cntrller=cntrller, - use_panels=use_panels, - library_id=library_id, - folder=parent_folder, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def folder_info(self, trans, cntrller, id, library_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(id)) - except Exception: - folder = None - self._check_access(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('rename_folder_button', False): - self._check_modify(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - new_name = kwd.get('name', '') - new_description = kwd.get('description', '') - if not new_name: - message = 'Enter a valid name' - status = 'error' - else: - folder.name = new_name - folder.description = new_description - trans.sa_session.add(folder) - trans.sa_session.flush() - message = "Information updated for folder '%s'." % escape(folder.name) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='folder_info', - cntrller=cntrller, - use_panels=use_panels, - id=id, - library_id=library_id, - show_deleted=show_deleted, - message=message, - status='done')) - # See if we have any associated templates - widgets = [] - widget_fields_have_contents = False - info_association, inherited = folder.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = folder.get_template_widgets(trans) - widget_fields_have_contents = self.widget_fields_have_contents(widgets) - return trans.fill_template('/library/common/folder_info.mako', - cntrller=cntrller, - use_panels=use_panels, - folder=folder, - library_id=library_id, - widgets=widgets, - widget_fields_have_contents=widget_fields_have_contents, - current_user_roles=current_user_roles, - show_deleted=show_deleted, - info_association=info_association, - inherited=inherited, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def folder_permissions(self, trans, cntrller, id, library_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(id)) - except Exception: - folder = None - self._check_access(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('update_roles_button', False): - # The user clicked the Save button on the 'Associate With Roles' form - permissions = {} - for k, v in trans.app.model.Library.permitted_actions.items(): - if k != 'LIBRARY_ACCESS': - # LIBRARY_ACCESS is a special permission set only at the library level - # and it is not inherited. - in_roles = [trans.sa_session.query(trans.app.model.Role).get(int(x)) for x in util.listify(kwd.get(k + '_in', []))] - permissions[trans.app.security_agent.get_action(v.action)] = in_roles - trans.app.security_agent.set_all_library_permissions(trans, folder, permissions) - trans.sa_session.refresh(folder) - message = "Permissions updated for folder '%s'." % escape(folder.name) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='folder_permissions', - cntrller=cntrller, - use_panels=use_panels, - id=trans.security.encode_id(folder.id), - library_id=library_id, - show_deleted=show_deleted, - message=message, - status='done')) - # If the library is public all roles are legitimate, but if the library - # is restricted, only those roles associated with the LIBRARY_ACCESS - # permission are legitimate. - roles = trans.app.security_agent.get_legitimate_roles(trans, folder.parent_library, cntrller) - return trans.fill_template('/library/common/folder_permissions.mako', - cntrller=cntrller, - use_panels=use_panels, - folder=folder, - library_id=library_id, - current_user_roles=current_user_roles, - roles=roles, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def ldda_edit_info(self, trans, cntrller, library_id, folder_id, id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(trans.security.decode_id(id)) - except Exception: - ldda = None - self._check_access(trans, cntrller, is_admin, ldda, current_user_roles, use_panels, library_id, show_deleted) - self._check_modify(trans, cntrller, is_admin, ldda, current_user_roles, use_panels, library_id, show_deleted) - dbkey = kwd.get('dbkey', '?') - if isinstance(dbkey, list): - dbkey = dbkey[0] - file_formats = [dtype_name for dtype_name, dtype_value in trans.app.datatypes_registry.datatypes_by_extension.items() if dtype_value.allow_datatype_change] - file_formats.sort() - - def __ok_to_edit_metadata(ldda_id): - # prevent modifying metadata when dataset is queued or running as input/output - # This code could be more efficient, i.e. by using mappers, but to prevent slowing down loading a History panel, we'll leave the code here for now - for job_to_dataset_association in trans.sa_session.query( - self.app.model.JobToInputLibraryDatasetAssociation) \ - .filter_by(ldda_id=ldda_id) \ - .all() \ - + trans.sa_session.query(self.app.model.JobToOutputLibraryDatasetAssociation) \ - .filter_by(ldda_id=ldda_id) \ - .all(): - if job_to_dataset_association.job.state not in [job_to_dataset_association.job.states.OK, job_to_dataset_association.job.states.ERROR, job_to_dataset_association.job.states.DELETED]: - return False - return True - - # See if we have any associated templates - widgets = [] - info_association, inherited = ldda.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = ldda.get_template_widgets(trans) - if kwd.get('change', False): - # The user clicked the Save button on the 'Change data type' form - if __ok_to_edit_metadata(ldda.id): - if ldda.datatype.allow_datatype_change and trans.app.datatypes_registry.get_datatype_by_extension(kwd.get('datatype')).allow_datatype_change: - trans.app.datatypes_registry.change_datatype(ldda, kwd.get('datatype')) - trans.sa_session.flush() - message = "Data type changed for library dataset '%s'." % escape(ldda.name) - status = 'done' - else: - message = "You are unable to change datatypes in this manner. Changing %s to %s is not allowed." % (escape(ldda.extension), escape(kwd.get('datatype'))) - status = 'error' - else: - message = "This dataset is currently being used as input or output. You cannot change datatype until the jobs have completed or you have canceled them." - status = "error" - elif kwd.get('save', False): - # The user clicked the Save button on the 'Edit Attributes' form - new_name = kwd.get('name', '') - new_info = kwd.get('info', '') - new_message = escape(kwd.get('message', '')) - if not new_name: - message = 'Enter a valid name' - status = 'error' - else: - ldda.name = new_name - ldda.info = new_info - ldda.message = new_message - if __ok_to_edit_metadata(ldda.id): - # The following for loop will save all metadata_spec items - for name, spec in ldda.datatype.metadata_spec.items(): - if spec.get("readonly"): - continue - optional = kwd.get("is_" + name, None) - if optional and optional == '__NOTHING__': - # optional element... == '__NOTHING__' actually means it is NOT checked (and therefore ommitted) - setattr(ldda.metadata, name, None) - else: - setattr(ldda.metadata, name, spec.unwrap(kwd.get(name, None))) - ldda.metadata.dbkey = dbkey - ldda.datatype.after_setting_metadata(ldda) - message = "Attributes updated for library dataset '%s'." % escape(ldda.name) - status = 'done' - else: - message = "Attributes updated, but metadata could not be changed because this dataset is currently being used as input or output. You must cancel or wait for these jobs to complete before changing metadata." - status = 'warning' - trans.sa_session.flush() - elif kwd.get('detect', False): - # The user clicked the Auto-detect button on the 'Edit Attributes' form - if __ok_to_edit_metadata(ldda.id): - for name, spec in ldda.datatype.metadata_spec.items(): - # We need to be careful about the attributes we are resetting - if name not in ['name', 'info', 'dbkey']: - if spec.get('default'): - setattr(ldda.metadata, name, spec.unwrap(spec.get('default'))) - message = "Attributes have been queued to be updated for library dataset '%s'." % escape(ldda.name) - status = 'done' - trans.app.datatypes_registry.set_external_metadata_tool.tool_action.execute(trans.app.datatypes_registry.set_external_metadata_tool, trans, incoming={'input1': ldda}) - else: - message = "This dataset is currently being used as input or output. You cannot change metadata until the jobs have completed or you have canceled them." - status = 'error' - trans.sa_session.flush() - elif kwd.get('change_extended_metadata', False): - em_string = kwd.get("extended_metadata", "") - if len(em_string): - payload = None - try: - payload = json.loads(em_string) - except Exception: - message = 'Invalid JSON input' - status = 'error' - if payload is not None: - if ldda is not None: - ex_obj = self.get_item_extended_metadata_obj(trans, ldda) - if ex_obj is not None: - self.unset_item_extended_metadata_obj(trans, ldda) - self.delete_extended_metadata(trans, ex_obj) - ex_obj = self.create_extended_metadata(trans, payload) - self.set_item_extended_metadata_obj(trans, ldda, ex_obj) - message = "Updated Extended metadata '%s'." % escape(ldda.name) - status = 'done' - else: - message = "LDDA not found" - status = 'error' - else: - if ldda is not None: - ex_obj = self.get_item_extended_metadata_obj(trans, ldda) - if ex_obj is not None: - self.unset_item_extended_metadata_obj(trans, ldda) - self.delete_extended_metadata(trans, ex_obj) - message = "Deleted Extended metadata '%s'." % escape(ldda.name) - status = 'done' - - if "dbkey" in ldda.datatype.metadata_spec and not ldda.metadata.dbkey: - # Copy dbkey into metadata, for backwards compatability - # This looks like it does nothing, but getting the dbkey - # returns the metadata dbkey unless it is None, in which - # case it resorts to the old dbkey. Setting the dbkey - # sets it properly in the metadata - ldda.metadata.dbkey = ldda.dbkey - return trans.fill_template("/library/common/ldda_edit_info.mako", - cntrller=cntrller, - use_panels=use_panels, - ldda=ldda, - library_id=library_id, - file_formats=file_formats, - widgets=widgets, - current_user_roles=current_user_roles, - show_deleted=show_deleted, - info_association=info_association, - inherited=inherited, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def ldda_info(self, trans, cntrller, library_id, folder_id, id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - show_associated_hdas_and_lddas = util.string_as_bool(kwd.get('show_associated_hdas_and_lddas', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(trans.security.decode_id(id)) - self._check_access(trans, cntrller, is_admin, ldda, current_user_roles, use_panels, library_id, show_deleted) - if is_admin and show_associated_hdas_and_lddas: - # Get all associated hdas and lddas that use the same disk file. - associated_hdas = trans.sa_session.query(trans.model.HistoryDatasetAssociation) \ - .filter(and_(trans.model.HistoryDatasetAssociation.deleted == false(), - trans.model.HistoryDatasetAssociation.dataset_id == ldda.dataset_id)) \ - .all() - associated_lddas = trans.sa_session.query(trans.model.LibraryDatasetDatasetAssociation) \ - .filter(and_(trans.model.LibraryDatasetDatasetAssociation.deleted == false(), - trans.model.LibraryDatasetDatasetAssociation.dataset_id == ldda.dataset_id, - trans.model.LibraryDatasetDatasetAssociation.id != ldda.id)) \ - .all() - else: - associated_hdas = [] - associated_lddas = [] - # See if we have any associated templates - widgets = [] - widget_fields_have_contents = False - info_association, inherited = ldda.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = ldda.get_template_widgets(trans) - widget_fields_have_contents = self.widget_fields_have_contents(widgets) - return trans.fill_template('/library/common/ldda_info.mako', - cntrller=cntrller, - use_panels=use_panels, - ldda=ldda, - library=ldda.library_dataset.folder.parent_library, - show_associated_hdas_and_lddas=show_associated_hdas_and_lddas, - associated_hdas=associated_hdas, - associated_lddas=associated_lddas, - show_deleted=show_deleted, - widgets=widgets, - widget_fields_have_contents=widget_fields_have_contents, - current_user_roles=current_user_roles, - info_association=info_association, - inherited=inherited, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def ldda_permissions(self, trans, cntrller, library_id, folder_id, id, **kwd): - message = str(escape(kwd.get('message', ''))) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - ids = util.listify(id) - lddas = [] - libraries = [] - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - for id in ids: - try: - ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(trans.security.decode_id(id)) - except Exception: - ldda = None - if ldda: - library = ldda.library_dataset.folder.parent_library - self._check_access(trans, cntrller, is_admin, ldda, current_user_roles, use_panels, library_id, show_deleted) - lddas.append(ldda) - libraries.append(library) - library = libraries[0] - if any(x != library for x in libraries): - message = "Library datasets specified span multiple libraries." - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - id=library_id, - cntrller=cntrller, - use_panels=use_panels, - message=message, - status='error')) - # If access to the dataset is restricted, then use the roles associated with the DATASET_ACCESS permission to - # determine the legitimate roles. If the dataset is public, see if access to the library is restricted. If - # it is, use the roles associated with the LIBRARY_ACCESS permission to determine the legitimate roles. If both - # the dataset and the library are public, all roles are legitimate. All of the datasets will have the same - # permissions at this point. - ldda = lddas[0] - if trans.app.security_agent.dataset_is_public(ldda.dataset): - # The dataset is public, so check access to the library - roles = trans.app.security_agent.get_legitimate_roles(trans, library, cntrller) - else: - roles = trans.app.security_agent.get_legitimate_roles(trans, ldda.dataset, cntrller) - if kwd.get('update_roles_button', False): - # Dataset permissions - access_action = trans.app.security_agent.get_action(trans.app.security_agent.permitted_actions.DATASET_ACCESS.action) - manage_permissions_action = trans.app.security_agent.get_action(trans.app.security_agent.permitted_actions.DATASET_MANAGE_PERMISSIONS.action) - permissions, in_roles, error, message = \ - trans.app.security_agent.derive_roles_from_access(trans, trans.app.security.decode_id(library_id), cntrller, library=True, **kwd) - # Keep roles for DATASET_MANAGE_PERMISSIONS on the dataset - if not ldda.has_manage_permissions_roles(trans): - # Permission setting related to DATASET_MANAGE_PERMISSIONS was broken for a period of time, - # so it is possible that some Datasets have no roles associated with the DATASET_MANAGE_PERMISSIONS - # permission. In this case, we'll reset this permission to the ldda user's private role. - # dataset_manage_permissions_roles = [ trans.app.security_agent.get_private_user_role( ldda.user ) ] - permissions[manage_permissions_action] = [trans.app.security_agent.get_private_user_role(ldda.user)] - else: - permissions[manage_permissions_action] = ldda.get_manage_permissions_roles(trans) - for ldda in lddas: - # Set the DATASET permissions on the Dataset. - if error: - # Keep the original role associations for the DATASET_ACCESS permission on the ldda. - permissions[access_action] = ldda.get_access_roles(trans) - status = 'error' - else: - error = trans.app.security_agent.set_all_dataset_permissions(ldda.dataset, permissions) - if error: - message += error - status = 'error' - trans.sa_session.refresh(ldda.dataset) - if not error: - # Set the LIBRARY permissions on the LibraryDataset. The LibraryDataset and - # LibraryDatasetDatasetAssociation will be set with the same permissions. - permissions = {} - for k, v in trans.app.model.Library.permitted_actions.items(): - if k != 'LIBRARY_ACCESS': - # LIBRARY_ACCESS is a special permission set only at the library level and it is not inherited. - in_roles = [trans.sa_session.query(trans.app.model.Role).get(x) for x in util.listify(kwd.get(k + '_in', []))] - permissions[trans.app.security_agent.get_action(v.action)] = in_roles - for ldda in lddas: - error = trans.app.security_agent.set_all_library_permissions(trans, ldda.library_dataset, permissions) - trans.sa_session.refresh(ldda.library_dataset) - if error: - message = error - else: - # Set the LIBRARY permissions on the LibraryDatasetDatasetAssociation - trans.app.security_agent.set_all_library_permissions(trans, ldda, permissions) - trans.sa_session.refresh(ldda) - if len(lddas) == 1: - message = "Permissions updated for dataset '%s'." % escape(ldda.name) - else: - message = 'Permissions updated for %d datasets.' % len(lddas) - status = 'done' - return trans.fill_template("/library/common/ldda_permissions.mako", - cntrller=cntrller, - use_panels=use_panels, - lddas=lddas, - library_id=library_id, - roles=roles, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - if len(ids) > 1: - # Ensure that the permissions across all library items are identical, otherwise we can't update them together. - check_list = [] - for ldda in lddas: - permissions = [] - # Check the library level permissions - the permissions on the LibraryDatasetDatasetAssociation - # will always be the same as the permissions on the associated LibraryDataset. - for library_permission in trans.app.security_agent.get_permissions(ldda.library_dataset): - if library_permission.action not in permissions: - permissions.append(library_permission.action) - for dataset_permission in trans.app.security_agent.get_permissions(ldda.dataset): - if dataset_permission.action not in permissions: - permissions.append(dataset_permission.action) - permissions.sort() - if not check_list: - check_list = permissions - if permissions != check_list: - message = 'The datasets you selected do not have identical permissions, so they can not be updated together' - trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - # Display permission form, permissions will be updated for all lddas simultaneously. - return trans.fill_template("/library/common/ldda_permissions.mako", - cntrller=cntrller, - use_panels=use_panels, - lddas=lddas, - library_id=library_id, - roles=roles, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - def upload_library_dataset(self, trans, cntrller, library_id, folder_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - ldda_message = escape(kwd.get('ldda_message', '')) - # deleted = util.string_as_bool( kwd.get( 'deleted', False ) ) - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - replace_id = kwd.get('replace_id', None) - replace_dataset = None - upload_option = kwd.get('upload_option', 'upload_file') - if kwd.get('files_0|uni_to_posix', False): - to_posix_lines = kwd.get('files_0|to_posix_lines', '') - else: - to_posix_lines = kwd.get('to_posix_lines', '') - if kwd.get('files_0|space_to_tab', False): - space_to_tab = kwd.get('files_0|space_to_tab', '') - else: - space_to_tab = kwd.get('space_to_tab', '') - link_data_only = kwd.get('link_data_only', 'copy_files') - dbkey = kwd.get('dbkey', '?') - if isinstance(dbkey, list): - last_used_build = dbkey[0] - else: - last_used_build = dbkey - roles = kwd.get('roles', '') - is_admin = trans.user_is_admin() and cntrller in ('library_admin', 'api') - current_user_roles = trans.get_current_user_roles() - widgets = [] - info_association, inherited = None, None - template_id = "None" - if replace_id not in ['', None, 'None']: - replace_dataset = trans.sa_session.query(trans.app.model.LibraryDataset).get(trans.security.decode_id(replace_id)) - self._check_access(trans, cntrller, is_admin, replace_dataset, current_user_roles, use_panels, library_id, show_deleted) - self._check_modify(trans, cntrller, is_admin, replace_dataset, current_user_roles, use_panels, library_id, show_deleted) - library = replace_dataset.folder.parent_library - folder = replace_dataset.folder - info_association, inherited = replace_dataset.library_dataset_dataset_association.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = replace_dataset.library_dataset_dataset_association.get_template_widgets(trans) - # The name is stored - by the time the new ldda is created, replace_dataset.name - # will point to the new ldda, not the one it's replacing. - replace_dataset_name = replace_dataset.name - if not last_used_build: - last_used_build = replace_dataset.library_dataset_dataset_association.dbkey - else: - folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(folder_id)) - self._check_access(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_add(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - library = folder.parent_library - if folder and last_used_build in ['None', None, '?']: - last_used_build = folder.genome_build - if kwd.get('runtool_btn', False) or kwd.get('ajax_upload', False) or cntrller == 'api': - error = False - if upload_option == 'upload_paths' and not trans.app.config.allow_library_path_paste: - error = True - message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' - elif upload_option == 'upload_paths' and not is_admin: - error = True - message = 'Uploading files via filesystem paths can only be performed by administrators' - elif upload_option not in ('upload_file', 'upload_directory', 'upload_paths'): - error = True - message = 'Invalid upload_option' - elif roles: - # Check to see if the user selected roles to associate with the DATASET_ACCESS permission - # on the dataset that would cause accessibility issues. - vars = dict(DATASET_ACCESS_in=roles) - permissions, in_roles, error, message = \ - trans.app.security_agent.derive_roles_from_access(trans, library.id, cntrller, library=True, **vars) - if error: - if cntrller == 'api': - return 400, message - trans.response.send_redirect(web.url_for(controller='library_common', - action='upload_library_dataset', - cntrller=cntrller, - library_id=library_id, - folder_id=folder_id, - replace_id=replace_id, - upload_option=upload_option, - show_deleted=show_deleted, - message=message, - status='error')) - else: - # See if we have any inherited templates. - if not info_association: - info_association, inherited = folder.get_info_association(inherited=True) - if info_association and info_association.inheritable: - template_id = str(info_association.template.id) - widgets = folder.get_template_widgets(trans, get_contents=True) - processed_widgets = [] - # The list of widgets may include an AddressField which we need to save if it is new - for index, widget_dict in enumerate(widgets): - widget = widget_dict['widget'] - if isinstance(widget, AddressField): - value = kwd.get(widget.name, '') - if value == 'new': - if self.field_param_values_ok(widget.name, 'AddressField', **kwd): - # Save the new address - address = trans.app.model.UserAddress(user=trans.user) - self.save_widget_field(trans, address, widget.name, **kwd) - widget.value = str(address.id) - widget_dict['widget'] = widget - processed_widgets.append(widget_dict) - # It is now critical to update the value of 'field_%i', replacing the string - # 'new' with the new address id. This is necessary because the upload_dataset() - # method below calls the handle_library_params() method, which does not parse the - # widget fields, it instead pulls form values from kwd. See the FIXME comments in the - # handle_library_params() method, and the CheckboxField code in the next conditional. - kwd[widget.name] = str(address.id) - else: - # The invalid address won't be saved, but we cannot display error - # messages on the upload form due to the ajax upload already occurring. - # When we re-engineer the upload process ( currently under way ), we - # will be able to check the form values before the ajax upload occurs - # in the background. For now, we'll do nothing... - pass - elif isinstance(widget, CheckboxField): - # We need to check the value from kwd since util.Params would have munged the list if - # the checkbox is checked. - value = kwd.get(widget.name, '') - if CheckboxField.is_checked(value): - widget.value = 'true' - widget_dict['widget'] = widget - processed_widgets.append(widget_dict) - kwd[widget.name] = 'true' - else: - processed_widgets.append(widget_dict) - widgets = processed_widgets - created_outputs_dict = trans.webapp.controllers['library_common'].upload_dataset(trans, - cntrller=cntrller, - library_id=trans.security.encode_id(library.id), - folder_id=trans.security.encode_id(folder.id), - template_id=template_id, - widgets=widgets, - replace_dataset=replace_dataset, - **kwd) - if created_outputs_dict: - if cntrller == 'api': - # created_outputs_dict can be a string only if cntrller == 'api' - if type(created_outputs_dict) == str: - return 400, created_outputs_dict - elif type(created_outputs_dict) == tuple: - return created_outputs_dict[0], created_outputs_dict[1] - return 200, created_outputs_dict - total_added = len(created_outputs_dict.keys()) - ldda_id_list = [str(v.id) for v in created_outputs_dict.values()] - created_ldda_ids = ",".join(ldda_id_list) - if replace_dataset: - message = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % (total_added, escape(replace_dataset_name), escape(folder.name)) - else: - if not folder.parent: - # Libraries have the same name as their root_folder - message = "Added %d datasets to the library '%s' (each is selected). " % (total_added, escape(folder.name)) - else: - message = "Added %d datasets to the folder '%s' (each is selected). " % (total_added, escape(folder.name)) - if cntrller == 'library_admin': - message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary." - status = 'done' - else: - # Since permissions on all LibraryDatasetDatasetAssociations must be the same at this point, we only need - # to check one of them to see if the current user can manage permissions on them. - check_ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(ldda_id_list[0]) - if trans.app.security_agent.can_manage_library_item(current_user_roles, check_ldda): - if replace_dataset: - default_action = '' - else: - message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary." - default_action = 'manage_permissions' - else: - default_action = 'import_to_current_history' - trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - default_action=default_action, - created_ldda_ids=created_ldda_ids, - show_deleted=show_deleted, - message=message, - status='done')) - else: - created_ldda_ids = '' - message = "Upload failed" - status = 'error' - if cntrller == 'api': - return 400, message - trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - created_ldda_ids=created_ldda_ids, - show_deleted=show_deleted, - message=message, - status=status)) - # Note: if the upload form was submitted due to refresh_on_change for a form field, we cannot re-populate - # the field for the selected file ( files_0|file_data ) if the user selected one. This is because the value - # attribute of the html input file type field is typically ignored by browsers as a security precaution. - - # See if we have any inherited templates. - if not info_association: - info_association, inherited = folder.get_info_association(inherited=True) - if info_association and info_association.inheritable: - widgets = folder.get_template_widgets(trans, get_contents=True) - if info_association: - # Retain contents of widget fields when form was submitted via refresh_on_change. - widgets = self.populate_widgets_from_kwd(trans, widgets, **kwd) - template_id = str(info_association.template.id) - - # Send list of data formats to the upload form so the "extension" select list can be populated dynamically - file_formats = trans.app.datatypes_registry.upload_file_formats - - dbkeys = trans.app.genomes.get_dbkeys(trans) - dbkeys.sort(key=lambda dbkey: dbkey[0].lower()) - - # Send the current history to the form to enable importing datasets from history to library - history = trans.get_history() - if history is not None: - trans.sa_session.refresh(history) - if upload_option == 'upload_file' and trans.app.config.nginx_upload_path: - # If we're using nginx upload, override the form action - - # url_for is intentionally not used on the base URL here - - # nginx_upload_path is expected to include the proxy prefix if the - # administrator intends for it to be part of the URL. - action = trans.app.config.nginx_upload_path + '?nginx_redir=' + web.url_for(controller='library_common', action='upload_library_dataset') - else: - action = web.url_for(controller='library_common', action='upload_library_dataset') - do_not_display_options = [] - if replace_dataset: - # TODO: Not sure why, but 'upload_paths' is not allowed if replacing a dataset. See self.make_library_uploaded_dataset(). - do_not_display_options = ['upload_directory', 'upload_paths'] - upload_option_select_list = self._build_upload_option_select_list(trans, upload_option, is_admin, do_not_display_options) - roles_select_list = self._build_roles_select_list(trans, cntrller, library, util.listify(roles)) - return trans.fill_template('/library/common/upload.mako', - cntrller=cntrller, - upload_option_select_list=upload_option_select_list, - upload_option=upload_option, - action=action, - library_id=library_id, - folder_id=folder_id, - replace_dataset=replace_dataset, - file_formats=file_formats, - dbkeys=dbkeys, - last_used_build=last_used_build, - roles_select_list=roles_select_list, - history=history, - widgets=widgets, - template_id=template_id, - to_posix_lines=to_posix_lines, - space_to_tab=space_to_tab, - link_data_only=link_data_only, - show_deleted=show_deleted, - ldda_message=ldda_message, - message=escape(message), - status=escape(status)) - - def upload_dataset(self, trans, cntrller, library_id, folder_id, replace_dataset=None, **kwd): - # Set up the traditional tool state/params - tool_id = 'upload1' - tool = trans.app.toolbox.get_tool(tool_id) - state = tool.new_state(trans) - populate_state(trans, tool.inputs, kwd, state.inputs) - tool_params = state.inputs - dataset_upload_inputs = [] - for input_name, input in tool.inputs.items(): - if input.type == "upload_dataset": - dataset_upload_inputs.append(input) - # Library-specific params - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - message = escape(kwd.get('message', '')) - server_dir = kwd.get('server_dir', '') - if replace_dataset not in [None, 'None']: - replace_id = trans.security.encode_id(replace_dataset.id) - else: - replace_id = None - upload_option = kwd.get('upload_option', 'upload_file') - response_code = 200 - if upload_option == 'upload_directory': - if server_dir in [None, 'None', '']: - response_code = 400 - if trans.user_is_admin() and cntrller in ('library_admin', 'api'): - import_dir = trans.app.config.library_import_dir - import_dir_desc = 'library_import_dir' - else: - import_dir = trans.app.config.user_library_import_dir - if server_dir != trans.user.email: - import_dir = os.path.join(import_dir, trans.user.email) - import_dir_desc = 'user_library_import_dir' - full_dir = os.path.join(import_dir, server_dir) - unsafe = None - if safe_relpath(server_dir): - if import_dir_desc == 'user_library_import_dir' and safe_contains(import_dir, full_dir, whitelist=trans.app.config.user_library_import_symlink_whitelist): - for unsafe in unsafe_walk(full_dir, whitelist=[import_dir] + trans.app.config.user_library_import_symlink_whitelist): - log.error('User attempted to import a path that resolves to a path outside of their import dir: %s -> %s', unsafe, os.path.realpath(unsafe)) - else: - log.error('User attempted to import a directory path that resolves to a path outside of their import dir: %s -> %s', server_dir, os.path.realpath(full_dir)) - unsafe = True - if unsafe: - response_code = 403 - message = 'Invalid server_dir' - if import_dir: - message = 'Select a directory' - else: - response_code = 403 - message = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc - elif upload_option == 'upload_paths': - if not trans.app.config.allow_library_path_paste: - response_code = 403 - message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' - # Some error handling should be added to this method. - try: - # FIXME: instead of passing params here ( which have been processed by util.Params(), the original kwd - # should be passed so that complex objects that may have been included in the initial request remain. - library_bunch = upload_common.handle_library_params(trans, kwd, folder_id, replace_dataset) - except Exception: - response_code = 500 - message = "Unable to parse upload parameters, please report this error." - # Proceed with (mostly) regular upload processing if we're still errorless - if response_code == 200: - precreated_datasets = upload_common.get_precreated_datasets(trans, tool_params, trans.app.model.LibraryDatasetDatasetAssociation, controller=cntrller) - if upload_option == 'upload_file': - tool_params = upload_common.persist_uploads(tool_params, trans) - uploaded_datasets = upload_common.get_uploaded_datasets(trans, cntrller, tool_params, precreated_datasets, dataset_upload_inputs, library_bunch=library_bunch) - elif upload_option == 'upload_directory': - uploaded_datasets, response_code, message = self.get_server_dir_uploaded_datasets(trans, cntrller, kwd, full_dir, import_dir_desc, library_bunch, response_code, message) - elif upload_option == 'upload_paths': - uploaded_datasets, response_code, message = self.get_path_paste_uploaded_datasets(trans, cntrller, kwd, library_bunch, response_code, message) - upload_common.cleanup_unused_precreated_datasets(precreated_datasets) - if upload_option == 'upload_file' and not uploaded_datasets: - response_code = 400 - message = 'Select a file, enter a URL or enter text' - if response_code != 200: - if cntrller == 'api': - return (response_code, message) - trans.response.send_redirect(web.url_for(controller='library_common', - action='upload_library_dataset', - cntrller=cntrller, - library_id=library_id, - folder_id=folder_id, - replace_id=replace_id, - upload_option=upload_option, - show_deleted=show_deleted, - message=message, - status='error')) - json_file_path = upload_common.create_paramfile(trans, uploaded_datasets) - data_list = [ud.data for ud in uploaded_datasets] - job_params = {} - job_params['link_data_only'] = json.dumps(kwd.get('link_data_only', 'copy_files')) - job_params['uuid'] = json.dumps(kwd.get('uuid', None)) - job, output = upload_common.create_job(trans, tool_params, tool, json_file_path, data_list, folder=library_bunch.folder, job_params=job_params) - trans.sa_session.add(job) - trans.sa_session.flush() - return output - - def make_library_uploaded_dataset(self, trans, cntrller, params, name, path, type, library_bunch, in_folder=None): - link_data_only = params.get('link_data_only', 'copy_files') - uuid_str = params.get('uuid', None) - file_type = params.get('file_type', None) - library_bunch.replace_dataset = None # not valid for these types of upload - uploaded_dataset = util.bunch.Bunch() - new_name = name - # Remove compressed file extensions, if any, but only if - # we're copying files into Galaxy's file space. - if link_data_only == 'copy_files': - if new_name.endswith('.gz'): - new_name = new_name.rstrip('.gz') - elif new_name.endswith('.zip'): - new_name = new_name.rstrip('.zip') - uploaded_dataset.name = new_name - uploaded_dataset.path = path - uploaded_dataset.type = type - uploaded_dataset.ext = None - uploaded_dataset.file_type = file_type - uploaded_dataset.dbkey = params.get('dbkey', None) - uploaded_dataset.to_posix_lines = params.get('to_posix_lines', None) - uploaded_dataset.space_to_tab = params.get('space_to_tab', None) - uploaded_dataset.tag_using_filenames = params.get('tag_using_filenames', True) - if in_folder: - uploaded_dataset.in_folder = in_folder - uploaded_dataset.data = upload_common.new_upload(trans, cntrller, uploaded_dataset, library_bunch) - uploaded_dataset.link_data_only = link_data_only - uploaded_dataset.uuid = uuid_str - if link_data_only == 'link_to_files': - uploaded_dataset.data.file_name = os.path.abspath(path) - # Since we are not copying the file into Galaxy's managed - # default file location, the dataset should never be purgable. - uploaded_dataset.data.dataset.purgable = False - trans.sa_session.add_all((uploaded_dataset.data, uploaded_dataset.data.dataset)) - trans.sa_session.flush() - return uploaded_dataset - - def get_server_dir_uploaded_datasets(self, trans, cntrller, params, full_dir, import_dir_desc, library_bunch, response_code, message): - dir_response = self._get_server_dir_files(params, full_dir, import_dir_desc) - files = dir_response[0] - if not files: - return dir_response - uploaded_datasets = [] - for file in files: - name = os.path.basename(file) - uploaded_datasets.append(self.make_library_uploaded_dataset(trans, cntrller, params, name, file, 'server_dir', library_bunch)) - return uploaded_datasets, 200, None - - def _get_server_dir_files(self, params, full_dir, import_dir_desc): - files = [] - try: - for entry in os.listdir(full_dir): - # Only import regular files - path = os.path.join(full_dir, entry) - link_data_only = params.get('link_data_only', 'copy_files') - if os.path.islink(full_dir) and link_data_only == 'link_to_files': - # If we're linking instead of copying and the - # sub-"directory" in the import dir is actually a symlink, - # dereference the symlink, but not any of its contents. - link_path = os.readlink(full_dir) - if os.path.isabs(link_path): - path = os.path.join(link_path, entry) - else: - path = os.path.abspath(os.path.join(link_path, entry)) - elif os.path.islink(path) and os.path.isfile(path) and link_data_only == 'link_to_files': - # If we're linking instead of copying and the "file" in the - # sub-directory of the import dir is actually a symlink, - # dereference the symlink (one dereference only, Vasili). - link_path = os.readlink(path) - if os.path.isabs(link_path): - path = link_path - else: - path = os.path.abspath(os.path.join(os.path.dirname(path), link_path)) - if os.path.isfile(path): - files.append(path) - except Exception as e: - message = "Unable to get file list for configured %s, error: %s" % (import_dir_desc, str(e)) - response_code = 500 - return None, response_code, message - if not files: - message = "The directory '%s' contains no valid files" % full_dir - response_code = 400 - return None, response_code, message - return files, None, None - - def get_path_paste_uploaded_datasets(self, trans, cntrller, params, library_bunch, response_code, message): - preserve_dirs = util.string_as_bool(params.get('preserve_dirs', False)) - uploaded_datasets = [] - (files_and_folders, _response_code, _message) = self._get_path_files_and_folders(params, preserve_dirs) - if _response_code: - return (uploaded_datasets, _response_code, _message) - for (path, name, folder) in files_and_folders: - uploaded_datasets.append(self.make_library_uploaded_dataset(trans, cntrller, params, name, path, 'path_paste', library_bunch, folder)) - return uploaded_datasets, 200, None - - def _get_path_files_and_folders(self, params, preserve_dirs): - problem_response = self._check_path_paste_params(params) - if problem_response: - return problem_response - files_and_folders = [] - for (line, path) in self._paths_list(params): - line_files_and_folders = self._get_single_path_files_and_folders(line, path, preserve_dirs) - files_and_folders.extend(line_files_and_folders) - return files_and_folders, None, None - - def _get_single_path_files_and_folders(self, line, path, preserve_dirs): - files_and_folders = [] - if os.path.isfile(path): - name = os.path.basename(path) - files_and_folders.append((path, name, None)) - for basedir, dirs, files in os.walk(line): - for file in files: - file_path = os.path.abspath(os.path.join(basedir, file)) - if preserve_dirs: - in_folder = os.path.dirname(file_path.replace(path, '', 1).lstrip('/')) - else: - in_folder = None - files_and_folders.append((file_path, file, in_folder)) - return files_and_folders - - def _paths_list(self, params): - return [(l.strip(), os.path.abspath(l.strip())) for l in params.get('filesystem_paths', '').splitlines() if l.strip()] - - def _check_path_paste_params(self, params): - if params.get('filesystem_paths', '') == '': - message = "No paths entered in the upload form" - response_code = 400 - return None, response_code, message - bad_paths = [] - for (_, path) in self._paths_list(params): - if not os.path.exists(path): - bad_paths.append(path) - if bad_paths: - message = 'Invalid paths: "%s".' % '", "'.join(bad_paths) - response_code = 400 - return None, response_code, message - return None - - @web.expose - @web.require_admin - def add_history_datasets_to_library(self, trans, cntrller, library_id, folder_id, hda_ids='', **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - ldda_message = escape(kwd.get('ldda_message', '')) - show_deleted = kwd.get('show_deleted', False) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - replace_id = kwd.get('replace_id', None) - replace_dataset = None - upload_option = kwd.get('upload_option', 'import_from_history') - if kwd.get('files_0|to_posix_lines', False): - to_posix_lines = kwd.get('files_0|to_posix_lines', '') - else: - to_posix_lines = kwd.get('to_posix_lines', '') - if kwd.get('files_0|space_to_tab', False): - space_to_tab = kwd.get('files_0|space_to_tab', '') - else: - space_to_tab = kwd.get('space_to_tab', '') - link_data_only = kwd.get('link_data_only', 'copy_files') - dbkey = kwd.get('dbkey', '?') - if isinstance(dbkey, list): - last_used_build = dbkey[0] - else: - last_used_build = dbkey - roles = kwd.get('roles', '') - is_admin = trans.user_is_admin() and cntrller in ('library_admin', 'api') - current_user_roles = trans.get_current_user_roles() - info_association, inherited = None, None - template_id = "None" - if replace_id not in [None, 'None']: - try: - replace_dataset = trans.sa_session.query(trans.app.model.LibraryDataset).get(trans.security.decode_id(replace_id)) - except Exception: - replace_dataset = None - self._check_access(trans, cntrller, is_admin, replace_dataset, current_user_roles, use_panels, library_id, show_deleted) - self._check_modify(trans, cntrller, is_admin, replace_dataset, current_user_roles, use_panels, library_id, show_deleted) - library = replace_dataset.folder.parent_library - folder = replace_dataset.folder - last_used_build = replace_dataset.library_dataset_dataset_association.dbkey - info_association, inherited = replace_dataset.library_dataset_dataset_association.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - template_id = str(info_association.template.id) - else: - folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(folder_id)) - self._check_access(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_add(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - library = folder.parent_library - last_used_build = folder.genome_build - # See if the current history is empty - history = trans.get_history() - trans.sa_session.refresh(history) - if not history.active_datasets: - message = 'Your current history is empty' - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - if kwd.get('add_history_datasets_to_library_button', False): - hda_ids = util.listify(hda_ids) - if hda_ids: - dataset_names = [] - created_ldda_ids = '' - for hda_id in hda_ids: - try: - hda = trans.sa_session.query(trans.app.model.HistoryDatasetAssociation).get(trans.security.decode_id(hda_id)) - except Exception: - hda = None - self._check_access(trans, cntrller, is_admin, hda, current_user_roles, use_panels, library_id, show_deleted) - if roles: - role_ids = roles.split(',') - role_obj_list = [trans.sa_session.query(trans.model.Role).get(role_id) for role_id in role_ids] - else: - role_obj_list = [] - ldda = hda.to_library_dataset_dataset_association(trans, - target_folder=folder, - replace_dataset=replace_dataset, - roles=role_obj_list, - ldda_message=ldda_message) - created_ldda_ids = '%s,%s' % (created_ldda_ids, str(ldda.id)) - dataset_names.append(ldda.name) - if not replace_dataset: - # If replace_dataset is None, the Library level permissions will be taken from the folder and applied to the new - # LDDA and LibraryDataset. - trans.app.security_agent.copy_library_permissions(trans, folder, ldda) - trans.app.security_agent.copy_library_permissions(trans, folder, ldda.library_dataset) - else: - library_bunch = upload_common.handle_library_params(trans, kwd, folder_id, replace_dataset) - if library_bunch.template and library_bunch.template_field_contents: - # Since information templates are inherited, the template fields can be displayed on the upload form. - # If the user has added field contents, we'll need to create a new form_values and info_association - # for the new library_dataset_dataset_association object. - # Create a new FormValues object, using the template we previously retrieved - form_values = trans.app.model.FormValues(library_bunch.template, library_bunch.template_field_contents) - trans.sa_session.add(form_values) - trans.sa_session.flush() - # Create a new info_association between the current ldda and form_values - info_association = trans.app.model.LibraryDatasetDatasetInfoAssociation(ldda, library_bunch.template, form_values) - trans.sa_session.add(info_association) - trans.sa_session.flush() - # Make sure to apply any defined dataset permissions, allowing the permissions inherited from the folder to - # over-ride the same permissions on the dataset, if they exist. - dataset_permissions_dict = trans.app.security_agent.get_permissions(hda.dataset) - current_library_dataset_actions = [permission.action for permission in ldda.library_dataset.actions] - # The DATASET_MANAGE_PERMISSIONS permission on a dataset is a special case because if - # it exists, then we need to apply the LIBRARY_MANAGE permission to the library dataset. - dataset_manage_permissions_action = trans.app.security_agent.get_action('DATASET_MANAGE_PERMISSIONS').action - flush_needed = False - for action, dataset_permissions_roles in dataset_permissions_dict.items(): - if isinstance(action, Action): - action = action.action - if action == dataset_manage_permissions_action: - # Apply the LIBRARY_MANAGE permission to the library dataset. - action = trans.app.security_agent.get_action('LIBRARY_MANAGE').action - # Allow the permissions inherited from the folder to over-ride the same permissions on the dataset. - if action not in current_library_dataset_actions: - for ldp in [trans.model.LibraryDatasetPermissions(action, ldda.library_dataset, role) for role in dataset_permissions_roles]: - trans.sa_session.add(ldp) - flush_needed = True - if flush_needed: - trans.sa_session.flush() - # Permissions must be the same on the LibraryDatasetDatasetAssociation and the associated LibraryDataset - trans.app.security_agent.copy_library_permissions(trans, ldda.library_dataset, ldda) - if created_ldda_ids: - created_ldda_ids = created_ldda_ids.lstrip(',') - ldda_id_list = created_ldda_ids.split(',') - total_added = len(ldda_id_list) - if replace_dataset: - message = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % (total_added, escape(replace_dataset.name), escape(folder.name)) - else: - if not folder.parent: - # Libraries have the same name as their root_folder - message = "Added %d datasets to the library '%s' (each is selected). " % (total_added, escape(folder.name)) - else: - message = "Added %d datasets to the folder '%s' (each is selected). " % (total_added, escape(folder.name)) - if cntrller == 'library_admin': - message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary." - else: - # Since permissions on all LibraryDatasetDatasetAssociations must be the same at this point, we only need - # to check one of them to see if the current user can manage permissions on them. - check_ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(ldda_id_list[0]) - if trans.app.security_agent.can_manage_library_item(current_user_roles, check_ldda): - if not replace_dataset: - message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary." - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - created_ldda_ids=created_ldda_ids, - show_deleted=show_deleted, - message=message, - status='done')) - else: - message = 'Select at least one dataset from the list of active datasets in your current history' - status = 'error' - upload_option = kwd.get('upload_option', 'import_from_history') - # Send list of data formats to the upload form so the "extension" select list can be populated dynamically - file_formats = trans.app.datatypes_registry.upload_file_formats - # Send list of genome builds to the form so the "dbkey" select list can be populated dynamically - - def get_dbkey_options(last_used_build): - for dbkey, build_name in trans.app.genome_builds.get_genome_build_names(trans=trans): - yield build_name, dbkey, (dbkey == last_used_build) - dbkeys = get_dbkey_options(last_used_build) - # Send the current history to the form to enable importing datasets from history to library - history = trans.get_history() - trans.sa_session.refresh(history) - action = 'add_history_datasets_to_library' - upload_option_select_list = self._build_upload_option_select_list(trans, upload_option, is_admin) - roles_select_list = self._build_roles_select_list(trans, cntrller, library, util.listify(roles)) - return trans.fill_template("/library/common/upload.mako", - cntrller=cntrller, - upload_option_select_list=upload_option_select_list, - upload_option=upload_option, - action=action, - library_id=library_id, - folder_id=folder_id, - replace_dataset=replace_dataset, - file_formats=file_formats, - dbkeys=dbkeys, - last_used_build=last_used_build, - roles_select_list=roles_select_list, - history=history, - widgets=[], - template_id=template_id, - to_posix_lines=to_posix_lines, - space_to_tab=space_to_tab, - link_data_only=link_data_only, - show_deleted=show_deleted, - ldda_message=ldda_message, - message=escape(message), - status=escape(status)) - - def _build_roles_select_list(self, trans, cntrller, library, selected_role_ids=[]): - # Get the list of legitimate roles to display on the upload form. If the library is public, - # all active roles are legitimate. If the library is restricted by the LIBRARY_ACCESS permission, only - # the set of all roles associated with users that have that permission are legitimate. - legitimate_roles = trans.app.security_agent.get_legitimate_roles(trans, library, cntrller) - if legitimate_roles: - # Build the roles multi-select list using the list of legitimate roles, making sure to select any that - # were selected before refresh_on_change, if one occurred. - roles_select_list = SelectField("roles", multiple="true", size="5") - for role in legitimate_roles: - selected = str(role.id) in selected_role_ids - roles_select_list.add_option(text=role.name, value=str(role.id), selected=selected) - return roles_select_list - else: - return None - - def _build_upload_option_select_list(self, trans, upload_option, is_admin, do_not_include_values=[]): - # Build the upload_option select list. The do_not_include_values param can contain options that - # should not be included in the list. For example, the 'upload_directory' option should not be - # included if uploading a new version of a library dataset. - upload_refresh_on_change_values = [] - for option_value, option_label in trans.model.LibraryDataset.upload_options: - if option_value not in do_not_include_values: - upload_refresh_on_change_values.append(option_value) - upload_option_select_list = SelectField('upload_option', - refresh_on_change=True, - refresh_on_change_values=upload_refresh_on_change_values) - for option_value, option_label in trans.model.LibraryDataset.upload_options: - if option_value not in do_not_include_values: - if option_value == 'upload_directory': - if is_admin and not trans.app.config.library_import_dir: - continue - elif not is_admin: - if not trans.app.config.user_library_import_dir: - continue - path = os.path.join(trans.app.config.user_library_import_dir, trans.user.email) - if not os.path.isdir(path): - try: - os.makedirs(path) - except Exception: - continue - elif option_value == 'upload_paths': - if not is_admin or not trans.app.config.allow_library_path_paste: - continue - upload_option_select_list.add_option(option_label, option_value, selected=option_value == upload_option) - return upload_option_select_list - - @web.expose - @web.require_admin - def download_dataset_from_folder(self, trans, cntrller, id, library_id=None, **kwd): - """Catches the dataset id and displays file contents as directed""" - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(trans.security.decode_id(id)) - except Exception: - ldda = None - self._check_access(trans, cntrller, is_admin, ldda, current_user_roles, use_panels, library_id, show_deleted) - composite_extensions = trans.app.datatypes_registry.get_composite_extensions() - ext = ldda.extension - if ext in composite_extensions: - # is composite - must return a zip of contents and the html file itself - ugh - should be reversible at upload! - # use act_on_multiple_datasets( self, trans, cntrller, library_id, ldda_ids='', **kwd ) since it does what we need - kwd['do_action'] = 'zip' - return self.act_on_multiple_datasets(trans, cntrller, library_id, ldda_ids=[id, ], **kwd) - else: - trans.response.set_content_type(ldda.get_mime()) - fStat = os.stat(ldda.file_name) - trans.response.headers['Content-Length'] = int(fStat.st_size) - fname = ldda.name - fname = ''.join(c in FILENAME_VALID_CHARS and c or '_' for c in fname)[0:150] - trans.response.headers["Content-Disposition"] = 'attachment; filename="%s"' % fname - try: - return open(ldda.file_name) - except Exception: - message = 'This dataset contains no content' - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - - @web.expose - @web.require_admin - def library_dataset_info(self, trans, cntrller, id, library_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - library_dataset = trans.sa_session.query(trans.app.model.LibraryDataset).get(trans.security.decode_id(id)) - except Exception: - library_dataset = None - self._check_access(trans, cntrller, is_admin, library_dataset, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('edit_attributes_button', False): - self._check_modify(trans, cntrller, is_admin, library_dataset, current_user_roles, use_panels, library_id, show_deleted) - new_name = kwd.get('name', '') - new_info = kwd.get('info', '') - if not new_name: - message = 'Enter a valid name' - status = 'error' - else: - library_dataset.name = new_name - library_dataset.info = new_info - trans.sa_session.add(library_dataset) - trans.sa_session.flush() - message = "Information updated for library dataset '%s'." % escape(library_dataset.name) - status = 'done' - # See if we have any associated templates - widgets = [] - widget_fields_have_contents = False - info_association, inherited = library_dataset.library_dataset_dataset_association.get_info_association() - if info_association and (not(inherited) or info_association.inheritable): - widgets = library_dataset.library_dataset_dataset_association.get_template_widgets(trans) - widget_fields_have_contents = self.widget_fields_have_contents(widgets) - return trans.fill_template('/library/common/library_dataset_info.mako', - cntrller=cntrller, - use_panels=use_panels, - library_dataset=library_dataset, - library_id=library_id, - current_user_roles=current_user_roles, - info_association=info_association, - inherited=inherited, - widgets=widgets, - widget_fields_have_contents=widget_fields_have_contents, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def library_dataset_permissions(self, trans, cntrller, id, library_id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - try: - library_dataset = trans.sa_session.query(trans.app.model.LibraryDataset).get(trans.security.decode_id(id)) - except Exception: - library_dataset = None - self._check_access(trans, cntrller, is_admin, library_dataset, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, library_dataset, current_user_roles, use_panels, library_id, show_deleted) - if kwd.get('update_roles_button', False): - # The user clicked the Save button on the 'Associate With Roles' form - permissions = {} - for k, v in trans.app.model.Library.permitted_actions.items(): - if k != 'LIBRARY_ACCESS': - # LIBRARY_ACCESS is a special permission set only at the library level - # and it is not inherited. - in_roles = [trans.sa_session.query(trans.app.model.Role).get(x) for x in util.listify(kwd.get(k + '_in', []))] - permissions[trans.app.security_agent.get_action(v.action)] = in_roles - # Set the LIBRARY permissions on the LibraryDataset - # NOTE: the LibraryDataset and LibraryDatasetDatasetAssociation will be set with the same permissions - error = trans.app.security_agent.set_all_library_permissions(trans, library_dataset, permissions) - trans.sa_session.refresh(library_dataset) - if error: - message = error - status = 'error' - else: - # Set the LIBRARY permissions on the LibraryDatasetDatasetAssociation - trans.app.security_agent.set_all_library_permissions(trans, library_dataset.library_dataset_dataset_association, permissions) - trans.sa_session.refresh(library_dataset.library_dataset_dataset_association) - message = "Permisisons updated for library dataset '%s'." % escape(library_dataset.name) - status = 'done' - roles = trans.app.security_agent.get_legitimate_roles(trans, library_dataset, cntrller) - return trans.fill_template('/library/common/library_dataset_permissions.mako', - cntrller=cntrller, - use_panels=use_panels, - library_dataset=library_dataset, - library_id=library_id, - roles=roles, - current_user_roles=current_user_roles, - show_deleted=show_deleted, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def make_library_item_public(self, trans, cntrller, library_id, item_type, id, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - current_user_roles = trans.get_current_user_roles() - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - if item_type == 'library': - library = trans.sa_session.query(trans.model.Library).get(trans.security.decode_id(id)) - self._check_access(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, library, current_user_roles, use_panels, library_id, show_deleted) - contents = util.string_as_bool(kwd.get('contents', 'False')) - trans.app.security_agent.make_library_public(library, contents=contents) - if contents: - message = "The data library (%s) and all its contents have been made publicly accessible." % escape(library.name) - else: - message = "The data library (%s) has been made publicly accessible, but access to its contents has been left unchanged." % escape(library.name) - elif item_type == 'folder': - folder = trans.sa_session.query(trans.model.LibraryFolder).get(trans.security.decode_id(id)) - self._check_access(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, folder, current_user_roles, use_panels, library_id, show_deleted) - trans.app.security_agent.make_folder_public(folder) - message = "All of the contents of folder (%s) have been made publicly accessible." % escape(folder.name) - elif item_type == 'ldda': - ldda = trans.sa_session.query(trans.model.LibraryDatasetDatasetAssociation).get(trans.security.decode_id(id)) - self._check_access(trans, cntrller, is_admin, ldda.library_dataset, current_user_roles, use_panels, library_id, show_deleted) - self._check_manage(trans, cntrller, is_admin, ldda.library_dataset, current_user_roles, use_panels, library_id, show_deleted) - trans.app.security_agent.make_dataset_public(ldda.dataset) - message = "The libary dataset (%s) has been made publicly accessible." % escape(ldda.name) - else: - message = "Invalid item_type (%s) received." % escape(str(item_type)) - status = 'error' - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status=status)) - - @web.expose - @web.require_admin - def act_on_multiple_datasets(self, trans, cntrller, library_id=None, ldda_ids='', **kwd): - # This method is called from 1 of 3 places: - # - this controller's download_dataset_from_folder() method - # - he browse_library.mako template - # - the library_dataset_search_results.mako template - # In the last case above, we will not have a library_id - class NgxZip(object): - def __init__(self, url_base): - self.files = {} - self.url_base = url_base - - def add(self, file, relpath): - self.files[file] = relpath - - def __str__(self): - rval = '' - for fname, relpath in self.files.items(): - crc = '-' - size = os.stat(fname).st_size - quoted_fname = quote_plus(fname, '/') - rval += '%s %i %s%s %s\r\n' % (crc, size, self.url_base, quoted_fname, relpath) - return rval - # Perform an action on a list of library datasets. - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - action = kwd.get('do_action', None) - lddas = [] - error = False - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - current_user_roles = trans.get_current_user_roles() - current_history = trans.get_history() - if not ldda_ids: - error = True - message = 'You must select at least one dataset.' - elif not action: - error = True - message = 'You must select an action to perform on the selected datasets.' - else: - if action in ['import_to_current_history', 'import_to_histories']: - new_kwd = {} - if current_history is not None and action == 'import_to_current_history': - encoded_current_history_id = trans.security.encode_id(current_history.id) - selected_history_id = encoded_current_history_id - new_kwd['do_action'] = action - new_kwd['target_history_ids'] = encoded_current_history_id - new_kwd['import_datasets_to_histories_button'] = 'Import library datasets' - else: - selected_history_id = '' - return trans.response.send_redirect(web.url_for(controller='library_common', - action='import_datasets_to_histories', - cntrller=cntrller, - library_id=library_id, - selected_history_id=selected_history_id, - ldda_ids=ldda_ids, - use_panels=use_panels, - show_deleted=show_deleted, - message=message, - status=status, - **new_kwd)) - if action == 'move': - if library_id in ['none', 'None', None]: - source_library_id = '' - else: - source_library_id = library_id - return trans.response.send_redirect(web.url_for(controller='library_common', - action='move_library_item', - cntrller=cntrller, - source_library_id=source_library_id, - item_type='ldda', - item_id=ldda_ids, - use_panels=use_panels, - show_deleted=show_deleted, - message=message, - status=status)) - ldda_ids = util.listify(ldda_ids) - for ldda_id in ldda_ids: - try: - # Load the ldda requested and check whether the user has access to them - ldda = self.get_library_dataset_dataset_association(trans, ldda_id) - assert not ldda.dataset.purged - lddas.append(ldda) - except Exception: - ldda = None - message += "Invalid library dataset id (%s) specified. " % str(ldda_id) - if not error: - if action == 'manage_permissions': - valid_ldda_ids = [] - valid_lddas = [] - invalid_lddas = [] - for ldda in lddas: - if is_admin or trans.app.security_agent.can_manage_library_item(current_user_roles, ldda): - valid_lddas.append(ldda) - valid_ldda_ids.append(ldda.id) - else: - invalid_lddas.append(ldda) - if invalid_lddas: - message += "You are not authorized to manage permissions on %s: " % inflector.cond_plural(len(invalid_lddas), "dataset") - for ldda in invalid_lddas: - message += '(%s)' % escape(ldda.name) - message += '. ' - if valid_ldda_ids: - encoded_ldda_ids = [trans.security.encode_id(ldda_id) for ldda_id in valid_ldda_ids] - folder_id = trans.security.encode_id(valid_lddas[0].library_dataset.folder.id) - trans.response.send_redirect(web.url_for(controller='library_common', - action='ldda_permissions', - cntrller=cntrller, - use_panels=use_panels, - library_id=library_id, - folder_id=folder_id, - id=",".join(encoded_ldda_ids), - show_deleted=show_deleted, - message=message, - status=status)) - else: - message = "You are not authorized to manage permissions on any of the selected datasets." - elif action == 'delete': - valid_lddas = [] - invalid_lddas = [] - for ldda in lddas: - if is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, ldda): - valid_lddas.append(ldda) - else: - invalid_lddas.append(ldda) - if invalid_lddas: - message += "You are not authorized to delete %s: " % inflector.cond_plural(len(invalid_lddas), "dataset") - for ldda in invalid_lddas: - message += '(%s)' % ldda.name - message += '. ' - if valid_lddas: - for ldda in valid_lddas: - # Do not delete the association, just delete the library_dataset. The - # cleanup_datasets.py script handles everything else. - ld = ldda.library_dataset - ld.deleted = True - trans.sa_session.add(ld) - trans.sa_session.flush() - num_valid_lddas = len(valid_lddas) - message += "Deleted %i %s." % (num_valid_lddas, inflector.cond_plural(num_valid_lddas, "dataset")) - else: - message = "You are not authorized to delete any of the selected datasets." - elif action in ['zip', 'tgz', 'tbz', 'ngxzip']: - error = False - killme = string.punctuation + string.whitespace - trantab = string.maketrans(killme, '_' * len(killme)) - try: - outext = 'zip' - if action == 'zip': - # Can't use mkstemp - the file must not exist first - tmpd = tempfile.mkdtemp() - util.umask_fix_perms(tmpd, trans.app.config.umask, 0o777, self.app.config.gid) - tmpf = os.path.join(tmpd, 'library_download.' + action) - if trans.app.config.upstream_gzip: - archive = zipfile.ZipFile(tmpf, 'w', zipfile.ZIP_STORED, True) - else: - archive = zipfile.ZipFile(tmpf, 'w', zipfile.ZIP_DEFLATED, True) - archive.add = lambda x, y: archive.write(x, y.encode('CP437')) - elif action == 'tgz': - if trans.app.config.upstream_gzip: - archive = StreamBall('w|') - outext = 'tar' - else: - archive = StreamBall('w|gz') - outext = 'tgz' - elif action == 'tbz': - archive = StreamBall('w|bz2') - outext = 'tbz2' - elif action == 'ngxzip': - archive = NgxZip(trans.app.config.nginx_x_archive_files_base) - except (OSError, zipfile.BadZipfile): - error = True - log.exception("Unable to create archive for download") - message = "Unable to create archive for download, please report this error" - status = 'error' - except Exception: - error = True - log.exception("Unexpected error in create archive for download") - message = "Unable to create archive for download, please report - %s" % sys.exc_info()[0] - status = 'error' - if not error: - composite_extensions = trans.app.datatypes_registry.get_composite_extensions() - seen = [] - for ldda in lddas: - if ldda.dataset.state in ['new', 'upload', 'queued', 'running', 'empty', 'discarded']: - continue - ext = ldda.extension - is_composite = ext in composite_extensions - path = "" - parent_folder = ldda.library_dataset.folder - while parent_folder is not None: - # Exclude the now-hidden "root folder" - if parent_folder.parent is None: - path = os.path.join(parent_folder.library_root[0].name, path) - break - path = os.path.join(parent_folder.name, path) - parent_folder = parent_folder.parent - path += ldda.name - while path in seen: - path += '_' - seen.append(path) - zpath = os.path.split(path)[-1] # comes as base_name/fname - outfname, zpathext = os.path.splitext(zpath) - if is_composite: - # need to add all the components from the extra_files_path to the zip - if zpathext == '': - zpath = '%s.html' % zpath # fake the real nature of the html file - try: - archive.add(ldda.dataset.file_name, zpath) # add the primary of a composite set - except IOError: - error = True - log.exception("Unable to add composite parent %s to temporary library download archive", ldda.dataset.file_name) - message = "Unable to create archive for download, please report this error" - status = 'error' - continue - flist = glob.glob(os.path.join(ldda.dataset.extra_files_path, '*.*')) # glob returns full paths - for fpath in flist: - efp, fname = os.path.split(fpath) - if fname > '': - fname = fname.translate(trantab) - try: - archive.add(fpath, fname) - except IOError: - error = True - log.exception("Unable to add %s to temporary library download archive %s", fname, outfname) - message = "Unable to create archive for download, please report this error" - status = 'error' - continue - else: # simple case - try: - archive.add(ldda.dataset.file_name, path) - except IOError: - error = True - log.exception("Unable to write %s to temporary library download archive", ldda.dataset.file_name) - message = "Unable to create archive for download, please report this error" - status = 'error' - if not error: - if library_id: - lname = trans.sa_session.query(trans.app.model.Library).get(trans.security.decode_id(library_id)).name - else: - # Request must have coe from the library_dataset_search_results page. - lname = 'selected_dataset' - fname = lname.replace(' ', '_') + '_files' - if action == 'zip': - archive.close() - trans.response.set_content_type("application/x-zip-compressed") - trans.response.headers["Content-Disposition"] = 'attachment; filename="%s.%s"' % (fname, outext) - archive = util.streamball.ZipBall(tmpf, tmpd) - archive.wsgi_status = trans.response.wsgi_status() - archive.wsgi_headeritems = trans.response.wsgi_headeritems() - return archive.stream - elif action == 'ngxzip': - trans.response.set_content_type("application/zip") - trans.response.headers["Content-Disposition"] = 'attachment; filename="%s.%s"' % (fname, outext) - trans.response.headers["X-Archive-Files"] = "zip" - return archive - else: - trans.response.set_content_type("application/x-tar") - trans.response.headers["Content-Disposition"] = 'attachment; filename="%s.%s"' % (fname, outext) - archive.wsgi_status = trans.response.wsgi_status() - archive.wsgi_headeritems = trans.response.wsgi_headeritems() - return archive.stream - else: - status = 'error' - message = 'Invalid action (%s) specified.' % escape(str(action)) - if library_id: - # If we have a library_id, browse the associated library - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - current_user_roles=current_user_roles, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status=status)) - else: - # We arrived here from the library_dataset_search_results page, so redirect there. - search_term = kwd.get('search_term', '') - comptypes = get_comptypes(trans) - return trans.fill_template('/library/common/library_dataset_search_results.mako', - cntrller=cntrller, - current_user_roles=current_user_roles, - search_term=search_term, - comptypes=comptypes, - lddas=lddas, - show_deleted=show_deleted, - use_panels=use_panels, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def import_datasets_to_histories(self, trans, cntrller, library_id='', folder_id='', ldda_ids='', target_history_id='', target_history_ids='', new_history_name='', **kwd): - # This method is called from one of the following places: - # - a menu option for a library dataset ( ldda_ids is a single ldda id ) - # - a menu option for a library folder ( folder_id has a value ) - # - a select list option for acting on multiple selected datasets within a library - # ( ldda_ids is a comma separated string of ldda ids ) - # - a menu option for a library dataset search result set ( ldda_ids is a comma separated string of ldda ids ) - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - action = kwd.get('do_action', None) - user = trans.get_user() - current_history = trans.get_history() - if library_id: - library = trans.sa_session.query(trans.model.Library).get(trans.security.decode_id(library_id)) - else: - library = None - if folder_id: - folder = trans.sa_session.query(trans.model.LibraryFolder).get(trans.security.decode_id(folder_id)) - else: - folder = None - ldda_ids = util.listify(ldda_ids) - if ldda_ids: - ldda_ids = list(map(trans.security.decode_id, ldda_ids)) - if target_history_ids: - target_history_ids = util.listify(target_history_ids) - target_history_ids = set( - [trans.security.decode_id(thid) - for thid in target_history_ids if thid]) - elif target_history_id: - target_history_ids = [trans.security.decode_id(target_history_id)] - if kwd.get('import_datasets_to_histories_button', False): - invalid_datasets = 0 - if not ldda_ids or not (target_history_ids or new_history_name): - message = "You must provide one or more source library datasets and one or more target histories." - status = 'error' - else: - if new_history_name: - new_history = trans.app.model.History() - new_history.name = new_history_name - new_history.user = user - trans.sa_session.add(new_history) - trans.sa_session.flush() - target_history_ids = [new_history.id] - target_histories = [new_history] - elif user: - target_histories = [hist for hist in map(trans.sa_session.query(trans.app.model.History).get, target_history_ids) if (hist is not None and hist.user == user)] - else: - target_histories = [current_history] - if len(target_histories) != len(target_history_ids): - message += "You do not have permission to add datasets to %i requested histories. " % (len(target_history_ids) - len(target_histories)) - status = 'error' - flush_needed = False - for ldda in map(trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get, ldda_ids): - if ldda is None: - message += "You tried to import a dataset that does not exist. " - status = 'error' - invalid_datasets += 1 - elif ldda.dataset.state not in [trans.model.Dataset.states.OK, trans.model.Dataset.states.ERROR]: - message += "You cannot import dataset '%s' since its state is '%s'. " % (escape(ldda.name), ldda.dataset.state) - status = 'error' - invalid_datasets += 1 - elif not ldda.has_data(): - message += "You cannot import empty dataset '%s'. " % escape(ldda.name) - status = 'error' - invalid_datasets += 1 - else: - for target_history in target_histories: - ldda.to_history_dataset_association(target_history=target_history, add_to_history=True) - if not flush_needed: - flush_needed = True - if flush_needed: - trans.sa_session.flush() - hist_names_str = ", ".join([target_history.name for target_history in target_histories]) - num_source = len(ldda_ids) - invalid_datasets - num_target = len(target_histories) - message += "%i %s imported into %i %s: %s" % (num_source, - inflector.cond_plural(num_source, "dataset"), - num_target, - inflector.cond_plural(num_target, "history"), - hist_names_str) - trans.sa_session.refresh(current_history) - current_user_roles = trans.get_current_user_roles() - source_lddas = [] - if folder: - for library_dataset in folder.datasets: - ldda = library_dataset.library_dataset_dataset_association - if not ldda.deleted and trans.app.security_agent.can_access_library_item(current_user_roles, ldda, trans.user): - source_lddas.append(ldda) - elif ldda_ids: - for ldda_id in ldda_ids: - # Secuirty access permiision chcck is not needed here since the current user had access - # to the lddas in order for the menu optin to be available. - ldda = trans.sa_session.query(trans.model.LibraryDatasetDatasetAssociation).get(ldda_id) - source_lddas.append(ldda) - if current_history is None: - current_history = trans.get_history(create=True) - if current_history is not None: - target_histories = [current_history] - else: - target_histories = [] - message = 'You must have a history before you can import datasets. You can do this by loading the analysis interface.' - status = 'error' - if user: - target_histories = user.active_histories - if action == 'import_to_current_history' and library_id: - # To streamline this as much as possible, go back to browsing the library. - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - message=message, - status=status)) - return trans.fill_template("/library/common/import_datasets_to_histories.mako", - cntrller=cntrller, - library=library, - current_history=current_history, - ldda_ids=ldda_ids, - target_history_id=target_history_id, - target_history_ids=target_history_ids, - source_lddas=source_lddas, - target_histories=target_histories, - new_history_name=new_history_name, - show_deleted=show_deleted, - use_panels=use_panels, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def manage_template_inheritance(self, trans, cntrller, item_type, library_id, folder_id=None, ldda_id=None, **kwd): - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - message = escape(kwd.get('message', '')) - is_admin = (trans.user_is_admin() and cntrller == 'library_admin') - current_user_roles = trans.get_current_user_roles() - try: - item, item_desc, action, id = self.get_item_and_stuff(trans, - item_type=item_type, - library_id=library_id, - folder_id=folder_id, - ldda_id=ldda_id, - is_admin=is_admin) - except ValueError: - return None - if not (is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, item)): - message = "You are not authorized to modify %s '%s'." % (escape(item_desc), escape(item.name)) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - info_association, inherited = item.get_info_association(restrict=True) - if info_association: - if info_association.inheritable: - message = "The template for this %s will no longer be inherited to contained folders and datasets." % escape(item_desc) - else: - message = "The template for this %s will now be inherited to contained folders and datasets." % escape(item_desc) - info_association.inheritable = not(info_association.inheritable) - trans.sa_session.add(info_association) - trans.sa_session.flush() - return trans.response.send_redirect(web.url_for(controller='library_common', - action=action, - cntrller=cntrller, - use_panels=use_panels, - library_id=library_id, - folder_id=folder_id, - id=id, - show_deleted=show_deleted, - message=message, - status='done')) - - @web.expose - @web.require_admin - def move_library_item(self, trans, cntrller, item_type, item_id, source_library_id='', make_target_current=True, **kwd): - # This method is called from one of the following places: - # - a menu option for a library dataset ( item_type is 'ldda' and item_id is a single ldda id ) - # - a menu option for a library folder ( item_type is 'folder' and item_id is a single folder id ) - # - a select list option for acting on multiple selected datasets within a library ( item_type is - # 'ldda' and item_id is a comma separated string of ldda ids ) - # - a menu option for a library dataset search result set ( item_type is 'ldda' and item_id is a - # comma separated string of ldda ids ) - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - make_target_current = util.string_as_bool(make_target_current) - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - user = trans.get_user() - current_user_roles = trans.get_current_user_roles() - move_ldda_ids = [] - move_lddas = [] - move_folder_id = [] - move_folder = None - if source_library_id: - source_library = trans.sa_session.query(trans.model.Library).get(trans.security.decode_id(source_library_id)) - else: - # Request sent from the library_dataset_search_results page. - source_library = None - target_library_id = kwd.get('target_library_id', '') - if target_library_id not in ['', 'none', None]: - target_library = trans.sa_session.query(trans.model.Library).get(trans.security.decode_id(target_library_id)) - elif make_target_current: - target_library = source_library - else: - target_library = None - target_folder_id = kwd.get('target_folder_id', '') - if target_folder_id not in ['', 'none', None]: - target_folder = trans.sa_session.query(trans.model.LibraryFolder).get(trans.security.decode_id(target_folder_id)) - if target_library is None: - target_library = target_folder.parent_library - else: - target_folder = None - if item_type == 'ldda': - # We've been called from a menu option for a library dataset search result set - move_ldda_ids = util.listify(item_id) - if move_ldda_ids: - move_ldda_ids = list(map(trans.security.decode_id, move_ldda_ids)) - elif item_type == 'folder': - move_folder_id = item_id - move_folder = trans.sa_session.query(trans.model.LibraryFolder).get(trans.security.decode_id(move_folder_id)) - if kwd.get('move_library_item_button', False): - if not (move_ldda_ids or move_folder_id) or target_folder_id in ['', 'none', None]: - message = "You must select a source folder or one or more source datasets, and a target folder." - status = 'error' - else: - valid_lddas = [] - invalid_lddas = [] - invalid_items = 0 - flush_required = False - if item_type == 'ldda': - for ldda in map(trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get, move_ldda_ids): - if ldda is None: - message += "You tried to move a dataset that does not exist. " - status = 'error' - invalid_items += 1 - elif ldda.dataset.state not in [trans.model.Dataset.states.OK, trans.model.Dataset.states.ERROR]: - message += "You cannot move dataset '%s' since its state is '%s'. " % (ldda.name, ldda.dataset.state) - status = 'error' - invalid_items += 1 - elif not ldda.has_data(): - message += "You cannot move empty dataset '%s'. " % ldda.name - status = 'error' - invalid_items += 1 - else: - if is_admin: - library_dataset = ldda.library_dataset - library_dataset.folder = target_folder - trans.sa_session.add(library_dataset) - flush_required = True - else: - if trans.app.security_agent.can_modify_library_item(current_user_roles, ldda): - valid_lddas.append(ldda) - library_dataset = ldda.library_dataset - library_dataset.folder = target_folder - trans.sa_session.add(library_dataset) - flush_required = True - else: - invalid_items += 1 - invalid_lddas.append(ldda) - if not valid_lddas: - message = "You are not authorized to move any of the selected datasets." - elif invalid_lddas: - message += "You are not authorized to move %s: " % inflector.cond_plural(len(invalid_lddas), "dataset") - for ldda in invalid_lddas: - message += '(%s)' % escape(ldda.name) - message += '. ' - num_source = len(move_ldda_ids) - invalid_items - message = "%i %s moved to folder (%s) within data library (%s)" % (num_source, - inflector.cond_plural(num_source, "dataset"), - target_folder.name, - target_library.name) - elif item_type == 'folder': - move_folder = trans.sa_session.query(trans.app.model.LibraryFolder) \ - .get(trans.security.decode_id(move_folder_id)) - if move_folder is None: - message += "You tried to move a folder that does not exist. " - status = 'error' - invalid_items += 1 - else: - move_folder.parent = target_folder - trans.sa_session.add(move_folder) - flush_required = True - message = "Moved folder (%s) to folder (%s) within data library (%s) " % (escape(move_folder.name), - escape(target_folder.name), - escape(target_library.name)) - if flush_required: - trans.sa_session.flush() - if target_library: - if is_admin: - target_library_folders = target_library.get_active_folders(target_library.root_folder) - else: - folders_with_permission_to_add = [] - for folder in target_library.get_active_folders(target_library.root_folder): - if trans.app.security_agent.can_add_library_item(current_user_roles, folder): - folders_with_permission_to_add.append(folder) - target_library_folders = folders_with_permission_to_add - else: - target_library_folders = [] - if item_type == 'ldda': - for ldda_id in move_ldda_ids: - # TODO: It is difficult to filter out undesired folders (e.g. the ldda's current - # folder) if we have a list of lddas, but we may want to filter folders that - # are easily handled. - ldda = trans.sa_session.query(trans.model.LibraryDatasetDatasetAssociation).get(ldda_id) - move_lddas.append(ldda) - elif item_type == 'folder': - def __is_contained_in(folder1, folder2): - # Return True if folder1 is contained in folder2 - if folder1.parent: - if folder1.parent == folder2: - return True - return __is_contained_in(folder1.parent, folder2) - return False - filtered_folders = [] - for folder in target_library_folders: - include = True - if move_folder: - if __is_contained_in(folder, move_folder): - # Don't allow moving a folder to one of its sub-folders (circular issues in db) - include = False - if move_folder.id == folder.id: - # Don't allow moving a folder to itself - include = False - if move_folder.parent and move_folder.parent.id == folder.id: - # Don't allow moving a folder to its current parent folder - include = False - if include: - filtered_folders.append(folder) - target_library_folders = filtered_folders - - def __build_target_library_id_select_field(trans, selected_value='none'): - # Get all the libraries for which the current user can add items. - target_libraries = [] - if is_admin: - for library in trans.sa_session.query(trans.model.Library) \ - .filter(trans.model.Library.deleted == false()) \ - .order_by(trans.model.Library.table.c.name): - if source_library is None or library.id != source_library.id: - target_libraries.append(library) - else: - for library in trans.app.security_agent.get_accessible_libraries(trans, user): - if source_library is None: - if trans.app.security_agent.can_add_library_item(current_user_roles, library): - target_libraries.append(library) - elif library.id != source_library.id: - if trans.app.security_agent.can_add_library_item(current_user_roles, library): - target_libraries.append(library) - # A refresh_on_change is required to display the selected library's folders - return build_select_field(trans, - objs=target_libraries, - label_attr='name', - select_field_name='target_library_id', - selected_value=selected_value, - refresh_on_change=True) - - def __build_target_folder_id_select_field(trans, folders, selected_value='none'): - for folder in folders: - if not folder.parent: - folder.name = 'Data library root' - break - return build_select_field(trans, - objs=folders, - label_attr='name', - select_field_name='target_folder_id', - selected_value=selected_value, - refresh_on_change=False) - if target_library: - selected_value = target_library.id - else: - selected_value = 'none' - target_library_id_select_field = __build_target_library_id_select_field(trans, selected_value=selected_value) - target_folder_id_select_field = __build_target_folder_id_select_field(trans, target_library_folders) - return trans.fill_template("/library/common/move_library_item.mako", - cntrller=cntrller, - make_target_current=make_target_current, - source_library=source_library, - item_type=item_type, - item_id=item_id, - move_ldda_ids=move_ldda_ids, - move_lddas=move_lddas, - move_folder=move_folder, - target_library=target_library, - target_library_id_select_field=target_library_id_select_field, - target_folder_id_select_field=target_folder_id_select_field, - show_deleted=show_deleted, - use_panels=use_panels, - message=escape(message), - status=escape(status)) - - @web.expose - @web.require_admin - def delete_library_item(self, trans, cntrller, library_id, item_id, item_type, **kwd): - # This action will handle deleting all types of library items. State is saved for libraries and - # folders ( i.e., if undeleted, the state of contents of the library or folder will remain, so previously - # deleted / purged contents will have the same state ). When a library or folder has been deleted for - # the amount of time defined in the cleanup_datasets.py script, the library or folder and all of its - # contents will be purged. The association between this method and the cleanup_datasets.py script - # enables clean maintenance of libraries and library dataset disk files. This is also why the item_types - # are not any of the associations ( the cleanup_datasets.py script handles everything ). - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - item_types = {'library': trans.app.model.Library, - 'folder': trans.app.model.LibraryFolder, - 'library_dataset': trans.app.model.LibraryDataset} - is_admin = (trans.user_is_admin() and cntrller == 'library_admin') - current_user_roles = trans.get_current_user_roles() - if item_type not in item_types: - message = 'Bad item_type specified: %s' % escape(str(item_type)) - status = 'error' - else: - if item_type == 'library_dataset': - item_desc = 'Dataset' - else: - item_desc = item_type.capitalize() - library_item_ids = util.listify(item_id) - valid_items = 0 - invalid_items = 0 - not_authorized_items = 0 - flush_needed = False - message = '' - for library_item_id in library_item_ids: - try: - library_item = trans.sa_session.query(item_types[item_type]).get(trans.security.decode_id(library_item_id)) - except Exception: - library_item = None - if not library_item or not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, library_item, trans.user)): - invalid_items += 1 - elif not (is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, library_item)): - not_authorized_items += 1 - else: - valid_items += 1 - library_item.deleted = True - trans.sa_session.add(library_item) - flush_needed = True - if flush_needed: - trans.sa_session.flush() - if valid_items: - message += "%d %s marked deleted. " % (valid_items, escape(inflector.cond_plural(valid_items, item_desc))) - if invalid_items: - message += '%d invalid %s specifield. ' % (invalid_items, escape(inflector.cond_plural(invalid_items, item_desc))) - status = 'error' - if not_authorized_items: - message += 'You are not authorized to delete %d %s. ' % (not_authorized_items, escape(inflector.cond_plural(not_authorized_items, item_desc))) - status = 'error' - if item_type == 'library': - return trans.response.send_redirect(web.url_for(controller=cntrller, - action='browse_libraries', - message=message, - status=status)) - else: - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - show_deleted=show_deleted, - message=message, - status=status)) - - @web.expose - @web.require_admin - def undelete_library_item(self, trans, cntrller, library_id, item_id, item_type, **kwd): - # This action will handle undeleting all types of library items - status = kwd.get('status', 'done') - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - item_types = {'library': trans.app.model.Library, - 'folder': trans.app.model.LibraryFolder, - 'library_dataset': trans.app.model.LibraryDataset} - is_admin = (trans.user_is_admin() and cntrller == 'library_admin') - current_user_roles = trans.get_current_user_roles() - if item_type not in item_types: - message = 'Bad item_type specified: %s' % escape(str(item_type)) - status = 'error' - else: - if item_type == 'library_dataset': - item_desc = 'Dataset' - else: - item_desc = item_type.capitalize() - - library_item_ids = util.listify(item_id) - valid_items = 0 - invalid_items = 0 - purged_items = 0 - not_authorized_items = 0 - flush_needed = False - message = '' - for library_item_id in library_item_ids: - try: - library_item = trans.sa_session.query(item_types[item_type]).get(trans.security.decode_id(library_item_id)) - except Exception: - library_item = None - if not library_item or not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, library_item, trans.user)): - invalid_items += 1 - elif library_item.purged: - purged_items += 1 - elif not (is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, library_item)): - not_authorized_items += 1 - else: - valid_items += 1 - library_item.deleted = False - trans.sa_session.add(library_item) - flush_needed = True - if flush_needed: - trans.sa_session.flush() - if valid_items: - message += "%d %s marked undeleted. " % (valid_items, escape(inflector.cond_plural(valid_items, item_desc))) - if invalid_items: - message += '%d invalid %s specifield. ' % (invalid_items, escape(inflector.cond_plural(invalid_items, item_desc))) - status = 'error' - if not_authorized_items: - message += 'You are not authorized to undelete %d %s. ' % (not_authorized_items, escape(inflector.cond_plural(not_authorized_items, item_desc))) - status = 'error' - if purged_items: - message += '%d %s marked purged, so cannot be undeleted. ' % (purged_items, escape(inflector.cond_plural(purged_items, item_desc))) - status = 'error' - if item_type == 'library': - return trans.response.send_redirect(web.url_for(controller=cntrller, - action='browse_libraries', - message=message, - status=status)) - else: - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - show_deleted=show_deleted, - message=message, - status=status)) - - def _check_access(self, trans, cntrller, is_admin, item, current_user_roles, use_panels, library_id, show_deleted): - can_access = True - if isinstance(item, trans.model.HistoryDatasetAssociation): - # Make sure the user has the DATASET_ACCESS permission on the history_dataset_association. - if not item: - message = "Invalid history dataset (%s) specified." % escape(str(item)) - can_access = False - elif not trans.app.security_agent.can_access_dataset(current_user_roles, item.dataset) and item.history.user == trans.user: - message = "You do not have permission to access the history dataset with id (%s)." % str(item.id) - can_access = False - else: - # Make sure the user has the LIBRARY_ACCESS permission on the library item. - if not item: - message = "Invalid library item (%s) specified." % escape(str(item)) - can_access = False - elif not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, item, trans.user)): - if isinstance(item, trans.model.Library): - item_type = 'data library' - elif isinstance(item, trans.model.LibraryFolder): - item_type = 'folder' - else: - item_type = '(unknown item type)' - message = "You do not have permission to access the %s with id (%s)." % (escape(item_type), str(item.id)) - can_access = False - if not can_access: - if cntrller == 'api': - return 400, message - if isinstance(item, trans.model.Library): - return trans.response.send_redirect(web.url_for(controller=cntrller, - action='browse_libraries', - cntrller=cntrller, - use_panels=use_panels, - message=message, - status='error')) - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - - def _check_add(self, trans, cntrller, is_admin, item, current_user_roles, use_panels, library_id, show_deleted): - # Deny access if the user is not an admin and does not have the LIBRARY_ADD permission. - if not (is_admin or trans.app.security_agent.can_add_library_item(current_user_roles, item)): - message = "You are not authorized to add an item to (%s)." % escape(item.name) - # Redirect to the real parent library since we know we have access to it. - if cntrller == 'api': - return 403, message - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - use_panels=use_panels, - id=library_id, - show_deleted=show_deleted, - message=message, - status='error')) - - def _check_manage(self, trans, cntrller, is_admin, item, current_user_roles, use_panels, library_id, show_deleted): - if isinstance(item, trans.model.LibraryDataset): - # Deny access if the user is not an admin and does not have the LIBRARY_MANAGE and DATASET_MANAGE_PERMISSIONS permissions. - if not (is_admin or - (trans.app.security_agent.can_manage_library_item(current_user_roles, item) and - trans.app.security_agent.can_manage_dataset(current_user_roles, item.library_dataset_dataset_association.dataset))): - message = "You are not authorized to manage permissions on library dataset (%s)." % escape(item.name) - if cntrller == 'api': - return 403, message - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - id=library_id, - cntrller=cntrller, - use_panels=use_panels, - message=message, - status='error')) - # Deny access if the user is not an admin and does not have the LIBRARY_MANAGE permission. - if not (is_admin or trans.app.security_agent.can_manage_library_item(current_user_roles, item)): - message = "You are not authorized to manage permissions on (%s)." % escape(item.name) - if cntrller == 'api': - return 403, message - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - id=library_id, - cntrller=cntrller, - use_panels=use_panels, - message=message, - status='error')) - - def _check_modify(self, trans, cntrller, is_admin, item, current_user_roles, use_panels, library_id, show_deleted): - # Deny modification if the user is not an admin and does not have the LIBRARY_MODIFY permission. - if not (is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, item)): - message = "You are not authorized to modify (%s)." % escape(item.name) - if cntrller == 'api': - return 403, message - return trans.response.send_redirect(web.url_for(controller='library_common', - action='browse_library', - cntrller=cntrller, - id=library_id, - use_panels=use_panels, - show_deleted=show_deleted, - message=message, - status='error')) - -# ---- Utility methods ------------------------------------------------------- - - -def active_folders(trans, folder): - # Much faster way of retrieving all active sub-folders within a given folder than the - # performance of the mapper. This query also eagerloads the permissions on each folder. - return trans.sa_session.query(trans.app.model.LibraryFolder) \ - .filter_by(parent=folder, deleted=False) \ - .options(eagerload_all("actions")) \ - .order_by(trans.app.model.LibraryFolder.table.c.name) \ - .all() - - -def activatable_folders(trans, folder): - return trans.sa_session.query(trans.app.model.LibraryFolder) \ - .filter_by(parent=folder, purged=False) \ - .options(eagerload_all("actions")) \ - .order_by(trans.app.model.LibraryFolder.table.c.name) \ - .all() - - -def map_library_datasets_to_lddas(trans, lib_datasets): - ''' - Given a list of LibraryDatasets, return a map from the LibraryDatasets - to their LDDAs. If an LDDA does not exist for a LibraryDataset, then - there will be no entry in the return hash. - ''' - # Get a list of the LibraryDatasets' ids so that we can pass it along to - # a query to retrieve the LDDAs. This eliminates querying for each - # LibraryDataset. - lib_dataset_ids = [x.library_dataset_dataset_association_id for x in lib_datasets] - lddas = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation) \ - .filter(trans.app.model.LibraryDatasetDatasetAssociation.id.in_(lib_dataset_ids)) \ - .all() - - # Map the LibraryDataset to the returned LDDAs: - ret_lddas = {} - for ldda in lddas: - ret_lddas[ldda.library_dataset_id] = ldda - return ret_lddas - - -def datasets_for_lddas(trans, lddas): - ''' - Given a list of LDDAs, return a list of Datasets for them. - ''' - dataset_ids = [x.dataset_id for x in lddas] - datasets = trans.sa_session.query(trans.app.model.Dataset) \ - .filter(trans.app.model.Dataset.id.in_(dataset_ids)) \ - .all() - return datasets - - -def active_folders_and_library_datasets(trans, folder): - folders = active_folders(trans, folder) - library_datasets = trans.sa_session.query(trans.model.LibraryDataset).filter( - and_(trans.model.LibraryDataset.table.c.deleted == false(), - trans.model.LibraryDataset.table.c.folder_id == folder.id)) \ - .order_by(trans.model.LibraryDataset.table.c._name) \ - .all() - return folders, library_datasets - - -def activatable_folders_and_library_datasets(trans, folder): - folders = activatable_folders(trans, folder) - library_datasets = trans.sa_session.query(trans.model.LibraryDataset) \ - .filter(trans.model.LibraryDataset.table.c.folder_id == folder.id) \ - .join((trans.model.LibraryDatasetDatasetAssociation.table, - trans.model.LibraryDataset.table.c.library_dataset_dataset_association_id == trans.model.LibraryDatasetDatasetAssociation.table.c.id)) \ - .join((trans.model.Dataset.table, - trans.model.LibraryDatasetDatasetAssociation.table.c.dataset_id == trans.model.Dataset.table.c.id)) \ - .filter(trans.model.Dataset.table.c.deleted == false()) \ - .order_by(trans.model.LibraryDataset.table.c._name) \ - .all() - return folders, library_datasets - - -def branch_deleted(folder): - # Return True if a folder belongs to a branch that has been deleted - if folder.deleted: - return True - if folder.parent: - return branch_deleted(folder.parent) - return False - - -def get_containing_library_from_library_dataset(trans, library_dataset): - """Given a library_dataset, get the containing library""" - folder = library_dataset.folder - while folder.parent: - folder = folder.parent - # We have folder set to the library's root folder, which has the same name as the library - for library in trans.sa_session.query(trans.model.Library).filter( - and_(trans.model.Library.table.c.deleted == false(), - trans.model.Library.table.c.name == folder.name)): - # Just to double-check - if library.root_folder == folder: - return library - return None - - -def get_comptypes(trans): - comptypes_t = comptypes - if trans.app.config.nginx_x_archive_files_base: - comptypes_t = ['ngxzip'] - for comptype in trans.app.config.disable_library_comptypes: - # TODO: do this once, not every time (we're gonna raise an - # exception every time after the first time) - try: - comptypes_t.remove(comptype) - except ValueError: - pass - return comptypes_t - - -def get_sorted_accessible_library_items(trans, cntrller, items, sort_attr): - is_admin = trans.user_is_admin() and cntrller == 'library_admin' - if is_admin: - accessible_items = items - else: - # Enforce access permission settings - current_user_roles = trans.get_current_user_roles() - accessible_items = [] - for item in items: - if trans.app.security_agent.can_access_library_item(current_user_roles, item, trans.user): - accessible_items.append(item) - # Sort by name - return sort_by_attr([item for item in accessible_items], sort_attr) - - -def sort_by_attr(seq, attr): - """ - Sort the sequence of objects by object's attribute - Arguments: - seq - the list or any sequence (including immutable one) of objects to sort. - attr - the name of attribute to sort by - """ - # Use the "Schwartzian transform" - # Create the auxiliary list of tuples where every i-th tuple has form - # (seq[i].attr, i, seq[i]) and sort it. The second item of tuple is needed not - # only to provide stable sorting, but mainly to eliminate comparison of objects - # (which can be expensive or prohibited) in case of equal attribute values. - intermed = [(getattr(v, attr), i, v) for i, v in enumerate(seq)] - intermed.sort() - return [_[-1] for _ in intermed] - - -def lucene_search(trans, cntrller, search_term, search_url, **kwd): - """Return display of results from a full-text lucene search of data libraries.""" - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - full_url = "%s/find?%s" % (search_url, urlencode({"kwd" : search_term})) - ldda_ids = requests.get(full_url).json()['ids'] - lddas = [trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(ldda_id) for ldda_id in ldda_ids] - return status, message, get_sorted_accessible_library_items(trans, cntrller, lddas, 'name') - - -def whoosh_search(trans, cntrller, search_term, **kwd): - """Return display of results from a full-text whoosh search of data libraries.""" - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - ok = True - if whoosh_search_enabled: - whoosh_index_dir = trans.app.config.whoosh_index_dir - index_exists = whoosh.index.exists_in(whoosh_index_dir) - if index_exists: - index = whoosh.index.open_dir(whoosh_index_dir) - # Set field boosts for searcher to place equal weight on all search fields. - searcher = index.searcher(weighting=BM25F(field_B={'name_B' : 3.4, - 'info_B' : 3.2, - 'dbkey_B' : 3.3, - 'message_B' : 3.5})) - # Perform search - parser = MultifieldParser(['name', 'info', 'dbkey', 'message'], schema=schema) - # Search term with wildcards may be slow... - results = searcher.search(parser.parse('*' + search_term + '*'), minscore=0.01) - ldda_ids = [result['id'] for result in results] - lddas = [] - for ldda_id in ldda_ids: - ldda = trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(ldda_id) - if ldda: - lddas.append(ldda) - lddas = get_sorted_accessible_library_items(trans, cntrller, lddas, 'name') - else: - message = "Tell your Galaxy administrator that the directory %s does not contain valid whoosh indexes" % str(whoosh_index_dir) - ok = False - else: - message = "Whoosh is compatible with Python version 2.5 or greater. Your Python verison is not compatible." - ok = False - if not ok: - status = 'error' - lddas = [] - return status, message, lddas diff --git a/static/scripts/bundled/admin.bundled.js b/static/scripts/bundled/admin.bundled.js index 277895c622a5..5e5988515f1f 100644 --- a/static/scripts/bundled/admin.bundled.js +++ b/static/scripts/bundled/admin.bundled.js @@ -1,2 +1,2 @@ -webpackJsonp([3],{10:function(t,e,i){"use strict";(function(a,s){var n,l;n=[i(3)],void 0!==(l=function(t){var e=a.View.extend({initialize:function(e){this.model=e&&e.model||new a.Model({id:t.uid(),title:"",icon:"",cls:"btn btn-default",wait:!1,wait_text:"Sending...",wait_cls:"btn btn-info",disabled:!1,percentage:-1}).set(e),this.setElement(s("'}else{l+='';var g=!1;for(var _ in t.categorical_filters[n]){var v=t.categorical_filters[n][_],b="",w="";for(var $ in v)b=$,w=v[$];g&&(l+=" | "),g=!0;var u=i[n];u&&v[n]&&u==w?l+=''+_+"":l+=''+_+""}l+=""}return l+=""},filter_element:function(e,i){return''+(i=t.sanitize(i))+''}}}.apply(e,n))&&(t.exports=l)}).call(e,i(0),i(2))},29:function(t,e,i){"use strict";(function(a,s){var n,l;n=[i(3)],void 0!==(l=function(t){return{View:a.View.extend({initialize:function(e){var i=this;this.model=e&&e.model||new a.Model({id:t.uid(),min:null,max:null,step:null,precise:!1,split:1e4,value:null,onchange:function(){}}).set(e),this.setElement(this._template()),this.$el.attr("id",this.model.id),this.$text=this.$(".ui-form-slider-text"),this.$slider=this.$(".ui-form-slider-element");var n=[];this.$text.on("change",function(){i.value(s(this).val())}).on("keyup",function(t){n[t.which]=!1}).on("keydown",function(t){var e=t.which;n[e]=!0,i.model.get("is_workflow")&&n[16]&&52==e?(i.value("$"),event.preventDefault()):8==e||9==e||13==e||37==e||39==e||e>=48&&e<=57&&!n[16]||e>=96&&e<=105||(190==e||110==e)&&-1==s(this).val().indexOf(".")&&i.model.get("precise")||(189==e||109==e)&&-1==s(this).val().indexOf("-")||i._isParameter(s(this).val())||n[91]||n[17]||event.preventDefault()});var l=this.model.attributes;this.has_slider=null!==l.max&&null!==l.min&&l.max>l.min;var o=l.step;o||(o=l.precise&&this.has_slider?(l.max-l.min)/l.split:1),this.has_slider?(this.$text.addClass("ui-form-slider-left"),this.$slider.slider({min:l.min,max:l.max,step:o}).on("slide",function(t,e){i.value(e.value)})):this.$slider.hide(),this.listenTo(this.model,"change",this.render,this),this.render()},render:function(){var t=this.model.get("value");this.has_slider&&this.$slider.slider("value",t),t!==this.$text.val()&&this.$text.val(t)},value:function(t){var e=this.model.attributes;return void 0!==t&&(null===t||""===t||this._isParameter(t)||(isNaN(t)&&(t=0),!e.precise&&(t=Math.round(t)),null!==e.max&&(t=Math.min(t,e.max)),null!==e.min&&(t=Math.max(t,e.min))),this.model.set("value",t),this.model.trigger("change"),e.onchange(t)),this.model.get("value")},_isParameter:function(t){return this.model.get("is_workflow")&&"$"===String(t).substring(0,1)},_template:function(){return'
'}})}}.apply(e,n))&&(t.exports=l)}).call(e,i(1),i(0))},30:function(t,e,i){"use strict";(function(a,s){var n,l;n=[i(3),i(18)],void 0!==(l=function(t,e){return{View:e.BaseIcons.extend({initialize:function(t){t.type=t.display||"checkbox",t.multiple="checkbox"==t.type,e.BaseIcons.prototype.initialize.call(this,t)},_setValue:function(t){if(e.BaseIcons.prototype._setValue.call(this,t),void 0!==t&&null!==t&&this.header_index){var i=this,n=a.isArray(t)?t:[t];s.each(n,function(t){var e=i.header_index[t];s.each(e,function(t){i._setState(t,!0)})})}},_setState:function(t,e){var i=this.$(".button-"+t),a=this.$(".subgroup-"+t);i.data("is_expanded",e),e?(a.show(),i.removeClass("fa-plus-square").addClass("fa-minus-square")):(a.hide(),i.removeClass("fa-minus-square").addClass("fa-plus-square"))},_templateOptions:function(){function e(t,e){var i=t.find(".button-"+e);i.on("click",function(){s._setState(e,!i.data("is_expanded"))})}function i(n,l,o){o=o||[];for(var r in l){var d=l[r],c=d.options&&d.options.length>0,h=o.slice(0);s.header_index[d.value]=h.slice(0);var u=a("
");if(c){var p=t.uid(),f=a("").addClass("button-"+p).addClass("ui-drilldown-button fa fa-plus-square"),m=a("
").addClass("subgroup-"+p).addClass("ui-drilldown-subgroup");u.append(a("
").append(f).append(s._templateOption({label:d.name,value:d.value}))),h.push(p),i(m,d.options,h),u.append(m),e(u,p)}else u.append(s._templateOption({label:d.name,value:d.value}));n.append(u)}}var s=this;this.header_index={};var n=a("
");return i(n,this.model.get("data")),n},_template:function(){return a("
").addClass("ui-options-list drilldown-container").attr("id",this.model.id)}})}}.apply(e,n))&&(t.exports=l)}).call(e,i(0),i(2))},31:function(t,e,i){"use strict";(function(a,s,n,l){var o,r;o=[i(3),i(5),i(8),i(32),i(33),i(34)],void 0!==(r=function(t,e,i,o,r,d){var c=a.View.extend({initialize:function(t,e){this.app=t,this.inputs=e.inputs,this.parameters=new d,this.setElement(s("
")),this.render()},render:function(){var t=this;this.$el.empty(),n.each(this.inputs,function(e){t.add(e)})},add:function(e){var i=l.extend(!0,{},e);switch(i.id=e.id=t.uid(),this.app.input_list[i.id]=i,i.type){case"conditional":this._addConditional(i);break;case"repeat":this._addRepeat(i);break;case"section":this._addSection(i);break;default:this._addRow(i)}},_addConditional:function(t){var e=this;t.test_param.id=t.id,this.app.model.get("sustain_conditionals")&&(t.test_param.disabled=!0);var i=this._addRow(t.test_param);i.model&&i.model.set("onchange",function(i){var a=e.app.data.matchCase(t,i);for(var s in t.cases){var n=t.cases[s],l=e.$("#"+t.id+"-section-"+s),o=!1;for(var r in n.inputs)if(!n.inputs[r].hidden){o=!0;break}s==a&&o?l.fadeIn("fast"):l.hide()}e.app.trigger("change")});for(var a in t.cases){var s=new c(this.app,{inputs:t.cases[a].inputs});this._append(s.$el.addClass("ui-form-section"),t.id+"-section-"+a)}i.trigger("change")},_addRepeat:function(t){function e(e){var n=t.id+"-section-"+a++,l=new c(i.app,{inputs:e});s.add({id:n,$el:l.$el,ondel:function(){s.del(n),i.app.trigger("change")}})}for(var i=this,a=0,s=new o.View({title:t.title||"Repeat",min:t.min,max:t.max,onnew:function(){e(t.inputs),i.app.trigger("change")}}),l=n.size(t.cache),d=0;d").addClass("ui-form-info").html(t.help)),this.app.on("expand",function(t){e.$("#"+t).length>0&&e.expand()}),this._append(e.$el,t.id)},_addRow:function(t){var e=this,i=t.id;t.onchange=t.onchange||function(){e.app.trigger("change",i)};var a=this.parameters.create(t);this.app.field_list[i]=a;var s=new r(this.app,{name:t.name,label:t.hide_label?"":t.label||t.name,value:t.value,text_value:t.text_value,collapsible_value:t.collapsible_value,collapsible_preview:t.collapsible_preview,help:t.help,argument:t.argument,disabled:t.disabled,color:t.color,style:t.style,backdrop:t.backdrop,hidden:t.hidden,fixed:t.fixed,field:a});return this.app.element_list[i]=s,this._append(s.$el,t.id),a},_append:function(t,e){this.$el.append(t.addClass("section-row").attr("id",e))}});return{View:c}}.apply(e,o))&&(t.exports=r)}).call(e,i(1),i(0),i(2),i(0))},32:function(t,e,i){"use strict";(function(a,s,n){var l,o;l=[i(3),i(8),i(5)],void 0!==(o=function(t,e,i){return{View:a.View.extend({initialize:function(e){this.list={},this.options=t.merge(e,{title:"Repeat",empty_text:"Not available.",max:null,min:null}),this.button_new=new i.ButtonIcon({icon:"fa-plus",title:"Insert "+this.options.title,tooltip:"Add new "+this.options.title+" block",cls:"ui-button-icon ui-clear-float form-repeat-add",onclick:function(){e.onnew&&e.onnew()}}),this.setElement(s("
").append(this.$list=s("
")).append(s("
").append(this.button_new.$el)))},size:function(){return n.size(this.list)},add:function(t){if(!t.id||this.list[t.id])return void Galaxy.emit.debug("form-repeat::add()","Duplicate or invalid repeat block id.");var a=new i.ButtonIcon({icon:"fa-trash-o",tooltip:"Delete this repeat block",cls:"ui-button-icon-plain form-repeat-delete",onclick:function(){t.ondel&&t.ondel()}}),s=new e.View({id:t.id,title:"placeholder",cls:t.cls||"ui-portlet-repeat",operations:{button_delete:a}});s.append(t.$el),s.$el.addClass("section-row").hide(),this.list[t.id]=s,this.$list.append(s.$el.fadeIn("fast")),this.options.max>0&&this.size()>=this.options.max&&this.button_new.disable(),this._refresh()},del:function(t){if(!this.list[t])return void Galaxy.emit.debug("form-repeat::del()","Invalid repeat block id.");this.$list.find("#"+t).remove(),delete this.list[t],this.button_new.enable(),this._refresh()},delAll:function(){for(var t in this.list)this.del(t)},hideOptions:function(){this.button_new.$el.hide(),n.each(this.list,function(t){t.hideOperation("button_delete")}),n.isEmpty(this.list)&&this.$el.append(s("
").addClass("ui-form-info").html(this.options.empty_text))},_refresh:function(){var t=0;for(var e in this.list){var i=this.list[e];i.title(++t+": "+this.options.title),i[this.size()>this.options.min?"showOperation":"hideOperation"]("button_delete")}}})}}.apply(e,l))&&(t.exports=o)}).call(e,i(1),i(0),i(2))},33:function(t,e,i){"use strict";(function(i,a,s){var n,l;n=[],void 0!==(l=function(){return i.View.extend({initialize:function(t,e){this.app=t,this.app_options=t.model?t.model.attributes:{},this.field=e&&e.field||new i.View,this.model=e&&e.model||new i.Model({text_enable:this.app_options.text_enable||"Enable",text_disable:this.app_options.text_disable||"Disable",cls_enable:this.app_options.cls_enable||"fa fa-caret-square-o-down",cls_disable:this.app_options.cls_disable||"fa fa-caret-square-o-up",always_refresh:this.app_options.always_refresh}).set(e),this.setElement(this._template()),this.$field=this.$(".ui-form-field"),this.$info=this.$(".ui-form-info"),this.$preview=this.$(".ui-form-preview"),this.$collapsible=this.$(".ui-form-collapsible"),this.$collapsible_text=this.$(".ui-form-collapsible-text"),this.$collapsible_icon=this.$(".ui-form-collapsible-icon"),this.$title=this.$(".ui-form-title"),this.$title_text=this.$(".ui-form-title-text"),this.$error_text=this.$(".ui-form-error-text"),this.$error=this.$(".ui-form-error"),this.$backdrop=this.$(".ui-form-backdrop"),this.$field.prepend(this.field.$el);var a=this.model.get("collapsible_value");this.field.collapsed=void 0!==a&&JSON.stringify(this.model.get("value"))==JSON.stringify(a),this.listenTo(this.model,"change",this.render,this),this.render();var s=this;this.$collapsible.on("click",function(){s.field.collapsed=!s.field.collapsed,t.trigger&&t.trigger("change"),s.render()}),this.field.model&&!this.model.get("always_refresh")&&this.listenTo(this.field.model,"change:value",function(){s.reset()})},backdrop:function(){this.model.set("backdrop",!0)},error:function(t){this.model.set("error_text",t)},reset:function(){!this.model.get("fixed")&&this.model.set("error_text",null)},render:function(){a(".tooltip").hide();var t=this.model.get("help",""),e=this.model.get("argument");e&&-1==t.indexOf("("+e+")")&&(t+=" ("+e+")"),this.$info.html(t),this.$el[this.model.get("hidden")?"hide":"show"](),this.$preview[this.field.collapsed&&this.model.get("collapsible_preview")||this.model.get("disabled")?"show":"hide"]().html(s.escape(this.model.get("text_value")));var i=this.model.get("error_text");if(this.$error[i?"show":"hide"](),this.$el[i?"addClass":"removeClass"]("ui-error"),this.$error_text.html(i),this.$backdrop[this.model.get("backdrop")?"show":"hide"](),this.field.collapsed||this.model.get("disabled")?this.$field.hide():this.$field.show(),this.field.model&&this.field.model.set({color:this.model.get("color"),style:this.model.get("style")}),this.model.get("disabled")||void 0===this.model.get("collapsible_value"))this.$title_text.show().text(this.model.get("label")),this.$collapsible.hide();else{var n=this.field.collapsed?"enable":"disable";this.$title_text.hide(),this.$collapsible.show(),this.$collapsible_text.text(this.model.get("label")),this.$collapsible_icon.removeClass().addClass("icon").addClass(this.model.get("cls_"+n)).attr("data-original-title",this.model.get("text_"+n)).tooltip({placement:"bottom"})}},_template:function(){return a("
").addClass("ui-form-element").append(a("
").addClass("ui-form-error ui-error").append(a("").addClass("fa fa-arrow-down")).append(a("").addClass("ui-form-error-text"))).append(a("
").addClass("ui-form-title").append(a("
").addClass("ui-form-collapsible").append(a("").addClass("ui-form-collapsible-icon")).append(a("").addClass("ui-form-collapsible-text"))).append(a("").addClass("ui-form-title-text"))).append(a("
").addClass("ui-form-field").append(a("").addClass("ui-form-info")).append(a("
").addClass("ui-form-backdrop"))).append(a("
").addClass("ui-form-preview"))}})}.apply(e,n))&&(t.exports=l)}).call(e,i(1),i(0),i(2))},34:function(t,e,i){"use strict";(function(a,s,n){var l,o;l=[i(3),i(5),i(35),i(36),i(37),i(38),i(40)],void 0!==(o=function(t,e,i,l,o,r,d){return a.Model.extend({types:{text:"_fieldText",password:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider",float:"_fieldSlider",boolean:"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp",upload:"_fieldUpload",genomespacefile:"_fieldGenomeSpace"},create:function(t){var e=this.types[t.type],i="function"==typeof this[e]?this[e].call(this,t):null;return i||(i=t.options?this._fieldSelect(t):this._fieldText(t),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+t.type+").")),void 0===t.value&&(t.value=null),i.value(t.value),i},_fieldData:function(t){return new i.View({id:"field-"+t.id,extensions:t.extensions,optional:t.optional,multiple:t.multiple,type:t.type,flavor:t.flavor,data:t.options,onchange:t.onchange})},_fieldSelect:function(t){if(t.is_workflow)return this._fieldText(t);"data_column"==t.type&&(t.error_text="Missing columns in referenced dataset.");var i=t.data;i||(i=[],s.each(t.options,function(t){i.push({label:t[0],value:t[1]})}));var a=e.Select;switch(t.display){case"checkboxes":a=e.Checkbox;break;case"radio":a=e.Radio;break;case"radiobutton":a=e.RadioButton}return new a.View({id:"field-"+t.id,data:i,error_text:t.error_text||"No options available",readonly:t.readonly,multiple:t.multiple,optional:t.optional,onchange:t.onchange,individual:t.individual,searchable:"workflow"!==t.flavor})},_fieldDrilldown:function(t){return t.is_workflow?this._fieldText(t):new e.Drilldown.View({id:"field-"+t.id,data:t.options,display:t.display,optional:t.optional,onchange:t.onchange})},_fieldText:function(i){if(i.options&&i.data)if(i.area=i.multiple,t.isEmpty(i.value))i.value=null;else if(n.isArray(i.value)){var a="";for(var s in i.value){if(a+=String(i.value[s]),!i.multiple)break;a+="\n"}i.value=a}return new e.Input({id:"field-"+i.id,type:i.type,area:i.area,readonly:i.readonly,placeholder:i.placeholder,datalist:i.datalist,onchange:i.onchange})},_fieldSlider:function(t){return new e.Slider.View({id:"field-"+t.id,precise:"float"==t.type,is_workflow:t.is_workflow,min:t.min,max:t.max,onchange:t.onchange})},_fieldHidden:function(t){return new e.Hidden({id:"field-"+t.id,info:t.info})},_fieldBoolean:function(t){return new e.RadioButton.View({id:"field-"+t.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:t.onchange})},_fieldColor:function(t){return new d({id:"field-"+t.id,onchange:t.onchange})},_fieldLibrary:function(t){return new l.View({id:"field-"+t.id,optional:t.optional,multiple:t.multiple,onchange:t.onchange})},_fieldFtp:function(t){return new o.View({id:"field-"+t.id,optional:t.optional,multiple:t.multiple,onchange:t.onchange})},_fieldGenomeSpace:function(t){var e=this;return new r.View({id:"field-"+t.id,onchange:function(){e.app.trigger("change")}})},_fieldUpload:function(t){return new e.Upload({id:"field-"+t.id,onchange:t.onchange})}})}.apply(e,l))&&(t.exports=o)}).call(e,i(1),i(2),i(0))},35:function(t,e,i){"use strict";(function(a,s,n){var l,o;l=[i(3),i(5),i(17)],void 0!==(o=function(t,e,i){var l={DISABLED:"disabled",ENABLED:"enabled",LINKED:"linked"},o={data:[{src:"hda",icon:"fa-file-o",tooltip:"Single dataset",multiple:!1,batch:l.DISABLED},{src:"hda",icon:"fa-files-o",tooltip:"Multiple datasets",multiple:!0,batch:l.LINKED},{src:"hdca",icon:"fa-folder-o",tooltip:"Dataset collection",multiple:!1,batch:l.LINKED}],data_multiple:[{src:"hda",icon:"fa-files-o",tooltip:"Multiple datasets",multiple:!0,batch:l.DISABLED},{src:"hdca",icon:"fa-folder-o",tooltip:"Dataset collections",multiple:!0,batch:l.DISABLED}],data_collection:[{src:"hdca",icon:"fa-folder-o",tooltip:"Dataset collection",multiple:!1,batch:l.DISABLED}],workflow_data:[{src:"hda",icon:"fa-file-o",tooltip:"Single dataset",multiple:!1,batch:l.DISABLED}],workflow_data_multiple:[{src:"hda",icon:"fa-files-o",tooltip:"Multiple datasets",multiple:!0,batch:l.DISABLED}],workflow_data_collection:[{src:"hdca",icon:"fa-folder-o",tooltip:"Dataset collection",multiple:!1,batch:l.DISABLED}],module_data:[{src:"hda",icon:"fa-file-o",tooltip:"Single dataset",multiple:!1,batch:l.DISABLED},{src:"hda",icon:"fa-files-o",tooltip:"Multiple datasets",multiple:!0,batch:l.ENABLED}],module_data_collection:[{src:"hdca",icon:"fa-folder-o",tooltip:"Dataset collection",multiple:!1,batch:l.DISABLED},{src:"hdca",icon:"fa-folder",tooltip:"Multiple collections",multiple:!0,batch:l.ENABLED}]};return{View:a.View.extend({initialize:function(t){var i=this;this.model=t&&t.model||new a.Model({src_labels:{hda:"dataset",hdca:"dataset collection"},pagelimit:100,statustimer:1e3}).set(t),this.setElement(s("
").addClass("ui-select-content")),this.button_product=new e.RadioButton.View({value:"false",data:[{icon:"fa fa-chain",value:"false",tooltip:"Linked inputs will be run in matched order with other datasets e.g. use this for matching forward and reverse reads."},{icon:"fa fa-chain-broken",value:"true",tooltip:"Unlinked dataset inputs will be run against *all* other inputs."}]});var n=s("
").addClass("ui-form-info").append(s("").addClass("fa fa-sitemap")).append(s("").html("This is a batch mode input field. Separate jobs will be triggered for each dataset selection."));this.$batch={linked:n.clone(),enabled:n.clone().append(s("
").append(s("
").addClass("ui-form-title").html("Batch options:")).append(this.button_product.$el)).append(s("
").css("clear","both"))},this.$el.on("dragenter",function(t){this.lastenter=t.target,i.$el.addClass("ui-dragover")}).on("dragover",function(t){t.preventDefault()}).on("dragleave",function(t){this.lastenter===t.target&&i.$el.removeClass("ui-dragover")}).on("drop",function(t){i._handleDrop(t)}),this.history={},this.listenTo(this.model,"change:data",this._changeData,this),this.listenTo(this.model,"change:wait",this._changeWait,this),this.listenTo(this.model,"change:current",this._changeCurrent,this),this.listenTo(this.model,"change:value",this._changeValue,this),this.listenTo(this.model,"change:type change:optional change:multiple change:extensions",this._changeType,this),this.render(),this.on("change",function(){t.onchange&&t.onchange(i.value())})},render:function(){this._changeType(),this._changeValue(),this._changeWait()},wait:function(){this.model.set("wait",!0)},unwait:function(){this.model.set("wait",!1)},update:function(t){this.model.set("data",t)},value:function(t){void 0!==t&&this.model.set("value",t);var e=this.model.get("current");if(this.config[e]){var i=this.fields[e].value();if(null!==i&&(i=s.isArray(i)?i:[i],i.length>0)){var a=this._batch({values:[]});for(var n in i){var l=this.history[i[n]+"_"+this.config[e].src];if(!l)return Galaxy.emit.debug("ui-select-content::value()","Requested details not found for '"+i[n]+"'."),null;a.values.push(l)}return a.values.sort(function(t,e){return t.hid-e.hid}),a}}else Galaxy.emit.debug("ui-select-content::value()","Invalid value/source '"+t+"'.");return null},_changeCurrent:function(){var t=this;n.each(this.fields,function(e,i){t.model.get("current")==i?(e.$el.show(),n.each(t.$batch,function(e,a){e[t.config[i].batch==a?"show":"hide"]()}),t.button_type.value(i)):e.$el.hide()})},_changeType:function(){var a=this,s=(this.model.get("flavor")?this.model.get("flavor")+"_":"")+String(this.model.get("type"))+(this.model.get("multiple")?"_multiple":"");o[s]?this.config=o[s]:(this.config=o.data,Galaxy.emit.debug("ui-select-content::_changeType()","Invalid configuration/type id '"+s+"'."));var l=a.model.get("data"),r=t.textify(this.model.get("extensions")),d=this.model.get("src_labels");this.fields=[],this.button_data=[],n.each(this.config,function(t,e){a.button_data.push({value:e,icon:t.icon,tooltip:t.tooltip}),a.fields.push(new i.View({optional:a.model.get("optional"),multiple:t.multiple,searchable:!t.multiple||l&&l[t.src]&&l[t.src].length>a.model.get("pagelimit"),individual:!0,error_text:"No "+(r?r+" ":"")+(d[t.src]||"content")+" available.",onchange:function(){a.trigger("change")}}))}),this.button_type=new e.RadioButton.View({value:this.model.get("current"),data:this.button_data,onchange:function(t){a.model.set("current",t),a.trigger("change")}}),this.$el.empty();var c=0;this.fields.length>1&&(this.$el.append(this.button_type.$el),c=Math.max(0,36*this.fields.length)+"px"),n.each(this.fields,function(t){a.$el.append(t.$el.css({"margin-left":c}))}),n.each(this.$batch,function(t,e){a.$el.append(t.css({"margin-left":c}))}),this.model.set("current",0),this._changeCurrent(),this._changeData()},_changeWait:function(){var t=this;n.each(this.fields,function(e){e[t.model.get("wait")?"wait":"unwait"]()})},_changeData:function(){var t=this.model.get("data"),e=this,i={};n.each(t,function(t,a){i[a]=[],n.each(t,function(t){i[a].push({hid:t.hid,keep:t.keep,label:t.hid+": "+t.name,value:t.id,tags:t.tags}),e.history[t.id+"_"+a]=t})}),n.each(this.config,function(t,a){i[t.src]&&e.fields[a].add(i[t.src],function(t,e){return e.hid-t.hid})})},_changeValue:function(){var t=this.model.get("value");if(t&&t.values&&t.values.length>0){var e=[];n.each(t.values,function(t){e.push(t.id)});for(var i=t.values[0].src,a=t.values.length>1,s=0;s
Select Library
'}})}}.apply(e,s))&&(t.exports=n)}).call(e,i(1))},37:function(t,e,i){"use strict";(function(a){var s,n;s=[i(3),i(19)],void 0!==(n=function(t,e){return{View:a.View.extend({initialize:function(i){var a=this;this.ftpfile_list=new e.View({name:"file",optional:i.optional,multiple:i.multiple,onchange:function(){i.onchange&&i.onchange(a.value())}}),this.setElement(this.ftpfile_list.$el),t.get({url:Galaxy.root+"api/remote_files",success:function(t){var e=[];for(var i in t)e.push({value:t[i].path,label:t[i].path});a.ftpfile_list.update(e)}})},value:function(t){return this.ftpfile_list.value(t)}})}}.apply(e,s))&&(t.exports=n)}).call(e,i(1))},38:function(t,e,i){"use strict";(function(a){var s,n;s=[i(3),i(5),i(39)],void 0!==(n=function(t,e,i){return{View:a.View.extend({initialize:function(t){var i=this;this.browse_button=new e.ButtonIcon({title:"Browse",icon:"fa fa-sign-in",tooltip:"Browse GenomeSpace",onclick:function(){i.browseGenomeSpace()}}),this.filename_textbox=new e.Input,this.token_textbox=new e.Input({type:"password"}),this.setElement(this._template(t)),this.$(".ui-gs-browse-button").append(this.browse_button.$el),this.$(".ui-gs-filename-textbox").append(this.filename_textbox.$el),this.$(".ui-gs-token-textbox").append(this.token_textbox.$el)},browseGenomeSpace:function(t){var e=this;i.openFileBrowser({successCallback:function(t){e.value(t.destination+"^"+t.token)}})},_template:function(t){return'
Token
'},value:function(t){if(void 0===t)return this._getValue();this._setValue(t)},_getValue:function(){return this.filename_textbox.value()+"^"+this.token_textbox.value()},_setValue:function(t){t&&(values=t.split("^"),this.filename_textbox.value(values[0]),this.token_textbox.value(values[1]))}})}}.apply(e,s))&&(t.exports=n)}).call(e,i(1))},39:function(t,e,i){"use strict";var a,s;a=[],void 0!==(s=function(){return{openFileBrowser:function(t){var e=window.Galaxy.config.genomespace_ui_url,i=e+"upload/loadUrlToGenomespace.html?getLocation=true",a=window.open(i,"GenomeSpace File Browser","height=360px,width=600px");successCalBack=t.successCallback,window.addEventListener("message",function(t){successCalBack(t.data)},!1),a.focus(),null!=t.errorCallback&&(a.setCallbackOnGSUploadError=config.errorCallback)}}}.apply(e,a))&&(t.exports=s)},40:function(t,e,i){"use strict";(function(a,s){var n,l;n=[i(3)],void 0!==(l=function(t){return a.View.extend({colors:{standard:["c00000","ff0000","ffc000","ffff00","92d050","00b050","00b0f0","0070c0","002060","7030a0"],base:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646"],theme:[["f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada"],["d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5"],["bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","92cddc","fac08f"],["a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","31859b","e36c09"],["7f7f7e","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","205867","974806"]]},initialize:function(e){this.options=t.merge(e,{}),this.setElement(this._template()),this.$panel=this.$(".ui-color-picker-panel"),this.$view=this.$(".ui-color-picker-view"),this.$value=this.$(".ui-color-picker-value"),this.$header=this.$(".ui-color-picker-header"),this._build(),this.visible=!1,this.value(this.options.value),this.$boxes=this.$(".ui-color-picker-box");var i=this;this.$boxes.on("click",function(){i.value(s(this).css("background-color")),i.$header.trigger("click")}),this.$header.on("click",function(){i.visible=!i.visible,i.visible?i.$view.fadeIn("fast"):i.$view.fadeOut("fast")})},value:function(t){return void 0!==t&&null!==t&&(this.$value.css("background-color",t),this.$(".ui-color-picker-box").empty(),this.$(this._getValue()).html(this._templateCheck()),this.options.onchange&&this.options.onchange(t)),this._getValue()},_getValue:function(){var t=this.$value.css("background-color");if(t=t.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/)){var e=function(t){return("0"+parseInt(t).toString(16)).slice(-2)};return"#"+e(t[1])+e(t[2])+e(t[3])}return null},_build:function(){this._content({colors:this.colors.base});for(var t in this.colors.theme){var e={};0==t?e.bottom=!0:t!=this.colors.theme.length-1?(e.top=!0,e.bottom=!0):e.top=!0,e.colors=this.colors.theme[t],this._content(e)}this._content({colors:this.colors.standard})},_content:function(t){var e=t.colors,i=s(this._templateContent()),a=i.find(".line");this.$panel.append(i);for(var n in e){var l=s(this._templateBox(e[n]));t.top&&(l.css("border-top","none"),l.css("border-top-left-radius","0px"),l.css("border-top-right-radius","0px")),t.bottom&&(l.css("border-bottom","none"),l.css("border-bottom-left-radius","0px"),l.css("border-bottom-right-radius","0px")),a.append(l)}return i},_templateCheck:function(){return'
'},_templateContent:function(){return'
'},_templateBox:function(t){return'
'},_template:function(){return'
Select a color
'}})}.apply(e,n))&&(t.exports=l)}).call(e,i(1),i(0))},44:function(t,e,i){"use strict";(function(e){var a=i(0),s=a,n=i(11),l=i(5),o=e.Router.extend({initialize:function(t,e){this.page=t,this.options=e},push:function(t,e){e=e||{},e.__identifer=Math.random().toString(36).substr(2),s.isEmptyObject(e)||(t+=-1==t.indexOf("?")?"?":"&",t+=s.param(e,!0)),Galaxy.params=e,this.navigate(t,{trigger:!0})},execute:function(t,e,i){Galaxy.debug("router execute:",t,e,i);var a=n.parse(e.pop());e.push(a),t&&(this.authenticate(e,i)?t.apply(this,e):this.access_denied())},authenticate:function(t,e){return!0},access_denied:function(){this.page.display(new l.Message({status:"danger",message:"You must be logged in with proper credentials to make this request.",persistent:!0}))}});t.exports=o}).call(e,i(1))},5:function(t,e,i){"use strict";(function(a,s,n){var l,o;l=[i(3),i(17),i(29),i(18),i(30),i(10),i(7)],void 0!==(o=function(t,e,i,l,o,r,d){var c=a.View.extend({tagName:"label",initialize:function(t){this.model=t&&t.model||new a.Model(t),this.tagName=t.tagName||this.tagName,this.setElement(s("<"+this.tagName+"/>")),this.listenTo(this.model,"change",this.render,this),this.render()},title:function(t){this.model.set("title",t)},value:function(){return this.model.get("title")},render:function(){return this.$el.removeClass().addClass("ui-label").addClass(this.model.get("cls")).html(this.model.get("title")),this}}),h=a.View.extend({initialize:function(t){this.model=t&&t.model||new a.Model({message:null,status:"info",cls:"",persistent:!1,fade:!0}).set(t),this.listenTo(this.model,"change",this.render,this),this.render()},update:function(t){this.model.set(t)},render:function(){this.$el.removeClass().addClass("ui-message").addClass(this.model.get("cls"));var t=this.model.get("status");if(this.model.get("large")?this.$el.addClass(("success"==t&&"done"||"danger"==t&&"error"||t)+"messagelarge"):this.$el.addClass("alert").addClass("alert-"+t),this.model.get("message")){if(this.$el.html(this.messageForDisplay()),this.$el[this.model.get("fade")?"fadeIn":"show"](),this.timeout&&window.clearTimeout(this.timeout),!this.model.get("persistent")){var e=this;this.timeout=window.setTimeout(function(){e.model.set("message","")},3e3)}}else this.$el.fadeOut();return this},messageForDisplay:function(){return n.escape(this.model.get("message"))}}),u=h.extend({messageForDisplay:function(){return this.model.get("message")}}),p=a.View.extend({initialize:function(t){this.model=t&&t.model||new a.Model({type:"text",placeholder:"",disabled:!1,readonly:!1,visible:!0,cls:"",area:!1,color:null,style:null}).set(t),this.tagName=this.model.get("area")?"textarea":"input",this.setElement(s("<"+this.tagName+"/>")),this.listenTo(this.model,"change",this.render,this),this.render()},events:{input:"_onchange"},value:function(t){return void 0!==t&&this.model.set("value","string"==typeof t?t:""),this.model.get("value")},render:function(){var t=this;this.$el.removeClass().addClass("ui-"+this.tagName).addClass(this.model.get("cls")).addClass(this.model.get("style")).attr("id",this.model.id).attr("type",this.model.get("type")).attr("placeholder",this.model.get("placeholder")).css("color",this.model.get("color")||"").css("border-color",this.model.get("color")||"");var e=this.model.get("datalist");return s.isArray(e)&&e.length>0&&this.$el.autocomplete({source:function(e,i){i(t.model.get("datalist"))},change:function(){t._onchange()}}),this.model.get("value")!==this.$el.val()&&this.$el.val(this.model.get("value")),n.each(["readonly","disabled"],function(e){t.model.get(e)?t.$el.attr(e,!0):t.$el.removeAttr(e)}),this.$el[this.model.get("visible")?"show":"hide"](),this},_onchange:function(){this.value(this.$el.val()),this.model.get("onchange")&&this.model.get("onchange")(this.model.get("value"))}}),f=a.View.extend({initialize:function(t){this.model=t&&t.model||new a.Model(t),this.setElement(s("
").append(this.$info=s("
")).append(this.$hidden=s("
"))),this.listenTo(this.model,"change",this.render,this),this.render()},value:function(t){return void 0!==t&&this.model.set("value",t),this.model.get("value")},render:function(){return this.$el.attr("id",this.model.id),this.$hidden.val(this.model.get("value")),this.model.get("info")?this.$info.show().text(this.model.get("info")):this.$info.hide(),this}}),m=a.View.extend({initialize:function(t){var e=this;this.model=t&&t.model||new a.Model(t),this.setElement(s("
").append(this.$info=s("
")).append(this.$file=s("").attr("type","file").addClass("ui-margin-bottom")).append(this.$text=s("\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"
\")\n });\n modal.show({ backdrop: true });\n }\n\n // ============================================================================\n return {\n Modal: Modal,\n hide_modal: hide_modal,\n show_modal: show_modal,\n show_message: show_message,\n show_in_overlay: show_in_overlay\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(_, $, Backbone) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(66)], __WEBPACK_AMD_DEFINE_RESULT__ = function (BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = \"

Galaxy Tours

\\n

This page presents a list of interactive tours available on this Galaxy server.\\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).

\\n\\n
\\n <% _.each(tourtagorder, function(tag) { %>\\n \\n <% }); %>\\n
\\n\\n<% _.each(tourtagorder, function(tourtagkey) { %>\\n
\\\" style=\\\"display: block;\\\">\\n <% var tourtag = tourtags[tourtagkey]; %>\\n

\\n <%- tourtag.name %>\\n

\\n \\n
\\n<% }); %>\";\n\n var tour_opts = {\n storage: window.sessionStorage,\n onEnd: function onEnd() {\n sessionStorage.removeItem(\"activeGalaxyTour\");\n },\n delay: 150, // Attempts to make it look natural\n orphan: true\n };\n\n var hooked_tour_from_data = function hooked_tour_from_data(data) {\n _.each(data.steps, function (step) {\n if (step.preclick) {\n step.onShow = function () {\n _.each(step.preclick, function (preclick) {\n // TODO: click delay between clicks\n $(preclick).click();\n });\n };\n }\n if (step.postclick) {\n step.onHide = function () {\n _.each(step.postclick, function (postclick) {\n // TODO: click delay between clicks\n $(postclick).click();\n });\n };\n }\n if (step.textinsert) {\n // Have to manually trigger a change here, for some\n // elements which have additional logic, like the\n // upload input box\n step.onShown = function () {\n $(step.element).val(step.textinsert).trigger(\"change\");\n };\n }\n });\n return data;\n };\n\n var TourItem = Backbone.Model.extend({\n urlRoot: gxy_root + \"api/tours\"\n });\n\n var Tours = Backbone.Collection.extend({\n url: gxy_root + \"api/tours\",\n model: TourItem\n });\n\n var giveTour = function giveTour(tour_id) {\n var url = gxy_root + \"api/tours/\" + tour_id;\n $.getJSON(url, function (data) {\n // Set hooks for additional click and data entry actions.\n var tourdata = hooked_tour_from_data(data);\n sessionStorage.setItem(\"activeGalaxyTour\", JSON.stringify(data));\n // Store tour steps in sessionStorage to easily persist w/o hackery.\n var tour = new Tour(_.extend({\n steps: tourdata.steps\n }, tour_opts));\n // Always clean restart, since this is a new, explicit giveTour execution.\n tour.init();\n tour.goTo(0);\n tour.restart();\n });\n };\n var ToursView = Backbone.View.extend({\n title: \"Tours\",\n // initialize\n initialize: function initialize() {\n var self = this;\n this.setElement(\"
\");\n this.model = new Tours();\n this.model.fetch({\n success: function success() {\n self.render();\n },\n error: function error() {\n // Do something.\n console.error(\"Failed to fetch tours.\");\n }\n });\n },\n\n render: function render() {\n var tpl = _.template(tourpage_template);\n\n var tourtags = {};\n _.each(this.model.models, function (tour) {\n if (tour.attributes.tags === null) {\n if (tourtags.Untagged === undefined) {\n tourtags.Untagged = { name: \"Untagged\", tours: [] };\n }\n tourtags.Untagged.tours.push(tour);\n } else {\n _.each(tour.attributes.tags, function (tag) {\n tag = tag.charAt(0).toUpperCase() + tag.slice(1);\n if (tourtags[tag] === undefined) {\n tourtags[tag] = { name: tag, tours: [] };\n }\n tourtags[tag].tours.push(tour);\n });\n }\n });\n var tourtagorder = Object.keys(tourtags).sort();\n\n this.$el.html(tpl({\n tours: this.model.models,\n tourtags: tourtags,\n tourtagorder: tourtagorder\n })).on(\"click\", \".tourItem\", function (e) {\n e.preventDefault();\n giveTour($(this).data(\"tour.id\"));\n }).on(\"click\", \".tag-selector-button\", function (e) {\n var elem = $(e.target);\n var display = \"block\";\n var tag = elem.attr(\"tag-selector-button\");\n\n elem.toggleClass(\"btn-primary\");\n elem.toggleClass(\"btn-secondary\");\n\n if (elem.hasClass(\"btn-secondary\")) {\n display = \"none\";\n }\n $(\"div[tag='\" + tag + \"']\").css({ display: display });\n });\n }\n });\n\n return {\n ToursView: ToursView,\n hooked_tour_from_data: hooked_tour_from_data,\n tour_opts: tour_opts,\n giveTour: giveTour\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1)))\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n //==============================================================================\n var LOGGING_FNS = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"metric\"];\n /** adds logging functions to an obj.prototype (or obj directly) adding a namespace for filtering\n * @param {Object} obj\n * @param {String} namespace\n */\n function addLogging(obj, namespace) {\n var addTo = obj.prototype !== undefined ? obj.prototype : obj;\n if (namespace !== undefined) {\n addTo._logNamespace = namespace;\n }\n //yagni?: without this, may not capture Galaxy.config.debug and add Galaxy.logger properly\n // if( window.Galaxy && window.Galaxy.config && window.Galaxy.config.debug ){\n // addTo.logger = window.Galaxy.logger;\n // }\n\n // give the object each\n LOGGING_FNS.forEach(function (logFn) {\n addTo[logFn] = function () {\n if (!this.logger) {\n return undefined;\n }\n if (this.logger.emit) {\n return this.logger.emit(logFn, this._logNamespace, arguments);\n }\n if (this.logger[logFn]) {\n //TODO:! there has to be a way to get the lineno/file into this\n // http://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n // http://www.paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/\n return this.logger[logFn].apply(this.logger, arguments);\n }\n return undefined;\n };\n });\n return obj;\n }\n\n //==============================================================================\n return addLogging;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(1), __webpack_require__(6), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, Backbone, baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class Model for a Galaxy user (including anonymous users).\n * @name User\n */\n var User = Backbone.Model.extend(baseMVC.LoggableMixin).extend(\n /** @lends User.prototype */{\n _logNamespace: logNamespace,\n\n /** API location for this resource */\n urlRoot: function urlRoot() {\n return Galaxy.root + \"api/users\";\n },\n\n /** Model defaults\n * Note: don't check for anon-users with the username as the default is '(anonymous user)'\n * a safer method is if( !user.get( 'email' ) ) -> anon user\n */\n defaults: /** @lends User.prototype */{\n id: null,\n username: \"(\" + _l(\"anonymous user\") + \")\",\n email: \"\",\n total_disk_usage: 0,\n nice_total_disk_usage: \"\",\n quota_percent: null,\n is_admin: false\n },\n\n /** Set up and bind events\n * @param {Object} data Initial model data.\n */\n initialize: function initialize(data) {\n this.log(\"User.initialize:\", data);\n\n this.on(\"loaded\", function (model, resp) {\n this.log(this + \" has loaded:\", model, resp);\n });\n this.on(\"change\", function (model, data) {\n this.log(this + \" has changed:\", model, data.changes);\n });\n },\n\n isAnonymous: function isAnonymous() {\n return !this.get(\"email\");\n },\n\n isAdmin: function isAdmin() {\n return this.get(\"is_admin\");\n },\n\n /** Load a user with the API using an id.\n * If getting an anonymous user or no access to a user id, pass the User.CURRENT_ID_STR\n * (e.g. 'current') and the API will return the current transaction's user data.\n * @param {String} idOrCurrent encoded user id or the User.CURRENT_ID_STR\n * @param {Object} options hash to pass to Backbone.Model.fetch. Can contain success, error fns.\n * @fires loaded when the model has been loaded from the API, passing the newModel and AJAX response.\n */\n loadFromApi: function loadFromApi(idOrCurrent, options) {\n idOrCurrent = idOrCurrent || User.CURRENT_ID_STR;\n\n options = options || {};\n var model = this,\n userFn = options.success;\n\n /** @ignore */\n options.success = function (newModel, response) {\n model.trigger(\"loaded\", newModel, response);\n if (userFn) {\n userFn(newModel, response);\n }\n };\n\n // requests for the current user must have a sep. constructed url (fetch don't work, ma)\n if (idOrCurrent === User.CURRENT_ID_STR) {\n options.url = this.urlRoot + \"/\" + User.CURRENT_ID_STR;\n }\n return Backbone.Model.prototype.fetch.call(this, options);\n },\n\n /** Clears all data from the sessionStorage.\n */\n clearSessionStorage: function clearSessionStorage() {\n for (var key in sessionStorage) {\n //TODO: store these under the user key so we don't have to do this\n // currently only history\n if (key.indexOf(\"history:\") === 0) {\n sessionStorage.removeItem(key);\n } else if (key === \"history-panel\") {\n sessionStorage.removeItem(key);\n }\n }\n },\n\n /** string representation */\n toString: function toString() {\n var userInfo = [this.get(\"username\")];\n if (this.get(\"id\")) {\n userInfo.unshift(this.get(\"id\"));\n userInfo.push(this.get(\"email\"));\n }\n return \"User(\" + userInfo.join(\":\") + \")\";\n }\n });\n\n // string to send to tell server to return this transaction's user (see api/users.py)\n User.CURRENT_ID_STR = \"current\";\n\n // class method to load the current user via the api and return that model\n User.getCurrentUserFromApi = function (options) {\n var currentUser = new User();\n currentUser.loadFromApi(User.CURRENT_ID_STR, options);\n return currentUser;\n };\n\n // (stub) collection for users (shouldn't be common unless admin UI)\n var UserCollection = Backbone.Collection.extend(baseMVC.LoggableMixin).extend({\n model: User,\n urlRoot: function urlRoot() {\n return Galaxy.root + \"api/users\";\n }\n //logger : console,\n });\n\n //==============================================================================\n return {\n User: User\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {;(function($){ // secure $ jQuery alias\r\n/*******************************************************************************************/\t\r\n// jquery.event.hover.js \r\n// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)\r\n// Licensed under the MIT License (MIT-LICENSE.txt)\r\n// http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// JQuery 1.9+ compatible version\r\n//\r\n// Optional settings :\r\n// $.event.special.hover.delay = 100;\r\n// Defines the delay (msec) while mouse is inside the element before checking the speed\r\n// $.event.special.hover.speed = 100;\r\n// Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event\r\n/*******************************************************************************************/\r\n\r\n// save the old jquery \"hover\" method\r\n$.fn._hover = $.fn.hover;\r\n\r\n// jquery method \r\n$.fn.hover = function( fn1, fn2, fn3 ) {\r\n\tif ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args\r\n\tif ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args\r\n\treturn !fn1 ? this.trigger('hover') // 0 args \r\n\t\t: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args\r\n\t};\t\r\n\r\n// special event configuration\r\nvar hover = $.event.special.hover = {\r\n\tdelay: 100, // milliseconds\r\n\tspeed: 100, // pixels per second\r\n\tsetup: function( data ){\r\n\t\tdata = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );\r\n\t\t$.event.add( this, \"mouseenter mouseleave\", hoverHandler, data );\r\n\t\t},\r\n\tteardown: function(){\r\n\t\t$.event.remove( this, \"mouseenter mouseleave\", hoverHandler );\r\n\t\t}\r\n\t};\r\n\r\n// shared event handler\r\nfunction hoverHandler( event ){\r\n\tvar data = event.data || event;\r\n\tswitch ( event.type ){\r\n\t\tcase 'mouseenter': // mouseover\r\n\t\t\tdata.dist2 = 0; // init mouse distance�\r\n\t\t\tdata.event = event; // store the event\r\n\t\t\tevent.type = \"hoverstart\"; // hijack event\r\n if($.event.dispatch.call(this, event) !== false) {\r\n \tdata.elem = this; // ref to the current element\r\n\t\t\t\t$.event.add( this, \"mousemove\", hoverHandler, data ); // track the mouse\r\n\t\t\t\tdata.timer = setTimeout( compare, data.delay ); // start async compare\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'mousemove': // track the event, mouse distance� = x� + y�\r\n\t\t\tdata.dist2 += Math.pow( event.pageX-data.event.pageX, 2 ) \r\n\t\t\t\t+ Math.pow( event.pageY-data.event.pageY, 2 ); \r\n\t\t\tdata.event = event; // store current event\r\n\t\t\tbreak;\r\n\t\tcase 'mouseleave': // mouseout\r\n\t\t\tclearTimeout( data.timer ); // uncompare\r\n\t\t\tif ( data.hovered ){ \r\n\t\t\t\tevent.type = \"hoverend\"; // hijack event\r\n $.event.dispatch.call(this, event); // handle \"hoverend\"\r\n\t\t\t\tdata.hovered--; // reset flag\r\n\t\t\t\t}\r\n\t\t\telse $.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\tbreak;\r\n\t\tdefault: // timeout compare // distance� = x� + y� = ( speed * time )�\r\n\t\t\tif ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable\r\n\t\t\t\t$.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\t\tdata.event.type = \"hover\"; // hijack event\r\n if($.event.dispatch.call(data.elem, data.event) !== false) // handle \"hover\"\r\n\t\t\t\t\tdata.hovered++; // flag for \"hoverend\"\r\n\t\t\t\t}\r\n\t\t\telse data.timer = setTimeout( compare, data.delay ); // async recurse\r\n\t\t\tdata.dist2 = 0; // reset distance� for next compare\r\n\t\t\tbreak;\r\n\t\t}\r\n\tfunction compare(){ hoverHandler( data ); }; // timeout/recursive function\r\n\t};\r\n\t\r\n/*******************************************************************************************/\r\n})(jQuery); // confine scope\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {/*! \n * jquery.event.drag - v 2.2\n * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n * Open Source MIT License - http://threedubmedia.com/code/license\n */\n// Created: 2008-06-04 \n// Updated: 2012-05-21\n// REQUIRES: jquery 1.7.x\n\n;(function( $ ){\n\n// add the jquery instance method\n$.fn.drag = function( str, arg, opts ){\n\t// figure out the event type\n\tvar type = typeof str == \"string\" ? str : \"\",\n\t// figure out the event handler...\n\tfn = $.isFunction( str ) ? str : $.isFunction( arg ) ? arg : null;\n\t// fix the event type\n\tif ( type.indexOf(\"drag\") !== 0 ) \n\t\ttype = \"drag\"+ type;\n\t// were options passed\n\topts = ( str == fn ? arg : opts ) || {};\n\t// trigger or bind event handler\n\treturn fn ? this.bind( type, opts, fn ) : this.trigger( type );\n};\n\n// local refs (increase compression)\nvar $event = $.event, \n$special = $event.special,\n// configure the drag special event \ndrag = $special.drag = {\n\t\n\t// these are the default settings\n\tdefaults: {\n\t\twhich: 1, // mouse button pressed to start drag sequence\n\t\tdistance: 0, // distance dragged before dragstart\n\t\tnot: ':input', // selector to suppress dragging on target elements\n\t\thandle: null, // selector to match handle target elements\n\t\trelative: false, // true to use \"position\", false to use \"offset\"\n\t\tdrop: true, // false to suppress drop events, true or selector to allow\n\t\tclick: false // false to suppress click events after dragend (no proxy)\n\t},\n\t\n\t// the key name for stored drag data\n\tdatakey: \"dragdata\",\n\t\n\t// prevent bubbling for better performance\n\tnoBubble: true,\n\t\n\t// count bound related events\n\tadd: function( obj ){ \n\t\t// read the interaction data\n\t\tvar data = $.data( this, drag.datakey ),\n\t\t// read any passed options \n\t\topts = obj.data || {};\n\t\t// count another realted event\n\t\tdata.related += 1;\n\t\t// extend data options bound with this event\n\t\t// don't iterate \"opts\" in case it is a node \n\t\t$.each( drag.defaults, function( key, def ){\n\t\t\tif ( opts[ key ] !== undefined )\n\t\t\t\tdata[ key ] = opts[ key ];\n\t\t});\n\t},\n\t\n\t// forget unbound related events\n\tremove: function(){\n\t\t$.data( this, drag.datakey ).related -= 1;\n\t},\n\t\n\t// configure interaction, capture settings\n\tsetup: function(){\n\t\t// check for related events\n\t\tif ( $.data( this, drag.datakey ) ) \n\t\t\treturn;\n\t\t// initialize the drag data with copied defaults\n\t\tvar data = $.extend({ related:0 }, drag.defaults );\n\t\t// store the interaction data\n\t\t$.data( this, drag.datakey, data );\n\t\t// bind the mousedown event, which starts drag interactions\n\t\t$event.add( this, \"touchstart mousedown\", drag.init, data );\n\t\t// prevent image dragging in IE...\n\t\tif ( this.attachEvent ) \n\t\t\tthis.attachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\n\t// destroy configured interaction\n\tteardown: function(){\n\t\tvar data = $.data( this, drag.datakey ) || {};\n\t\t// check for related events\n\t\tif ( data.related ) \n\t\t\treturn;\n\t\t// remove the stored data\n\t\t$.removeData( this, drag.datakey );\n\t\t// remove the mousedown event\n\t\t$event.remove( this, \"touchstart mousedown\", drag.init );\n\t\t// enable text selection\n\t\tdrag.textselect( true ); \n\t\t// un-prevent image dragging in IE...\n\t\tif ( this.detachEvent ) \n\t\t\tthis.detachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\t\n\t// initialize the interaction\n\tinit: function( event ){ \n\t\t// sorry, only one touch at a time\n\t\tif ( drag.touched ) \n\t\t\treturn;\n\t\t// the drag/drop interaction data\n\t\tvar dd = event.data, results;\n\t\t// check the which directive\n\t\tif ( event.which != 0 && dd.which > 0 && event.which != dd.which ) \n\t\t\treturn; \n\t\t// check for suppressed selector\n\t\tif ( $( event.target ).is( dd.not ) ) \n\t\t\treturn;\n\t\t// check for handle selector\n\t\tif ( dd.handle && !$( event.target ).closest( dd.handle, event.currentTarget ).length ) \n\t\t\treturn;\n\n\t\tdrag.touched = event.type == 'touchstart' ? this : null;\n\t\tdd.propagates = 1;\n\t\tdd.mousedown = this;\n\t\tdd.interactions = [ drag.interaction( this, dd ) ];\n\t\tdd.target = event.target;\n\t\tdd.pageX = event.pageX;\n\t\tdd.pageY = event.pageY;\n\t\tdd.dragging = null;\n\t\t// handle draginit event... \n\t\tresults = drag.hijack( event, \"draginit\", dd );\n\t\t// early cancel\n\t\tif ( !dd.propagates )\n\t\t\treturn;\n\t\t// flatten the result set\n\t\tresults = drag.flatten( results );\n\t\t// insert new interaction elements\n\t\tif ( results && results.length ){\n\t\t\tdd.interactions = [];\n\t\t\t$.each( results, function(){\n\t\t\t\tdd.interactions.push( drag.interaction( this, dd ) );\n\t\t\t});\n\t\t}\n\t\t// remember how many interactions are propagating\n\t\tdd.propagates = dd.interactions.length;\n\t\t// locate and init the drop targets\n\t\tif ( dd.drop !== false && $special.drop ) \n\t\t\t$special.drop.handler( event, dd );\n\t\t// disable text selection\n\t\tdrag.textselect( false ); \n\t\t// bind additional events...\n\t\tif ( drag.touched )\n\t\t\t$event.add( drag.touched, \"touchmove touchend\", drag.handler, dd );\n\t\telse \n\t\t\t$event.add( document, \"mousemove mouseup\", drag.handler, dd );\n\t\t// helps prevent text selection or scrolling\n\t\tif ( !drag.touched || dd.live )\n\t\t\treturn false;\n\t},\t\n\t\n\t// returns an interaction object\n\tinteraction: function( elem, dd ){\n\t\tvar offset = $( elem )[ dd.relative ? \"position\" : \"offset\" ]() || { top:0, left:0 };\n\t\treturn {\n\t\t\tdrag: elem, \n\t\t\tcallback: new drag.callback(), \n\t\t\tdroppable: [],\n\t\t\toffset: offset\n\t\t};\n\t},\n\t\n\t// handle drag-releatd DOM events\n\thandler: function( event ){ \n\t\t// read the data before hijacking anything\n\t\tvar dd = event.data;\t\n\t\t// handle various events\n\t\tswitch ( event.type ){\n\t\t\t// mousemove, check distance, start dragging\n\t\t\tcase !dd.dragging && 'touchmove': \n\t\t\t\tevent.preventDefault();\n\t\t\tcase !dd.dragging && 'mousemove':\n\t\t\t\t// drag tolerance, x� + y� = distance�\n\t\t\t\tif ( Math.pow( event.pageX-dd.pageX, 2 ) + Math.pow( event.pageY-dd.pageY, 2 ) < Math.pow( dd.distance, 2 ) ) \n\t\t\t\t\tbreak; // distance tolerance not reached\n\t\t\t\tevent.target = dd.target; // force target from \"mousedown\" event (fix distance issue)\n\t\t\t\tdrag.hijack( event, \"dragstart\", dd ); // trigger \"dragstart\"\n\t\t\t\tif ( dd.propagates ) // \"dragstart\" not rejected\n\t\t\t\t\tdd.dragging = true; // activate interaction\n\t\t\t// mousemove, dragging\n\t\t\tcase 'touchmove':\n\t\t\t\tevent.preventDefault();\n\t\t\tcase 'mousemove':\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\t// trigger \"drag\"\t\t\n\t\t\t\t\tdrag.hijack( event, \"drag\", dd );\n\t\t\t\t\tif ( dd.propagates ){\n\t\t\t\t\t\t// manage drop events\n\t\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"dropstart\", \"dropend\"\t\t\t\t\t\t\t\n\t\t\t\t\t\tbreak; // \"drag\" not rejected, stop\t\t\n\t\t\t\t\t}\n\t\t\t\t\tevent.type = \"mouseup\"; // helps \"drop\" handler behave\n\t\t\t\t}\n\t\t\t// mouseup, stop dragging\n\t\t\tcase 'touchend': \n\t\t\tcase 'mouseup': \n\t\t\tdefault:\n\t\t\t\tif ( drag.touched )\n\t\t\t\t\t$event.remove( drag.touched, \"touchmove touchend\", drag.handler ); // remove touch events\n\t\t\t\telse \n\t\t\t\t\t$event.remove( document, \"mousemove mouseup\", drag.handler ); // remove page events\t\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"drop\"\n\t\t\t\t\tdrag.hijack( event, \"dragend\", dd ); // trigger \"dragend\"\t\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrag.hijack( event, \"dragclickonly\", dd ); // trigger \"dragclickonly\"\t\n\t\t\t\t}\n\t\t\t\tdrag.textselect( true ); // enable text selection\n\t\t\t\t// if suppressing click events...\n\t\t\t\tif ( dd.click === false && dd.dragging )\n\t\t\t\t\t$.data( dd.mousedown, \"suppress.click\", new Date().getTime() + 5 );\n\t\t\t\tdd.dragging = drag.touched = false; // deactivate element\t\n\t\t\t\tbreak;\n\t\t}\n\t},\n\t\t\n\t// re-use event object for custom events\n\thijack: function( event, type, dd, x, elem ){\n\t\t// not configured\n\t\tif ( !dd ) \n\t\t\treturn;\n\t\t// remember the original event and type\n\t\tvar orig = { event:event.originalEvent, type:event.type },\n\t\t// is the event drag related or drog related?\n\t\tmode = type.indexOf(\"drop\") ? \"drag\" : \"drop\",\n\t\t// iteration vars\n\t\tresult, i = x || 0, ia, $elems, callback,\n\t\tlen = !isNaN( x ) ? x : dd.interactions.length;\n\t\t// modify the event type\n\t\tevent.type = type;\n\t\t// remove the original event\n\t\tevent.originalEvent = null;\n\t\t// initialize the results\n\t\tdd.results = [];\n\t\t// handle each interacted element\n\t\tdo if ( ia = dd.interactions[ i ] ){\n\t\t\t// validate the interaction\n\t\t\tif ( type !== \"dragend\" && ia.cancelled )\n\t\t\t\tcontinue;\n\t\t\t// set the dragdrop properties on the event object\n\t\t\tcallback = drag.properties( event, dd, ia );\n\t\t\t// prepare for more results\n\t\t\tia.results = [];\n\t\t\t// handle each element\n\t\t\t$( elem || ia[ mode ] || dd.droppable ).each(function( p, subject ){\n\t\t\t\t// identify drag or drop targets individually\n\t\t\t\tcallback.target = subject;\n\t\t\t\t// force propagtion of the custom event\n\t\t\t\tevent.isPropagationStopped = function(){ return false; };\n\t\t\t\t// handle the event\t\n\t\t\t\tresult = subject ? $event.dispatch.call( subject, event, callback ) : null;\n\t\t\t\t// stop the drag interaction for this element\n\t\t\t\tif ( result === false ){\n\t\t\t\t\tif ( mode == \"drag\" ){\n\t\t\t\t\t\tia.cancelled = true;\n\t\t\t\t\t\tdd.propagates -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == \"drop\" ){\n\t\t\t\t\t\tia[ mode ][p] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// assign any dropinit elements\n\t\t\t\telse if ( type == \"dropinit\" )\n\t\t\t\t\tia.droppable.push( drag.element( result ) || subject );\n\t\t\t\t// accept a returned proxy element \n\t\t\t\tif ( type == \"dragstart\" )\n\t\t\t\t\tia.proxy = $( drag.element( result ) || ia.drag )[0];\n\t\t\t\t// remember this result\t\n\t\t\t\tia.results.push( result );\n\t\t\t\t// forget the event result, for recycling\n\t\t\t\tdelete event.result;\n\t\t\t\t// break on cancelled handler\n\t\t\t\tif ( type !== \"dropinit\" )\n\t\t\t\t\treturn result;\n\t\t\t});\t\n\t\t\t// flatten the results\t\n\t\t\tdd.results[ i ] = drag.flatten( ia.results );\t\n\t\t\t// accept a set of valid drop targets\n\t\t\tif ( type == \"dropinit\" )\n\t\t\t\tia.droppable = drag.flatten( ia.droppable );\n\t\t\t// locate drop targets\n\t\t\tif ( type == \"dragstart\" && !ia.cancelled )\n\t\t\t\tcallback.update(); \n\t\t}\n\t\twhile ( ++i < len )\n\t\t// restore the original event & type\n\t\tevent.type = orig.type;\n\t\tevent.originalEvent = orig.event;\n\t\t// return all handler results\n\t\treturn drag.flatten( dd.results );\n\t},\n\t\t\n\t// extend the callback object with drag/drop properties...\n\tproperties: function( event, dd, ia ){\t\t\n\t\tvar obj = ia.callback;\n\t\t// elements\n\t\tobj.drag = ia.drag;\n\t\tobj.proxy = ia.proxy || ia.drag;\n\t\t// starting mouse position\n\t\tobj.startX = dd.pageX;\n\t\tobj.startY = dd.pageY;\n\t\t// current distance dragged\n\t\tobj.deltaX = event.pageX - dd.pageX;\n\t\tobj.deltaY = event.pageY - dd.pageY;\n\t\t// original element position\n\t\tobj.originalX = ia.offset.left;\n\t\tobj.originalY = ia.offset.top;\n\t\t// adjusted element position\n\t\tobj.offsetX = obj.originalX + obj.deltaX; \n\t\tobj.offsetY = obj.originalY + obj.deltaY;\n\t\t// assign the drop targets information\n\t\tobj.drop = drag.flatten( ( ia.drop || [] ).slice() );\n\t\tobj.available = drag.flatten( ( ia.droppable || [] ).slice() );\n\t\treturn obj;\t\n\t},\n\t\n\t// determine is the argument is an element or jquery instance\n\telement: function( arg ){\n\t\tif ( arg && ( arg.jquery || arg.nodeType == 1 ) )\n\t\t\treturn arg;\n\t},\n\t\n\t// flatten nested jquery objects and arrays into a single dimension array\n\tflatten: function( arr ){\n\t\treturn $.map( arr, function( member ){\n\t\t\treturn member && member.jquery ? $.makeArray( member ) : \n\t\t\t\tmember && member.length ? drag.flatten( member ) : member;\n\t\t});\n\t},\n\t\n\t// toggles text selection attributes ON (true) or OFF (false)\n\ttextselect: function( bool ){ \n\t\t$( document )[ bool ? \"unbind\" : \"bind\" ](\"selectstart\", drag.dontstart )\n\t\t\t.css(\"MozUserSelect\", bool ? \"\" : \"none\" );\n\t\t// .attr(\"unselectable\", bool ? \"off\" : \"on\" )\n\t\tdocument.unselectable = bool ? \"off\" : \"on\"; \n\t},\n\t\n\t// suppress \"selectstart\" and \"ondragstart\" events\n\tdontstart: function(){ \n\t\treturn false; \n\t},\n\t\n\t// a callback instance contructor\n\tcallback: function(){}\n\t\n};\n\n// callback methods\ndrag.callback.prototype = {\n\tupdate: function(){\n\t\tif ( $special.drop && this.available.length )\n\t\t\t$.each( this.available, function( i ){\n\t\t\t\t$special.drop.locate( this, i );\n\t\t\t});\n\t}\n};\n\n// patch $.event.$dispatch to allow suppressing clicks\nvar $dispatch = $event.dispatch;\n$event.dispatch = function( event ){\n\tif ( $.data( this, \"suppress.\"+ event.type ) - new Date().getTime() > 0 ){\n\t\t$.removeData( this, \"suppress.\"+ event.type );\n\t\treturn;\n\t}\n\treturn $dispatch.apply( this, arguments );\n};\n\n// event fix hooks for touch events...\nvar touchHooks = \n$event.fixHooks.touchstart = \n$event.fixHooks.touchmove = \n$event.fixHooks.touchend =\n$event.fixHooks.touchcancel = {\n\tprops: \"clientX clientY pageX pageY screenX screenY\".split( \" \" ),\n\tfilter: function( event, orig ) {\n\t\tif ( orig ){\n\t\t\tvar touched = ( orig.touches && orig.touches[0] )\n\t\t\t\t|| ( orig.changedTouches && orig.changedTouches[0] )\n\t\t\t\t|| null; \n\t\t\t// iOS webkit: touchstart, touchmove, touchend\n\t\t\tif ( touched ) \n\t\t\t\t$.each( touchHooks.props, function( i, prop ){\n\t\t\t\t\tevent[ prop ] = touched[ prop ];\n\t\t\t\t});\n\t\t}\n\t\treturn event;\n\t}\n};\n\n// share the same special event configuration with related events...\n$special.draginit = $special.dragstart = $special.dragend = drag;\n\n})( jQuery );\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if ( true ) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n\n getLineHeight: function(elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {/*!\n * jQuery Form Plugin\n * version: 3.45.0-2013.10.17\n * Requires jQuery v1.5 or later\n * Copyright (c) 2013 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n/*global ActiveXObject */\n;(function($) {\n\"use strict\";\n\n/*\n Usage Note:\n -----------\n Do not use both ajaxSubmit and ajaxForm on the same form. These\n functions are mutually exclusive. Use ajaxSubmit if you want\n to bind your own submit handler to the form. For example,\n\n $(document).ready(function() {\n $('#myForm').on('submit', function(e) {\n e.preventDefault(); // <-- important\n $(this).ajaxSubmit({\n target: '#output'\n });\n });\n });\n\n Use ajaxForm when you want the plugin to manage all the event binding\n for you. For example,\n\n $(document).ready(function() {\n $('#myForm').ajaxForm({\n target: '#output'\n });\n });\n\n You can also use ajaxForm with delegation (requires jQuery v1.7+), so the\n form does not have to exist when you invoke ajaxForm:\n\n $('#myForm').ajaxForm({\n delegation: true,\n target: '#output'\n });\n\n When using ajaxForm, the ajaxSubmit function will be invoked for you\n at the appropriate time.\n*/\n\n/**\n * Feature detection\n */\nvar feature = {};\nfeature.fileapi = $(\"\").get(0).files !== undefined;\nfeature.formdata = window.FormData !== undefined;\n\nvar hasProp = !!$.fn.prop;\n\n// attr2 uses prop when it can but checks the return type for\n// an expected string. this accounts for the case where a form \n// contains inputs with names like \"action\" or \"method\"; in those\n// cases \"prop\" returns the element\n$.fn.attr2 = function() {\n if ( ! hasProp )\n return this.attr.apply(this, arguments);\n var val = this.prop.apply(this, arguments);\n if ( ( val && val.jquery ) || typeof val === 'string' )\n return val;\n return this.attr.apply(this, arguments);\n};\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n /*jshint scripturl:true */\n\n // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n if (!this.length) {\n log('ajaxSubmit: skipping submit process - no element selected');\n return this;\n }\n\n var method, action, url, $form = this;\n\n if (typeof options == 'function') {\n options = { success: options };\n }\n else if ( options === undefined ) {\n options = {};\n }\n\n method = options.type || this.attr2('method');\n action = options.url || this.attr2('action');\n\n url = (typeof action === 'string') ? $.trim(action) : '';\n url = url || window.location.href || '';\n if (url) {\n // clean url (don't include hash vaue)\n url = (url.match(/^([^#]+)/)||[])[1];\n }\n\n options = $.extend(true, {\n url: url,\n success: $.ajaxSettings.success,\n type: method || $.ajaxSettings.type,\n iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n }, options);\n\n // hook for manipulating the form data before it is extracted;\n // convenient for use with rich editors like tinyMCE or FCKEditor\n var veto = {};\n this.trigger('form-pre-serialize', [this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n return this;\n }\n\n // provide opportunity to alter form data before it is serialized\n if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSerialize callback');\n return this;\n }\n\n var traditional = options.traditional;\n if ( traditional === undefined ) {\n traditional = $.ajaxSettings.traditional;\n }\n\n var elements = [];\n var qx, a = this.formToArray(options.semantic, elements);\n if (options.data) {\n options.extraData = options.data;\n qx = $.param(options.data, traditional);\n }\n\n // give pre-submit callback an opportunity to abort the submit\n if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSubmit callback');\n return this;\n }\n\n // fire vetoable 'validate' event\n this.trigger('form-submit-validate', [a, this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n return this;\n }\n\n var q = $.param(a, traditional);\n if (qx) {\n q = ( q ? (q + '&' + qx) : qx );\n }\n if (options.type.toUpperCase() == 'GET') {\n options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n options.data = null; // data is null for 'get'\n }\n else {\n options.data = q; // data is the query string for 'post'\n }\n\n var callbacks = [];\n if (options.resetForm) {\n callbacks.push(function() { $form.resetForm(); });\n }\n if (options.clearForm) {\n callbacks.push(function() { $form.clearForm(options.includeHidden); });\n }\n\n // perform a load on the target only if dataType is not provided\n if (!options.dataType && options.target) {\n var oldSuccess = options.success || function(){};\n callbacks.push(function(data) {\n var fn = options.replaceTarget ? 'replaceWith' : 'html';\n $(options.target)[fn](data).each(oldSuccess, arguments);\n });\n }\n else if (options.success) {\n callbacks.push(options.success);\n }\n\n options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n var context = options.context || this ; // jQuery 1.4+ supports scope context\n for (var i=0, max=callbacks.length; i < max; i++) {\n callbacks[i].apply(context, [data, status, xhr || $form, $form]);\n }\n };\n\n if (options.error) {\n var oldError = options.error;\n options.error = function(xhr, status, error) {\n var context = options.context || this;\n oldError.apply(context, [xhr, status, error, $form]);\n };\n }\n\n if (options.complete) {\n var oldComplete = options.complete;\n options.complete = function(xhr, status) {\n var context = options.context || this;\n oldComplete.apply(context, [xhr, status, $form]);\n };\n }\n\n // are there files to upload?\n\n // [value] (issue #113), also see comment:\n // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219\n var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });\n\n var hasFileInputs = fileInputs.length > 0;\n var mp = 'multipart/form-data';\n var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n var fileAPI = feature.fileapi && feature.formdata;\n log(\"fileAPI :\" + fileAPI);\n var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;\n\n var jqxhr;\n\n // options.iframe allows user to force iframe mode\n // 06-NOV-09: now defaulting to iframe mode if file input is detected\n if (options.iframe !== false && (options.iframe || shouldUseFrame)) {\n // hack to fix Safari hang (thanks to Tim Molendijk for this)\n // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n if (options.closeKeepAlive) {\n $.get(options.closeKeepAlive, function() {\n jqxhr = fileUploadIframe(a);\n });\n }\n else {\n jqxhr = fileUploadIframe(a);\n }\n }\n else if ((hasFileInputs || multipart) && fileAPI) {\n jqxhr = fileUploadXhr(a);\n }\n else {\n jqxhr = $.ajax(options);\n }\n\n $form.removeData('jqxhr').data('jqxhr', jqxhr);\n\n // clear element array\n for (var k=0; k < elements.length; k++)\n elements[k] = null;\n\n // fire 'notify' event\n this.trigger('form-submit-notify', [this, options]);\n return this;\n\n // utility fn for deep serialization\n function deepSerialize(extraData){\n var serialized = $.param(extraData, options.traditional).split('&');\n var len = serialized.length;\n var result = [];\n var i, part;\n for (i=0; i < len; i++) {\n // #252; undo param space replacement\n serialized[i] = serialized[i].replace(/\\+/g,' ');\n part = serialized[i].split('=');\n // #278; use array instead of object storage, favoring array serializations\n result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);\n }\n return result;\n }\n\n // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)\n function fileUploadXhr(a) {\n var formdata = new FormData();\n\n for (var i=0; i < a.length; i++) {\n formdata.append(a[i].name, a[i].value);\n }\n\n if (options.extraData) {\n var serializedData = deepSerialize(options.extraData);\n for (i=0; i < serializedData.length; i++)\n if (serializedData[i])\n formdata.append(serializedData[i][0], serializedData[i][1]);\n }\n\n options.data = null;\n\n var s = $.extend(true, {}, $.ajaxSettings, options, {\n contentType: false,\n processData: false,\n cache: false,\n type: method || 'POST'\n });\n\n if (options.uploadProgress) {\n // workaround because jqXHR does not expose upload property\n s.xhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n options.uploadProgress(event, position, total, percent);\n }, false);\n }\n return xhr;\n };\n }\n\n s.data = null;\n var beforeSend = s.beforeSend;\n s.beforeSend = function(xhr, o) {\n //Send FormData() provided by user\n if (options.formData)\n o.data = options.formData;\n else\n o.data = formdata;\n if(beforeSend)\n beforeSend.call(this, xhr, o);\n };\n return $.ajax(s);\n }\n\n // private function for handling file uploads (hat tip to YAHOO!)\n function fileUploadIframe(a) {\n var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n var deferred = $.Deferred();\n\n // #341\n deferred.abort = function(status) {\n xhr.abort(status);\n };\n\n if (a) {\n // ensure that every serialized input is still enabled\n for (i=0; i < elements.length; i++) {\n el = $(elements[i]);\n if ( hasProp )\n el.prop('disabled', false);\n else\n el.removeAttr('disabled');\n }\n }\n\n s = $.extend(true, {}, $.ajaxSettings, options);\n s.context = s.context || s;\n id = 'jqFormIO' + (new Date().getTime());\n if (s.iframeTarget) {\n $io = $(s.iframeTarget);\n n = $io.attr2('name');\n if (!n)\n $io.attr2('name', id);\n else\n id = n;\n }\n else {\n $io = $('',\n header_template = '' + '' + '',\n frame_height = 350,\n frame_width = 600,\n class_names = \"ui-modal chat-modal\";\n\n // deletes the chat modal if already present and create one\n if ($(\".chat-modal\").length > 0) {\n $(\".chat-modal\").remove();\n }\n // creates a modal\n GenericNavView.modal = new Modal.View({\n body: iframe_template,\n height: frame_height,\n width: frame_width,\n closing_events: true,\n title_separator: false,\n cls: class_names\n });\n\n // shows modal\n GenericNavView.modal.show();\n $el_chat_modal_header = $(\".chat-modal .modal-header\");\n $el_chat_modal_body = $(\".chat-modal .modal-body\");\n // adjusts the css of bootstrap modal for chat\n $el_chat_modal_header.addClass(\"modal-header-body\");\n $el_chat_modal_body.addClass(\"modal-header-body\");\n $el_chat_modal_header.find(\"h4\").remove();\n $el_chat_modal_header.removeAttr(\"min-height padding border\");\n $el_chat_modal_header.append(header_template);\n // click event of the close button for chat\n $(\".close-modal\").click(function (e) {\n $(\".chat-modal\").css(\"display\", \"none\");\n });\n // click event of expand and compress icon\n $(\".expand-compress-modal\").click(function (e) {\n if ($(\".expand-compress-modal\").hasClass(\"fa-expand\")) {\n $(\".chat-modal .modal-dialog\").width(\"1000px\");\n $(\".chat-modal .modal-body\").height(\"575px\");\n $(\".expand-compress-modal\").removeClass(\"fa-expand\").addClass(\"fa-compress\");\n $(\".expand-compress-modal\").attr(\"title\", \"Minimize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"96.2%\");\n } else {\n $(\".chat-modal .modal-dialog\").width(frame_width + \"px\");\n $(\".chat-modal .modal-body\").height(frame_height + \"px\");\n $(\".expand-compress-modal\").removeClass(\"fa-compress\").addClass(\"fa-expand\");\n $(\".expand-compress-modal\").attr(\"title\", \"Maximize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"93.2%\");\n }\n });\n return this;\n },\n\n /**renders the chat icon as a nav item*/\n render: function render() {\n var self = this,\n navItem = {};\n navItem = {\n id: \"show-chat-online\",\n icon: \"fa-comment-o\",\n tooltip: \"Chat online\",\n visible: false,\n onclick: self.makeModalIframe\n };\n return navItem;\n }\n });\n\n return {\n GenericNavView: GenericNavView\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(0)))\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Backbone, _, $) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/** Frame manager uses the ui-frames to create the scratch book masthead icon and functionality **/\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(61)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Frames) {\n return Backbone.View.extend({\n initialize: function initialize(options) {\n var self = this;\n options = options || {};\n this.frames = new Frames.View({ visible: false });\n this.setElement(this.frames.$el);\n this.buttonActive = options.collection.add({\n id: \"enable-scratchbook\",\n icon: \"fa-th\",\n tooltip: _l(\"Enable/Disable Scratchbook\"),\n onclick: function onclick() {\n self.active = !self.active;\n self.buttonActive.set({\n toggle: self.active,\n show_note: self.active,\n note_cls: self.active && \"fa fa-check\"\n });\n !self.active && self.frames.hide();\n },\n onbeforeunload: function onbeforeunload() {\n if (self.frames.length() > 0) {\n return \"You opened \" + self.frames.length() + \" frame(s) which will be lost.\";\n }\n }\n });\n this.buttonLoad = options.collection.add({\n id: \"show-scratchbook\",\n icon: \"fa-eye\",\n tooltip: _l(\"Show/Hide Scratchbook\"),\n show_note: true,\n visible: false,\n onclick: function onclick(e) {\n self.frames.visible ? self.frames.hide() : self.frames.show();\n }\n });\n this.frames.on(\"add remove\", function () {\n this.visible && this.length() == 0 && this.hide();\n self.buttonLoad.set({\n note: this.length(),\n visible: this.length() > 0\n });\n }).on(\"show hide \", function () {\n self.buttonLoad.set({\n toggle: this.visible,\n icon: this.visible && \"fa-eye\" || \"fa-eye-slash\"\n });\n });\n this.history_cache = {};\n },\n\n /** Add a dataset to the frames */\n addDataset: function addDataset(dataset_id) {\n var self = this;\n var current_dataset = null;\n if (Galaxy && Galaxy.currHistoryPanel) {\n var history_id = Galaxy.currHistoryPanel.collection.historyId;\n this.history_cache[history_id] = {\n name: Galaxy.currHistoryPanel.model.get(\"name\"),\n dataset_ids: []\n };\n Galaxy.currHistoryPanel.collection.each(function (model) {\n !model.get(\"deleted\") && model.get(\"visible\") && self.history_cache[history_id].dataset_ids.push(model.get(\"id\"));\n });\n }\n var _findDataset = function _findDataset(dataset, offset) {\n if (dataset) {\n var history_details = self.history_cache[dataset.get(\"history_id\")];\n if (history_details && history_details.dataset_ids) {\n var dataset_list = history_details.dataset_ids;\n var pos = dataset_list.indexOf(dataset.get(\"id\"));\n if (pos !== -1 && pos + offset >= 0 && pos + offset < dataset_list.length) {\n return dataset_list[pos + offset];\n }\n }\n }\n };\n var _loadDatasetOffset = function _loadDatasetOffset(dataset, offset, frame) {\n var new_dataset_id = _findDataset(dataset, offset);\n if (new_dataset_id) {\n self._loadDataset(new_dataset_id, function (new_dataset, config) {\n current_dataset = new_dataset;\n frame.model.set(config);\n });\n } else {\n frame.model.trigger(\"change\");\n }\n };\n this._loadDataset(dataset_id, function (dataset, config) {\n current_dataset = dataset;\n self.add(_.extend({\n menu: [{\n icon: \"fa fa-chevron-circle-left\",\n tooltip: \"Previous in History\",\n onclick: function onclick(frame) {\n _loadDatasetOffset(current_dataset, -1, frame);\n },\n disabled: function disabled() {\n return !_findDataset(current_dataset, -1);\n }\n }, {\n icon: \"fa fa-chevron-circle-right\",\n tooltip: \"Next in History\",\n onclick: function onclick(frame) {\n _loadDatasetOffset(current_dataset, 1, frame);\n },\n disabled: function disabled() {\n return !_findDataset(current_dataset, 1);\n }\n }]\n }, config));\n });\n },\n\n _loadDataset: function _loadDataset(dataset_id, callback) {\n var self = this;\n __webpack_require__.e/* require */(1).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(59)]; (function (DATA) {\n var dataset = new DATA.Dataset({ id: dataset_id });\n $.when(dataset.fetch()).then(function () {\n var is_tabular = _.find([\"tabular\", \"interval\"], function (data_type) {\n return dataset.get(\"data_type\").indexOf(data_type) !== -1;\n });\n var title = dataset.get(\"name\");\n var history_details = self.history_cache[dataset.get(\"history_id\")];\n if (history_details) {\n title = history_details.name + \": \" + title;\n }\n callback(dataset, is_tabular ? {\n title: title,\n url: null,\n content: DATA.createTabularDatasetChunkedView({\n model: new DATA.TabularDataset(dataset.toJSON()),\n embedded: true,\n height: \"100%\"\n }).$el\n } : {\n title: title,\n url: Galaxy.root + \"datasets/\" + dataset_id + \"/display/?preview=True\",\n content: null\n });\n });\n }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe);\n },\n\n /** Add a trackster visualization to the frames. */\n addTrackster: function addTrackster(viz_id) {\n var self = this;\n __webpack_require__.e/* require */(0).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(160), __webpack_require__(161)]; (function (visualization, trackster) {\n var viz = new visualization.Visualization({ id: viz_id });\n $.when(viz.fetch()).then(function () {\n var ui = new trackster.TracksterUI(Galaxy.root);\n\n // Construct frame config based on dataset's type.\n var frame_config = {\n title: viz.get(\"name\"),\n type: \"other\",\n content: function content(parent_elt) {\n // Create view config.\n var view_config = {\n container: parent_elt,\n name: viz.get(\"title\"),\n id: viz.id,\n // FIXME: this will not work with custom builds b/c the dbkey needed to be encoded.\n dbkey: viz.get(\"dbkey\"),\n stand_alone: false\n },\n latest_revision = viz.get(\"latest_revision\"),\n drawables = latest_revision.config.view.drawables;\n\n // Set up datasets in drawables.\n _.each(drawables, function (d) {\n d.dataset = {\n hda_ldda: d.hda_ldda,\n id: d.dataset_id\n };\n });\n view = ui.create_visualization(view_config, latest_revision.config.viewport, latest_revision.config.view.drawables, latest_revision.config.bookmarks, false);\n }\n };\n self.add(frame_config);\n });\n }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe);\n },\n\n /** Add and display a new frame/window based on options. */\n add: function add(options) {\n if (options.target == \"_blank\") {\n window.open(options.url);\n } else if (options.target == \"_top\" || options.target == \"_parent\" || options.target == \"_self\") {\n window.location = options.url;\n } else if (!this.active || options.noscratchbook) {\n var $galaxy_main = $(window.parent.document).find(\"#galaxy_main\");\n if (options.target == \"galaxy_main\" || options.target == \"center\") {\n if ($galaxy_main.length === 0) {\n window.location = options.url + (options.url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"use_panels=True\";\n } else {\n $galaxy_main.attr(\"src\", options.url);\n }\n } else window.location = options.url;\n } else {\n this.frames.add(options);\n }\n }\n });\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)))\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Backbone, _, $) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class View to display a user's disk/storage usage\n * either as a progress bar representing the percentage of a quota used\n * or a simple text element displaying the human readable size used.\n * @name UserQuotaMeter\n * @augments Backbone.View\n */\n var UserQuotaMeter = Backbone.View.extend(baseMVC.LoggableMixin).extend(\n /** @lends UserQuotaMeter.prototype */{\n _logNamespace: logNamespace,\n\n /** Defaults for optional settings passed to initialize */\n options: {\n warnAtPercent: 85,\n errorAtPercent: 100\n },\n\n /** Set up, accept options, and bind events */\n initialize: function initialize(options) {\n this.log(this + \".initialize:\", options);\n _.extend(this.options, options);\n\n //this.bind( 'all', function( event, data ){ this.log( this + ' event:', event, data ); }, this );\n this.listenTo(this.model, \"change:quota_percent change:total_disk_usage\", this.render);\n },\n\n /** Re-load user model data from the api */\n update: function update(options) {\n this.log(this + \" updating user data...\", options);\n this.model.loadFromApi(this.model.get(\"id\"), options);\n return this;\n },\n\n /** Is the user over their quota (if there is one)?\n * @returns {Boolean} true if over quota, false if no quota or under quota\n */\n isOverQuota: function isOverQuota() {\n return this.model.get(\"quota_percent\") !== null && this.model.get(\"quota_percent\") >= this.options.errorAtPercent;\n },\n\n /** Render the meter when they have an applicable quota. Will render as a progress bar\n * with their percentage of that quota in text over the bar.\n * @fires quota:over when user is over quota (>= this.errorAtPercent)\n * @fires quota:under when user is under quota\n * @fires quota:under:approaching when user is >= this.warnAtPercent of their quota\n * @fires quota:under:ok when user is below this.warnAtPercent\n * @returns {jQuery} the rendered meter\n */\n _render_quota: function _render_quota() {\n var modelJson = this.model.toJSON(),\n\n //prevPercent = this.model.previous( 'quota_percent' ),\n percent = modelJson.quota_percent,\n\n //meter = $( UserQuotaMeter.templates.quota( modelJson ) );\n $meter = $(this._templateQuotaMeter(modelJson)),\n $bar = $meter.find(\".progress-bar\");\n //this.log( this + '.rendering quota, percent:', percent, 'meter:', meter );\n\n // OVER QUOTA: color the quota bar and show the quota error message\n if (this.isOverQuota()) {\n //this.log( '\\t over quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-danger\");\n $meter.find(\".quota-meter-text\").css(\"color\", \"white\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:over\", modelJson);\n\n // APPROACHING QUOTA: color the quota bar\n } else if (percent >= this.options.warnAtPercent) {\n //this.log( '\\t approaching quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-warning\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:approaching\", modelJson);\n\n // otherwise, hide/don't use the msg box\n } else {\n $bar.attr(\"class\", \"progress-bar progress-bar-success\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:ok\", modelJson);\n }\n return $meter;\n },\n\n /** Render the meter when the user has NO applicable quota. Will render as text\n * showing the human readable sum storage their data is using.\n * @returns {jQuery} the rendered text\n */\n _render_usage: function _render_usage() {\n //var usage = $( UserQuotaMeter.templates.usage( this.model.toJSON() ) );\n var usage = $(this._templateUsage(this.model.toJSON()));\n this.log(this + \".rendering usage:\", usage);\n return usage;\n },\n\n /** Render either the quota percentage meter or the human readable disk usage\n * depending on whether the user model has quota info (quota_percent === null -> no quota)\n * @returns {Object} this UserQuotaMeter\n */\n render: function render() {\n //this.log( this + '.rendering' );\n var meterHtml = null;\n\n // no quota on server ('quota_percent' === null (can be valid at 0)), show usage instead\n this.log(this + \".model.quota_percent:\", this.model.get(\"quota_percent\"));\n if (this.model.get(\"quota_percent\") === null || this.model.get(\"quota_percent\") === undefined) {\n meterHtml = this._render_usage();\n\n // otherwise, render percent of quota (and warning, error)\n } else {\n meterHtml = this._render_quota();\n //TODO: add the original text for unregistered quotas\n //tooltip = \"Your disk quota is %s. You can increase your quota by registering a Galaxy account.\"\n }\n\n this.$el.html(meterHtml);\n this.$el.find(\".quota-meter-text\").tooltip();\n return this;\n },\n\n _templateQuotaMeter: function _templateQuotaMeter(data) {\n return ['
', '
', '
' : \">\", _l(\"Using\"), \" \", data.quota_percent, \"%\", \"
\", \"
\"].join(\"\");\n },\n\n _templateUsage: function _templateUsage(data) {\n return ['
', '
', data.nice_total_disk_usage ? _l(\"Using \") + data.nice_total_disk_usage : \"\", \"
\", \"
\"].join(\"\");\n },\n\n toString: function toString() {\n return \"UserQuotaMeter(\" + this.model + \")\";\n }\n });\n\n //==============================================================================\n return {\n UserQuotaMeter: UserQuotaMeter\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)))\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// libs.bundled.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t5: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".bundled.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 103);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c11f065a9c516914b477","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"
\"\n )\n });\n modal.show({ backdrop: true });\n }\n\n // ============================================================================\n return {\n Modal: Modal,\n hide_modal: hide_modal,\n show_modal: show_modal,\n show_message: show_message,\n show_in_overlay: show_in_overlay\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/modal.js","/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\ndefine([\"libs/bootstrap-tour\"], function(BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = `

Galaxy Tours

\n

This page presents a list of interactive tours available on this Galaxy server.\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).

\n\n
\n <% _.each(tourtagorder, function(tag) { %>\n \n <% }); %>\n
\n\n<% _.each(tourtagorder, function(tourtagkey) { %>\n
\" style=\"display: block;\">\n <% var tourtag = tourtags[tourtagkey]; %>\n

\n <%- tourtag.name %>\n

\n \n
\n<% }); %>`;\n\n var tour_opts = {\n storage: window.sessionStorage,\n onEnd: function() {\n sessionStorage.removeItem(\"activeGalaxyTour\");\n },\n delay: 150, // Attempts to make it look natural\n orphan: true\n };\n\n var hooked_tour_from_data = function(data) {\n _.each(data.steps, function(step) {\n if (step.preclick) {\n step.onShow = function() {\n _.each(step.preclick, function(preclick) {\n // TODO: click delay between clicks\n $(preclick).click();\n });\n };\n }\n if (step.postclick) {\n step.onHide = function() {\n _.each(step.postclick, function(postclick) {\n // TODO: click delay between clicks\n $(postclick).click();\n });\n };\n }\n if (step.textinsert) {\n // Have to manually trigger a change here, for some\n // elements which have additional logic, like the\n // upload input box\n step.onShown = function() {\n $(step.element)\n .val(step.textinsert)\n .trigger(\"change\");\n };\n }\n });\n return data;\n };\n\n var TourItem = Backbone.Model.extend({\n urlRoot: gxy_root + \"api/tours\"\n });\n\n var Tours = Backbone.Collection.extend({\n url: gxy_root + \"api/tours\",\n model: TourItem\n });\n\n var giveTour = function(tour_id) {\n var url = gxy_root + \"api/tours/\" + tour_id;\n $.getJSON(url, function(data) {\n // Set hooks for additional click and data entry actions.\n var tourdata = hooked_tour_from_data(data);\n sessionStorage.setItem(\"activeGalaxyTour\", JSON.stringify(data));\n // Store tour steps in sessionStorage to easily persist w/o hackery.\n var tour = new Tour(\n _.extend(\n {\n steps: tourdata.steps\n },\n tour_opts\n )\n );\n // Always clean restart, since this is a new, explicit giveTour execution.\n tour.init();\n tour.goTo(0);\n tour.restart();\n });\n };\n var ToursView = Backbone.View.extend({\n title: \"Tours\",\n // initialize\n initialize: function() {\n var self = this;\n this.setElement(\"
\");\n this.model = new Tours();\n this.model.fetch({\n success: function() {\n self.render();\n },\n error: function() {\n // Do something.\n console.error(\"Failed to fetch tours.\");\n }\n });\n },\n\n render: function() {\n var tpl = _.template(tourpage_template);\n\n var tourtags = {};\n _.each(this.model.models, function(tour) {\n if (tour.attributes.tags === null) {\n if (tourtags.Untagged === undefined) {\n tourtags.Untagged = { name: \"Untagged\", tours: [] };\n }\n tourtags.Untagged.tours.push(tour);\n } else {\n _.each(tour.attributes.tags, function(tag) {\n tag = tag.charAt(0).toUpperCase() + tag.slice(1);\n if (tourtags[tag] === undefined) {\n tourtags[tag] = { name: tag, tours: [] };\n }\n tourtags[tag].tours.push(tour);\n });\n }\n });\n var tourtagorder = Object.keys(tourtags).sort();\n\n this.$el\n .html(\n tpl({\n tours: this.model.models,\n tourtags: tourtags,\n tourtagorder: tourtagorder\n })\n )\n .on(\"click\", \".tourItem\", function(e) {\n e.preventDefault();\n giveTour($(this).data(\"tour.id\"));\n })\n .on(\"click\", \".tag-selector-button\", function(e) {\n var elem = $(e.target);\n var display = \"block\";\n var tag = elem.attr(\"tag-selector-button\");\n\n elem.toggleClass(\"btn-primary\");\n elem.toggleClass(\"btn-secondary\");\n\n if (elem.hasClass(\"btn-secondary\")) {\n display = \"none\";\n }\n $(\"div[tag='\" + tag + \"']\").css({ display: display });\n });\n }\n });\n\n return {\n ToursView: ToursView,\n hooked_tour_from_data: hooked_tour_from_data,\n tour_opts: tour_opts,\n giveTour: giveTour\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/tours.js","define([], function() {\n //==============================================================================\n var LOGGING_FNS = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"metric\"];\n /** adds logging functions to an obj.prototype (or obj directly) adding a namespace for filtering\n * @param {Object} obj\n * @param {String} namespace\n */\n function addLogging(obj, namespace) {\n var addTo = obj.prototype !== undefined ? obj.prototype : obj;\n if (namespace !== undefined) {\n addTo._logNamespace = namespace;\n }\n //yagni?: without this, may not capture Galaxy.config.debug and add Galaxy.logger properly\n // if( window.Galaxy && window.Galaxy.config && window.Galaxy.config.debug ){\n // addTo.logger = window.Galaxy.logger;\n // }\n\n // give the object each\n LOGGING_FNS.forEach(function(logFn) {\n addTo[logFn] = function() {\n if (!this.logger) {\n return undefined;\n }\n if (this.logger.emit) {\n return this.logger.emit(\n logFn,\n this._logNamespace,\n arguments\n );\n }\n if (this.logger[logFn]) {\n //TODO:! there has to be a way to get the lineno/file into this\n // http://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n // http://www.paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/\n return this.logger[logFn].apply(this.logger, arguments);\n }\n return undefined;\n };\n });\n return obj;\n }\n\n //==============================================================================\n return addLogging;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/utils/add-logging.js","define(\n [\"libs/underscore\", \"libs/backbone\", \"mvc/base-mvc\", \"utils/localization\"],\n function(_, Backbone, baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class Model for a Galaxy user (including anonymous users).\n * @name User\n */\n var User = Backbone.Model.extend(baseMVC.LoggableMixin).extend(\n /** @lends User.prototype */ {\n _logNamespace: logNamespace,\n\n /** API location for this resource */\n urlRoot: function() {\n return Galaxy.root + \"api/users\";\n },\n\n /** Model defaults\n * Note: don't check for anon-users with the username as the default is '(anonymous user)'\n * a safer method is if( !user.get( 'email' ) ) -> anon user\n */\n defaults: /** @lends User.prototype */ {\n id: null,\n username: \"(\" + _l(\"anonymous user\") + \")\",\n email: \"\",\n total_disk_usage: 0,\n nice_total_disk_usage: \"\",\n quota_percent: null,\n is_admin: false\n },\n\n /** Set up and bind events\n * @param {Object} data Initial model data.\n */\n initialize: function(data) {\n this.log(\"User.initialize:\", data);\n\n this.on(\"loaded\", function(model, resp) {\n this.log(this + \" has loaded:\", model, resp);\n });\n this.on(\"change\", function(model, data) {\n this.log(this + \" has changed:\", model, data.changes);\n });\n },\n\n isAnonymous: function() {\n return !this.get(\"email\");\n },\n\n isAdmin: function() {\n return this.get(\"is_admin\");\n },\n\n /** Load a user with the API using an id.\n * If getting an anonymous user or no access to a user id, pass the User.CURRENT_ID_STR\n * (e.g. 'current') and the API will return the current transaction's user data.\n * @param {String} idOrCurrent encoded user id or the User.CURRENT_ID_STR\n * @param {Object} options hash to pass to Backbone.Model.fetch. Can contain success, error fns.\n * @fires loaded when the model has been loaded from the API, passing the newModel and AJAX response.\n */\n loadFromApi: function(idOrCurrent, options) {\n idOrCurrent = idOrCurrent || User.CURRENT_ID_STR;\n\n options = options || {};\n var model = this,\n userFn = options.success;\n\n /** @ignore */\n options.success = function(newModel, response) {\n model.trigger(\"loaded\", newModel, response);\n if (userFn) {\n userFn(newModel, response);\n }\n };\n\n // requests for the current user must have a sep. constructed url (fetch don't work, ma)\n if (idOrCurrent === User.CURRENT_ID_STR) {\n options.url = this.urlRoot + \"/\" + User.CURRENT_ID_STR;\n }\n return Backbone.Model.prototype.fetch.call(this, options);\n },\n\n /** Clears all data from the sessionStorage.\n */\n clearSessionStorage: function() {\n for (var key in sessionStorage) {\n //TODO: store these under the user key so we don't have to do this\n // currently only history\n if (key.indexOf(\"history:\") === 0) {\n sessionStorage.removeItem(key);\n } else if (key === \"history-panel\") {\n sessionStorage.removeItem(key);\n }\n }\n },\n\n /** string representation */\n toString: function() {\n var userInfo = [this.get(\"username\")];\n if (this.get(\"id\")) {\n userInfo.unshift(this.get(\"id\"));\n userInfo.push(this.get(\"email\"));\n }\n return \"User(\" + userInfo.join(\":\") + \")\";\n }\n }\n );\n\n // string to send to tell server to return this transaction's user (see api/users.py)\n User.CURRENT_ID_STR = \"current\";\n\n // class method to load the current user via the api and return that model\n User.getCurrentUserFromApi = function(options) {\n var currentUser = new User();\n currentUser.loadFromApi(User.CURRENT_ID_STR, options);\n return currentUser;\n };\n\n // (stub) collection for users (shouldn't be common unless admin UI)\n var UserCollection = Backbone.Collection\n .extend(baseMVC.LoggableMixin)\n .extend({\n model: User,\n urlRoot: function() {\n return Galaxy.root + \"api/users\";\n }\n //logger : console,\n });\n\n //==============================================================================\n return {\n User: User\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/user/user-model.js",";(function($){ // secure $ jQuery alias\r\n/*******************************************************************************************/\t\r\n// jquery.event.hover.js \r\n// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)\r\n// Licensed under the MIT License (MIT-LICENSE.txt)\r\n// http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// JQuery 1.9+ compatible version\r\n//\r\n// Optional settings :\r\n// $.event.special.hover.delay = 100;\r\n// Defines the delay (msec) while mouse is inside the element before checking the speed\r\n// $.event.special.hover.speed = 100;\r\n// Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event\r\n/*******************************************************************************************/\r\n\r\n// save the old jquery \"hover\" method\r\n$.fn._hover = $.fn.hover;\r\n\r\n// jquery method \r\n$.fn.hover = function( fn1, fn2, fn3 ) {\r\n\tif ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args\r\n\tif ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args\r\n\treturn !fn1 ? this.trigger('hover') // 0 args \r\n\t\t: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args\r\n\t};\t\r\n\r\n// special event configuration\r\nvar hover = $.event.special.hover = {\r\n\tdelay: 100, // milliseconds\r\n\tspeed: 100, // pixels per second\r\n\tsetup: function( data ){\r\n\t\tdata = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );\r\n\t\t$.event.add( this, \"mouseenter mouseleave\", hoverHandler, data );\r\n\t\t},\r\n\tteardown: function(){\r\n\t\t$.event.remove( this, \"mouseenter mouseleave\", hoverHandler );\r\n\t\t}\r\n\t};\r\n\r\n// shared event handler\r\nfunction hoverHandler( event ){\r\n\tvar data = event.data || event;\r\n\tswitch ( event.type ){\r\n\t\tcase 'mouseenter': // mouseover\r\n\t\t\tdata.dist2 = 0; // init mouse distance�\r\n\t\t\tdata.event = event; // store the event\r\n\t\t\tevent.type = \"hoverstart\"; // hijack event\r\n if($.event.dispatch.call(this, event) !== false) {\r\n \tdata.elem = this; // ref to the current element\r\n\t\t\t\t$.event.add( this, \"mousemove\", hoverHandler, data ); // track the mouse\r\n\t\t\t\tdata.timer = setTimeout( compare, data.delay ); // start async compare\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'mousemove': // track the event, mouse distance� = x� + y�\r\n\t\t\tdata.dist2 += Math.pow( event.pageX-data.event.pageX, 2 ) \r\n\t\t\t\t+ Math.pow( event.pageY-data.event.pageY, 2 ); \r\n\t\t\tdata.event = event; // store current event\r\n\t\t\tbreak;\r\n\t\tcase 'mouseleave': // mouseout\r\n\t\t\tclearTimeout( data.timer ); // uncompare\r\n\t\t\tif ( data.hovered ){ \r\n\t\t\t\tevent.type = \"hoverend\"; // hijack event\r\n $.event.dispatch.call(this, event); // handle \"hoverend\"\r\n\t\t\t\tdata.hovered--; // reset flag\r\n\t\t\t\t}\r\n\t\t\telse $.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\tbreak;\r\n\t\tdefault: // timeout compare // distance� = x� + y� = ( speed * time )�\r\n\t\t\tif ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable\r\n\t\t\t\t$.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\t\tdata.event.type = \"hover\"; // hijack event\r\n if($.event.dispatch.call(data.elem, data.event) !== false) // handle \"hover\"\r\n\t\t\t\t\tdata.hovered++; // flag for \"hoverend\"\r\n\t\t\t\t}\r\n\t\t\telse data.timer = setTimeout( compare, data.delay ); // async recurse\r\n\t\t\tdata.dist2 = 0; // reset distance� for next compare\r\n\t\t\tbreak;\r\n\t\t}\r\n\tfunction compare(){ hoverHandler( data ); }; // timeout/recursive function\r\n\t};\r\n\t\r\n/*******************************************************************************************/\r\n})(jQuery); // confine scope\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.event.hover.js\n// module id = 95\n// module chunks = 5","/*! \n * jquery.event.drag - v 2.2\n * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n * Open Source MIT License - http://threedubmedia.com/code/license\n */\n// Created: 2008-06-04 \n// Updated: 2012-05-21\n// REQUIRES: jquery 1.7.x\n\n;(function( $ ){\n\n// add the jquery instance method\n$.fn.drag = function( str, arg, opts ){\n\t// figure out the event type\n\tvar type = typeof str == \"string\" ? str : \"\",\n\t// figure out the event handler...\n\tfn = $.isFunction( str ) ? str : $.isFunction( arg ) ? arg : null;\n\t// fix the event type\n\tif ( type.indexOf(\"drag\") !== 0 ) \n\t\ttype = \"drag\"+ type;\n\t// were options passed\n\topts = ( str == fn ? arg : opts ) || {};\n\t// trigger or bind event handler\n\treturn fn ? this.bind( type, opts, fn ) : this.trigger( type );\n};\n\n// local refs (increase compression)\nvar $event = $.event, \n$special = $event.special,\n// configure the drag special event \ndrag = $special.drag = {\n\t\n\t// these are the default settings\n\tdefaults: {\n\t\twhich: 1, // mouse button pressed to start drag sequence\n\t\tdistance: 0, // distance dragged before dragstart\n\t\tnot: ':input', // selector to suppress dragging on target elements\n\t\thandle: null, // selector to match handle target elements\n\t\trelative: false, // true to use \"position\", false to use \"offset\"\n\t\tdrop: true, // false to suppress drop events, true or selector to allow\n\t\tclick: false // false to suppress click events after dragend (no proxy)\n\t},\n\t\n\t// the key name for stored drag data\n\tdatakey: \"dragdata\",\n\t\n\t// prevent bubbling for better performance\n\tnoBubble: true,\n\t\n\t// count bound related events\n\tadd: function( obj ){ \n\t\t// read the interaction data\n\t\tvar data = $.data( this, drag.datakey ),\n\t\t// read any passed options \n\t\topts = obj.data || {};\n\t\t// count another realted event\n\t\tdata.related += 1;\n\t\t// extend data options bound with this event\n\t\t// don't iterate \"opts\" in case it is a node \n\t\t$.each( drag.defaults, function( key, def ){\n\t\t\tif ( opts[ key ] !== undefined )\n\t\t\t\tdata[ key ] = opts[ key ];\n\t\t});\n\t},\n\t\n\t// forget unbound related events\n\tremove: function(){\n\t\t$.data( this, drag.datakey ).related -= 1;\n\t},\n\t\n\t// configure interaction, capture settings\n\tsetup: function(){\n\t\t// check for related events\n\t\tif ( $.data( this, drag.datakey ) ) \n\t\t\treturn;\n\t\t// initialize the drag data with copied defaults\n\t\tvar data = $.extend({ related:0 }, drag.defaults );\n\t\t// store the interaction data\n\t\t$.data( this, drag.datakey, data );\n\t\t// bind the mousedown event, which starts drag interactions\n\t\t$event.add( this, \"touchstart mousedown\", drag.init, data );\n\t\t// prevent image dragging in IE...\n\t\tif ( this.attachEvent ) \n\t\t\tthis.attachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\n\t// destroy configured interaction\n\tteardown: function(){\n\t\tvar data = $.data( this, drag.datakey ) || {};\n\t\t// check for related events\n\t\tif ( data.related ) \n\t\t\treturn;\n\t\t// remove the stored data\n\t\t$.removeData( this, drag.datakey );\n\t\t// remove the mousedown event\n\t\t$event.remove( this, \"touchstart mousedown\", drag.init );\n\t\t// enable text selection\n\t\tdrag.textselect( true ); \n\t\t// un-prevent image dragging in IE...\n\t\tif ( this.detachEvent ) \n\t\t\tthis.detachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\t\n\t// initialize the interaction\n\tinit: function( event ){ \n\t\t// sorry, only one touch at a time\n\t\tif ( drag.touched ) \n\t\t\treturn;\n\t\t// the drag/drop interaction data\n\t\tvar dd = event.data, results;\n\t\t// check the which directive\n\t\tif ( event.which != 0 && dd.which > 0 && event.which != dd.which ) \n\t\t\treturn; \n\t\t// check for suppressed selector\n\t\tif ( $( event.target ).is( dd.not ) ) \n\t\t\treturn;\n\t\t// check for handle selector\n\t\tif ( dd.handle && !$( event.target ).closest( dd.handle, event.currentTarget ).length ) \n\t\t\treturn;\n\n\t\tdrag.touched = event.type == 'touchstart' ? this : null;\n\t\tdd.propagates = 1;\n\t\tdd.mousedown = this;\n\t\tdd.interactions = [ drag.interaction( this, dd ) ];\n\t\tdd.target = event.target;\n\t\tdd.pageX = event.pageX;\n\t\tdd.pageY = event.pageY;\n\t\tdd.dragging = null;\n\t\t// handle draginit event... \n\t\tresults = drag.hijack( event, \"draginit\", dd );\n\t\t// early cancel\n\t\tif ( !dd.propagates )\n\t\t\treturn;\n\t\t// flatten the result set\n\t\tresults = drag.flatten( results );\n\t\t// insert new interaction elements\n\t\tif ( results && results.length ){\n\t\t\tdd.interactions = [];\n\t\t\t$.each( results, function(){\n\t\t\t\tdd.interactions.push( drag.interaction( this, dd ) );\n\t\t\t});\n\t\t}\n\t\t// remember how many interactions are propagating\n\t\tdd.propagates = dd.interactions.length;\n\t\t// locate and init the drop targets\n\t\tif ( dd.drop !== false && $special.drop ) \n\t\t\t$special.drop.handler( event, dd );\n\t\t// disable text selection\n\t\tdrag.textselect( false ); \n\t\t// bind additional events...\n\t\tif ( drag.touched )\n\t\t\t$event.add( drag.touched, \"touchmove touchend\", drag.handler, dd );\n\t\telse \n\t\t\t$event.add( document, \"mousemove mouseup\", drag.handler, dd );\n\t\t// helps prevent text selection or scrolling\n\t\tif ( !drag.touched || dd.live )\n\t\t\treturn false;\n\t},\t\n\t\n\t// returns an interaction object\n\tinteraction: function( elem, dd ){\n\t\tvar offset = $( elem )[ dd.relative ? \"position\" : \"offset\" ]() || { top:0, left:0 };\n\t\treturn {\n\t\t\tdrag: elem, \n\t\t\tcallback: new drag.callback(), \n\t\t\tdroppable: [],\n\t\t\toffset: offset\n\t\t};\n\t},\n\t\n\t// handle drag-releatd DOM events\n\thandler: function( event ){ \n\t\t// read the data before hijacking anything\n\t\tvar dd = event.data;\t\n\t\t// handle various events\n\t\tswitch ( event.type ){\n\t\t\t// mousemove, check distance, start dragging\n\t\t\tcase !dd.dragging && 'touchmove': \n\t\t\t\tevent.preventDefault();\n\t\t\tcase !dd.dragging && 'mousemove':\n\t\t\t\t// drag tolerance, x� + y� = distance�\n\t\t\t\tif ( Math.pow( event.pageX-dd.pageX, 2 ) + Math.pow( event.pageY-dd.pageY, 2 ) < Math.pow( dd.distance, 2 ) ) \n\t\t\t\t\tbreak; // distance tolerance not reached\n\t\t\t\tevent.target = dd.target; // force target from \"mousedown\" event (fix distance issue)\n\t\t\t\tdrag.hijack( event, \"dragstart\", dd ); // trigger \"dragstart\"\n\t\t\t\tif ( dd.propagates ) // \"dragstart\" not rejected\n\t\t\t\t\tdd.dragging = true; // activate interaction\n\t\t\t// mousemove, dragging\n\t\t\tcase 'touchmove':\n\t\t\t\tevent.preventDefault();\n\t\t\tcase 'mousemove':\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\t// trigger \"drag\"\t\t\n\t\t\t\t\tdrag.hijack( event, \"drag\", dd );\n\t\t\t\t\tif ( dd.propagates ){\n\t\t\t\t\t\t// manage drop events\n\t\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"dropstart\", \"dropend\"\t\t\t\t\t\t\t\n\t\t\t\t\t\tbreak; // \"drag\" not rejected, stop\t\t\n\t\t\t\t\t}\n\t\t\t\t\tevent.type = \"mouseup\"; // helps \"drop\" handler behave\n\t\t\t\t}\n\t\t\t// mouseup, stop dragging\n\t\t\tcase 'touchend': \n\t\t\tcase 'mouseup': \n\t\t\tdefault:\n\t\t\t\tif ( drag.touched )\n\t\t\t\t\t$event.remove( drag.touched, \"touchmove touchend\", drag.handler ); // remove touch events\n\t\t\t\telse \n\t\t\t\t\t$event.remove( document, \"mousemove mouseup\", drag.handler ); // remove page events\t\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"drop\"\n\t\t\t\t\tdrag.hijack( event, \"dragend\", dd ); // trigger \"dragend\"\t\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrag.hijack( event, \"dragclickonly\", dd ); // trigger \"dragclickonly\"\t\n\t\t\t\t}\n\t\t\t\tdrag.textselect( true ); // enable text selection\n\t\t\t\t// if suppressing click events...\n\t\t\t\tif ( dd.click === false && dd.dragging )\n\t\t\t\t\t$.data( dd.mousedown, \"suppress.click\", new Date().getTime() + 5 );\n\t\t\t\tdd.dragging = drag.touched = false; // deactivate element\t\n\t\t\t\tbreak;\n\t\t}\n\t},\n\t\t\n\t// re-use event object for custom events\n\thijack: function( event, type, dd, x, elem ){\n\t\t// not configured\n\t\tif ( !dd ) \n\t\t\treturn;\n\t\t// remember the original event and type\n\t\tvar orig = { event:event.originalEvent, type:event.type },\n\t\t// is the event drag related or drog related?\n\t\tmode = type.indexOf(\"drop\") ? \"drag\" : \"drop\",\n\t\t// iteration vars\n\t\tresult, i = x || 0, ia, $elems, callback,\n\t\tlen = !isNaN( x ) ? x : dd.interactions.length;\n\t\t// modify the event type\n\t\tevent.type = type;\n\t\t// remove the original event\n\t\tevent.originalEvent = null;\n\t\t// initialize the results\n\t\tdd.results = [];\n\t\t// handle each interacted element\n\t\tdo if ( ia = dd.interactions[ i ] ){\n\t\t\t// validate the interaction\n\t\t\tif ( type !== \"dragend\" && ia.cancelled )\n\t\t\t\tcontinue;\n\t\t\t// set the dragdrop properties on the event object\n\t\t\tcallback = drag.properties( event, dd, ia );\n\t\t\t// prepare for more results\n\t\t\tia.results = [];\n\t\t\t// handle each element\n\t\t\t$( elem || ia[ mode ] || dd.droppable ).each(function( p, subject ){\n\t\t\t\t// identify drag or drop targets individually\n\t\t\t\tcallback.target = subject;\n\t\t\t\t// force propagtion of the custom event\n\t\t\t\tevent.isPropagationStopped = function(){ return false; };\n\t\t\t\t// handle the event\t\n\t\t\t\tresult = subject ? $event.dispatch.call( subject, event, callback ) : null;\n\t\t\t\t// stop the drag interaction for this element\n\t\t\t\tif ( result === false ){\n\t\t\t\t\tif ( mode == \"drag\" ){\n\t\t\t\t\t\tia.cancelled = true;\n\t\t\t\t\t\tdd.propagates -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == \"drop\" ){\n\t\t\t\t\t\tia[ mode ][p] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// assign any dropinit elements\n\t\t\t\telse if ( type == \"dropinit\" )\n\t\t\t\t\tia.droppable.push( drag.element( result ) || subject );\n\t\t\t\t// accept a returned proxy element \n\t\t\t\tif ( type == \"dragstart\" )\n\t\t\t\t\tia.proxy = $( drag.element( result ) || ia.drag )[0];\n\t\t\t\t// remember this result\t\n\t\t\t\tia.results.push( result );\n\t\t\t\t// forget the event result, for recycling\n\t\t\t\tdelete event.result;\n\t\t\t\t// break on cancelled handler\n\t\t\t\tif ( type !== \"dropinit\" )\n\t\t\t\t\treturn result;\n\t\t\t});\t\n\t\t\t// flatten the results\t\n\t\t\tdd.results[ i ] = drag.flatten( ia.results );\t\n\t\t\t// accept a set of valid drop targets\n\t\t\tif ( type == \"dropinit\" )\n\t\t\t\tia.droppable = drag.flatten( ia.droppable );\n\t\t\t// locate drop targets\n\t\t\tif ( type == \"dragstart\" && !ia.cancelled )\n\t\t\t\tcallback.update(); \n\t\t}\n\t\twhile ( ++i < len )\n\t\t// restore the original event & type\n\t\tevent.type = orig.type;\n\t\tevent.originalEvent = orig.event;\n\t\t// return all handler results\n\t\treturn drag.flatten( dd.results );\n\t},\n\t\t\n\t// extend the callback object with drag/drop properties...\n\tproperties: function( event, dd, ia ){\t\t\n\t\tvar obj = ia.callback;\n\t\t// elements\n\t\tobj.drag = ia.drag;\n\t\tobj.proxy = ia.proxy || ia.drag;\n\t\t// starting mouse position\n\t\tobj.startX = dd.pageX;\n\t\tobj.startY = dd.pageY;\n\t\t// current distance dragged\n\t\tobj.deltaX = event.pageX - dd.pageX;\n\t\tobj.deltaY = event.pageY - dd.pageY;\n\t\t// original element position\n\t\tobj.originalX = ia.offset.left;\n\t\tobj.originalY = ia.offset.top;\n\t\t// adjusted element position\n\t\tobj.offsetX = obj.originalX + obj.deltaX; \n\t\tobj.offsetY = obj.originalY + obj.deltaY;\n\t\t// assign the drop targets information\n\t\tobj.drop = drag.flatten( ( ia.drop || [] ).slice() );\n\t\tobj.available = drag.flatten( ( ia.droppable || [] ).slice() );\n\t\treturn obj;\t\n\t},\n\t\n\t// determine is the argument is an element or jquery instance\n\telement: function( arg ){\n\t\tif ( arg && ( arg.jquery || arg.nodeType == 1 ) )\n\t\t\treturn arg;\n\t},\n\t\n\t// flatten nested jquery objects and arrays into a single dimension array\n\tflatten: function( arr ){\n\t\treturn $.map( arr, function( member ){\n\t\t\treturn member && member.jquery ? $.makeArray( member ) : \n\t\t\t\tmember && member.length ? drag.flatten( member ) : member;\n\t\t});\n\t},\n\t\n\t// toggles text selection attributes ON (true) or OFF (false)\n\ttextselect: function( bool ){ \n\t\t$( document )[ bool ? \"unbind\" : \"bind\" ](\"selectstart\", drag.dontstart )\n\t\t\t.css(\"MozUserSelect\", bool ? \"\" : \"none\" );\n\t\t// .attr(\"unselectable\", bool ? \"off\" : \"on\" )\n\t\tdocument.unselectable = bool ? \"off\" : \"on\"; \n\t},\n\t\n\t// suppress \"selectstart\" and \"ondragstart\" events\n\tdontstart: function(){ \n\t\treturn false; \n\t},\n\t\n\t// a callback instance contructor\n\tcallback: function(){}\n\t\n};\n\n// callback methods\ndrag.callback.prototype = {\n\tupdate: function(){\n\t\tif ( $special.drop && this.available.length )\n\t\t\t$.each( this.available, function( i ){\n\t\t\t\t$special.drop.locate( this, i );\n\t\t\t});\n\t}\n};\n\n// patch $.event.$dispatch to allow suppressing clicks\nvar $dispatch = $event.dispatch;\n$event.dispatch = function( event ){\n\tif ( $.data( this, \"suppress.\"+ event.type ) - new Date().getTime() > 0 ){\n\t\t$.removeData( this, \"suppress.\"+ event.type );\n\t\treturn;\n\t}\n\treturn $dispatch.apply( this, arguments );\n};\n\n// event fix hooks for touch events...\nvar touchHooks = \n$event.fixHooks.touchstart = \n$event.fixHooks.touchmove = \n$event.fixHooks.touchend =\n$event.fixHooks.touchcancel = {\n\tprops: \"clientX clientY pageX pageY screenX screenY\".split( \" \" ),\n\tfilter: function( event, orig ) {\n\t\tif ( orig ){\n\t\t\tvar touched = ( orig.touches && orig.touches[0] )\n\t\t\t\t|| ( orig.changedTouches && orig.changedTouches[0] )\n\t\t\t\t|| null; \n\t\t\t// iOS webkit: touchstart, touchmove, touchend\n\t\t\tif ( touched ) \n\t\t\t\t$.each( touchHooks.props, function( i, prop ){\n\t\t\t\t\tevent[ prop ] = touched[ prop ];\n\t\t\t\t});\n\t\t}\n\t\treturn event;\n\t}\n};\n\n// share the same special event configuration with related events...\n$special.draginit = $special.dragstart = $special.dragend = drag;\n\n})( jQuery );\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.event.drag.js\n// module id = 96\n// module chunks = 5","/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if ( typeof define === 'function' && define.amd ) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n\n getLineHeight: function(elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.mousewheel.js\n// module id = 97\n// module chunks = 5","/*!\n * jQuery Form Plugin\n * version: 3.45.0-2013.10.17\n * Requires jQuery v1.5 or later\n * Copyright (c) 2013 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n/*global ActiveXObject */\n;(function($) {\n\"use strict\";\n\n/*\n Usage Note:\n -----------\n Do not use both ajaxSubmit and ajaxForm on the same form. These\n functions are mutually exclusive. Use ajaxSubmit if you want\n to bind your own submit handler to the form. For example,\n\n $(document).ready(function() {\n $('#myForm').on('submit', function(e) {\n e.preventDefault(); // <-- important\n $(this).ajaxSubmit({\n target: '#output'\n });\n });\n });\n\n Use ajaxForm when you want the plugin to manage all the event binding\n for you. For example,\n\n $(document).ready(function() {\n $('#myForm').ajaxForm({\n target: '#output'\n });\n });\n\n You can also use ajaxForm with delegation (requires jQuery v1.7+), so the\n form does not have to exist when you invoke ajaxForm:\n\n $('#myForm').ajaxForm({\n delegation: true,\n target: '#output'\n });\n\n When using ajaxForm, the ajaxSubmit function will be invoked for you\n at the appropriate time.\n*/\n\n/**\n * Feature detection\n */\nvar feature = {};\nfeature.fileapi = $(\"\").get(0).files !== undefined;\nfeature.formdata = window.FormData !== undefined;\n\nvar hasProp = !!$.fn.prop;\n\n// attr2 uses prop when it can but checks the return type for\n// an expected string. this accounts for the case where a form \n// contains inputs with names like \"action\" or \"method\"; in those\n// cases \"prop\" returns the element\n$.fn.attr2 = function() {\n if ( ! hasProp )\n return this.attr.apply(this, arguments);\n var val = this.prop.apply(this, arguments);\n if ( ( val && val.jquery ) || typeof val === 'string' )\n return val;\n return this.attr.apply(this, arguments);\n};\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n /*jshint scripturl:true */\n\n // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n if (!this.length) {\n log('ajaxSubmit: skipping submit process - no element selected');\n return this;\n }\n\n var method, action, url, $form = this;\n\n if (typeof options == 'function') {\n options = { success: options };\n }\n else if ( options === undefined ) {\n options = {};\n }\n\n method = options.type || this.attr2('method');\n action = options.url || this.attr2('action');\n\n url = (typeof action === 'string') ? $.trim(action) : '';\n url = url || window.location.href || '';\n if (url) {\n // clean url (don't include hash vaue)\n url = (url.match(/^([^#]+)/)||[])[1];\n }\n\n options = $.extend(true, {\n url: url,\n success: $.ajaxSettings.success,\n type: method || $.ajaxSettings.type,\n iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n }, options);\n\n // hook for manipulating the form data before it is extracted;\n // convenient for use with rich editors like tinyMCE or FCKEditor\n var veto = {};\n this.trigger('form-pre-serialize', [this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n return this;\n }\n\n // provide opportunity to alter form data before it is serialized\n if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSerialize callback');\n return this;\n }\n\n var traditional = options.traditional;\n if ( traditional === undefined ) {\n traditional = $.ajaxSettings.traditional;\n }\n\n var elements = [];\n var qx, a = this.formToArray(options.semantic, elements);\n if (options.data) {\n options.extraData = options.data;\n qx = $.param(options.data, traditional);\n }\n\n // give pre-submit callback an opportunity to abort the submit\n if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSubmit callback');\n return this;\n }\n\n // fire vetoable 'validate' event\n this.trigger('form-submit-validate', [a, this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n return this;\n }\n\n var q = $.param(a, traditional);\n if (qx) {\n q = ( q ? (q + '&' + qx) : qx );\n }\n if (options.type.toUpperCase() == 'GET') {\n options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n options.data = null; // data is null for 'get'\n }\n else {\n options.data = q; // data is the query string for 'post'\n }\n\n var callbacks = [];\n if (options.resetForm) {\n callbacks.push(function() { $form.resetForm(); });\n }\n if (options.clearForm) {\n callbacks.push(function() { $form.clearForm(options.includeHidden); });\n }\n\n // perform a load on the target only if dataType is not provided\n if (!options.dataType && options.target) {\n var oldSuccess = options.success || function(){};\n callbacks.push(function(data) {\n var fn = options.replaceTarget ? 'replaceWith' : 'html';\n $(options.target)[fn](data).each(oldSuccess, arguments);\n });\n }\n else if (options.success) {\n callbacks.push(options.success);\n }\n\n options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n var context = options.context || this ; // jQuery 1.4+ supports scope context\n for (var i=0, max=callbacks.length; i < max; i++) {\n callbacks[i].apply(context, [data, status, xhr || $form, $form]);\n }\n };\n\n if (options.error) {\n var oldError = options.error;\n options.error = function(xhr, status, error) {\n var context = options.context || this;\n oldError.apply(context, [xhr, status, error, $form]);\n };\n }\n\n if (options.complete) {\n var oldComplete = options.complete;\n options.complete = function(xhr, status) {\n var context = options.context || this;\n oldComplete.apply(context, [xhr, status, $form]);\n };\n }\n\n // are there files to upload?\n\n // [value] (issue #113), also see comment:\n // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219\n var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });\n\n var hasFileInputs = fileInputs.length > 0;\n var mp = 'multipart/form-data';\n var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n var fileAPI = feature.fileapi && feature.formdata;\n log(\"fileAPI :\" + fileAPI);\n var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;\n\n var jqxhr;\n\n // options.iframe allows user to force iframe mode\n // 06-NOV-09: now defaulting to iframe mode if file input is detected\n if (options.iframe !== false && (options.iframe || shouldUseFrame)) {\n // hack to fix Safari hang (thanks to Tim Molendijk for this)\n // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n if (options.closeKeepAlive) {\n $.get(options.closeKeepAlive, function() {\n jqxhr = fileUploadIframe(a);\n });\n }\n else {\n jqxhr = fileUploadIframe(a);\n }\n }\n else if ((hasFileInputs || multipart) && fileAPI) {\n jqxhr = fileUploadXhr(a);\n }\n else {\n jqxhr = $.ajax(options);\n }\n\n $form.removeData('jqxhr').data('jqxhr', jqxhr);\n\n // clear element array\n for (var k=0; k < elements.length; k++)\n elements[k] = null;\n\n // fire 'notify' event\n this.trigger('form-submit-notify', [this, options]);\n return this;\n\n // utility fn for deep serialization\n function deepSerialize(extraData){\n var serialized = $.param(extraData, options.traditional).split('&');\n var len = serialized.length;\n var result = [];\n var i, part;\n for (i=0; i < len; i++) {\n // #252; undo param space replacement\n serialized[i] = serialized[i].replace(/\\+/g,' ');\n part = serialized[i].split('=');\n // #278; use array instead of object storage, favoring array serializations\n result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);\n }\n return result;\n }\n\n // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)\n function fileUploadXhr(a) {\n var formdata = new FormData();\n\n for (var i=0; i < a.length; i++) {\n formdata.append(a[i].name, a[i].value);\n }\n\n if (options.extraData) {\n var serializedData = deepSerialize(options.extraData);\n for (i=0; i < serializedData.length; i++)\n if (serializedData[i])\n formdata.append(serializedData[i][0], serializedData[i][1]);\n }\n\n options.data = null;\n\n var s = $.extend(true, {}, $.ajaxSettings, options, {\n contentType: false,\n processData: false,\n cache: false,\n type: method || 'POST'\n });\n\n if (options.uploadProgress) {\n // workaround because jqXHR does not expose upload property\n s.xhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n options.uploadProgress(event, position, total, percent);\n }, false);\n }\n return xhr;\n };\n }\n\n s.data = null;\n var beforeSend = s.beforeSend;\n s.beforeSend = function(xhr, o) {\n //Send FormData() provided by user\n if (options.formData)\n o.data = options.formData;\n else\n o.data = formdata;\n if(beforeSend)\n beforeSend.call(this, xhr, o);\n };\n return $.ajax(s);\n }\n\n // private function for handling file uploads (hat tip to YAHOO!)\n function fileUploadIframe(a) {\n var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n var deferred = $.Deferred();\n\n // #341\n deferred.abort = function(status) {\n xhr.abort(status);\n };\n\n if (a) {\n // ensure that every serialized input is still enabled\n for (i=0; i < elements.length; i++) {\n el = $(elements[i]);\n if ( hasProp )\n el.prop('disabled', false);\n else\n el.removeAttr('disabled');\n }\n }\n\n s = $.extend(true, {}, $.ajaxSettings, options);\n s.context = s.context || s;\n id = 'jqFormIO' + (new Date().getTime());\n if (s.iframeTarget) {\n $io = $(s.iframeTarget);\n n = $io.attr2('name');\n if (!n)\n $io.attr2('name', id);\n else\n id = n;\n }\n else {\n $io = $('',\n header_template =\n '' +\n '' +\n '',\n frame_height = 350,\n frame_width = 600,\n class_names = \"ui-modal chat-modal\";\n\n // deletes the chat modal if already present and create one\n if ($(\".chat-modal\").length > 0) {\n $(\".chat-modal\").remove();\n }\n // creates a modal\n GenericNavView.modal = new Modal.View({\n body: iframe_template,\n height: frame_height,\n width: frame_width,\n closing_events: true,\n title_separator: false,\n cls: class_names\n });\n\n // shows modal\n GenericNavView.modal.show();\n $el_chat_modal_header = $(\".chat-modal .modal-header\");\n $el_chat_modal_body = $(\".chat-modal .modal-body\");\n // adjusts the css of bootstrap modal for chat\n $el_chat_modal_header.addClass(\"modal-header-body\");\n $el_chat_modal_body.addClass(\"modal-header-body\");\n $el_chat_modal_header.find(\"h4\").remove();\n $el_chat_modal_header.removeAttr(\"min-height padding border\");\n $el_chat_modal_header.append(header_template);\n // click event of the close button for chat\n $(\".close-modal\").click(function(e) {\n $(\".chat-modal\").css(\"display\", \"none\");\n });\n // click event of expand and compress icon\n $(\".expand-compress-modal\").click(function(e) {\n if ($(\".expand-compress-modal\").hasClass(\"fa-expand\")) {\n $(\".chat-modal .modal-dialog\").width(\"1000px\");\n $(\".chat-modal .modal-body\").height(\"575px\");\n $(\".expand-compress-modal\")\n .removeClass(\"fa-expand\")\n .addClass(\"fa-compress\");\n $(\".expand-compress-modal\").attr(\"title\", \"Minimize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"96.2%\");\n } else {\n $(\".chat-modal .modal-dialog\").width(frame_width + \"px\");\n $(\".chat-modal .modal-body\").height(frame_height + \"px\");\n $(\".expand-compress-modal\")\n .removeClass(\"fa-compress\")\n .addClass(\"fa-expand\");\n $(\".expand-compress-modal\").attr(\"title\", \"Maximize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"93.2%\");\n }\n });\n return this;\n },\n\n /**renders the chat icon as a nav item*/\n render: function() {\n var self = this,\n navItem = {};\n navItem = {\n id: \"show-chat-online\",\n icon: \"fa-comment-o\",\n tooltip: \"Chat online\",\n visible: false,\n onclick: self.makeModalIframe\n };\n return navItem;\n }\n });\n\n return {\n GenericNavView: GenericNavView\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/generic-nav-view.js","/** Frame manager uses the ui-frames to create the scratch book masthead icon and functionality **/\ndefine([\"mvc/ui/ui-frames\"], function(Frames) {\n return Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n options = options || {};\n this.frames = new Frames.View({ visible: false });\n this.setElement(this.frames.$el);\n this.buttonActive = options.collection.add({\n id: \"enable-scratchbook\",\n icon: \"fa-th\",\n tooltip: _l(\"Enable/Disable Scratchbook\"),\n onclick: function() {\n self.active = !self.active;\n self.buttonActive.set({\n toggle: self.active,\n show_note: self.active,\n note_cls: self.active && \"fa fa-check\"\n });\n !self.active && self.frames.hide();\n },\n onbeforeunload: function() {\n if (self.frames.length() > 0) {\n return (\n \"You opened \" +\n self.frames.length() +\n \" frame(s) which will be lost.\"\n );\n }\n }\n });\n this.buttonLoad = options.collection.add({\n id: \"show-scratchbook\",\n icon: \"fa-eye\",\n tooltip: _l(\"Show/Hide Scratchbook\"),\n show_note: true,\n visible: false,\n onclick: function(e) {\n self.frames.visible\n ? self.frames.hide()\n : self.frames.show();\n }\n });\n this.frames\n .on(\"add remove\", function() {\n this.visible && this.length() == 0 && this.hide();\n self.buttonLoad.set({\n note: this.length(),\n visible: this.length() > 0\n });\n })\n .on(\"show hide \", function() {\n self.buttonLoad.set({\n toggle: this.visible,\n icon: (this.visible && \"fa-eye\") || \"fa-eye-slash\"\n });\n });\n this.history_cache = {};\n },\n\n /** Add a dataset to the frames */\n addDataset: function(dataset_id) {\n var self = this;\n var current_dataset = null;\n if (Galaxy && Galaxy.currHistoryPanel) {\n var history_id = Galaxy.currHistoryPanel.collection.historyId;\n this.history_cache[history_id] = {\n name: Galaxy.currHistoryPanel.model.get(\"name\"),\n dataset_ids: []\n };\n Galaxy.currHistoryPanel.collection.each(function(model) {\n !model.get(\"deleted\") &&\n model.get(\"visible\") &&\n self.history_cache[history_id].dataset_ids.push(\n model.get(\"id\")\n );\n });\n }\n var _findDataset = function(dataset, offset) {\n if (dataset) {\n var history_details =\n self.history_cache[dataset.get(\"history_id\")];\n if (history_details && history_details.dataset_ids) {\n var dataset_list = history_details.dataset_ids;\n var pos = dataset_list.indexOf(dataset.get(\"id\"));\n if (\n pos !== -1 &&\n pos + offset >= 0 &&\n pos + offset < dataset_list.length\n ) {\n return dataset_list[pos + offset];\n }\n }\n }\n };\n var _loadDatasetOffset = function(dataset, offset, frame) {\n var new_dataset_id = _findDataset(dataset, offset);\n if (new_dataset_id) {\n self._loadDataset(new_dataset_id, function(\n new_dataset,\n config\n ) {\n current_dataset = new_dataset;\n frame.model.set(config);\n });\n } else {\n frame.model.trigger(\"change\");\n }\n };\n this._loadDataset(dataset_id, function(dataset, config) {\n current_dataset = dataset;\n self.add(\n _.extend(\n {\n menu: [\n {\n icon: \"fa fa-chevron-circle-left\",\n tooltip: \"Previous in History\",\n onclick: function(frame) {\n _loadDatasetOffset(\n current_dataset,\n -1,\n frame\n );\n },\n disabled: function() {\n return !_findDataset(\n current_dataset,\n -1\n );\n }\n },\n {\n icon: \"fa fa-chevron-circle-right\",\n tooltip: \"Next in History\",\n onclick: function(frame) {\n _loadDatasetOffset(\n current_dataset,\n 1,\n frame\n );\n },\n disabled: function() {\n return !_findDataset(\n current_dataset,\n 1\n );\n }\n }\n ]\n },\n config\n )\n );\n });\n },\n\n _loadDataset: function(dataset_id, callback) {\n var self = this;\n require([\"mvc/dataset/data\"], function(DATA) {\n var dataset = new DATA.Dataset({ id: dataset_id });\n $.when(dataset.fetch()).then(function() {\n var is_tabular = _.find([\"tabular\", \"interval\"], function(\n data_type\n ) {\n return (\n dataset.get(\"data_type\").indexOf(data_type) !== -1\n );\n });\n var title = dataset.get(\"name\");\n var history_details =\n self.history_cache[dataset.get(\"history_id\")];\n if (history_details) {\n title = history_details.name + \": \" + title;\n }\n callback(\n dataset,\n is_tabular\n ? {\n title: title,\n url: null,\n content: DATA.createTabularDatasetChunkedView(\n {\n model: new DATA.TabularDataset(\n dataset.toJSON()\n ),\n embedded: true,\n height: \"100%\"\n }\n ).$el\n }\n : {\n title: title,\n url:\n Galaxy.root +\n \"datasets/\" +\n dataset_id +\n \"/display/?preview=True\",\n content: null\n }\n );\n });\n });\n },\n\n /** Add a trackster visualization to the frames. */\n addTrackster: function(viz_id) {\n var self = this;\n require([\"viz/visualization\", \"viz/trackster\"], function(\n visualization,\n trackster\n ) {\n var viz = new visualization.Visualization({ id: viz_id });\n $.when(viz.fetch()).then(function() {\n var ui = new trackster.TracksterUI(Galaxy.root);\n\n // Construct frame config based on dataset's type.\n var frame_config = {\n title: viz.get(\"name\"),\n type: \"other\",\n content: function(parent_elt) {\n // Create view config.\n var view_config = {\n container: parent_elt,\n name: viz.get(\"title\"),\n id: viz.id,\n // FIXME: this will not work with custom builds b/c the dbkey needed to be encoded.\n dbkey: viz.get(\"dbkey\"),\n stand_alone: false\n },\n latest_revision = viz.get(\"latest_revision\"),\n drawables =\n latest_revision.config.view.drawables;\n\n // Set up datasets in drawables.\n _.each(drawables, function(d) {\n d.dataset = {\n hda_ldda: d.hda_ldda,\n id: d.dataset_id\n };\n });\n view = ui.create_visualization(\n view_config,\n latest_revision.config.viewport,\n latest_revision.config.view.drawables,\n latest_revision.config.bookmarks,\n false\n );\n }\n };\n self.add(frame_config);\n });\n });\n },\n\n /** Add and display a new frame/window based on options. */\n add: function(options) {\n if (options.target == \"_blank\") {\n window.open(options.url);\n } else if (\n options.target == \"_top\" ||\n options.target == \"_parent\" ||\n options.target == \"_self\"\n ) {\n window.location = options.url;\n } else if (!this.active || options.noscratchbook) {\n var $galaxy_main = $(window.parent.document).find(\n \"#galaxy_main\"\n );\n if (\n options.target == \"galaxy_main\" ||\n options.target == \"center\"\n ) {\n if ($galaxy_main.length === 0) {\n window.location =\n options.url +\n (options.url.indexOf(\"?\") == -1 ? \"?\" : \"&\") +\n \"use_panels=True\";\n } else {\n $galaxy_main.attr(\"src\", options.url);\n }\n } else window.location = options.url;\n } else {\n this.frames.add(options);\n }\n }\n });\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/scratchbook.js","define([\"mvc/base-mvc\", \"utils/localization\"], function(baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class View to display a user's disk/storage usage\n * either as a progress bar representing the percentage of a quota used\n * or a simple text element displaying the human readable size used.\n * @name UserQuotaMeter\n * @augments Backbone.View\n */\n var UserQuotaMeter = Backbone.View.extend(baseMVC.LoggableMixin).extend(\n /** @lends UserQuotaMeter.prototype */ {\n _logNamespace: logNamespace,\n\n /** Defaults for optional settings passed to initialize */\n options: {\n warnAtPercent: 85,\n errorAtPercent: 100\n },\n\n /** Set up, accept options, and bind events */\n initialize: function(options) {\n this.log(this + \".initialize:\", options);\n _.extend(this.options, options);\n\n //this.bind( 'all', function( event, data ){ this.log( this + ' event:', event, data ); }, this );\n this.listenTo(\n this.model,\n \"change:quota_percent change:total_disk_usage\",\n this.render\n );\n },\n\n /** Re-load user model data from the api */\n update: function(options) {\n this.log(this + \" updating user data...\", options);\n this.model.loadFromApi(this.model.get(\"id\"), options);\n return this;\n },\n\n /** Is the user over their quota (if there is one)?\n * @returns {Boolean} true if over quota, false if no quota or under quota\n */\n isOverQuota: function() {\n return (\n this.model.get(\"quota_percent\") !== null &&\n this.model.get(\"quota_percent\") >=\n this.options.errorAtPercent\n );\n },\n\n /** Render the meter when they have an applicable quota. Will render as a progress bar\n * with their percentage of that quota in text over the bar.\n * @fires quota:over when user is over quota (>= this.errorAtPercent)\n * @fires quota:under when user is under quota\n * @fires quota:under:approaching when user is >= this.warnAtPercent of their quota\n * @fires quota:under:ok when user is below this.warnAtPercent\n * @returns {jQuery} the rendered meter\n */\n _render_quota: function() {\n var modelJson = this.model.toJSON(),\n //prevPercent = this.model.previous( 'quota_percent' ),\n percent = modelJson.quota_percent,\n //meter = $( UserQuotaMeter.templates.quota( modelJson ) );\n $meter = $(this._templateQuotaMeter(modelJson)),\n $bar = $meter.find(\".progress-bar\");\n //this.log( this + '.rendering quota, percent:', percent, 'meter:', meter );\n\n // OVER QUOTA: color the quota bar and show the quota error message\n if (this.isOverQuota()) {\n //this.log( '\\t over quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-danger\");\n $meter.find(\".quota-meter-text\").css(\"color\", \"white\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:over\", modelJson);\n\n // APPROACHING QUOTA: color the quota bar\n } else if (percent >= this.options.warnAtPercent) {\n //this.log( '\\t approaching quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-warning\");\n //TODO: only trigger event if state has changed\n this.trigger(\n \"quota:under quota:under:approaching\",\n modelJson\n );\n\n // otherwise, hide/don't use the msg box\n } else {\n $bar.attr(\"class\", \"progress-bar progress-bar-success\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:ok\", modelJson);\n }\n return $meter;\n },\n\n /** Render the meter when the user has NO applicable quota. Will render as text\n * showing the human readable sum storage their data is using.\n * @returns {jQuery} the rendered text\n */\n _render_usage: function() {\n //var usage = $( UserQuotaMeter.templates.usage( this.model.toJSON() ) );\n var usage = $(this._templateUsage(this.model.toJSON()));\n this.log(this + \".rendering usage:\", usage);\n return usage;\n },\n\n /** Render either the quota percentage meter or the human readable disk usage\n * depending on whether the user model has quota info (quota_percent === null -> no quota)\n * @returns {Object} this UserQuotaMeter\n */\n render: function() {\n //this.log( this + '.rendering' );\n var meterHtml = null;\n\n // no quota on server ('quota_percent' === null (can be valid at 0)), show usage instead\n this.log(\n this + \".model.quota_percent:\",\n this.model.get(\"quota_percent\")\n );\n if (\n this.model.get(\"quota_percent\") === null ||\n this.model.get(\"quota_percent\") === undefined\n ) {\n meterHtml = this._render_usage();\n\n // otherwise, render percent of quota (and warning, error)\n } else {\n meterHtml = this._render_quota();\n //TODO: add the original text for unregistered quotas\n //tooltip = \"Your disk quota is %s. You can increase your quota by registering a Galaxy account.\"\n }\n\n this.$el.html(meterHtml);\n this.$el.find(\".quota-meter-text\").tooltip();\n return this;\n },\n\n _templateQuotaMeter: function(data) {\n return [\n '
',\n '
',\n '
'\n : \">\",\n _l(\"Using\"),\n \" \",\n data.quota_percent,\n \"%\",\n \"
\",\n \"
\"\n ].join(\"\");\n },\n\n _templateUsage: function(data) {\n return [\n '
',\n '
',\n data.nice_total_disk_usage\n ? _l(\"Using \") + data.nice_total_disk_usage\n : \"\",\n \"
\",\n \"
\"\n ].join(\"\");\n },\n\n toString: function() {\n return \"UserQuotaMeter(\" + this.model + \")\";\n }\n }\n );\n\n //==============================================================================\n return {\n UserQuotaMeter: UserQuotaMeter\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/user/user-quotameter.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///libs.bundled.js","webpack:///webpack/bootstrap 433a47d64a036c4a24ef","webpack:///./galaxy/scripts/libs/jquery/jquery.js","webpack:///./galaxy/scripts/libs/backbone.js","webpack:///./galaxy/scripts/libs/underscore.js","webpack:///./galaxy/scripts/utils/utils.js","webpack:///./galaxy/scripts/utils/localization.js","webpack:///./galaxy/scripts/mvc/base-mvc.js","webpack:///./galaxy/scripts/mvc/ui/ui-modal.js","webpack:///./galaxy/scripts/utils/query-string-parsing.js","webpack:///./galaxy/scripts/mvc/webhooks.js","webpack:///./galaxy/scripts/layout/panel.js","webpack:///./galaxy/scripts/galaxy.js","webpack:///./galaxy/scripts/layout/page.js","webpack:///./galaxy/scripts/mvc/ui/ui-frames.js","webpack:///./galaxy/scripts/libs/bootstrap-tour.js","webpack:///./galaxy/scripts/libs/toastr.js","webpack:///./galaxy/scripts/ui/autocom_tagging.js","webpack:///./galaxy/scripts/layout/modal.js","webpack:///./galaxy/scripts/mvc/tours.js","webpack:///./galaxy/scripts/utils/add-logging.js","webpack:///./galaxy/scripts/mvc/user/user-model.js","webpack:///./galaxy/scripts/libs/jquery/jquery.event.hover.js","webpack:///./galaxy/scripts/libs/jquery/jquery.event.drag.js","webpack:///./galaxy/scripts/libs/jquery/jquery.mousewheel.js","webpack:///./galaxy/scripts/libs/jquery/jquery.form.js","webpack:///./galaxy/scripts/libs/jquery/jquery.rating.js","webpack:///./galaxy/scripts/libs/jquery/select2.js","webpack:///./galaxy/scripts/libs/jquery/jquery-ui.js","webpack:///./galaxy/scripts/libs/farbtastic.js","webpack:///./galaxy/scripts/polyfills.js","webpack:///./galaxy/scripts/libs/jquery/jquery.migrate.js","webpack:///./galaxy/scripts/libs/jquery/jquery.autocomplete.js","webpack:///./galaxy/scripts/libs/jquery.sparklines.js","webpack:///./galaxy/scripts/libs/jquery/jstorage.js","webpack:///./galaxy/scripts/libs/jquery/jquery.complexify.js","webpack:///./galaxy/scripts/libs/bootstrap.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./galaxy/scripts/onload.js","webpack:///./galaxy/scripts/utils/async-save-text.js","webpack:///./galaxy/scripts/ui/popupmenu.js","webpack:///./galaxy/scripts/nls/locale.js","webpack:///./galaxy/scripts/utils/metrics-logger.js","webpack:///./galaxy/scripts/layout/masthead.js","webpack:///./galaxy/scripts/layout/menu.js","webpack:///./galaxy/scripts/layout/generic-nav-view.js","webpack:///./galaxy/scripts/layout/scratchbook.js","webpack:///./galaxy/scripts/mvc/user/user-quotameter.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","5","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","factory","w","this","noGlobal","isArrayLike","obj","jQuery","isWindow","winnow","elements","qualifier","not","isFunction","grep","elem","nodeType","risSimple","test","filter","indexOf","sibling","cur","dir","createOptions","options","each","match","rnotwhite","_","flag","completed","removeEventListener","ready","Data","expando","uid","dataAttr","key","data","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","dataUser","set","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","getAll","context","tag","ret","querySelectorAll","nodeName","merge","setGlobalEval","elems","refElements","dataPriv","buildFragment","scripts","selection","ignored","tmp","wrap","contains","j","fragment","createDocumentFragment","nodes","rhtml","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","createTextNode","inArray","ownerDocument","rscriptType","returnTrue","returnFalse","safeActiveElement","activeElement","on","types","selector","fn","one","origFn","event","off","apply","arguments","guid","add","manipulationTarget","content","disableScript","restoreScript","rscriptTypeMasked","removeAttribute","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","events","hasData","access","handle","extend","fixInput","rcheckableType","checked","defaultValue","domManip","collection","args","callback","concat","first","hasScripts","node","doc","iNoClone","value","support","checkClone","rchecked","index","self","eq","html","map","clone","_evalUrl","globalEval","rcleanScript","remove","keepData","cleanData","parentNode","removeChild","actualDisplay","appendTo","body","display","detach","defaultDisplay","elemdisplay","iframe","documentElement","contentDocument","write","close","curCSS","computed","width","minWidth","maxWidth","getStyles","getPropertyValue","pixelMarginRight","rnumnonpx","rmargin","addGetHookIf","conditionFn","hookFn","vendorPropName","emptyStyle","capName","toUpperCase","slice","cssPrefixes","setPositiveNumber","subtract","matches","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","boxSizingReliable","parseFloat","showHide","show","hidden","values","isHidden","Tween","easing","init","createFxNow","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","createTween","animation","Animation","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","rfxtypes","isEmptyObject","done","hide","propFilter","specialEasing","camelCase","isArray","cssHooks","expand","properties","stopped","prefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","stop","gotoEnd","rejectWith","proxy","fx","timer","progress","complete","fail","getClass","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","contents","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","split","throws","state","buildParams","prefix","traditional","v","rbracket","getWindow","defaultView","arr","class2type","toString","hasOwn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","last","len","sort","splice","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","Array","isNumeric","realStringObj","code","indirect","eval","trim","text","string","makeArray","results","second","invert","callbackExpect","arg","Date","Symbol","iterator","Sizzle","seed","nid","nidselect","groups","newSelector","newContext","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","id","getElementsByClassName","qsa","compilerCache","rbuggyQSA","rescape","tokenize","ridentifier","toSelector","join","rsibling","testContext","qsaError","select","createCache","cache","keys","Expr","cacheLength","markFunction","assert","div","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","find","dirrunsUnique","pop","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","els","hasCompare","parent","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","until","truncate","is","siblings","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","reverse","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","then","fns","newDefer","tuple","returned","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","readyState","doScroll","chainable","emptyGet","raw","bulk","acceptData","owner","register","writable","stored","camel","removeData","_data","_removeData","camelKey","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","handleObjIn","eventHandle","t","handleObj","special","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","sel","isNaN","fixHooks","keyHooks","original","charCode","keyCode","mouseHooks","eventDoc","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","Event","load","noBubble","trigger","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","relatedTarget","rxhtmlTag","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","insert","HTML","BODY","view","opener","getComputedStyle","swap","old","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","reliableMarginRight","marginDiv","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","getBoundingClientRect","left","margin","padding","border","suffix","expanded","parts","propHooks","eased","step","linear","swing","cos","PI","timerId","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","checkOn","optSelected","optDisabled","radioValue","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","rfocusable","rclickable","removeProp","tabindex","parseInt","for","class","rclass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","rspaces","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","url","isLocal","protocol","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","abort","finalText","method","crossDomain","host","param","hasContent","beforeSend","send","getJSON","getScript","wrapAll","firstElementChild","wrapInner","unwrap","visible","getClientRects","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onabort","onreadystatechange","responseType","responseText","binary","text script","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","size","andSelf","_jQuery","_$","$","noConflict","Backbone","previousBackbone","VERSION","emulateHTTP","emulateJSON","addMethod","attribute","iteratee","cb","defaultVal","addUnderscoreMethods","Class","methods","instance","isObject","_isModel","modelMatcher","isString","model","Events","eventSplitter","eventsApi","names","internalOn","listening","_events","onApi","ctx","_listeners","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","thisId","objId","offApi","listeners","stopListening","ids","_callback","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","Model","cid","cidPrefix","defaults","changed","initialize","validationError","idAttribute","toJSON","sync","escape","_validate","unset","silent","changes","changing","_changing","_previousAttributes","isEqual","_pending","clear","hasChanged","isEmpty","changedAttributes","previous","previousAttributes","fetch","resp","serverAttrs","wrapError","save","validate","isNew","patch","destroy","urlError","isValid","pairs","pick","omit","chain","Collection","models","comparator","_reset","setOptions","addOptions","array","at","min","tail","singular","removed","_removeModels","added","merged","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","_byId","modelId","where","findWhere","sortBy","pluck","create","callbackOpts","_onModelEvent","prevId","forEach","collect","reduce","foldl","inject","reduceRight","foldr","detect","every","any","include","includes","invoke","take","rest","drop","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","$el","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","eventName","listener","_createElement","_setAttributes","methodMap","stringify","_method","textStatus","errorThrown","update","delete","read","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","history","_extractParameters","execute","navigate","optional","decodeURIComponent","History","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getPath","path","charAt","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iWindow","contentWindow","_checkUrlInterval","loadUrl","detachEvent","title","assign","_updateHash","protoProps","staticProps","child","__super__","createReduce","memo","currentKey","optimizeCb","createPredicateIndexFinder","predicate","getLength","createIndexFinder","predicateFind","sortedIndex","item","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","proto","ObjProto","previousUnderscore","ArrayProto","FuncProto","Function","nativeIsArray","nativeKeys","nativeBind","nativeCreate","Ctor","_wrapped","argCount","other","accumulator","identity","Infinity","createAssigner","keysFunc","undefinedOnly","baseCreate","MAX_ARRAY_INDEX","pow","findKey","negate","fromIndex","guard","isFunc","lastComputed","rand","shuffled","criteria","right","group","behavior","pass","compact","flatten","shallow","strict","startIndex","output","isArguments","uniq","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","low","mid","floor","range","ceil","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","partial","boundArgs","bindAll","memoize","hasher","address","throttle","later","leading","trailing","debounce","immediate","timestamp","callNow","wrapper","compose","times","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","functions","extendOwn","oiteratee","tap","interceptor","isMatch","aStack","bStack","areArrays","aCtor","bCtor","isElement","Int8Array","isNumber","isNull","isUndefined","constant","propertyOf","accum","getTime","escapeMap","&","<","\"","'","`","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","unescape","fallback","idCounter","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","oldSettings","variable","_chain","mixin","valueOf","_l","deepeach","dict","new_dict","linkify","inputText","replacedText","replacePattern1","replacePattern2","replacePattern3","isJSON","sanitize","textify","lst","substr","__utils__get__","cache_key","debug","request","ajaxConfig","response_text","cssGetAttribute","classname","cssLoadFile","Galaxy","optionsDefault","roundToDecimalPlaces","number","numPlaces","placesMultiplier","round","bytesToString","normal_font","numberPlaces","tb","gb","mb","kb","rounded","__utils__uid__","hours","getHours","minutes","getMinutes","getDate","getMonth","getFullYear","appendScriptStyle","getQueryString","search","setWindowTitle","config","brand","localeStrings","locale","navigator","language","userLanguage","__root","localize","strToLocalize","cacheNonLocalized","addLogging","mixinHash1","propsHash","lastArg","wrapTemplate","jsonNamespace","templateFn","templateVars","buildComparator","attribute_name","ascending","LoggableMixin","logger","_logNamespace","SessionStorageModel","initialAttrs","_checkEnabledSessionStorage","_read","sessionStorage","alert","_create","_update","_delete","setItem","DOMException","userAgent","getItem","removeItem","_log","SearchableModelMixin","searchAttributes","searchAliases","searchAttribute","attrKey","searchFor","attrVal","_searchArrayAttribute","term","matchesAll","terms","HiddenUntilActivatedViewMixin","hiddenUntilActivated","$activator","HUAVOptions","$elementShown","showFn","showSpeed","hasBeenShown","onshowFirstTime","onshow","onhide","DraggableViewMixin","draggable","$dragHandle","toggleDraggable","draggableOff","draggableOn","dragStartHandler","_dragStartHandler","dragEndHandler","_dragEndHandler","dataTransfer","effectAllowed","setData","SelectableViewMixin","selectable","$selector","_renderSelected","toggleSelector","hideSelector","showSelector","fxSpeed","toggleSelect","deselect","cls","backdrop","closing_events","closing_callback","title_separator","buttonList","$backdrop","canceled","_template","$header","$dialog","$body","$footer","$buttons","buttons","counter","$button","getButton","enableButton","disableButton","showButton","hideButton","queryString","keyRegex","pairString","pair","WebhookModel","activate","Webhooks","WebhookView","me","toolId","toolVersion","urlRoot","webhook","webhooks","MIN_PANEL_WIDTH","MAX_PANEL_WIDTH","SidePanel","saved_size","hiddenByTool","$center","$toggleButton","panel","components","_templatePanel","_templateHeader","_templateBody","_templateFooter","mousedown .unified-panel-footer > .drag","click .unified-panel-footer > .panel-collapse","_mousedownDragHandler","move","delta","prevX","oldWidth","newWidth","draggingLeft","resize","newSize","whichSide","handle_minwidth_hint","hint","force_panel","op","LeftPanel","RightPanel","CenterPanel","$frame","$panel","_iframeChangeHandler","fullpath","message","onbeforeunload","confirm","BASE_MVC","userModel","metricsLogger","GalaxyApp","bootstrapped","_init","NAMESPACE_KEY","DEBUGGING_KEY","localDebugging","localStorage","storageErr","log","_processOptions","session_csrf_token","_initConfig","_patchGalaxy","_initLogger","loggerOptions","_initLocale","_initUser","user","_setUpListeners","defaultOptions","patchExisting","k","patchWith","consoleLogger","consoleLevel","MetricsLogger","ALL","consoleNamespaceWhitelist","emit","userJSON","User","lastAjax","debugging","setting","debuggingNamespaces","csv","newSettings","Masthead","Panel","Modal","Utils","_panelids","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","modal","allow_title_display","center","masthead","frame","$messagebox","$inactivebox","panels","panel_id","panel_class_name","panel_class","panel_instance","renderMessageBox","renderInactivityBox","renderPanels","_checkCommunicationServerOnline","level","verificationLink","communication_server_host","port","communication_server_port","preferences","$chat_icon_element","communication_server","FrameView","tooltip","placement","$title","$content","menu","$option","icon","onclick","cols","rows","cell","scroll","top_min","frame_max","top_max","frame_z","frame_counter","frame_uid","frame_list","frame_shadow","_frameInit","_frameResize","_panelRefresh","Close","frame_id","_toPixelCoord","_frameInsert","del","_panelAnimationComplete","mousemove","mouseup","mousewheel","DOMMouseScroll","mousedown .frame","mousedown .frame-background","mousedown .frame-scroll-up","mousedown .frame-scroll-down","mousedown .f-close","_eventFrameMouseDown","_frameIdentify","xy","x","y","_frameDragStart","_eventFrameMouseMove","event_xy_new","event_xy_delta","_frameScreen","min_dim","_toGridCoord","_frameOffset","_eventFrameMouseUp","_frameDragStop","_eventFrameClose","_eventHide","_eventPanelScroll","srcElement","_panelScroll","detail","wheelDelta","_eventPanelScroll_up","_eventPanelScroll_down","_frameFocus","_frameGrid","grid_location","px","sign","g","_toGrid","_toPixel","_isCollision","_locationRank","loc","top_new","screen_location","grid_rank","substring","new_loc","place_list","f","place","_framePlace","has_focus","Tour","storage","_error","_options","steps","autoscroll","keyboard","backdropContainer","backdropPadding","redirect","orphan","basePath","afterSetState","afterGetState","afterRemoveState","onStart","tour","onEnd","onShow","onShown","onHide","onHidden","onNext","onPrev","onPause","onResume","onRedirectError","_force","_inited","_current","overlay","$element","$background","backgroundShown","overlayElementShown","addSteps","_i","_len","addStep","getStep","reflexElement","force","ended","_debug","setCurrentStep","_initMouseNavigation","_initKeyboardNavigation","_onResize","_this","showStep","_makePromise","_callOnPromiseDone","hideStep","_showNextStep","_showPrevStep","goTo","endHelper","_setState","_clearTimer","_getState","restart","_removeState","pause","_paused","_duration","_start","_timer","resume","_isLast","hideStepHelper","popover","reflex","_reflexEvent","_hideBackdrop","showStepHelper","skipToPrevious","showPopoverAndOverlay","_isRedirect","_redirect","_isJustPathHashDifferent","_isOrphan","_showBackdrop","getCurrentStep","_showOverlayElement","_showPopover","_scrollIntoView","redraw","keyName","QUOTA_EXCEEDED_ERR","_state","showNextStepHelper","showPrevStepHelper","currentPath","_isHostDifferent","_isPathDifferent","currentURL","_getProtocol","_getHost","_getPath","_equal","_getQuery","_getHash","namespaceURI","$tip","isOrphan","shouldAddSmart","smartPlacement","tip","_reposition","_center","$navigation","$next","$prev","$resume","$template","offsetBottom","offsetRight","originalLeft","originalTop","tipOffset","outerHeight","outerWidth","_replaceArrow","dimension","$window","offsetTop","windowHeight","$this","_hideOverlayElement","_hideBackground","elementData","innerWidth","innerHeight","_applyBackdropPadding","bottom","_getParams","paramsObject","obj1","obj2","define","optionsOverride","toastType","iconClass","getOptions","iconClasses","info","subscribe","warning","$toastElement","$container","getContainer","hideMethod","hideDuration","hideEasing","removeToast","getDefaults","tapToDismiss","toastClass","containerId","showMethod","showDuration","showEasing","extendedTimeOut","positionClass","timeOut","titleClass","messageClass","closeHtml","newestOnTop","publish","hideToast","override","endTime","delayedhideToast","intervalId","stickAround","toastId","$titleElement","$messageElement","$closeElement","closeButton","toastr","version","__WEBPACK_AMD_DEFINE_FACTORY__","init_tag_click_function","tag_elt","click_func","tag_str","tag_name_and_value","autocomplete_tagging","init_delete_tag_image","delete_img","delete_tag_img_rollover","delete_tag_img","tag_button","tag_name_elt","tag_name","tag_value","prev_button","tags","new_text","get_toggle_link_text_fn","toggle_link","ajax_delete_tag_url","tag_area","build_tag_button","tag_click_fn","editable","num_tags","input_size","in_form","use_toggle_link","item_id","add_tag_img","add_tag_img_rollover","ajax_autocomplete_tag_url","ajax_retag_url","ajax_add_tag_url","this_obj","tag_input_field","add_tag_button","after_toggle_fn","keyup","new_value","new_tag_button","tag_buttons","last_tag_button","zz","new_tag","cacheFlush","format_item_func","row_position","num_rows","search_term","autocomplete_options","selectFirst","formatItem","autoFill","highlight","autocomplete_verheul","is_active","handle_document_click","hide_modal","show_modal","extra_buttons","init_fn","setContent","show_message","show_in_overlay","$overlay","dialog","$extraButtons","BootstrapTour","gxy_root","tour_opts","hooked_tour_from_data","preclick","postclick","textinsert","TourItem","Tours","giveTour","tour_id","tourdata","ToursView","tpl","tourpage_template","tourtags","Untagged","tours","tourtagorder","addTo","LOGGING_FNS","logFn","baseMVC","email","total_disk_usage","nice_total_disk_usage","quota_percent","is_admin","isAnonymous","isAdmin","loadFromApi","idOrCurrent","CURRENT_ID_STR","userFn","newModel","clearSessionStorage","userInfo","getCurrentUserFromApi","currentUser","hoverHandler","dist2","hovered","_hover","fn1","fn2","fn3","drag","str","$event","$special","distance","datakey","def","dontstart","textselect","touched","dd","propagates","mousedown","interactions","interaction","dragging","hijack","live","droppable","ia","mode","cancelled","subject","startX","startY","deltaX","deltaY","originalX","originalY","offsetX","offsetY","available","member","unselectable","locate","$dispatch","touchHooks","touchstart","touchmove","touchend","touchcancel","touches","changedTouches","draginit","dragstart","dragend","orgEvent","absDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","pageHeight","abs","lowestDelta","shouldAdjustOldDeltas","normalizeOffset","boundingRect","deltaFactor","nullLowestDeltaTimeout","nullLowestDelta","adjustOldDeltas","toFix","toBind","onmousewheel","getLineHeight","getPageHeight","$elem","$parent","unmousewheel","doAjaxSubmit","ajaxSubmit","captureSubmittingElement","form","clk","clk_x","clk_y","offsetLeft","opera","postError","feature","fileapi","files","formdata","FormData","hasProp","attr2","deepSerialize","extraData","part","serialized","fileUploadIframe","getDoc","doSubmit","checkState","io","SERVER_ABORT","timeoutHandle","$form","skipEncodingOverride","encoding","enctype","timedOut","CLIENT_TIMEOUT_ABORT","extraInputs","iframeTarget","$io","submitFn","aborted","callbackProcessed","iframeSrc","errMsg","isXml","XMLDocument","domCheckCount","docRoot","responseXML","content-type","Number","dt","scr","textarea","ta","pre","toXml","httpData","sub","execCommand","ignore","csrf_token","csrf_param","forceSync","ActiveXObject","loadXML","action","veto","beforeSerialize","qx","formToArray","semantic","beforeSubmit","q","callbacks","resetForm","clearForm","includeHidden","oldSuccess","replaceTarget","oldError","oldComplete","fileInputs","hasFileInputs","mp","multipart","fileAPI","jqxhr","shouldUseFrame","closeKeepAlive","serializedData","uploadProgress","upload","loaded","total","lengthComputable","formData","ajaxForm","delegation","ajaxFormUnbind","jmax","fieldValue","required","$input","formSerialize","fieldSerialize","successful","ops","clearFields","clearInputs","re","enable","$sel","Zepto","__webpack_provided_window_dot_jQuery","rating","calls","control","eid","raters","rater","metadata","meta","stars","inputs","serial","readOnly","cancel","cancelValue","star","half","stw","starWidth","spi","spw","margin-left","selfTriggered","fill","drain","draw","starson","wantCallBack","lastipt","each2","reinsertElement","placeholder","stripDiacritics","DIACRITICS","equal","measureScrollbar","MEASURE_SCROLLBAR_TEMPLATE","dim","clientWidth","clientHeight","splitVal","separator","getSideBorderPadding","installKeyUpChangeEvent","installFilteredMouseMove","lastpos","lastMousePosition","quietMillis","installDebouncedScroll","threshold","setSelectionRange","createTextRange","collapse","getCursorInfo","selectionStart","selectionEnd","createRange","moveStart","killEvent","killEventImmediately","measureTextWidth","sizer","currentStyle","fontSize","fontFamily","fontStyle","textTransform","whiteSpace","syncCssClasses","adapter","adapted","replacements","markMatch","markup","escapeMarkup","tl","defaultEscapeMarkup","replace_map","/","ajaxUrl","query","select2","ajaxDefaults","deprecated","page","hasError","local","dataText","dataItem","process","filtered","datum","childDatum","checkFormatter","formatter","formatterName","countResults","defaultTokenizer","selectCallback","dupe","createSearchChoice","tokenSeparators","cleanupJQueryElements","SuperClass","Select2","KEY","AbstractSelect2","SingleSelect2","MultiSelect2","nextUid","$document","scrollBarDimensions","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","isArrow","isControl","metaKey","isFunctionKey","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ω","ς","prepareOpts","createContainer","liveRegion","role","aria-live","containerEventName","adaptContainerCssClass","containerCss","containerCssClass","elementTabIndex","dropdown","adaptDropdownCssClass","dropdownCssClass","queryCount","resultsPage","initContainer","highlightUnderEvent","_touchEvent","touchMoved","clearTouchMoved","selectHighlighted","loadMoreIfNeeded","scrollHeight","updateResults","nextSearchTerm","initSelection","monitorSource","maximumInputLength","readonly","autofocus","searchInputPlaceholder","_sync","propertyObserver","disconnect","optionToData","idKey","populateResults","populate","depth","compound","label","innerContainer","formatted","sortResults","formatResultCssClass","formatResult","formatMatches","placeholderOption","more","elm","getPlaceholder","getPlaceholderOption","createSearchChoicePosition","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","mutations","observe","subtree","triggerSelect","choice","triggerChange","details","blurOnChange","isInterfaceEnabled","enabledInterface","enableInterface","_enabled","_readonly","opened","positionDropdown","bodyOffset","above","changeDirection","resultsListNode","$dropdown","dropHeight","windowWidth","viewPortRight","viewportBottom","dropTop","dropLeft","enoughRoomBelow","enoughRoomAbove","dropWidth","enoughRoomOnRight","aboveNow","focusSearch","dropdownAutoWidth","dropdownCss","shouldOpen","clearDropdownAlignmentPreference","opening","mask","orient","selectOnBlur","noFocus","that","clearSearch","externalSearch","getMaximumSelectionSize","maximumSelectionSize","ensureHighlightVisible","hb","rb","topOffset","findHighlightableChoices","moveHighlight","choices","removeHighlight","_touchMoved","countSelectableResults","loadMorePadding","postprocessResults","formatLoadMore","items","postRender","queryNumber","lastTerm","showSearchInput","maxSelSize","formatSelectionTooBig","minimumInputLength","formatInputTooShort","showSearch","formatInputTooLong","formatSearching","formatAjaxError","formatNoMatches","highlighted","onSelect","firstOption","initContainerWidth","resolveContainerWidth","focusser","minimumResultsForSearch","shouldFocusInput","isFocused","elementLabel","idSuffix","originalTitle","openOnEnter","altKey","ctrlKey","shiftKey","allowClear","setPlaceholder","isPlaceholderOptionSelected","updateSelection","is_match","noHighlightUpdate","oldData","cssClass","formatSelection","formatSelectionCssClass","ordered","selectChoice","searchContainer","keydowns","selectedChoice","unselect","resizeSearch","clearPlaceholder","getMaxSearchWidth","getVal","addSelectedChoice","tokenizer","closeOnSelect","enableChoice","enabledItem","disabledItem","setVal","minimumWidth","containerLeft","searchWidth","sideBorderPadding","buildChangeDetails","onSortStart","onSortEnd","multiple","allowedMethods","valueMethods","propertyMethods","methodsMap","multi","single","selectedObject","currentSearchTerm","msMaxTouchPoints","locales","limit","pageNumber","util","abstract","r","u","ui","COMMA","ESCAPE","NUMPAD_ADD","NUMPAD_DECIMAL","NUMPAD_DIVIDE","NUMPAD_ENTER","NUMPAD_MULTIPLY","NUMPAD_SUBTRACT","PERIOD","_focus","scrollParent","ie","removeUniqueId","focusable","tabbable","minHeight","borderWidth","selectstart","ie6","disableSelection","enableSelection","plugin","plugins","hasScroll","isOverAxis","isOver","widget","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","widgetEventPrefix","widgetName","widgetBaseClass","widgetFullName","bridge","defaultElement","uuid","eventNamespace","_getCreateOptions","bindings","hoverable","_on","_trigger","_getCreateEventData","_destroy","_setOptions","_setOption","_off","_delay","_hoverable","_focusable","focusout","effect","effects","uiBackCompat","_mouseInit","_mouseDown","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseStarted","_mouseUp","_mouseDownEvent","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","_mouseDrag","_mouseStop","h","scrollbarWidth","getScrollInfo","scrollWidth","getWithinInfo","of","within","E","collision","S","T","N","C","my","offsetFractions","marginTop","targetWidth","targetHeight","elemWidth","elemHeight","collisionPosition","collisionWidth","collisionHeight","bgiframe","horizontal","vertical","important","fit","flip","flipfit","background","autoFocus","minLength","change","pending","isMultiLine","_isMultiLine","valueMethod","isNewMenu","keydown","_move","_keyEvent","_value","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_change","_initSource","menufocus","menuselect","autocomplete","_search","cancelSearch","_response","__response","_normalize","_suggest","_close","_renderMenu","refresh","_resizeMenu","_renderItemData","_renderItem","isFirstItem","isLastItem","escapeRegex","messages","noResults","icons","primary","secondary","_determineButtonType","hasTitle","buttonElement","_resetButton","submenu","menus","activeMenu","mousedown .ui-menu-item > a","click .ui-state-disabled > a","click .ui-menu-item:has(a)","mouseenter .ui-menu-item","mouseleave .ui-menu","collapseAll","_keydown","previousPage","nextPage","_activate","previousFilter","filterTimer","aria-hidden","aria-expanded","_itemRole","listbox","_startOpening","_hasScroll","_open","mouse","orientation","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_valueMin","handles","_valueMax","_trimAlignValue","_slide","_stop","_refreshValue","elementSize","elementOffset","_normValueFromMouse","_clickOffset","_values","toFixed","farbtastic","_farbtastic","fb","linkTo","updateValue","color","setColor","unpack","rgb","hsl","RGBToHSL","updateDisplay","setHSL","HSLToRGB","pack","initWidget","browser","msie","radius","wheelWidth","square","markerSize","solidFill","cnvMask","ctxMask","getContext","cnvOverlay","ctxOverlay","translate","drawCircle","drawMask","color1","d1","nudge","angle1","lineWidth","d2","angle2","x1","sin","y1","x2","y2","am","tan","xm","ym","color2","corr","grad","createLinearGradient","addColorStop","fillStyle","r1","r2","beginPath","moveTo","quadraticCurveTo","lineTo","strokeStyle","stroke","restore","calculateMask","sizex","sizey","outputPixel","isx","isy","sq","getImageData","sz","buffer","putImageData","drawImage","cache_last","c_last","a_last","packDX","fillRect","drawMarkers","lw","angle","c1","c2","circles","clearRect","arc","backgroundColor","widgetCoords","circleDrag","hue","atan2","sat","lum","dec2hex","m1","m2","hueToRGB","warn","lastTime","vendors","requestAnimationFrame","cancelRequestAnimationFrame","currTime","timeToCall","cancelAnimationFrame","features","compatible","CanvasRenderingContext2D","incompatibilities","migrateWarn","warnedAbout","migrateWarnings","migrateMute","migrateTrace","trace","migrateWarnProp","newValue","_definePropertyBroken","migrateVersion","migrateReset","compatMode","attrFn","oldAttr","valueAttrGet","valueAttrSet","rnoType","rnoAttrNodeType","rboolean","ruseDefault","lowerName","attrNode","oldInit","oldFind","oldParseJSON","rspaceAngle","rattrHashTest","rattrHashGlob","querySelector","err1","err2","findProp","uaMatch","ua","chrome","webkit","safari","boxModel","jQuerySub","superclass","rootjQuerySub","internalSwapCall","oldHook","oldFnData","clean","handleScript","jsTags","eventAdd","eventRemove","eventTrigger","oldToggle","oldLive","oldDie","die","oldLoad","ajaxEvents","rajaxEvent","rhoverHack","hoverHack","toggler","lastToggle","oldSelf","oldFnFind","oldDeferred","isResolved","isRejected","Autocompleter","inputClass","loadingClass","resultsClass","selectClass","queryParamName","extraParams","remoteDataType","lineSeparator","cellSeparator","minChars","maxItemsToShow","maxCacheLength","matchSubset","matchCase","matchInside","mustMatch","selectOnly","showResult","preventDefaultReturn","preventDefaultTab","filterResults","sortFunction","onItemSelect","onNoMatch","onFinish","matchStringConverter","beforeUseConverter","autoWidth","useDelimiter","delimiterChar","delimiterKeyCode","onError","sanitizeResult","sanitizeInteger","stdValue","makeUrlParam","makeUrl","urlAppend","sortValueAlpha","plainTextParser","line","lines","cacheData_","cacheLength_","selectClass_","keyTimeout_","finishTimeout_","lastKeyPressed_","lastProcessedValue_","lastSelectedValue_","active_","finishOnBlur_","dom","$results","selectCurrent","focusPrev","focusNext","deactivate","onBlurFunction","totalHeight","inputBottom","bottomIfDown","topIfUp","cacheRead","filterLength","searchLength","maxPos","cacheWrite","callHook","hook","activateNow","fetchData","processResults","showResults","fetchRemoteData","remoteData","ajaxCallback","parseRemoteData","setExtraParam","defaultFilter","testValue","patternIndex","filterResult","converter","getValue","enableFinishOnBlur","disableFinishOnBlur","createItemFromResult","$li","selectItem","getItems","numResults","$ul","$first","firstItemClass","lastItemClass","focusItem","hideResults","lcValue","lcFilter","valueLength","getDelimiterOffsets","pad","setValue","selectRange","focusMove","modifier","$items","$item","displayValue","processedDisplayValue","delimiter","extraCaretPos","setCaret","moveEnd","getCaret","stored_range","duplicate","moveToElementText","setEndPoint","preCaretVal","postCaretVal","createClass","SPFormat","clipval","quartile","normalizeValue","normalizeValues","addCSS","ensureArray","formatNumber","RangeMap","MouseHandler","Tooltip","barHighlightMixin","bar","tristate","discrete","bullet","pie","defaultStyles","initStyles","VShape","VCanvas_base","VCanvas_canvas","VCanvas_vml","UNSET_OPTION","shapeCount","common","lineColor","fillColor","defaultPixelsPerValue","composite","tagValuesAttribute","tagOptionsPrefix","enableTagOptions","enableHighlight","highlightLighten","tooltipSkipNull","tooltipPrefix","tooltipSuffix","disableHiddenCheck","numberFormatter","numberDigitGroupCount","numberDigitGroupSep","numberDecimalMark","disableTooltips","disableInteraction","spotColor","highlightSpotColor","highlightLineColor","spotRadius","minSpotColor","maxSpotColor","normalRangeMin","normalRangeMax","normalRangeColor","drawNormalOnTop","chartRangeMin","chartRangeMax","chartRangeMinX","chartRangeMaxX","tooltipFormat","barColor","negBarColor","stackedBarColor","zeroColor","nullColor","zeroAxis","barWidth","barSpacing","chartRangeClip","colorMap","posBarColor","zeroBarColor","tooltipValueLookups","-1","1","thresholdColor","thresholdValue","targetColor","performanceColor","rangeColors","fields","sliceColors","borderColor","boxLineColor","boxFillColor","whiskerColor","outlierLineColor","outlierFillColor","medianColor","showOutliers","outlierIQR","tooltipFormatFieldlistKey","lq","med","uq","lo","ro","rw","SPFormatClass","fre","precre","format","fclass","fieldset","lookups","lookupkey","fieldvalue","prec","lookup","spformat","vl","nf","vals","groupsize","groupsep","decsep","ignoreNull","createStyleSheet","WebkitAppearance","simpledraw","useExisting","interact","mhandler","sparkline","canvas","registerCanvas","cleardraw","RangeMapClass","rangelist","range_map","currentPageX","currentPageY","splist","over","displayTooltips","highlightEnabled","registerSparkline","sp","$canvas","mouseclick","removeTooltip","clickEvent","sparklines","currentEl","updatePosition","spcount","needsRefresh","clearRegionHighlight","tooltiphtml","changeEvent","localX","localY","setRegionHighlight","getCurrentRegionTooltip","disableHighlight","sizeStyle","tooltipClassname","sizetipStyle","tooltipOffsetX","tooltipOffsetY","sizetip","updateWindowDims","scrollRight","getSize","mousex","mousey","userValues","userOptions","sparkline_display_visible","pl","extendedOptions","tagOptionType","tagValCache","getTagSetting","mergedOptions","keyval","defaultval","tagOption","_base","currentRegion","initTarget","interactive","canvasWidth","pixelWidth","canvasHeight","pixelHeight","getRegion","newRegion","renderHighlight","changeHighlight","formats","formatlen","showFields","showFieldsKey","newFields","fv","fieldlen","entries","getCurrentRegionFields","calcHighlightColor","mult","rgbnew","highlightColor","lighten","newShapes","shapeids","regionShapes","renderRegion","replaceWithShapes","newShape","replaceWithShape","shapes","vertices","regionMap","xvalues","yvalues","yminmax","hightlightSpotId","lastShapeId","highlightSpot","highlightLine","vertex","highlightSpotId","insertAfterShape","drawLine","canvasTop","highlightLineId","removeShapeId","scanValues","isStr","valcount","maxy","maxyorg","miny","minyorg","maxx","minx","processRangeOptions","drawNormalRange","canvasLeft","rangey","ytop","drawRect","rangex","yvallast","paths","xnext","xpos","xposnext","yvalcount","lineShapes","fillShapes","plen","valueSpots","hlSpotsEnabled","drawShape","getLastShapeId","isStackString","groupMin","groupMax","stackRanges","numValues","vlen","xaxisOffset","clipMin","clipMax","stacked","vlist","slen","svals","yoffset","yMaxCalc","stackMin","stackMax","totalBarWidth","stackTotals","stackRangesNeg","canvasHeightEf","colorMapByIndex","colorMapByValue","calcColor","stacknum","valuenum","newColor","yoffsetNeg","minPlotted","allMin","halfHeight","itemWidth","pheight","valueShapes","regiondata","shapeid","getShapeAt","fieldkey","region","shape","renderRange","renderPerformance","renderTarget","rn","rangeval","rangewidth","perfval","perfwidth","targetval","targettop","targetheight","p1","t0","newslice","renderSlice","circle","drawPieSlice","field","quartiles","loutlier","routlier","lwhisker","rwhisker","iqr","q1","q2","q3","unitSize","minValue","maxValue","appendShape","_pxregex","_genShape","startAngle","endAngle","getElement","_insert","_calculatePixelDims","shapetype","shapeargs","verticalAlign","shapeseq","currentTargetShapeId","_getContext","_drawShape","targetX","targetY","isPointInPath","_drawCircle","_drawPieSlice","closePath","_drawRect","sid","shapemap","groupel","insertAdjacentHTML","rendered","prerender","closed","vpath","startx","starty","endx","endy","vel","outerHTML","_reloadData","_backend","_storage_elm","E5","_observer_update","E6","_storage_service","jStorage","_load_storage","_handleTTL","_handlePubSub","_setupObserver","_storageObserver","updateTime","_observer_timeout","jStorage_update","_checkUpdatedKeys","newCrc32List","oldCrc32List","_storage","__jstorage_meta","CRC32","updated","_fireObservers","_observers","jlen","_publishChange","E8","_storage_size","_save","_dropOldEvents","E7","_checkKey","curtime","TTL","nextExpire","deleted","_ttl_timeout","PubSub","pubelm","_pubsubCurrent","_pubsub_last","_fireSubscribers","channel","payload","_pubsub_observers","retire","_publish","murmurhash2_32_gc","charCodeAt","decode","evalJSON","encode","_XMLService","xmlNode","XMLSerializer","serializeToString","E1","E2","xmlString","resultXML","dom_parser","_xmlString","xml_doc","deleteKey","_is_xml","setTTL","ttl","getTTL","flush","storageObj","F","storageSize","currentBackend","storageAvailable","listenKeyChange","reInit","localStorageReallyWorks","BogusQuotaExceededErrorOnIos5","E3","globalStorage","hostname","E4","addBehavior","persisted","complexify","additionalComplexityForCharset","inBanlist","banMode","bannedPasswords","evaluateSecurity","complexity","valid","CHARSETS","strengthScaleFactor","MIN_COMPLEXITY","minimumChars","MAX_COMPLEXITY","COMPLEXIFY_BANLIST","transitionEnd","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","called","Tab","$target","$active","tab","Constructor","hoverState","DEFAULTS","triggers","eventIn","eventOut","enter","leave","fixTitle","getDelegateOptions","autoToken","autoPlace","getPosition","actualWidth","actualHeight","orgPlacement","docScroll","parentWidth","parentHeight","parentLeft","calculatedOffset","getCalculatedOffset","applyPlacement","replaceArrow","arrow","getTitle","$e","$arrow","toggleEnabled","clearMenus","getParent","Dropdown","isActive","Popover","getContent","replace_big_select_inputs","min_length","max_length","select_elts","refresh_select2","select_elt","num_options","init_refresh_on_change","select_field","select_val","ref_on_change_vals","last_selected_value","async_save_text","POPUPMENU","make_popupmenu","make_popup_menus","TOURS","onloadWebhooks","anchor","galaxy_main_exists","frames","galaxy_main","et","click_to_edit_elt","text_elt_id","save_url","text_parm_name","num_cols","use_textarea","on_start","on_finish","text_elt","old_text","ajax_data","processed_text","button_element","initial_options","element_menu_exists","menu_element","close_popup","link","link_dom","confirmtext","amdi18n","Analyze Data","Workflow","Shared Data","Data Libraries","Histories","Workflows","Visualizations","Pages","Visualization","New Track Browser","Saved Visualizations","Interactive Environments","Admin","Help","Support","Search","Mailing Lists","Videos","Wiki","How to Cite Galaxy","Interactive Tours","Login","Register","Login or Register","Logged in as","Preferences","Custom Builds","Logout","Saved Histories","Saved Datasets","Saved Pages","Account and saved data","Account registration or login","Support, contact, and community","Administer this Galaxy","Visualize datasets","Access published resources","Chain tools into workflows","Analysis home view","History Lists","Histories Shared with Me","Current History","Create New","Copy History","Share or Publish","Show Structure","Extract Workflow","Delete Permanently","Dataset Actions","Copy Datasets","Dataset Security","Resume Paused Jobs","Collapse Expanded Datasets","Unhide Hidden Datasets","Delete Hidden Datasets","Purge Deleted Datasets","Downloads","Export Tool Citations","Export History to File","Other Actions","Import from File","This history is empty","No matching datasets found","An error occurred while getting updates from the server","Please contact a Galaxy administrator if the problem persists","search datasets","You are currently viewing a deleted history!","You are over your disk quota","Tool execution is on hold until your disk usage drops below your allocated quota","All","None","For all selected","Edit history tags","Edit history Annotation","Click to rename history","Operations on multiple datasets","Hide datasets","Unhide datasets","Delete datasets","Undelete datasets","Permanently delete datasets","This will permanently remove the data in your datasets. Are you sure?","Dataset","Annotation","This history is empty. Click 'Get Data' on the left tool menu to start","You must be logged in to create histories","Unable to purge dataset","Cannot display datasets removed from disk","This dataset must finish uploading before it can be viewed","This dataset is not yet viewable","View data","Download","Download dataset","Additional files","View details","This is a new dataset and not all of its data are available yet","You do not have permission to view this dataset","The job creating this dataset was cancelled before completion","This job is waiting to run","This dataset is currently uploading","Metadata is being auto-detected","This job is currently running","This job is paused. Use the \"Resume Paused Jobs\" in the history menu to resume","An error occurred with this dataset","No data","An error occurred setting the metadata for this dataset","There was an error getting the data for this dataset","This dataset has been deleted and removed from disk","This dataset has been deleted","This dataset has been hidden","database","Edit attributes","Cannot edit attributes of datasets removed from disk","Undelete dataset to edit attributes","This dataset must finish uploading before it can be edited","This dataset is not yet editable","Delete","Dataset is already deleted","View or report this error","Run this job again","Visualize","Visualize in","Undelete it","Permanently remove it from disk","Unhide it","You may be able to","set it manually or retry auto-detection","Edit dataset tags","Edit dataset annotation","Tool Help","Search Tool Shed","Monitor installing repositories","Manage installed tools","Reset metadata","Download local tool","Tool lineage","Reload a tool's configuration","Review tool migration stages","View Tool Error Logs","Manage Display Whitelist","Manage Tool Dependencies","Users","Groups","API keys","Impersonate a user","Quotas","Roles","Local data","Form Definitions","Enable/Disable Scratchbook","Show/Hide Scratchbook","Tags","Edit annotation","__ja","Search datasets","Edit history annotation","Search Tool Shed (Beta)","Form definitions","Administration","Server","Tools and Tool Shed","User Management","__fr","load your own data","get data from an external source","Include Deleted Datasets","Include Hidden Datasets","__zh","_i18n","_typeof","userId","LoggingCache","LOG","DEBUG","INFO","WARN","ERROR","METRIC","NONE","logLevel","defaultNamespace","clientPrefix","maxCacheSize","postSize","addTime","cacheKeyPrefix","postUrl","delayPostInMs","getPingData","onServerResponse","_parseLevel","_sending","_waiting","_postSize","_initCache","maxSize","_emitToConsole","upper","logArguments","_addToCache","_buildEntry","_postCache","entry","toISOString","entriesLength","postData","metrics","post","responseJSON","_delayPost","whitelist","metric","_hasStorage","_initStorage","_cache","_fetchAndParse","overage","_unparseAndStore","print","Menu","Scratchbook","QuotaMeter","$navbarBrandLink","$navbarBrandImage","$navbarBrandTitle","$navbarTabs","$quoteMeter","quotaMeter","UserQuotaMeter","$download_link","logo_url","logo_src","GenericNav","extendedNavItem","GenericNavView","function","helpTab","support_url","search_url","mailing_lists","screencasts_url","wiki_url","citation_url","terms_url","biostar_url","biostar_url_redirect","userTab","divider","allow_user_creation","noscratchbook","activeView","active_view","$toggle","$menu","$note","click .dropdown-toggle","_formatUrl","menuItem","_buildMenuItem","_toggleClick","buildLink","makeModalIframe","persistent_communication_rooms","query_string","$el_chat_modal_header","$el_chat_modal_body","iframe_template","frame_width","frame_height","Frames","buttonActive","show_note","note_cls","buttonLoad","note","history_cache","addDataset","dataset_id","current_dataset","currHistoryPanel","history_id","historyId","dataset_ids","_findDataset","dataset","history_details","dataset_list","_loadDatasetOffset","new_dataset_id","_loadDataset","new_dataset","__WEBPACK_AMD_REQUIRE_ARRAY__","DATA","is_tabular","data_type","createTabularDatasetChunkedView","TabularDataset","embedded","catch","addTrackster","viz_id","visualization","trackster","viz","TracksterUI","frame_config","parent_elt","view_config","dbkey","stand_alone","latest_revision","drawables","hda_ldda","create_visualization","viewport","bookmarks","$galaxy_main","warnAtPercent","errorAtPercent","isOverQuota","_render_quota","modelJson","$meter","_templateQuotaMeter","$bar","_render_usage","usage","_templateUsage","meterHtml"],"mappings":"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AC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA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QACA,UAGA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cAGAvuG,GACA0uG,aAAA,EACAF,oBAAA,EACAL,gBAAA95I,OAAAu6I,uBACAV,QAAA,SAkEA,OA/DA3xG,GAAArjC,WAAAY,KAAAqH,IACAA,EAAArH,EACAA,MAGAA,EAAAyiC,EAAA57B,OAAAq/B,EAAAlmC,GAoDAtB,KAAAuB,KAAA,WACAwiC,EAAA/jC,MAAA4M,OACAgpI,EAAA7uI,MAAA/G,QAIAA,KAAAuB,KAAA,WACAwiC,EAAA/jC,MAAAujC,KAAA,2CAAAqyG,SAMCx1I,KnC087B4BzE,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,IoC7o8BjC,SAAAm2E,EAAAnxE,IAoBA,SAAA2jC,GAAe,YAKf,SAAAsyG,KACA,GAAAzqH,GAAA/tB,SAAAE,cAAA,aAEAu4I,GACAC,iBAAA,sBACAC,cAAA,gBACAC,YAAA,gCACAC,WAAA,gBAGA,QAAA93I,KAAA03I,GACA,OAAAh5I,KAAAsuB,EAAAhoB,MAAAhF,GACA,OAAgBkF,IAAAwyI,EAAA13I,IAMhBmlC,EAAAr9B,GAAAiwI,qBAAA,SAAA7lI,GACA,GAAA8lI,IAAA,EAAAxoG,EAAApuC,IACA+jC,GAAA/jC,MAAA2G,IAAAo9B,EAAA56B,QAAAutI,WAAA5yI,IAAA,WAAuD8yI,GAAA,GACvD,IAAAjuI,GAAA,WAAgCiuI,GAAA7yG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","file":"libs.bundled.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t5: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".bundled.js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 103);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"
\")\n });\n modal.show({ backdrop: true });\n }\n\n // ============================================================================\n return {\n Modal: Modal,\n hide_modal: hide_modal,\n show_modal: show_modal,\n show_message: show_message,\n show_in_overlay: show_in_overlay\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(_, $, Backbone) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(66)], __WEBPACK_AMD_DEFINE_RESULT__ = function (BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = \"

Galaxy Tours

\\n

This page presents a list of interactive tours available on this Galaxy server.\\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).

\\n\\n
\\n <% _.each(tourtagorder, function(tag) { %>\\n \\n <% }); %>\\n
\\n\\n<% _.each(tourtagorder, function(tourtagkey) { %>\\n
\\\" style=\\\"display: block;\\\">\\n <% var tourtag = tourtags[tourtagkey]; %>\\n

\\n <%- tourtag.name %>\\n

\\n \\n
\\n<% }); %>\";\n\n var tour_opts = {\n storage: window.sessionStorage,\n onEnd: function onEnd() {\n sessionStorage.removeItem(\"activeGalaxyTour\");\n },\n delay: 150, // Attempts to make it look natural\n orphan: true\n };\n\n var hooked_tour_from_data = function hooked_tour_from_data(data) {\n _.each(data.steps, function (step) {\n if (step.preclick) {\n step.onShow = function () {\n _.each(step.preclick, function (preclick) {\n // TODO: click delay between clicks\n $(preclick).click();\n });\n };\n }\n if (step.postclick) {\n step.onHide = function () {\n _.each(step.postclick, function (postclick) {\n // TODO: click delay between clicks\n $(postclick).click();\n });\n };\n }\n if (step.textinsert) {\n // Have to manually trigger a change here, for some\n // elements which have additional logic, like the\n // upload input box\n step.onShown = function () {\n $(step.element).val(step.textinsert).trigger(\"change\");\n };\n }\n });\n return data;\n };\n\n var TourItem = Backbone.Model.extend({\n urlRoot: gxy_root + \"api/tours\"\n });\n\n var Tours = Backbone.Collection.extend({\n url: gxy_root + \"api/tours\",\n model: TourItem\n });\n\n var giveTour = function giveTour(tour_id) {\n var url = gxy_root + \"api/tours/\" + tour_id;\n $.getJSON(url, function (data) {\n // Set hooks for additional click and data entry actions.\n var tourdata = hooked_tour_from_data(data);\n sessionStorage.setItem(\"activeGalaxyTour\", JSON.stringify(data));\n // Store tour steps in sessionStorage to easily persist w/o hackery.\n var tour = new Tour(_.extend({\n steps: tourdata.steps\n }, tour_opts));\n // Always clean restart, since this is a new, explicit giveTour execution.\n tour.init();\n tour.goTo(0);\n tour.restart();\n });\n };\n var ToursView = Backbone.View.extend({\n title: \"Tours\",\n // initialize\n initialize: function initialize() {\n var self = this;\n this.setElement(\"
\");\n this.model = new Tours();\n this.model.fetch({\n success: function success() {\n self.render();\n },\n error: function error() {\n // Do something.\n console.error(\"Failed to fetch tours.\");\n }\n });\n },\n\n render: function render() {\n var tpl = _.template(tourpage_template);\n\n var tourtags = {};\n _.each(this.model.models, function (tour) {\n if (tour.attributes.tags === null) {\n if (tourtags.Untagged === undefined) {\n tourtags.Untagged = { name: \"Untagged\", tours: [] };\n }\n tourtags.Untagged.tours.push(tour);\n } else {\n _.each(tour.attributes.tags, function (tag) {\n tag = tag.charAt(0).toUpperCase() + tag.slice(1);\n if (tourtags[tag] === undefined) {\n tourtags[tag] = { name: tag, tours: [] };\n }\n tourtags[tag].tours.push(tour);\n });\n }\n });\n var tourtagorder = Object.keys(tourtags).sort();\n\n this.$el.html(tpl({\n tours: this.model.models,\n tourtags: tourtags,\n tourtagorder: tourtagorder\n })).on(\"click\", \".tourItem\", function (e) {\n e.preventDefault();\n giveTour($(this).data(\"tour.id\"));\n }).on(\"click\", \".tag-selector-button\", function (e) {\n var elem = $(e.target);\n var display = \"block\";\n var tag = elem.attr(\"tag-selector-button\");\n\n elem.toggleClass(\"btn-primary\");\n elem.toggleClass(\"btn-secondary\");\n\n if (elem.hasClass(\"btn-secondary\")) {\n display = \"none\";\n }\n $(\"div[tag='\" + tag + \"']\").css({ display: display });\n });\n }\n });\n\n return {\n ToursView: ToursView,\n hooked_tour_from_data: hooked_tour_from_data,\n tour_opts: tour_opts,\n giveTour: giveTour\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1)))\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n //==============================================================================\n var LOGGING_FNS = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"metric\"];\n /** adds logging functions to an obj.prototype (or obj directly) adding a namespace for filtering\n * @param {Object} obj\n * @param {String} namespace\n */\n function addLogging(obj, namespace) {\n var addTo = obj.prototype !== undefined ? obj.prototype : obj;\n if (namespace !== undefined) {\n addTo._logNamespace = namespace;\n }\n //yagni?: without this, may not capture Galaxy.config.debug and add Galaxy.logger properly\n // if( window.Galaxy && window.Galaxy.config && window.Galaxy.config.debug ){\n // addTo.logger = window.Galaxy.logger;\n // }\n\n // give the object each\n LOGGING_FNS.forEach(function (logFn) {\n addTo[logFn] = function () {\n if (!this.logger) {\n return undefined;\n }\n if (this.logger.emit) {\n return this.logger.emit(logFn, this._logNamespace, arguments);\n }\n if (this.logger[logFn]) {\n //TODO:! there has to be a way to get the lineno/file into this\n // http://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n // http://www.paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/\n return this.logger[logFn].apply(this.logger, arguments);\n }\n return undefined;\n };\n });\n return obj;\n }\n\n //==============================================================================\n return addLogging;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(1), __webpack_require__(6), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, Backbone, baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class Model for a Galaxy user (including anonymous users).\n * @name User\n */\n var User = Backbone.Model.extend(baseMVC.LoggableMixin).extend(\n /** @lends User.prototype */{\n _logNamespace: logNamespace,\n\n /** API location for this resource */\n urlRoot: function urlRoot() {\n return Galaxy.root + \"api/users\";\n },\n\n /** Model defaults\n * Note: don't check for anon-users with the username as the default is '(anonymous user)'\n * a safer method is if( !user.get( 'email' ) ) -> anon user\n */\n defaults: /** @lends User.prototype */{\n id: null,\n username: \"(\" + _l(\"anonymous user\") + \")\",\n email: \"\",\n total_disk_usage: 0,\n nice_total_disk_usage: \"\",\n quota_percent: null,\n is_admin: false\n },\n\n /** Set up and bind events\n * @param {Object} data Initial model data.\n */\n initialize: function initialize(data) {\n this.log(\"User.initialize:\", data);\n\n this.on(\"loaded\", function (model, resp) {\n this.log(this + \" has loaded:\", model, resp);\n });\n this.on(\"change\", function (model, data) {\n this.log(this + \" has changed:\", model, data.changes);\n });\n },\n\n isAnonymous: function isAnonymous() {\n return !this.get(\"email\");\n },\n\n isAdmin: function isAdmin() {\n return this.get(\"is_admin\");\n },\n\n /** Load a user with the API using an id.\n * If getting an anonymous user or no access to a user id, pass the User.CURRENT_ID_STR\n * (e.g. 'current') and the API will return the current transaction's user data.\n * @param {String} idOrCurrent encoded user id or the User.CURRENT_ID_STR\n * @param {Object} options hash to pass to Backbone.Model.fetch. Can contain success, error fns.\n * @fires loaded when the model has been loaded from the API, passing the newModel and AJAX response.\n */\n loadFromApi: function loadFromApi(idOrCurrent, options) {\n idOrCurrent = idOrCurrent || User.CURRENT_ID_STR;\n\n options = options || {};\n var model = this,\n userFn = options.success;\n\n /** @ignore */\n options.success = function (newModel, response) {\n model.trigger(\"loaded\", newModel, response);\n if (userFn) {\n userFn(newModel, response);\n }\n };\n\n // requests for the current user must have a sep. constructed url (fetch don't work, ma)\n if (idOrCurrent === User.CURRENT_ID_STR) {\n options.url = this.urlRoot + \"/\" + User.CURRENT_ID_STR;\n }\n return Backbone.Model.prototype.fetch.call(this, options);\n },\n\n /** Clears all data from the sessionStorage.\n */\n clearSessionStorage: function clearSessionStorage() {\n for (var key in sessionStorage) {\n //TODO: store these under the user key so we don't have to do this\n // currently only history\n if (key.indexOf(\"history:\") === 0) {\n sessionStorage.removeItem(key);\n } else if (key === \"history-panel\") {\n sessionStorage.removeItem(key);\n }\n }\n },\n\n /** string representation */\n toString: function toString() {\n var userInfo = [this.get(\"username\")];\n if (this.get(\"id\")) {\n userInfo.unshift(this.get(\"id\"));\n userInfo.push(this.get(\"email\"));\n }\n return \"User(\" + userInfo.join(\":\") + \")\";\n }\n });\n\n // string to send to tell server to return this transaction's user (see api/users.py)\n User.CURRENT_ID_STR = \"current\";\n\n // class method to load the current user via the api and return that model\n User.getCurrentUserFromApi = function (options) {\n var currentUser = new User();\n currentUser.loadFromApi(User.CURRENT_ID_STR, options);\n return currentUser;\n };\n\n // (stub) collection for users (shouldn't be common unless admin UI)\n var UserCollection = Backbone.Collection.extend(baseMVC.LoggableMixin).extend({\n model: User,\n urlRoot: function urlRoot() {\n return Galaxy.root + \"api/users\";\n }\n //logger : console,\n });\n\n //==============================================================================\n return {\n User: User\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {;(function($){ // secure $ jQuery alias\r\n/*******************************************************************************************/\t\r\n// jquery.event.hover.js \r\n// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)\r\n// Licensed under the MIT License (MIT-LICENSE.txt)\r\n// http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// JQuery 1.9+ compatible version\r\n//\r\n// Optional settings :\r\n// $.event.special.hover.delay = 100;\r\n// Defines the delay (msec) while mouse is inside the element before checking the speed\r\n// $.event.special.hover.speed = 100;\r\n// Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event\r\n/*******************************************************************************************/\r\n\r\n// save the old jquery \"hover\" method\r\n$.fn._hover = $.fn.hover;\r\n\r\n// jquery method \r\n$.fn.hover = function( fn1, fn2, fn3 ) {\r\n\tif ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args\r\n\tif ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args\r\n\treturn !fn1 ? this.trigger('hover') // 0 args \r\n\t\t: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args\r\n\t};\t\r\n\r\n// special event configuration\r\nvar hover = $.event.special.hover = {\r\n\tdelay: 100, // milliseconds\r\n\tspeed: 100, // pixels per second\r\n\tsetup: function( data ){\r\n\t\tdata = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );\r\n\t\t$.event.add( this, \"mouseenter mouseleave\", hoverHandler, data );\r\n\t\t},\r\n\tteardown: function(){\r\n\t\t$.event.remove( this, \"mouseenter mouseleave\", hoverHandler );\r\n\t\t}\r\n\t};\r\n\r\n// shared event handler\r\nfunction hoverHandler( event ){\r\n\tvar data = event.data || event;\r\n\tswitch ( event.type ){\r\n\t\tcase 'mouseenter': // mouseover\r\n\t\t\tdata.dist2 = 0; // init mouse distance�\r\n\t\t\tdata.event = event; // store the event\r\n\t\t\tevent.type = \"hoverstart\"; // hijack event\r\n if($.event.dispatch.call(this, event) !== false) {\r\n \tdata.elem = this; // ref to the current element\r\n\t\t\t\t$.event.add( this, \"mousemove\", hoverHandler, data ); // track the mouse\r\n\t\t\t\tdata.timer = setTimeout( compare, data.delay ); // start async compare\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'mousemove': // track the event, mouse distance� = x� + y�\r\n\t\t\tdata.dist2 += Math.pow( event.pageX-data.event.pageX, 2 ) \r\n\t\t\t\t+ Math.pow( event.pageY-data.event.pageY, 2 ); \r\n\t\t\tdata.event = event; // store current event\r\n\t\t\tbreak;\r\n\t\tcase 'mouseleave': // mouseout\r\n\t\t\tclearTimeout( data.timer ); // uncompare\r\n\t\t\tif ( data.hovered ){ \r\n\t\t\t\tevent.type = \"hoverend\"; // hijack event\r\n $.event.dispatch.call(this, event); // handle \"hoverend\"\r\n\t\t\t\tdata.hovered--; // reset flag\r\n\t\t\t\t}\r\n\t\t\telse $.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\tbreak;\r\n\t\tdefault: // timeout compare // distance� = x� + y� = ( speed * time )�\r\n\t\t\tif ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable\r\n\t\t\t\t$.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\t\tdata.event.type = \"hover\"; // hijack event\r\n if($.event.dispatch.call(data.elem, data.event) !== false) // handle \"hover\"\r\n\t\t\t\t\tdata.hovered++; // flag for \"hoverend\"\r\n\t\t\t\t}\r\n\t\t\telse data.timer = setTimeout( compare, data.delay ); // async recurse\r\n\t\t\tdata.dist2 = 0; // reset distance� for next compare\r\n\t\t\tbreak;\r\n\t\t}\r\n\tfunction compare(){ hoverHandler( data ); }; // timeout/recursive function\r\n\t};\r\n\t\r\n/*******************************************************************************************/\r\n})(jQuery); // confine scope\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {/*! \n * jquery.event.drag - v 2.2\n * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n * Open Source MIT License - http://threedubmedia.com/code/license\n */\n// Created: 2008-06-04 \n// Updated: 2012-05-21\n// REQUIRES: jquery 1.7.x\n\n;(function( $ ){\n\n// add the jquery instance method\n$.fn.drag = function( str, arg, opts ){\n\t// figure out the event type\n\tvar type = typeof str == \"string\" ? str : \"\",\n\t// figure out the event handler...\n\tfn = $.isFunction( str ) ? str : $.isFunction( arg ) ? arg : null;\n\t// fix the event type\n\tif ( type.indexOf(\"drag\") !== 0 ) \n\t\ttype = \"drag\"+ type;\n\t// were options passed\n\topts = ( str == fn ? arg : opts ) || {};\n\t// trigger or bind event handler\n\treturn fn ? this.bind( type, opts, fn ) : this.trigger( type );\n};\n\n// local refs (increase compression)\nvar $event = $.event, \n$special = $event.special,\n// configure the drag special event \ndrag = $special.drag = {\n\t\n\t// these are the default settings\n\tdefaults: {\n\t\twhich: 1, // mouse button pressed to start drag sequence\n\t\tdistance: 0, // distance dragged before dragstart\n\t\tnot: ':input', // selector to suppress dragging on target elements\n\t\thandle: null, // selector to match handle target elements\n\t\trelative: false, // true to use \"position\", false to use \"offset\"\n\t\tdrop: true, // false to suppress drop events, true or selector to allow\n\t\tclick: false // false to suppress click events after dragend (no proxy)\n\t},\n\t\n\t// the key name for stored drag data\n\tdatakey: \"dragdata\",\n\t\n\t// prevent bubbling for better performance\n\tnoBubble: true,\n\t\n\t// count bound related events\n\tadd: function( obj ){ \n\t\t// read the interaction data\n\t\tvar data = $.data( this, drag.datakey ),\n\t\t// read any passed options \n\t\topts = obj.data || {};\n\t\t// count another realted event\n\t\tdata.related += 1;\n\t\t// extend data options bound with this event\n\t\t// don't iterate \"opts\" in case it is a node \n\t\t$.each( drag.defaults, function( key, def ){\n\t\t\tif ( opts[ key ] !== undefined )\n\t\t\t\tdata[ key ] = opts[ key ];\n\t\t});\n\t},\n\t\n\t// forget unbound related events\n\tremove: function(){\n\t\t$.data( this, drag.datakey ).related -= 1;\n\t},\n\t\n\t// configure interaction, capture settings\n\tsetup: function(){\n\t\t// check for related events\n\t\tif ( $.data( this, drag.datakey ) ) \n\t\t\treturn;\n\t\t// initialize the drag data with copied defaults\n\t\tvar data = $.extend({ related:0 }, drag.defaults );\n\t\t// store the interaction data\n\t\t$.data( this, drag.datakey, data );\n\t\t// bind the mousedown event, which starts drag interactions\n\t\t$event.add( this, \"touchstart mousedown\", drag.init, data );\n\t\t// prevent image dragging in IE...\n\t\tif ( this.attachEvent ) \n\t\t\tthis.attachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\n\t// destroy configured interaction\n\tteardown: function(){\n\t\tvar data = $.data( this, drag.datakey ) || {};\n\t\t// check for related events\n\t\tif ( data.related ) \n\t\t\treturn;\n\t\t// remove the stored data\n\t\t$.removeData( this, drag.datakey );\n\t\t// remove the mousedown event\n\t\t$event.remove( this, \"touchstart mousedown\", drag.init );\n\t\t// enable text selection\n\t\tdrag.textselect( true ); \n\t\t// un-prevent image dragging in IE...\n\t\tif ( this.detachEvent ) \n\t\t\tthis.detachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\t\n\t// initialize the interaction\n\tinit: function( event ){ \n\t\t// sorry, only one touch at a time\n\t\tif ( drag.touched ) \n\t\t\treturn;\n\t\t// the drag/drop interaction data\n\t\tvar dd = event.data, results;\n\t\t// check the which directive\n\t\tif ( event.which != 0 && dd.which > 0 && event.which != dd.which ) \n\t\t\treturn; \n\t\t// check for suppressed selector\n\t\tif ( $( event.target ).is( dd.not ) ) \n\t\t\treturn;\n\t\t// check for handle selector\n\t\tif ( dd.handle && !$( event.target ).closest( dd.handle, event.currentTarget ).length ) \n\t\t\treturn;\n\n\t\tdrag.touched = event.type == 'touchstart' ? this : null;\n\t\tdd.propagates = 1;\n\t\tdd.mousedown = this;\n\t\tdd.interactions = [ drag.interaction( this, dd ) ];\n\t\tdd.target = event.target;\n\t\tdd.pageX = event.pageX;\n\t\tdd.pageY = event.pageY;\n\t\tdd.dragging = null;\n\t\t// handle draginit event... \n\t\tresults = drag.hijack( event, \"draginit\", dd );\n\t\t// early cancel\n\t\tif ( !dd.propagates )\n\t\t\treturn;\n\t\t// flatten the result set\n\t\tresults = drag.flatten( results );\n\t\t// insert new interaction elements\n\t\tif ( results && results.length ){\n\t\t\tdd.interactions = [];\n\t\t\t$.each( results, function(){\n\t\t\t\tdd.interactions.push( drag.interaction( this, dd ) );\n\t\t\t});\n\t\t}\n\t\t// remember how many interactions are propagating\n\t\tdd.propagates = dd.interactions.length;\n\t\t// locate and init the drop targets\n\t\tif ( dd.drop !== false && $special.drop ) \n\t\t\t$special.drop.handler( event, dd );\n\t\t// disable text selection\n\t\tdrag.textselect( false ); \n\t\t// bind additional events...\n\t\tif ( drag.touched )\n\t\t\t$event.add( drag.touched, \"touchmove touchend\", drag.handler, dd );\n\t\telse \n\t\t\t$event.add( document, \"mousemove mouseup\", drag.handler, dd );\n\t\t// helps prevent text selection or scrolling\n\t\tif ( !drag.touched || dd.live )\n\t\t\treturn false;\n\t},\t\n\t\n\t// returns an interaction object\n\tinteraction: function( elem, dd ){\n\t\tvar offset = $( elem )[ dd.relative ? \"position\" : \"offset\" ]() || { top:0, left:0 };\n\t\treturn {\n\t\t\tdrag: elem, \n\t\t\tcallback: new drag.callback(), \n\t\t\tdroppable: [],\n\t\t\toffset: offset\n\t\t};\n\t},\n\t\n\t// handle drag-releatd DOM events\n\thandler: function( event ){ \n\t\t// read the data before hijacking anything\n\t\tvar dd = event.data;\t\n\t\t// handle various events\n\t\tswitch ( event.type ){\n\t\t\t// mousemove, check distance, start dragging\n\t\t\tcase !dd.dragging && 'touchmove': \n\t\t\t\tevent.preventDefault();\n\t\t\tcase !dd.dragging && 'mousemove':\n\t\t\t\t// drag tolerance, x� + y� = distance�\n\t\t\t\tif ( Math.pow( event.pageX-dd.pageX, 2 ) + Math.pow( event.pageY-dd.pageY, 2 ) < Math.pow( dd.distance, 2 ) ) \n\t\t\t\t\tbreak; // distance tolerance not reached\n\t\t\t\tevent.target = dd.target; // force target from \"mousedown\" event (fix distance issue)\n\t\t\t\tdrag.hijack( event, \"dragstart\", dd ); // trigger \"dragstart\"\n\t\t\t\tif ( dd.propagates ) // \"dragstart\" not rejected\n\t\t\t\t\tdd.dragging = true; // activate interaction\n\t\t\t// mousemove, dragging\n\t\t\tcase 'touchmove':\n\t\t\t\tevent.preventDefault();\n\t\t\tcase 'mousemove':\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\t// trigger \"drag\"\t\t\n\t\t\t\t\tdrag.hijack( event, \"drag\", dd );\n\t\t\t\t\tif ( dd.propagates ){\n\t\t\t\t\t\t// manage drop events\n\t\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"dropstart\", \"dropend\"\t\t\t\t\t\t\t\n\t\t\t\t\t\tbreak; // \"drag\" not rejected, stop\t\t\n\t\t\t\t\t}\n\t\t\t\t\tevent.type = \"mouseup\"; // helps \"drop\" handler behave\n\t\t\t\t}\n\t\t\t// mouseup, stop dragging\n\t\t\tcase 'touchend': \n\t\t\tcase 'mouseup': \n\t\t\tdefault:\n\t\t\t\tif ( drag.touched )\n\t\t\t\t\t$event.remove( drag.touched, \"touchmove touchend\", drag.handler ); // remove touch events\n\t\t\t\telse \n\t\t\t\t\t$event.remove( document, \"mousemove mouseup\", drag.handler ); // remove page events\t\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"drop\"\n\t\t\t\t\tdrag.hijack( event, \"dragend\", dd ); // trigger \"dragend\"\t\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrag.hijack( event, \"dragclickonly\", dd ); // trigger \"dragclickonly\"\t\n\t\t\t\t}\n\t\t\t\tdrag.textselect( true ); // enable text selection\n\t\t\t\t// if suppressing click events...\n\t\t\t\tif ( dd.click === false && dd.dragging )\n\t\t\t\t\t$.data( dd.mousedown, \"suppress.click\", new Date().getTime() + 5 );\n\t\t\t\tdd.dragging = drag.touched = false; // deactivate element\t\n\t\t\t\tbreak;\n\t\t}\n\t},\n\t\t\n\t// re-use event object for custom events\n\thijack: function( event, type, dd, x, elem ){\n\t\t// not configured\n\t\tif ( !dd ) \n\t\t\treturn;\n\t\t// remember the original event and type\n\t\tvar orig = { event:event.originalEvent, type:event.type },\n\t\t// is the event drag related or drog related?\n\t\tmode = type.indexOf(\"drop\") ? \"drag\" : \"drop\",\n\t\t// iteration vars\n\t\tresult, i = x || 0, ia, $elems, callback,\n\t\tlen = !isNaN( x ) ? x : dd.interactions.length;\n\t\t// modify the event type\n\t\tevent.type = type;\n\t\t// remove the original event\n\t\tevent.originalEvent = null;\n\t\t// initialize the results\n\t\tdd.results = [];\n\t\t// handle each interacted element\n\t\tdo if ( ia = dd.interactions[ i ] ){\n\t\t\t// validate the interaction\n\t\t\tif ( type !== \"dragend\" && ia.cancelled )\n\t\t\t\tcontinue;\n\t\t\t// set the dragdrop properties on the event object\n\t\t\tcallback = drag.properties( event, dd, ia );\n\t\t\t// prepare for more results\n\t\t\tia.results = [];\n\t\t\t// handle each element\n\t\t\t$( elem || ia[ mode ] || dd.droppable ).each(function( p, subject ){\n\t\t\t\t// identify drag or drop targets individually\n\t\t\t\tcallback.target = subject;\n\t\t\t\t// force propagtion of the custom event\n\t\t\t\tevent.isPropagationStopped = function(){ return false; };\n\t\t\t\t// handle the event\t\n\t\t\t\tresult = subject ? $event.dispatch.call( subject, event, callback ) : null;\n\t\t\t\t// stop the drag interaction for this element\n\t\t\t\tif ( result === false ){\n\t\t\t\t\tif ( mode == \"drag\" ){\n\t\t\t\t\t\tia.cancelled = true;\n\t\t\t\t\t\tdd.propagates -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == \"drop\" ){\n\t\t\t\t\t\tia[ mode ][p] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// assign any dropinit elements\n\t\t\t\telse if ( type == \"dropinit\" )\n\t\t\t\t\tia.droppable.push( drag.element( result ) || subject );\n\t\t\t\t// accept a returned proxy element \n\t\t\t\tif ( type == \"dragstart\" )\n\t\t\t\t\tia.proxy = $( drag.element( result ) || ia.drag )[0];\n\t\t\t\t// remember this result\t\n\t\t\t\tia.results.push( result );\n\t\t\t\t// forget the event result, for recycling\n\t\t\t\tdelete event.result;\n\t\t\t\t// break on cancelled handler\n\t\t\t\tif ( type !== \"dropinit\" )\n\t\t\t\t\treturn result;\n\t\t\t});\t\n\t\t\t// flatten the results\t\n\t\t\tdd.results[ i ] = drag.flatten( ia.results );\t\n\t\t\t// accept a set of valid drop targets\n\t\t\tif ( type == \"dropinit\" )\n\t\t\t\tia.droppable = drag.flatten( ia.droppable );\n\t\t\t// locate drop targets\n\t\t\tif ( type == \"dragstart\" && !ia.cancelled )\n\t\t\t\tcallback.update(); \n\t\t}\n\t\twhile ( ++i < len )\n\t\t// restore the original event & type\n\t\tevent.type = orig.type;\n\t\tevent.originalEvent = orig.event;\n\t\t// return all handler results\n\t\treturn drag.flatten( dd.results );\n\t},\n\t\t\n\t// extend the callback object with drag/drop properties...\n\tproperties: function( event, dd, ia ){\t\t\n\t\tvar obj = ia.callback;\n\t\t// elements\n\t\tobj.drag = ia.drag;\n\t\tobj.proxy = ia.proxy || ia.drag;\n\t\t// starting mouse position\n\t\tobj.startX = dd.pageX;\n\t\tobj.startY = dd.pageY;\n\t\t// current distance dragged\n\t\tobj.deltaX = event.pageX - dd.pageX;\n\t\tobj.deltaY = event.pageY - dd.pageY;\n\t\t// original element position\n\t\tobj.originalX = ia.offset.left;\n\t\tobj.originalY = ia.offset.top;\n\t\t// adjusted element position\n\t\tobj.offsetX = obj.originalX + obj.deltaX; \n\t\tobj.offsetY = obj.originalY + obj.deltaY;\n\t\t// assign the drop targets information\n\t\tobj.drop = drag.flatten( ( ia.drop || [] ).slice() );\n\t\tobj.available = drag.flatten( ( ia.droppable || [] ).slice() );\n\t\treturn obj;\t\n\t},\n\t\n\t// determine is the argument is an element or jquery instance\n\telement: function( arg ){\n\t\tif ( arg && ( arg.jquery || arg.nodeType == 1 ) )\n\t\t\treturn arg;\n\t},\n\t\n\t// flatten nested jquery objects and arrays into a single dimension array\n\tflatten: function( arr ){\n\t\treturn $.map( arr, function( member ){\n\t\t\treturn member && member.jquery ? $.makeArray( member ) : \n\t\t\t\tmember && member.length ? drag.flatten( member ) : member;\n\t\t});\n\t},\n\t\n\t// toggles text selection attributes ON (true) or OFF (false)\n\ttextselect: function( bool ){ \n\t\t$( document )[ bool ? \"unbind\" : \"bind\" ](\"selectstart\", drag.dontstart )\n\t\t\t.css(\"MozUserSelect\", bool ? \"\" : \"none\" );\n\t\t// .attr(\"unselectable\", bool ? \"off\" : \"on\" )\n\t\tdocument.unselectable = bool ? \"off\" : \"on\"; \n\t},\n\t\n\t// suppress \"selectstart\" and \"ondragstart\" events\n\tdontstart: function(){ \n\t\treturn false; \n\t},\n\t\n\t// a callback instance contructor\n\tcallback: function(){}\n\t\n};\n\n// callback methods\ndrag.callback.prototype = {\n\tupdate: function(){\n\t\tif ( $special.drop && this.available.length )\n\t\t\t$.each( this.available, function( i ){\n\t\t\t\t$special.drop.locate( this, i );\n\t\t\t});\n\t}\n};\n\n// patch $.event.$dispatch to allow suppressing clicks\nvar $dispatch = $event.dispatch;\n$event.dispatch = function( event ){\n\tif ( $.data( this, \"suppress.\"+ event.type ) - new Date().getTime() > 0 ){\n\t\t$.removeData( this, \"suppress.\"+ event.type );\n\t\treturn;\n\t}\n\treturn $dispatch.apply( this, arguments );\n};\n\n// event fix hooks for touch events...\nvar touchHooks = \n$event.fixHooks.touchstart = \n$event.fixHooks.touchmove = \n$event.fixHooks.touchend =\n$event.fixHooks.touchcancel = {\n\tprops: \"clientX clientY pageX pageY screenX screenY\".split( \" \" ),\n\tfilter: function( event, orig ) {\n\t\tif ( orig ){\n\t\t\tvar touched = ( orig.touches && orig.touches[0] )\n\t\t\t\t|| ( orig.changedTouches && orig.changedTouches[0] )\n\t\t\t\t|| null; \n\t\t\t// iOS webkit: touchstart, touchmove, touchend\n\t\t\tif ( touched ) \n\t\t\t\t$.each( touchHooks.props, function( i, prop ){\n\t\t\t\t\tevent[ prop ] = touched[ prop ];\n\t\t\t\t});\n\t\t}\n\t\treturn event;\n\t}\n};\n\n// share the same special event configuration with related events...\n$special.draginit = $special.dragstart = $special.dragend = drag;\n\n})( jQuery );\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if ( true ) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n\n getLineHeight: function(elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(jQuery) {/*!\n * jQuery Form Plugin\n * version: 3.45.0-2013.10.17\n * Requires jQuery v1.5 or later\n * Copyright (c) 2013 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n/*global ActiveXObject */\n;(function($) {\n\"use strict\";\n\n/*\n Usage Note:\n -----------\n Do not use both ajaxSubmit and ajaxForm on the same form. These\n functions are mutually exclusive. Use ajaxSubmit if you want\n to bind your own submit handler to the form. For example,\n\n $(document).ready(function() {\n $('#myForm').on('submit', function(e) {\n e.preventDefault(); // <-- important\n $(this).ajaxSubmit({\n target: '#output'\n });\n });\n });\n\n Use ajaxForm when you want the plugin to manage all the event binding\n for you. For example,\n\n $(document).ready(function() {\n $('#myForm').ajaxForm({\n target: '#output'\n });\n });\n\n You can also use ajaxForm with delegation (requires jQuery v1.7+), so the\n form does not have to exist when you invoke ajaxForm:\n\n $('#myForm').ajaxForm({\n delegation: true,\n target: '#output'\n });\n\n When using ajaxForm, the ajaxSubmit function will be invoked for you\n at the appropriate time.\n*/\n\n/**\n * Feature detection\n */\nvar feature = {};\nfeature.fileapi = $(\"\").get(0).files !== undefined;\nfeature.formdata = window.FormData !== undefined;\n\nvar hasProp = !!$.fn.prop;\n\n// attr2 uses prop when it can but checks the return type for\n// an expected string. this accounts for the case where a form \n// contains inputs with names like \"action\" or \"method\"; in those\n// cases \"prop\" returns the element\n$.fn.attr2 = function() {\n if ( ! hasProp )\n return this.attr.apply(this, arguments);\n var val = this.prop.apply(this, arguments);\n if ( ( val && val.jquery ) || typeof val === 'string' )\n return val;\n return this.attr.apply(this, arguments);\n};\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n /*jshint scripturl:true */\n\n // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n if (!this.length) {\n log('ajaxSubmit: skipping submit process - no element selected');\n return this;\n }\n\n var method, action, url, $form = this;\n\n if (typeof options == 'function') {\n options = { success: options };\n }\n else if ( options === undefined ) {\n options = {};\n }\n\n method = options.type || this.attr2('method');\n action = options.url || this.attr2('action');\n\n url = (typeof action === 'string') ? $.trim(action) : '';\n url = url || window.location.href || '';\n if (url) {\n // clean url (don't include hash vaue)\n url = (url.match(/^([^#]+)/)||[])[1];\n }\n\n options = $.extend(true, {\n url: url,\n success: $.ajaxSettings.success,\n type: method || $.ajaxSettings.type,\n iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n }, options);\n\n // hook for manipulating the form data before it is extracted;\n // convenient for use with rich editors like tinyMCE or FCKEditor\n var veto = {};\n this.trigger('form-pre-serialize', [this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n return this;\n }\n\n // provide opportunity to alter form data before it is serialized\n if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSerialize callback');\n return this;\n }\n\n var traditional = options.traditional;\n if ( traditional === undefined ) {\n traditional = $.ajaxSettings.traditional;\n }\n\n var elements = [];\n var qx, a = this.formToArray(options.semantic, elements);\n if (options.data) {\n options.extraData = options.data;\n qx = $.param(options.data, traditional);\n }\n\n // give pre-submit callback an opportunity to abort the submit\n if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSubmit callback');\n return this;\n }\n\n // fire vetoable 'validate' event\n this.trigger('form-submit-validate', [a, this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n return this;\n }\n\n var q = $.param(a, traditional);\n if (qx) {\n q = ( q ? (q + '&' + qx) : qx );\n }\n if (options.type.toUpperCase() == 'GET') {\n options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n options.data = null; // data is null for 'get'\n }\n else {\n options.data = q; // data is the query string for 'post'\n }\n\n var callbacks = [];\n if (options.resetForm) {\n callbacks.push(function() { $form.resetForm(); });\n }\n if (options.clearForm) {\n callbacks.push(function() { $form.clearForm(options.includeHidden); });\n }\n\n // perform a load on the target only if dataType is not provided\n if (!options.dataType && options.target) {\n var oldSuccess = options.success || function(){};\n callbacks.push(function(data) {\n var fn = options.replaceTarget ? 'replaceWith' : 'html';\n $(options.target)[fn](data).each(oldSuccess, arguments);\n });\n }\n else if (options.success) {\n callbacks.push(options.success);\n }\n\n options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n var context = options.context || this ; // jQuery 1.4+ supports scope context\n for (var i=0, max=callbacks.length; i < max; i++) {\n callbacks[i].apply(context, [data, status, xhr || $form, $form]);\n }\n };\n\n if (options.error) {\n var oldError = options.error;\n options.error = function(xhr, status, error) {\n var context = options.context || this;\n oldError.apply(context, [xhr, status, error, $form]);\n };\n }\n\n if (options.complete) {\n var oldComplete = options.complete;\n options.complete = function(xhr, status) {\n var context = options.context || this;\n oldComplete.apply(context, [xhr, status, $form]);\n };\n }\n\n // are there files to upload?\n\n // [value] (issue #113), also see comment:\n // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219\n var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });\n\n var hasFileInputs = fileInputs.length > 0;\n var mp = 'multipart/form-data';\n var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n var fileAPI = feature.fileapi && feature.formdata;\n log(\"fileAPI :\" + fileAPI);\n var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;\n\n var jqxhr;\n\n // options.iframe allows user to force iframe mode\n // 06-NOV-09: now defaulting to iframe mode if file input is detected\n if (options.iframe !== false && (options.iframe || shouldUseFrame)) {\n // hack to fix Safari hang (thanks to Tim Molendijk for this)\n // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n if (options.closeKeepAlive) {\n $.get(options.closeKeepAlive, function() {\n jqxhr = fileUploadIframe(a);\n });\n }\n else {\n jqxhr = fileUploadIframe(a);\n }\n }\n else if ((hasFileInputs || multipart) && fileAPI) {\n jqxhr = fileUploadXhr(a);\n }\n else {\n jqxhr = $.ajax(options);\n }\n\n $form.removeData('jqxhr').data('jqxhr', jqxhr);\n\n // clear element array\n for (var k=0; k < elements.length; k++)\n elements[k] = null;\n\n // fire 'notify' event\n this.trigger('form-submit-notify', [this, options]);\n return this;\n\n // utility fn for deep serialization\n function deepSerialize(extraData){\n var serialized = $.param(extraData, options.traditional).split('&');\n var len = serialized.length;\n var result = [];\n var i, part;\n for (i=0; i < len; i++) {\n // #252; undo param space replacement\n serialized[i] = serialized[i].replace(/\\+/g,' ');\n part = serialized[i].split('=');\n // #278; use array instead of object storage, favoring array serializations\n result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);\n }\n return result;\n }\n\n // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)\n function fileUploadXhr(a) {\n var formdata = new FormData();\n\n for (var i=0; i < a.length; i++) {\n formdata.append(a[i].name, a[i].value);\n }\n\n if (options.extraData) {\n var serializedData = deepSerialize(options.extraData);\n for (i=0; i < serializedData.length; i++)\n if (serializedData[i])\n formdata.append(serializedData[i][0], serializedData[i][1]);\n }\n\n options.data = null;\n\n var s = $.extend(true, {}, $.ajaxSettings, options, {\n contentType: false,\n processData: false,\n cache: false,\n type: method || 'POST'\n });\n\n if (options.uploadProgress) {\n // workaround because jqXHR does not expose upload property\n s.xhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n options.uploadProgress(event, position, total, percent);\n }, false);\n }\n return xhr;\n };\n }\n\n s.data = null;\n var beforeSend = s.beforeSend;\n s.beforeSend = function(xhr, o) {\n //Send FormData() provided by user\n if (options.formData)\n o.data = options.formData;\n else\n o.data = formdata;\n if(beforeSend)\n beforeSend.call(this, xhr, o);\n };\n return $.ajax(s);\n }\n\n // private function for handling file uploads (hat tip to YAHOO!)\n function fileUploadIframe(a) {\n var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n var deferred = $.Deferred();\n\n // #341\n deferred.abort = function(status) {\n xhr.abort(status);\n };\n\n if (a) {\n // ensure that every serialized input is still enabled\n for (i=0; i < elements.length; i++) {\n el = $(elements[i]);\n if ( hasProp )\n el.prop('disabled', false);\n else\n el.removeAttr('disabled');\n }\n }\n\n s = $.extend(true, {}, $.ajaxSettings, options);\n s.context = s.context || s;\n id = 'jqFormIO' + (new Date().getTime());\n if (s.iframeTarget) {\n $io = $(s.iframeTarget);\n n = $io.attr2('name');\n if (!n)\n $io.attr2('name', id);\n else\n id = n;\n }\n else {\n $io = $('',\n header_template = '' + '' + '',\n frame_height = 350,\n frame_width = 600,\n class_names = \"ui-modal chat-modal\";\n\n // deletes the chat modal if already present and create one\n if ($(\".chat-modal\").length > 0) {\n $(\".chat-modal\").remove();\n }\n // creates a modal\n GenericNavView.modal = new Modal.View({\n body: iframe_template,\n height: frame_height,\n width: frame_width,\n closing_events: true,\n title_separator: false,\n cls: class_names\n });\n\n // shows modal\n GenericNavView.modal.show();\n $el_chat_modal_header = $(\".chat-modal .modal-header\");\n $el_chat_modal_body = $(\".chat-modal .modal-body\");\n // adjusts the css of bootstrap modal for chat\n $el_chat_modal_header.addClass(\"modal-header-body\");\n $el_chat_modal_body.addClass(\"modal-header-body\");\n $el_chat_modal_header.find(\"h4\").remove();\n $el_chat_modal_header.removeAttr(\"min-height padding border\");\n $el_chat_modal_header.append(header_template);\n // click event of the close button for chat\n $(\".close-modal\").click(function (e) {\n $(\".chat-modal\").css(\"display\", \"none\");\n });\n // click event of expand and compress icon\n $(\".expand-compress-modal\").click(function (e) {\n if ($(\".expand-compress-modal\").hasClass(\"fa-expand\")) {\n $(\".chat-modal .modal-dialog\").width(\"1000px\");\n $(\".chat-modal .modal-body\").height(\"575px\");\n $(\".expand-compress-modal\").removeClass(\"fa-expand\").addClass(\"fa-compress\");\n $(\".expand-compress-modal\").attr(\"title\", \"Minimize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"96.2%\");\n } else {\n $(\".chat-modal .modal-dialog\").width(frame_width + \"px\");\n $(\".chat-modal .modal-body\").height(frame_height + \"px\");\n $(\".expand-compress-modal\").removeClass(\"fa-compress\").addClass(\"fa-expand\");\n $(\".expand-compress-modal\").attr(\"title\", \"Maximize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"93.2%\");\n }\n });\n return this;\n },\n\n /**renders the chat icon as a nav item*/\n render: function render() {\n var self = this,\n navItem = {};\n navItem = {\n id: \"show-chat-online\",\n icon: \"fa-comment-o\",\n tooltip: \"Chat online\",\n visible: false,\n onclick: self.makeModalIframe\n };\n return navItem;\n }\n });\n\n return {\n GenericNavView: GenericNavView\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(0)))\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Backbone, _, $) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/** Frame manager uses the ui-frames to create the scratch book masthead icon and functionality **/\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(61)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Frames) {\n return Backbone.View.extend({\n initialize: function initialize(options) {\n var self = this;\n options = options || {};\n this.frames = new Frames.View({ visible: false });\n this.setElement(this.frames.$el);\n this.buttonActive = options.collection.add({\n id: \"enable-scratchbook\",\n icon: \"fa-th\",\n tooltip: _l(\"Enable/Disable Scratchbook\"),\n onclick: function onclick() {\n self.active = !self.active;\n self.buttonActive.set({\n toggle: self.active,\n show_note: self.active,\n note_cls: self.active && \"fa fa-check\"\n });\n !self.active && self.frames.hide();\n },\n onbeforeunload: function onbeforeunload() {\n if (self.frames.length() > 0) {\n return \"You opened \" + self.frames.length() + \" frame(s) which will be lost.\";\n }\n }\n });\n this.buttonLoad = options.collection.add({\n id: \"show-scratchbook\",\n icon: \"fa-eye\",\n tooltip: _l(\"Show/Hide Scratchbook\"),\n show_note: true,\n visible: false,\n onclick: function onclick(e) {\n self.frames.visible ? self.frames.hide() : self.frames.show();\n }\n });\n this.frames.on(\"add remove\", function () {\n this.visible && this.length() == 0 && this.hide();\n self.buttonLoad.set({\n note: this.length(),\n visible: this.length() > 0\n });\n }).on(\"show hide \", function () {\n self.buttonLoad.set({\n toggle: this.visible,\n icon: this.visible && \"fa-eye\" || \"fa-eye-slash\"\n });\n });\n this.history_cache = {};\n },\n\n /** Add a dataset to the frames */\n addDataset: function addDataset(dataset_id) {\n var self = this;\n var current_dataset = null;\n if (Galaxy && Galaxy.currHistoryPanel) {\n var history_id = Galaxy.currHistoryPanel.collection.historyId;\n this.history_cache[history_id] = {\n name: Galaxy.currHistoryPanel.model.get(\"name\"),\n dataset_ids: []\n };\n Galaxy.currHistoryPanel.collection.each(function (model) {\n !model.get(\"deleted\") && model.get(\"visible\") && self.history_cache[history_id].dataset_ids.push(model.get(\"id\"));\n });\n }\n var _findDataset = function _findDataset(dataset, offset) {\n if (dataset) {\n var history_details = self.history_cache[dataset.get(\"history_id\")];\n if (history_details && history_details.dataset_ids) {\n var dataset_list = history_details.dataset_ids;\n var pos = dataset_list.indexOf(dataset.get(\"id\"));\n if (pos !== -1 && pos + offset >= 0 && pos + offset < dataset_list.length) {\n return dataset_list[pos + offset];\n }\n }\n }\n };\n var _loadDatasetOffset = function _loadDatasetOffset(dataset, offset, frame) {\n var new_dataset_id = _findDataset(dataset, offset);\n if (new_dataset_id) {\n self._loadDataset(new_dataset_id, function (new_dataset, config) {\n current_dataset = new_dataset;\n frame.model.set(config);\n });\n } else {\n frame.model.trigger(\"change\");\n }\n };\n this._loadDataset(dataset_id, function (dataset, config) {\n current_dataset = dataset;\n self.add(_.extend({\n menu: [{\n icon: \"fa fa-chevron-circle-left\",\n tooltip: \"Previous in History\",\n onclick: function onclick(frame) {\n _loadDatasetOffset(current_dataset, -1, frame);\n },\n disabled: function disabled() {\n return !_findDataset(current_dataset, -1);\n }\n }, {\n icon: \"fa fa-chevron-circle-right\",\n tooltip: \"Next in History\",\n onclick: function onclick(frame) {\n _loadDatasetOffset(current_dataset, 1, frame);\n },\n disabled: function disabled() {\n return !_findDataset(current_dataset, 1);\n }\n }]\n }, config));\n });\n },\n\n _loadDataset: function _loadDataset(dataset_id, callback) {\n var self = this;\n __webpack_require__.e/* require */(1).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(59)]; (function (DATA) {\n var dataset = new DATA.Dataset({ id: dataset_id });\n $.when(dataset.fetch()).then(function () {\n var is_tabular = _.find([\"tabular\", \"interval\"], function (data_type) {\n return dataset.get(\"data_type\").indexOf(data_type) !== -1;\n });\n var title = dataset.get(\"name\");\n var history_details = self.history_cache[dataset.get(\"history_id\")];\n if (history_details) {\n title = history_details.name + \": \" + title;\n }\n callback(dataset, is_tabular ? {\n title: title,\n url: null,\n content: DATA.createTabularDatasetChunkedView({\n model: new DATA.TabularDataset(dataset.toJSON()),\n embedded: true,\n height: \"100%\"\n }).$el\n } : {\n title: title,\n url: Galaxy.root + \"datasets/\" + dataset_id + \"/display/?preview=True\",\n content: null\n });\n });\n }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe);\n },\n\n /** Add a trackster visualization to the frames. */\n addTrackster: function addTrackster(viz_id) {\n var self = this;\n __webpack_require__.e/* require */(0).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(160), __webpack_require__(161)]; (function (visualization, trackster) {\n var viz = new visualization.Visualization({ id: viz_id });\n $.when(viz.fetch()).then(function () {\n var ui = new trackster.TracksterUI(Galaxy.root);\n\n // Construct frame config based on dataset's type.\n var frame_config = {\n title: viz.get(\"name\"),\n type: \"other\",\n content: function content(parent_elt) {\n // Create view config.\n var view_config = {\n container: parent_elt,\n name: viz.get(\"title\"),\n id: viz.id,\n // FIXME: this will not work with custom builds b/c the dbkey needed to be encoded.\n dbkey: viz.get(\"dbkey\"),\n stand_alone: false\n },\n latest_revision = viz.get(\"latest_revision\"),\n drawables = latest_revision.config.view.drawables;\n\n // Set up datasets in drawables.\n _.each(drawables, function (d) {\n d.dataset = {\n hda_ldda: d.hda_ldda,\n id: d.dataset_id\n };\n });\n view = ui.create_visualization(view_config, latest_revision.config.viewport, latest_revision.config.view.drawables, latest_revision.config.bookmarks, false);\n }\n };\n self.add(frame_config);\n });\n }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe);\n },\n\n /** Add and display a new frame/window based on options. */\n add: function add(options) {\n if (options.target == \"_blank\") {\n window.open(options.url);\n } else if (options.target == \"_top\" || options.target == \"_parent\" || options.target == \"_self\") {\n window.location = options.url;\n } else if (!this.active || options.noscratchbook) {\n var $galaxy_main = $(window.parent.document).find(\"#galaxy_main\");\n if (options.target == \"galaxy_main\" || options.target == \"center\") {\n if ($galaxy_main.length === 0) {\n window.location = options.url + (options.url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"use_panels=True\";\n } else {\n $galaxy_main.attr(\"src\", options.url);\n }\n } else window.location = options.url;\n } else {\n this.frames.add(options);\n }\n }\n });\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)))\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Backbone, _, $) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class View to display a user's disk/storage usage\n * either as a progress bar representing the percentage of a quota used\n * or a simple text element displaying the human readable size used.\n * @name UserQuotaMeter\n * @augments Backbone.View\n */\n var UserQuotaMeter = Backbone.View.extend(baseMVC.LoggableMixin).extend(\n /** @lends UserQuotaMeter.prototype */{\n _logNamespace: logNamespace,\n\n /** Defaults for optional settings passed to initialize */\n options: {\n warnAtPercent: 85,\n errorAtPercent: 100\n },\n\n /** Set up, accept options, and bind events */\n initialize: function initialize(options) {\n this.log(this + \".initialize:\", options);\n _.extend(this.options, options);\n\n //this.bind( 'all', function( event, data ){ this.log( this + ' event:', event, data ); }, this );\n this.listenTo(this.model, \"change:quota_percent change:total_disk_usage\", this.render);\n },\n\n /** Re-load user model data from the api */\n update: function update(options) {\n this.log(this + \" updating user data...\", options);\n this.model.loadFromApi(this.model.get(\"id\"), options);\n return this;\n },\n\n /** Is the user over their quota (if there is one)?\n * @returns {Boolean} true if over quota, false if no quota or under quota\n */\n isOverQuota: function isOverQuota() {\n return this.model.get(\"quota_percent\") !== null && this.model.get(\"quota_percent\") >= this.options.errorAtPercent;\n },\n\n /** Render the meter when they have an applicable quota. Will render as a progress bar\n * with their percentage of that quota in text over the bar.\n * @fires quota:over when user is over quota (>= this.errorAtPercent)\n * @fires quota:under when user is under quota\n * @fires quota:under:approaching when user is >= this.warnAtPercent of their quota\n * @fires quota:under:ok when user is below this.warnAtPercent\n * @returns {jQuery} the rendered meter\n */\n _render_quota: function _render_quota() {\n var modelJson = this.model.toJSON(),\n\n //prevPercent = this.model.previous( 'quota_percent' ),\n percent = modelJson.quota_percent,\n\n //meter = $( UserQuotaMeter.templates.quota( modelJson ) );\n $meter = $(this._templateQuotaMeter(modelJson)),\n $bar = $meter.find(\".progress-bar\");\n //this.log( this + '.rendering quota, percent:', percent, 'meter:', meter );\n\n // OVER QUOTA: color the quota bar and show the quota error message\n if (this.isOverQuota()) {\n //this.log( '\\t over quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-danger\");\n $meter.find(\".quota-meter-text\").css(\"color\", \"white\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:over\", modelJson);\n\n // APPROACHING QUOTA: color the quota bar\n } else if (percent >= this.options.warnAtPercent) {\n //this.log( '\\t approaching quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-warning\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:approaching\", modelJson);\n\n // otherwise, hide/don't use the msg box\n } else {\n $bar.attr(\"class\", \"progress-bar progress-bar-success\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:ok\", modelJson);\n }\n return $meter;\n },\n\n /** Render the meter when the user has NO applicable quota. Will render as text\n * showing the human readable sum storage their data is using.\n * @returns {jQuery} the rendered text\n */\n _render_usage: function _render_usage() {\n //var usage = $( UserQuotaMeter.templates.usage( this.model.toJSON() ) );\n var usage = $(this._templateUsage(this.model.toJSON()));\n this.log(this + \".rendering usage:\", usage);\n return usage;\n },\n\n /** Render either the quota percentage meter or the human readable disk usage\n * depending on whether the user model has quota info (quota_percent === null -> no quota)\n * @returns {Object} this UserQuotaMeter\n */\n render: function render() {\n //this.log( this + '.rendering' );\n var meterHtml = null;\n\n // no quota on server ('quota_percent' === null (can be valid at 0)), show usage instead\n this.log(this + \".model.quota_percent:\", this.model.get(\"quota_percent\"));\n if (this.model.get(\"quota_percent\") === null || this.model.get(\"quota_percent\") === undefined) {\n meterHtml = this._render_usage();\n\n // otherwise, render percent of quota (and warning, error)\n } else {\n meterHtml = this._render_quota();\n //TODO: add the original text for unregistered quotas\n //tooltip = \"Your disk quota is %s. You can increase your quota by registering a Galaxy account.\"\n }\n\n this.$el.html(meterHtml);\n this.$el.find(\".quota-meter-text\").tooltip();\n return this;\n },\n\n _templateQuotaMeter: function _templateQuotaMeter(data) {\n return ['
', '
', '
' : \">\", _l(\"Using\"), \" \", data.quota_percent, \"%\", \"
\", \"
\"].join(\"\");\n },\n\n _templateUsage: function _templateUsage(data) {\n return ['
', '
', data.nice_total_disk_usage ? _l(\"Using \") + data.nice_total_disk_usage : \"\", \"
\", \"
\"].join(\"\");\n },\n\n toString: function toString() {\n return \"UserQuotaMeter(\" + this.model + \")\";\n }\n });\n\n //==============================================================================\n return {\n UserQuotaMeter: UserQuotaMeter\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(2), __webpack_require__(0)))\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// libs.bundled.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t5: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".bundled.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 103);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 433a47d64a036c4a24ef","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <= 35-45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data, camelKey;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0-4.3, Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE9\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://code.google.com/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <= 35-45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"
\"\n )\n });\n modal.show({ backdrop: true });\n }\n\n // ============================================================================\n return {\n Modal: Modal,\n hide_modal: hide_modal,\n show_modal: show_modal,\n show_message: show_message,\n show_in_overlay: show_in_overlay\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/modal.js","/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\ndefine([\"libs/bootstrap-tour\"], function(BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = `

Galaxy Tours

\n

This page presents a list of interactive tours available on this Galaxy server.\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).

\n\n
\n <% _.each(tourtagorder, function(tag) { %>\n \n <% }); %>\n
\n\n<% _.each(tourtagorder, function(tourtagkey) { %>\n
\" style=\"display: block;\">\n <% var tourtag = tourtags[tourtagkey]; %>\n

\n <%- tourtag.name %>\n

\n \n
\n<% }); %>`;\n\n var tour_opts = {\n storage: window.sessionStorage,\n onEnd: function() {\n sessionStorage.removeItem(\"activeGalaxyTour\");\n },\n delay: 150, // Attempts to make it look natural\n orphan: true\n };\n\n var hooked_tour_from_data = function(data) {\n _.each(data.steps, function(step) {\n if (step.preclick) {\n step.onShow = function() {\n _.each(step.preclick, function(preclick) {\n // TODO: click delay between clicks\n $(preclick).click();\n });\n };\n }\n if (step.postclick) {\n step.onHide = function() {\n _.each(step.postclick, function(postclick) {\n // TODO: click delay between clicks\n $(postclick).click();\n });\n };\n }\n if (step.textinsert) {\n // Have to manually trigger a change here, for some\n // elements which have additional logic, like the\n // upload input box\n step.onShown = function() {\n $(step.element)\n .val(step.textinsert)\n .trigger(\"change\");\n };\n }\n });\n return data;\n };\n\n var TourItem = Backbone.Model.extend({\n urlRoot: gxy_root + \"api/tours\"\n });\n\n var Tours = Backbone.Collection.extend({\n url: gxy_root + \"api/tours\",\n model: TourItem\n });\n\n var giveTour = function(tour_id) {\n var url = gxy_root + \"api/tours/\" + tour_id;\n $.getJSON(url, function(data) {\n // Set hooks for additional click and data entry actions.\n var tourdata = hooked_tour_from_data(data);\n sessionStorage.setItem(\"activeGalaxyTour\", JSON.stringify(data));\n // Store tour steps in sessionStorage to easily persist w/o hackery.\n var tour = new Tour(\n _.extend(\n {\n steps: tourdata.steps\n },\n tour_opts\n )\n );\n // Always clean restart, since this is a new, explicit giveTour execution.\n tour.init();\n tour.goTo(0);\n tour.restart();\n });\n };\n var ToursView = Backbone.View.extend({\n title: \"Tours\",\n // initialize\n initialize: function() {\n var self = this;\n this.setElement(\"
\");\n this.model = new Tours();\n this.model.fetch({\n success: function() {\n self.render();\n },\n error: function() {\n // Do something.\n console.error(\"Failed to fetch tours.\");\n }\n });\n },\n\n render: function() {\n var tpl = _.template(tourpage_template);\n\n var tourtags = {};\n _.each(this.model.models, function(tour) {\n if (tour.attributes.tags === null) {\n if (tourtags.Untagged === undefined) {\n tourtags.Untagged = { name: \"Untagged\", tours: [] };\n }\n tourtags.Untagged.tours.push(tour);\n } else {\n _.each(tour.attributes.tags, function(tag) {\n tag = tag.charAt(0).toUpperCase() + tag.slice(1);\n if (tourtags[tag] === undefined) {\n tourtags[tag] = { name: tag, tours: [] };\n }\n tourtags[tag].tours.push(tour);\n });\n }\n });\n var tourtagorder = Object.keys(tourtags).sort();\n\n this.$el\n .html(\n tpl({\n tours: this.model.models,\n tourtags: tourtags,\n tourtagorder: tourtagorder\n })\n )\n .on(\"click\", \".tourItem\", function(e) {\n e.preventDefault();\n giveTour($(this).data(\"tour.id\"));\n })\n .on(\"click\", \".tag-selector-button\", function(e) {\n var elem = $(e.target);\n var display = \"block\";\n var tag = elem.attr(\"tag-selector-button\");\n\n elem.toggleClass(\"btn-primary\");\n elem.toggleClass(\"btn-secondary\");\n\n if (elem.hasClass(\"btn-secondary\")) {\n display = \"none\";\n }\n $(\"div[tag='\" + tag + \"']\").css({ display: display });\n });\n }\n });\n\n return {\n ToursView: ToursView,\n hooked_tour_from_data: hooked_tour_from_data,\n tour_opts: tour_opts,\n giveTour: giveTour\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/tours.js","define([], function() {\n //==============================================================================\n var LOGGING_FNS = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"metric\"];\n /** adds logging functions to an obj.prototype (or obj directly) adding a namespace for filtering\n * @param {Object} obj\n * @param {String} namespace\n */\n function addLogging(obj, namespace) {\n var addTo = obj.prototype !== undefined ? obj.prototype : obj;\n if (namespace !== undefined) {\n addTo._logNamespace = namespace;\n }\n //yagni?: without this, may not capture Galaxy.config.debug and add Galaxy.logger properly\n // if( window.Galaxy && window.Galaxy.config && window.Galaxy.config.debug ){\n // addTo.logger = window.Galaxy.logger;\n // }\n\n // give the object each\n LOGGING_FNS.forEach(function(logFn) {\n addTo[logFn] = function() {\n if (!this.logger) {\n return undefined;\n }\n if (this.logger.emit) {\n return this.logger.emit(\n logFn,\n this._logNamespace,\n arguments\n );\n }\n if (this.logger[logFn]) {\n //TODO:! there has to be a way to get the lineno/file into this\n // http://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n // http://www.paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/\n return this.logger[logFn].apply(this.logger, arguments);\n }\n return undefined;\n };\n });\n return obj;\n }\n\n //==============================================================================\n return addLogging;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/utils/add-logging.js","define(\n [\"libs/underscore\", \"libs/backbone\", \"mvc/base-mvc\", \"utils/localization\"],\n function(_, Backbone, baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class Model for a Galaxy user (including anonymous users).\n * @name User\n */\n var User = Backbone.Model.extend(baseMVC.LoggableMixin).extend(\n /** @lends User.prototype */ {\n _logNamespace: logNamespace,\n\n /** API location for this resource */\n urlRoot: function() {\n return Galaxy.root + \"api/users\";\n },\n\n /** Model defaults\n * Note: don't check for anon-users with the username as the default is '(anonymous user)'\n * a safer method is if( !user.get( 'email' ) ) -> anon user\n */\n defaults: /** @lends User.prototype */ {\n id: null,\n username: \"(\" + _l(\"anonymous user\") + \")\",\n email: \"\",\n total_disk_usage: 0,\n nice_total_disk_usage: \"\",\n quota_percent: null,\n is_admin: false\n },\n\n /** Set up and bind events\n * @param {Object} data Initial model data.\n */\n initialize: function(data) {\n this.log(\"User.initialize:\", data);\n\n this.on(\"loaded\", function(model, resp) {\n this.log(this + \" has loaded:\", model, resp);\n });\n this.on(\"change\", function(model, data) {\n this.log(this + \" has changed:\", model, data.changes);\n });\n },\n\n isAnonymous: function() {\n return !this.get(\"email\");\n },\n\n isAdmin: function() {\n return this.get(\"is_admin\");\n },\n\n /** Load a user with the API using an id.\n * If getting an anonymous user or no access to a user id, pass the User.CURRENT_ID_STR\n * (e.g. 'current') and the API will return the current transaction's user data.\n * @param {String} idOrCurrent encoded user id or the User.CURRENT_ID_STR\n * @param {Object} options hash to pass to Backbone.Model.fetch. Can contain success, error fns.\n * @fires loaded when the model has been loaded from the API, passing the newModel and AJAX response.\n */\n loadFromApi: function(idOrCurrent, options) {\n idOrCurrent = idOrCurrent || User.CURRENT_ID_STR;\n\n options = options || {};\n var model = this,\n userFn = options.success;\n\n /** @ignore */\n options.success = function(newModel, response) {\n model.trigger(\"loaded\", newModel, response);\n if (userFn) {\n userFn(newModel, response);\n }\n };\n\n // requests for the current user must have a sep. constructed url (fetch don't work, ma)\n if (idOrCurrent === User.CURRENT_ID_STR) {\n options.url = this.urlRoot + \"/\" + User.CURRENT_ID_STR;\n }\n return Backbone.Model.prototype.fetch.call(this, options);\n },\n\n /** Clears all data from the sessionStorage.\n */\n clearSessionStorage: function() {\n for (var key in sessionStorage) {\n //TODO: store these under the user key so we don't have to do this\n // currently only history\n if (key.indexOf(\"history:\") === 0) {\n sessionStorage.removeItem(key);\n } else if (key === \"history-panel\") {\n sessionStorage.removeItem(key);\n }\n }\n },\n\n /** string representation */\n toString: function() {\n var userInfo = [this.get(\"username\")];\n if (this.get(\"id\")) {\n userInfo.unshift(this.get(\"id\"));\n userInfo.push(this.get(\"email\"));\n }\n return \"User(\" + userInfo.join(\":\") + \")\";\n }\n }\n );\n\n // string to send to tell server to return this transaction's user (see api/users.py)\n User.CURRENT_ID_STR = \"current\";\n\n // class method to load the current user via the api and return that model\n User.getCurrentUserFromApi = function(options) {\n var currentUser = new User();\n currentUser.loadFromApi(User.CURRENT_ID_STR, options);\n return currentUser;\n };\n\n // (stub) collection for users (shouldn't be common unless admin UI)\n var UserCollection = Backbone.Collection\n .extend(baseMVC.LoggableMixin)\n .extend({\n model: User,\n urlRoot: function() {\n return Galaxy.root + \"api/users\";\n }\n //logger : console,\n });\n\n //==============================================================================\n return {\n User: User\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/user/user-model.js",";(function($){ // secure $ jQuery alias\r\n/*******************************************************************************************/\t\r\n// jquery.event.hover.js \r\n// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)\r\n// Licensed under the MIT License (MIT-LICENSE.txt)\r\n// http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// JQuery 1.9+ compatible version\r\n//\r\n// Optional settings :\r\n// $.event.special.hover.delay = 100;\r\n// Defines the delay (msec) while mouse is inside the element before checking the speed\r\n// $.event.special.hover.speed = 100;\r\n// Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event\r\n/*******************************************************************************************/\r\n\r\n// save the old jquery \"hover\" method\r\n$.fn._hover = $.fn.hover;\r\n\r\n// jquery method \r\n$.fn.hover = function( fn1, fn2, fn3 ) {\r\n\tif ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args\r\n\tif ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args\r\n\treturn !fn1 ? this.trigger('hover') // 0 args \r\n\t\t: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args\r\n\t};\t\r\n\r\n// special event configuration\r\nvar hover = $.event.special.hover = {\r\n\tdelay: 100, // milliseconds\r\n\tspeed: 100, // pixels per second\r\n\tsetup: function( data ){\r\n\t\tdata = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );\r\n\t\t$.event.add( this, \"mouseenter mouseleave\", hoverHandler, data );\r\n\t\t},\r\n\tteardown: function(){\r\n\t\t$.event.remove( this, \"mouseenter mouseleave\", hoverHandler );\r\n\t\t}\r\n\t};\r\n\r\n// shared event handler\r\nfunction hoverHandler( event ){\r\n\tvar data = event.data || event;\r\n\tswitch ( event.type ){\r\n\t\tcase 'mouseenter': // mouseover\r\n\t\t\tdata.dist2 = 0; // init mouse distance�\r\n\t\t\tdata.event = event; // store the event\r\n\t\t\tevent.type = \"hoverstart\"; // hijack event\r\n if($.event.dispatch.call(this, event) !== false) {\r\n \tdata.elem = this; // ref to the current element\r\n\t\t\t\t$.event.add( this, \"mousemove\", hoverHandler, data ); // track the mouse\r\n\t\t\t\tdata.timer = setTimeout( compare, data.delay ); // start async compare\r\n\t\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'mousemove': // track the event, mouse distance� = x� + y�\r\n\t\t\tdata.dist2 += Math.pow( event.pageX-data.event.pageX, 2 ) \r\n\t\t\t\t+ Math.pow( event.pageY-data.event.pageY, 2 ); \r\n\t\t\tdata.event = event; // store current event\r\n\t\t\tbreak;\r\n\t\tcase 'mouseleave': // mouseout\r\n\t\t\tclearTimeout( data.timer ); // uncompare\r\n\t\t\tif ( data.hovered ){ \r\n\t\t\t\tevent.type = \"hoverend\"; // hijack event\r\n $.event.dispatch.call(this, event); // handle \"hoverend\"\r\n\t\t\t\tdata.hovered--; // reset flag\r\n\t\t\t\t}\r\n\t\t\telse $.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\tbreak;\r\n\t\tdefault: // timeout compare // distance� = x� + y� = ( speed * time )�\r\n\t\t\tif ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable\r\n\t\t\t\t$.event.remove( data.elem, \"mousemove\", hoverHandler ); // untrack\r\n\t\t\t\tdata.event.type = \"hover\"; // hijack event\r\n if($.event.dispatch.call(data.elem, data.event) !== false) // handle \"hover\"\r\n\t\t\t\t\tdata.hovered++; // flag for \"hoverend\"\r\n\t\t\t\t}\r\n\t\t\telse data.timer = setTimeout( compare, data.delay ); // async recurse\r\n\t\t\tdata.dist2 = 0; // reset distance� for next compare\r\n\t\t\tbreak;\r\n\t\t}\r\n\tfunction compare(){ hoverHandler( data ); }; // timeout/recursive function\r\n\t};\r\n\t\r\n/*******************************************************************************************/\r\n})(jQuery); // confine scope\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.event.hover.js\n// module id = 95\n// module chunks = 5","/*! \n * jquery.event.drag - v 2.2\n * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n * Open Source MIT License - http://threedubmedia.com/code/license\n */\n// Created: 2008-06-04 \n// Updated: 2012-05-21\n// REQUIRES: jquery 1.7.x\n\n;(function( $ ){\n\n// add the jquery instance method\n$.fn.drag = function( str, arg, opts ){\n\t// figure out the event type\n\tvar type = typeof str == \"string\" ? str : \"\",\n\t// figure out the event handler...\n\tfn = $.isFunction( str ) ? str : $.isFunction( arg ) ? arg : null;\n\t// fix the event type\n\tif ( type.indexOf(\"drag\") !== 0 ) \n\t\ttype = \"drag\"+ type;\n\t// were options passed\n\topts = ( str == fn ? arg : opts ) || {};\n\t// trigger or bind event handler\n\treturn fn ? this.bind( type, opts, fn ) : this.trigger( type );\n};\n\n// local refs (increase compression)\nvar $event = $.event, \n$special = $event.special,\n// configure the drag special event \ndrag = $special.drag = {\n\t\n\t// these are the default settings\n\tdefaults: {\n\t\twhich: 1, // mouse button pressed to start drag sequence\n\t\tdistance: 0, // distance dragged before dragstart\n\t\tnot: ':input', // selector to suppress dragging on target elements\n\t\thandle: null, // selector to match handle target elements\n\t\trelative: false, // true to use \"position\", false to use \"offset\"\n\t\tdrop: true, // false to suppress drop events, true or selector to allow\n\t\tclick: false // false to suppress click events after dragend (no proxy)\n\t},\n\t\n\t// the key name for stored drag data\n\tdatakey: \"dragdata\",\n\t\n\t// prevent bubbling for better performance\n\tnoBubble: true,\n\t\n\t// count bound related events\n\tadd: function( obj ){ \n\t\t// read the interaction data\n\t\tvar data = $.data( this, drag.datakey ),\n\t\t// read any passed options \n\t\topts = obj.data || {};\n\t\t// count another realted event\n\t\tdata.related += 1;\n\t\t// extend data options bound with this event\n\t\t// don't iterate \"opts\" in case it is a node \n\t\t$.each( drag.defaults, function( key, def ){\n\t\t\tif ( opts[ key ] !== undefined )\n\t\t\t\tdata[ key ] = opts[ key ];\n\t\t});\n\t},\n\t\n\t// forget unbound related events\n\tremove: function(){\n\t\t$.data( this, drag.datakey ).related -= 1;\n\t},\n\t\n\t// configure interaction, capture settings\n\tsetup: function(){\n\t\t// check for related events\n\t\tif ( $.data( this, drag.datakey ) ) \n\t\t\treturn;\n\t\t// initialize the drag data with copied defaults\n\t\tvar data = $.extend({ related:0 }, drag.defaults );\n\t\t// store the interaction data\n\t\t$.data( this, drag.datakey, data );\n\t\t// bind the mousedown event, which starts drag interactions\n\t\t$event.add( this, \"touchstart mousedown\", drag.init, data );\n\t\t// prevent image dragging in IE...\n\t\tif ( this.attachEvent ) \n\t\t\tthis.attachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\n\t// destroy configured interaction\n\tteardown: function(){\n\t\tvar data = $.data( this, drag.datakey ) || {};\n\t\t// check for related events\n\t\tif ( data.related ) \n\t\t\treturn;\n\t\t// remove the stored data\n\t\t$.removeData( this, drag.datakey );\n\t\t// remove the mousedown event\n\t\t$event.remove( this, \"touchstart mousedown\", drag.init );\n\t\t// enable text selection\n\t\tdrag.textselect( true ); \n\t\t// un-prevent image dragging in IE...\n\t\tif ( this.detachEvent ) \n\t\t\tthis.detachEvent(\"ondragstart\", drag.dontstart ); \n\t},\n\t\t\n\t// initialize the interaction\n\tinit: function( event ){ \n\t\t// sorry, only one touch at a time\n\t\tif ( drag.touched ) \n\t\t\treturn;\n\t\t// the drag/drop interaction data\n\t\tvar dd = event.data, results;\n\t\t// check the which directive\n\t\tif ( event.which != 0 && dd.which > 0 && event.which != dd.which ) \n\t\t\treturn; \n\t\t// check for suppressed selector\n\t\tif ( $( event.target ).is( dd.not ) ) \n\t\t\treturn;\n\t\t// check for handle selector\n\t\tif ( dd.handle && !$( event.target ).closest( dd.handle, event.currentTarget ).length ) \n\t\t\treturn;\n\n\t\tdrag.touched = event.type == 'touchstart' ? this : null;\n\t\tdd.propagates = 1;\n\t\tdd.mousedown = this;\n\t\tdd.interactions = [ drag.interaction( this, dd ) ];\n\t\tdd.target = event.target;\n\t\tdd.pageX = event.pageX;\n\t\tdd.pageY = event.pageY;\n\t\tdd.dragging = null;\n\t\t// handle draginit event... \n\t\tresults = drag.hijack( event, \"draginit\", dd );\n\t\t// early cancel\n\t\tif ( !dd.propagates )\n\t\t\treturn;\n\t\t// flatten the result set\n\t\tresults = drag.flatten( results );\n\t\t// insert new interaction elements\n\t\tif ( results && results.length ){\n\t\t\tdd.interactions = [];\n\t\t\t$.each( results, function(){\n\t\t\t\tdd.interactions.push( drag.interaction( this, dd ) );\n\t\t\t});\n\t\t}\n\t\t// remember how many interactions are propagating\n\t\tdd.propagates = dd.interactions.length;\n\t\t// locate and init the drop targets\n\t\tif ( dd.drop !== false && $special.drop ) \n\t\t\t$special.drop.handler( event, dd );\n\t\t// disable text selection\n\t\tdrag.textselect( false ); \n\t\t// bind additional events...\n\t\tif ( drag.touched )\n\t\t\t$event.add( drag.touched, \"touchmove touchend\", drag.handler, dd );\n\t\telse \n\t\t\t$event.add( document, \"mousemove mouseup\", drag.handler, dd );\n\t\t// helps prevent text selection or scrolling\n\t\tif ( !drag.touched || dd.live )\n\t\t\treturn false;\n\t},\t\n\t\n\t// returns an interaction object\n\tinteraction: function( elem, dd ){\n\t\tvar offset = $( elem )[ dd.relative ? \"position\" : \"offset\" ]() || { top:0, left:0 };\n\t\treturn {\n\t\t\tdrag: elem, \n\t\t\tcallback: new drag.callback(), \n\t\t\tdroppable: [],\n\t\t\toffset: offset\n\t\t};\n\t},\n\t\n\t// handle drag-releatd DOM events\n\thandler: function( event ){ \n\t\t// read the data before hijacking anything\n\t\tvar dd = event.data;\t\n\t\t// handle various events\n\t\tswitch ( event.type ){\n\t\t\t// mousemove, check distance, start dragging\n\t\t\tcase !dd.dragging && 'touchmove': \n\t\t\t\tevent.preventDefault();\n\t\t\tcase !dd.dragging && 'mousemove':\n\t\t\t\t// drag tolerance, x� + y� = distance�\n\t\t\t\tif ( Math.pow( event.pageX-dd.pageX, 2 ) + Math.pow( event.pageY-dd.pageY, 2 ) < Math.pow( dd.distance, 2 ) ) \n\t\t\t\t\tbreak; // distance tolerance not reached\n\t\t\t\tevent.target = dd.target; // force target from \"mousedown\" event (fix distance issue)\n\t\t\t\tdrag.hijack( event, \"dragstart\", dd ); // trigger \"dragstart\"\n\t\t\t\tif ( dd.propagates ) // \"dragstart\" not rejected\n\t\t\t\t\tdd.dragging = true; // activate interaction\n\t\t\t// mousemove, dragging\n\t\t\tcase 'touchmove':\n\t\t\t\tevent.preventDefault();\n\t\t\tcase 'mousemove':\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\t// trigger \"drag\"\t\t\n\t\t\t\t\tdrag.hijack( event, \"drag\", dd );\n\t\t\t\t\tif ( dd.propagates ){\n\t\t\t\t\t\t// manage drop events\n\t\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"dropstart\", \"dropend\"\t\t\t\t\t\t\t\n\t\t\t\t\t\tbreak; // \"drag\" not rejected, stop\t\t\n\t\t\t\t\t}\n\t\t\t\t\tevent.type = \"mouseup\"; // helps \"drop\" handler behave\n\t\t\t\t}\n\t\t\t// mouseup, stop dragging\n\t\t\tcase 'touchend': \n\t\t\tcase 'mouseup': \n\t\t\tdefault:\n\t\t\t\tif ( drag.touched )\n\t\t\t\t\t$event.remove( drag.touched, \"touchmove touchend\", drag.handler ); // remove touch events\n\t\t\t\telse \n\t\t\t\t\t$event.remove( document, \"mousemove mouseup\", drag.handler ); // remove page events\t\n\t\t\t\tif ( dd.dragging ){\n\t\t\t\t\tif ( dd.drop !== false && $special.drop )\n\t\t\t\t\t\t$special.drop.handler( event, dd ); // \"drop\"\n\t\t\t\t\tdrag.hijack( event, \"dragend\", dd ); // trigger \"dragend\"\t\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrag.hijack( event, \"dragclickonly\", dd ); // trigger \"dragclickonly\"\t\n\t\t\t\t}\n\t\t\t\tdrag.textselect( true ); // enable text selection\n\t\t\t\t// if suppressing click events...\n\t\t\t\tif ( dd.click === false && dd.dragging )\n\t\t\t\t\t$.data( dd.mousedown, \"suppress.click\", new Date().getTime() + 5 );\n\t\t\t\tdd.dragging = drag.touched = false; // deactivate element\t\n\t\t\t\tbreak;\n\t\t}\n\t},\n\t\t\n\t// re-use event object for custom events\n\thijack: function( event, type, dd, x, elem ){\n\t\t// not configured\n\t\tif ( !dd ) \n\t\t\treturn;\n\t\t// remember the original event and type\n\t\tvar orig = { event:event.originalEvent, type:event.type },\n\t\t// is the event drag related or drog related?\n\t\tmode = type.indexOf(\"drop\") ? \"drag\" : \"drop\",\n\t\t// iteration vars\n\t\tresult, i = x || 0, ia, $elems, callback,\n\t\tlen = !isNaN( x ) ? x : dd.interactions.length;\n\t\t// modify the event type\n\t\tevent.type = type;\n\t\t// remove the original event\n\t\tevent.originalEvent = null;\n\t\t// initialize the results\n\t\tdd.results = [];\n\t\t// handle each interacted element\n\t\tdo if ( ia = dd.interactions[ i ] ){\n\t\t\t// validate the interaction\n\t\t\tif ( type !== \"dragend\" && ia.cancelled )\n\t\t\t\tcontinue;\n\t\t\t// set the dragdrop properties on the event object\n\t\t\tcallback = drag.properties( event, dd, ia );\n\t\t\t// prepare for more results\n\t\t\tia.results = [];\n\t\t\t// handle each element\n\t\t\t$( elem || ia[ mode ] || dd.droppable ).each(function( p, subject ){\n\t\t\t\t// identify drag or drop targets individually\n\t\t\t\tcallback.target = subject;\n\t\t\t\t// force propagtion of the custom event\n\t\t\t\tevent.isPropagationStopped = function(){ return false; };\n\t\t\t\t// handle the event\t\n\t\t\t\tresult = subject ? $event.dispatch.call( subject, event, callback ) : null;\n\t\t\t\t// stop the drag interaction for this element\n\t\t\t\tif ( result === false ){\n\t\t\t\t\tif ( mode == \"drag\" ){\n\t\t\t\t\t\tia.cancelled = true;\n\t\t\t\t\t\tdd.propagates -= 1;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == \"drop\" ){\n\t\t\t\t\t\tia[ mode ][p] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// assign any dropinit elements\n\t\t\t\telse if ( type == \"dropinit\" )\n\t\t\t\t\tia.droppable.push( drag.element( result ) || subject );\n\t\t\t\t// accept a returned proxy element \n\t\t\t\tif ( type == \"dragstart\" )\n\t\t\t\t\tia.proxy = $( drag.element( result ) || ia.drag )[0];\n\t\t\t\t// remember this result\t\n\t\t\t\tia.results.push( result );\n\t\t\t\t// forget the event result, for recycling\n\t\t\t\tdelete event.result;\n\t\t\t\t// break on cancelled handler\n\t\t\t\tif ( type !== \"dropinit\" )\n\t\t\t\t\treturn result;\n\t\t\t});\t\n\t\t\t// flatten the results\t\n\t\t\tdd.results[ i ] = drag.flatten( ia.results );\t\n\t\t\t// accept a set of valid drop targets\n\t\t\tif ( type == \"dropinit\" )\n\t\t\t\tia.droppable = drag.flatten( ia.droppable );\n\t\t\t// locate drop targets\n\t\t\tif ( type == \"dragstart\" && !ia.cancelled )\n\t\t\t\tcallback.update(); \n\t\t}\n\t\twhile ( ++i < len )\n\t\t// restore the original event & type\n\t\tevent.type = orig.type;\n\t\tevent.originalEvent = orig.event;\n\t\t// return all handler results\n\t\treturn drag.flatten( dd.results );\n\t},\n\t\t\n\t// extend the callback object with drag/drop properties...\n\tproperties: function( event, dd, ia ){\t\t\n\t\tvar obj = ia.callback;\n\t\t// elements\n\t\tobj.drag = ia.drag;\n\t\tobj.proxy = ia.proxy || ia.drag;\n\t\t// starting mouse position\n\t\tobj.startX = dd.pageX;\n\t\tobj.startY = dd.pageY;\n\t\t// current distance dragged\n\t\tobj.deltaX = event.pageX - dd.pageX;\n\t\tobj.deltaY = event.pageY - dd.pageY;\n\t\t// original element position\n\t\tobj.originalX = ia.offset.left;\n\t\tobj.originalY = ia.offset.top;\n\t\t// adjusted element position\n\t\tobj.offsetX = obj.originalX + obj.deltaX; \n\t\tobj.offsetY = obj.originalY + obj.deltaY;\n\t\t// assign the drop targets information\n\t\tobj.drop = drag.flatten( ( ia.drop || [] ).slice() );\n\t\tobj.available = drag.flatten( ( ia.droppable || [] ).slice() );\n\t\treturn obj;\t\n\t},\n\t\n\t// determine is the argument is an element or jquery instance\n\telement: function( arg ){\n\t\tif ( arg && ( arg.jquery || arg.nodeType == 1 ) )\n\t\t\treturn arg;\n\t},\n\t\n\t// flatten nested jquery objects and arrays into a single dimension array\n\tflatten: function( arr ){\n\t\treturn $.map( arr, function( member ){\n\t\t\treturn member && member.jquery ? $.makeArray( member ) : \n\t\t\t\tmember && member.length ? drag.flatten( member ) : member;\n\t\t});\n\t},\n\t\n\t// toggles text selection attributes ON (true) or OFF (false)\n\ttextselect: function( bool ){ \n\t\t$( document )[ bool ? \"unbind\" : \"bind\" ](\"selectstart\", drag.dontstart )\n\t\t\t.css(\"MozUserSelect\", bool ? \"\" : \"none\" );\n\t\t// .attr(\"unselectable\", bool ? \"off\" : \"on\" )\n\t\tdocument.unselectable = bool ? \"off\" : \"on\"; \n\t},\n\t\n\t// suppress \"selectstart\" and \"ondragstart\" events\n\tdontstart: function(){ \n\t\treturn false; \n\t},\n\t\n\t// a callback instance contructor\n\tcallback: function(){}\n\t\n};\n\n// callback methods\ndrag.callback.prototype = {\n\tupdate: function(){\n\t\tif ( $special.drop && this.available.length )\n\t\t\t$.each( this.available, function( i ){\n\t\t\t\t$special.drop.locate( this, i );\n\t\t\t});\n\t}\n};\n\n// patch $.event.$dispatch to allow suppressing clicks\nvar $dispatch = $event.dispatch;\n$event.dispatch = function( event ){\n\tif ( $.data( this, \"suppress.\"+ event.type ) - new Date().getTime() > 0 ){\n\t\t$.removeData( this, \"suppress.\"+ event.type );\n\t\treturn;\n\t}\n\treturn $dispatch.apply( this, arguments );\n};\n\n// event fix hooks for touch events...\nvar touchHooks = \n$event.fixHooks.touchstart = \n$event.fixHooks.touchmove = \n$event.fixHooks.touchend =\n$event.fixHooks.touchcancel = {\n\tprops: \"clientX clientY pageX pageY screenX screenY\".split( \" \" ),\n\tfilter: function( event, orig ) {\n\t\tif ( orig ){\n\t\t\tvar touched = ( orig.touches && orig.touches[0] )\n\t\t\t\t|| ( orig.changedTouches && orig.changedTouches[0] )\n\t\t\t\t|| null; \n\t\t\t// iOS webkit: touchstart, touchmove, touchend\n\t\t\tif ( touched ) \n\t\t\t\t$.each( touchHooks.props, function( i, prop ){\n\t\t\t\t\tevent[ prop ] = touched[ prop ];\n\t\t\t\t});\n\t\t}\n\t\treturn event;\n\t}\n};\n\n// share the same special event configuration with related events...\n$special.draginit = $special.dragstart = $special.dragend = drag;\n\n})( jQuery );\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.event.drag.js\n// module id = 96\n// module chunks = 5","/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if ( typeof define === 'function' && define.amd ) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n\n getLineHeight: function(elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./galaxy/scripts/libs/jquery/jquery.mousewheel.js\n// module id = 97\n// module chunks = 5","/*!\n * jQuery Form Plugin\n * version: 3.45.0-2013.10.17\n * Requires jQuery v1.5 or later\n * Copyright (c) 2013 M. Alsup\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Project repository: https://github.com/malsup/form\n * Dual licensed under the MIT and GPL licenses.\n * https://github.com/malsup/form#copyright-and-license\n */\n/*global ActiveXObject */\n;(function($) {\n\"use strict\";\n\n/*\n Usage Note:\n -----------\n Do not use both ajaxSubmit and ajaxForm on the same form. These\n functions are mutually exclusive. Use ajaxSubmit if you want\n to bind your own submit handler to the form. For example,\n\n $(document).ready(function() {\n $('#myForm').on('submit', function(e) {\n e.preventDefault(); // <-- important\n $(this).ajaxSubmit({\n target: '#output'\n });\n });\n });\n\n Use ajaxForm when you want the plugin to manage all the event binding\n for you. For example,\n\n $(document).ready(function() {\n $('#myForm').ajaxForm({\n target: '#output'\n });\n });\n\n You can also use ajaxForm with delegation (requires jQuery v1.7+), so the\n form does not have to exist when you invoke ajaxForm:\n\n $('#myForm').ajaxForm({\n delegation: true,\n target: '#output'\n });\n\n When using ajaxForm, the ajaxSubmit function will be invoked for you\n at the appropriate time.\n*/\n\n/**\n * Feature detection\n */\nvar feature = {};\nfeature.fileapi = $(\"\").get(0).files !== undefined;\nfeature.formdata = window.FormData !== undefined;\n\nvar hasProp = !!$.fn.prop;\n\n// attr2 uses prop when it can but checks the return type for\n// an expected string. this accounts for the case where a form \n// contains inputs with names like \"action\" or \"method\"; in those\n// cases \"prop\" returns the element\n$.fn.attr2 = function() {\n if ( ! hasProp )\n return this.attr.apply(this, arguments);\n var val = this.prop.apply(this, arguments);\n if ( ( val && val.jquery ) || typeof val === 'string' )\n return val;\n return this.attr.apply(this, arguments);\n};\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n /*jshint scripturl:true */\n\n // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n if (!this.length) {\n log('ajaxSubmit: skipping submit process - no element selected');\n return this;\n }\n\n var method, action, url, $form = this;\n\n if (typeof options == 'function') {\n options = { success: options };\n }\n else if ( options === undefined ) {\n options = {};\n }\n\n method = options.type || this.attr2('method');\n action = options.url || this.attr2('action');\n\n url = (typeof action === 'string') ? $.trim(action) : '';\n url = url || window.location.href || '';\n if (url) {\n // clean url (don't include hash vaue)\n url = (url.match(/^([^#]+)/)||[])[1];\n }\n\n options = $.extend(true, {\n url: url,\n success: $.ajaxSettings.success,\n type: method || $.ajaxSettings.type,\n iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n }, options);\n\n // hook for manipulating the form data before it is extracted;\n // convenient for use with rich editors like tinyMCE or FCKEditor\n var veto = {};\n this.trigger('form-pre-serialize', [this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n return this;\n }\n\n // provide opportunity to alter form data before it is serialized\n if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSerialize callback');\n return this;\n }\n\n var traditional = options.traditional;\n if ( traditional === undefined ) {\n traditional = $.ajaxSettings.traditional;\n }\n\n var elements = [];\n var qx, a = this.formToArray(options.semantic, elements);\n if (options.data) {\n options.extraData = options.data;\n qx = $.param(options.data, traditional);\n }\n\n // give pre-submit callback an opportunity to abort the submit\n if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n log('ajaxSubmit: submit aborted via beforeSubmit callback');\n return this;\n }\n\n // fire vetoable 'validate' event\n this.trigger('form-submit-validate', [a, this, options, veto]);\n if (veto.veto) {\n log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n return this;\n }\n\n var q = $.param(a, traditional);\n if (qx) {\n q = ( q ? (q + '&' + qx) : qx );\n }\n if (options.type.toUpperCase() == 'GET') {\n options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n options.data = null; // data is null for 'get'\n }\n else {\n options.data = q; // data is the query string for 'post'\n }\n\n var callbacks = [];\n if (options.resetForm) {\n callbacks.push(function() { $form.resetForm(); });\n }\n if (options.clearForm) {\n callbacks.push(function() { $form.clearForm(options.includeHidden); });\n }\n\n // perform a load on the target only if dataType is not provided\n if (!options.dataType && options.target) {\n var oldSuccess = options.success || function(){};\n callbacks.push(function(data) {\n var fn = options.replaceTarget ? 'replaceWith' : 'html';\n $(options.target)[fn](data).each(oldSuccess, arguments);\n });\n }\n else if (options.success) {\n callbacks.push(options.success);\n }\n\n options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n var context = options.context || this ; // jQuery 1.4+ supports scope context\n for (var i=0, max=callbacks.length; i < max; i++) {\n callbacks[i].apply(context, [data, status, xhr || $form, $form]);\n }\n };\n\n if (options.error) {\n var oldError = options.error;\n options.error = function(xhr, status, error) {\n var context = options.context || this;\n oldError.apply(context, [xhr, status, error, $form]);\n };\n }\n\n if (options.complete) {\n var oldComplete = options.complete;\n options.complete = function(xhr, status) {\n var context = options.context || this;\n oldComplete.apply(context, [xhr, status, $form]);\n };\n }\n\n // are there files to upload?\n\n // [value] (issue #113), also see comment:\n // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219\n var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });\n\n var hasFileInputs = fileInputs.length > 0;\n var mp = 'multipart/form-data';\n var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n var fileAPI = feature.fileapi && feature.formdata;\n log(\"fileAPI :\" + fileAPI);\n var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;\n\n var jqxhr;\n\n // options.iframe allows user to force iframe mode\n // 06-NOV-09: now defaulting to iframe mode if file input is detected\n if (options.iframe !== false && (options.iframe || shouldUseFrame)) {\n // hack to fix Safari hang (thanks to Tim Molendijk for this)\n // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n if (options.closeKeepAlive) {\n $.get(options.closeKeepAlive, function() {\n jqxhr = fileUploadIframe(a);\n });\n }\n else {\n jqxhr = fileUploadIframe(a);\n }\n }\n else if ((hasFileInputs || multipart) && fileAPI) {\n jqxhr = fileUploadXhr(a);\n }\n else {\n jqxhr = $.ajax(options);\n }\n\n $form.removeData('jqxhr').data('jqxhr', jqxhr);\n\n // clear element array\n for (var k=0; k < elements.length; k++)\n elements[k] = null;\n\n // fire 'notify' event\n this.trigger('form-submit-notify', [this, options]);\n return this;\n\n // utility fn for deep serialization\n function deepSerialize(extraData){\n var serialized = $.param(extraData, options.traditional).split('&');\n var len = serialized.length;\n var result = [];\n var i, part;\n for (i=0; i < len; i++) {\n // #252; undo param space replacement\n serialized[i] = serialized[i].replace(/\\+/g,' ');\n part = serialized[i].split('=');\n // #278; use array instead of object storage, favoring array serializations\n result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);\n }\n return result;\n }\n\n // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)\n function fileUploadXhr(a) {\n var formdata = new FormData();\n\n for (var i=0; i < a.length; i++) {\n formdata.append(a[i].name, a[i].value);\n }\n\n if (options.extraData) {\n var serializedData = deepSerialize(options.extraData);\n for (i=0; i < serializedData.length; i++)\n if (serializedData[i])\n formdata.append(serializedData[i][0], serializedData[i][1]);\n }\n\n options.data = null;\n\n var s = $.extend(true, {}, $.ajaxSettings, options, {\n contentType: false,\n processData: false,\n cache: false,\n type: method || 'POST'\n });\n\n if (options.uploadProgress) {\n // workaround because jqXHR does not expose upload property\n s.xhr = function() {\n var xhr = $.ajaxSettings.xhr();\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', function(event) {\n var percent = 0;\n var position = event.loaded || event.position; /*event.position is deprecated*/\n var total = event.total;\n if (event.lengthComputable) {\n percent = Math.ceil(position / total * 100);\n }\n options.uploadProgress(event, position, total, percent);\n }, false);\n }\n return xhr;\n };\n }\n\n s.data = null;\n var beforeSend = s.beforeSend;\n s.beforeSend = function(xhr, o) {\n //Send FormData() provided by user\n if (options.formData)\n o.data = options.formData;\n else\n o.data = formdata;\n if(beforeSend)\n beforeSend.call(this, xhr, o);\n };\n return $.ajax(s);\n }\n\n // private function for handling file uploads (hat tip to YAHOO!)\n function fileUploadIframe(a) {\n var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n var deferred = $.Deferred();\n\n // #341\n deferred.abort = function(status) {\n xhr.abort(status);\n };\n\n if (a) {\n // ensure that every serialized input is still enabled\n for (i=0; i < elements.length; i++) {\n el = $(elements[i]);\n if ( hasProp )\n el.prop('disabled', false);\n else\n el.removeAttr('disabled');\n }\n }\n\n s = $.extend(true, {}, $.ajaxSettings, options);\n s.context = s.context || s;\n id = 'jqFormIO' + (new Date().getTime());\n if (s.iframeTarget) {\n $io = $(s.iframeTarget);\n n = $io.attr2('name');\n if (!n)\n $io.attr2('name', id);\n else\n id = n;\n }\n else {\n $io = $('',\n header_template =\n '' +\n '' +\n '',\n frame_height = 350,\n frame_width = 600,\n class_names = \"ui-modal chat-modal\";\n\n // deletes the chat modal if already present and create one\n if ($(\".chat-modal\").length > 0) {\n $(\".chat-modal\").remove();\n }\n // creates a modal\n GenericNavView.modal = new Modal.View({\n body: iframe_template,\n height: frame_height,\n width: frame_width,\n closing_events: true,\n title_separator: false,\n cls: class_names\n });\n\n // shows modal\n GenericNavView.modal.show();\n $el_chat_modal_header = $(\".chat-modal .modal-header\");\n $el_chat_modal_body = $(\".chat-modal .modal-body\");\n // adjusts the css of bootstrap modal for chat\n $el_chat_modal_header.addClass(\"modal-header-body\");\n $el_chat_modal_body.addClass(\"modal-header-body\");\n $el_chat_modal_header.find(\"h4\").remove();\n $el_chat_modal_header.removeAttr(\"min-height padding border\");\n $el_chat_modal_header.append(header_template);\n // click event of the close button for chat\n $(\".close-modal\").click(function(e) {\n $(\".chat-modal\").css(\"display\", \"none\");\n });\n // click event of expand and compress icon\n $(\".expand-compress-modal\").click(function(e) {\n if ($(\".expand-compress-modal\").hasClass(\"fa-expand\")) {\n $(\".chat-modal .modal-dialog\").width(\"1000px\");\n $(\".chat-modal .modal-body\").height(\"575px\");\n $(\".expand-compress-modal\")\n .removeClass(\"fa-expand\")\n .addClass(\"fa-compress\");\n $(\".expand-compress-modal\").attr(\"title\", \"Minimize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"96.2%\");\n } else {\n $(\".chat-modal .modal-dialog\").width(frame_width + \"px\");\n $(\".chat-modal .modal-body\").height(frame_height + \"px\");\n $(\".expand-compress-modal\")\n .removeClass(\"fa-compress\")\n .addClass(\"fa-expand\");\n $(\".expand-compress-modal\").attr(\"title\", \"Maximize\");\n $(\".expand-compress-modal\").css(\"margin-left\", \"93.2%\");\n }\n });\n return this;\n },\n\n /**renders the chat icon as a nav item*/\n render: function() {\n var self = this,\n navItem = {};\n navItem = {\n id: \"show-chat-online\",\n icon: \"fa-comment-o\",\n tooltip: \"Chat online\",\n visible: false,\n onclick: self.makeModalIframe\n };\n return navItem;\n }\n });\n\n return {\n GenericNavView: GenericNavView\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/generic-nav-view.js","/** Frame manager uses the ui-frames to create the scratch book masthead icon and functionality **/\ndefine([\"mvc/ui/ui-frames\"], function(Frames) {\n return Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n options = options || {};\n this.frames = new Frames.View({ visible: false });\n this.setElement(this.frames.$el);\n this.buttonActive = options.collection.add({\n id: \"enable-scratchbook\",\n icon: \"fa-th\",\n tooltip: _l(\"Enable/Disable Scratchbook\"),\n onclick: function() {\n self.active = !self.active;\n self.buttonActive.set({\n toggle: self.active,\n show_note: self.active,\n note_cls: self.active && \"fa fa-check\"\n });\n !self.active && self.frames.hide();\n },\n onbeforeunload: function() {\n if (self.frames.length() > 0) {\n return (\n \"You opened \" +\n self.frames.length() +\n \" frame(s) which will be lost.\"\n );\n }\n }\n });\n this.buttonLoad = options.collection.add({\n id: \"show-scratchbook\",\n icon: \"fa-eye\",\n tooltip: _l(\"Show/Hide Scratchbook\"),\n show_note: true,\n visible: false,\n onclick: function(e) {\n self.frames.visible\n ? self.frames.hide()\n : self.frames.show();\n }\n });\n this.frames\n .on(\"add remove\", function() {\n this.visible && this.length() == 0 && this.hide();\n self.buttonLoad.set({\n note: this.length(),\n visible: this.length() > 0\n });\n })\n .on(\"show hide \", function() {\n self.buttonLoad.set({\n toggle: this.visible,\n icon: (this.visible && \"fa-eye\") || \"fa-eye-slash\"\n });\n });\n this.history_cache = {};\n },\n\n /** Add a dataset to the frames */\n addDataset: function(dataset_id) {\n var self = this;\n var current_dataset = null;\n if (Galaxy && Galaxy.currHistoryPanel) {\n var history_id = Galaxy.currHistoryPanel.collection.historyId;\n this.history_cache[history_id] = {\n name: Galaxy.currHistoryPanel.model.get(\"name\"),\n dataset_ids: []\n };\n Galaxy.currHistoryPanel.collection.each(function(model) {\n !model.get(\"deleted\") &&\n model.get(\"visible\") &&\n self.history_cache[history_id].dataset_ids.push(\n model.get(\"id\")\n );\n });\n }\n var _findDataset = function(dataset, offset) {\n if (dataset) {\n var history_details =\n self.history_cache[dataset.get(\"history_id\")];\n if (history_details && history_details.dataset_ids) {\n var dataset_list = history_details.dataset_ids;\n var pos = dataset_list.indexOf(dataset.get(\"id\"));\n if (\n pos !== -1 &&\n pos + offset >= 0 &&\n pos + offset < dataset_list.length\n ) {\n return dataset_list[pos + offset];\n }\n }\n }\n };\n var _loadDatasetOffset = function(dataset, offset, frame) {\n var new_dataset_id = _findDataset(dataset, offset);\n if (new_dataset_id) {\n self._loadDataset(new_dataset_id, function(\n new_dataset,\n config\n ) {\n current_dataset = new_dataset;\n frame.model.set(config);\n });\n } else {\n frame.model.trigger(\"change\");\n }\n };\n this._loadDataset(dataset_id, function(dataset, config) {\n current_dataset = dataset;\n self.add(\n _.extend(\n {\n menu: [\n {\n icon: \"fa fa-chevron-circle-left\",\n tooltip: \"Previous in History\",\n onclick: function(frame) {\n _loadDatasetOffset(\n current_dataset,\n -1,\n frame\n );\n },\n disabled: function() {\n return !_findDataset(\n current_dataset,\n -1\n );\n }\n },\n {\n icon: \"fa fa-chevron-circle-right\",\n tooltip: \"Next in History\",\n onclick: function(frame) {\n _loadDatasetOffset(\n current_dataset,\n 1,\n frame\n );\n },\n disabled: function() {\n return !_findDataset(\n current_dataset,\n 1\n );\n }\n }\n ]\n },\n config\n )\n );\n });\n },\n\n _loadDataset: function(dataset_id, callback) {\n var self = this;\n require([\"mvc/dataset/data\"], function(DATA) {\n var dataset = new DATA.Dataset({ id: dataset_id });\n $.when(dataset.fetch()).then(function() {\n var is_tabular = _.find([\"tabular\", \"interval\"], function(\n data_type\n ) {\n return (\n dataset.get(\"data_type\").indexOf(data_type) !== -1\n );\n });\n var title = dataset.get(\"name\");\n var history_details =\n self.history_cache[dataset.get(\"history_id\")];\n if (history_details) {\n title = history_details.name + \": \" + title;\n }\n callback(\n dataset,\n is_tabular\n ? {\n title: title,\n url: null,\n content: DATA.createTabularDatasetChunkedView(\n {\n model: new DATA.TabularDataset(\n dataset.toJSON()\n ),\n embedded: true,\n height: \"100%\"\n }\n ).$el\n }\n : {\n title: title,\n url:\n Galaxy.root +\n \"datasets/\" +\n dataset_id +\n \"/display/?preview=True\",\n content: null\n }\n );\n });\n });\n },\n\n /** Add a trackster visualization to the frames. */\n addTrackster: function(viz_id) {\n var self = this;\n require([\"viz/visualization\", \"viz/trackster\"], function(\n visualization,\n trackster\n ) {\n var viz = new visualization.Visualization({ id: viz_id });\n $.when(viz.fetch()).then(function() {\n var ui = new trackster.TracksterUI(Galaxy.root);\n\n // Construct frame config based on dataset's type.\n var frame_config = {\n title: viz.get(\"name\"),\n type: \"other\",\n content: function(parent_elt) {\n // Create view config.\n var view_config = {\n container: parent_elt,\n name: viz.get(\"title\"),\n id: viz.id,\n // FIXME: this will not work with custom builds b/c the dbkey needed to be encoded.\n dbkey: viz.get(\"dbkey\"),\n stand_alone: false\n },\n latest_revision = viz.get(\"latest_revision\"),\n drawables =\n latest_revision.config.view.drawables;\n\n // Set up datasets in drawables.\n _.each(drawables, function(d) {\n d.dataset = {\n hda_ldda: d.hda_ldda,\n id: d.dataset_id\n };\n });\n view = ui.create_visualization(\n view_config,\n latest_revision.config.viewport,\n latest_revision.config.view.drawables,\n latest_revision.config.bookmarks,\n false\n );\n }\n };\n self.add(frame_config);\n });\n });\n },\n\n /** Add and display a new frame/window based on options. */\n add: function(options) {\n if (options.target == \"_blank\") {\n window.open(options.url);\n } else if (\n options.target == \"_top\" ||\n options.target == \"_parent\" ||\n options.target == \"_self\"\n ) {\n window.location = options.url;\n } else if (!this.active || options.noscratchbook) {\n var $galaxy_main = $(window.parent.document).find(\n \"#galaxy_main\"\n );\n if (\n options.target == \"galaxy_main\" ||\n options.target == \"center\"\n ) {\n if ($galaxy_main.length === 0) {\n window.location =\n options.url +\n (options.url.indexOf(\"?\") == -1 ? \"?\" : \"&\") +\n \"use_panels=True\";\n } else {\n $galaxy_main.attr(\"src\", options.url);\n }\n } else window.location = options.url;\n } else {\n this.frames.add(options);\n }\n }\n });\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/layout/scratchbook.js","define([\"mvc/base-mvc\", \"utils/localization\"], function(baseMVC, _l) {\n \"use strict\";\n\n var logNamespace = \"user\";\n //==============================================================================\n /** @class View to display a user's disk/storage usage\n * either as a progress bar representing the percentage of a quota used\n * or a simple text element displaying the human readable size used.\n * @name UserQuotaMeter\n * @augments Backbone.View\n */\n var UserQuotaMeter = Backbone.View.extend(baseMVC.LoggableMixin).extend(\n /** @lends UserQuotaMeter.prototype */ {\n _logNamespace: logNamespace,\n\n /** Defaults for optional settings passed to initialize */\n options: {\n warnAtPercent: 85,\n errorAtPercent: 100\n },\n\n /** Set up, accept options, and bind events */\n initialize: function(options) {\n this.log(this + \".initialize:\", options);\n _.extend(this.options, options);\n\n //this.bind( 'all', function( event, data ){ this.log( this + ' event:', event, data ); }, this );\n this.listenTo(\n this.model,\n \"change:quota_percent change:total_disk_usage\",\n this.render\n );\n },\n\n /** Re-load user model data from the api */\n update: function(options) {\n this.log(this + \" updating user data...\", options);\n this.model.loadFromApi(this.model.get(\"id\"), options);\n return this;\n },\n\n /** Is the user over their quota (if there is one)?\n * @returns {Boolean} true if over quota, false if no quota or under quota\n */\n isOverQuota: function() {\n return (\n this.model.get(\"quota_percent\") !== null &&\n this.model.get(\"quota_percent\") >=\n this.options.errorAtPercent\n );\n },\n\n /** Render the meter when they have an applicable quota. Will render as a progress bar\n * with their percentage of that quota in text over the bar.\n * @fires quota:over when user is over quota (>= this.errorAtPercent)\n * @fires quota:under when user is under quota\n * @fires quota:under:approaching when user is >= this.warnAtPercent of their quota\n * @fires quota:under:ok when user is below this.warnAtPercent\n * @returns {jQuery} the rendered meter\n */\n _render_quota: function() {\n var modelJson = this.model.toJSON(),\n //prevPercent = this.model.previous( 'quota_percent' ),\n percent = modelJson.quota_percent,\n //meter = $( UserQuotaMeter.templates.quota( modelJson ) );\n $meter = $(this._templateQuotaMeter(modelJson)),\n $bar = $meter.find(\".progress-bar\");\n //this.log( this + '.rendering quota, percent:', percent, 'meter:', meter );\n\n // OVER QUOTA: color the quota bar and show the quota error message\n if (this.isOverQuota()) {\n //this.log( '\\t over quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-danger\");\n $meter.find(\".quota-meter-text\").css(\"color\", \"white\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:over\", modelJson);\n\n // APPROACHING QUOTA: color the quota bar\n } else if (percent >= this.options.warnAtPercent) {\n //this.log( '\\t approaching quota' );\n $bar.attr(\"class\", \"progress-bar progress-bar-warning\");\n //TODO: only trigger event if state has changed\n this.trigger(\n \"quota:under quota:under:approaching\",\n modelJson\n );\n\n // otherwise, hide/don't use the msg box\n } else {\n $bar.attr(\"class\", \"progress-bar progress-bar-success\");\n //TODO: only trigger event if state has changed\n this.trigger(\"quota:under quota:under:ok\", modelJson);\n }\n return $meter;\n },\n\n /** Render the meter when the user has NO applicable quota. Will render as text\n * showing the human readable sum storage their data is using.\n * @returns {jQuery} the rendered text\n */\n _render_usage: function() {\n //var usage = $( UserQuotaMeter.templates.usage( this.model.toJSON() ) );\n var usage = $(this._templateUsage(this.model.toJSON()));\n this.log(this + \".rendering usage:\", usage);\n return usage;\n },\n\n /** Render either the quota percentage meter or the human readable disk usage\n * depending on whether the user model has quota info (quota_percent === null -> no quota)\n * @returns {Object} this UserQuotaMeter\n */\n render: function() {\n //this.log( this + '.rendering' );\n var meterHtml = null;\n\n // no quota on server ('quota_percent' === null (can be valid at 0)), show usage instead\n this.log(\n this + \".model.quota_percent:\",\n this.model.get(\"quota_percent\")\n );\n if (\n this.model.get(\"quota_percent\") === null ||\n this.model.get(\"quota_percent\") === undefined\n ) {\n meterHtml = this._render_usage();\n\n // otherwise, render percent of quota (and warning, error)\n } else {\n meterHtml = this._render_quota();\n //TODO: add the original text for unregistered quotas\n //tooltip = \"Your disk quota is %s. You can increase your quota by registering a Galaxy account.\"\n }\n\n this.$el.html(meterHtml);\n this.$el.find(\".quota-meter-text\").tooltip();\n return this;\n },\n\n _templateQuotaMeter: function(data) {\n return [\n '
',\n '
',\n '
'\n : \">\",\n _l(\"Using\"),\n \" \",\n data.quota_percent,\n \"%\",\n \"
\",\n \"
\"\n ].join(\"\");\n },\n\n _templateUsage: function(data) {\n return [\n '
',\n '
',\n data.nice_total_disk_usage\n ? _l(\"Using \") + data.nice_total_disk_usage\n : \"\",\n \"
\",\n \"
\"\n ].join(\"\");\n },\n\n toString: function() {\n return \"UserQuotaMeter(\" + this.model + \")\";\n }\n }\n );\n\n //==============================================================================\n return {\n UserQuotaMeter: UserQuotaMeter\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./galaxy/scripts/mvc/user/user-quotameter.js"],"sourceRoot":""} \ No newline at end of file From a7a5141ef15c3f913b040ecd7f27c1dcb1a4b878 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 11:35:25 -0400 Subject: [PATCH 04/24] Add create folder from controller to api --- .../webapps/galaxy/api/library_contents.py | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 56dc0e681ec4..934e45df639d 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -246,7 +246,7 @@ def create(self, trans, library_id, payload, **kwd): if create_type == 'file': status, output = trans.webapp.controllers['library_common'].upload_library_dataset(trans, 'api', library_id, real_folder_id, **payload) elif create_type == 'folder': - status, output = trans.webapp.controllers['library_common'].create_folder(trans, 'api', real_folder_id, library_id, **payload) + status, output = self.create_folder(trans, real_folder_id, library_id, **payload) elif create_type == 'collection': # Not delegating to library_common, so need to check access to parent # folder here. @@ -283,6 +283,32 @@ def create(self, trans, library_id, payload, **kwd): url=url_for('library_content', library_id=library_id, id=encoded_id))) return rval + def _create_folder(self, trans, parent_id, library_id, **kwd): + show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) + use_panels = util.string_as_bool(kwd.get('use_panels', False)) + is_admin = trans.user_is_admin() and cntrller in ('library_admin', 'api') + current_user_roles = trans.get_current_user_roles() + try: + parent_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(parent_id)) + except Exception: + parent_folder = None + # Check the library which actually contains the user-supplied parent folder, not the user-supplied + # library, which could be anything. + self._check_access(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) + self._check_add(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) + new_folder = trans.app.model.LibraryFolder(name=kwd.get('name', ''), + description=kwd.get('description', '')) + # We are associating the last used genome build with folders, so we will always + # initialize a new folder with the first dbkey in genome builds list which is currently + # ? unspecified (?) + new_folder.genome_build = trans.app.genome_builds.default_value + parent_folder.add_folder(new_folder) + trans.sa_session.add(new_folder) + trans.sa_session.flush() + # New folders default to having the same permissions as their parent folder + trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder) + return 200, dict(created=new_folder) + def _scan_json_block(self, meta, prefix=""): """ Scan a json style data structure, and emit all fields and their values. From db3bb5ff433296df4b6265512dba2fc096ab6f03 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 11:41:27 -0400 Subject: [PATCH 05/24] Move checks from controller, possible bug found --- .../webapps/galaxy/api/library_contents.py | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 934e45df639d..29345a39d13d 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -284,9 +284,7 @@ def create(self, trans, library_id, payload, **kwd): return rval def _create_folder(self, trans, parent_id, library_id, **kwd): - show_deleted = util.string_as_bool(kwd.get('show_deleted', False)) - use_panels = util.string_as_bool(kwd.get('use_panels', False)) - is_admin = trans.user_is_admin() and cntrller in ('library_admin', 'api') + is_admin = trans.user_is_admin() current_user_roles = trans.get_current_user_roles() try: parent_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(parent_id)) @@ -294,8 +292,8 @@ def _create_folder(self, trans, parent_id, library_id, **kwd): parent_folder = None # Check the library which actually contains the user-supplied parent folder, not the user-supplied # library, which could be anything. - self._check_access(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) - self._check_add(trans, cntrller, is_admin, parent_folder, current_user_roles, use_panels, library_id, show_deleted) + self._check_access(trans, is_admin, parent_folder, current_user_roles) + self._check_add(trans, is_admin, parent_folder, current_user_roles) new_folder = trans.app.model.LibraryFolder(name=kwd.get('name', ''), description=kwd.get('description', '')) # We are associating the last used genome build with folders, so we will always @@ -309,6 +307,39 @@ def _create_folder(self, trans, parent_id, library_id, **kwd): trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder) return 200, dict(created=new_folder) + def _check_access(self, trans, is_admin, item, current_user_roles): + can_access = True + if isinstance(item, trans.model.HistoryDatasetAssociation): + # Make sure the user has the DATASET_ACCESS permission on the history_dataset_association. + if not item: + message = "Invalid history dataset (%s) specified." % escape(str(item)) + can_access = False + elif not trans.app.security_agent.can_access_dataset(current_user_roles, item.dataset) and item.history.user == trans.user: + message = "You do not have permission to access the history dataset with id (%s)." % str(item.id) + can_access = False + else: + # Make sure the user has the LIBRARY_ACCESS permission on the library item. + if not item: + message = "Invalid library item (%s) specified." % escape(str(item)) + can_access = False + elif not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, item, trans.user)): + if isinstance(item, trans.model.Library): + item_type = 'data library' + elif isinstance(item, trans.model.LibraryFolder): + item_type = 'folder' + else: + item_type = '(unknown item type)' + message = "You do not have permission to access the %s with id (%s)." % (escape(item_type), str(item.id)) + can_access = False + if not can_access: + return 400, message + + def _check_add(self, trans, is_admin, item, current_user_roles): + # Deny access if the user is not an admin and does not have the LIBRARY_ADD permission. + if not (is_admin or trans.app.security_agent.can_add_library_item(current_user_roles, item)): + message = "You are not authorized to add an item to (%s)." % escape(item.name) + return 403, message + def _scan_json_block(self, meta, prefix=""): """ Scan a json style data structure, and emit all fields and their values. From b88cbaef7eef341c94e1bb9c4f1754293454b870 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 11:57:51 -0400 Subject: [PATCH 06/24] Remove mako related controller options --- .../webapps/galaxy/api/library_contents.py | 238 +++++++++++++++++- 1 file changed, 235 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 29345a39d13d..948696a5aaf6 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -3,11 +3,32 @@ """ import logging +import json +import os.path +from markupsafe import escape + +from galaxy import util, web +from galaxy.tools.actions import upload_common +from galaxy.tools.parameters import populate_state +from galaxy.util.path import ( + safe_contains, + safe_relpath, + unsafe_walk +) +from galaxy.web.base.controller import ( + BaseUIController, + UsesExtendedMetadataMixin, + UsesFormDefinitionsMixin, + UsesLibraryMixinItems +) +from galaxy.web.form_builder import ( + AddressField, + CheckboxField, +) from sqlalchemy.orm.exc import ( MultipleResultsFound, NoResultFound, ) - from galaxy import ( exceptions, managers, @@ -244,9 +265,9 @@ def create(self, trans, library_id, payload, **kwd): # Now create the desired content object, either file or folder. if create_type == 'file': - status, output = trans.webapp.controllers['library_common'].upload_library_dataset(trans, 'api', library_id, real_folder_id, **payload) + status, output = self._upload_library_dataset(trans, library_id, real_folder_id, **payload) elif create_type == 'folder': - status, output = self.create_folder(trans, real_folder_id, library_id, **payload) + status, output = self._create_folder(trans, real_folder_id, library_id, **payload) elif create_type == 'collection': # Not delegating to library_common, so need to check access to parent # folder here. @@ -283,6 +304,217 @@ def create(self, trans, library_id, payload, **kwd): url=url_for('library_content', library_id=library_id, id=encoded_id))) return rval + def _upload_library_dataset(self, trans, library_id, folder_id, **kwd): + replace_id = kwd.get('replace_id', None) + replace_dataset = None + upload_option = kwd.get('upload_option', 'upload_file') + if kwd.get('files_0|uni_to_posix', False): + to_posix_lines = kwd.get('files_0|to_posix_lines', '') + else: + to_posix_lines = kwd.get('to_posix_lines', '') + if kwd.get('files_0|space_to_tab', False): + space_to_tab = kwd.get('files_0|space_to_tab', '') + else: + space_to_tab = kwd.get('space_to_tab', '') + link_data_only = kwd.get('link_data_only', 'copy_files') + dbkey = kwd.get('dbkey', '?') + if isinstance(dbkey, list): + last_used_build = dbkey[0] + else: + last_used_build = dbkey + roles = kwd.get('roles', '') + is_admin = trans.user_is_admin() + current_user_roles = trans.get_current_user_roles() + widgets = [] + info_association, inherited = None, None + template_id = "None" + if replace_id not in ['', None, 'None']: + replace_dataset = trans.sa_session.query(trans.app.model.LibraryDataset).get(trans.security.decode_id(replace_id)) + self._check_access(trans, is_admin, replace_dataset, current_user_roles) + self._check_modify(trans, is_admin, replace_dataset, current_user_roles) + library = replace_dataset.folder.parent_library + folder = replace_dataset.folder + info_association, inherited = replace_dataset.library_dataset_dataset_association.get_info_association() + if info_association and (not(inherited) or info_association.inheritable): + widgets = replace_dataset.library_dataset_dataset_association.get_template_widgets(trans) + # The name is stored - by the time the new ldda is created, replace_dataset.name + # will point to the new ldda, not the one it's replacing. + replace_dataset_name = replace_dataset.name + if not last_used_build: + last_used_build = replace_dataset.library_dataset_dataset_association.dbkey + else: + folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(folder_id)) + self._check_access(trans, is_admin, folder, current_user_roles) + self._check_add(trans, is_admin, folder, current_user_roles) + library = folder.parent_library + if folder and last_used_build in ['None', None, '?']: + last_used_build = folder.genome_build + error = False + if upload_option == 'upload_paths' and not trans.app.config.allow_library_path_paste: + error = True + message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' + elif upload_option == 'upload_paths' and not is_admin: + error = True + message = 'Uploading files via filesystem paths can only be performed by administrators' + elif upload_option not in ('upload_file', 'upload_directory', 'upload_paths'): + error = True + message = 'Invalid upload_option' + elif roles: + # Check to see if the user selected roles to associate with the DATASET_ACCESS permission + # on the dataset that would cause accessibility issues. + vars = dict(DATASET_ACCESS_in=roles) + permissions, in_roles, error, message = \ + trans.app.security_agent.derive_roles_from_access(trans, library.id, cntrller, library=True, **vars) + if error: + return 400, message + else: + # See if we have any inherited templates. + if not info_association: + info_association, inherited = folder.get_info_association(inherited=True) + if info_association and info_association.inheritable: + template_id = str(info_association.template.id) + widgets = folder.get_template_widgets(trans, get_contents=True) + processed_widgets = [] + # The list of widgets may include an AddressField which we need to save if it is new + for index, widget_dict in enumerate(widgets): + widget = widget_dict['widget'] + if isinstance(widget, AddressField): + value = kwd.get(widget.name, '') + if value == 'new': + if self.field_param_values_ok(widget.name, 'AddressField', **kwd): + # Save the new address + address = trans.app.model.UserAddress(user=trans.user) + self.save_widget_field(trans, address, widget.name, **kwd) + widget.value = str(address.id) + widget_dict['widget'] = widget + processed_widgets.append(widget_dict) + # It is now critical to update the value of 'field_%i', replacing the string + # 'new' with the new address id. This is necessary because the upload_dataset() + # method below calls the handle_library_params() method, which does not parse the + # widget fields, it instead pulls form values from kwd. See the FIXME comments in the + # handle_library_params() method, and the CheckboxField code in the next conditional. + kwd[widget.name] = str(address.id) + else: + # The invalid address won't be saved, but we cannot display error + # messages on the upload form due to the ajax upload already occurring. + # When we re-engineer the upload process ( currently under way ), we + # will be able to check the form values before the ajax upload occurs + # in the background. For now, we'll do nothing... + pass + elif isinstance(widget, CheckboxField): + # We need to check the value from kwd since util.Params would have munged the list if + # the checkbox is checked. + value = kwd.get(widget.name, '') + if CheckboxField.is_checked(value): + widget.value = 'true' + widget_dict['widget'] = widget + processed_widgets.append(widget_dict) + kwd[widget.name] = 'true' + else: + processed_widgets.append(widget_dict) + widgets = processed_widgets + created_outputs_dict = self._upload_dataset(trans, + library_id=trans.security.encode_id(library.id), + folder_id=trans.security.encode_id(folder.id), + template_id=template_id, + widgets=widgets, + replace_dataset=replace_dataset, + **kwd) + if created_outputs_dict: + if type(created_outputs_dict) == str: + return 400, created_outputs_dict + elif type(created_outputs_dict) == tuple: + return created_outputs_dict[0], created_outputs_dict[1] + return 200, created_outputs_dict + else: + return 400, "Upload failed" + + def _upload_dataset(self, trans, library_id, folder_id, replace_dataset=None, **kwd): + # Set up the traditional tool state/params + cntrller = 'api' + tool_id = 'upload1' + tool = trans.app.toolbox.get_tool(tool_id) + state = tool.new_state(trans) + populate_state(trans, tool.inputs, kwd, state.inputs) + tool_params = state.inputs + dataset_upload_inputs = [] + for input_name, input in tool.inputs.items(): + if input.type == "upload_dataset": + dataset_upload_inputs.append(input) + # Library-specific params + server_dir = kwd.get('server_dir', '') + if replace_dataset not in [None, 'None']: + replace_id = trans.security.encode_id(replace_dataset.id) + else: + replace_id = None + upload_option = kwd.get('upload_option', 'upload_file') + response_code = 200 + if upload_option == 'upload_directory': + if server_dir in [None, 'None', '']: + response_code = 400 + if trans.user_is_admin(): + import_dir = trans.app.config.library_import_dir + import_dir_desc = 'library_import_dir' + else: + import_dir = trans.app.config.user_library_import_dir + if server_dir != trans.user.email: + import_dir = os.path.join(import_dir, trans.user.email) + import_dir_desc = 'user_library_import_dir' + full_dir = os.path.join(import_dir, server_dir) + unsafe = None + if safe_relpath(server_dir): + if import_dir_desc == 'user_library_import_dir' and safe_contains(import_dir, full_dir, whitelist=trans.app.config.user_library_import_symlink_whitelist): + for unsafe in unsafe_walk(full_dir, whitelist=[import_dir] + trans.app.config.user_library_import_symlink_whitelist): + log.error('User attempted to import a path that resolves to a path outside of their import dir: %s -> %s', unsafe, os.path.realpath(unsafe)) + else: + log.error('User attempted to import a directory path that resolves to a path outside of their import dir: %s -> %s', server_dir, os.path.realpath(full_dir)) + unsafe = True + if unsafe: + response_code = 403 + message = 'Invalid server_dir' + if import_dir: + message = 'Select a directory' + else: + response_code = 403 + message = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc + elif upload_option == 'upload_paths': + if not trans.app.config.allow_library_path_paste: + response_code = 403 + message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' + # Some error handling should be added to this method. + try: + # FIXME: instead of passing params here ( which have been processed by util.Params(), the original kwd + # should be passed so that complex objects that may have been included in the initial request remain. + library_bunch = upload_common.handle_library_params(trans, kwd, folder_id, replace_dataset) + except Exception: + response_code = 500 + message = "Unable to parse upload parameters, please report this error." + # Proceed with (mostly) regular upload processing if we're still errorless + if response_code == 200: + precreated_datasets = upload_common.get_precreated_datasets(trans, tool_params, trans.app.model.LibraryDatasetDatasetAssociation, controller=cntrller) + if upload_option == 'upload_file': + tool_params = upload_common.persist_uploads(tool_params, trans) + uploaded_datasets = upload_common.get_uploaded_datasets(trans, cntrller, tool_params, precreated_datasets, dataset_upload_inputs, library_bunch=library_bunch) + elif upload_option == 'upload_directory': + uploaded_datasets, response_code, message = self.get_server_dir_uploaded_datasets(trans, cntrller, kwd, full_dir, import_dir_desc, library_bunch, response_code, message) + elif upload_option == 'upload_paths': + uploaded_datasets, response_code, message = self.get_path_paste_uploaded_datasets(trans, cntrller, kwd, library_bunch, response_code, message) + upload_common.cleanup_unused_precreated_datasets(precreated_datasets) + if upload_option == 'upload_file' and not uploaded_datasets: + response_code = 400 + message = 'Select a file, enter a URL or enter text' + if response_code != 200: + return (response_code, message) + json_file_path = upload_common.create_paramfile(trans, uploaded_datasets) + data_list = [ud.data for ud in uploaded_datasets] + job_params = {} + job_params['link_data_only'] = json.dumps(kwd.get('link_data_only', 'copy_files')) + job_params['uuid'] = json.dumps(kwd.get('uuid', None)) + job, output = upload_common.create_job(trans, tool_params, tool, json_file_path, data_list, folder=library_bunch.folder, job_params=job_params) + trans.sa_session.add(job) + trans.sa_session.flush() + return output + def _create_folder(self, trans, parent_id, library_id, **kwd): is_admin = trans.user_is_admin() current_user_roles = trans.get_current_user_roles() From ab432bf895887a4533d72eda5874aafad1ebb6f1 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 12:11:26 -0400 Subject: [PATCH 07/24] Move api calls to legacy controller to api endpoint --- .../webapps/galaxy/api/library_datasets.py | 100 +++++++++++++++++- 1 file changed, 95 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index b4970a1aee3d..212e2d9bdf0b 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -476,12 +476,12 @@ def load(self, trans, payload=None, **kwd): # user wants to import one file only elif source in ["userdir_file", "importdir_file"]: file = os.path.abspath(path) - abspath_datasets.append(trans.webapp.controllers['library_common'].make_library_uploaded_dataset( + abspath_datasets.append(self._make_library_uploaded_dataset( trans, 'api', kwd, os.path.basename(file), file, 'server_dir', library_bunch)) # user wants to import whole folder elif source == "userdir_folder": - uploaded_datasets_bunch = trans.webapp.controllers['library_common'].get_path_paste_uploaded_datasets( - trans, 'api', kwd, library_bunch, 200, '') + uploaded_datasets_bunch = self._get_path_paste_uploaded_datasets( + trans, kwd, library_bunch, 200, '') uploaded_datasets = uploaded_datasets_bunch[0] if uploaded_datasets is None: raise exceptions.ObjectNotFound('Given folder does not contain any datasets.') @@ -491,8 +491,8 @@ def load(self, trans, payload=None, **kwd): # user wants to import from path if source in ["admin_path", "importdir_folder"]: # validate the path is within root - uploaded_datasets_bunch = trans.webapp.controllers['library_common'].get_path_paste_uploaded_datasets( - trans, 'api', kwd, library_bunch, 200, '') + uploaded_datasets_bunch = self._get_path_paste_uploaded_datasets( + trans, kwd, library_bunch, 200, '') uploaded_datasets = uploaded_datasets_bunch[0] if uploaded_datasets is None: raise exceptions.ObjectNotFound('Given folder does not contain any datasets.') @@ -511,6 +511,96 @@ def load(self, trans, payload=None, **kwd): job_dict['id'] = trans.security.encode_id(job_dict['id']) return job_dict + def _get_path_paste_uploaded_datasets(self, trans, params, library_bunch, response_code, message): + preserve_dirs = util.string_as_bool(params.get('preserve_dirs', False)) + uploaded_datasets = [] + (files_and_folders, _response_code, _message) = self._get_path_files_and_folders(params, preserve_dirs) + if _response_code: + return (uploaded_datasets, _response_code, _message) + for (path, name, folder) in files_and_folders: + uploaded_datasets.append(self.make_library_uploaded_dataset(trans, 'api', params, name, path, 'path_paste', library_bunch, folder)) + return uploaded_datasets, 200, None + + def _get_path_files_and_folders(self, params, preserve_dirs): + problem_response = self._check_path_paste_params(params) + if problem_response: + return problem_response + files_and_folders = [] + for (line, path) in self._paths_list(params): + line_files_and_folders = self._get_single_path_files_and_folders(line, path, preserve_dirs) + files_and_folders.extend(line_files_and_folders) + return files_and_folders, None, None + + def _get_single_path_files_and_folders(self, line, path, preserve_dirs): + files_and_folders = [] + if os.path.isfile(path): + name = os.path.basename(path) + files_and_folders.append((path, name, None)) + for basedir, dirs, files in os.walk(line): + for file in files: + file_path = os.path.abspath(os.path.join(basedir, file)) + if preserve_dirs: + in_folder = os.path.dirname(file_path.replace(path, '', 1).lstrip('/')) + else: + in_folder = None + files_and_folders.append((file_path, file, in_folder)) + return files_and_folders + + def _paths_list(self, params): + return [(l.strip(), os.path.abspath(l.strip())) for l in params.get('filesystem_paths', '').splitlines() if l.strip()] + + def _check_path_paste_params(self, params): + if params.get('filesystem_paths', '') == '': + message = "No paths entered in the upload form" + response_code = 400 + return None, response_code, message + bad_paths = [] + for (_, path) in self._paths_list(params): + if not os.path.exists(path): + bad_paths.append(path) + if bad_paths: + message = 'Invalid paths: "%s".' % '", "'.join(bad_paths) + response_code = 400 + return None, response_code, message + return None + + def _make_library_uploaded_dataset(self, trans, params, name, path, type, library_bunch, in_folder=None): + link_data_only = params.get('link_data_only', 'copy_files') + uuid_str = params.get('uuid', None) + file_type = params.get('file_type', None) + library_bunch.replace_dataset = None # not valid for these types of upload + uploaded_dataset = util.bunch.Bunch() + new_name = name + # Remove compressed file extensions, if any, but only if + # we're copying files into Galaxy's file space. + if link_data_only == 'copy_files': + if new_name.endswith('.gz'): + new_name = new_name.rstrip('.gz') + elif new_name.endswith('.zip'): + new_name = new_name.rstrip('.zip') + uploaded_dataset.name = new_name + uploaded_dataset.path = path + uploaded_dataset.type = type + uploaded_dataset.ext = None + uploaded_dataset.file_type = file_type + uploaded_dataset.dbkey = params.get('dbkey', None) + uploaded_dataset.to_posix_lines = params.get('to_posix_lines', None) + uploaded_dataset.space_to_tab = params.get('space_to_tab', None) + uploaded_dataset.tag_using_filenames = params.get('tag_using_filenames', True) + if in_folder: + uploaded_dataset.in_folder = in_folder + uploaded_dataset.data = upload_common.new_upload(trans, 'api', uploaded_dataset, library_bunch) + uploaded_dataset.link_data_only = link_data_only + uploaded_dataset.uuid = uuid_str + if link_data_only == 'link_to_files': + uploaded_dataset.data.file_name = os.path.abspath(path) + # Since we are not copying the file into Galaxy's managed + # default file location, the dataset should never be purgable. + uploaded_dataset.data.dataset.purgable = False + trans.sa_session.add_all((uploaded_dataset.data, uploaded_dataset.data.dataset)) + trans.sa_session.flush() + return uploaded_dataset + @web.expose # TODO convert to expose_api def download(self, trans, format, **kwd): From e7ec08b28e7dca28f5a068f73d7911696fcb3793 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 12:12:18 -0400 Subject: [PATCH 08/24] Fix caller --- lib/galaxy/webapps/galaxy/api/library_datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index 212e2d9bdf0b..d17566789b17 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -518,7 +518,7 @@ def _get_path_paste_uploaded_datasets(self, trans, params, library_bunch, respon if _response_code: return (uploaded_datasets, _response_code, _message) for (path, name, folder) in files_and_folders: - uploaded_datasets.append(self.make_library_uploaded_dataset(trans, 'api', params, name, path, 'path_paste', library_bunch, folder)) + uploaded_datasets.append(self._make_library_uploaded_dataset(trans, 'api', params, name, path, 'path_paste', library_bunch, folder)) return uploaded_datasets, 200, None def _get_path_files_and_folders(self, params, preserve_dirs): From c7ca7a6a09bfd5a5022eb376883726359b415e0a Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 12:59:38 -0400 Subject: [PATCH 09/24] Remove unused variables --- lib/galaxy/webapps/galaxy/api/library_contents.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 948696a5aaf6..1012384122c6 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -308,15 +308,6 @@ def _upload_library_dataset(self, trans, library_id, folder_id, **kwd): replace_id = kwd.get('replace_id', None) replace_dataset = None upload_option = kwd.get('upload_option', 'upload_file') - if kwd.get('files_0|uni_to_posix', False): - to_posix_lines = kwd.get('files_0|to_posix_lines', '') - else: - to_posix_lines = kwd.get('to_posix_lines', '') - if kwd.get('files_0|space_to_tab', False): - space_to_tab = kwd.get('files_0|space_to_tab', '') - else: - space_to_tab = kwd.get('space_to_tab', '') - link_data_only = kwd.get('link_data_only', 'copy_files') dbkey = kwd.get('dbkey', '?') if isinstance(dbkey, list): last_used_build = dbkey[0] @@ -364,7 +355,7 @@ def _upload_library_dataset(self, trans, library_id, folder_id, **kwd): # on the dataset that would cause accessibility issues. vars = dict(DATASET_ACCESS_in=roles) permissions, in_roles, error, message = \ - trans.app.security_agent.derive_roles_from_access(trans, library.id, cntrller, library=True, **vars) + trans.app.security_agent.derive_roles_from_access(trans, library.id, 'api', library=True, **vars) if error: return 400, message else: @@ -443,10 +434,6 @@ def _upload_dataset(self, trans, library_id, folder_id, replace_dataset=None, ** dataset_upload_inputs.append(input) # Library-specific params server_dir = kwd.get('server_dir', '') - if replace_dataset not in [None, 'None']: - replace_id = trans.security.encode_id(replace_dataset.id) - else: - replace_id = None upload_option = kwd.get('upload_option', 'upload_file') response_code = 200 if upload_option == 'upload_directory': From b1ccba39dcebb888a5daf3ed2d41c5594e3be6f4 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 13:14:51 -0400 Subject: [PATCH 10/24] Remove unused imports --- lib/galaxy/webapps/galaxy/api/library_contents.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 1012384122c6..b89bcc887696 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -7,7 +7,6 @@ import os.path from markupsafe import escape -from galaxy import util, web from galaxy.tools.actions import upload_common from galaxy.tools.parameters import populate_state from galaxy.util.path import ( @@ -15,12 +14,7 @@ safe_relpath, unsafe_walk ) -from galaxy.web.base.controller import ( - BaseUIController, - UsesExtendedMetadataMixin, - UsesFormDefinitionsMixin, - UsesLibraryMixinItems -) + from galaxy.web.form_builder import ( AddressField, CheckboxField, @@ -49,13 +43,14 @@ HTTPBadRequest, url_for, UsesLibraryMixin, - UsesLibraryMixinItems + UsesLibraryMixinItems, + UsesFormDefinitionsMixin ) log = logging.getLogger(__name__) -class LibraryContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryMixinItems): +class LibraryContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryMixinItems, UsesFormDefinitionsMixin): def __init__(self, app): super(LibraryContentsController, self).__init__(app) From 72ba00eed23564a8631af7f6a144d2fa987f5652 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 13:15:13 -0400 Subject: [PATCH 11/24] Remove unused variables --- lib/galaxy/webapps/galaxy/api/library_contents.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index b89bcc887696..1a64ded06195 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -325,7 +325,6 @@ def _upload_library_dataset(self, trans, library_id, folder_id, **kwd): widgets = replace_dataset.library_dataset_dataset_association.get_template_widgets(trans) # The name is stored - by the time the new ldda is created, replace_dataset.name # will point to the new ldda, not the one it's replacing. - replace_dataset_name = replace_dataset.name if not last_used_build: last_used_build = replace_dataset.library_dataset_dataset_association.dbkey else: From 0ea7720bde2898a0ce5b4924ad4db65049bc7d01 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 13:39:29 -0400 Subject: [PATCH 12/24] Fix import order --- .../webapps/galaxy/api/library_contents.py | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 1a64ded06195..7b263f6ff4ec 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -1,24 +1,10 @@ """ API operations on the contents of a data library. """ -import logging - import json +import logging import os.path from markupsafe import escape - -from galaxy.tools.actions import upload_common -from galaxy.tools.parameters import populate_state -from galaxy.util.path import ( - safe_contains, - safe_relpath, - unsafe_walk -) - -from galaxy.web.form_builder import ( - AddressField, - CheckboxField, -) from sqlalchemy.orm.exc import ( MultipleResultsFound, NoResultFound, @@ -37,14 +23,25 @@ ExtendedMetadata, ExtendedMetadataIndex ) +from galaxy.tools.actions import upload_common +from galaxy.tools.parameters import populate_state +from galaxy.util.path import ( + safe_contains, + safe_relpath, + unsafe_walk +) from galaxy.web import _future_expose_api as expose_api +from galaxy.web.form_builder import ( + AddressField, + CheckboxField, +) from galaxy.web.base.controller import ( BaseAPIController, HTTPBadRequest, url_for, + UsesFormDefinitionsMixin, UsesLibraryMixin, - UsesLibraryMixinItems, - UsesFormDefinitionsMixin + UsesLibraryMixinItems ) log = logging.getLogger(__name__) From 6c96130591e1051c8d4f1045cc5f119dadc44139 Mon Sep 17 00:00:00 2001 From: guerler Date: Wed, 1 Nov 2017 17:03:20 -0400 Subject: [PATCH 13/24] Fix order --- lib/galaxy/webapps/galaxy/api/library_contents.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 7b263f6ff4ec..4e99ed052e64 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -31,10 +31,6 @@ unsafe_walk ) from galaxy.web import _future_expose_api as expose_api -from galaxy.web.form_builder import ( - AddressField, - CheckboxField, -) from galaxy.web.base.controller import ( BaseAPIController, HTTPBadRequest, @@ -43,6 +39,10 @@ UsesLibraryMixin, UsesLibraryMixinItems ) +from galaxy.web.form_builder import ( + AddressField, + CheckboxField, +) log = logging.getLogger(__name__) From 5758f79fe157b3ee05e4f0f6f608269fadfd5dd0 Mon Sep 17 00:00:00 2001 From: guerler Date: Sat, 4 Nov 2017 21:53:45 -0400 Subject: [PATCH 14/24] Remove info statement for legacy data library interface --- templates/webapps/galaxy/admin/center.mako | 3 --- 1 file changed, 3 deletions(-) diff --git a/templates/webapps/galaxy/admin/center.mako b/templates/webapps/galaxy/admin/center.mako index 9c6534f5983c..39b650ae8360 100644 --- a/templates/webapps/galaxy/admin/center.mako +++ b/templates/webapps/galaxy/admin/center.mako @@ -16,9 +16,6 @@ Please visit the Galax
  • Data tables - See all data tables available in this Galaxy.
  • -
  • - Data libraries - Data libraries enable authorized Galaxy users to share datasets with other groups or users. Only administrators can create data libraries. See wiki for details. -
  • Display applications - See all display applications configured in this Galaxy.
  • From 890197c16c736d2250e49897633077a48aa9f37f Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 6 Nov 2017 11:24:29 -0500 Subject: [PATCH 15/24] Remove explicit controller name parsing for api --- lib/galaxy/webapps/galaxy/api/library_datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index d17566789b17..2204906468a2 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -477,7 +477,7 @@ def load(self, trans, payload=None, **kwd): elif source in ["userdir_file", "importdir_file"]: file = os.path.abspath(path) abspath_datasets.append(self._make_library_uploaded_dataset( - trans, 'api', kwd, os.path.basename(file), file, 'server_dir', library_bunch)) + trans, kwd, os.path.basename(file), file, 'server_dir', library_bunch)) # user wants to import whole folder elif source == "userdir_folder": uploaded_datasets_bunch = self._get_path_paste_uploaded_datasets( @@ -518,7 +518,7 @@ def _get_path_paste_uploaded_datasets(self, trans, params, library_bunch, respon if _response_code: return (uploaded_datasets, _response_code, _message) for (path, name, folder) in files_and_folders: - uploaded_datasets.append(self._make_library_uploaded_dataset(trans, 'api', params, name, path, 'path_paste', library_bunch, folder)) + uploaded_datasets.append(self._make_library_uploaded_dataset(trans, params, name, path, 'path_paste', library_bunch, folder)) return uploaded_datasets, 200, None def _get_path_files_and_folders(self, params, preserve_dirs): From d0a80fa273d3542f37782b2faa9d01763e1a185e Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 7 Nov 2017 10:39:43 -0500 Subject: [PATCH 16/24] Remove unused whoosh indexing config options --- lib/galaxy/config.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/galaxy/config.py b/lib/galaxy/config.py index e8a6ac8e32c9..f0837fb63e98 100644 --- a/lib/galaxy/config.py +++ b/lib/galaxy/config.py @@ -404,8 +404,6 @@ def __init__(self, **kwargs): self.user_library_import_symlink_whitelist = listify(kwargs.get('user_library_import_symlink_whitelist', []), do_strip=True) # Searching data libraries self.enable_lucene_library_search = string_as_bool(kwargs.get('enable_lucene_library_search', False)) - self.enable_whoosh_library_search = string_as_bool(kwargs.get('enable_whoosh_library_search', False)) - self.whoosh_index_dir = resolve_path(kwargs.get("whoosh_index_dir", "database/whoosh_indexes"), self.root) self.ftp_upload_dir = kwargs.get('ftp_upload_dir', None) self.ftp_upload_dir_identifier = kwargs.get('ftp_upload_dir_identifier', 'email') # attribute on user - email, username, id, etc... self.ftp_upload_dir_template = kwargs.get('ftp_upload_dir_template', '${ftp_upload_dir}%s${ftp_upload_dir_identifier}' % os.path.sep) From dd0649c680e2a0975f97bba3337145adc0eaad8b Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 7 Nov 2017 10:40:11 -0500 Subject: [PATCH 17/24] Remove from galaxy.ini --- config/galaxy.ini.sample | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config/galaxy.ini.sample b/config/galaxy.ini.sample index 92dc7133e6f5..f9fea0150c88 100644 --- a/config/galaxy.ini.sample +++ b/config/galaxy.ini.sample @@ -951,11 +951,6 @@ use_interactive = True # communicate with this manager over the port specified here. #transfer_manager_port = 8163 -# Search data libraries with whoosh -#enable_whoosh_library_search = True -# Whoosh indexes are stored in this directory. -#whoosh_index_dir = database/whoosh_indexes - # Search data libraries with lucene #enable_lucene_library_search = False # maximum file size to index for searching, in MB From 8422feb46bf57e1a248ccbb62e1b59bf8bf1f119 Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 7 Nov 2017 10:52:28 -0500 Subject: [PATCH 18/24] Remove whoosh from directory creation method --- lib/galaxy/config.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/galaxy/config.py b/lib/galaxy/config.py index f0837fb63e98..13d61b3dee24 100644 --- a/lib/galaxy/config.py +++ b/lib/galaxy/config.py @@ -757,8 +757,7 @@ def check(self): # Create the directories that it makes sense to create for path in (self.new_file_path, self.template_cache, self.ftp_upload_dir, self.library_import_dir, self.user_library_import_dir, - self.nginx_upload_store, self.whoosh_index_dir, - self.object_store_cache_path): + self.nginx_upload_store, self.object_store_cache_path): self._ensure_directory(path) # Check that required files exist tool_configs = self.tool_configs From 4b30e84a657a544543eae92319c298c9b02d82cf Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 7 Nov 2017 13:22:45 -0500 Subject: [PATCH 19/24] Remove other unused library config options --- config/galaxy.ini.sample | 8 -------- lib/galaxy/config.py | 1 - 2 files changed, 9 deletions(-) diff --git a/config/galaxy.ini.sample b/config/galaxy.ini.sample index f9fea0150c88..4a3691e9e830 100644 --- a/config/galaxy.ini.sample +++ b/config/galaxy.ini.sample @@ -951,14 +951,6 @@ use_interactive = True # communicate with this manager over the port specified here. #transfer_manager_port = 8163 -# Search data libraries with lucene -#enable_lucene_library_search = False -# maximum file size to index for searching, in MB -#fulltext_max_size = 500 -#fulltext_noindex_filetypes = bam,sam,wig,bigwig,fasta,fastq,fastqsolexa,fastqillumina,fastqsanger -# base URL of server providing search functionality using lucene -#fulltext_url = http://localhost:8081 - # -- Toolbox Search # The following boosts are used to customize this instance's toolbox search. diff --git a/lib/galaxy/config.py b/lib/galaxy/config.py index 13d61b3dee24..7ae7a6fb08c4 100644 --- a/lib/galaxy/config.py +++ b/lib/galaxy/config.py @@ -403,7 +403,6 @@ def __init__(self, **kwargs): self.user_library_import_dir = kwargs.get('user_library_import_dir', None) self.user_library_import_symlink_whitelist = listify(kwargs.get('user_library_import_symlink_whitelist', []), do_strip=True) # Searching data libraries - self.enable_lucene_library_search = string_as_bool(kwargs.get('enable_lucene_library_search', False)) self.ftp_upload_dir = kwargs.get('ftp_upload_dir', None) self.ftp_upload_dir_identifier = kwargs.get('ftp_upload_dir_identifier', 'email') # attribute on user - email, username, id, etc... self.ftp_upload_dir_template = kwargs.get('ftp_upload_dir_template', '${ftp_upload_dir}%s${ftp_upload_dir_identifier}' % os.path.sep) From c9ab13fb411bab8a5e0021087f4c1bb6d4981315 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Nov 2017 17:34:49 -0500 Subject: [PATCH 20/24] Move shared actions to separate file --- database/info.txt | 1 - lib/galaxy/actions/library.py | 294 ++++++++++++++++++ .../webapps/galaxy/api/library_contents.py | 143 +-------- .../webapps/galaxy/api/library_datasets.py | 94 +----- 4 files changed, 298 insertions(+), 234 deletions(-) delete mode 100644 database/info.txt create mode 100644 lib/galaxy/actions/library.py diff --git a/database/info.txt b/database/info.txt deleted file mode 100644 index 5b316a096c27..000000000000 --- a/database/info.txt +++ /dev/null @@ -1 +0,0 @@ -This folder contains the data \ No newline at end of file diff --git a/lib/galaxy/actions/library.py b/lib/galaxy/actions/library.py new file mode 100644 index 000000000000..16732ba9d9f9 --- /dev/null +++ b/lib/galaxy/actions/library.py @@ -0,0 +1,294 @@ +""" +Contains administrative functions +""" +import json +import logging +import os.path +from markupsafe import escape +from sqlalchemy.orm.exc import ( + MultipleResultsFound, + NoResultFound, +) +from galaxy import ( + exceptions, + managers, + util, + web +) +from galaxy.managers.collections_util import ( + api_payload_to_create_params, + dictify_dataset_collection_instance +) +from galaxy.model import ( + ExtendedMetadata, + ExtendedMetadataIndex +) +from galaxy.tools.actions import upload_common +from galaxy.tools.parameters import populate_state +from galaxy.util.path import ( + safe_contains, + safe_relpath, + unsafe_walk +) +from galaxy.web import _future_expose_api as expose_api +from galaxy.web.base.controller import ( + BaseAPIController, + HTTPBadRequest, + url_for, + UsesFormDefinitionsMixin, + UsesLibraryMixin, + UsesLibraryMixinItems +) +from galaxy.web.form_builder import ( + AddressField, + CheckboxField, +) + +log = logging.getLogger(__name__) + + +class LibraryActions(object): + """ + Mixin for controllers that provide library functionality. + """ + + def _upload_dataset(self, trans, library_id, folder_id, replace_dataset=None, **kwd): + # Set up the traditional tool state/params + cntrller = 'api' + tool_id = 'upload1' + message = None + tool = trans.app.toolbox.get_tool(tool_id) + state = tool.new_state(trans) + populate_state(trans, tool.inputs, kwd, state.inputs) + tool_params = state.inputs + dataset_upload_inputs = [] + for input_name, input in tool.inputs.items(): + if input.type == "upload_dataset": + dataset_upload_inputs.append(input) + # Library-specific params + server_dir = kwd.get('server_dir', '') + upload_option = kwd.get('upload_option', 'upload_file') + response_code = 200 + if upload_option == 'upload_directory': + if server_dir in [None, 'None', '']: + response_code = 400 + if trans.user_is_admin(): + import_dir = trans.app.config.library_import_dir + import_dir_desc = 'library_import_dir' + else: + import_dir = trans.app.config.user_library_import_dir + if server_dir != trans.user.email: + import_dir = os.path.join(import_dir, trans.user.email) + import_dir_desc = 'user_library_import_dir' + full_dir = os.path.join(import_dir, server_dir) + unsafe = None + if safe_relpath(server_dir): + if import_dir_desc == 'user_library_import_dir' and safe_contains(import_dir, full_dir, whitelist=trans.app.config.user_library_import_symlink_whitelist): + for unsafe in unsafe_walk(full_dir, whitelist=[import_dir] + trans.app.config.user_library_import_symlink_whitelist): + log.error('User attempted to import a path that resolves to a path outside of their import dir: %s -> %s', unsafe, os.path.realpath(unsafe)) + else: + log.error('User attempted to import a directory path that resolves to a path outside of their import dir: %s -> %s', server_dir, os.path.realpath(full_dir)) + unsafe = True + if unsafe: + response_code = 403 + message = 'Invalid server_dir' + if import_dir: + message = 'Select a directory' + else: + response_code = 403 + message = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc + elif upload_option == 'upload_paths': + if not trans.app.config.allow_library_path_paste: + response_code = 403 + message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' + # Some error handling should be added to this method. + try: + # FIXME: instead of passing params here ( which have been processed by util.Params(), the original kwd + # should be passed so that complex objects that may have been included in the initial request remain. + library_bunch = upload_common.handle_library_params(trans, kwd, folder_id, replace_dataset) + except Exception: + response_code = 500 + message = "Unable to parse upload parameters, please report this error." + # Proceed with (mostly) regular upload processing if we're still errorless + if response_code == 200: + precreated_datasets = upload_common.get_precreated_datasets(trans, tool_params, trans.app.model.LibraryDatasetDatasetAssociation, controller=cntrller) + if upload_option == 'upload_file': + tool_params = upload_common.persist_uploads(tool_params, trans) + uploaded_datasets = upload_common.get_uploaded_datasets(trans, cntrller, tool_params, precreated_datasets, dataset_upload_inputs, library_bunch=library_bunch) + elif upload_option == 'upload_directory': + uploaded_datasets, response_code, message = self._get_server_dir_uploaded_datasets(trans, kwd, full_dir, import_dir_desc, library_bunch, response_code, message) + elif upload_option == 'upload_paths': + uploaded_datasets, response_code, message = self._get_path_paste_uploaded_datasets(trans, kwd, library_bunch, response_code, message) + upload_common.cleanup_unused_precreated_datasets(precreated_datasets) + if upload_option == 'upload_file' and not uploaded_datasets: + response_code = 400 + message = 'Select a file, enter a URL or enter text' + if response_code != 200: + return (response_code, message) + json_file_path = upload_common.create_paramfile(trans, uploaded_datasets) + data_list = [ud.data for ud in uploaded_datasets] + job_params = {} + job_params['link_data_only'] = json.dumps(kwd.get('link_data_only', 'copy_files')) + job_params['uuid'] = json.dumps(kwd.get('uuid', None)) + job, output = upload_common.create_job(trans, tool_params, tool, json_file_path, data_list, folder=library_bunch.folder, job_params=job_params) + trans.sa_session.add(job) + trans.sa_session.flush() + return output + + def _get_server_dir_uploaded_datasets(self, trans, params, full_dir, import_dir_desc, library_bunch, response_code, message): + dir_response = self._get_server_dir_files(params, full_dir, import_dir_desc) + files = dir_response[0] + if not files: + return dir_response + uploaded_datasets = [] + for file in files: + name = os.path.basename(file) + uploaded_datasets.append(self._make_library_uploaded_dataset(trans, params, name, file, 'server_dir', library_bunch)) + return uploaded_datasets, 200, None + + def _get_path_paste_uploaded_datasets(self, trans, params, library_bunch, response_code, message): + preserve_dirs = util.string_as_bool(params.get('preserve_dirs', False)) + uploaded_datasets = [] + (files_and_folders, _response_code, _message) = self._get_path_files_and_folders(params, preserve_dirs) + if _response_code: + return (uploaded_datasets, _response_code, _message) + for (path, name, folder) in files_and_folders: + uploaded_datasets.append(self._make_library_uploaded_dataset(trans, params, name, path, 'path_paste', library_bunch, folder)) + return uploaded_datasets, 200, None + + def _get_path_files_and_folders(self, params, preserve_dirs): + problem_response = self._check_path_paste_params(params) + if problem_response: + return problem_response + files_and_folders = [] + for (line, path) in self._paths_list(params): + line_files_and_folders = self._get_single_path_files_and_folders(line, path, preserve_dirs) + files_and_folders.extend(line_files_and_folders) + return files_and_folders, None, None + + def _get_single_path_files_and_folders(self, line, path, preserve_dirs): + files_and_folders = [] + if os.path.isfile(path): + name = os.path.basename(path) + files_and_folders.append((path, name, None)) + for basedir, dirs, files in os.walk(line): + for file in files: + file_path = os.path.abspath(os.path.join(basedir, file)) + if preserve_dirs: + in_folder = os.path.dirname(file_path.replace(path, '', 1).lstrip('/')) + else: + in_folder = None + files_and_folders.append((file_path, file, in_folder)) + return files_and_folders + + def _paths_list(self, params): + return [(l.strip(), os.path.abspath(l.strip())) for l in params.get('filesystem_paths', '').splitlines() if l.strip()] + + def _check_path_paste_params(self, params): + if params.get('filesystem_paths', '') == '': + message = "No paths entered in the upload form" + response_code = 400 + return None, response_code, message + bad_paths = [] + for (_, path) in self._paths_list(params): + if not os.path.exists(path): + bad_paths.append(path) + if bad_paths: + message = 'Invalid paths: "%s".' % '", "'.join(bad_paths) + response_code = 400 + return None, response_code, message + return None + + def _make_library_uploaded_dataset(self, trans, params, name, path, type, library_bunch, in_folder=None): + link_data_only = params.get('link_data_only', 'copy_files') + uuid_str = params.get('uuid', None) + file_type = params.get('file_type', None) + library_bunch.replace_dataset = None # not valid for these types of upload + uploaded_dataset = util.bunch.Bunch() + new_name = name + # Remove compressed file extensions, if any, but only if + # we're copying files into Galaxy's file space. + if link_data_only == 'copy_files': + if new_name.endswith('.gz'): + new_name = new_name.rstrip('.gz') + elif new_name.endswith('.zip'): + new_name = new_name.rstrip('.zip') + uploaded_dataset.name = new_name + uploaded_dataset.path = path + uploaded_dataset.type = type + uploaded_dataset.ext = None + uploaded_dataset.file_type = file_type + uploaded_dataset.dbkey = params.get('dbkey', None) + uploaded_dataset.to_posix_lines = params.get('to_posix_lines', None) + uploaded_dataset.space_to_tab = params.get('space_to_tab', None) + uploaded_dataset.tag_using_filenames = params.get('tag_using_filenames', True) + if in_folder: + uploaded_dataset.in_folder = in_folder + uploaded_dataset.data = upload_common.new_upload(trans, 'api', uploaded_dataset, library_bunch) + uploaded_dataset.link_data_only = link_data_only + uploaded_dataset.uuid = uuid_str + if link_data_only == 'link_to_files': + uploaded_dataset.data.file_name = os.path.abspath(path) + # Since we are not copying the file into Galaxy's managed + # default file location, the dataset should never be purgable. + uploaded_dataset.data.dataset.purgable = False + trans.sa_session.add_all((uploaded_dataset.data, uploaded_dataset.data.dataset)) + trans.sa_session.flush() + return uploaded_dataset + + def _create_folder(self, trans, parent_id, library_id, **kwd): + is_admin = trans.user_is_admin() + current_user_roles = trans.get_current_user_roles() + try: + parent_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(parent_id)) + except Exception: + parent_folder = None + # Check the library which actually contains the user-supplied parent folder, not the user-supplied + # library, which could be anything. + self._check_access(trans, is_admin, parent_folder, current_user_roles) + self._check_add(trans, is_admin, parent_folder, current_user_roles) + new_folder = trans.app.model.LibraryFolder(name=kwd.get('name', ''), + description=kwd.get('description', '')) + # We are associating the last used genome build with folders, so we will always + # initialize a new folder with the first dbkey in genome builds list which is currently + # ? unspecified (?) + new_folder.genome_build = trans.app.genome_builds.default_value + parent_folder.add_folder(new_folder) + trans.sa_session.add(new_folder) + trans.sa_session.flush() + # New folders default to having the same permissions as their parent folder + trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder) + return 200, dict(created=new_folder) + + def _check_access(self, trans, is_admin, item, current_user_roles): + can_access = True + if isinstance(item, trans.model.HistoryDatasetAssociation): + # Make sure the user has the DATASET_ACCESS permission on the history_dataset_association. + if not item: + message = "Invalid history dataset (%s) specified." % escape(str(item)) + can_access = False + elif not trans.app.security_agent.can_access_dataset(current_user_roles, item.dataset) and item.history.user == trans.user: + message = "You do not have permission to access the history dataset with id (%s)." % str(item.id) + can_access = False + else: + # Make sure the user has the LIBRARY_ACCESS permission on the library item. + if not item: + message = "Invalid library item (%s) specified." % escape(str(item)) + can_access = False + elif not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, item, trans.user)): + if isinstance(item, trans.model.Library): + item_type = 'data library' + elif isinstance(item, trans.model.LibraryFolder): + item_type = 'folder' + else: + item_type = '(unknown item type)' + message = "You do not have permission to access the %s with id (%s)." % (escape(item_type), str(item.id)) + can_access = False + if not can_access: + return 400, message + + def _check_add(self, trans, is_admin, item, current_user_roles): + # Deny access if the user is not an admin and does not have the LIBRARY_ADD permission. + if not (is_admin or trans.app.security_agent.can_add_library_item(current_user_roles, item)): + message = "You are not authorized to add an item to (%s)." % escape(item.name) + return 403, message diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 4e99ed052e64..7f8710907e15 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -43,11 +43,11 @@ AddressField, CheckboxField, ) - +from galaxy.actions.library import LibraryActions log = logging.getLogger(__name__) -class LibraryContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryMixinItems, UsesFormDefinitionsMixin): +class LibraryContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryMixinItems, UsesFormDefinitionsMixin, LibraryActions): def __init__(self, app): super(LibraryContentsController, self).__init__(app) @@ -411,145 +411,6 @@ def _upload_library_dataset(self, trans, library_id, folder_id, **kwd): else: return 400, "Upload failed" - def _upload_dataset(self, trans, library_id, folder_id, replace_dataset=None, **kwd): - # Set up the traditional tool state/params - cntrller = 'api' - tool_id = 'upload1' - tool = trans.app.toolbox.get_tool(tool_id) - state = tool.new_state(trans) - populate_state(trans, tool.inputs, kwd, state.inputs) - tool_params = state.inputs - dataset_upload_inputs = [] - for input_name, input in tool.inputs.items(): - if input.type == "upload_dataset": - dataset_upload_inputs.append(input) - # Library-specific params - server_dir = kwd.get('server_dir', '') - upload_option = kwd.get('upload_option', 'upload_file') - response_code = 200 - if upload_option == 'upload_directory': - if server_dir in [None, 'None', '']: - response_code = 400 - if trans.user_is_admin(): - import_dir = trans.app.config.library_import_dir - import_dir_desc = 'library_import_dir' - else: - import_dir = trans.app.config.user_library_import_dir - if server_dir != trans.user.email: - import_dir = os.path.join(import_dir, trans.user.email) - import_dir_desc = 'user_library_import_dir' - full_dir = os.path.join(import_dir, server_dir) - unsafe = None - if safe_relpath(server_dir): - if import_dir_desc == 'user_library_import_dir' and safe_contains(import_dir, full_dir, whitelist=trans.app.config.user_library_import_symlink_whitelist): - for unsafe in unsafe_walk(full_dir, whitelist=[import_dir] + trans.app.config.user_library_import_symlink_whitelist): - log.error('User attempted to import a path that resolves to a path outside of their import dir: %s -> %s', unsafe, os.path.realpath(unsafe)) - else: - log.error('User attempted to import a directory path that resolves to a path outside of their import dir: %s -> %s', server_dir, os.path.realpath(full_dir)) - unsafe = True - if unsafe: - response_code = 403 - message = 'Invalid server_dir' - if import_dir: - message = 'Select a directory' - else: - response_code = 403 - message = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc - elif upload_option == 'upload_paths': - if not trans.app.config.allow_library_path_paste: - response_code = 403 - message = '"allow_library_path_paste" is not defined in the Galaxy configuration file' - # Some error handling should be added to this method. - try: - # FIXME: instead of passing params here ( which have been processed by util.Params(), the original kwd - # should be passed so that complex objects that may have been included in the initial request remain. - library_bunch = upload_common.handle_library_params(trans, kwd, folder_id, replace_dataset) - except Exception: - response_code = 500 - message = "Unable to parse upload parameters, please report this error." - # Proceed with (mostly) regular upload processing if we're still errorless - if response_code == 200: - precreated_datasets = upload_common.get_precreated_datasets(trans, tool_params, trans.app.model.LibraryDatasetDatasetAssociation, controller=cntrller) - if upload_option == 'upload_file': - tool_params = upload_common.persist_uploads(tool_params, trans) - uploaded_datasets = upload_common.get_uploaded_datasets(trans, cntrller, tool_params, precreated_datasets, dataset_upload_inputs, library_bunch=library_bunch) - elif upload_option == 'upload_directory': - uploaded_datasets, response_code, message = self.get_server_dir_uploaded_datasets(trans, cntrller, kwd, full_dir, import_dir_desc, library_bunch, response_code, message) - elif upload_option == 'upload_paths': - uploaded_datasets, response_code, message = self.get_path_paste_uploaded_datasets(trans, cntrller, kwd, library_bunch, response_code, message) - upload_common.cleanup_unused_precreated_datasets(precreated_datasets) - if upload_option == 'upload_file' and not uploaded_datasets: - response_code = 400 - message = 'Select a file, enter a URL or enter text' - if response_code != 200: - return (response_code, message) - json_file_path = upload_common.create_paramfile(trans, uploaded_datasets) - data_list = [ud.data for ud in uploaded_datasets] - job_params = {} - job_params['link_data_only'] = json.dumps(kwd.get('link_data_only', 'copy_files')) - job_params['uuid'] = json.dumps(kwd.get('uuid', None)) - job, output = upload_common.create_job(trans, tool_params, tool, json_file_path, data_list, folder=library_bunch.folder, job_params=job_params) - trans.sa_session.add(job) - trans.sa_session.flush() - return output - - def _create_folder(self, trans, parent_id, library_id, **kwd): - is_admin = trans.user_is_admin() - current_user_roles = trans.get_current_user_roles() - try: - parent_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(trans.security.decode_id(parent_id)) - except Exception: - parent_folder = None - # Check the library which actually contains the user-supplied parent folder, not the user-supplied - # library, which could be anything. - self._check_access(trans, is_admin, parent_folder, current_user_roles) - self._check_add(trans, is_admin, parent_folder, current_user_roles) - new_folder = trans.app.model.LibraryFolder(name=kwd.get('name', ''), - description=kwd.get('description', '')) - # We are associating the last used genome build with folders, so we will always - # initialize a new folder with the first dbkey in genome builds list which is currently - # ? unspecified (?) - new_folder.genome_build = trans.app.genome_builds.default_value - parent_folder.add_folder(new_folder) - trans.sa_session.add(new_folder) - trans.sa_session.flush() - # New folders default to having the same permissions as their parent folder - trans.app.security_agent.copy_library_permissions(trans, parent_folder, new_folder) - return 200, dict(created=new_folder) - - def _check_access(self, trans, is_admin, item, current_user_roles): - can_access = True - if isinstance(item, trans.model.HistoryDatasetAssociation): - # Make sure the user has the DATASET_ACCESS permission on the history_dataset_association. - if not item: - message = "Invalid history dataset (%s) specified." % escape(str(item)) - can_access = False - elif not trans.app.security_agent.can_access_dataset(current_user_roles, item.dataset) and item.history.user == trans.user: - message = "You do not have permission to access the history dataset with id (%s)." % str(item.id) - can_access = False - else: - # Make sure the user has the LIBRARY_ACCESS permission on the library item. - if not item: - message = "Invalid library item (%s) specified." % escape(str(item)) - can_access = False - elif not (is_admin or trans.app.security_agent.can_access_library_item(current_user_roles, item, trans.user)): - if isinstance(item, trans.model.Library): - item_type = 'data library' - elif isinstance(item, trans.model.LibraryFolder): - item_type = 'folder' - else: - item_type = '(unknown item type)' - message = "You do not have permission to access the %s with id (%s)." % (escape(item_type), str(item.id)) - can_access = False - if not can_access: - return 400, message - - def _check_add(self, trans, is_admin, item, current_user_roles): - # Deny access if the user is not an admin and does not have the LIBRARY_ADD permission. - if not (is_admin or trans.app.security_agent.can_add_library_item(current_user_roles, item)): - message = "You are not authorized to add an item to (%s)." % escape(item.name) - return 403, message - def _scan_json_block(self, meta, prefix=""): """ Scan a json style data structure, and emit all fields and their values. diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index 2204906468a2..c4db9aeea5ef 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -31,11 +31,11 @@ _future_expose_api_anonymous as expose_api_anonymous ) from galaxy.web.base.controller import BaseAPIController, UsesVisualizationMixin - +from galaxy.actions.library import LibraryActions log = logging.getLogger(__name__) -class LibraryDatasetsController(BaseAPIController, UsesVisualizationMixin): +class LibraryDatasetsController(BaseAPIController, UsesVisualizationMixin, LibraryActions): def __init__(self, app): super(LibraryDatasetsController, self).__init__(app) @@ -511,96 +511,6 @@ def load(self, trans, payload=None, **kwd): job_dict['id'] = trans.security.encode_id(job_dict['id']) return job_dict - def _get_path_paste_uploaded_datasets(self, trans, params, library_bunch, response_code, message): - preserve_dirs = util.string_as_bool(params.get('preserve_dirs', False)) - uploaded_datasets = [] - (files_and_folders, _response_code, _message) = self._get_path_files_and_folders(params, preserve_dirs) - if _response_code: - return (uploaded_datasets, _response_code, _message) - for (path, name, folder) in files_and_folders: - uploaded_datasets.append(self._make_library_uploaded_dataset(trans, params, name, path, 'path_paste', library_bunch, folder)) - return uploaded_datasets, 200, None - - def _get_path_files_and_folders(self, params, preserve_dirs): - problem_response = self._check_path_paste_params(params) - if problem_response: - return problem_response - files_and_folders = [] - for (line, path) in self._paths_list(params): - line_files_and_folders = self._get_single_path_files_and_folders(line, path, preserve_dirs) - files_and_folders.extend(line_files_and_folders) - return files_and_folders, None, None - - def _get_single_path_files_and_folders(self, line, path, preserve_dirs): - files_and_folders = [] - if os.path.isfile(path): - name = os.path.basename(path) - files_and_folders.append((path, name, None)) - for basedir, dirs, files in os.walk(line): - for file in files: - file_path = os.path.abspath(os.path.join(basedir, file)) - if preserve_dirs: - in_folder = os.path.dirname(file_path.replace(path, '', 1).lstrip('/')) - else: - in_folder = None - files_and_folders.append((file_path, file, in_folder)) - return files_and_folders - - def _paths_list(self, params): - return [(l.strip(), os.path.abspath(l.strip())) for l in params.get('filesystem_paths', '').splitlines() if l.strip()] - - def _check_path_paste_params(self, params): - if params.get('filesystem_paths', '') == '': - message = "No paths entered in the upload form" - response_code = 400 - return None, response_code, message - bad_paths = [] - for (_, path) in self._paths_list(params): - if not os.path.exists(path): - bad_paths.append(path) - if bad_paths: - message = 'Invalid paths: "%s".' % '", "'.join(bad_paths) - response_code = 400 - return None, response_code, message - return None - - def _make_library_uploaded_dataset(self, trans, params, name, path, type, library_bunch, in_folder=None): - link_data_only = params.get('link_data_only', 'copy_files') - uuid_str = params.get('uuid', None) - file_type = params.get('file_type', None) - library_bunch.replace_dataset = None # not valid for these types of upload - uploaded_dataset = util.bunch.Bunch() - new_name = name - # Remove compressed file extensions, if any, but only if - # we're copying files into Galaxy's file space. - if link_data_only == 'copy_files': - if new_name.endswith('.gz'): - new_name = new_name.rstrip('.gz') - elif new_name.endswith('.zip'): - new_name = new_name.rstrip('.zip') - uploaded_dataset.name = new_name - uploaded_dataset.path = path - uploaded_dataset.type = type - uploaded_dataset.ext = None - uploaded_dataset.file_type = file_type - uploaded_dataset.dbkey = params.get('dbkey', None) - uploaded_dataset.to_posix_lines = params.get('to_posix_lines', None) - uploaded_dataset.space_to_tab = params.get('space_to_tab', None) - uploaded_dataset.tag_using_filenames = params.get('tag_using_filenames', True) - if in_folder: - uploaded_dataset.in_folder = in_folder - uploaded_dataset.data = upload_common.new_upload(trans, 'api', uploaded_dataset, library_bunch) - uploaded_dataset.link_data_only = link_data_only - uploaded_dataset.uuid = uuid_str - if link_data_only == 'link_to_files': - uploaded_dataset.data.file_name = os.path.abspath(path) - # Since we are not copying the file into Galaxy's managed - # default file location, the dataset should never be purgable. - uploaded_dataset.data.dataset.purgable = False - trans.sa_session.add_all((uploaded_dataset.data, uploaded_dataset.data.dataset)) - trans.sa_session.flush() - return uploaded_dataset - @web.expose # TODO convert to expose_api def download(self, trans, format, **kwd): From ed4b0042572a47f505f1496047bbcfc84bae4aa6 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Nov 2017 18:34:34 -0500 Subject: [PATCH 21/24] Fix import order, remove unused libraries --- lib/galaxy/actions/library.py | 32 +------------------ .../webapps/galaxy/api/library_contents.py | 12 +------ .../webapps/galaxy/api/library_datasets.py | 2 +- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/lib/galaxy/actions/library.py b/lib/galaxy/actions/library.py index 16732ba9d9f9..581214f29f5c 100644 --- a/lib/galaxy/actions/library.py +++ b/lib/galaxy/actions/library.py @@ -5,24 +5,7 @@ import logging import os.path from markupsafe import escape -from sqlalchemy.orm.exc import ( - MultipleResultsFound, - NoResultFound, -) -from galaxy import ( - exceptions, - managers, - util, - web -) -from galaxy.managers.collections_util import ( - api_payload_to_create_params, - dictify_dataset_collection_instance -) -from galaxy.model import ( - ExtendedMetadata, - ExtendedMetadataIndex -) +from galaxy import util from galaxy.tools.actions import upload_common from galaxy.tools.parameters import populate_state from galaxy.util.path import ( @@ -30,19 +13,6 @@ safe_relpath, unsafe_walk ) -from galaxy.web import _future_expose_api as expose_api -from galaxy.web.base.controller import ( - BaseAPIController, - HTTPBadRequest, - url_for, - UsesFormDefinitionsMixin, - UsesLibraryMixin, - UsesLibraryMixinItems -) -from galaxy.web.form_builder import ( - AddressField, - CheckboxField, -) log = logging.getLogger(__name__) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 7f8710907e15..6912cd61a238 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -1,10 +1,7 @@ """ API operations on the contents of a data library. """ -import json import logging -import os.path -from markupsafe import escape from sqlalchemy.orm.exc import ( MultipleResultsFound, NoResultFound, @@ -15,6 +12,7 @@ util, web ) +from galaxy.actions.library import LibraryActions from galaxy.managers.collections_util import ( api_payload_to_create_params, dictify_dataset_collection_instance @@ -23,13 +21,6 @@ ExtendedMetadata, ExtendedMetadataIndex ) -from galaxy.tools.actions import upload_common -from galaxy.tools.parameters import populate_state -from galaxy.util.path import ( - safe_contains, - safe_relpath, - unsafe_walk -) from galaxy.web import _future_expose_api as expose_api from galaxy.web.base.controller import ( BaseAPIController, @@ -43,7 +34,6 @@ AddressField, CheckboxField, ) -from galaxy.actions.library import LibraryActions log = logging.getLogger(__name__) diff --git a/lib/galaxy/webapps/galaxy/api/library_datasets.py b/lib/galaxy/webapps/galaxy/api/library_datasets.py index c4db9aeea5ef..0db4cd71ff6e 100644 --- a/lib/galaxy/webapps/galaxy/api/library_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/library_datasets.py @@ -15,6 +15,7 @@ util, web ) +from galaxy.actions.library import LibraryActions from galaxy.exceptions import ObjectNotFound from galaxy.managers import ( base as managers_base, @@ -31,7 +32,6 @@ _future_expose_api_anonymous as expose_api_anonymous ) from galaxy.web.base.controller import BaseAPIController, UsesVisualizationMixin -from galaxy.actions.library import LibraryActions log = logging.getLogger(__name__) From ff7b29c49c33e0383293e0712b7dd2c52d79ae47 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Nov 2017 18:40:06 -0500 Subject: [PATCH 22/24] Use underscores for private functions consistently --- lib/galaxy/webapps/galaxy/api/library_contents.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index 6912cd61a238..7e7a9582f5f8 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -143,7 +143,7 @@ def show(self, trans, id, library_id, **kwd): :func:`galaxy.model.LibraryDataset.to_dict` and :attr:`galaxy.model.LibraryFolder.dict_element_visible_keys` """ - class_name, content_id = self.__decode_library_content_id(id) + class_name, content_id = self._decode_library_content_id(id) if class_name == 'LibraryFolder': content = self.get_library_folder(trans, content_id, check_ownership=False, check_accessible=True) rval = content.to_dict(view='element', value_mapper={'id': trans.security.encode_id}) @@ -223,7 +223,7 @@ def create(self, trans, library_id, payload, **kwd): return "Missing required 'folder_id' parameter." else: folder_id = payload.pop('folder_id') - class_name, folder_id = self.__decode_library_content_id(folder_id) + class_name, folder_id = self._decode_library_content_id(folder_id) try: # security is checked in the downstream controller parent = self.get_library_folder(trans, folder_id, check_ownership=False, check_accessible=False) @@ -458,7 +458,7 @@ def update(self, trans, id, library_id, payload, **kwd): trans.sa_session.add(assoc) trans.sa_session.flush() - def __decode_library_content_id(self, content_id): + def _decode_library_content_id(self, content_id): if len(content_id) % 16 == 0: return 'LibraryDataset', content_id elif content_id.startswith('F'): From 063aec3c05a9bf15110f30483f60b184e256da8b Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 10 Nov 2017 10:53:04 -0500 Subject: [PATCH 23/24] Fix comment --- lib/galaxy/actions/library.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/actions/library.py b/lib/galaxy/actions/library.py index 581214f29f5c..84f7e5d54763 100644 --- a/lib/galaxy/actions/library.py +++ b/lib/galaxy/actions/library.py @@ -1,5 +1,5 @@ """ -Contains administrative functions +Contains library functions """ import json import logging From fc9059a4dd521a1742e1c1df0d26ec7bf313640b Mon Sep 17 00:00:00 2001 From: John Chilton Date: Thu, 1 Sep 2016 13:17:43 -0400 Subject: [PATCH 24/24] Restore database/info.txt. It was problematically removed with a recent PR and is causing Travis breakages - Galaxy assumes this directory exists. --- database/info.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 database/info.txt diff --git a/database/info.txt b/database/info.txt new file mode 100644 index 000000000000..5b316a096c27 --- /dev/null +++ b/database/info.txt @@ -0,0 +1 @@ +This folder contains the data \ No newline at end of file