galaxy-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 15302 discussions
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c29f651e4acc/
Changeset: c29f651e4acc
User: martenson
Date: 2014-09-26 19:17:35+00:00
Summary: select2 fixes and impl. of missing feature import from path
Affected #: 12 files
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
--- a/client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
+++ b/client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
@@ -54,7 +54,12 @@
auto: {
id : 'auto',
text : 'Auto-detect',
- description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'
+ description : 'This system will try to detect the file type automatically.' +
+ ' If your file is not detected properly as one of the known formats,' +
+ ' it most likely means that it has some format problems (e.g., different' +
+ ' number of columns on different rows). You can still coerce the system' +
+ ' to set your data to the format you think it should be.' +
+ ' You can also upload compressed files, which will automatically be decompressed.'
},
// genomes
@@ -73,15 +78,12 @@
id: this.options.id,
is_admin: false,
is_anonym: true,
- user_library_import_dir: Galaxy.config.user_library_import_dir,
- allow_library_path_paste: Galaxy.config.allow_library_path_paste,
- library_import_dir: Galaxy.config.library_import_dir,
mutiple_add_dataset_options: false
}
if (Galaxy.currUser){
template_defaults.is_admin = Galaxy.currUser.isAdmin();
template_defaults.is_anonym = Galaxy.currUser.isAnonymous();
- if (template_defaults.user_library_import_dir !== null || template_defaults.allow_library_path_paste !== false || template_defaults.library_import_dir !== null ){
+ if ( Galaxy.config.user_library_import_dir !== null || Galaxy.config.allow_library_path_paste !== false || Galaxy.config.library_import_dir !== null ){
template_defaults.mutiple_add_dataset_options = true;
}
}
@@ -402,33 +404,38 @@
// https://trello.com/c/dIUE9YPl/1933-ui-common-resources-and-data-into-galaxy…
var that = this;
this.select_genome = new mod_select.View( {
- css: 'genome',
+ css: 'library-genome-select',
data: that.list_genomes,
- container: Galaxy.modal.$el.find( '#genome' ),
+ container: Galaxy.modal.$el.find( '#library_genome_select' ),
value: '?'
} );
this.select_extension = new mod_select.View({
- css: 'extension',
+ css: 'library-extension-select',
data: that.list_extensions,
- container: Galaxy.modal.$el.find('#extension'),
+ container: Galaxy.modal.$el.find( '#library_extension_select' ),
value: 'auto'
});
},
+
/**
- * Create modal for importing form user's directory
+ * Create modal for importing from given directory
* on Galaxy. Bind jQuery events.
*/
- importFilesFromUserdirModal: function(){
+ importFilesFromGalaxyFolderModal: function( options ){
var that = this;
+ var template_modal = this.templateBrowserModal();
this.modal = Galaxy.modal;
- var template_modal = this.templateBrowserModal();
this.modal.show({
closing_events : true,
title : 'Please select folders or files',
body : template_modal({}),
buttons : {
- 'Import' : function() {that.importFromUserdirClicked(that);},
- 'Close' : function() {Galaxy.modal.hide();}
+ 'Import' : function() {
+ that.importFromJstreePath( that, options );
+ },
+ 'Close' : function() {
+ Galaxy.modal.hide();
+ }
},
closing_callback: function(){
// TODO: should not trigger routes outside of the router
@@ -437,21 +444,24 @@
});
this.renderSelectBoxes();
- this.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ this.renderJstree( options );
- $('input[type=radio]').change(function(event){
+ $( 'input[type=radio]' ).change( function( event ){
if (event.target.value ==='jstree-disable-folders') {
- that.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ that.renderJstree( options );
$('.jstree-folders-message').hide();
$('.jstree-preserve-structure').hide();
$('.jstree-link-files').hide();
$('.jstree-files-message').show();
- } else if (event.target.value ==='jstree-disable-files'){
+ } else if ( event.target.value ==='jstree-disable-files' ){
$('.jstree-files-message').hide();
$('.jstree-folders-message').show();
$('.jstree-link-files').show();
$('.jstree-preserve-structure').show();
- that.renderJstree({disabled_jstree_element: 'files'});
+ options.disabled_jstree_element = 'files';
+ that.renderJstree( options );
}
}
);
@@ -463,12 +473,16 @@
* data.
* @param {[type]} options [description]
*/
- renderJstree: function(options){
+ renderJstree: function( options ){
var that = this;
- this.options = _.extend(this.options, options);
+ this.options = _.extend( this.options, options );
+ var target = options.source || 'userdir';
var disabled_jstree_element = this.options.disabled_jstree_element;
this.jstree = new mod_library_model.Jstree();
- this.jstree.url = this.jstree.urlRoot + '?target=userdir&format=jstree&disable=' + disabled_jstree_element;
+ this.jstree.url = this.jstree.urlRoot +
+ '?target=' + target +
+ '&format=jstree' +
+ '&disable=' + disabled_jstree_element;
this.jstree.fetch({
success: function(model, response){
// This is to prevent double jquery load. I think. Carl is magician.
@@ -579,7 +593,7 @@
* jstree.js has to be loaded before
* @see renderJstree
*/
- importFromUserdirClicked: function ( that ){
+ importFromJstreePath: function ( that, options ){
var selected_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
var preserve_dirs = this.modal.$el.find( '.preserve-checkbox' ).is( ':checked' );
var link_data = this.modal.$el.find( '.link-checkbox' ).is( ':checked' );
@@ -588,7 +602,7 @@
var selection_type = selected_nodes[0].type;
var paths = [];
if ( selected_nodes.length < 1 ){
- mod_toastr.info( 'You must select some items first.' );
+ mod_toastr.info( 'Please select some items first.' );
} else {
this.modal.disableButton( 'Import' );
for ( var i = selected_nodes.length - 1; i >= 0; i-- ){
@@ -598,17 +612,19 @@
}
this.initChainCallControl( { length: paths.length, action: 'adding_datasets' } );
if ( selection_type === 'folder' ){
-
+ var full_source = options.source + '_folder';
this.chainCallImportingFolders( { paths: paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
- source: 'userdir_folder',
+ source: full_source,
file_type: file_type,
dbkey: dbkey } );
} else if ( selection_type === 'file' ){
+ var full_source = options.source + '_file';
this.chainCallImportingUserdirFiles( { paths : paths,
file_type: file_type,
- dbkey: dbkey } );
+ dbkey: dbkey,
+ source: full_source } );
}
}
},
@@ -713,7 +729,7 @@
return true;
}
var promise = $.when( $.post( '/api/libraries/datasets?encoded_folder_id=' + that.id +
- '&source=userdir_file' +
+ '&source=' + options.source +
'&path=' + popped_item +
'&file_type=' + options.file_type +
'&dbkey=' + options.dbkey ) )
@@ -760,22 +776,12 @@
'&dbkey=' + options.dbkey ) )
promise.done(function(response){
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
})
.fail(function(){
that.options.chain_call_control.failed_number += 1;
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
});
},
@@ -952,12 +958,13 @@
this.addFilesFromHistoryModal();
break;
case "importdir":
+ this.importFilesFromGalaxyFolderModal( { source: 'importdir' } );
break;
case "path":
this.importFilesFromPathModal();
break;
case "userdir":
- this.importFilesFromUserdirModal();
+ this.importFilesFromGalaxyFolderModal( { source: 'userdir' } );
break;
default:
Galaxy.libraries.library_router.back();
@@ -984,17 +991,19 @@
tmpl_array.push(' </button>');
tmpl_array.push(' <ul class="dropdown-menu" role="menu">');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');
- tmpl_array.push('<% if(user_library_import_dir !== null) { %>');
+ tmpl_array.push('<% if(Galaxy.config.user_library_import_dir !== null) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');
tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
- // tmpl_array.push('<% if(allow_library_path_paste || library_import_dir !== null) { %>');
- tmpl_array.push(' <li class="divider"></li>');
- tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
- // tmpl_array.push('<% if(library_import_dir !== null) { %>');
- // tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
- // tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
+
+ tmpl_array.push(' <li class="divider"></li>');
+ tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
+
+ tmpl_array.push('<% if(Galaxy.config.library_import_dir !== null) { %>');
+ tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
+ tmpl_array.push('<% } %>');
+
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');
tmpl_array.push('<% } %>');
tmpl_array.push('<% } %>');
@@ -1154,8 +1163,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
@@ -1184,8 +1193,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb client/galaxy/scripts/mvc/ui/ui-select.js
--- a/client/galaxy/scripts/mvc/ui/ui-select.js
+++ b/client/galaxy/scripts/mvc/ui/ui-select.js
@@ -155,7 +155,6 @@
data : this.select_data,
containerCssClass : this.options.css,
placeholder : this.options.placeholder,
- width : 'resolve',
dropdownAutoWidth : true
};
this.$el.select2(select_opt);
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb lib/galaxy/webapps/galaxy/api/ftp_files.py
--- a/lib/galaxy/webapps/galaxy/api/ftp_files.py
+++ b/lib/galaxy/webapps/galaxy/api/ftp_files.py
@@ -49,7 +49,7 @@
userdir_jstree = self.__create_jstree( full_import_dir, disable )
response = userdir_jstree.jsonData()
except Exception, exception:
- log.debug(str(exception))
+ log.debug( str( exception ) )
raise exceptions.InternalServerError( 'Could not create tree representation of the given folder: ' + str( full_import_dir ) )
elif format == 'ajax':
raise exceptions.NotImplemented( 'Not implemented yet. Sorry.' )
@@ -61,6 +61,26 @@
raise exceptions.InternalServerError( 'Could not get the files from your user directory folder.' )
else:
raise exceptions.InternalServerError( 'Could not get the files from your user directory folder.' )
+ elif target == 'importdir':
+ base_dir = trans.app.config.library_import_dir
+ if base_dir is None:
+ raise exceptions.ConfigDoesNotAllowException( 'The configuration of this Galaxy instance does not allow usage of import directory.' )
+ if format == 'jstree':
+ disable = kwd.get( 'disable', 'folders')
+ try:
+ importdir_jstree = self.__create_jstree( base_dir, disable )
+ response = importdir_jstree.jsonData()
+ except Exception, exception:
+ log.debug( str( exception ) )
+ raise exceptions.InternalServerError( 'Could not create tree representation of the given folder: ' + str( base_dir ) )
+ elif format == 'ajax':
+ raise exceptions.NotImplemented( 'Not implemented yet. Sorry.' )
+ else:
+ try:
+ response = self.__load_all_filenames( base_dir )
+ except Exception, exception:
+ log.error( 'Could not get user import files: %s', str( exception ), exc_info=True )
+ raise exceptions.InternalServerError( 'Could not get the files from your import directory folder.' )
else:
user_ftp_base_dir = trans.app.config.ftp_upload_dir
if user_ftp_base_dir is None:
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb lib/galaxy/webapps/galaxy/api/lda_datasets.py
--- a/lib/galaxy/webapps/galaxy/api/lda_datasets.py
+++ b/lib/galaxy/webapps/galaxy/api/lda_datasets.py
@@ -429,8 +429,15 @@
folder = self.folder_manager.get( trans, folder_id )
source = kwd.get( 'source', None )
- if source not in [ 'userdir_file', 'userdir_folder', 'admin_path' ]:
- raise exceptions.RequestParameterMissingException( 'You have to specify "source" parameter. Possible values are "userdir_file", "userdir_folder" and "admin_path". ')
+ if source not in [ 'userdir_file', 'userdir_folder', 'importdir_file', 'importdir_folder', 'admin_path' ]:
+ raise exceptions.RequestParameterMissingException( 'You have to specify "source" parameter. Possible values are "userdir_file", "userdir_folder", "admin_path", "importdir_file" and "importdir_folder". ')
+ if source in [ 'importdir_file', 'importdir_folder' ]:
+ if not trans.user_is_admin:
+ raise exceptions.AdminRequiredException( 'Only admins can import from importdir.' )
+ if not trans.app.config.library_import_dir:
+ raise exceptions.ConfigDoesNotAllowException( 'The configuration of this Galaxy instance does not allow admins to import into library from importdir.' )
+ user_base_dir = trans.app.config.library_import_dir
+
if source in [ 'userdir_file', 'userdir_folder' ]:
user_login = trans.user.email
@@ -505,6 +512,7 @@
return job_dict
@web.expose
+ # TODO convert to expose_api
def download( self, trans, format, **kwd ):
"""
download( self, trans, format, **kwd )
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/scripts/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/mvc/library/library-foldertoolbar-view.js
@@ -54,7 +54,12 @@
auto: {
id : 'auto',
text : 'Auto-detect',
- description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'
+ description : 'This system will try to detect the file type automatically.' +
+ ' If your file is not detected properly as one of the known formats,' +
+ ' it most likely means that it has some format problems (e.g., different' +
+ ' number of columns on different rows). You can still coerce the system' +
+ ' to set your data to the format you think it should be.' +
+ ' You can also upload compressed files, which will automatically be decompressed.'
},
// genomes
@@ -73,15 +78,12 @@
id: this.options.id,
is_admin: false,
is_anonym: true,
- user_library_import_dir: Galaxy.config.user_library_import_dir,
- allow_library_path_paste: Galaxy.config.allow_library_path_paste,
- library_import_dir: Galaxy.config.library_import_dir,
mutiple_add_dataset_options: false
}
if (Galaxy.currUser){
template_defaults.is_admin = Galaxy.currUser.isAdmin();
template_defaults.is_anonym = Galaxy.currUser.isAnonymous();
- if (template_defaults.user_library_import_dir !== null || template_defaults.allow_library_path_paste !== false || template_defaults.library_import_dir !== null ){
+ if ( Galaxy.config.user_library_import_dir !== null || Galaxy.config.allow_library_path_paste !== false || Galaxy.config.library_import_dir !== null ){
template_defaults.mutiple_add_dataset_options = true;
}
}
@@ -402,33 +404,38 @@
// https://trello.com/c/dIUE9YPl/1933-ui-common-resources-and-data-into-galaxy…
var that = this;
this.select_genome = new mod_select.View( {
- css: 'genome',
+ css: 'library-genome-select',
data: that.list_genomes,
- container: Galaxy.modal.$el.find( '#genome' ),
+ container: Galaxy.modal.$el.find( '#library_genome_select' ),
value: '?'
} );
this.select_extension = new mod_select.View({
- css: 'extension',
+ css: 'library-extension-select',
data: that.list_extensions,
- container: Galaxy.modal.$el.find('#extension'),
+ container: Galaxy.modal.$el.find( '#library_extension_select' ),
value: 'auto'
});
},
+
/**
- * Create modal for importing form user's directory
+ * Create modal for importing from given directory
* on Galaxy. Bind jQuery events.
*/
- importFilesFromUserdirModal: function(){
+ importFilesFromGalaxyFolderModal: function( options ){
var that = this;
+ var template_modal = this.templateBrowserModal();
this.modal = Galaxy.modal;
- var template_modal = this.templateBrowserModal();
this.modal.show({
closing_events : true,
title : 'Please select folders or files',
body : template_modal({}),
buttons : {
- 'Import' : function() {that.importFromUserdirClicked(that);},
- 'Close' : function() {Galaxy.modal.hide();}
+ 'Import' : function() {
+ that.importFromJstreePath( that, options );
+ },
+ 'Close' : function() {
+ Galaxy.modal.hide();
+ }
},
closing_callback: function(){
// TODO: should not trigger routes outside of the router
@@ -437,21 +444,24 @@
});
this.renderSelectBoxes();
- this.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ this.renderJstree( options );
- $('input[type=radio]').change(function(event){
+ $( 'input[type=radio]' ).change( function( event ){
if (event.target.value ==='jstree-disable-folders') {
- that.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ that.renderJstree( options );
$('.jstree-folders-message').hide();
$('.jstree-preserve-structure').hide();
$('.jstree-link-files').hide();
$('.jstree-files-message').show();
- } else if (event.target.value ==='jstree-disable-files'){
+ } else if ( event.target.value ==='jstree-disable-files' ){
$('.jstree-files-message').hide();
$('.jstree-folders-message').show();
$('.jstree-link-files').show();
$('.jstree-preserve-structure').show();
- that.renderJstree({disabled_jstree_element: 'files'});
+ options.disabled_jstree_element = 'files';
+ that.renderJstree( options );
}
}
);
@@ -463,12 +473,16 @@
* data.
* @param {[type]} options [description]
*/
- renderJstree: function(options){
+ renderJstree: function( options ){
var that = this;
- this.options = _.extend(this.options, options);
+ this.options = _.extend( this.options, options );
+ var target = options.source || 'userdir';
var disabled_jstree_element = this.options.disabled_jstree_element;
this.jstree = new mod_library_model.Jstree();
- this.jstree.url = this.jstree.urlRoot + '?target=userdir&format=jstree&disable=' + disabled_jstree_element;
+ this.jstree.url = this.jstree.urlRoot +
+ '?target=' + target +
+ '&format=jstree' +
+ '&disable=' + disabled_jstree_element;
this.jstree.fetch({
success: function(model, response){
// This is to prevent double jquery load. I think. Carl is magician.
@@ -579,7 +593,7 @@
* jstree.js has to be loaded before
* @see renderJstree
*/
- importFromUserdirClicked: function ( that ){
+ importFromJstreePath: function ( that, options ){
var selected_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
var preserve_dirs = this.modal.$el.find( '.preserve-checkbox' ).is( ':checked' );
var link_data = this.modal.$el.find( '.link-checkbox' ).is( ':checked' );
@@ -588,7 +602,7 @@
var selection_type = selected_nodes[0].type;
var paths = [];
if ( selected_nodes.length < 1 ){
- mod_toastr.info( 'You must select some items first.' );
+ mod_toastr.info( 'Please select some items first.' );
} else {
this.modal.disableButton( 'Import' );
for ( var i = selected_nodes.length - 1; i >= 0; i-- ){
@@ -598,17 +612,19 @@
}
this.initChainCallControl( { length: paths.length, action: 'adding_datasets' } );
if ( selection_type === 'folder' ){
-
+ var full_source = options.source + '_folder';
this.chainCallImportingFolders( { paths: paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
- source: 'userdir_folder',
+ source: full_source,
file_type: file_type,
dbkey: dbkey } );
} else if ( selection_type === 'file' ){
+ var full_source = options.source + '_file';
this.chainCallImportingUserdirFiles( { paths : paths,
file_type: file_type,
- dbkey: dbkey } );
+ dbkey: dbkey,
+ source: full_source } );
}
}
},
@@ -713,7 +729,7 @@
return true;
}
var promise = $.when( $.post( '/api/libraries/datasets?encoded_folder_id=' + that.id +
- '&source=userdir_file' +
+ '&source=' + options.source +
'&path=' + popped_item +
'&file_type=' + options.file_type +
'&dbkey=' + options.dbkey ) )
@@ -760,22 +776,12 @@
'&dbkey=' + options.dbkey ) )
promise.done(function(response){
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
})
.fail(function(){
that.options.chain_call_control.failed_number += 1;
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
});
},
@@ -952,12 +958,13 @@
this.addFilesFromHistoryModal();
break;
case "importdir":
+ this.importFilesFromGalaxyFolderModal( { source: 'importdir' } );
break;
case "path":
this.importFilesFromPathModal();
break;
case "userdir":
- this.importFilesFromUserdirModal();
+ this.importFilesFromGalaxyFolderModal( { source: 'userdir' } );
break;
default:
Galaxy.libraries.library_router.back();
@@ -984,17 +991,19 @@
tmpl_array.push(' </button>');
tmpl_array.push(' <ul class="dropdown-menu" role="menu">');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');
- tmpl_array.push('<% if(user_library_import_dir !== null) { %>');
+ tmpl_array.push('<% if(Galaxy.config.user_library_import_dir !== null) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');
tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
- // tmpl_array.push('<% if(allow_library_path_paste || library_import_dir !== null) { %>');
- tmpl_array.push(' <li class="divider"></li>');
- tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
- // tmpl_array.push('<% if(library_import_dir !== null) { %>');
- // tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
- // tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
+
+ tmpl_array.push(' <li class="divider"></li>');
+ tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
+
+ tmpl_array.push('<% if(Galaxy.config.library_import_dir !== null) { %>');
+ tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
+ tmpl_array.push('<% } %>');
+
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');
tmpl_array.push('<% } %>');
tmpl_array.push('<% } %>');
@@ -1154,8 +1163,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
@@ -1184,8 +1193,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/scripts/mvc/ui/ui-select.js
--- a/static/scripts/mvc/ui/ui-select.js
+++ b/static/scripts/mvc/ui/ui-select.js
@@ -155,7 +155,6 @@
data : this.select_data,
containerCssClass : this.options.css,
placeholder : this.options.placeholder,
- width : 'resolve',
dropdownAutoWidth : true
};
this.$el.select2(select_opt);
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/scripts/packed/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
@@ -1,1 +1,1 @@
-define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(c,e,f,d,a){var b=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_show_libinfo":"showLibInfo","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(g){this.options=_.defaults(g||{},this.defaults);this.fetchExtAndGenomes();this.render()},render:function(g){this.options=_.extend(this.options,g);var i=this.templateToolBar();var h={id:this.options.id,is_admin:false,is_anonym:true,user_library_import_dir:Galaxy.config.user_library_import_dir,allow_library_path_paste:Galaxy.config.allow_library_path_paste,library_import_dir:Galaxy.config.library_import_dir,mutiple_add_dataset_options:false};if(Galaxy.currUser){h.is_admin=Galaxy.currUser.isAdmin();h.is_anonym=Galaxy.currUser.isAnonymous();if(h.user_library_import_dir!==null||h.allow_library_path_paste!==false||h.library_import_dir!==null){h.mutiple_add_dataset_options=true}}this.$el.html(i(h))},configureElements:function(g){this.options=_.extend(this.options,g);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(i){i.preventDefault();i.stopPropagation();var g=this;var h=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:h(),buttons:{Create:function(){g.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var g=this.serialize_new_folder();if(this.validate_new_folder(g)){var h=new d.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];h.url=h.urlRoot+"/"+current_folder_id;h.save(g,{success:function(i){Galaxy.modal.hide();f.success("Folder created.");i.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(i)},error:function(j,i){Galaxy.modal.hide();if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}else{f.error("Folder's name is missing.")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(g){return g.name!==""},modalBulkImport:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select some datasets first.")}else{this.refreshUserHistoriesList(function(i){var h=i.templateBulkImportInModal();i.modal=Galaxy.modal;i.modal.show({closing_events:true,title:"Import into History",body:h({histories:i.histories.models}),buttons:{Import:function(){i.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(h){var g=this;this.histories=new d.GalaxyHistories();this.histories.fetch({success:function(){h(g)},error:function(j,i){if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var k=$("select[name=dataset_import_bulk] option:selected").val();var n=$("select[name=dataset_import_bulk] option:selected").text();this.options.last_used_history_id=k;var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var m=[];for(var j=h.length-1;j>=0;j--){var g=h[j];var l=new d.HistoryItem();l.url=l.urlRoot+k+"/contents";l.content=g;l.source="library";m.push(l)}this.initChainCallControl({length:m.length,action:"to_history",history_name:n});jQuery.getJSON(galaxy_config.root+"history/set_as_current?id="+k);this.chainCallImportingIntoHistory(m,n)},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(g,k){var i=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){i.push(this.parentElement.parentElement.id)}});var h="/api/libraries/datasets/download/"+k;var j={ld_ids:i};this.processDownload(h,j,"get")},processDownload:function(h,i,j){if(h&&i){i=typeof i==="string"?i:$.param(i);var g="";$.each(i.split("&"),function(){var k=this.split("=");g+='<input type="hidden" name="'+k[0]+'" value="'+k[1]+'" />'});$('<form action="'+h+'" method="'+(j||"post")+'">'+g+"</form>").appendTo("body").submit().remove();f.info("Your download will begin soon.")}else{f.error("An error occurred.")}},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(g){g.modal=Galaxy.modal;var h=g.templateAddFilesFromHistory();var i=g.options.full_path[g.options.full_path.length-1][1];g.modal.show({closing_events:true,title:"Adding datasets from your history to folder "+i,body:h({histories:g.histories.models}),buttons:{Add:function(){g.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}});if(g.histories.models.length>0){g.fetchAndDisplayHistoryContents(g.histories.models[0].id);$("#dataset_add_bulk").change(function(j){g.fetchAndDisplayHistoryContents(j.target.value)})}else{f.error("An error ocurred.")}})},importFilesFromPathModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateImportPathModal();this.modal.show({closing_events:true,title:"Please enter paths to import",body:g({}),buttons:{Import:function(){h.importFromPathsClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes()},fetchExtAndGenomes:function(){var g=this;e.get(galaxy_config.root+"api/datatypes?extension_only=False",function(h){for(key in h){g.list_extensions.push({id:h[key].extension,text:h[key].extension,description:h[key].description,description_url:h[key].description_url})}g.list_extensions.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0});g.list_extensions.unshift(g.auto)});e.get(galaxy_config.root+"api/genomes",function(h){for(key in h){g.list_genomes.push({id:h[key][1],text:h[key][0]})}g.list_genomes.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0})})},renderSelectBoxes:function(){var g=this;this.select_genome=new a.View({css:"genome",data:g.list_genomes,container:Galaxy.modal.$el.find("#genome"),value:"?"});this.select_extension=new a.View({css:"extension",data:g.list_extensions,container:Galaxy.modal.$el.find("#extension"),value:"auto"})},importFilesFromUserdirModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateBrowserModal();this.modal.show({closing_events:true,title:"Please select folders or files",body:g({}),buttons:{Import:function(){h.importFromUserdirClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes();this.renderJstree({disabled_jstree_element:"folders"});$("input[type=radio]").change(function(i){if(i.target.value==="jstree-disable-folders"){h.renderJstree({disabled_jstree_element:"folders"});$(".jstree-folders-message").hide();$(".jstree-preserve-structure").hide();$(".jstree-link-files").hide();$(".jstree-files-message").show()}else{if(i.target.value==="jstree-disable-files"){$(".jstree-files-message").hide();$(".jstree-folders-message").show();$(".jstree-link-files").show();$(".jstree-preserve-structure").show();h.renderJstree({disabled_jstree_element:"files"})}}})},renderJstree:function(g){var i=this;this.options=_.extend(this.options,g);var h=this.options.disabled_jstree_element;this.jstree=new d.Jstree();this.jstree.url=this.jstree.urlRoot+"?target=userdir&format=jstree&disable="+h;this.jstree.fetch({success:function(k,j){define("jquery",function(){return jQuery});require(["libs/jquery/jstree"],function(l){$("#jstree_browser").jstree("destroy");$("#jstree_browser").jstree({core:{data:k},plugins:["types","checkbox"],types:{folder:{icon:"jstree-folder"},file:{icon:"jstree-file"}},checkbox:{three_state:false}})})},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importFromPathsClicked:function(){var g=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var j=this.select_genome.value();var m=$("textarea#import_paths").val();var l=[];if(!m){f.info("Please enter a path relative to Galaxy root.")}else{this.modal.disableButton("Import");m=m.split("\n");for(var k=m.length-1;k>=0;k--){trimmed=m[k].trim();if(trimmed.length!==0){l.push(trimmed)}}this.initChainCallControl({length:l.length,action:"adding_datasets"});this.chainCallImportingFolders({paths:l,preserve_dirs:g,link_data:n,source:"admin_path",file_type:h,dbkey:j})}},initChainCallControl:function(g){var h;switch(g.action){case"adding_datasets":h=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h({folder_name:this.options.folder_name}));break;case"deleting_datasets":h=this.templateDeletingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h());break;case"to_history":h=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(h({history_name:g.history_name}));break;default:console.error("Wrong action specified.");break}this.progress=0;this.progressStep=100/g.length;this.options.chain_call_control.total_number=g.length;this.options.chain_call_control.failed_number=0},importFromUserdirClicked:function(m){var g=$("#jstree_browser").jstree().get_selected(true);var l=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var o=this.select_genome.value();var j=g[0].type;var p=[];if(g.length<1){f.info("You must select some items first.")}else{this.modal.disableButton("Import");for(var k=g.length-1;k>=0;k--){if(g[k].li_attr.full_path!==undefined){p.push(g[k].li_attr.full_path)}}this.initChainCallControl({length:p.length,action:"adding_datasets"});if(j==="folder"){this.chainCallImportingFolders({paths:p,preserve_dirs:l,link_data:n,source:"userdir_folder",file_type:h,dbkey:o})}else{if(j==="file"){this.chainCallImportingUserdirFiles({paths:p,file_type:h,dbkey:o})}}}},fetchAndDisplayHistoryContents:function(i){var h=new d.HistoryContents({id:i});var g=this;h.fetch({success:function(k){var j=g.templateHistoryContents();g.histories.get(i).set({contents:k});g.modal.$el.find("#selected_history_content").html(j({history_contents:k.models.reverse()}))},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},addAllDatasetsFromHistory:function(){var l=this.modal.$el.find("#selected_history_content").find(":checked");var g=[];var k=[];if(l.length<1){f.info("You must select some datasets first.")}else{this.modal.disableButton("Add");l.each(function(){var i=$(this.parentElement).data("id");if(i){g.push(i)}});for(var j=g.length-1;j>=0;j--){history_dataset_id=g[j];var h=new d.Item();h.url="/api/folders/"+this.options.id+"/contents";h.set({from_hda_id:history_dataset_id});k.push(h)}this.initChainCallControl({length:k.length,action:"adding_datasets"});this.chainCallAddingHdas(k)}},chainCallImportingIntoHistory:function(h,k){var g=this;var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return true}var j=$.when(i.save({content:i.content,source:i.source}));j.done(function(){g.updateProgress();g.chainCallImportingIntoHistory(h,k)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallImportingIntoHistory(h,k)})},chainCallImportingUserdirFiles:function(g){var h=this;var i=g.paths.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected files imported into the current folder");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source=userdir_file&path="+i+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingUserdirFiles(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingUserdirFiles(g)})},chainCallImportingFolders:function(g){var h=this;var i=g.paths.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected folders and their contents imported into the current folder.");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&preserve_dirs="+g.preserve_dirs+"&link_data="+g.link_data+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingFolders({paths:g.paths,preserve_dirs:g.preserve_dirs,link_data:g.link_data,source:g.source,file_type:g.file_type,dbkey:g.dbkey})}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingFolders({paths:g.paths,preserve_dirs:g.preserve_dirs,link_data:g.link_data,source:g.source,file_type:g.file_type,dbkey:g.dbkey})})},chainCallAddingHdas:function(h){var g=this;this.added_hdas=new d.Folder();var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var j=$.when(i.save({from_hda_id:i.get("from_hda_id")}));j.done(function(k){Galaxy.libraries.folderListView.collection.add(k);g.updateProgress();g.chainCallAddingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallAddingHdas(h)})},chainCallDeletingHdas:function(h){var g=this;this.deleted_lddas=new d.Folder();var i=h.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var j=$.when(i.destroy());j.done(function(l){Galaxy.libraries.folderListView.collection.remove(i.id);g.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var k=new d.Item(l);Galaxy.libraries.folderListView.collection.add(k)}g.chainCallDeletingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallDeletingHdas(h)})},checkIncludeDeleted:function(g){if(g.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select at least one dataset for deletion.")}else{var k=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:k({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var h=[];g.each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});this.progressStep=100/h.length;this.progress=0;var m=[];for(var j=h.length-1;j>=0;j--){var l=new d.Item({id:h[j]});m.push(l)}this.options.chain_call_control.total_number=h.length;this.chainCallDeletingHdas(m)}},showLibInfo:function(){var h=Galaxy.libraries.folderListView.folderContainer.attributes.metadata.parent_library_id;var g=null;var i=this;if(Galaxy.libraries.libraryListView!==null){g=Galaxy.libraries.libraryListView.collection.get(h);this.showLibInfoModal(g)}else{g=new d.Library({id:h});g.fetch({success:function(){i.showLibInfoModal(g)},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}},showLibInfoModal:function(g){var h=this.templateLibInfoInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Library Information",body:h({library:g}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(g){switch(g.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromUserdirModal();break;default:Galaxy.libraries.library_router.back();f.error("Invalid import source.");break}},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push(' <div id="library_toolbar">');tmpl_array.push(" <span><strong>DATA LIBRARIES</strong></span>");tmpl_array.push(' <span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"> | <input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted | </input></span>');tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push("<% if(mutiple_add_dataset_options) { %>");tmpl_array.push(' <div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button title="Add Datasets to Current Folder" id="" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-plus"></span><span class="fa fa-file"></span><span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');tmpl_array.push("<% if(user_library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(allow_library_path_paste) { %>");tmpl_array.push(' <li class="divider"></li>');tmpl_array.push(' <li class="dropdown-header">Admins only</li>');tmpl_array.push("<% if(allow_library_path_paste) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% } %>");tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push("<% } else { %>");tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("<% } %>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(' <button data-id="<%- id %>" data-toggle="tooltip" data-placement="top" title="Show library information" id="toolbtn_show_libinfo" class="primary-button" style="margin-left: 0.5em;" type="button"><span class="fa fa-info-circle"></span> Library Info</button>');tmpl_array.push(' <span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki"><a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank"><button class="primary-button btn-xs" type="button"><span class="fa fa-question-circle"></span> Help</button></a></span>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateLibInfoInModal:function(){tmpl_array=[];tmpl_array.push('<div id="lif_info_modal">');tmpl_array.push("<h2>Library name:</h2>");tmpl_array.push('<p><%- library.get("name") %></p>');tmpl_array.push("<h3>Library description:</h3>");tmpl_array.push('<p><%- library.get("description") %></p>');tmpl_array.push("<h3>Library synopsis:</h3>");tmpl_array.push('<p><%- library.get("synopsis") %></p>');tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var g=[];g.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');g.push("Select history: ");g.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</span>");return _.template(g.join(""))},templateImportIntoHistoryProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateAddingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Adding selected datasets to library folder <b><%= _.escape(folder_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateDeletingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateBrowserModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');g.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom:1em;">');g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');g.push("</label>");g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting folders" type="radio" name="jstree-radio" value="jstree-disable-files"> Folders');g.push("</label>");g.push("</div>");g.push('<div style="margin-bottom:1em;">');g.push('<label class="checkbox-inline jstree-preserve-structure" style="display:none;">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files" style="display:none;">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<div id="jstree_browser">');g.push("</div>");g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="extension" class="extension" />');g.push(' Genome: <span id="genome" class="genome" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateImportPathModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-folders-message">All files within the given folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom: 0.5em;">');g.push('<label class="checkbox-inline jstree-preserve-structure">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline"></textarea>');g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="extension" class="extension" />');g.push(' Genome: <span id="genome" class="genome" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateAddFilesFromHistory:function(){var g=[];g.push('<div id="add_files_modal">');g.push('<div id="history_modal_combo_bulk">');g.push("Select history: ");g.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</div>");g.push("<br/>");g.push('<div id="selected_history_content">');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateHistoryContents:function(){var g=[];g.push("<strong>Choose the datasets to import:</strong>");g.push("<ul>");g.push(" <% _.each(history_contents, function(history_item) { %>");g.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');g.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');g.push(" </li>");g.push(" <% }); %>");g.push("</ul>");return _.template(g.join(""))}});return{FolderToolbarView:b}});
\ No newline at end of file
+define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(c,e,f,d,a){var b=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_show_libinfo":"showLibInfo","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(g){this.options=_.defaults(g||{},this.defaults);this.fetchExtAndGenomes();this.render()},render:function(g){this.options=_.extend(this.options,g);var i=this.templateToolBar();var h={id:this.options.id,is_admin:false,is_anonym:true,mutiple_add_dataset_options:false};if(Galaxy.currUser){h.is_admin=Galaxy.currUser.isAdmin();h.is_anonym=Galaxy.currUser.isAnonymous();if(Galaxy.config.user_library_import_dir!==null||Galaxy.config.allow_library_path_paste!==false||Galaxy.config.library_import_dir!==null){h.mutiple_add_dataset_options=true}}this.$el.html(i(h))},configureElements:function(g){this.options=_.extend(this.options,g);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(i){i.preventDefault();i.stopPropagation();var g=this;var h=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:h(),buttons:{Create:function(){g.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var g=this.serialize_new_folder();if(this.validate_new_folder(g)){var h=new d.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];h.url=h.urlRoot+"/"+current_folder_id;h.save(g,{success:function(i){Galaxy.modal.hide();f.success("Folder created.");i.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(i)},error:function(j,i){Galaxy.modal.hide();if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}else{f.error("Folder's name is missing.")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(g){return g.name!==""},modalBulkImport:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select some datasets first.")}else{this.refreshUserHistoriesList(function(i){var h=i.templateBulkImportInModal();i.modal=Galaxy.modal;i.modal.show({closing_events:true,title:"Import into History",body:h({histories:i.histories.models}),buttons:{Import:function(){i.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(h){var g=this;this.histories=new d.GalaxyHistories();this.histories.fetch({success:function(){h(g)},error:function(j,i){if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var k=$("select[name=dataset_import_bulk] option:selected").val();var n=$("select[name=dataset_import_bulk] option:selected").text();this.options.last_used_history_id=k;var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var m=[];for(var j=h.length-1;j>=0;j--){var g=h[j];var l=new d.HistoryItem();l.url=l.urlRoot+k+"/contents";l.content=g;l.source="library";m.push(l)}this.initChainCallControl({length:m.length,action:"to_history",history_name:n});jQuery.getJSON(galaxy_config.root+"history/set_as_current?id="+k);this.chainCallImportingIntoHistory(m,n)},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(g,k){var i=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){i.push(this.parentElement.parentElement.id)}});var h="/api/libraries/datasets/download/"+k;var j={ld_ids:i};this.processDownload(h,j,"get")},processDownload:function(h,i,j){if(h&&i){i=typeof i==="string"?i:$.param(i);var g="";$.each(i.split("&"),function(){var k=this.split("=");g+='<input type="hidden" name="'+k[0]+'" value="'+k[1]+'" />'});$('<form action="'+h+'" method="'+(j||"post")+'">'+g+"</form>").appendTo("body").submit().remove();f.info("Your download will begin soon.")}else{f.error("An error occurred.")}},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(g){g.modal=Galaxy.modal;var h=g.templateAddFilesFromHistory();var i=g.options.full_path[g.options.full_path.length-1][1];g.modal.show({closing_events:true,title:"Adding datasets from your history to folder "+i,body:h({histories:g.histories.models}),buttons:{Add:function(){g.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}});if(g.histories.models.length>0){g.fetchAndDisplayHistoryContents(g.histories.models[0].id);$("#dataset_add_bulk").change(function(j){g.fetchAndDisplayHistoryContents(j.target.value)})}else{f.error("An error ocurred.")}})},importFilesFromPathModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateImportPathModal();this.modal.show({closing_events:true,title:"Please enter paths to import",body:g({}),buttons:{Import:function(){h.importFromPathsClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes()},fetchExtAndGenomes:function(){var g=this;e.get(galaxy_config.root+"api/datatypes?extension_only=False",function(h){for(key in h){g.list_extensions.push({id:h[key].extension,text:h[key].extension,description:h[key].description,description_url:h[key].description_url})}g.list_extensions.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0});g.list_extensions.unshift(g.auto)});e.get(galaxy_config.root+"api/genomes",function(h){for(key in h){g.list_genomes.push({id:h[key][1],text:h[key][0]})}g.list_genomes.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0})})},renderSelectBoxes:function(){var g=this;this.select_genome=new a.View({css:"library-genome-select",data:g.list_genomes,container:Galaxy.modal.$el.find("#library_genome_select"),value:"?"});this.select_extension=new a.View({css:"library-extension-select",data:g.list_extensions,container:Galaxy.modal.$el.find("#library_extension_select"),value:"auto"})},importFilesFromGalaxyFolderModal:function(g){var i=this;var h=this.templateBrowserModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Please select folders or files",body:h({}),buttons:{Import:function(){i.importFromJstreePath(i,g)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+i.id,{trigger:true})}});this.renderSelectBoxes();g.disabled_jstree_element="folders";this.renderJstree(g);$("input[type=radio]").change(function(j){if(j.target.value==="jstree-disable-folders"){g.disabled_jstree_element="folders";i.renderJstree(g);$(".jstree-folders-message").hide();$(".jstree-preserve-structure").hide();$(".jstree-link-files").hide();$(".jstree-files-message").show()}else{if(j.target.value==="jstree-disable-files"){$(".jstree-files-message").hide();$(".jstree-folders-message").show();$(".jstree-link-files").show();$(".jstree-preserve-structure").show();g.disabled_jstree_element="files";i.renderJstree(g)}}})},renderJstree:function(g){var i=this;this.options=_.extend(this.options,g);var j=g.source||"userdir";var h=this.options.disabled_jstree_element;this.jstree=new d.Jstree();this.jstree.url=this.jstree.urlRoot+"?target="+j+"&format=jstree&disable="+h;this.jstree.fetch({success:function(l,k){define("jquery",function(){return jQuery});require(["libs/jquery/jstree"],function(m){$("#jstree_browser").jstree("destroy");$("#jstree_browser").jstree({core:{data:l},plugins:["types","checkbox"],types:{folder:{icon:"jstree-folder"},file:{icon:"jstree-file"}},checkbox:{three_state:false}})})},error:function(l,k){if(typeof k.responseJSON!=="undefined"){f.error(k.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importFromPathsClicked:function(){var g=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var j=this.select_genome.value();var m=$("textarea#import_paths").val();var l=[];if(!m){f.info("Please enter a path relative to Galaxy root.")}else{this.modal.disableButton("Import");m=m.split("\n");for(var k=m.length-1;k>=0;k--){trimmed=m[k].trim();if(trimmed.length!==0){l.push(trimmed)}}this.initChainCallControl({length:l.length,action:"adding_datasets"});this.chainCallImportingFolders({paths:l,preserve_dirs:g,link_data:n,source:"admin_path",file_type:h,dbkey:j})}},initChainCallControl:function(g){var h;switch(g.action){case"adding_datasets":h=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h({folder_name:this.options.folder_name}));break;case"deleting_datasets":h=this.templateDeletingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h());break;case"to_history":h=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(h({history_name:g.history_name}));break;default:console.error("Wrong action specified.");break}this.progress=0;this.progressStep=100/g.length;this.options.chain_call_control.total_number=g.length;this.options.chain_call_control.failed_number=0},importFromJstreePath:function(n,r){var g=$("#jstree_browser").jstree().get_selected(true);var m=this.modal.$el.find(".preserve-checkbox").is(":checked");var o=this.modal.$el.find(".link-checkbox").is(":checked");var j=this.select_extension.value();var p=this.select_genome.value();var k=g[0].type;var q=[];if(g.length<1){f.info("Please select some items first.")}else{this.modal.disableButton("Import");for(var l=g.length-1;l>=0;l--){if(g[l].li_attr.full_path!==undefined){q.push(g[l].li_attr.full_path)}}this.initChainCallControl({length:q.length,action:"adding_datasets"});if(k==="folder"){var h=r.source+"_folder";this.chainCallImportingFolders({paths:q,preserve_dirs:m,link_data:o,source:h,file_type:j,dbkey:p})}else{if(k==="file"){var h=r.source+"_file";this.chainCallImportingUserdirFiles({paths:q,file_type:j,dbkey:p,source:h})}}}},fetchAndDisplayHistoryContents:function(i){var h=new d.HistoryContents({id:i});var g=this;h.fetch({success:function(k){var j=g.templateHistoryContents();g.histories.get(i).set({contents:k});g.modal.$el.find("#selected_history_content").html(j({history_contents:k.models.reverse()}))},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},addAllDatasetsFromHistory:function(){var l=this.modal.$el.find("#selected_history_content").find(":checked");var g=[];var k=[];if(l.length<1){f.info("You must select some datasets first.")}else{this.modal.disableButton("Add");l.each(function(){var i=$(this.parentElement).data("id");if(i){g.push(i)}});for(var j=g.length-1;j>=0;j--){history_dataset_id=g[j];var h=new d.Item();h.url="/api/folders/"+this.options.id+"/contents";h.set({from_hda_id:history_dataset_id});k.push(h)}this.initChainCallControl({length:k.length,action:"adding_datasets"});this.chainCallAddingHdas(k)}},chainCallImportingIntoHistory:function(h,k){var g=this;var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return true}var j=$.when(i.save({content:i.content,source:i.source}));j.done(function(){g.updateProgress();g.chainCallImportingIntoHistory(h,k)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallImportingIntoHistory(h,k)})},chainCallImportingUserdirFiles:function(g){var h=this;var i=g.paths.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected files imported into the current folder");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingUserdirFiles(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingUserdirFiles(g)})},chainCallImportingFolders:function(g){var h=this;var i=g.paths.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected folders and their contents imported into the current folder.");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&preserve_dirs="+g.preserve_dirs+"&link_data="+g.link_data+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingFolders(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingFolders(g)})},chainCallAddingHdas:function(h){var g=this;this.added_hdas=new d.Folder();var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var j=$.when(i.save({from_hda_id:i.get("from_hda_id")}));j.done(function(k){Galaxy.libraries.folderListView.collection.add(k);g.updateProgress();g.chainCallAddingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallAddingHdas(h)})},chainCallDeletingHdas:function(h){var g=this;this.deleted_lddas=new d.Folder();var i=h.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var j=$.when(i.destroy());j.done(function(l){Galaxy.libraries.folderListView.collection.remove(i.id);g.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var k=new d.Item(l);Galaxy.libraries.folderListView.collection.add(k)}g.chainCallDeletingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallDeletingHdas(h)})},checkIncludeDeleted:function(g){if(g.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select at least one dataset for deletion.")}else{var k=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:k({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var h=[];g.each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});this.progressStep=100/h.length;this.progress=0;var m=[];for(var j=h.length-1;j>=0;j--){var l=new d.Item({id:h[j]});m.push(l)}this.options.chain_call_control.total_number=h.length;this.chainCallDeletingHdas(m)}},showLibInfo:function(){var h=Galaxy.libraries.folderListView.folderContainer.attributes.metadata.parent_library_id;var g=null;var i=this;if(Galaxy.libraries.libraryListView!==null){g=Galaxy.libraries.libraryListView.collection.get(h);this.showLibInfoModal(g)}else{g=new d.Library({id:h});g.fetch({success:function(){i.showLibInfoModal(g)},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}},showLibInfoModal:function(g){var h=this.templateLibInfoInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Library Information",body:h({library:g}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(g){switch(g.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":this.importFilesFromGalaxyFolderModal({source:"importdir"});break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromGalaxyFolderModal({source:"userdir"});break;default:Galaxy.libraries.library_router.back();f.error("Invalid import source.");break}},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push(' <div id="library_toolbar">');tmpl_array.push(" <span><strong>DATA LIBRARIES</strong></span>");tmpl_array.push(' <span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"> | <input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted | </input></span>');tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push("<% if(mutiple_add_dataset_options) { %>");tmpl_array.push(' <div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button title="Add Datasets to Current Folder" id="" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-plus"></span><span class="fa fa-file"></span><span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');tmpl_array.push("<% if(Galaxy.config.user_library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(Galaxy.config.allow_library_path_paste) { %>");tmpl_array.push(' <li class="divider"></li>');tmpl_array.push(' <li class="dropdown-header">Admins only</li>');tmpl_array.push("<% if(Galaxy.config.library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(Galaxy.config.allow_library_path_paste) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% } %>");tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push("<% } else { %>");tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("<% } %>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(' <button data-id="<%- id %>" data-toggle="tooltip" data-placement="top" title="Show library information" id="toolbtn_show_libinfo" class="primary-button" style="margin-left: 0.5em;" type="button"><span class="fa fa-info-circle"></span> Library Info</button>');tmpl_array.push(' <span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki"><a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank"><button class="primary-button btn-xs" type="button"><span class="fa fa-question-circle"></span> Help</button></a></span>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateLibInfoInModal:function(){tmpl_array=[];tmpl_array.push('<div id="lif_info_modal">');tmpl_array.push("<h2>Library name:</h2>");tmpl_array.push('<p><%- library.get("name") %></p>');tmpl_array.push("<h3>Library description:</h3>");tmpl_array.push('<p><%- library.get("description") %></p>');tmpl_array.push("<h3>Library synopsis:</h3>");tmpl_array.push('<p><%- library.get("synopsis") %></p>');tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var g=[];g.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');g.push("Select history: ");g.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</span>");return _.template(g.join(""))},templateImportIntoHistoryProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateAddingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Adding selected datasets to library folder <b><%= _.escape(folder_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateDeletingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateBrowserModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');g.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom:1em;">');g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');g.push("</label>");g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting folders" type="radio" name="jstree-radio" value="jstree-disable-files"> Folders');g.push("</label>");g.push("</div>");g.push('<div style="margin-bottom:1em;">');g.push('<label class="checkbox-inline jstree-preserve-structure" style="display:none;">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files" style="display:none;">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<div id="jstree_browser">');g.push("</div>");g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="library_extension_select" class="library-extension-select" />');g.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateImportPathModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-folders-message">All files within the given folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom: 0.5em;">');g.push('<label class="checkbox-inline jstree-preserve-structure">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline"></textarea>');g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="library_extension_select" class="library-extension-select" />');g.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateAddFilesFromHistory:function(){var g=[];g.push('<div id="add_files_modal">');g.push('<div id="history_modal_combo_bulk">');g.push("Select history: ");g.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</div>");g.push("<br/>");g.push('<div id="selected_history_content">');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateHistoryContents:function(){var g=[];g.push("<strong>Choose the datasets to import:</strong>");g.push("<ul>");g.push(" <% _.each(history_contents, function(history_item) { %>");g.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');g.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');g.push(" </li>");g.push(" <% }); %>");g.push("</ul>");return _.template(g.join(""))}});return{FolderToolbarView:b}});
\ No newline at end of file
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/scripts/packed/mvc/ui/ui-select.js
--- a/static/scripts/packed/mvc/ui/ui-select.js
+++ b/static/scripts/packed/mvc/ui/ui-select.js
@@ -1,1 +1,1 @@
-define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{css:"",placeholder:"No data available",data:[],value:null,multiple:false,minimumInputLength:0,initialData:""},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));if(!this.options.container){console.log("ui-select::initialize() : container not specified.");return}this.options.container.append(this.$el);this.select_data=this.options.data;this._refresh();if(!this.options.multiple){if(this.options.value){this._setValue(this.options.value)}var c=this;if(this.options.onchange){this.$el.on("change",function(){c.options.onchange(c.value())})}}},value:function(c){var d=this._getValue();if(c!==undefined){this._setValue(c)}var e=this._getValue();if((e!=d&&this.options.onchange)){this.options.onchange(e)}return e},text:function(){return this.$el.select2("data").text},disabled:function(){return !this.$el.select2("enable")},enable:function(){this.$el.select2("enable",true)},disable:function(){this.$el.select2("enable",false)},add:function(c){this.select_data.push({id:c.id,text:c.text});this._refresh()},del:function(d){var c=this._getIndex(d);if(c!=-1){this.select_data.splice(c,1);this._refresh()}},remove:function(){this.$el.select2("destroy")},update:function(c){this.select_data=[];for(var d in c.data){this.select_data.push(c.data[d])}this._refresh()},_refresh:function(){if(!this.options.multiple){var d=this._getValue();var c={data:this.select_data,containerCssClass:this.options.css,placeholder:this.options.placeholder,width:"resolve",dropdownAutoWidth:true};this.$el.select2(c);this._setValue(d)}else{var c={multiple:this.options.multiple,containerCssClass:this.options.css,placeholder:this.options.placeholder,minimumInputLength:this.options.minimumInputLength,ajax:this.options.ajax,dropdownCssClass:this.options.dropdownCssClass,escapeMarkup:this.options.escapeMarkup,formatResult:this.options.formatResult,formatSelection:this.options.formatSelection,initSelection:this.options.initSelection,initialData:this.options.initialData};this.$el.select2(c)}},_getIndex:function(d){for(var c in this.select_data){if(this.select_data[c].id==d){return c}}return -1},_getValue:function(){return this.$el.select2("val")},_setValue:function(d){var c=this._getIndex(d);if(c==-1){if(this.select_data.length>0){d=this.select_data[0].id}}this.$el.select2("val",d)},_template:function(c){return'<input type="hidden" value="'+this.options.initialData+'"/>'}});return{View:b}});
\ No newline at end of file
+define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{css:"",placeholder:"No data available",data:[],value:null,multiple:false,minimumInputLength:0,initialData:""},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));if(!this.options.container){console.log("ui-select::initialize() : container not specified.");return}this.options.container.append(this.$el);this.select_data=this.options.data;this._refresh();if(!this.options.multiple){if(this.options.value){this._setValue(this.options.value)}var c=this;if(this.options.onchange){this.$el.on("change",function(){c.options.onchange(c.value())})}}},value:function(c){var d=this._getValue();if(c!==undefined){this._setValue(c)}var e=this._getValue();if((e!=d&&this.options.onchange)){this.options.onchange(e)}return e},text:function(){return this.$el.select2("data").text},disabled:function(){return !this.$el.select2("enable")},enable:function(){this.$el.select2("enable",true)},disable:function(){this.$el.select2("enable",false)},add:function(c){this.select_data.push({id:c.id,text:c.text});this._refresh()},del:function(d){var c=this._getIndex(d);if(c!=-1){this.select_data.splice(c,1);this._refresh()}},remove:function(){this.$el.select2("destroy")},update:function(c){this.select_data=[];for(var d in c.data){this.select_data.push(c.data[d])}this._refresh()},_refresh:function(){if(!this.options.multiple){var d=this._getValue();var c={data:this.select_data,containerCssClass:this.options.css,placeholder:this.options.placeholder,dropdownAutoWidth:true};this.$el.select2(c);this._setValue(d)}else{var c={multiple:this.options.multiple,containerCssClass:this.options.css,placeholder:this.options.placeholder,minimumInputLength:this.options.minimumInputLength,ajax:this.options.ajax,dropdownCssClass:this.options.dropdownCssClass,escapeMarkup:this.options.escapeMarkup,formatResult:this.options.formatResult,formatSelection:this.options.formatSelection,initSelection:this.options.initSelection,initialData:this.options.initialData};this.$el.select2(c)}},_getIndex:function(d){for(var c in this.select_data){if(this.select_data[c].id==d){return c}}return -1},_getValue:function(){return this.$el.select2("val")},_setValue:function(d){var c=this._getIndex(d);if(c==-1){if(this.select_data.length>0){d=this.select_data[0].id}}this.$el.select2("val",d)},_template:function(c){return'<input type="hidden" value="'+this.options.initialData+'"/>'}});return{View:b}});
\ No newline at end of file
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1323,6 +1323,8 @@
li.folderRow,li.datasetRow{border-top:solid 1px #c6bfa8}
li.folderRow:hover,li.datasetRow:hover{background-color:#f9f9f9}
td.right-center{vertical-align:middle !important;text-align:right}
+.library-genome-select{max-width:350px}
+.library-extension-select{max-width:140px}
.library_table td{border-top:1px solid #5f6990 !important}
.library_table th{border-bottom:2px solid #5f6990 !important}
.library_table a{color:#0A143D}.library_table a:hover{color:maroon}
@@ -1574,6 +1576,7 @@
.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}
.jstree-default-large.jstree-rtl .jstree-last{background:transparent}
@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:bold;font-size:1.1em;text-shadow:1px 1px white} #jstree-dnd.jstree-dnd-responsive>i{background:transparent;width:40px;height:40px} #jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url("../images/jstree/40px.png");background-position:0 -200px;background-size:120px 240px} #jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url("../images/jstree/40px.png");background-position:-40px -200px;background-size:120px 240px} #jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive{} .jstree-default-responsive .jstree-icon{background-image:url("../images/jstree/40px.png")} .jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent} .jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap} .jstree-default-responsive .jstree-anchor{line-height:40px;height:40px} .jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px} .jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0} .jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px} .jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0} .jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px} .jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent} .jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0px !important} .jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px !important} .jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0 !important} .jstree-default-responsive .jstree-themeicon{background-position:-40px -40px} .jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px} .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px} .jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px} .jstree-default-responsive .jstree-anchor{font-weight:bold;font-size:1.1em;text-shadow:1px 1px white} .jstree-default-responsive>.jstree-striped{background:transparent} .jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,0.7);border-bottom:1px solid rgba(64,64,64,0.2);background:#ebebeb;height:40px} .jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9} .jstree-default-responsive .jstree-wholerow-clicked{background:#beebff} .jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666} .jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0} .jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none} .jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url("../images/jstree/40px.png");background-size:120px 240px} .jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y} .jstree-default-responsive .jstree-last{background:transparent} .jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px} .jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px} .jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0} .jstree-default-responsive .jstree-file{background:url("../images/jstree/40px.png") 0 -160px no-repeat;background-size:120px 240px} .jstree-default-responsive .jstree-folder{background:url("../images/jstree/40px.png") -40px -40px no-repeat;background-size:120px 240px}}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}
+.select2-minwidth{min-width:256px}
.unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}
.parent-width{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;*width:90%}
.clear:before,.clear:after{content:" ";display:table;}
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/style/blue/library.css
--- a/static/style/blue/library.css
+++ b/static/style/blue/library.css
@@ -7,6 +7,8 @@
li.folderRow,li.datasetRow{border-top:solid 1px #c6bfa8}
li.folderRow:hover,li.datasetRow:hover{background-color:#f9f9f9}
td.right-center{vertical-align:middle !important;text-align:right}
+.library-genome-select{max-width:350px}
+.library-extension-select{max-width:140px}
.library_table td{border-top:1px solid #5f6990 !important}
.library_table th{border-bottom:2px solid #5f6990 !important}
.library_table a{color:#0A143D}.library_table a:hover{color:maroon}
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/style/src/less/base.less
--- a/static/style/src/less/base.less
+++ b/static/style/src/less/base.less
@@ -31,6 +31,11 @@
// Mixins
+/* fix for zero width select2 - remove when fixed there */
+.select2-minwidth {
+ min-width: 256px;
+}
+
.unselectable {
.user-select(none);
}
diff -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 -r c29f651e4accc25bb1ba5aba78cf4e84409c6fcb static/style/src/less/library.less
--- a/static/style/src/less/library.less
+++ b/static/style/src/less/library.less
@@ -29,13 +29,19 @@
background-color: @table-bg-accent;
}
-td.right-center{
+td.right-center {
vertical-align: middle !important;
text-align: right;
-
}
-.library_table{
+.library-genome-select {
+ max-width: 350px;
+}
+.library-extension-select {
+ max-width: 140px;
+}
+
+.library_table {
td {
border-top:1px solid #5f6990 !important;
}
https://bitbucket.org/galaxy/galaxy-central/commits/1af9145657c0/
Changeset: 1af9145657c0
Branch: next-stable
User: martenson
Date: 2014-09-26 19:17:35+00:00
Summary: select2 fixes and impl. of missing feature import from path
Affected #: 12 files
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
--- a/client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
+++ b/client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
@@ -54,7 +54,12 @@
auto: {
id : 'auto',
text : 'Auto-detect',
- description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'
+ description : 'This system will try to detect the file type automatically.' +
+ ' If your file is not detected properly as one of the known formats,' +
+ ' it most likely means that it has some format problems (e.g., different' +
+ ' number of columns on different rows). You can still coerce the system' +
+ ' to set your data to the format you think it should be.' +
+ ' You can also upload compressed files, which will automatically be decompressed.'
},
// genomes
@@ -73,15 +78,12 @@
id: this.options.id,
is_admin: false,
is_anonym: true,
- user_library_import_dir: Galaxy.config.user_library_import_dir,
- allow_library_path_paste: Galaxy.config.allow_library_path_paste,
- library_import_dir: Galaxy.config.library_import_dir,
mutiple_add_dataset_options: false
}
if (Galaxy.currUser){
template_defaults.is_admin = Galaxy.currUser.isAdmin();
template_defaults.is_anonym = Galaxy.currUser.isAnonymous();
- if (template_defaults.user_library_import_dir !== null || template_defaults.allow_library_path_paste !== false || template_defaults.library_import_dir !== null ){
+ if ( Galaxy.config.user_library_import_dir !== null || Galaxy.config.allow_library_path_paste !== false || Galaxy.config.library_import_dir !== null ){
template_defaults.mutiple_add_dataset_options = true;
}
}
@@ -402,33 +404,38 @@
// https://trello.com/c/dIUE9YPl/1933-ui-common-resources-and-data-into-galaxy…
var that = this;
this.select_genome = new mod_select.View( {
- css: 'genome',
+ css: 'library-genome-select',
data: that.list_genomes,
- container: Galaxy.modal.$el.find( '#genome' ),
+ container: Galaxy.modal.$el.find( '#library_genome_select' ),
value: '?'
} );
this.select_extension = new mod_select.View({
- css: 'extension',
+ css: 'library-extension-select',
data: that.list_extensions,
- container: Galaxy.modal.$el.find('#extension'),
+ container: Galaxy.modal.$el.find( '#library_extension_select' ),
value: 'auto'
});
},
+
/**
- * Create modal for importing form user's directory
+ * Create modal for importing from given directory
* on Galaxy. Bind jQuery events.
*/
- importFilesFromUserdirModal: function(){
+ importFilesFromGalaxyFolderModal: function( options ){
var that = this;
+ var template_modal = this.templateBrowserModal();
this.modal = Galaxy.modal;
- var template_modal = this.templateBrowserModal();
this.modal.show({
closing_events : true,
title : 'Please select folders or files',
body : template_modal({}),
buttons : {
- 'Import' : function() {that.importFromUserdirClicked(that);},
- 'Close' : function() {Galaxy.modal.hide();}
+ 'Import' : function() {
+ that.importFromJstreePath( that, options );
+ },
+ 'Close' : function() {
+ Galaxy.modal.hide();
+ }
},
closing_callback: function(){
// TODO: should not trigger routes outside of the router
@@ -437,21 +444,24 @@
});
this.renderSelectBoxes();
- this.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ this.renderJstree( options );
- $('input[type=radio]').change(function(event){
+ $( 'input[type=radio]' ).change( function( event ){
if (event.target.value ==='jstree-disable-folders') {
- that.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ that.renderJstree( options );
$('.jstree-folders-message').hide();
$('.jstree-preserve-structure').hide();
$('.jstree-link-files').hide();
$('.jstree-files-message').show();
- } else if (event.target.value ==='jstree-disable-files'){
+ } else if ( event.target.value ==='jstree-disable-files' ){
$('.jstree-files-message').hide();
$('.jstree-folders-message').show();
$('.jstree-link-files').show();
$('.jstree-preserve-structure').show();
- that.renderJstree({disabled_jstree_element: 'files'});
+ options.disabled_jstree_element = 'files';
+ that.renderJstree( options );
}
}
);
@@ -463,12 +473,16 @@
* data.
* @param {[type]} options [description]
*/
- renderJstree: function(options){
+ renderJstree: function( options ){
var that = this;
- this.options = _.extend(this.options, options);
+ this.options = _.extend( this.options, options );
+ var target = options.source || 'userdir';
var disabled_jstree_element = this.options.disabled_jstree_element;
this.jstree = new mod_library_model.Jstree();
- this.jstree.url = this.jstree.urlRoot + '?target=userdir&format=jstree&disable=' + disabled_jstree_element;
+ this.jstree.url = this.jstree.urlRoot +
+ '?target=' + target +
+ '&format=jstree' +
+ '&disable=' + disabled_jstree_element;
this.jstree.fetch({
success: function(model, response){
// This is to prevent double jquery load. I think. Carl is magician.
@@ -579,7 +593,7 @@
* jstree.js has to be loaded before
* @see renderJstree
*/
- importFromUserdirClicked: function ( that ){
+ importFromJstreePath: function ( that, options ){
var selected_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
var preserve_dirs = this.modal.$el.find( '.preserve-checkbox' ).is( ':checked' );
var link_data = this.modal.$el.find( '.link-checkbox' ).is( ':checked' );
@@ -588,7 +602,7 @@
var selection_type = selected_nodes[0].type;
var paths = [];
if ( selected_nodes.length < 1 ){
- mod_toastr.info( 'You must select some items first.' );
+ mod_toastr.info( 'Please select some items first.' );
} else {
this.modal.disableButton( 'Import' );
for ( var i = selected_nodes.length - 1; i >= 0; i-- ){
@@ -598,17 +612,19 @@
}
this.initChainCallControl( { length: paths.length, action: 'adding_datasets' } );
if ( selection_type === 'folder' ){
-
+ var full_source = options.source + '_folder';
this.chainCallImportingFolders( { paths: paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
- source: 'userdir_folder',
+ source: full_source,
file_type: file_type,
dbkey: dbkey } );
} else if ( selection_type === 'file' ){
+ var full_source = options.source + '_file';
this.chainCallImportingUserdirFiles( { paths : paths,
file_type: file_type,
- dbkey: dbkey } );
+ dbkey: dbkey,
+ source: full_source } );
}
}
},
@@ -713,7 +729,7 @@
return true;
}
var promise = $.when( $.post( '/api/libraries/datasets?encoded_folder_id=' + that.id +
- '&source=userdir_file' +
+ '&source=' + options.source +
'&path=' + popped_item +
'&file_type=' + options.file_type +
'&dbkey=' + options.dbkey ) )
@@ -760,22 +776,12 @@
'&dbkey=' + options.dbkey ) )
promise.done(function(response){
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
})
.fail(function(){
that.options.chain_call_control.failed_number += 1;
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
});
},
@@ -952,12 +958,13 @@
this.addFilesFromHistoryModal();
break;
case "importdir":
+ this.importFilesFromGalaxyFolderModal( { source: 'importdir' } );
break;
case "path":
this.importFilesFromPathModal();
break;
case "userdir":
- this.importFilesFromUserdirModal();
+ this.importFilesFromGalaxyFolderModal( { source: 'userdir' } );
break;
default:
Galaxy.libraries.library_router.back();
@@ -984,17 +991,19 @@
tmpl_array.push(' </button>');
tmpl_array.push(' <ul class="dropdown-menu" role="menu">');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');
- tmpl_array.push('<% if(user_library_import_dir !== null) { %>');
+ tmpl_array.push('<% if(Galaxy.config.user_library_import_dir !== null) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');
tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
- // tmpl_array.push('<% if(allow_library_path_paste || library_import_dir !== null) { %>');
- tmpl_array.push(' <li class="divider"></li>');
- tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
- // tmpl_array.push('<% if(library_import_dir !== null) { %>');
- // tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
- // tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
+
+ tmpl_array.push(' <li class="divider"></li>');
+ tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
+
+ tmpl_array.push('<% if(Galaxy.config.library_import_dir !== null) { %>');
+ tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
+ tmpl_array.push('<% } %>');
+
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');
tmpl_array.push('<% } %>');
tmpl_array.push('<% } %>');
@@ -1154,8 +1163,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
@@ -1184,8 +1193,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d client/galaxy/scripts/mvc/ui/ui-select.js
--- a/client/galaxy/scripts/mvc/ui/ui-select.js
+++ b/client/galaxy/scripts/mvc/ui/ui-select.js
@@ -155,7 +155,6 @@
data : this.select_data,
containerCssClass : this.options.css,
placeholder : this.options.placeholder,
- width : 'resolve',
dropdownAutoWidth : true
};
this.$el.select2(select_opt);
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d lib/galaxy/webapps/galaxy/api/ftp_files.py
--- a/lib/galaxy/webapps/galaxy/api/ftp_files.py
+++ b/lib/galaxy/webapps/galaxy/api/ftp_files.py
@@ -49,7 +49,7 @@
userdir_jstree = self.__create_jstree( full_import_dir, disable )
response = userdir_jstree.jsonData()
except Exception, exception:
- log.debug(str(exception))
+ log.debug( str( exception ) )
raise exceptions.InternalServerError( 'Could not create tree representation of the given folder: ' + str( full_import_dir ) )
elif format == 'ajax':
raise exceptions.NotImplemented( 'Not implemented yet. Sorry.' )
@@ -61,6 +61,26 @@
raise exceptions.InternalServerError( 'Could not get the files from your user directory folder.' )
else:
raise exceptions.InternalServerError( 'Could not get the files from your user directory folder.' )
+ elif target == 'importdir':
+ base_dir = trans.app.config.library_import_dir
+ if base_dir is None:
+ raise exceptions.ConfigDoesNotAllowException( 'The configuration of this Galaxy instance does not allow usage of import directory.' )
+ if format == 'jstree':
+ disable = kwd.get( 'disable', 'folders')
+ try:
+ importdir_jstree = self.__create_jstree( base_dir, disable )
+ response = importdir_jstree.jsonData()
+ except Exception, exception:
+ log.debug( str( exception ) )
+ raise exceptions.InternalServerError( 'Could not create tree representation of the given folder: ' + str( base_dir ) )
+ elif format == 'ajax':
+ raise exceptions.NotImplemented( 'Not implemented yet. Sorry.' )
+ else:
+ try:
+ response = self.__load_all_filenames( base_dir )
+ except Exception, exception:
+ log.error( 'Could not get user import files: %s', str( exception ), exc_info=True )
+ raise exceptions.InternalServerError( 'Could not get the files from your import directory folder.' )
else:
user_ftp_base_dir = trans.app.config.ftp_upload_dir
if user_ftp_base_dir is None:
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d lib/galaxy/webapps/galaxy/api/lda_datasets.py
--- a/lib/galaxy/webapps/galaxy/api/lda_datasets.py
+++ b/lib/galaxy/webapps/galaxy/api/lda_datasets.py
@@ -429,8 +429,15 @@
folder = self.folder_manager.get( trans, folder_id )
source = kwd.get( 'source', None )
- if source not in [ 'userdir_file', 'userdir_folder', 'admin_path' ]:
- raise exceptions.RequestParameterMissingException( 'You have to specify "source" parameter. Possible values are "userdir_file", "userdir_folder" and "admin_path". ')
+ if source not in [ 'userdir_file', 'userdir_folder', 'importdir_file', 'importdir_folder', 'admin_path' ]:
+ raise exceptions.RequestParameterMissingException( 'You have to specify "source" parameter. Possible values are "userdir_file", "userdir_folder", "admin_path", "importdir_file" and "importdir_folder". ')
+ if source in [ 'importdir_file', 'importdir_folder' ]:
+ if not trans.user_is_admin:
+ raise exceptions.AdminRequiredException( 'Only admins can import from importdir.' )
+ if not trans.app.config.library_import_dir:
+ raise exceptions.ConfigDoesNotAllowException( 'The configuration of this Galaxy instance does not allow admins to import into library from importdir.' )
+ user_base_dir = trans.app.config.library_import_dir
+
if source in [ 'userdir_file', 'userdir_folder' ]:
user_login = trans.user.email
@@ -505,6 +512,7 @@
return job_dict
@web.expose
+ # TODO convert to expose_api
def download( self, trans, format, **kwd ):
"""
download( self, trans, format, **kwd )
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/scripts/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/mvc/library/library-foldertoolbar-view.js
@@ -54,7 +54,12 @@
auto: {
id : 'auto',
text : 'Auto-detect',
- description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'
+ description : 'This system will try to detect the file type automatically.' +
+ ' If your file is not detected properly as one of the known formats,' +
+ ' it most likely means that it has some format problems (e.g., different' +
+ ' number of columns on different rows). You can still coerce the system' +
+ ' to set your data to the format you think it should be.' +
+ ' You can also upload compressed files, which will automatically be decompressed.'
},
// genomes
@@ -73,15 +78,12 @@
id: this.options.id,
is_admin: false,
is_anonym: true,
- user_library_import_dir: Galaxy.config.user_library_import_dir,
- allow_library_path_paste: Galaxy.config.allow_library_path_paste,
- library_import_dir: Galaxy.config.library_import_dir,
mutiple_add_dataset_options: false
}
if (Galaxy.currUser){
template_defaults.is_admin = Galaxy.currUser.isAdmin();
template_defaults.is_anonym = Galaxy.currUser.isAnonymous();
- if (template_defaults.user_library_import_dir !== null || template_defaults.allow_library_path_paste !== false || template_defaults.library_import_dir !== null ){
+ if ( Galaxy.config.user_library_import_dir !== null || Galaxy.config.allow_library_path_paste !== false || Galaxy.config.library_import_dir !== null ){
template_defaults.mutiple_add_dataset_options = true;
}
}
@@ -402,33 +404,38 @@
// https://trello.com/c/dIUE9YPl/1933-ui-common-resources-and-data-into-galaxy…
var that = this;
this.select_genome = new mod_select.View( {
- css: 'genome',
+ css: 'library-genome-select',
data: that.list_genomes,
- container: Galaxy.modal.$el.find( '#genome' ),
+ container: Galaxy.modal.$el.find( '#library_genome_select' ),
value: '?'
} );
this.select_extension = new mod_select.View({
- css: 'extension',
+ css: 'library-extension-select',
data: that.list_extensions,
- container: Galaxy.modal.$el.find('#extension'),
+ container: Galaxy.modal.$el.find( '#library_extension_select' ),
value: 'auto'
});
},
+
/**
- * Create modal for importing form user's directory
+ * Create modal for importing from given directory
* on Galaxy. Bind jQuery events.
*/
- importFilesFromUserdirModal: function(){
+ importFilesFromGalaxyFolderModal: function( options ){
var that = this;
+ var template_modal = this.templateBrowserModal();
this.modal = Galaxy.modal;
- var template_modal = this.templateBrowserModal();
this.modal.show({
closing_events : true,
title : 'Please select folders or files',
body : template_modal({}),
buttons : {
- 'Import' : function() {that.importFromUserdirClicked(that);},
- 'Close' : function() {Galaxy.modal.hide();}
+ 'Import' : function() {
+ that.importFromJstreePath( that, options );
+ },
+ 'Close' : function() {
+ Galaxy.modal.hide();
+ }
},
closing_callback: function(){
// TODO: should not trigger routes outside of the router
@@ -437,21 +444,24 @@
});
this.renderSelectBoxes();
- this.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ this.renderJstree( options );
- $('input[type=radio]').change(function(event){
+ $( 'input[type=radio]' ).change( function( event ){
if (event.target.value ==='jstree-disable-folders') {
- that.renderJstree({disabled_jstree_element: 'folders'});
+ options.disabled_jstree_element = 'folders';
+ that.renderJstree( options );
$('.jstree-folders-message').hide();
$('.jstree-preserve-structure').hide();
$('.jstree-link-files').hide();
$('.jstree-files-message').show();
- } else if (event.target.value ==='jstree-disable-files'){
+ } else if ( event.target.value ==='jstree-disable-files' ){
$('.jstree-files-message').hide();
$('.jstree-folders-message').show();
$('.jstree-link-files').show();
$('.jstree-preserve-structure').show();
- that.renderJstree({disabled_jstree_element: 'files'});
+ options.disabled_jstree_element = 'files';
+ that.renderJstree( options );
}
}
);
@@ -463,12 +473,16 @@
* data.
* @param {[type]} options [description]
*/
- renderJstree: function(options){
+ renderJstree: function( options ){
var that = this;
- this.options = _.extend(this.options, options);
+ this.options = _.extend( this.options, options );
+ var target = options.source || 'userdir';
var disabled_jstree_element = this.options.disabled_jstree_element;
this.jstree = new mod_library_model.Jstree();
- this.jstree.url = this.jstree.urlRoot + '?target=userdir&format=jstree&disable=' + disabled_jstree_element;
+ this.jstree.url = this.jstree.urlRoot +
+ '?target=' + target +
+ '&format=jstree' +
+ '&disable=' + disabled_jstree_element;
this.jstree.fetch({
success: function(model, response){
// This is to prevent double jquery load. I think. Carl is magician.
@@ -579,7 +593,7 @@
* jstree.js has to be loaded before
* @see renderJstree
*/
- importFromUserdirClicked: function ( that ){
+ importFromJstreePath: function ( that, options ){
var selected_nodes = $( '#jstree_browser' ).jstree().get_selected( true );
var preserve_dirs = this.modal.$el.find( '.preserve-checkbox' ).is( ':checked' );
var link_data = this.modal.$el.find( '.link-checkbox' ).is( ':checked' );
@@ -588,7 +602,7 @@
var selection_type = selected_nodes[0].type;
var paths = [];
if ( selected_nodes.length < 1 ){
- mod_toastr.info( 'You must select some items first.' );
+ mod_toastr.info( 'Please select some items first.' );
} else {
this.modal.disableButton( 'Import' );
for ( var i = selected_nodes.length - 1; i >= 0; i-- ){
@@ -598,17 +612,19 @@
}
this.initChainCallControl( { length: paths.length, action: 'adding_datasets' } );
if ( selection_type === 'folder' ){
-
+ var full_source = options.source + '_folder';
this.chainCallImportingFolders( { paths: paths,
preserve_dirs: preserve_dirs,
link_data: link_data,
- source: 'userdir_folder',
+ source: full_source,
file_type: file_type,
dbkey: dbkey } );
} else if ( selection_type === 'file' ){
+ var full_source = options.source + '_file';
this.chainCallImportingUserdirFiles( { paths : paths,
file_type: file_type,
- dbkey: dbkey } );
+ dbkey: dbkey,
+ source: full_source } );
}
}
},
@@ -713,7 +729,7 @@
return true;
}
var promise = $.when( $.post( '/api/libraries/datasets?encoded_folder_id=' + that.id +
- '&source=userdir_file' +
+ '&source=' + options.source +
'&path=' + popped_item +
'&file_type=' + options.file_type +
'&dbkey=' + options.dbkey ) )
@@ -760,22 +776,12 @@
'&dbkey=' + options.dbkey ) )
promise.done(function(response){
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
})
.fail(function(){
that.options.chain_call_control.failed_number += 1;
that.updateProgress();
- that.chainCallImportingFolders( { paths: options.paths,
- preserve_dirs: options.preserve_dirs,
- link_data: options.link_data,
- source: options.source,
- file_type: options.file_type,
- dbkey: options.dbkey } );
+ that.chainCallImportingFolders( options );
});
},
@@ -952,12 +958,13 @@
this.addFilesFromHistoryModal();
break;
case "importdir":
+ this.importFilesFromGalaxyFolderModal( { source: 'importdir' } );
break;
case "path":
this.importFilesFromPathModal();
break;
case "userdir":
- this.importFilesFromUserdirModal();
+ this.importFilesFromGalaxyFolderModal( { source: 'userdir' } );
break;
default:
Galaxy.libraries.library_router.back();
@@ -984,17 +991,19 @@
tmpl_array.push(' </button>');
tmpl_array.push(' <ul class="dropdown-menu" role="menu">');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');
- tmpl_array.push('<% if(user_library_import_dir !== null) { %>');
+ tmpl_array.push('<% if(Galaxy.config.user_library_import_dir !== null) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');
tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
- // tmpl_array.push('<% if(allow_library_path_paste || library_import_dir !== null) { %>');
- tmpl_array.push(' <li class="divider"></li>');
- tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
- // tmpl_array.push('<% if(library_import_dir !== null) { %>');
- // tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
- // tmpl_array.push('<% } %>');
- tmpl_array.push('<% if(allow_library_path_paste) { %>');
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
+
+ tmpl_array.push(' <li class="divider"></li>');
+ tmpl_array.push(' <li class="dropdown-header">Admins only</li>');
+
+ tmpl_array.push('<% if(Galaxy.config.library_import_dir !== null) { %>');
+ tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');
+ tmpl_array.push('<% } %>');
+
+ tmpl_array.push('<% if(Galaxy.config.allow_library_path_paste) { %>');
tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');
tmpl_array.push('<% } %>');
tmpl_array.push('<% } %>');
@@ -1154,8 +1163,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
@@ -1184,8 +1193,8 @@
tmpl_array.push('<hr />');
tmpl_array.push('<p>You can set extension type and genome for all imported datasets at once:</p>');
tmpl_array.push('<div>');
- tmpl_array.push('Type: <span id="extension" class="extension" />');
- tmpl_array.push(' Genome: <span id="genome" class="genome" />');
+ tmpl_array.push('Type: <span id="library_extension_select" class="library-extension-select" />');
+ tmpl_array.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');
tmpl_array.push('</div>');
tmpl_array.push('</div>');
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/scripts/mvc/ui/ui-select.js
--- a/static/scripts/mvc/ui/ui-select.js
+++ b/static/scripts/mvc/ui/ui-select.js
@@ -155,7 +155,6 @@
data : this.select_data,
containerCssClass : this.options.css,
placeholder : this.options.placeholder,
- width : 'resolve',
dropdownAutoWidth : true
};
this.$el.select2(select_opt);
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/scripts/packed/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
@@ -1,1 +1,1 @@
-define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(c,e,f,d,a){var b=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_show_libinfo":"showLibInfo","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(g){this.options=_.defaults(g||{},this.defaults);this.fetchExtAndGenomes();this.render()},render:function(g){this.options=_.extend(this.options,g);var i=this.templateToolBar();var h={id:this.options.id,is_admin:false,is_anonym:true,user_library_import_dir:Galaxy.config.user_library_import_dir,allow_library_path_paste:Galaxy.config.allow_library_path_paste,library_import_dir:Galaxy.config.library_import_dir,mutiple_add_dataset_options:false};if(Galaxy.currUser){h.is_admin=Galaxy.currUser.isAdmin();h.is_anonym=Galaxy.currUser.isAnonymous();if(h.user_library_import_dir!==null||h.allow_library_path_paste!==false||h.library_import_dir!==null){h.mutiple_add_dataset_options=true}}this.$el.html(i(h))},configureElements:function(g){this.options=_.extend(this.options,g);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(i){i.preventDefault();i.stopPropagation();var g=this;var h=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:h(),buttons:{Create:function(){g.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var g=this.serialize_new_folder();if(this.validate_new_folder(g)){var h=new d.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];h.url=h.urlRoot+"/"+current_folder_id;h.save(g,{success:function(i){Galaxy.modal.hide();f.success("Folder created.");i.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(i)},error:function(j,i){Galaxy.modal.hide();if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}else{f.error("Folder's name is missing.")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(g){return g.name!==""},modalBulkImport:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select some datasets first.")}else{this.refreshUserHistoriesList(function(i){var h=i.templateBulkImportInModal();i.modal=Galaxy.modal;i.modal.show({closing_events:true,title:"Import into History",body:h({histories:i.histories.models}),buttons:{Import:function(){i.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(h){var g=this;this.histories=new d.GalaxyHistories();this.histories.fetch({success:function(){h(g)},error:function(j,i){if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var k=$("select[name=dataset_import_bulk] option:selected").val();var n=$("select[name=dataset_import_bulk] option:selected").text();this.options.last_used_history_id=k;var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var m=[];for(var j=h.length-1;j>=0;j--){var g=h[j];var l=new d.HistoryItem();l.url=l.urlRoot+k+"/contents";l.content=g;l.source="library";m.push(l)}this.initChainCallControl({length:m.length,action:"to_history",history_name:n});jQuery.getJSON(galaxy_config.root+"history/set_as_current?id="+k);this.chainCallImportingIntoHistory(m,n)},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(g,k){var i=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){i.push(this.parentElement.parentElement.id)}});var h="/api/libraries/datasets/download/"+k;var j={ld_ids:i};this.processDownload(h,j,"get")},processDownload:function(h,i,j){if(h&&i){i=typeof i==="string"?i:$.param(i);var g="";$.each(i.split("&"),function(){var k=this.split("=");g+='<input type="hidden" name="'+k[0]+'" value="'+k[1]+'" />'});$('<form action="'+h+'" method="'+(j||"post")+'">'+g+"</form>").appendTo("body").submit().remove();f.info("Your download will begin soon.")}else{f.error("An error occurred.")}},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(g){g.modal=Galaxy.modal;var h=g.templateAddFilesFromHistory();var i=g.options.full_path[g.options.full_path.length-1][1];g.modal.show({closing_events:true,title:"Adding datasets from your history to folder "+i,body:h({histories:g.histories.models}),buttons:{Add:function(){g.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}});if(g.histories.models.length>0){g.fetchAndDisplayHistoryContents(g.histories.models[0].id);$("#dataset_add_bulk").change(function(j){g.fetchAndDisplayHistoryContents(j.target.value)})}else{f.error("An error ocurred.")}})},importFilesFromPathModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateImportPathModal();this.modal.show({closing_events:true,title:"Please enter paths to import",body:g({}),buttons:{Import:function(){h.importFromPathsClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes()},fetchExtAndGenomes:function(){var g=this;e.get(galaxy_config.root+"api/datatypes?extension_only=False",function(h){for(key in h){g.list_extensions.push({id:h[key].extension,text:h[key].extension,description:h[key].description,description_url:h[key].description_url})}g.list_extensions.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0});g.list_extensions.unshift(g.auto)});e.get(galaxy_config.root+"api/genomes",function(h){for(key in h){g.list_genomes.push({id:h[key][1],text:h[key][0]})}g.list_genomes.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0})})},renderSelectBoxes:function(){var g=this;this.select_genome=new a.View({css:"genome",data:g.list_genomes,container:Galaxy.modal.$el.find("#genome"),value:"?"});this.select_extension=new a.View({css:"extension",data:g.list_extensions,container:Galaxy.modal.$el.find("#extension"),value:"auto"})},importFilesFromUserdirModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateBrowserModal();this.modal.show({closing_events:true,title:"Please select folders or files",body:g({}),buttons:{Import:function(){h.importFromUserdirClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes();this.renderJstree({disabled_jstree_element:"folders"});$("input[type=radio]").change(function(i){if(i.target.value==="jstree-disable-folders"){h.renderJstree({disabled_jstree_element:"folders"});$(".jstree-folders-message").hide();$(".jstree-preserve-structure").hide();$(".jstree-link-files").hide();$(".jstree-files-message").show()}else{if(i.target.value==="jstree-disable-files"){$(".jstree-files-message").hide();$(".jstree-folders-message").show();$(".jstree-link-files").show();$(".jstree-preserve-structure").show();h.renderJstree({disabled_jstree_element:"files"})}}})},renderJstree:function(g){var i=this;this.options=_.extend(this.options,g);var h=this.options.disabled_jstree_element;this.jstree=new d.Jstree();this.jstree.url=this.jstree.urlRoot+"?target=userdir&format=jstree&disable="+h;this.jstree.fetch({success:function(k,j){define("jquery",function(){return jQuery});require(["libs/jquery/jstree"],function(l){$("#jstree_browser").jstree("destroy");$("#jstree_browser").jstree({core:{data:k},plugins:["types","checkbox"],types:{folder:{icon:"jstree-folder"},file:{icon:"jstree-file"}},checkbox:{three_state:false}})})},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importFromPathsClicked:function(){var g=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var j=this.select_genome.value();var m=$("textarea#import_paths").val();var l=[];if(!m){f.info("Please enter a path relative to Galaxy root.")}else{this.modal.disableButton("Import");m=m.split("\n");for(var k=m.length-1;k>=0;k--){trimmed=m[k].trim();if(trimmed.length!==0){l.push(trimmed)}}this.initChainCallControl({length:l.length,action:"adding_datasets"});this.chainCallImportingFolders({paths:l,preserve_dirs:g,link_data:n,source:"admin_path",file_type:h,dbkey:j})}},initChainCallControl:function(g){var h;switch(g.action){case"adding_datasets":h=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h({folder_name:this.options.folder_name}));break;case"deleting_datasets":h=this.templateDeletingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h());break;case"to_history":h=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(h({history_name:g.history_name}));break;default:console.error("Wrong action specified.");break}this.progress=0;this.progressStep=100/g.length;this.options.chain_call_control.total_number=g.length;this.options.chain_call_control.failed_number=0},importFromUserdirClicked:function(m){var g=$("#jstree_browser").jstree().get_selected(true);var l=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var o=this.select_genome.value();var j=g[0].type;var p=[];if(g.length<1){f.info("You must select some items first.")}else{this.modal.disableButton("Import");for(var k=g.length-1;k>=0;k--){if(g[k].li_attr.full_path!==undefined){p.push(g[k].li_attr.full_path)}}this.initChainCallControl({length:p.length,action:"adding_datasets"});if(j==="folder"){this.chainCallImportingFolders({paths:p,preserve_dirs:l,link_data:n,source:"userdir_folder",file_type:h,dbkey:o})}else{if(j==="file"){this.chainCallImportingUserdirFiles({paths:p,file_type:h,dbkey:o})}}}},fetchAndDisplayHistoryContents:function(i){var h=new d.HistoryContents({id:i});var g=this;h.fetch({success:function(k){var j=g.templateHistoryContents();g.histories.get(i).set({contents:k});g.modal.$el.find("#selected_history_content").html(j({history_contents:k.models.reverse()}))},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},addAllDatasetsFromHistory:function(){var l=this.modal.$el.find("#selected_history_content").find(":checked");var g=[];var k=[];if(l.length<1){f.info("You must select some datasets first.")}else{this.modal.disableButton("Add");l.each(function(){var i=$(this.parentElement).data("id");if(i){g.push(i)}});for(var j=g.length-1;j>=0;j--){history_dataset_id=g[j];var h=new d.Item();h.url="/api/folders/"+this.options.id+"/contents";h.set({from_hda_id:history_dataset_id});k.push(h)}this.initChainCallControl({length:k.length,action:"adding_datasets"});this.chainCallAddingHdas(k)}},chainCallImportingIntoHistory:function(h,k){var g=this;var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return true}var j=$.when(i.save({content:i.content,source:i.source}));j.done(function(){g.updateProgress();g.chainCallImportingIntoHistory(h,k)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallImportingIntoHistory(h,k)})},chainCallImportingUserdirFiles:function(g){var h=this;var i=g.paths.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected files imported into the current folder");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source=userdir_file&path="+i+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingUserdirFiles(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingUserdirFiles(g)})},chainCallImportingFolders:function(g){var h=this;var i=g.paths.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected folders and their contents imported into the current folder.");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&preserve_dirs="+g.preserve_dirs+"&link_data="+g.link_data+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingFolders({paths:g.paths,preserve_dirs:g.preserve_dirs,link_data:g.link_data,source:g.source,file_type:g.file_type,dbkey:g.dbkey})}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingFolders({paths:g.paths,preserve_dirs:g.preserve_dirs,link_data:g.link_data,source:g.source,file_type:g.file_type,dbkey:g.dbkey})})},chainCallAddingHdas:function(h){var g=this;this.added_hdas=new d.Folder();var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var j=$.when(i.save({from_hda_id:i.get("from_hda_id")}));j.done(function(k){Galaxy.libraries.folderListView.collection.add(k);g.updateProgress();g.chainCallAddingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallAddingHdas(h)})},chainCallDeletingHdas:function(h){var g=this;this.deleted_lddas=new d.Folder();var i=h.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var j=$.when(i.destroy());j.done(function(l){Galaxy.libraries.folderListView.collection.remove(i.id);g.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var k=new d.Item(l);Galaxy.libraries.folderListView.collection.add(k)}g.chainCallDeletingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallDeletingHdas(h)})},checkIncludeDeleted:function(g){if(g.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select at least one dataset for deletion.")}else{var k=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:k({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var h=[];g.each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});this.progressStep=100/h.length;this.progress=0;var m=[];for(var j=h.length-1;j>=0;j--){var l=new d.Item({id:h[j]});m.push(l)}this.options.chain_call_control.total_number=h.length;this.chainCallDeletingHdas(m)}},showLibInfo:function(){var h=Galaxy.libraries.folderListView.folderContainer.attributes.metadata.parent_library_id;var g=null;var i=this;if(Galaxy.libraries.libraryListView!==null){g=Galaxy.libraries.libraryListView.collection.get(h);this.showLibInfoModal(g)}else{g=new d.Library({id:h});g.fetch({success:function(){i.showLibInfoModal(g)},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}},showLibInfoModal:function(g){var h=this.templateLibInfoInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Library Information",body:h({library:g}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(g){switch(g.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromUserdirModal();break;default:Galaxy.libraries.library_router.back();f.error("Invalid import source.");break}},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push(' <div id="library_toolbar">');tmpl_array.push(" <span><strong>DATA LIBRARIES</strong></span>");tmpl_array.push(' <span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"> | <input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted | </input></span>');tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push("<% if(mutiple_add_dataset_options) { %>");tmpl_array.push(' <div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button title="Add Datasets to Current Folder" id="" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-plus"></span><span class="fa fa-file"></span><span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');tmpl_array.push("<% if(user_library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(allow_library_path_paste) { %>");tmpl_array.push(' <li class="divider"></li>');tmpl_array.push(' <li class="dropdown-header">Admins only</li>');tmpl_array.push("<% if(allow_library_path_paste) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% } %>");tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push("<% } else { %>");tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("<% } %>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(' <button data-id="<%- id %>" data-toggle="tooltip" data-placement="top" title="Show library information" id="toolbtn_show_libinfo" class="primary-button" style="margin-left: 0.5em;" type="button"><span class="fa fa-info-circle"></span> Library Info</button>');tmpl_array.push(' <span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki"><a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank"><button class="primary-button btn-xs" type="button"><span class="fa fa-question-circle"></span> Help</button></a></span>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateLibInfoInModal:function(){tmpl_array=[];tmpl_array.push('<div id="lif_info_modal">');tmpl_array.push("<h2>Library name:</h2>");tmpl_array.push('<p><%- library.get("name") %></p>');tmpl_array.push("<h3>Library description:</h3>");tmpl_array.push('<p><%- library.get("description") %></p>');tmpl_array.push("<h3>Library synopsis:</h3>");tmpl_array.push('<p><%- library.get("synopsis") %></p>');tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var g=[];g.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');g.push("Select history: ");g.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</span>");return _.template(g.join(""))},templateImportIntoHistoryProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateAddingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Adding selected datasets to library folder <b><%= _.escape(folder_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateDeletingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateBrowserModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');g.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom:1em;">');g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');g.push("</label>");g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting folders" type="radio" name="jstree-radio" value="jstree-disable-files"> Folders');g.push("</label>");g.push("</div>");g.push('<div style="margin-bottom:1em;">');g.push('<label class="checkbox-inline jstree-preserve-structure" style="display:none;">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files" style="display:none;">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<div id="jstree_browser">');g.push("</div>");g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="extension" class="extension" />');g.push(' Genome: <span id="genome" class="genome" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateImportPathModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-folders-message">All files within the given folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom: 0.5em;">');g.push('<label class="checkbox-inline jstree-preserve-structure">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline"></textarea>');g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="extension" class="extension" />');g.push(' Genome: <span id="genome" class="genome" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateAddFilesFromHistory:function(){var g=[];g.push('<div id="add_files_modal">');g.push('<div id="history_modal_combo_bulk">');g.push("Select history: ");g.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</div>");g.push("<br/>");g.push('<div id="selected_history_content">');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateHistoryContents:function(){var g=[];g.push("<strong>Choose the datasets to import:</strong>");g.push("<ul>");g.push(" <% _.each(history_contents, function(history_item) { %>");g.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');g.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');g.push(" </li>");g.push(" <% }); %>");g.push("</ul>");return _.template(g.join(""))}});return{FolderToolbarView:b}});
\ No newline at end of file
+define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(c,e,f,d,a){var b=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_show_libinfo":"showLibInfo","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(g){this.options=_.defaults(g||{},this.defaults);this.fetchExtAndGenomes();this.render()},render:function(g){this.options=_.extend(this.options,g);var i=this.templateToolBar();var h={id:this.options.id,is_admin:false,is_anonym:true,mutiple_add_dataset_options:false};if(Galaxy.currUser){h.is_admin=Galaxy.currUser.isAdmin();h.is_anonym=Galaxy.currUser.isAnonymous();if(Galaxy.config.user_library_import_dir!==null||Galaxy.config.allow_library_path_paste!==false||Galaxy.config.library_import_dir!==null){h.mutiple_add_dataset_options=true}}this.$el.html(i(h))},configureElements:function(g){this.options=_.extend(this.options,g);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(i){i.preventDefault();i.stopPropagation();var g=this;var h=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:h(),buttons:{Create:function(){g.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var g=this.serialize_new_folder();if(this.validate_new_folder(g)){var h=new d.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];h.url=h.urlRoot+"/"+current_folder_id;h.save(g,{success:function(i){Galaxy.modal.hide();f.success("Folder created.");i.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(i)},error:function(j,i){Galaxy.modal.hide();if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}else{f.error("Folder's name is missing.")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(g){return g.name!==""},modalBulkImport:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select some datasets first.")}else{this.refreshUserHistoriesList(function(i){var h=i.templateBulkImportInModal();i.modal=Galaxy.modal;i.modal.show({closing_events:true,title:"Import into History",body:h({histories:i.histories.models}),buttons:{Import:function(){i.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(h){var g=this;this.histories=new d.GalaxyHistories();this.histories.fetch({success:function(){h(g)},error:function(j,i){if(typeof i.responseJSON!=="undefined"){f.error(i.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var k=$("select[name=dataset_import_bulk] option:selected").val();var n=$("select[name=dataset_import_bulk] option:selected").text();this.options.last_used_history_id=k;var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var m=[];for(var j=h.length-1;j>=0;j--){var g=h[j];var l=new d.HistoryItem();l.url=l.urlRoot+k+"/contents";l.content=g;l.source="library";m.push(l)}this.initChainCallControl({length:m.length,action:"to_history",history_name:n});jQuery.getJSON(galaxy_config.root+"history/set_as_current?id="+k);this.chainCallImportingIntoHistory(m,n)},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(g,k){var i=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){i.push(this.parentElement.parentElement.id)}});var h="/api/libraries/datasets/download/"+k;var j={ld_ids:i};this.processDownload(h,j,"get")},processDownload:function(h,i,j){if(h&&i){i=typeof i==="string"?i:$.param(i);var g="";$.each(i.split("&"),function(){var k=this.split("=");g+='<input type="hidden" name="'+k[0]+'" value="'+k[1]+'" />'});$('<form action="'+h+'" method="'+(j||"post")+'">'+g+"</form>").appendTo("body").submit().remove();f.info("Your download will begin soon.")}else{f.error("An error occurred.")}},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(g){g.modal=Galaxy.modal;var h=g.templateAddFilesFromHistory();var i=g.options.full_path[g.options.full_path.length-1][1];g.modal.show({closing_events:true,title:"Adding datasets from your history to folder "+i,body:h({histories:g.histories.models}),buttons:{Add:function(){g.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}});if(g.histories.models.length>0){g.fetchAndDisplayHistoryContents(g.histories.models[0].id);$("#dataset_add_bulk").change(function(j){g.fetchAndDisplayHistoryContents(j.target.value)})}else{f.error("An error ocurred.")}})},importFilesFromPathModal:function(){var h=this;this.modal=Galaxy.modal;var g=this.templateImportPathModal();this.modal.show({closing_events:true,title:"Please enter paths to import",body:g({}),buttons:{Import:function(){h.importFromPathsClicked(h)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+h.id,{trigger:true})}});this.renderSelectBoxes()},fetchExtAndGenomes:function(){var g=this;e.get(galaxy_config.root+"api/datatypes?extension_only=False",function(h){for(key in h){g.list_extensions.push({id:h[key].extension,text:h[key].extension,description:h[key].description,description_url:h[key].description_url})}g.list_extensions.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0});g.list_extensions.unshift(g.auto)});e.get(galaxy_config.root+"api/genomes",function(h){for(key in h){g.list_genomes.push({id:h[key][1],text:h[key][0]})}g.list_genomes.sort(function(j,i){return j.id>i.id?1:j.id<i.id?-1:0})})},renderSelectBoxes:function(){var g=this;this.select_genome=new a.View({css:"library-genome-select",data:g.list_genomes,container:Galaxy.modal.$el.find("#library_genome_select"),value:"?"});this.select_extension=new a.View({css:"library-extension-select",data:g.list_extensions,container:Galaxy.modal.$el.find("#library_extension_select"),value:"auto"})},importFilesFromGalaxyFolderModal:function(g){var i=this;var h=this.templateBrowserModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Please select folders or files",body:h({}),buttons:{Import:function(){i.importFromJstreePath(i,g)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+i.id,{trigger:true})}});this.renderSelectBoxes();g.disabled_jstree_element="folders";this.renderJstree(g);$("input[type=radio]").change(function(j){if(j.target.value==="jstree-disable-folders"){g.disabled_jstree_element="folders";i.renderJstree(g);$(".jstree-folders-message").hide();$(".jstree-preserve-structure").hide();$(".jstree-link-files").hide();$(".jstree-files-message").show()}else{if(j.target.value==="jstree-disable-files"){$(".jstree-files-message").hide();$(".jstree-folders-message").show();$(".jstree-link-files").show();$(".jstree-preserve-structure").show();g.disabled_jstree_element="files";i.renderJstree(g)}}})},renderJstree:function(g){var i=this;this.options=_.extend(this.options,g);var j=g.source||"userdir";var h=this.options.disabled_jstree_element;this.jstree=new d.Jstree();this.jstree.url=this.jstree.urlRoot+"?target="+j+"&format=jstree&disable="+h;this.jstree.fetch({success:function(l,k){define("jquery",function(){return jQuery});require(["libs/jquery/jstree"],function(m){$("#jstree_browser").jstree("destroy");$("#jstree_browser").jstree({core:{data:l},plugins:["types","checkbox"],types:{folder:{icon:"jstree-folder"},file:{icon:"jstree-file"}},checkbox:{three_state:false}})})},error:function(l,k){if(typeof k.responseJSON!=="undefined"){f.error(k.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},importFromPathsClicked:function(){var g=this.modal.$el.find(".preserve-checkbox").is(":checked");var n=this.modal.$el.find(".link-checkbox").is(":checked");var h=this.select_extension.value();var j=this.select_genome.value();var m=$("textarea#import_paths").val();var l=[];if(!m){f.info("Please enter a path relative to Galaxy root.")}else{this.modal.disableButton("Import");m=m.split("\n");for(var k=m.length-1;k>=0;k--){trimmed=m[k].trim();if(trimmed.length!==0){l.push(trimmed)}}this.initChainCallControl({length:l.length,action:"adding_datasets"});this.chainCallImportingFolders({paths:l,preserve_dirs:g,link_data:n,source:"admin_path",file_type:h,dbkey:j})}},initChainCallControl:function(g){var h;switch(g.action){case"adding_datasets":h=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h({folder_name:this.options.folder_name}));break;case"deleting_datasets":h=this.templateDeletingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(h());break;case"to_history":h=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(h({history_name:g.history_name}));break;default:console.error("Wrong action specified.");break}this.progress=0;this.progressStep=100/g.length;this.options.chain_call_control.total_number=g.length;this.options.chain_call_control.failed_number=0},importFromJstreePath:function(n,r){var g=$("#jstree_browser").jstree().get_selected(true);var m=this.modal.$el.find(".preserve-checkbox").is(":checked");var o=this.modal.$el.find(".link-checkbox").is(":checked");var j=this.select_extension.value();var p=this.select_genome.value();var k=g[0].type;var q=[];if(g.length<1){f.info("Please select some items first.")}else{this.modal.disableButton("Import");for(var l=g.length-1;l>=0;l--){if(g[l].li_attr.full_path!==undefined){q.push(g[l].li_attr.full_path)}}this.initChainCallControl({length:q.length,action:"adding_datasets"});if(k==="folder"){var h=r.source+"_folder";this.chainCallImportingFolders({paths:q,preserve_dirs:m,link_data:o,source:h,file_type:j,dbkey:p})}else{if(k==="file"){var h=r.source+"_file";this.chainCallImportingUserdirFiles({paths:q,file_type:j,dbkey:p,source:h})}}}},fetchAndDisplayHistoryContents:function(i){var h=new d.HistoryContents({id:i});var g=this;h.fetch({success:function(k){var j=g.templateHistoryContents();g.histories.get(i).set({contents:k});g.modal.$el.find("#selected_history_content").html(j({history_contents:k.models.reverse()}))},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})},addAllDatasetsFromHistory:function(){var l=this.modal.$el.find("#selected_history_content").find(":checked");var g=[];var k=[];if(l.length<1){f.info("You must select some datasets first.")}else{this.modal.disableButton("Add");l.each(function(){var i=$(this.parentElement).data("id");if(i){g.push(i)}});for(var j=g.length-1;j>=0;j--){history_dataset_id=g[j];var h=new d.Item();h.url="/api/folders/"+this.options.id+"/contents";h.set({from_hda_id:history_dataset_id});k.push(h)}this.initChainCallControl({length:k.length,action:"adding_datasets"});this.chainCallAddingHdas(k)}},chainCallImportingIntoHistory:function(h,k){var g=this;var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return true}var j=$.when(i.save({content:i.content,source:i.source}));j.done(function(){g.updateProgress();g.chainCallImportingIntoHistory(h,k)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallImportingIntoHistory(h,k)})},chainCallImportingUserdirFiles:function(g){var h=this;var i=g.paths.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected files imported into the current folder");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingUserdirFiles(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingUserdirFiles(g)})},chainCallImportingFolders:function(g){var h=this;var i=g.paths.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected folders and their contents imported into the current folder.");Galaxy.modal.hide()}else{f.error("An error occured.")}return true}var j=$.when($.post("/api/libraries/datasets?encoded_folder_id="+h.id+"&source="+g.source+"&path="+i+"&preserve_dirs="+g.preserve_dirs+"&link_data="+g.link_data+"&file_type="+g.file_type+"&dbkey="+g.dbkey));j.done(function(k){h.updateProgress();h.chainCallImportingFolders(g)}).fail(function(){h.options.chain_call_control.failed_number+=1;h.updateProgress();h.chainCallImportingFolders(g)})},chainCallAddingHdas:function(h){var g=this;this.added_hdas=new d.Folder();var i=h.pop();if(typeof i=="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var j=$.when(i.save({from_hda_id:i.get("from_hda_id")}));j.done(function(k){Galaxy.libraries.folderListView.collection.add(k);g.updateProgress();g.chainCallAddingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallAddingHdas(h)})},chainCallDeletingHdas:function(h){var g=this;this.deleted_lddas=new d.Folder();var i=h.pop();if(typeof i==="undefined"){if(this.options.chain_call_control.failed_number===0){f.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){f.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){f.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var j=$.when(i.destroy());j.done(function(l){Galaxy.libraries.folderListView.collection.remove(i.id);g.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var k=new d.Item(l);Galaxy.libraries.folderListView.collection.add(k)}g.chainCallDeletingHdas(h)}).fail(function(){g.options.chain_call_control.failed_number+=1;g.updateProgress();g.chainCallDeletingHdas(h)})},checkIncludeDeleted:function(g){if(g.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var g=$("#folder_table").find(":checked");if(g.length===0){f.info("You must select at least one dataset for deletion.")}else{var k=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:k({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var h=[];g.each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});this.progressStep=100/h.length;this.progress=0;var m=[];for(var j=h.length-1;j>=0;j--){var l=new d.Item({id:h[j]});m.push(l)}this.options.chain_call_control.total_number=h.length;this.chainCallDeletingHdas(m)}},showLibInfo:function(){var h=Galaxy.libraries.folderListView.folderContainer.attributes.metadata.parent_library_id;var g=null;var i=this;if(Galaxy.libraries.libraryListView!==null){g=Galaxy.libraries.libraryListView.collection.get(h);this.showLibInfoModal(g)}else{g=new d.Library({id:h});g.fetch({success:function(){i.showLibInfoModal(g)},error:function(k,j){if(typeof j.responseJSON!=="undefined"){f.error(j.responseJSON.err_msg)}else{f.error("An error ocurred.")}}})}},showLibInfoModal:function(g){var h=this.templateLibInfoInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Library Information",body:h({library:g}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(g){switch(g.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":this.importFilesFromGalaxyFolderModal({source:"importdir"});break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromGalaxyFolderModal({source:"userdir"});break;default:Galaxy.libraries.library_router.back();f.error("Invalid import source.");break}},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push(' <div id="library_toolbar">');tmpl_array.push(" <span><strong>DATA LIBRARIES</strong></span>");tmpl_array.push(' <span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"> | <input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted | </input></span>');tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push("<% if(mutiple_add_dataset_options) { %>");tmpl_array.push(' <div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button title="Add Datasets to Current Folder" id="" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-plus"></span><span class="fa fa-file"></span><span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#folders/<%= id %>/import/history"> from History</a></li>');tmpl_array.push("<% if(Galaxy.config.user_library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/userdir"> from User Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(Galaxy.config.allow_library_path_paste) { %>");tmpl_array.push(' <li class="divider"></li>');tmpl_array.push(' <li class="dropdown-header">Admins only</li>');tmpl_array.push("<% if(Galaxy.config.library_import_dir !== null) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/importdir">from Import Directory</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% if(Galaxy.config.allow_library_path_paste) { %>");tmpl_array.push(' <li><a href="#folders/<%= id %>/import/path">from Path</a></li>');tmpl_array.push("<% } %>");tmpl_array.push("<% } %>");tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push("<% } else { %>");tmpl_array.push(' <button style="display:none;" data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button add-library-items" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("<% } %>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(' <button data-id="<%- id %>" data-toggle="tooltip" data-placement="top" title="Show library information" id="toolbtn_show_libinfo" class="primary-button" style="margin-left: 0.5em;" type="button"><span class="fa fa-info-circle"></span> Library Info</button>');tmpl_array.push(' <span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki"><a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank"><button class="primary-button btn-xs" type="button"><span class="fa fa-question-circle"></span> Help</button></a></span>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateLibInfoInModal:function(){tmpl_array=[];tmpl_array.push('<div id="lif_info_modal">');tmpl_array.push("<h2>Library name:</h2>");tmpl_array.push('<p><%- library.get("name") %></p>');tmpl_array.push("<h3>Library description:</h3>");tmpl_array.push('<p><%- library.get("description") %></p>');tmpl_array.push("<h3>Library synopsis:</h3>");tmpl_array.push('<p><%- library.get("synopsis") %></p>');tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var g=[];g.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');g.push("Select history: ");g.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</span>");return _.template(g.join(""))},templateImportIntoHistoryProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateAddingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("Adding selected datasets to library folder <b><%= _.escape(folder_name) %></b>");g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateDeletingDatasetsProgressBar:function(){var g=[];g.push('<div class="import_text">');g.push("</div>");g.push('<div class="progress">');g.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');g.push(' <span class="completion_span">0% Complete</span>');g.push(" </div>");g.push("</div>");g.push("");return _.template(g.join(""))},templateBrowserModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-files-message">All files you select will be imported into the current folder.</div>');g.push('<div class="alert alert-info jstree-folders-message" style="display:none;">All files within the selected folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom:1em;">');g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting files" type="radio" name="jstree-radio" value="jstree-disable-folders" checked="checked"> Files');g.push("</label>");g.push('<label class="radio-inline">');g.push(' <input title="Switch to selecting folders" type="radio" name="jstree-radio" value="jstree-disable-files"> Folders');g.push("</label>");g.push("</div>");g.push('<div style="margin-bottom:1em;">');g.push('<label class="checkbox-inline jstree-preserve-structure" style="display:none;">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files" style="display:none;">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<div id="jstree_browser">');g.push("</div>");g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="library_extension_select" class="library-extension-select" />');g.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateImportPathModal:function(){var g=[];g.push('<div id="file_browser_modal">');g.push('<div class="alert alert-info jstree-folders-message">All files within the given folders and their subfolders will be imported into the current folder.</div>');g.push('<div style="margin-bottom: 0.5em;">');g.push('<label class="checkbox-inline jstree-preserve-structure">');g.push(' <input class="preserve-checkbox" type="checkbox" value="preserve_directory_structure">');g.push("Preserve directory structure");g.push(" </label>");g.push('<label class="checkbox-inline jstree-link-files">');g.push(' <input class="link-checkbox" type="checkbox" value="link_files">');g.push("Link files instead of copying");g.push(" </label>");g.push("</div>");g.push('<textarea id="import_paths" class="form-control" rows="5" placeholder="Absolute paths (or paths relative to Galaxy root) separated by newline"></textarea>');g.push("<hr />");g.push("<p>You can set extension type and genome for all imported datasets at once:</p>");g.push("<div>");g.push('Type: <span id="library_extension_select" class="library-extension-select" />');g.push(' Genome: <span id="library_genome_select" class="library-genome-select" />');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateAddFilesFromHistory:function(){var g=[];g.push('<div id="add_files_modal">');g.push('<div id="history_modal_combo_bulk">');g.push("Select history: ");g.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');g.push(" <% _.each(histories, function(history) { %>");g.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');g.push(" <% }); %>");g.push("</select>");g.push("</div>");g.push("<br/>");g.push('<div id="selected_history_content">');g.push("</div>");g.push("</div>");return _.template(g.join(""))},templateHistoryContents:function(){var g=[];g.push("<strong>Choose the datasets to import:</strong>");g.push("<ul>");g.push(" <% _.each(history_contents, function(history_item) { %>");g.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');g.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');g.push(" </li>");g.push(" <% }); %>");g.push("</ul>");return _.template(g.join(""))}});return{FolderToolbarView:b}});
\ No newline at end of file
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/scripts/packed/mvc/ui/ui-select.js
--- a/static/scripts/packed/mvc/ui/ui-select.js
+++ b/static/scripts/packed/mvc/ui/ui-select.js
@@ -1,1 +1,1 @@
-define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{css:"",placeholder:"No data available",data:[],value:null,multiple:false,minimumInputLength:0,initialData:""},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));if(!this.options.container){console.log("ui-select::initialize() : container not specified.");return}this.options.container.append(this.$el);this.select_data=this.options.data;this._refresh();if(!this.options.multiple){if(this.options.value){this._setValue(this.options.value)}var c=this;if(this.options.onchange){this.$el.on("change",function(){c.options.onchange(c.value())})}}},value:function(c){var d=this._getValue();if(c!==undefined){this._setValue(c)}var e=this._getValue();if((e!=d&&this.options.onchange)){this.options.onchange(e)}return e},text:function(){return this.$el.select2("data").text},disabled:function(){return !this.$el.select2("enable")},enable:function(){this.$el.select2("enable",true)},disable:function(){this.$el.select2("enable",false)},add:function(c){this.select_data.push({id:c.id,text:c.text});this._refresh()},del:function(d){var c=this._getIndex(d);if(c!=-1){this.select_data.splice(c,1);this._refresh()}},remove:function(){this.$el.select2("destroy")},update:function(c){this.select_data=[];for(var d in c.data){this.select_data.push(c.data[d])}this._refresh()},_refresh:function(){if(!this.options.multiple){var d=this._getValue();var c={data:this.select_data,containerCssClass:this.options.css,placeholder:this.options.placeholder,width:"resolve",dropdownAutoWidth:true};this.$el.select2(c);this._setValue(d)}else{var c={multiple:this.options.multiple,containerCssClass:this.options.css,placeholder:this.options.placeholder,minimumInputLength:this.options.minimumInputLength,ajax:this.options.ajax,dropdownCssClass:this.options.dropdownCssClass,escapeMarkup:this.options.escapeMarkup,formatResult:this.options.formatResult,formatSelection:this.options.formatSelection,initSelection:this.options.initSelection,initialData:this.options.initialData};this.$el.select2(c)}},_getIndex:function(d){for(var c in this.select_data){if(this.select_data[c].id==d){return c}}return -1},_getValue:function(){return this.$el.select2("val")},_setValue:function(d){var c=this._getIndex(d);if(c==-1){if(this.select_data.length>0){d=this.select_data[0].id}}this.$el.select2("val",d)},_template:function(c){return'<input type="hidden" value="'+this.options.initialData+'"/>'}});return{View:b}});
\ No newline at end of file
+define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{css:"",placeholder:"No data available",data:[],value:null,multiple:false,minimumInputLength:0,initialData:""},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));if(!this.options.container){console.log("ui-select::initialize() : container not specified.");return}this.options.container.append(this.$el);this.select_data=this.options.data;this._refresh();if(!this.options.multiple){if(this.options.value){this._setValue(this.options.value)}var c=this;if(this.options.onchange){this.$el.on("change",function(){c.options.onchange(c.value())})}}},value:function(c){var d=this._getValue();if(c!==undefined){this._setValue(c)}var e=this._getValue();if((e!=d&&this.options.onchange)){this.options.onchange(e)}return e},text:function(){return this.$el.select2("data").text},disabled:function(){return !this.$el.select2("enable")},enable:function(){this.$el.select2("enable",true)},disable:function(){this.$el.select2("enable",false)},add:function(c){this.select_data.push({id:c.id,text:c.text});this._refresh()},del:function(d){var c=this._getIndex(d);if(c!=-1){this.select_data.splice(c,1);this._refresh()}},remove:function(){this.$el.select2("destroy")},update:function(c){this.select_data=[];for(var d in c.data){this.select_data.push(c.data[d])}this._refresh()},_refresh:function(){if(!this.options.multiple){var d=this._getValue();var c={data:this.select_data,containerCssClass:this.options.css,placeholder:this.options.placeholder,dropdownAutoWidth:true};this.$el.select2(c);this._setValue(d)}else{var c={multiple:this.options.multiple,containerCssClass:this.options.css,placeholder:this.options.placeholder,minimumInputLength:this.options.minimumInputLength,ajax:this.options.ajax,dropdownCssClass:this.options.dropdownCssClass,escapeMarkup:this.options.escapeMarkup,formatResult:this.options.formatResult,formatSelection:this.options.formatSelection,initSelection:this.options.initSelection,initialData:this.options.initialData};this.$el.select2(c)}},_getIndex:function(d){for(var c in this.select_data){if(this.select_data[c].id==d){return c}}return -1},_getValue:function(){return this.$el.select2("val")},_setValue:function(d){var c=this._getIndex(d);if(c==-1){if(this.select_data.length>0){d=this.select_data[0].id}}this.$el.select2("val",d)},_template:function(c){return'<input type="hidden" value="'+this.options.initialData+'"/>'}});return{View:b}});
\ No newline at end of file
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1322,6 +1322,8 @@
li.folderRow,li.datasetRow{border-top:solid 1px #c6bfa8}
li.folderRow:hover,li.datasetRow:hover{background-color:#f9f9f9}
td.right-center{vertical-align:middle !important;text-align:right}
+.library-genome-select{max-width:350px}
+.library-extension-select{max-width:140px}
.library_table td{border-top:1px solid #5f6990 !important}
.library_table th{border-bottom:2px solid #5f6990 !important}
.library_table a{color:#0A143D}.library_table a:hover{color:maroon}
@@ -1573,6 +1575,7 @@
.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}
.jstree-default-large.jstree-rtl .jstree-last{background:transparent}
@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:bold;font-size:1.1em;text-shadow:1px 1px white} #jstree-dnd.jstree-dnd-responsive>i{background:transparent;width:40px;height:40px} #jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url("../images/jstree/40px.png");background-position:0 -200px;background-size:120px 240px} #jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url("../images/jstree/40px.png");background-position:-40px -200px;background-size:120px 240px} #jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive{} .jstree-default-responsive .jstree-icon{background-image:url("../images/jstree/40px.png")} .jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent} .jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap} .jstree-default-responsive .jstree-anchor{line-height:40px;height:40px} .jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px} .jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0} .jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px} .jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0} .jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px} .jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent} .jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0px !important} .jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px !important} .jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0 !important} .jstree-default-responsive .jstree-themeicon{background-position:-40px -40px} .jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px} .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px} .jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px} .jstree-default-responsive .jstree-anchor{font-weight:bold;font-size:1.1em;text-shadow:1px 1px white} .jstree-default-responsive>.jstree-striped{background:transparent} .jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,0.7);border-bottom:1px solid rgba(64,64,64,0.2);background:#ebebeb;height:40px} .jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9} .jstree-default-responsive .jstree-wholerow-clicked{background:#beebff} .jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666} .jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0} .jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none} .jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url("../images/jstree/40px.png");background-size:120px 240px} .jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y} .jstree-default-responsive .jstree-last{background:transparent} .jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px} .jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px} .jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0} .jstree-default-responsive .jstree-file{background:url("../images/jstree/40px.png") 0 -160px no-repeat;background-size:120px 240px} .jstree-default-responsive .jstree-folder{background:url("../images/jstree/40px.png") -40px -40px no-repeat;background-size:120px 240px}}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}
+.select2-minwidth{min-width:256px}
.unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}
.parent-width{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;*width:90%}
.clear:before,.clear:after{content:" ";display:table;}
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/style/blue/library.css
--- a/static/style/blue/library.css
+++ b/static/style/blue/library.css
@@ -7,6 +7,8 @@
li.folderRow,li.datasetRow{border-top:solid 1px #c6bfa8}
li.folderRow:hover,li.datasetRow:hover{background-color:#f9f9f9}
td.right-center{vertical-align:middle !important;text-align:right}
+.library-genome-select{max-width:350px}
+.library-extension-select{max-width:140px}
.library_table td{border-top:1px solid #5f6990 !important}
.library_table th{border-bottom:2px solid #5f6990 !important}
.library_table a{color:#0A143D}.library_table a:hover{color:maroon}
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/style/src/less/base.less
--- a/static/style/src/less/base.less
+++ b/static/style/src/less/base.less
@@ -31,6 +31,11 @@
// Mixins
+/* fix for zero width select2 - remove when fixed there */
+.select2-minwidth {
+ min-width: 256px;
+}
+
.unselectable {
.user-select(none);
}
diff -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 -r 1af9145657c0fc74175ee57fd2d696b9fc454a8d static/style/src/less/library.less
--- a/static/style/src/less/library.less
+++ b/static/style/src/less/library.less
@@ -29,13 +29,19 @@
background-color: @table-bg-accent;
}
-td.right-center{
+td.right-center {
vertical-align: middle !important;
text-align: right;
-
}
-.library_table{
+.library-genome-select {
+ max-width: 350px;
+}
+.library-extension-select {
+ max-width: 140px;
+}
+
+.library_table {
td {
border-top:1px solid #5f6990 !important;
}
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: ToolForm: Add wait modal and error modal
by commits-noreply@bitbucket.org 26 Sep '14
by commits-noreply@bitbucket.org 26 Sep '14
26 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/10bf4bbcc3fa/
Changeset: 10bf4bbcc3fa
User: guerler
Date: 2014-09-26 15:39:32+00:00
Summary: ToolForm: Add wait modal and error modal
Affected #: 12 files
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 client/galaxy/scripts/mvc/tools/tools-form.js
--- a/client/galaxy/scripts/mvc/tools/tools-form.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form.js
@@ -24,6 +24,13 @@
// link this
var self = this;
+ // link galaxy modal or create one
+ if (parent.Galaxy && parent.Galaxy.modal) {
+ this.modal = parent.Galaxy.modal;
+ } else {
+ this.modal = new Ui.Modal.View();
+ }
+
// link options
this.options = options;
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 client/galaxy/scripts/mvc/tools/tools-jobs.js
--- a/client/galaxy/scripts/mvc/tools/tools-jobs.js
+++ b/client/galaxy/scripts/mvc/tools/tools-jobs.js
@@ -32,23 +32,41 @@
console.debug('tools-jobs::submit - Submission canceled. Validation failed.');
return;
}
- console.log(job_def);
+
+ // debug
+ console.debug(job_def);
+
+ // show progress modal
+ this.app.modal.show({title: 'Please wait...', body: 'progress'});
// post job
Utils.request('POST', galaxy_config.root + 'api/tools', job_def,
// success handler
function(response) {
+ self.app.modal.hide();
self.app.message(ToolTemplate.success(response));
self._refreshHdas();
},
// error handler
- function(response) {
- console.debug(response);
+ function(response, response_full) {
+ self.app.modal.hide();
if (response && response.message && response.message.data) {
var error_messages = self.app.tree.matchResponse(response.message.data);
for (var input_id in error_messages) {
self._foundError(input_id, error_messages[input_id]);
}
+ } else {
+ // show modal with error message
+ self.app.modal.show({
+ title: response_full.statusText,
+ body: ToolTemplate.error(job_def),
+ closing_events: true,
+ buttons: {
+ 'Close': function() {
+ self.app.modal.hide();
+ }
+ }
+ });
}
}
);
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 client/galaxy/scripts/mvc/tools/tools-template.js
--- a/client/galaxy/scripts/mvc/tools/tools-template.js
+++ b/client/galaxy/scripts/mvc/tools/tools-template.js
@@ -40,6 +40,17 @@
return tmpl;
},
+ error: function(job_def) {
+ return '<div>' +
+ '<p>' +
+ 'Sorry, the server could not complete the request. Please contact the Galaxy Team if this error is persistent.' +
+ '</p>' +
+ '<textarea class="ui-textarea" disabled style="color: black;" rows="6">' +
+ JSON.stringify(job_def, undefined, 4) +
+ '</textarea>' +
+ '</div>';
+ },
+
batchMode: function() {
return '<div class="ui-table-form-info">' +
'<i class="fa fa-sitemap" style="font-size: 1.2em; padding: 2px 5px;"/>' +
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 client/galaxy/scripts/utils/utils.js
--- a/client/galaxy/scripts/utils/utils.js
+++ b/client/galaxy/scripts/utils/utils.js
@@ -13,6 +13,12 @@
// generic function to send json to url
function request (method, url, data, success, error) {
+ // configure
+ var ajaxConfig = {
+ url : url,
+ type : method,
+ 'contentType' : 'application/json'
+ }
// encode data into url
if (method == 'GET' || method == 'DELETE') {
@@ -22,40 +28,25 @@
url += '&';
}
url += $.param(data)
+ } else {
+ ajaxConfig['data'] = JSON.stringify(data);
+ ajaxConfig['dataType'] = 'json';
}
- // prepare request
- var xhr = new XMLHttpRequest();
- xhr.open(method, url, true);
- xhr.setRequestHeader('Accept', 'application/json');
- xhr.setRequestHeader('Cache-Control', 'no-cache');
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onloadend = function() {
- // get status
- var status = xhr.status;
-
- // read response
+ // make request
+ $.ajax(ajaxConfig)
+ .done(function(response) {
+ success && success(response);
+ })
+ .fail(function(response) {
+ var response_text = null;
try {
- response = jQuery.parseJSON(xhr.responseText);
+ response_text = jQuery.parseJSON(response.responseText);
} catch (e) {
- response = xhr.responseText;
+ response_text = response.responseText;
}
-
- // parse response
- if (status == 200) {
- success && success(response);
- } else {
- error && error(response);
- }
- };
-
- // make request
- if (method == 'GET' || method == 'DELETE') {
- xhr.send();
- } else {
- xhr.send(JSON.stringify(data));
- }
+ error && error(response_text, response);
+ });
};
// get css value
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/mvc/tools/tools-form.js
--- a/static/scripts/mvc/tools/tools-form.js
+++ b/static/scripts/mvc/tools/tools-form.js
@@ -24,6 +24,13 @@
// link this
var self = this;
+ // link galaxy modal or create one
+ if (parent.Galaxy && parent.Galaxy.modal) {
+ this.modal = parent.Galaxy.modal;
+ } else {
+ this.modal = new Ui.Modal.View();
+ }
+
// link options
this.options = options;
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/mvc/tools/tools-jobs.js
--- a/static/scripts/mvc/tools/tools-jobs.js
+++ b/static/scripts/mvc/tools/tools-jobs.js
@@ -32,23 +32,41 @@
console.debug('tools-jobs::submit - Submission canceled. Validation failed.');
return;
}
- console.log(job_def);
+
+ // debug
+ console.debug(job_def);
+
+ // show progress modal
+ this.app.modal.show({title: 'Please wait...', body: 'progress'});
// post job
Utils.request('POST', galaxy_config.root + 'api/tools', job_def,
// success handler
function(response) {
+ self.app.modal.hide();
self.app.message(ToolTemplate.success(response));
self._refreshHdas();
},
// error handler
- function(response) {
- console.debug(response);
+ function(response, response_full) {
+ self.app.modal.hide();
if (response && response.message && response.message.data) {
var error_messages = self.app.tree.matchResponse(response.message.data);
for (var input_id in error_messages) {
self._foundError(input_id, error_messages[input_id]);
}
+ } else {
+ // show modal with error message
+ self.app.modal.show({
+ title: response_full.statusText,
+ body: ToolTemplate.error(job_def),
+ closing_events: true,
+ buttons: {
+ 'Close': function() {
+ self.app.modal.hide();
+ }
+ }
+ });
}
}
);
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/mvc/tools/tools-template.js
--- a/static/scripts/mvc/tools/tools-template.js
+++ b/static/scripts/mvc/tools/tools-template.js
@@ -40,6 +40,17 @@
return tmpl;
},
+ error: function(job_def) {
+ return '<div>' +
+ '<p>' +
+ 'Sorry, the server could not complete the request. Please contact the Galaxy Team if this error is persistent.' +
+ '</p>' +
+ '<textarea class="ui-textarea" disabled style="color: black;" rows="6">' +
+ JSON.stringify(job_def, undefined, 4) +
+ '</textarea>' +
+ '</div>';
+ },
+
batchMode: function() {
return '<div class="ui-table-form-info">' +
'<i class="fa fa-sitemap" style="font-size: 1.2em; padding: 2px 5px;"/>' +
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/packed/mvc/tools/tools-form.js
--- a/static/scripts/packed/mvc/tools/tools-form.js
+++ b/static/scripts/packed/mvc/tools/tools-form.js
@@ -1,1 +1,1 @@
-define(["mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-datasets","mvc/tools/tools-section","mvc/tools/tools-tree","mvc/tools/tools-jobs"],function(h,l,j,a,f,d,i,k,c,g){var e=Backbone.Model.extend({initialize:function(m){this.url=galaxy_config.root+"api/tools/"+m.id+"?io_details=true"}});var b=Backbone.View.extend({container:"body",initialize:function(n){var m=this;this.options=n;this.setElement("<div/>");$(this.container).append(this.$el);this.model=new e({id:n.id});this.tree=new c(this);this.job_handler=new g(this);this.field_list={};this.input_list={};this.element_list={};this.datasets=new i({history_id:this.options.history_id,success:function(){m._initializeToolForm()}})},message:function(m){$(this.container).empty();$(this.container).append(m)},reset:function(){for(var m in this.element_list){this.element_list[m].reset()}},refresh:function(){this.tree.refresh();for(var m in this.field_list){this.field_list[m].trigger("change")}console.debug("tools-form::refresh() - Recreated tree structure. Refresh.")},_initializeToolForm:function(){var n=this;var o=new l.ButtonIcon({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/p/new/post/")}});var p=new l.ButtonIcon({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/t/"+n.options.id+"/")}});var m=new l.ButtonIcon({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",galaxy_config.root+"root?tool_id="+n.options.id)}});this.model.fetch({error:function(q){console.debug("tools-form::_initializeToolForm() : Attempt to fetch tool model failed.")},success:function(){n.inputs=n.model.get("inputs");n.portlet=new h.View({icon:"fa-wrench",title:"<b>"+n.model.get("name")+"</b> "+n.model.get("description"),buttons:{execute:new l.ButtonIcon({icon:"fa-check",tooltip:"Execute the tool",title:"Execute",floating:"clear",onclick:function(){n.job_handler.submit()}})},operations:{button_question:o,button_search:p,button_share:m}});if(!n.options.biostar_url){o.$el.hide();p.$el.hide()}n.$el.append(n.portlet.$el);if(n.options.help!=""){n.$el.append(d.help(n.options.help))}if(n.options.citations){n.$el.append(d.citations());var q=new j.ToolCitationCollection();q.tool_id=n.options.id;var r=new a.CitationListView({collection:q});r.render();q.fetch()}n.setElement(n.portlet.content());n.section=new k.View(n,{inputs:n.model.get("inputs"),cls:"ui-table-plain"});n.portlet.append(n.section.$el);n.refresh()}})}});return{View:b}});
\ No newline at end of file
+define(["mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-datasets","mvc/tools/tools-section","mvc/tools/tools-tree","mvc/tools/tools-jobs"],function(h,l,j,a,f,d,i,k,c,g){var e=Backbone.Model.extend({initialize:function(m){this.url=galaxy_config.root+"api/tools/"+m.id+"?io_details=true"}});var b=Backbone.View.extend({container:"body",initialize:function(n){var m=this;if(parent.Galaxy&&parent.Galaxy.modal){this.modal=parent.Galaxy.modal}else{this.modal=new l.Modal.View()}this.options=n;this.setElement("<div/>");$(this.container).append(this.$el);this.model=new e({id:n.id});this.tree=new c(this);this.job_handler=new g(this);this.field_list={};this.input_list={};this.element_list={};this.datasets=new i({history_id:this.options.history_id,success:function(){m._initializeToolForm()}})},message:function(m){$(this.container).empty();$(this.container).append(m)},reset:function(){for(var m in this.element_list){this.element_list[m].reset()}},refresh:function(){this.tree.refresh();for(var m in this.field_list){this.field_list[m].trigger("change")}console.debug("tools-form::refresh() - Recreated tree structure. Refresh.")},_initializeToolForm:function(){var n=this;var o=new l.ButtonIcon({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/p/new/post/")}});var p=new l.ButtonIcon({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/t/"+n.options.id+"/")}});var m=new l.ButtonIcon({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",galaxy_config.root+"root?tool_id="+n.options.id)}});this.model.fetch({error:function(q){console.debug("tools-form::_initializeToolForm() : Attempt to fetch tool model failed.")},success:function(){n.inputs=n.model.get("inputs");n.portlet=new h.View({icon:"fa-wrench",title:"<b>"+n.model.get("name")+"</b> "+n.model.get("description"),buttons:{execute:new l.ButtonIcon({icon:"fa-check",tooltip:"Execute the tool",title:"Execute",floating:"clear",onclick:function(){n.job_handler.submit()}})},operations:{button_question:o,button_search:p,button_share:m}});if(!n.options.biostar_url){o.$el.hide();p.$el.hide()}n.$el.append(n.portlet.$el);if(n.options.help!=""){n.$el.append(d.help(n.options.help))}if(n.options.citations){n.$el.append(d.citations());var q=new j.ToolCitationCollection();q.tool_id=n.options.id;var r=new a.CitationListView({collection:q});r.render();q.fetch()}n.setElement(n.portlet.content());n.section=new k.View(n,{inputs:n.model.get("inputs"),cls:"ui-table-plain"});n.portlet.append(n.section.$el);n.refresh()}})}});return{View:b}});
\ No newline at end of file
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/packed/mvc/tools/tools-jobs.js
--- a/static/scripts/packed/mvc/tools/tools-jobs.js
+++ b/static/scripts/packed/mvc/tools/tools-jobs.js
@@ -1,1 +1,1 @@
-define(["utils/utils","mvc/tools/tools-template"],function(b,a){return Backbone.Model.extend({initialize:function(d,c){this.app=d;this.options=b.merge(c,this.optionsDefault)},submit:function(){var c=this;var d={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();if(!this._validation(d)){console.debug("tools-jobs::submit - Submission canceled. Validation failed.");return}console.log(d);b.request("POST",galaxy_config.root+"api/tools",d,function(e){c.app.message(a.success(e));c._refreshHdas()},function(e){console.debug(e);if(e&&e.message&&e.message.data){var g=c.app.tree.matchResponse(e.message.data);for(var f in g){c._foundError(f,g[f])}}})},_foundError:function(c,d){var e=this.app.element_list[c];e.error(d||"Please verify this parameter.");if(this.valid){$(this.app.container).animate({scrollTop:e.$el.offset().top-20},500);this.valid=false}},_validation:function(g){var c=g.inputs;this.valid=true;var k=-1;for(var i in c){var e=c[i];var j=this.app.tree.match(i);var d=this.app.field_list[j];var h=this.app.input_list[j];if(h&&!h.optional&&d&&d.validate&&!d.validate()){this._foundError(j)}if(e.batch){var f=e.values.length;if(k===-1){k=f}else{if(k!==f){this._foundError(j,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>"+f+"</b> selection(s) while a previous field contains <b>"+k+"</b>.")}}}}return this.valid},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
+define(["utils/utils","mvc/tools/tools-template"],function(b,a){return Backbone.Model.extend({initialize:function(d,c){this.app=d;this.options=b.merge(c,this.optionsDefault)},submit:function(){var c=this;var d={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();if(!this._validation(d)){console.debug("tools-jobs::submit - Submission canceled. Validation failed.");return}console.debug(d);this.app.modal.show({title:"Please wait...",body:"progress"});b.request("POST",galaxy_config.root+"api/tools",d,function(e){c.app.modal.hide();c.app.message(a.success(e));c._refreshHdas()},function(e,g){c.app.modal.hide();if(e&&e.message&&e.message.data){var h=c.app.tree.matchResponse(e.message.data);for(var f in h){c._foundError(f,h[f])}}else{c.app.modal.show({title:g.statusText,body:a.error(d),closing_events:true,buttons:{Close:function(){c.app.modal.hide()}}})}})},_foundError:function(c,d){var e=this.app.element_list[c];e.error(d||"Please verify this parameter.");if(this.valid){$(this.app.container).animate({scrollTop:e.$el.offset().top-20},500);this.valid=false}},_validation:function(g){var c=g.inputs;this.valid=true;var k=-1;for(var i in c){var e=c[i];var j=this.app.tree.match(i);var d=this.app.field_list[j];var h=this.app.input_list[j];if(h&&!h.optional&&d&&d.validate&&!d.validate()){this._foundError(j)}if(e.batch){var f=e.values.length;if(k===-1){k=f}else{if(k!==f){this._foundError(j,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>"+f+"</b> selection(s) while a previous field contains <b>"+k+"</b>.")}}}}return this.valid},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/packed/mvc/tools/tools-template.js
--- a/static/scripts/packed/mvc/tools/tools-template.js
+++ b/static/scripts/packed/mvc/tools/tools-template.js
@@ -1,1 +1,1 @@
-define([],function(){return{help:function(a){return'<div class="toolHelp"><div class="toolHelpBody">'+a+"</div></div>"},citations:function(){return'<div id="citations"></div>'},success:function(c){var a=c.jobs.length;var d="";if(a==1){d="1 job has"}else{d=a+" jobs have been"}var b='<div class="donemessagelarge"><p>'+d+" been successfully added to the queue - resulting in the following datasets:</p>";for(var e in c.outputs){b+='<p style="padding: 10px 20px;"><b>'+(parseInt(e)+1)+": "+c.outputs[e].name+"</b></p>"}b+="<p>You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.</p></div>";return b},batchMode:function(){return'<div class="ui-table-form-info"><i class="fa fa-sitemap" style="font-size: 1.2em; padding: 2px 5px;"/>This is a batch mode input field. A separate job will be triggered for each dataset.';"</div>"}}});
\ No newline at end of file
+define([],function(){return{help:function(a){return'<div class="toolHelp"><div class="toolHelpBody">'+a+"</div></div>"},citations:function(){return'<div id="citations"></div>'},success:function(c){var a=c.jobs.length;var d="";if(a==1){d="1 job has"}else{d=a+" jobs have been"}var b='<div class="donemessagelarge"><p>'+d+" been successfully added to the queue - resulting in the following datasets:</p>";for(var e in c.outputs){b+='<p style="padding: 10px 20px;"><b>'+(parseInt(e)+1)+": "+c.outputs[e].name+"</b></p>"}b+="<p>You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.</p></div>";return b},error:function(a){return'<div><p>Sorry, the server could not complete the request. Please contact the Galaxy Team if this error is persistent.</p><textarea class="ui-textarea" disabled style="color: black;" rows="6">'+JSON.stringify(a,undefined,4)+"</textarea></div>"},batchMode:function(){return'<div class="ui-table-form-info"><i class="fa fa-sitemap" style="font-size: 1.2em; padding: 2px 5px;"/>This is a batch mode input field. A separate job will be triggered for each dataset.';"</div>"}}});
\ No newline at end of file
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/packed/utils/utils.js
--- a/static/scripts/packed/utils/utils.js
+++ b/static/scripts/packed/utils/utils.js
@@ -1,1 +1,1 @@
-define(["libs/underscore"],function(j){function d(l,m,k){g("GET",l,{},m,k)}function g(p,l,m,o,k){if(p=="GET"||p=="DELETE"){if(l.indexOf("?")==-1){l+="?"}else{l+="&"}l+=$.param(m)}var n=new XMLHttpRequest();n.open(p,l,true);n.setRequestHeader("Accept","application/json");n.setRequestHeader("Cache-Control","no-cache");n.setRequestHeader("X-Requested-With","XMLHttpRequest");n.setRequestHeader("Content-Type","application/json");n.onloadend=function(){var q=n.status;try{response=jQuery.parseJSON(n.responseText)}catch(r){response=n.responseText}if(q==200){o&&o(response)}else{k&&k(response)}};if(p=="GET"||p=="DELETE"){n.send()}else{n.send(JSON.stringify(m))}}function h(n,k){var l=$('<div class="'+n+'"></div>');l.appendTo(":eq(0)");var m=l.css(k);l.remove();return m}function f(k){if(!$('link[href^="'+k+'"]').length){$('<link href="'+galaxy_config.root+k+'" rel="stylesheet">').appendTo("head")}}function i(k,l){if(k){return j.defaults(k,l)}else{return l}}function b(l,n){var m="";if(l>=100000000000){l=l/100000000000;m="TB"}else{if(l>=100000000){l=l/100000000;m="GB"}else{if(l>=100000){l=l/100000;m="MB"}else{if(l>=100){l=l/100;m="KB"}else{if(l>0){l=l*10;m="b"}else{return"<strong>-</strong>"}}}}}var k=(Math.round(l)/10);if(n){return k+" "+m}else{return"<strong>"+k+"</strong> "+m}}function a(){return"x"+Math.random().toString(36).substring(2,9)}function c(k){var l=$("<p></p>");l.append(k);return l}function e(){var m=new Date();var k=(m.getHours()<10?"0":"")+m.getHours();var l=(m.getMinutes()<10?"0":"")+m.getMinutes();var n=m.getDate()+"/"+(m.getMonth()+1)+"/"+m.getFullYear()+", "+k+":"+l;return n}return{cssLoadFile:f,cssGetAttribute:h,get:d,merge:i,bytesToString:b,uuid:a,time:e,wrap:c,request:g}});
\ No newline at end of file
+define(["libs/underscore"],function(j){function d(l,m,k){g("GET",l,{},m,k)}function g(p,m,n,o,l){var k={url:m,type:p,contentType:"application/json"};if(p=="GET"||p=="DELETE"){if(m.indexOf("?")==-1){m+="?"}else{m+="&"}m+=$.param(n)}else{k.data=JSON.stringify(n);k.dataType="json"}$.ajax(k).done(function(q){o&&o(q)}).fail(function(r){var q=null;try{q=jQuery.parseJSON(r.responseText)}catch(s){q=r.responseText}l&&l(q,r)})}function h(n,k){var l=$('<div class="'+n+'"></div>');l.appendTo(":eq(0)");var m=l.css(k);l.remove();return m}function f(k){if(!$('link[href^="'+k+'"]').length){$('<link href="'+galaxy_config.root+k+'" rel="stylesheet">').appendTo("head")}}function i(k,l){if(k){return j.defaults(k,l)}else{return l}}function b(l,n){var m="";if(l>=100000000000){l=l/100000000000;m="TB"}else{if(l>=100000000){l=l/100000000;m="GB"}else{if(l>=100000){l=l/100000;m="MB"}else{if(l>=100){l=l/100;m="KB"}else{if(l>0){l=l*10;m="b"}else{return"<strong>-</strong>"}}}}}var k=(Math.round(l)/10);if(n){return k+" "+m}else{return"<strong>"+k+"</strong> "+m}}function a(){return"x"+Math.random().toString(36).substring(2,9)}function c(k){var l=$("<p></p>");l.append(k);return l}function e(){var m=new Date();var k=(m.getHours()<10?"0":"")+m.getHours();var l=(m.getMinutes()<10?"0":"")+m.getMinutes();var n=m.getDate()+"/"+(m.getMonth()+1)+"/"+m.getFullYear()+", "+k+":"+l;return n}return{cssLoadFile:f,cssGetAttribute:h,get:d,merge:i,bytesToString:b,uuid:a,time:e,wrap:c,request:g}});
\ No newline at end of file
diff -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f -r 10bf4bbcc3fa0ade8b325aa814b21655c3b33ba1 static/scripts/utils/utils.js
--- a/static/scripts/utils/utils.js
+++ b/static/scripts/utils/utils.js
@@ -13,6 +13,12 @@
// generic function to send json to url
function request (method, url, data, success, error) {
+ // configure
+ var ajaxConfig = {
+ url : url,
+ type : method,
+ 'contentType' : 'application/json'
+ }
// encode data into url
if (method == 'GET' || method == 'DELETE') {
@@ -22,40 +28,25 @@
url += '&';
}
url += $.param(data)
+ } else {
+ ajaxConfig['data'] = JSON.stringify(data);
+ ajaxConfig['dataType'] = 'json';
}
- // prepare request
- var xhr = new XMLHttpRequest();
- xhr.open(method, url, true);
- xhr.setRequestHeader('Accept', 'application/json');
- xhr.setRequestHeader('Cache-Control', 'no-cache');
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onloadend = function() {
- // get status
- var status = xhr.status;
-
- // read response
+ // make request
+ $.ajax(ajaxConfig)
+ .done(function(response) {
+ success && success(response);
+ })
+ .fail(function(response) {
+ var response_text = null;
try {
- response = jQuery.parseJSON(xhr.responseText);
+ response_text = jQuery.parseJSON(response.responseText);
} catch (e) {
- response = xhr.responseText;
+ response_text = response.responseText;
}
-
- // parse response
- if (status == 200) {
- success && success(response);
- } else {
- error && error(response);
- }
- };
-
- // make request
- if (method == 'GET' || method == 'DELETE') {
- xhr.send();
- } else {
- xhr.send(JSON.stringify(data));
- }
+ error && error(response_text, response);
+ });
};
// get css value
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: jmchilton: Fix data column parameters pointed at multiple data parameters.
by commits-noreply@bitbucket.org 26 Sep '14
by commits-noreply@bitbucket.org 26 Sep '14
26 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/95bcb99ad2b4/
Changeset: 95bcb99ad2b4
User: jmchilton
Date: 2014-09-26 14:49:43+00:00
Summary: Fix data column parameters pointed at multiple data parameters.
Before it would just die with an unhelpful server side exception - now it attempts to build, validate, and use a useful set of columns.
Affected #: 4 files
diff -r d27e8692adadf069e30d454cdb7a634526a6ba45 -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f lib/galaxy/tools/parameters/basic.py
--- a/lib/galaxy/tools/parameters/basic.py
+++ b/lib/galaxy/tools/parameters/basic.py
@@ -1170,34 +1170,47 @@
Generate a select list containing the columns of the associated
dataset (if found).
"""
- column_list = []
# No value indicates a configuration error, the named DataToolParameter
# must preceed this parameter in the config
assert self.data_ref in other_values, "Value for associated DataToolParameter not found"
# Get the value of the associated DataToolParameter (a dataset)
dataset = other_values[ self.data_ref ]
# Check if a dataset is selected
- if dataset is None or dataset == '':
+ if dataset is None or dataset == '' or dataset == []:
# NOTE: Both of these values indicate that no dataset is selected.
# However, 'None' indicates that the dataset is optional
# while '' indicates that it is not. Currently column
# parameters do not work well with optional datasets
- return column_list
- # Generate options
- if not dataset.metadata.columns:
- if self.accept_default:
- column_list.append( self.default_value or '1' )
- return column_list
- if not self.force_select:
+ return []
+ column_list = None
+ for dataset in util.listify( dataset ):
+ # Handle columns not available.
+ if not dataset.metadata.columns:
+ default_column_list = []
+ if self.accept_default:
+ default_column_list.append( self.default_value or '1' )
+ return default_column_list
+
+ # Build up possible columns for this dataset
+ this_column_list = []
+ if self.numerical:
+ # If numerical was requested, filter columns based on metadata
+ for i, col in enumerate( dataset.metadata.column_types ):
+ if col == 'int' or col == 'float':
+ this_column_list.append( str( i + 1 ) )
+ else:
+ for i in range(0, dataset.metadata.columns):
+ this_column_list.append( str( i + 1 ) )
+
+ # Take the intersection of these columns with the other columns.
+ if column_list is None:
+ column_list = this_column_list
+ else:
+ column_list = filter(lambda c: c in this_column_list, column_list)
+
+ if not self.force_select and 'None' not in column_list:
column_list.append( 'None' )
- if self.numerical:
- # If numerical was requested, filter columns based on metadata
- for i, col in enumerate( dataset.metadata.column_types ):
- if col == 'int' or col == 'float':
- column_list.append( str( i + 1 ) )
- else:
- for i in range(0, dataset.metadata.columns):
- column_list.append( str( i + 1 ) )
+
return column_list
def get_options( self, trans, other_values ):
@@ -1249,14 +1262,15 @@
if self.data_ref not in context:
return False
# Get the selected dataset if selected
- dataset = context[ self.data_ref ]
- if dataset:
- # Check if the dataset does not have the expected metadata for columns
- if not dataset.metadata.columns:
- # Only allow late validation if the dataset is not yet ready
- # (since we have reason to expect the metadata to be ready eventually)
- if dataset.is_pending or not dataset.datatype.matches_any( self.ref_input.formats ):
- return True
+ datasets = util.listify( context[ self.data_ref ] )
+ for dataset in datasets:
+ if dataset:
+ # Check if the dataset does not have the expected metadata for columns
+ if not dataset.metadata.columns:
+ # Only allow late validation if the dataset is not yet ready
+ # (since we have reason to expect the metadata to be ready eventually)
+ if dataset.is_pending or not dataset.datatype.matches_any( self.ref_input.formats ):
+ return True
# No late validation
return False
diff -r d27e8692adadf069e30d454cdb7a634526a6ba45 -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f test/functional/tools/column_multi_param.xml
--- /dev/null
+++ b/test/functional/tools/column_multi_param.xml
@@ -0,0 +1,25 @@
+<tool id="column_multi_param" name="Column Param Multi">
+ <command>
+ #for $input in $input1#
+ cut -f '$col' '$input' >> 'col_output';
+ #end for#
+ </command>
+ <inputs>
+ <param type="data" format="tabular" name="input1" label="Input 1" multiple="true" />
+ <param name="col" type="data_column" data_ref="input1" label="Column to Use" />
+ </inputs>
+ <outputs>
+ <data name="output1" type="tabular" from_work_dir="col_output" />
+ </outputs>
+ <tests>
+ <test>
+ <param name="input1" value="2.tabular,2.tabular" />
+ <param name="col" value="2" />
+ <output name="outpu1">
+ <assert_contents>
+ <has_line line="68" />
+ </assert_contents>
+ </output>
+ </test>
+ </tests>
+</tool>
diff -r d27e8692adadf069e30d454cdb7a634526a6ba45 -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f test/functional/tools/column_param.xml
--- /dev/null
+++ b/test/functional/tools/column_param.xml
@@ -0,0 +1,23 @@
+<tool id="column_param" name="Column Param">
+ <command>
+ cut -f '$col' '$input1' > 'col_output'
+ </command>
+ <inputs>
+ <param type="data" format="tabular" name="input1" label="Input 1" />
+ <param name="col" type="data_column" data_ref="input1" label="Column to Use" />
+ </inputs>
+ <outputs>
+ <data name="output1" type="tabular" from_work_dir="col_output" />
+ </outputs>
+ <tests>
+ <test>
+ <param name="input1" value="2.tabular" />
+ <param name="col" value="2" />
+ <output name="output1">
+ <assert_contents>
+ <has_line line="68" />
+ </assert_contents>
+ </output>
+ </test>
+ </tests>
+</tool>
diff -r d27e8692adadf069e30d454cdb7a634526a6ba45 -r 95bcb99ad2b467ca0176a1e5e747bb18cd3cc61f test/functional/tools/samples_tool_conf.xml
--- a/test/functional/tools/samples_tool_conf.xml
+++ b/test/functional/tools/samples_tool_conf.xml
@@ -20,6 +20,8 @@
<tool file="parallelism_optional.xml" /><tool file="implicit_default_conds.xml" /><tool file="multi_data_param.xml" />
+ <tool file="column_param.xml" />
+ <tool file="column_multi_param.xml" /><tool file="special_params.xml" /><tool file="validation_default.xml" /><tool file="validation_sanitizer.xml" />
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: ToolForm: Fix boolean handling
by commits-noreply@bitbucket.org 26 Sep '14
by commits-noreply@bitbucket.org 26 Sep '14
26 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/d27e8692adad/
Changeset: d27e8692adad
User: guerler
Date: 2014-09-26 13:52:32+00:00
Summary: ToolForm: Fix boolean handling
Affected #: 3 files
diff -r 38f6cf2629efd071b4e7cc3e420a4e5081ad51e0 -r d27e8692adadf069e30d454cdb7a634526a6ba45 client/galaxy/scripts/mvc/tools/tools-tree.js
--- a/client/galaxy/scripts/mvc/tools/tools-tree.js
+++ b/client/galaxy/scripts/mvc/tools/tools-tree.js
@@ -109,16 +109,6 @@
}
}
break;
- // handle boolean input
- case 'boolean':
- var value = self.app.field_list[input.id].value();
- if (value === 'true') {
- value = input.truevalue;
- } else {
- value = input.falsevalue;
- }
- add (job_input_id, input.id, value);
- break;
default:
// handle default value
add (job_input_id, input.id, self.app.field_list[input.id].value());
diff -r 38f6cf2629efd071b4e7cc3e420a4e5081ad51e0 -r d27e8692adadf069e30d454cdb7a634526a6ba45 static/scripts/mvc/tools/tools-tree.js
--- a/static/scripts/mvc/tools/tools-tree.js
+++ b/static/scripts/mvc/tools/tools-tree.js
@@ -109,16 +109,6 @@
}
}
break;
- // handle boolean input
- case 'boolean':
- var value = self.app.field_list[input.id].value();
- if (value === 'true') {
- value = input.truevalue;
- } else {
- value = input.falsevalue;
- }
- add (job_input_id, input.id, value);
- break;
default:
// handle default value
add (job_input_id, input.id, self.app.field_list[input.id].value());
diff -r 38f6cf2629efd071b4e7cc3e420a4e5081ad51e0 -r d27e8692adadf069e30d454cdb7a634526a6ba45 static/scripts/packed/mvc/tools/tools-tree.js
--- a/static/scripts/packed/mvc/tools/tools-tree.js
+++ b/static/scripts/packed/mvc/tools/tools-tree.js
@@ -1,1 +1,1 @@
-define([],function(){return Backbone.Model.extend({initialize:function(a){this.app=a},refresh:function(){this.dict={};this.xml=$("<div/>");if(!this.app.section){return{}}this._iterate(this.app.section.$el,this.dict,this.xml)},finalize:function(){var a=this;this.job_def={};this.job_ids={};function c(f,e,d){a.job_def[f]=d;a.job_ids[f]=e}function b(j,m){for(var g in m){var e=m[g];if(e.input){var n=e.input;var h=j;if(j!=""){h+="|"}h+=n.name;switch(n.type){case"repeat":var d="section-";var q=[];var l=null;for(var p in e){var k=p.indexOf(d);if(k!=-1){k+=d.length;q.push(parseInt(p.substr(k)));if(!l){l=p.substr(0,k)}}}q.sort(function(r,i){return r-i});var g=0;for(var f in q){b(h+"_"+g++,e[l+q[f]])}break;case"conditional":var o=a.app.field_list[n.id].value();c(h+"|"+n.test_param.name,n.id,o);for(var f in n.cases){if(n.cases[f].value==o){b(h,m[n.id+"-section-"+f]);break}}break;case"boolean":var o=a.app.field_list[n.id].value();if(o==="true"){o=n.truevalue}else{o=n.falsevalue}c(h,n.id,o);break;default:c(h,n.id,a.app.field_list[n.id].value())}}}}b("",this.dict);return this.job_def},match:function(a){return this.job_ids&&this.job_ids[a]},matchResponse:function(c){var a={};var b=this;function d(j,h){if(typeof h==="string"){var f=b.app.tree.job_ids[j];if(f){a[f]=h}}else{for(var g in h){var e=g;if(j!==""){e=j+"|"+e}d(e,h[g])}}}d("",c);return a},references:function(c,e){var g=[];var b=this;function d(h,j){var i=$(j).children();var l=[];var k=false;i.each(function(){var o=this;var n=$(o).attr("id");if(n!==c){var m=b.app.input_list[n];if(m){if(m.name==h){k=true;return false}if(m.data_ref==h&&m.type==e){l.push(n)}}}});if(!k){g=g.concat(l);i.each(function(){d(h,this)})}}var f=this.xml.find("#"+c);if(f.length>0){var a=this.app.input_list[c];if(a){d(a.name,f.parent())}}return g},_iterate:function(d,e,b){var a=this;var c=$(d).children();c.each(function(){var i=this;var h=$(i).attr("id");if($(i).hasClass("section-row")){e[h]={};var f=a.app.input_list[h];if(f){e[h]={input:f}}var g=$('<div id="'+h+'"/>');b.append(g);a._iterate(i,e[h],g)}else{a._iterate(i,e,b)}})}})});
\ No newline at end of file
+define([],function(){return Backbone.Model.extend({initialize:function(a){this.app=a},refresh:function(){this.dict={};this.xml=$("<div/>");if(!this.app.section){return{}}this._iterate(this.app.section.$el,this.dict,this.xml)},finalize:function(){var a=this;this.job_def={};this.job_ids={};function c(f,e,d){a.job_def[f]=d;a.job_ids[f]=e}function b(j,m){for(var g in m){var e=m[g];if(e.input){var n=e.input;var h=j;if(j!=""){h+="|"}h+=n.name;switch(n.type){case"repeat":var d="section-";var q=[];var l=null;for(var p in e){var k=p.indexOf(d);if(k!=-1){k+=d.length;q.push(parseInt(p.substr(k)));if(!l){l=p.substr(0,k)}}}q.sort(function(r,i){return r-i});var g=0;for(var f in q){b(h+"_"+g++,e[l+q[f]])}break;case"conditional":var o=a.app.field_list[n.id].value();c(h+"|"+n.test_param.name,n.id,o);for(var f in n.cases){if(n.cases[f].value==o){b(h,m[n.id+"-section-"+f]);break}}break;default:c(h,n.id,a.app.field_list[n.id].value())}}}}b("",this.dict);return this.job_def},match:function(a){return this.job_ids&&this.job_ids[a]},matchResponse:function(c){var a={};var b=this;function d(j,h){if(typeof h==="string"){var f=b.app.tree.job_ids[j];if(f){a[f]=h}}else{for(var g in h){var e=g;if(j!==""){e=j+"|"+e}d(e,h[g])}}}d("",c);return a},references:function(c,e){var g=[];var b=this;function d(h,j){var i=$(j).children();var l=[];var k=false;i.each(function(){var o=this;var n=$(o).attr("id");if(n!==c){var m=b.app.input_list[n];if(m){if(m.name==h){k=true;return false}if(m.data_ref==h&&m.type==e){l.push(n)}}}});if(!k){g=g.concat(l);i.each(function(){d(h,this)})}}var f=this.xml.find("#"+c);if(f.length>0){var a=this.app.input_list[c];if(a){d(a.name,f.parent())}}return g},_iterate:function(d,e,b){var a=this;var c=$(d).children();c.each(function(){var i=this;var h=$(i).attr("id");if($(i).hasClass("section-row")){e[h]={};var f=a.app.input_list[h];if(f){e[h]={input:f}}var g=$('<div id="'+h+'"/>');b.append(g);a._iterate(i,e[h],g)}else{a._iterate(i,e,b)}})}})});
\ No newline at end of file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: jmchilton: Tool test case demonstrating wrapping multiple data params in new meta-parameter wrapper.
by commits-noreply@bitbucket.org 26 Sep '14
by commits-noreply@bitbucket.org 26 Sep '14
26 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/38f6cf2629ef/
Changeset: 38f6cf2629ef
User: jmchilton
Date: 2014-09-26 13:29:53+00:00
Summary: Tool test case demonstrating wrapping multiple data params in new meta-parameter wrapper.
./run_tests.sh -with_framework_test_tools -api test/api/test_tools.py:ToolsTestCase.test_multidata_param
It was what was requested, but I am not sure I love this behavior - seems like for consistency that should maybe be a list of lists? I can see the other side of the argument though.
Affected #: 1 file
diff -r f52d7d6d64a671039a85959e1c720445f0ee672e -r 38f6cf2629efd071b4e7cc3e420a4e5081ad51e0 test/api/test_tools.py
--- a/test/api/test_tools.py
+++ b/test/api/test_tools.py
@@ -106,6 +106,23 @@
output1_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output )
assert output1_content == "--ex1,ex2"
+ @skip_without_tool( "multi_data_param" )
+ def test_multidata_param( self ):
+ history_id = self.dataset_populator.new_history()
+ hda1 = dataset_to_param( self.dataset_populator.new_dataset( history_id, content='1\t2\t3' ) )
+ hda2 = dataset_to_param( self.dataset_populator.new_dataset( history_id, content='4\t5\t6' ) )
+ inputs = {
+ "f1": { 'batch': False, 'values': [ hda1, hda2 ] },
+ "f2": { 'batch': False, 'values': [ hda2, hda1 ] },
+ }
+ response = self._run( "multi_data_param", history_id, inputs, assert_ok=True )
+ output1 = response[ "outputs" ][ 0 ]
+ output2 = response[ "outputs" ][ 1 ]
+ output1_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output1 )
+ output2_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output2 )
+ assert output1_content == "1\t2\t3\n4\t5\t6\n", output1_content
+ assert output2_content == "4\t5\t6\n1\t2\t3\n", output2_content
+
@skip_without_tool( "cat1" )
def test_run_cat1( self ):
# Run simple non-upload tool with an input data parameter.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/1a87b74d4f42/
Changeset: 1a87b74d4f42
Branch: next-stable
User: natefoo
Date: 2014-09-25 20:23:06+00:00
Summary: Fix bug in finding relocated tool_data_table_conf.xml
Affected #: 1 file
diff -r fdcefd1c3661ea71661584e7bcc03f33022641d1 -r 1a87b74d4f428ac25dfe5517506ec16bfa9a1bc4 lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -394,7 +394,7 @@
)
listify_defaults = dict(
- tool_data_table_config_path = [ 'config/tool_data_table_conf.xml', 'config/tool_data_table_conf.xml', 'config/tool_data_table_conf.xml.sample' ],
+ tool_data_table_config_path = [ 'config/tool_data_table_conf.xml', 'tool_data_table_conf.xml', 'config/tool_data_table_conf.xml.sample' ],
# rationale:
# [0]: user has explicitly created config/tool_conf.xml but did not
# move their existing shed_tool_conf.xml, don't use
https://bitbucket.org/galaxy/galaxy-central/commits/f52d7d6d64a6/
Changeset: f52d7d6d64a6
User: natefoo
Date: 2014-09-25 20:23:31+00:00
Summary: Merge next-stable.
Affected #: 1 file
diff -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 -r f52d7d6d64a671039a85959e1c720445f0ee672e lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -394,7 +394,7 @@
)
listify_defaults = dict(
- tool_data_table_config_path = [ 'config/tool_data_table_conf.xml', 'config/tool_data_table_conf.xml', 'config/tool_data_table_conf.xml.sample' ],
+ tool_data_table_config_path = [ 'config/tool_data_table_conf.xml', 'tool_data_table_conf.xml', 'config/tool_data_table_conf.xml.sample' ],
# rationale:
# [0]: user has explicitly created config/tool_conf.xml but did not
# move their existing shed_tool_conf.xml, don't use
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: ToolForm: Improve validation, minor fixes
by commits-noreply@bitbucket.org 26 Sep '14
by commits-noreply@bitbucket.org 26 Sep '14
26 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f02fcf8a931c/
Changeset: f02fcf8a931c
User: guerler
Date: 2014-09-25 20:14:56+00:00
Summary: ToolForm: Improve validation, minor fixes
Affected #: 12 files
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 client/galaxy/scripts/mvc/tools/tools-jobs.js
--- a/client/galaxy/scripts/mvc/tools/tools-jobs.js
+++ b/client/galaxy/scripts/mvc/tools/tools-jobs.js
@@ -46,18 +46,35 @@
console.debug(response);
if (response && response.message && response.message.data) {
var error_messages = self.app.tree.matchResponse(response.message.data);
- for (var id in error_messages) {
- var error_text = error_messages[id];
- if (!error_text) {
- error_text = 'Please verify this parameter.';
- }
- self.app.element_list[id].error(error_text);
+ for (var input_id in error_messages) {
+ self._foundError(input_id, error_messages[input_id]);
}
}
}
);
},
+ /** Highlight and scroll to error
+ */
+ _foundError: function (input_id, message) {
+ // get input field
+ var input_element = this.app.element_list[input_id];
+
+ // mark error
+ input_element.error(message || 'Please verify this parameter.');
+
+ // set flag
+ if (this.valid) {
+ // scroll to first input element
+ $(this.app.container).animate({
+ scrollTop: input_element.$el.offset().top - 20
+ }, 500);
+
+ // set error flag
+ this.valid = false;
+ }
+ },
+
/** Validate job definition
*/
_validation: function(job_def) {
@@ -65,30 +82,7 @@
var job_inputs = job_def.inputs;
// validation flag
- var valid = true;
-
- // link this
- var self = this;
-
- /** Highlight and scroll to error */
- function foundError (input_id, message) {
- // get input field
- var input_element = self.app.element_list[input_id];
-
- // mark error
- input_element.error(message || 'Please verify this parameter.');
-
- // set flag
- if (valid) {
- // scroll to first input element
- $(self.app.container).animate({
- scrollTop: input_element.$el.offset().top - 20
- }, 500);
-
- // set error flag
- valid = false;
- }
- }
+ this.valid = true;
// counter for values declared in batch mode
var n_values = -1;
@@ -105,7 +99,7 @@
// check basic field validation
if (input_def && !input_def.optional && input_field && input_field.validate && !input_field.validate()) {
- foundError(input_id);
+ this._foundError(input_id);
}
// check if input field is in batch mode
@@ -115,15 +109,15 @@
n_values = n;
} else {
if (n_values !== n) {
- foundError(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>' + n + '</b> selection(s) while a previous field contains <b>' + n_values + '</b>.');
+ this._foundError(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>' + n + '</b> selection(s) while a previous field contains <b>' + n_values + '</b>.');
}
}
}
}
- // return result
- return valid;
+ // return validation result
+ return this.valid;
},
/** Refreshes the history panel
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 client/galaxy/scripts/mvc/tools/tools-section.js
--- a/client/galaxy/scripts/mvc/tools/tools-section.js
+++ b/client/galaxy/scripts/mvc/tools/tools-section.js
@@ -540,6 +540,10 @@
/** Slider field
*/
_field_slider: function(input_def) {
+ // set min/max
+ input_def.min = input_def.min || 0;
+ input_def.max = input_def.max || 100000;
+
// calculate step size
var step = 1;
if (input_def.type == 'float') {
@@ -549,8 +553,8 @@
// create slider
return new Ui.Slider.View({
id : 'field-' + input_def.id,
- min : input_def.min || 0,
- max : input_def.max || 1000,
+ min : input_def.min,
+ max : input_def.max,
step : step
});
},
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 client/galaxy/scripts/mvc/ui/ui-options.js
--- a/client/galaxy/scripts/mvc/ui/ui-options.js
+++ b/client/galaxy/scripts/mvc/ui/ui-options.js
@@ -114,7 +114,7 @@
current = [current];
}
for (var i in current) {
- if (current[i] === 'null' || !current[i]) {
+ if (current[i] === 'null') {
return false;
}
}
@@ -149,7 +149,7 @@
// get selected values
var selected = this.$el.find(':checked');
if (selected.length == 0) {
- return null;
+ return 'null';
}
// return multiple or single value
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 client/galaxy/scripts/mvc/ui/ui-select-default.js
--- a/client/galaxy/scripts/mvc/ui/ui-select-default.js
+++ b/client/galaxy/scripts/mvc/ui/ui-select-default.js
@@ -91,7 +91,7 @@
current = [current];
}
for (var i in current) {
- if (current[i] === 'null' || !current[i]) {
+ if (current[i] === 'null') {
return false;
}
}
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/mvc/tools/tools-jobs.js
--- a/static/scripts/mvc/tools/tools-jobs.js
+++ b/static/scripts/mvc/tools/tools-jobs.js
@@ -46,18 +46,35 @@
console.debug(response);
if (response && response.message && response.message.data) {
var error_messages = self.app.tree.matchResponse(response.message.data);
- for (var id in error_messages) {
- var error_text = error_messages[id];
- if (!error_text) {
- error_text = 'Please verify this parameter.';
- }
- self.app.element_list[id].error(error_text);
+ for (var input_id in error_messages) {
+ self._foundError(input_id, error_messages[input_id]);
}
}
}
);
},
+ /** Highlight and scroll to error
+ */
+ _foundError: function (input_id, message) {
+ // get input field
+ var input_element = this.app.element_list[input_id];
+
+ // mark error
+ input_element.error(message || 'Please verify this parameter.');
+
+ // set flag
+ if (this.valid) {
+ // scroll to first input element
+ $(this.app.container).animate({
+ scrollTop: input_element.$el.offset().top - 20
+ }, 500);
+
+ // set error flag
+ this.valid = false;
+ }
+ },
+
/** Validate job definition
*/
_validation: function(job_def) {
@@ -65,30 +82,7 @@
var job_inputs = job_def.inputs;
// validation flag
- var valid = true;
-
- // link this
- var self = this;
-
- /** Highlight and scroll to error */
- function foundError (input_id, message) {
- // get input field
- var input_element = self.app.element_list[input_id];
-
- // mark error
- input_element.error(message || 'Please verify this parameter.');
-
- // set flag
- if (valid) {
- // scroll to first input element
- $(self.app.container).animate({
- scrollTop: input_element.$el.offset().top - 20
- }, 500);
-
- // set error flag
- valid = false;
- }
- }
+ this.valid = true;
// counter for values declared in batch mode
var n_values = -1;
@@ -105,7 +99,7 @@
// check basic field validation
if (input_def && !input_def.optional && input_field && input_field.validate && !input_field.validate()) {
- foundError(input_id);
+ this._foundError(input_id);
}
// check if input field is in batch mode
@@ -115,15 +109,15 @@
n_values = n;
} else {
if (n_values !== n) {
- foundError(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>' + n + '</b> selection(s) while a previous field contains <b>' + n_values + '</b>.');
+ this._foundError(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>' + n + '</b> selection(s) while a previous field contains <b>' + n_values + '</b>.');
}
}
}
}
- // return result
- return valid;
+ // return validation result
+ return this.valid;
},
/** Refreshes the history panel
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/mvc/tools/tools-section.js
--- a/static/scripts/mvc/tools/tools-section.js
+++ b/static/scripts/mvc/tools/tools-section.js
@@ -540,6 +540,10 @@
/** Slider field
*/
_field_slider: function(input_def) {
+ // set min/max
+ input_def.min = input_def.min || 0;
+ input_def.max = input_def.max || 100000;
+
// calculate step size
var step = 1;
if (input_def.type == 'float') {
@@ -549,8 +553,8 @@
// create slider
return new Ui.Slider.View({
id : 'field-' + input_def.id,
- min : input_def.min || 0,
- max : input_def.max || 1000,
+ min : input_def.min,
+ max : input_def.max,
step : step
});
},
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/mvc/ui/ui-options.js
--- a/static/scripts/mvc/ui/ui-options.js
+++ b/static/scripts/mvc/ui/ui-options.js
@@ -114,7 +114,7 @@
current = [current];
}
for (var i in current) {
- if (current[i] === 'null' || !current[i]) {
+ if (current[i] === 'null') {
return false;
}
}
@@ -149,7 +149,7 @@
// get selected values
var selected = this.$el.find(':checked');
if (selected.length == 0) {
- return null;
+ return 'null';
}
// return multiple or single value
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/mvc/ui/ui-select-default.js
--- a/static/scripts/mvc/ui/ui-select-default.js
+++ b/static/scripts/mvc/ui/ui-select-default.js
@@ -91,7 +91,7 @@
current = [current];
}
for (var i in current) {
- if (current[i] === 'null' || !current[i]) {
+ if (current[i] === 'null') {
return false;
}
}
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/packed/mvc/tools/tools-jobs.js
--- a/static/scripts/packed/mvc/tools/tools-jobs.js
+++ b/static/scripts/packed/mvc/tools/tools-jobs.js
@@ -1,1 +1,1 @@
-define(["utils/utils","mvc/tools/tools-template"],function(b,a){return Backbone.Model.extend({initialize:function(d,c){this.app=d;this.options=b.merge(c,this.optionsDefault)},submit:function(){var c=this;var d={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();if(!this._validation(d)){console.debug("tools-jobs::submit - Submission canceled. Validation failed.");return}console.log(d);b.request("POST",galaxy_config.root+"api/tools",d,function(e){c.app.message(a.success(e));c._refreshHdas()},function(e){console.debug(e);if(e&&e.message&&e.message.data){var h=c.app.tree.matchResponse(e.message.data);for(var g in h){var f=h[g];if(!f){f="Please verify this parameter."}c.app.element_list[g].error(f)}}})},_validation:function(h){var e=h.inputs;var c=true;var o=this;function m(n,p){var q=o.app.element_list[n];q.error(p||"Please verify this parameter.");if(c){$(o.app.container).animate({scrollTop:q.$el.offset().top-20},500);c=false}}var l=-1;for(var k in e){var f=e[k];var j=this.app.tree.match(k);var d=this.app.field_list[j];var i=this.app.input_list[j];if(i&&!i.optional&&d&&d.validate&&!d.validate()){m(j)}if(f.batch){var g=f.values.length;if(l===-1){l=g}else{if(l!==g){m(j,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>"+g+"</b> selection(s) while a previous field contains <b>"+l+"</b>.")}}}}return c},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
+define(["utils/utils","mvc/tools/tools-template"],function(b,a){return Backbone.Model.extend({initialize:function(d,c){this.app=d;this.options=b.merge(c,this.optionsDefault)},submit:function(){var c=this;var d={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();if(!this._validation(d)){console.debug("tools-jobs::submit - Submission canceled. Validation failed.");return}console.log(d);b.request("POST",galaxy_config.root+"api/tools",d,function(e){c.app.message(a.success(e));c._refreshHdas()},function(e){console.debug(e);if(e&&e.message&&e.message.data){var g=c.app.tree.matchResponse(e.message.data);for(var f in g){c._foundError(f,g[f])}}})},_foundError:function(c,d){var e=this.app.element_list[c];e.error(d||"Please verify this parameter.");if(this.valid){$(this.app.container).animate({scrollTop:e.$el.offset().top-20},500);this.valid=false}},_validation:function(g){var c=g.inputs;this.valid=true;var k=-1;for(var i in c){var e=c[i];var j=this.app.tree.match(i);var d=this.app.field_list[j];var h=this.app.input_list[j];if(h&&!h.optional&&d&&d.validate&&!d.validate()){this._foundError(j)}if(e.batch){var f=e.values.length;if(k===-1){k=f}else{if(k!==f){this._foundError(j,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains <b>"+f+"</b> selection(s) while a previous field contains <b>"+k+"</b>.")}}}}return this.valid},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/packed/mvc/tools/tools-section.js
--- a/static/scripts/packed/mvc/tools/tools-section.js
+++ b/static/scripts/packed/mvc/tools/tools-section.js
@@ -1,1 +1,1 @@
-define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/tools/tools-repeat","mvc/tools/tools-select-dataset"],function(d,a,g,c,b){var e=Backbone.View.extend({initialize:function(h){this.setElement(this._template(h))},error:function(h){this.$el.find(".ui-table-form-error-text").html(h);this.$el.find(".ui-table-form-error").fadeIn();this.$el.addClass("ui-error")},reset:function(){this.$el.find(".ui-table-form-error").hide();this.$el.removeClass("ui-error")},_template:function(h){var i=$('<div class="ui-table-element"/>');i.append('<div class="ui-table-form-error ui-error"><span class="fa fa-arrow-down"/><span class="ui-table-form-error-text"></div>');if(h.label){i.append('<div class="ui-table-form-title-strong">'+h.label+"</div>")}i.append(h.$el);if(h.help){i.append('<div class="ui-table-form-info">'+h.help+"</div>")}return i}});var f=Backbone.View.extend({initialize:function(i,h){this.app=i;this.inputs=h.inputs;h.cls_tr="section-row";this.table=new a.View(h);this.setElement(this.table.$el);this.render()},render:function(){this.table.delAll();for(var h in this.inputs){this._add(this.inputs[h])}},_add:function(j){var i=this;var h=jQuery.extend(true,{},j);h.id=d.uuid();this.app.input_list[h.id]=h;var k=h.type;switch(k){case"conditional":this._addConditional(h);break;case"repeat":this._addRepeat(h);break;default:this._addRow(k,h)}},_addConditional:function(h){h.label=h.test_param.label;h.value=h.test_param.value;var j=this._addRow("conditional",h);for(var l in h.cases){var k=h.id+"-section-"+l;var m=new f(this.app,{inputs:h.cases[l].inputs,cls:"ui-table-plain"});m.$el.addClass("ui-table-form-section");this.table.add(m.$el);this.table.append(k)}},_addRepeat:function(h){var j=this;var n=0;var m=new c.View({title_new:h.title,max:h.max,onnew:function(){var i=h.id+"-section-"+(n++);var q=new f(j.app,{inputs:h.inputs,cls:"ui-table-plain"});m.add({id:i,title:h.title,$el:q.$el,ondel:function(){m.del(i);m.retitle(h.title);j.app.refresh()}});m.retitle(h.title);j.app.refresh()}});for(var l=0;l<h.min;l++){var k=h.id+"-section-"+(n++);var p=new f(j.app,{inputs:h.inputs,cls:"ui-table-plain"});m.add({id:k,title:h.title,$el:p.$el})}m.retitle(h.title);var o=new e({label:h.title,help:h.help,$el:m.$el});o.$el.addClass("ui-table-form-section");this.table.add(o.$el);this.table.append(h.id)},_addRow:function(j,h){var l=h.id;var i=null;switch(j){case"text":i=this._field_text(h);break;case"select":i=this._field_select(h);break;case"data":i=this._field_data(h);break;case"data_column":i=this._field_select(h);break;case"conditional":i=this._field_conditional(h);break;case"hidden":i=this._field_hidden(h);break;case"integer":i=this._field_slider(h);break;case"float":i=this._field_slider(h);break;case"boolean":i=this._field_boolean(h);break}if(!i){if(h.options){i=this._field_select(h)}else{i=this._field_text(h)}console.debug("tools-form::_addRow() : Auto matched field type ("+j+").")}if(h.value!==undefined){i.value(h.value)}this.app.field_list[l]=i;var k=new e({label:h.label,help:h.help,$el:i.$el});this.app.element_list[l]=k;this.table.add(k.$el);this.table.append(l);return this.table.get(l)},_field_conditional:function(h){var j=this;var k=[];for(var l in h.test_param.options){var m=h.test_param.options[l];k.push({label:m[0],value:m[1]})}return new g.Select.View({id:"field-"+h.id,data:k,onchange:function(u){for(var s in h.cases){var o=h.cases[s];var r=h.id+"-section-"+s;var n=j.table.get(r);var q=false;for(var p in o.inputs){var t=o.inputs[p].type;if(t&&t!=="hidden"){q=true;break}}if(o.value==u&&q){n.fadeIn("fast")}else{n.hide()}}}})},_field_data:function(h){var i=this;var j=h.id;return new b.View(this.app,{id:"field-"+j,extensions:h.extensions,multiple:h.multiple,onchange:function(l){var v=l.values[0].id;var t=i.app.tree.references(j,"data_column");if(t.length<=0){console.debug("tool-form::field_data() - Data column parameters unavailable.");return}var o=i.app.datasets.filter(v);var x=null;if(o){console.debug("tool-form::field_data() - Selected dataset "+v+".");x=o.get("metadata_column_types");if(!x){console.debug("tool-form::field_data() - FAILED: Could not find metadata for dataset "+v+".")}}else{console.debug("tool-form::field_data() - FAILED: Could not find dataset "+v+".")}for(var p in t){var r=i.app.input_list[t[p]];var s=i.app.field_list[t[p]];if(!r||!s){console.debug("tool-form::field_data() - FAILED: Column not found.")}var n=r.numerical;var m=[];for(var w in x){var u=x[w];var k=(parseInt(w)+1);var q="Text";if(u=="int"||u=="float"){q="Number"}if(u=="int"||u=="float"||!n){m.push({label:"Column: "+k+" ["+q+"]",value:k})}}if(s){s.update(m);if(!s.exists(s.value())){s.value(s.first())}}}}})},_field_select:function(h){var j=[];for(var k in h.options){var l=h.options[k];j.push({label:l[0],value:l[1]})}var m=g.Select;switch(h.display){case"checkboxes":m=g.Checkbox;break;case"radio":m=g.Radio;break}return new m.View({id:"field-"+h.id,data:j,multiple:h.multiple})},_field_text:function(h){return new g.Input({id:"field-"+h.id,area:h.area})},_field_slider:function(h){var i=1;if(h.type=="float"){i=(h.max-h.min)/10000}return new g.Slider.View({id:"field-"+h.id,min:h.min||0,max:h.max||1000,step:i})},_field_hidden:function(h){return new g.Hidden({id:"field-"+h.id})},_field_boolean:function(h){return new g.RadioButton.View({id:"field-"+h.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}]})}});return{View:f}});
\ No newline at end of file
+define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/tools/tools-repeat","mvc/tools/tools-select-dataset"],function(d,a,g,c,b){var e=Backbone.View.extend({initialize:function(h){this.setElement(this._template(h))},error:function(h){this.$el.find(".ui-table-form-error-text").html(h);this.$el.find(".ui-table-form-error").fadeIn();this.$el.addClass("ui-error")},reset:function(){this.$el.find(".ui-table-form-error").hide();this.$el.removeClass("ui-error")},_template:function(h){var i=$('<div class="ui-table-element"/>');i.append('<div class="ui-table-form-error ui-error"><span class="fa fa-arrow-down"/><span class="ui-table-form-error-text"></div>');if(h.label){i.append('<div class="ui-table-form-title-strong">'+h.label+"</div>")}i.append(h.$el);if(h.help){i.append('<div class="ui-table-form-info">'+h.help+"</div>")}return i}});var f=Backbone.View.extend({initialize:function(i,h){this.app=i;this.inputs=h.inputs;h.cls_tr="section-row";this.table=new a.View(h);this.setElement(this.table.$el);this.render()},render:function(){this.table.delAll();for(var h in this.inputs){this._add(this.inputs[h])}},_add:function(j){var i=this;var h=jQuery.extend(true,{},j);h.id=d.uuid();this.app.input_list[h.id]=h;var k=h.type;switch(k){case"conditional":this._addConditional(h);break;case"repeat":this._addRepeat(h);break;default:this._addRow(k,h)}},_addConditional:function(h){h.label=h.test_param.label;h.value=h.test_param.value;var j=this._addRow("conditional",h);for(var l in h.cases){var k=h.id+"-section-"+l;var m=new f(this.app,{inputs:h.cases[l].inputs,cls:"ui-table-plain"});m.$el.addClass("ui-table-form-section");this.table.add(m.$el);this.table.append(k)}},_addRepeat:function(h){var j=this;var n=0;var m=new c.View({title_new:h.title,max:h.max,onnew:function(){var i=h.id+"-section-"+(n++);var q=new f(j.app,{inputs:h.inputs,cls:"ui-table-plain"});m.add({id:i,title:h.title,$el:q.$el,ondel:function(){m.del(i);m.retitle(h.title);j.app.refresh()}});m.retitle(h.title);j.app.refresh()}});for(var l=0;l<h.min;l++){var k=h.id+"-section-"+(n++);var p=new f(j.app,{inputs:h.inputs,cls:"ui-table-plain"});m.add({id:k,title:h.title,$el:p.$el})}m.retitle(h.title);var o=new e({label:h.title,help:h.help,$el:m.$el});o.$el.addClass("ui-table-form-section");this.table.add(o.$el);this.table.append(h.id)},_addRow:function(j,h){var l=h.id;var i=null;switch(j){case"text":i=this._field_text(h);break;case"select":i=this._field_select(h);break;case"data":i=this._field_data(h);break;case"data_column":i=this._field_select(h);break;case"conditional":i=this._field_conditional(h);break;case"hidden":i=this._field_hidden(h);break;case"integer":i=this._field_slider(h);break;case"float":i=this._field_slider(h);break;case"boolean":i=this._field_boolean(h);break}if(!i){if(h.options){i=this._field_select(h)}else{i=this._field_text(h)}console.debug("tools-form::_addRow() : Auto matched field type ("+j+").")}if(h.value!==undefined){i.value(h.value)}this.app.field_list[l]=i;var k=new e({label:h.label,help:h.help,$el:i.$el});this.app.element_list[l]=k;this.table.add(k.$el);this.table.append(l);return this.table.get(l)},_field_conditional:function(h){var j=this;var k=[];for(var l in h.test_param.options){var m=h.test_param.options[l];k.push({label:m[0],value:m[1]})}return new g.Select.View({id:"field-"+h.id,data:k,onchange:function(u){for(var s in h.cases){var o=h.cases[s];var r=h.id+"-section-"+s;var n=j.table.get(r);var q=false;for(var p in o.inputs){var t=o.inputs[p].type;if(t&&t!=="hidden"){q=true;break}}if(o.value==u&&q){n.fadeIn("fast")}else{n.hide()}}}})},_field_data:function(h){var i=this;var j=h.id;return new b.View(this.app,{id:"field-"+j,extensions:h.extensions,multiple:h.multiple,onchange:function(l){var v=l.values[0].id;var t=i.app.tree.references(j,"data_column");if(t.length<=0){console.debug("tool-form::field_data() - Data column parameters unavailable.");return}var o=i.app.datasets.filter(v);var x=null;if(o){console.debug("tool-form::field_data() - Selected dataset "+v+".");x=o.get("metadata_column_types");if(!x){console.debug("tool-form::field_data() - FAILED: Could not find metadata for dataset "+v+".")}}else{console.debug("tool-form::field_data() - FAILED: Could not find dataset "+v+".")}for(var p in t){var r=i.app.input_list[t[p]];var s=i.app.field_list[t[p]];if(!r||!s){console.debug("tool-form::field_data() - FAILED: Column not found.")}var n=r.numerical;var m=[];for(var w in x){var u=x[w];var k=(parseInt(w)+1);var q="Text";if(u=="int"||u=="float"){q="Number"}if(u=="int"||u=="float"||!n){m.push({label:"Column: "+k+" ["+q+"]",value:k})}}if(s){s.update(m);if(!s.exists(s.value())){s.value(s.first())}}}}})},_field_select:function(h){var j=[];for(var k in h.options){var l=h.options[k];j.push({label:l[0],value:l[1]})}var m=g.Select;switch(h.display){case"checkboxes":m=g.Checkbox;break;case"radio":m=g.Radio;break}return new m.View({id:"field-"+h.id,data:j,multiple:h.multiple})},_field_text:function(h){return new g.Input({id:"field-"+h.id,area:h.area})},_field_slider:function(h){h.min=h.min||0;h.max=h.max||100000;var i=1;if(h.type=="float"){i=(h.max-h.min)/10000}return new g.Slider.View({id:"field-"+h.id,min:h.min,max:h.max,step:i})},_field_hidden:function(h){return new g.Hidden({id:"field-"+h.id})},_field_boolean:function(h){return new g.RadioButton.View({id:"field-"+h.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}]})}});return{View:f}});
\ No newline at end of file
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/packed/mvc/ui/ui-options.js
--- a/static/scripts/packed/mvc/ui/ui-options.js
+++ b/static/scripts/packed/mvc/ui/ui-options.js
@@ -1,1 +1,1 @@
-define(["utils/utils"],function(b){var a=Backbone.View.extend({initialize:function(g){this.optionsDefault={value:[],visible:true,data:[],id:b.uuid(),empty:"No data available"};this.options=b.merge(g,this.optionsDefault);this.setElement("<div/>");this.$error=$(this._templateError(g));this.$options=$(this._template(g));this.$el.append(this.$error);this.$el.append(this.$options);if(!this.options.visible){this.$el.hide()}this.update(this.options.data);if(this.options.value){this.value(this.options.value)}var f=this;this.on("change",function(){f._change()})},update:function(g){var j=this._getValue();this.$el.find(".ui-option").remove();for(var h in g){var i=$(this._templateOption(g[h]));i.addClass("ui-option");this.$options.append(i)}var f=this;this.$el.find("input").on("change",function(){f.value(f._getValue());f._change()});this._refresh();this.value(j)},exists:function(g){if(typeof g==="string"){g=[g]}for(var f in g){if(this.$el.find('input[value="'+g[f]+'"]').length>0){return true}}return false},first:function(){var f=this.$el.find("input");if(f.length>0){return f.val()}else{return undefined}},validate:function(){var g=this.value();if(!(g instanceof Array)){g=[g]}for(var f in g){if(g[f]==="null"||!g[f]){return false}}return true},_change:function(){if(this.options.onchange){this.options.onchange(this._getValue())}},_refresh:function(){var f=this.$el.find(".ui-option").length;if(f==0){this.$error.show();this.$options.hide()}else{this.$error.hide();this.$options.css("display","inline-block")}},_getValue:function(){var g=this.$el.find(":checked");if(g.length==0){return null}if(this.options.multiple){var f=[];g.each(function(){f.push($(this).val())});return f}else{return g.val()}},_templateError:function(f){return'<div class="ui-error" style="display: none;">'+f.empty+"</div>"}});var d={};d.View=a.extend({initialize:function(f){a.prototype.initialize.call(this,f)},value:function(f){if(typeof f==="string"){f=[f]}if(f!==undefined){this.$el.find("input").prop("checked",false);for(var g in f){this.$el.find("input[value="+f[g]+"]").prop("checked",true)}}return this._getValue()},_templateOption:function(f){return'<div><input type="radio" name="'+this.options.id+'" value="'+f.value+'"/>'+f.label+"<br></div>"},_template:function(){return'<div class="ui-options"/>'}});var c={};c.View=d.View.extend({initialize:function(f){f.multiple=true;d.View.prototype.initialize.call(this,f)},_templateOption:function(f){return'<div><input type="checkbox" name="'+this.options.id+'" value="'+f.value+'"/>'+f.label+"<br></div>"}});var e={};e.View=a.extend({initialize:function(f){a.prototype.initialize.call(this,f)},value:function(f){if(f!==undefined){this.$el.find("input").prop("checked",false);this.$el.find("label").removeClass("active");this.$el.find('[value="'+f+'"]').prop("checked",true).closest("label").addClass("active")}return this._getValue()},_templateOption:function(g){var f='<label class="btn btn-default">';if(g.icon){f+='<i class="fa '+g.icon+'"/>'}f+='<input type="radio" name="'+this.options.id+'" value="'+g.value+'">'+g.label+"</label>";return f},_template:function(){return'<div class="btn-group ui-radiobutton" data-toggle="buttons"/>'}});return{Radio:d,RadioButton:e,Checkbox:c}});
\ No newline at end of file
+define(["utils/utils"],function(b){var a=Backbone.View.extend({initialize:function(g){this.optionsDefault={value:[],visible:true,data:[],id:b.uuid(),empty:"No data available"};this.options=b.merge(g,this.optionsDefault);this.setElement("<div/>");this.$error=$(this._templateError(g));this.$options=$(this._template(g));this.$el.append(this.$error);this.$el.append(this.$options);if(!this.options.visible){this.$el.hide()}this.update(this.options.data);if(this.options.value){this.value(this.options.value)}var f=this;this.on("change",function(){f._change()})},update:function(g){var j=this._getValue();this.$el.find(".ui-option").remove();for(var h in g){var i=$(this._templateOption(g[h]));i.addClass("ui-option");this.$options.append(i)}var f=this;this.$el.find("input").on("change",function(){f.value(f._getValue());f._change()});this._refresh();this.value(j)},exists:function(g){if(typeof g==="string"){g=[g]}for(var f in g){if(this.$el.find('input[value="'+g[f]+'"]').length>0){return true}}return false},first:function(){var f=this.$el.find("input");if(f.length>0){return f.val()}else{return undefined}},validate:function(){var g=this.value();if(!(g instanceof Array)){g=[g]}for(var f in g){if(g[f]==="null"){return false}}return true},_change:function(){if(this.options.onchange){this.options.onchange(this._getValue())}},_refresh:function(){var f=this.$el.find(".ui-option").length;if(f==0){this.$error.show();this.$options.hide()}else{this.$error.hide();this.$options.css("display","inline-block")}},_getValue:function(){var g=this.$el.find(":checked");if(g.length==0){return"null"}if(this.options.multiple){var f=[];g.each(function(){f.push($(this).val())});return f}else{return g.val()}},_templateError:function(f){return'<div class="ui-error" style="display: none;">'+f.empty+"</div>"}});var d={};d.View=a.extend({initialize:function(f){a.prototype.initialize.call(this,f)},value:function(f){if(typeof f==="string"){f=[f]}if(f!==undefined){this.$el.find("input").prop("checked",false);for(var g in f){this.$el.find("input[value="+f[g]+"]").prop("checked",true)}}return this._getValue()},_templateOption:function(f){return'<div><input type="radio" name="'+this.options.id+'" value="'+f.value+'"/>'+f.label+"<br></div>"},_template:function(){return'<div class="ui-options"/>'}});var c={};c.View=d.View.extend({initialize:function(f){f.multiple=true;d.View.prototype.initialize.call(this,f)},_templateOption:function(f){return'<div><input type="checkbox" name="'+this.options.id+'" value="'+f.value+'"/>'+f.label+"<br></div>"}});var e={};e.View=a.extend({initialize:function(f){a.prototype.initialize.call(this,f)},value:function(f){if(f!==undefined){this.$el.find("input").prop("checked",false);this.$el.find("label").removeClass("active");this.$el.find('[value="'+f+'"]').prop("checked",true).closest("label").addClass("active")}return this._getValue()},_templateOption:function(g){var f='<label class="btn btn-default">';if(g.icon){f+='<i class="fa '+g.icon+'"/>'}f+='<input type="radio" name="'+this.options.id+'" value="'+g.value+'">'+g.label+"</label>";return f},_template:function(){return'<div class="btn-group ui-radiobutton" data-toggle="buttons"/>'}});return{Radio:d,RadioButton:e,Checkbox:c}});
\ No newline at end of file
diff -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 -r f02fcf8a931c4862cfb6698da0e097d68c8025c6 static/scripts/packed/mvc/ui/ui-select-default.js
--- a/static/scripts/packed/mvc/ui/ui-select-default.js
+++ b/static/scripts/packed/mvc/ui/ui-select-default.js
@@ -1,1 +1,1 @@
-define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{id:"",cls:"",empty:"No data available",visible:true,wait:false,multiple:false},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));this.$select=this.$el.find("#select");this.$icon=this.$el.find("#icon");if(this.options.multiple){this.$select.prop("multiple",true);this.$select.addClass("ui-select-multiple");this.$icon.remove()}else{this.$el.addClass("ui-select")}this.update(this.options.data);if(!this.options.visible){this.hide()}if(this.options.wait){this.wait()}else{this.show()}var c=this;this.$select.on("change",function(){c._change()});this.on("change",function(){c._change()})},value:function(c){if(c!==undefined){this.$select.val(c)}return this.$select.val()},first:function(){var c=this.$select.find("option");if(c.length>0){return c.val()}else{return undefined}},validate:function(){var d=this.value();if(!(d instanceof Array)){d=[d]}for(var c in d){if(d[c]==="null"||!d[c]){return false}}return true},text:function(){return this.$select.find("option:selected").text()},show:function(){this.$icon.removeClass();this.$icon.addClass("fa fa-caret-down");this.$select.show();this.$el.show()},hide:function(){this.$el.hide()},wait:function(){this.$icon.removeClass();this.$icon.addClass("fa fa-spinner fa-spin");this.$select.hide()},disabled:function(){return this.$select.is(":disabled")},enable:function(){this.$select.prop("disabled",false)},disable:function(){this.$select.prop("disabled",true)},add:function(c){this.$select.append(this._templateOption(c));this._refresh()},del:function(c){this.$select.find("option[value="+c+"]").remove();this.$select.trigger("change");this._refresh()},update:function(c){var e=this.$select.val();this.$select.find("option").remove();for(var d in c){this.$select.append(this._templateOption(c[d]))}this._refresh();this.$select.val(e);if(!this.$select.val()){this.$select.val(this.first())}},setOnChange:function(c){this.options.onchange=c},exists:function(c){return this.$select.find('option[value="'+c+'"]').length>0},_change:function(){if(this.options.onchange){this.options.onchange(this.$select.val())}},_refresh:function(){this.$select.find("option[value=null]").remove();var c=this.$select.find("option").length;if(c==0){this.disable();this.$select.append(this._templateOption({value:"null",label:this.options.empty}))}else{this.enable()}},_templateOption:function(c){return'<option value="'+c.value+'">'+c.label+"</option>"},_template:function(c){return'<div id="'+c.id+'"><div class="button"><i id="icon"/></div><select id="select" class="select '+c.cls+" "+c.id+'"></select></div>'}});return{View:b}});
\ No newline at end of file
+define(["utils/utils"],function(a){var b=Backbone.View.extend({optionsDefault:{id:"",cls:"",empty:"No data available",visible:true,wait:false,multiple:false},initialize:function(d){this.options=a.merge(d,this.optionsDefault);this.setElement(this._template(this.options));this.$select=this.$el.find("#select");this.$icon=this.$el.find("#icon");if(this.options.multiple){this.$select.prop("multiple",true);this.$select.addClass("ui-select-multiple");this.$icon.remove()}else{this.$el.addClass("ui-select")}this.update(this.options.data);if(!this.options.visible){this.hide()}if(this.options.wait){this.wait()}else{this.show()}var c=this;this.$select.on("change",function(){c._change()});this.on("change",function(){c._change()})},value:function(c){if(c!==undefined){this.$select.val(c)}return this.$select.val()},first:function(){var c=this.$select.find("option");if(c.length>0){return c.val()}else{return undefined}},validate:function(){var d=this.value();if(!(d instanceof Array)){d=[d]}for(var c in d){if(d[c]==="null"){return false}}return true},text:function(){return this.$select.find("option:selected").text()},show:function(){this.$icon.removeClass();this.$icon.addClass("fa fa-caret-down");this.$select.show();this.$el.show()},hide:function(){this.$el.hide()},wait:function(){this.$icon.removeClass();this.$icon.addClass("fa fa-spinner fa-spin");this.$select.hide()},disabled:function(){return this.$select.is(":disabled")},enable:function(){this.$select.prop("disabled",false)},disable:function(){this.$select.prop("disabled",true)},add:function(c){this.$select.append(this._templateOption(c));this._refresh()},del:function(c){this.$select.find("option[value="+c+"]").remove();this.$select.trigger("change");this._refresh()},update:function(c){var e=this.$select.val();this.$select.find("option").remove();for(var d in c){this.$select.append(this._templateOption(c[d]))}this._refresh();this.$select.val(e);if(!this.$select.val()){this.$select.val(this.first())}},setOnChange:function(c){this.options.onchange=c},exists:function(c){return this.$select.find('option[value="'+c+'"]').length>0},_change:function(){if(this.options.onchange){this.options.onchange(this.$select.val())}},_refresh:function(){this.$select.find("option[value=null]").remove();var c=this.$select.find("option").length;if(c==0){this.disable();this.$select.append(this._templateOption({value:"null",label:this.options.empty}))}else{this.enable()}},_templateOption:function(c){return'<option value="'+c.value+'">'+c.label+"</option>"},_template:function(c){return'<div id="'+c.id+'"><div class="button"><i id="icon"/></div><select id="select" class="select '+c.cls+" "+c.id+'"></select></div>'}});return{View:b}});
\ No newline at end of file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
3 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/b737af143fce/
Changeset: b737af143fce
Branch: next-stable
User: jmchilton
Date: 2014-09-25 17:49:04+00:00
Summary: Fix various BibTex styling problems.
Need to get out of the BibTeX formatting game as quickly as possible this is a loosing battle, but until then plugging holes in the ship.
Affected #: 2 files
diff -r f3284eb7ec210d50a3e9f2c0d393cffcb24894da -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 client/galaxy/scripts/libs/bibtex.js
--- a/client/galaxy/scripts/libs/bibtex.js
+++ b/client/galaxy/scripts/libs/bibtex.js
@@ -93,6 +93,7 @@
'booklet' : 14,
'masterthesis' : 15,
'conference' : 16
+ ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.
,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.
}
/** @private */ this.MACROS_ = {
diff -r f3284eb7ec210d50a3e9f2c0d393cffcb24894da -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 client/galaxy/scripts/mvc/citation/citation-view.js
--- a/client/galaxy/scripts/mvc/citation/citation-view.js
+++ b/client/galaxy/scripts/mvc/citation/citation-view.js
@@ -24,11 +24,12 @@
var pages = fields.pages ? ("pp. " + fields.pages) : "";
var address = fields.address;
if( entryType == "article" ) {
+ var volume = (fields.volume ? fields.volume : "") +
+ (fields.number ? ( " (" + fields.number + ")" ) : "") +
+ (pages ? ", " + pages : "");
ref = authorsAndYear + this._asSentence(title) +
(fields.journal ? ("In <em>" + fields.journal + ", ") : "") +
- (fields.volume ? fields.volume : "") +
- (fields.number ? ( "(" + fields.number + "), " ) : ", " ) +
- this._asSentence(pages) +
+ this._asSentence(volume) +
this._asSentence(fields.address) +
"<\/em>";
} else if( entryType == "inproceedings" || entryType == "proceedings" ) {
@@ -43,14 +44,14 @@
(fields.howpublished ? fields.howpublished + ". " : "") +
(fields.note ? fields.note + "." : "");
} else if( entryType == "techreport" ) {
- ref = authorsAndYear + ". " + this._asSentence(title) +
+ ref = authorsAndYear + this._asSentence(title) +
this._asSentence(fields.institution) +
this._asSentence(fields.number) +
this._asSentence(fields.type);
} else if( entryType == "book" || entryType == "inbook" || entryType == "incollection" ) {
- ref = this._asSentence(authorsAndYear) + " " + this._formatBookInfo(fields);
+ ref = authorsAndYear + " " + this._formatBookInfo(fields);
} else {
- ref = this._asSentence(authorsAndYear) + " " + this._asSentence(title) +
+ ref = authorsAndYear + " " + this._asSentence(title) +
this._asSentence(fields.howpublished) +
this._asSentence(fields.note);
}
https://bitbucket.org/galaxy/galaxy-central/commits/fdcefd1c3661/
Changeset: fdcefd1c3661
Branch: next-stable
User: jmchilton
Date: 2014-09-25 17:49:04+00:00
Summary: Grunting at the scripts.
Affected #: 4 files
diff -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 -r fdcefd1c3661ea71661584e7bcc03f33022641d1 static/scripts/libs/bibtex.js
--- a/static/scripts/libs/bibtex.js
+++ b/static/scripts/libs/bibtex.js
@@ -93,6 +93,7 @@
'booklet' : 14,
'masterthesis' : 15,
'conference' : 16
+ ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.
,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.
}
/** @private */ this.MACROS_ = {
diff -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 -r fdcefd1c3661ea71661584e7bcc03f33022641d1 static/scripts/mvc/citation/citation-view.js
--- a/static/scripts/mvc/citation/citation-view.js
+++ b/static/scripts/mvc/citation/citation-view.js
@@ -24,11 +24,12 @@
var pages = fields.pages ? ("pp. " + fields.pages) : "";
var address = fields.address;
if( entryType == "article" ) {
+ var volume = (fields.volume ? fields.volume : "") +
+ (fields.number ? ( " (" + fields.number + ")" ) : "") +
+ (pages ? ", " + pages : "");
ref = authorsAndYear + this._asSentence(title) +
(fields.journal ? ("In <em>" + fields.journal + ", ") : "") +
- (fields.volume ? fields.volume : "") +
- (fields.number ? ( "(" + fields.number + "), " ) : ", " ) +
- this._asSentence(pages) +
+ this._asSentence(volume) +
this._asSentence(fields.address) +
"<\/em>";
} else if( entryType == "inproceedings" || entryType == "proceedings" ) {
@@ -43,14 +44,14 @@
(fields.howpublished ? fields.howpublished + ". " : "") +
(fields.note ? fields.note + "." : "");
} else if( entryType == "techreport" ) {
- ref = authorsAndYear + ". " + this._asSentence(title) +
+ ref = authorsAndYear + this._asSentence(title) +
this._asSentence(fields.institution) +
this._asSentence(fields.number) +
this._asSentence(fields.type);
} else if( entryType == "book" || entryType == "inbook" || entryType == "incollection" ) {
- ref = this._asSentence(authorsAndYear) + " " + this._formatBookInfo(fields);
+ ref = authorsAndYear + " " + this._formatBookInfo(fields);
} else {
- ref = this._asSentence(authorsAndYear) + " " + this._asSentence(title) +
+ ref = authorsAndYear + " " + this._asSentence(title) +
this._asSentence(fields.howpublished) +
this._asSentence(fields.note);
}
diff -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 -r fdcefd1c3661ea71661584e7bcc03f33022641d1 static/scripts/packed/libs/bibtex.js
--- a/static/scripts/packed/libs/bibtex.js
+++ b/static/scripts/packed/libs/bibtex.js
@@ -1,1 +1,1 @@
-function BibtexParser(c){if(typeof c=="string"){var d={};var a=[];function b(f){a.push(f)}var e=BibtexParser.call(d,b);e.parse(c);return{entries:a,errors:e.getErrors()}}if(typeof c!="function"){throw"Invalid parser construction."}this.STATES_={ENTRY_OR_JUNK:0,OBJECT_TYPE:1,ENTRY_KEY:2,KV_KEY:3,EQUALS:4,KV_VALUE:5};this.DATA_={};this.CALLBACK_=c;this.CHAR_=0;this.LINE_=1;this.CHAR_IN_LINE_=0;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={};this.SKIPTILLEOL_=false;this.VALBRACES_=null;this.BRACETYPE_=null;this.BRACECOUNT_=0;this.STATE_=this.STATES_.ENTRY_OR_JUNK;this.ERRORS_=[];this.ENTRY_TYPES_={inproceedings:1,proceedings:2,article:3,techreport:4,misc:5,mastersthesis:6,book:7,phdthesis:8,incollection:9,unpublished:10,inbook:11,manual:12,periodical:13,booklet:14,masterthesis:15,conference:16,data:999};this.MACROS_={jan:"January",feb:"February",mar:"March",apr:"April",may:"May",jun:"June",jul:"July",aug:"August",sep:"September",oct:"October",nov:"November",dec:"December",Jan:"January",Feb:"February",Mar:"March",Apr:"April",May:"May",Jun:"June",Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November",Dec:"December"};this.getErrors=function(){return this.ERRORS_};this.parse=function(f){for(var g=0;g<f.length;g++){this.processCharacter_(f[g])}};this.error_=function(f){this.ERRORS_.push([this.LINE_,this.CHAR_IN_LINE_,this.CHAR_,f])};this.processEntry_=function(){var h=this.DATA_;if(h.Fields){for(var k in h.Fields){var p=h.Fields[k];for(var j=0;j<this.CHARCONV_.length;j++){var q=this.CHARCONV_[j][0];var n=this.CHARCONV_[j][1];p=p.replace(q,n)}p=p.replace(/[\n\r\t]/g," ").replace(/\s\s+/g," ").replace(/^\s+|\s+$/g,"");var l=p.length;var g="";for(var j=0;j<l;j++){var m=p[j];var o=false;if(m=="\\"&&j<l-1){m=p[++j]}else{if(m=="{"||m=="}"){o=true}}if(!o){g+=m}}h.Fields[k]=g}}if(h.ObjectType=="string"){for(var k in h.Fields){this.MACROS_[k]=h.Fields[k]}}else{this.CALLBACK_(h)}};this.processCharacter_=function(l){this.CHAR_++;this.CHAR_IN_LINE_++;if(l=="\n"){this.LINE_++;this.CHAR_IN_LINE_=1}if(this.SKIPTILLEOL_){if(l=="\n"){this.SKIPTILLEOL_=false}return}if(this.SKIPCOMMENT_&&l=="%"){this.SKIPTILLEOL_=true;return}if(this.SKIPWS_&&/\s/.test(l)){return}this.SKIPWS_=false;this.SKIPCOMMENT_=false;this.SKIPTILLEOL_=false;var f=true;while(f){f=false;switch(this.STATE_){case this.STATES_.ENTRY_OR_JUNK:if(l=="@"){this.STATE_=this.STATES_.OBJECT_TYPE;this.DATA_={ObjectType:""}}this.BRACETYPE_=null;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break;case this.STATES_.OBJECT_TYPE:if(/[A-Za-z]/.test(l)){this.DATA_.ObjectType+=l.toLowerCase();this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{var i=this.DATA_.ObjectType;if(i=="comment"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i=="string"){this.DATA_.ObjectType=i;this.DATA_.Fields={};this.BRACETYPE_=l;this.BRACECOUNT_=1;this.STATE_=this.STATES_.KV_KEY;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={Key:""}}else{if(i=="preamble"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i in this.ENTRY_TYPES_){this.DATA_.ObjectType="entry";this.DATA_.EntryType=i;this.DATA_.EntryKey="";this.STATE_=this.STATES_.ENTRY_KEY;f=true}else{this.error_('Unrecognized object type: "'+this.DATA_.ObjectType+'"');this.STATE_=this.STATES_.ENTRY_OR_JUNK}}}}}break;case this.STATES_.ENTRY_KEY:if((l==="{"||l==="(")&&this.BRACETYPE_==null){this.BRACETYPE_=l;this.BRACECOUNT_=1;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break}if(/[,%\s]/.test(l)){if(this.DATA_.EntryKey.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{if(this.BRACETYPE_==null){this.error_("No opening brace for object.");this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;f=true;this.STATE_=this.STATES_.KV_KEY;this.PARSETMP_.Key="";this.DATA_.Fields={}}}}else{this.DATA_.EntryKey+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}break;case this.STATES_.KV_KEY:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(/[\-A-Za-z:]/.test(l)){this.PARSETMP_.Key+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{if(this.PARSETMP_.Key.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.EQUALS;f=true}}break;case this.STATES_.EQUALS:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.error_('Key-value pair has key "'+this.PARSETMP_.Key+'", but no value.');this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(l=="="){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_VALUE;this.PARSETMP_.Value="";this.VALBRACES_={'"':[],"{":[]}}break;case this.STATES_.KV_VALUE:var k=this.VALBRACES_;var j=this.PARSETMP_.Value;var h=false;if(l=='"'||l=="{"||l=="}"||l==","){if(l==","){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}h=true}}if(l=='"'){if(0===k['"'].length+k["{"].length){k['"'].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false;break}if(k['"'].length==1&&k["{"].length==0&&(j.length==0||j[j.length-1]!="\\")){h=true}else{}}if(l=="{"){if(j.length==0||j[j.length-1]!="\\"){k["{"].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{}}if(l=="}"){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}f=true;h=true}else{if(j.length==0||j[j.length-1]!="\\"){if(k["{"].length>0){k["{"].splice(k["{"].length-1,1);if(0==k["{"].length+k['"'].length){h=true}else{}}}else{}}}}if(h){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_KEY;this.DATA_.Fields[this.PARSETMP_.Key]=this.PARSETMP_.Value;this.PARSETMP_={Key:""};this.VALBRACES_=null}else{this.PARSETMP_.Value+=l}break}}};this.CHARCONV_=[[/\\space /g,"\u0020"],[/\\textdollar /g,"\u0024"],[/\\textquotesingle /g,"\u0027"],[/\\ast /g,"\u002A"],[/\\textbackslash /g,"\u005C"],[/\\\^\{\}/g,"\u005E"],[/\\textasciigrave /g,"\u0060"],[/\\lbrace /g,"\u007B"],[/\\vert /g,"\u007C"],[/\\rbrace /g,"\u007D"],[/\\textasciitilde /g,"\u007E"],[/\\textexclamdown /g,"\u00A1"],[/\\textcent /g,"\u00A2"],[/\\textsterling /g,"\u00A3"],[/\\textcurrency /g,"\u00A4"],[/\\textyen /g,"\u00A5"],[/\\textbrokenbar /g,"\u00A6"],[/\\textsection /g,"\u00A7"],[/\\textasciidieresis /g,"\u00A8"],[/\\textcopyright /g,"\u00A9"],[/\\textordfeminine /g,"\u00AA"],[/\\guillemotleft /g,"\u00AB"],[/\\lnot /g,"\u00AC"],[/\\textregistered /g,"\u00AE"],[/\\textasciimacron /g,"\u00AF"],[/\\textdegree /g,"\u00B0"],[/\\pm /g,"\u00B1"],[/\\textasciiacute /g,"\u00B4"],[/\\mathrm\{\\mu\}/g,"\u00B5"],[/\\textparagraph /g,"\u00B6"],[/\\cdot /g,"\u00B7"],[/\\c\{\}/g,"\u00B8"],[/\\textordmasculine /g,"\u00BA"],[/\\guillemotright /g,"\u00BB"],[/\\textonequarter /g,"\u00BC"],[/\\textonehalf /g,"\u00BD"],[/\\textthreequarters /g,"\u00BE"],[/\\textquestiondown /g,"\u00BF"],[/\\`\{A\}/g,"\u00C0"],[/\\'\{A\}/g,"\u00C1"],[/\\\^\{A\}/g,"\u00C2"],[/\\~\{A\}/g,"\u00C3"],[/\\"\{A\}/g,"\u00C4"],[/\\AA /g,"\u00C5"],[/\\AE /g,"\u00C6"],[/\\c\{C\}/g,"\u00C7"],[/\\`\{E\}/g,"\u00C8"],[/\\'\{E\}/g,"\u00C9"],[/\\\^\{E\}/g,"\u00CA"],[/\\"\{E\}/g,"\u00CB"],[/\\`\{I\}/g,"\u00CC"],[/\\'\{I\}/g,"\u00CD"],[/\\\^\{I\}/g,"\u00CE"],[/\\"\{I\}/g,"\u00CF"],[/\\DH /g,"\u00D0"],[/\\~\{N\}/g,"\u00D1"],[/\\`\{O\}/g,"\u00D2"],[/\\'\{O\}/g,"\u00D3"],[/\\\^\{O\}/g,"\u00D4"],[/\\~\{O\}/g,"\u00D5"],[/\\"\{O\}/g,"\u00D6"],[/\\texttimes /g,"\u00D7"],[/\\O /g,"\u00D8"],[/\\`\{U\}/g,"\u00D9"],[/\\'\{U\}/g,"\u00DA"],[/\\\^\{U\}/g,"\u00DB"],[/\\"\{U\}/g,"\u00DC"],[/\\'\{Y\}/g,"\u00DD"],[/\\TH /g,"\u00DE"],[/\\ss /g,"\u00DF"],[/\\`\{a\}/g,"\u00E0"],[/\\'\{a\}/g,"\u00E1"],[/\\\^\{a\}/g,"\u00E2"],[/\\~\{a\}/g,"\u00E3"],[/\\"\{a\}/g,"\u00E4"],[/\\aa /g,"\u00E5"],[/\\ae /g,"\u00E6"],[/\\c\{c\}/g,"\u00E7"],[/\\`\{e\}/g,"\u00E8"],[/\\'\{e\}/g,"\u00E9"],[/\\\^\{e\}/g,"\u00EA"],[/\\"\{e\}/g,"\u00EB"],[/\\`\{\\i\}/g,"\u00EC"],[/\\'\{\\i\}/g,"\u00ED"],[/\\\^\{\\i\}/g,"\u00EE"],[/\\"\{\\i\}/g,"\u00EF"],[/\\dh /g,"\u00F0"],[/\\~\{n\}/g,"\u00F1"],[/\\`\{o\}/g,"\u00F2"],[/\\'\{o\}/g,"\u00F3"],[/\\\^\{o\}/g,"\u00F4"],[/\\~\{o\}/g,"\u00F5"],[/\\"\{o\}/g,"\u00F6"],[/\\div /g,"\u00F7"],[/\\o /g,"\u00F8"],[/\\`\{u\}/g,"\u00F9"],[/\\'\{u\}/g,"\u00FA"],[/\\\^\{u\}/g,"\u00FB"],[/\\"\{u\}/g,"\u00FC"],[/\\'\{y\}/g,"\u00FD"],[/\\th /g,"\u00FE"],[/\\"\{y\}/g,"\u00FF"],[/\\=\{A\}/g,"\u0100"],[/\\=\{a\}/g,"\u0101"],[/\\u\{A\}/g,"\u0102"],[/\\u\{a\}/g,"\u0103"],[/\\k\{A\}/g,"\u0104"],[/\\k\{a\}/g,"\u0105"],[/\\'\{C\}/g,"\u0106"],[/\\'\{c\}/g,"\u0107"],[/\\\^\{C\}/g,"\u0108"],[/\\\^\{c\}/g,"\u0109"],[/\\.\{C\}/g,"\u010A"],[/\\.\{c\}/g,"\u010B"],[/\\v\{C\}/g,"\u010C"],[/\\v\{c\}/g,"\u010D"],[/\\v\{D\}/g,"\u010E"],[/\\v\{d\}/g,"\u010F"],[/\\DJ /g,"\u0110"],[/\\dj /g,"\u0111"],[/\\=\{E\}/g,"\u0112"],[/\\=\{e\}/g,"\u0113"],[/\\u\{E\}/g,"\u0114"],[/\\u\{e\}/g,"\u0115"],[/\\.\{E\}/g,"\u0116"],[/\\.\{e\}/g,"\u0117"],[/\\k\{E\}/g,"\u0118"],[/\\k\{e\}/g,"\u0119"],[/\\v\{E\}/g,"\u011A"],[/\\v\{e\}/g,"\u011B"],[/\\\^\{G\}/g,"\u011C"],[/\\\^\{g\}/g,"\u011D"],[/\\u\{G\}/g,"\u011E"],[/\\u\{g\}/g,"\u011F"],[/\\.\{G\}/g,"\u0120"],[/\\.\{g\}/g,"\u0121"],[/\\c\{G\}/g,"\u0122"],[/\\c\{g\}/g,"\u0123"],[/\\\^\{H\}/g,"\u0124"],[/\\\^\{h\}/g,"\u0125"],[/\\Elzxh /g,"\u0127"],[/\\~\{I\}/g,"\u0128"],[/\\~\{\\i\}/g,"\u0129"],[/\\=\{I\}/g,"\u012A"],[/\\=\{\\i\}/g,"\u012B"],[/\\u\{I\}/g,"\u012C"],[/\\u\{\\i\}/g,"\u012D"],[/\\k\{I\}/g,"\u012E"],[/\\k\{i\}/g,"\u012F"],[/\\.\{I\}/g,"\u0130"],[/\\i /g,"\u0131"],[/\\\^\{J\}/g,"\u0134"],[/\\\^\{\\j\}/g,"\u0135"],[/\\c\{K\}/g,"\u0136"],[/\\c\{k\}/g,"\u0137"],[/\\'\{L\}/g,"\u0139"],[/\\'\{l\}/g,"\u013A"],[/\\c\{L\}/g,"\u013B"],[/\\c\{l\}/g,"\u013C"],[/\\v\{L\}/g,"\u013D"],[/\\v\{l\}/g,"\u013E"],[/\\L /g,"\u0141"],[/\\l /g,"\u0142"],[/\\'\{N\}/g,"\u0143"],[/\\'\{n\}/g,"\u0144"],[/\\c\{N\}/g,"\u0145"],[/\\c\{n\}/g,"\u0146"],[/\\v\{N\}/g,"\u0147"],[/\\v\{n\}/g,"\u0148"],[/\\NG /g,"\u014A"],[/\\ng /g,"\u014B"],[/\\=\{O\}/g,"\u014C"],[/\\=\{o\}/g,"\u014D"],[/\\u\{O\}/g,"\u014E"],[/\\u\{o\}/g,"\u014F"],[/\\H\{O\}/g,"\u0150"],[/\\H\{o\}/g,"\u0151"],[/\\OE /g,"\u0152"],[/\\oe /g,"\u0153"],[/\\'\{R\}/g,"\u0154"],[/\\'\{r\}/g,"\u0155"],[/\\c\{R\}/g,"\u0156"],[/\\c\{r\}/g,"\u0157"],[/\\v\{R\}/g,"\u0158"],[/\\v\{r\}/g,"\u0159"],[/\\'\{S\}/g,"\u015A"],[/\\'\{s\}/g,"\u015B"],[/\\\^\{S\}/g,"\u015C"],[/\\\^\{s\}/g,"\u015D"],[/\\c\{S\}/g,"\u015E"],[/\\c\{s\}/g,"\u015F"],[/\\v\{S\}/g,"\u0160"],[/\\v\{s\}/g,"\u0161"],[/\\c\{T\}/g,"\u0162"],[/\\c\{t\}/g,"\u0163"],[/\\v\{T\}/g,"\u0164"],[/\\v\{t\}/g,"\u0165"],[/\\~\{U\}/g,"\u0168"],[/\\~\{u\}/g,"\u0169"],[/\\=\{U\}/g,"\u016A"],[/\\=\{u\}/g,"\u016B"],[/\\u\{U\}/g,"\u016C"],[/\\u\{u\}/g,"\u016D"],[/\\r\{U\}/g,"\u016E"],[/\\r\{u\}/g,"\u016F"],[/\\H\{U\}/g,"\u0170"],[/\\H\{u\}/g,"\u0171"],[/\\k\{U\}/g,"\u0172"],[/\\k\{u\}/g,"\u0173"],[/\\\^\{W\}/g,"\u0174"],[/\\\^\{w\}/g,"\u0175"],[/\\\^\{Y\}/g,"\u0176"],[/\\\^\{y\}/g,"\u0177"],[/\\"\{Y\}/g,"\u0178"],[/\\'\{Z\}/g,"\u0179"],[/\\'\{z\}/g,"\u017A"],[/\\.\{Z\}/g,"\u017B"],[/\\.\{z\}/g,"\u017C"],[/\\v\{Z\}/g,"\u017D"],[/\\v\{z\}/g,"\u017E"],[/\\texthvlig /g,"\u0195"],[/\\textnrleg /g,"\u019E"],[/\\eth /g,"\u01AA"],[/\\textdoublepipe /g,"\u01C2"],[/\\'\{g\}/g,"\u01F5"],[/\\Elztrna /g,"\u0250"],[/\\Elztrnsa /g,"\u0252"],[/\\Elzopeno /g,"\u0254"],[/\\Elzrtld /g,"\u0256"],[/\\Elzschwa /g,"\u0259"],[/\\varepsilon /g,"\u025B"],[/\\Elzpgamma /g,"\u0263"],[/\\Elzpbgam /g,"\u0264"],[/\\Elztrnh /g,"\u0265"],[/\\Elzbtdl /g,"\u026C"],[/\\Elzrtll /g,"\u026D"],[/\\Elztrnm /g,"\u026F"],[/\\Elztrnmlr /g,"\u0270"],[/\\Elzltlmr /g,"\u0271"],[/\\Elzltln /g,"\u0272"],[/\\Elzrtln /g,"\u0273"],[/\\Elzclomeg /g,"\u0277"],[/\\textphi /g,"\u0278"],[/\\Elztrnr /g,"\u0279"],[/\\Elztrnrl /g,"\u027A"],[/\\Elzrttrnr /g,"\u027B"],[/\\Elzrl /g,"\u027C"],[/\\Elzrtlr /g,"\u027D"],[/\\Elzfhr /g,"\u027E"],[/\\Elzrtls /g,"\u0282"],[/\\Elzesh /g,"\u0283"],[/\\Elztrnt /g,"\u0287"],[/\\Elzrtlt /g,"\u0288"],[/\\Elzpupsil /g,"\u028A"],[/\\Elzpscrv /g,"\u028B"],[/\\Elzinvv /g,"\u028C"],[/\\Elzinvw /g,"\u028D"],[/\\Elztrny /g,"\u028E"],[/\\Elzrtlz /g,"\u0290"],[/\\Elzyogh /g,"\u0292"],[/\\Elzglst /g,"\u0294"],[/\\Elzreglst /g,"\u0295"],[/\\Elzinglst /g,"\u0296"],[/\\textturnk /g,"\u029E"],[/\\Elzdyogh /g,"\u02A4"],[/\\Elztesh /g,"\u02A7"],[/\\textasciicaron /g,"\u02C7"],[/\\Elzverts /g,"\u02C8"],[/\\Elzverti /g,"\u02CC"],[/\\Elzlmrk /g,"\u02D0"],[/\\Elzhlmrk /g,"\u02D1"],[/\\Elzsbrhr /g,"\u02D2"],[/\\Elzsblhr /g,"\u02D3"],[/\\Elzrais /g,"\u02D4"],[/\\Elzlow /g,"\u02D5"],[/\\textasciibreve /g,"\u02D8"],[/\\textperiodcentered /g,"\u02D9"],[/\\r\{\}/g,"\u02DA"],[/\\k\{\}/g,"\u02DB"],[/\\texttildelow /g,"\u02DC"],[/\\H\{\}/g,"\u02DD"],[/\\tone\{55\}/g,"\u02E5"],[/\\tone\{44\}/g,"\u02E6"],[/\\tone\{33\}/g,"\u02E7"],[/\\tone\{22\}/g,"\u02E8"],[/\\tone\{11\}/g,"\u02E9"],[/\\cyrchar\\C/g,"\u030F"],[/\\Elzpalh /g,"\u0321"],[/\\Elzrh /g,"\u0322"],[/\\Elzsbbrg /g,"\u032A"],[/\\Elzxl /g,"\u0335"],[/\\Elzbar /g,"\u0336"],[/\\'\{A\}/g,"\u0386"],[/\\'\{E\}/g,"\u0388"],[/\\'\{H\}/g,"\u0389"],[/\\'\{\}\{I\}/g,"\u038A"],[/\\'\{\}O/g,"\u038C"],[/\\mathrm\{'Y\}/g,"\u038E"],[/\\mathrm\{'\\Omega\}/g,"\u038F"],[/\\acute\{\\ddot\{\\iota\}\}/g,"\u0390"],[/\\Alpha /g,"\u0391"],[/\\Beta /g,"\u0392"],[/\\Gamma /g,"\u0393"],[/\\Delta /g,"\u0394"],[/\\Epsilon /g,"\u0395"],[/\\Zeta /g,"\u0396"],[/\\Eta /g,"\u0397"],[/\\Theta /g,"\u0398"],[/\\Iota /g,"\u0399"],[/\\Kappa /g,"\u039A"],[/\\Lambda /g,"\u039B"],[/\\Xi /g,"\u039E"],[/\\Pi /g,"\u03A0"],[/\\Rho /g,"\u03A1"],[/\\Sigma /g,"\u03A3"],[/\\Tau /g,"\u03A4"],[/\\Upsilon /g,"\u03A5"],[/\\Phi /g,"\u03A6"],[/\\Chi /g,"\u03A7"],[/\\Psi /g,"\u03A8"],[/\\Omega /g,"\u03A9"],[/\\mathrm\{\\ddot\{I\}\}/g,"\u03AA"],[/\\mathrm\{\\ddot\{Y\}\}/g,"\u03AB"],[/\\'\{\$\\alpha\$\}/g,"\u03AC"],[/\\acute\{\\epsilon\}/g,"\u03AD"],[/\\acute\{\\eta\}/g,"\u03AE"],[/\\acute\{\\iota\}/g,"\u03AF"],[/\\acute\{\\ddot\{\\upsilon\}\}/g,"\u03B0"],[/\\alpha /g,"\u03B1"],[/\\beta /g,"\u03B2"],[/\\gamma /g,"\u03B3"],[/\\delta /g,"\u03B4"],[/\\epsilon /g,"\u03B5"],[/\\zeta /g,"\u03B6"],[/\\eta /g,"\u03B7"],[/\\texttheta /g,"\u03B8"],[/\\iota /g,"\u03B9"],[/\\kappa /g,"\u03BA"],[/\\lambda /g,"\u03BB"],[/\\mu /g,"\u03BC"],[/\\nu /g,"\u03BD"],[/\\xi /g,"\u03BE"],[/\\pi /g,"\u03C0"],[/\\rho /g,"\u03C1"],[/\\varsigma /g,"\u03C2"],[/\\sigma /g,"\u03C3"],[/\\tau /g,"\u03C4"],[/\\upsilon /g,"\u03C5"],[/\\varphi /g,"\u03C6"],[/\\chi /g,"\u03C7"],[/\\psi /g,"\u03C8"],[/\\omega /g,"\u03C9"],[/\\ddot\{\\iota\}/g,"\u03CA"],[/\\ddot\{\\upsilon\}/g,"\u03CB"],[/\\'\{o\}/g,"\u03CC"],[/\\acute\{\\upsilon\}/g,"\u03CD"],[/\\acute\{\\omega\}/g,"\u03CE"],[/\\Pisymbol\{ppi022\}\{87\}/g,"\u03D0"],[/\\textvartheta /g,"\u03D1"],[/\\Upsilon /g,"\u03D2"],[/\\phi /g,"\u03D5"],[/\\varpi /g,"\u03D6"],[/\\Stigma /g,"\u03DA"],[/\\Digamma /g,"\u03DC"],[/\\digamma /g,"\u03DD"],[/\\Koppa /g,"\u03DE"],[/\\Sampi /g,"\u03E0"],[/\\varkappa /g,"\u03F0"],[/\\varrho /g,"\u03F1"],[/\\textTheta /g,"\u03F4"],[/\\backepsilon /g,"\u03F6"],[/\\cyrchar\\CYRYO /g,"\u0401"],[/\\cyrchar\\CYRDJE /g,"\u0402"],[/\\cyrchar\{\\'\\CYRG\}/g,"\u0403"],[/\\cyrchar\\CYRIE /g,"\u0404"],[/\\cyrchar\\CYRDZE /g,"\u0405"],[/\\cyrchar\\CYRII /g,"\u0406"],[/\\cyrchar\\CYRYI /g,"\u0407"],[/\\cyrchar\\CYRJE /g,"\u0408"],[/\\cyrchar\\CYRLJE /g,"\u0409"],[/\\cyrchar\\CYRNJE /g,"\u040A"],[/\\cyrchar\\CYRTSHE /g,"\u040B"],[/\\cyrchar\{\\'\\CYRK\}/g,"\u040C"],[/\\cyrchar\\CYRUSHRT /g,"\u040E"],[/\\cyrchar\\CYRDZHE /g,"\u040F"],[/\\cyrchar\\CYRA /g,"\u0410"],[/\\cyrchar\\CYRB /g,"\u0411"],[/\\cyrchar\\CYRV /g,"\u0412"],[/\\cyrchar\\CYRG /g,"\u0413"],[/\\cyrchar\\CYRD /g,"\u0414"],[/\\cyrchar\\CYRE /g,"\u0415"],[/\\cyrchar\\CYRZH /g,"\u0416"],[/\\cyrchar\\CYRZ /g,"\u0417"],[/\\cyrchar\\CYRI /g,"\u0418"],[/\\cyrchar\\CYRISHRT /g,"\u0419"],[/\\cyrchar\\CYRK /g,"\u041A"],[/\\cyrchar\\CYRL /g,"\u041B"],[/\\cyrchar\\CYRM /g,"\u041C"],[/\\cyrchar\\CYRN /g,"\u041D"],[/\\cyrchar\\CYRO /g,"\u041E"],[/\\cyrchar\\CYRP /g,"\u041F"],[/\\cyrchar\\CYRR /g,"\u0420"],[/\\cyrchar\\CYRS /g,"\u0421"],[/\\cyrchar\\CYRT /g,"\u0422"],[/\\cyrchar\\CYRU /g,"\u0423"],[/\\cyrchar\\CYRF /g,"\u0424"],[/\\cyrchar\\CYRH /g,"\u0425"],[/\\cyrchar\\CYRC /g,"\u0426"],[/\\cyrchar\\CYRCH /g,"\u0427"],[/\\cyrchar\\CYRSH /g,"\u0428"],[/\\cyrchar\\CYRSHCH /g,"\u0429"],[/\\cyrchar\\CYRHRDSN /g,"\u042A"],[/\\cyrchar\\CYRERY /g,"\u042B"],[/\\cyrchar\\CYRSFTSN /g,"\u042C"],[/\\cyrchar\\CYREREV /g,"\u042D"],[/\\cyrchar\\CYRYU /g,"\u042E"],[/\\cyrchar\\CYRYA /g,"\u042F"],[/\\cyrchar\\cyra /g,"\u0430"],[/\\cyrchar\\cyrb /g,"\u0431"],[/\\cyrchar\\cyrv /g,"\u0432"],[/\\cyrchar\\cyrg /g,"\u0433"],[/\\cyrchar\\cyrd /g,"\u0434"],[/\\cyrchar\\cyre /g,"\u0435"],[/\\cyrchar\\cyrzh /g,"\u0436"],[/\\cyrchar\\cyrz /g,"\u0437"],[/\\cyrchar\\cyri /g,"\u0438"],[/\\cyrchar\\cyrishrt /g,"\u0439"],[/\\cyrchar\\cyrk /g,"\u043A"],[/\\cyrchar\\cyrl /g,"\u043B"],[/\\cyrchar\\cyrm /g,"\u043C"],[/\\cyrchar\\cyrn /g,"\u043D"],[/\\cyrchar\\cyro /g,"\u043E"],[/\\cyrchar\\cyrp /g,"\u043F"],[/\\cyrchar\\cyrr /g,"\u0440"],[/\\cyrchar\\cyrs /g,"\u0441"],[/\\cyrchar\\cyrt /g,"\u0442"],[/\\cyrchar\\cyru /g,"\u0443"],[/\\cyrchar\\cyrf /g,"\u0444"],[/\\cyrchar\\cyrh /g,"\u0445"],[/\\cyrchar\\cyrc /g,"\u0446"],[/\\cyrchar\\cyrch /g,"\u0447"],[/\\cyrchar\\cyrsh /g,"\u0448"],[/\\cyrchar\\cyrshch /g,"\u0449"],[/\\cyrchar\\cyrhrdsn /g,"\u044A"],[/\\cyrchar\\cyrery /g,"\u044B"],[/\\cyrchar\\cyrsftsn /g,"\u044C"],[/\\cyrchar\\cyrerev /g,"\u044D"],[/\\cyrchar\\cyryu /g,"\u044E"],[/\\cyrchar\\cyrya /g,"\u044F"],[/\\cyrchar\\cyryo /g,"\u0451"],[/\\cyrchar\\cyrdje /g,"\u0452"],[/\\cyrchar\{\\'\\cyrg\}/g,"\u0453"],[/\\cyrchar\\cyrie /g,"\u0454"],[/\\cyrchar\\cyrdze /g,"\u0455"],[/\\cyrchar\\cyrii /g,"\u0456"],[/\\cyrchar\\cyryi /g,"\u0457"],[/\\cyrchar\\cyrje /g,"\u0458"],[/\\cyrchar\\cyrlje /g,"\u0459"],[/\\cyrchar\\cyrnje /g,"\u045A"],[/\\cyrchar\\cyrtshe /g,"\u045B"],[/\\cyrchar\{\\'\\cyrk\}/g,"\u045C"],[/\\cyrchar\\cyrushrt /g,"\u045E"],[/\\cyrchar\\cyrdzhe /g,"\u045F"],[/\\cyrchar\\CYROMEGA /g,"\u0460"],[/\\cyrchar\\cyromega /g,"\u0461"],[/\\cyrchar\\CYRYAT /g,"\u0462"],[/\\cyrchar\\CYRIOTE /g,"\u0464"],[/\\cyrchar\\cyriote /g,"\u0465"],[/\\cyrchar\\CYRLYUS /g,"\u0466"],[/\\cyrchar\\cyrlyus /g,"\u0467"],[/\\cyrchar\\CYRIOTLYUS /g,"\u0468"],[/\\cyrchar\\cyriotlyus /g,"\u0469"],[/\\cyrchar\\CYRBYUS /g,"\u046A"],[/\\cyrchar\\CYRIOTBYUS /g,"\u046C"],[/\\cyrchar\\cyriotbyus /g,"\u046D"],[/\\cyrchar\\CYRKSI /g,"\u046E"],[/\\cyrchar\\cyrksi /g,"\u046F"],[/\\cyrchar\\CYRPSI /g,"\u0470"],[/\\cyrchar\\cyrpsi /g,"\u0471"],[/\\cyrchar\\CYRFITA /g,"\u0472"],[/\\cyrchar\\CYRIZH /g,"\u0474"],[/\\cyrchar\\CYRUK /g,"\u0478"],[/\\cyrchar\\cyruk /g,"\u0479"],[/\\cyrchar\\CYROMEGARND /g,"\u047A"],[/\\cyrchar\\cyromegarnd /g,"\u047B"],[/\\cyrchar\\CYROMEGATITLO /g,"\u047C"],[/\\cyrchar\\cyromegatitlo /g,"\u047D"],[/\\cyrchar\\CYROT /g,"\u047E"],[/\\cyrchar\\cyrot /g,"\u047F"],[/\\cyrchar\\CYRKOPPA /g,"\u0480"],[/\\cyrchar\\cyrkoppa /g,"\u0481"],[/\\cyrchar\\cyrthousands /g,"\u0482"],[/\\cyrchar\\cyrhundredthousands /g,"\u0488"],[/\\cyrchar\\cyrmillions /g,"\u0489"],[/\\cyrchar\\CYRSEMISFTSN /g,"\u048C"],[/\\cyrchar\\cyrsemisftsn /g,"\u048D"],[/\\cyrchar\\CYRRTICK /g,"\u048E"],[/\\cyrchar\\cyrrtick /g,"\u048F"],[/\\cyrchar\\CYRGUP /g,"\u0490"],[/\\cyrchar\\cyrgup /g,"\u0491"],[/\\cyrchar\\CYRGHCRS /g,"\u0492"],[/\\cyrchar\\cyrghcrs /g,"\u0493"],[/\\cyrchar\\CYRGHK /g,"\u0494"],[/\\cyrchar\\cyrghk /g,"\u0495"],[/\\cyrchar\\CYRZHDSC /g,"\u0496"],[/\\cyrchar\\cyrzhdsc /g,"\u0497"],[/\\cyrchar\\CYRZDSC /g,"\u0498"],[/\\cyrchar\\cyrzdsc /g,"\u0499"],[/\\cyrchar\\CYRKDSC /g,"\u049A"],[/\\cyrchar\\cyrkdsc /g,"\u049B"],[/\\cyrchar\\CYRKVCRS /g,"\u049C"],[/\\cyrchar\\cyrkvcrs /g,"\u049D"],[/\\cyrchar\\CYRKHCRS /g,"\u049E"],[/\\cyrchar\\cyrkhcrs /g,"\u049F"],[/\\cyrchar\\CYRKBEAK /g,"\u04A0"],[/\\cyrchar\\cyrkbeak /g,"\u04A1"],[/\\cyrchar\\CYRNDSC /g,"\u04A2"],[/\\cyrchar\\cyrndsc /g,"\u04A3"],[/\\cyrchar\\CYRNG /g,"\u04A4"],[/\\cyrchar\\cyrng /g,"\u04A5"],[/\\cyrchar\\CYRPHK /g,"\u04A6"],[/\\cyrchar\\cyrphk /g,"\u04A7"],[/\\cyrchar\\CYRABHHA /g,"\u04A8"],[/\\cyrchar\\cyrabhha /g,"\u04A9"],[/\\cyrchar\\CYRSDSC /g,"\u04AA"],[/\\cyrchar\\cyrsdsc /g,"\u04AB"],[/\\cyrchar\\CYRTDSC /g,"\u04AC"],[/\\cyrchar\\cyrtdsc /g,"\u04AD"],[/\\cyrchar\\CYRY /g,"\u04AE"],[/\\cyrchar\\cyry /g,"\u04AF"],[/\\cyrchar\\CYRYHCRS /g,"\u04B0"],[/\\cyrchar\\cyryhcrs /g,"\u04B1"],[/\\cyrchar\\CYRHDSC /g,"\u04B2"],[/\\cyrchar\\cyrhdsc /g,"\u04B3"],[/\\cyrchar\\CYRTETSE /g,"\u04B4"],[/\\cyrchar\\cyrtetse /g,"\u04B5"],[/\\cyrchar\\CYRCHRDSC /g,"\u04B6"],[/\\cyrchar\\cyrchrdsc /g,"\u04B7"],[/\\cyrchar\\CYRCHVCRS /g,"\u04B8"],[/\\cyrchar\\cyrchvcrs /g,"\u04B9"],[/\\cyrchar\\CYRSHHA /g,"\u04BA"],[/\\cyrchar\\cyrshha /g,"\u04BB"],[/\\cyrchar\\CYRABHCH /g,"\u04BC"],[/\\cyrchar\\cyrabhch /g,"\u04BD"],[/\\cyrchar\\CYRABHCHDSC /g,"\u04BE"],[/\\cyrchar\\cyrabhchdsc /g,"\u04BF"],[/\\cyrchar\\CYRpalochka /g,"\u04C0"],[/\\cyrchar\\CYRKHK /g,"\u04C3"],[/\\cyrchar\\cyrkhk /g,"\u04C4"],[/\\cyrchar\\CYRNHK /g,"\u04C7"],[/\\cyrchar\\cyrnhk /g,"\u04C8"],[/\\cyrchar\\CYRCHLDSC /g,"\u04CB"],[/\\cyrchar\\cyrchldsc /g,"\u04CC"],[/\\cyrchar\\CYRAE /g,"\u04D4"],[/\\cyrchar\\cyrae /g,"\u04D5"],[/\\cyrchar\\CYRSCHWA /g,"\u04D8"],[/\\cyrchar\\cyrschwa /g,"\u04D9"],[/\\cyrchar\\CYRABHDZE /g,"\u04E0"],[/\\cyrchar\\cyrabhdze /g,"\u04E1"],[/\\cyrchar\\CYROTLD /g,"\u04E8"],[/\\cyrchar\\cyrotld /g,"\u04E9"],[/\\hspace\{0.6em\}/g,"\u2002"],[/\\hspace\{1em\}/g,"\u2003"],[/\\hspace\{0.33em\}/g,"\u2004"],[/\\hspace\{0.25em\}/g,"\u2005"],[/\\hspace\{0.166em\}/g,"\u2006"],[/\\hphantom\{0\}/g,"\u2007"],[/\\hphantom\{,\}/g,"\u2008"],[/\\hspace\{0.167em\}/g,"\u2009"],[/\\mkern1mu /g,"\u200A"],[/\\textendash /g,"\u2013"],[/\\textemdash /g,"\u2014"],[/\\rule\{1em\}\{1pt\}/g,"\u2015"],[/\\Vert /g,"\u2016"],[/\\Elzreapos /g,"\u201B"],[/\\textquotedblleft /g,"\u201C"],[/\\textquotedblright /g,"\u201D"],[/\\textdagger /g,"\u2020"],[/\\textdaggerdbl /g,"\u2021"],[/\\textbullet /g,"\u2022"],[/\\ldots /g,"\u2026"],[/\\textperthousand /g,"\u2030"],[/\\textpertenthousand /g,"\u2031"],[/\\backprime /g,"\u2035"],[/\\guilsinglleft /g,"\u2039"],[/\\guilsinglright /g,"\u203A"],[/\\mkern4mu /g,"\u205F"],[/\\nolinebreak /g,"\u2060"],[/\\ensuremath\{\\Elzpes\}/g,"\u20A7"],[/\\mbox\{\\texteuro\} /g,"\u20AC"],[/\\dddot /g,"\u20DB"],[/\\ddddot /g,"\u20DC"],[/\\mathbb\{C\}/g,"\u2102"],[/\\mathscr\{g\}/g,"\u210A"],[/\\mathscr\{H\}/g,"\u210B"],[/\\mathfrak\{H\}/g,"\u210C"],[/\\mathbb\{H\}/g,"\u210D"],[/\\hslash /g,"\u210F"],[/\\mathscr\{I\}/g,"\u2110"],[/\\mathfrak\{I\}/g,"\u2111"],[/\\mathscr\{L\}/g,"\u2112"],[/\\mathscr\{l\}/g,"\u2113"],[/\\mathbb\{N\}/g,"\u2115"],[/\\cyrchar\\textnumero /g,"\u2116"],[/\\wp /g,"\u2118"],[/\\mathbb\{P\}/g,"\u2119"],[/\\mathbb\{Q\}/g,"\u211A"],[/\\mathscr\{R\}/g,"\u211B"],[/\\mathfrak\{R\}/g,"\u211C"],[/\\mathbb\{R\}/g,"\u211D"],[/\\Elzxrat /g,"\u211E"],[/\\texttrademark /g,"\u2122"],[/\\mathbb\{Z\}/g,"\u2124"],[/\\Omega /g,"\u2126"],[/\\mho /g,"\u2127"],[/\\mathfrak\{Z\}/g,"\u2128"],[/\\ElsevierGlyph\{2129\}/g,"\u2129"],[/\\AA /g,"\u212B"],[/\\mathscr\{B\}/g,"\u212C"],[/\\mathfrak\{C\}/g,"\u212D"],[/\\mathscr\{e\}/g,"\u212F"],[/\\mathscr\{E\}/g,"\u2130"],[/\\mathscr\{F\}/g,"\u2131"],[/\\mathscr\{M\}/g,"\u2133"],[/\\mathscr\{o\}/g,"\u2134"],[/\\aleph /g,"\u2135"],[/\\beth /g,"\u2136"],[/\\gimel /g,"\u2137"],[/\\daleth /g,"\u2138"],[/\\textfrac\{1\}\{3\}/g,"\u2153"],[/\\textfrac\{2\}\{3\}/g,"\u2154"],[/\\textfrac\{1\}\{5\}/g,"\u2155"],[/\\textfrac\{2\}\{5\}/g,"\u2156"],[/\\textfrac\{3\}\{5\}/g,"\u2157"],[/\\textfrac\{4\}\{5\}/g,"\u2158"],[/\\textfrac\{1\}\{6\}/g,"\u2159"],[/\\textfrac\{5\}\{6\}/g,"\u215A"],[/\\textfrac\{1\}\{8\}/g,"\u215B"],[/\\textfrac\{3\}\{8\}/g,"\u215C"],[/\\textfrac\{5\}\{8\}/g,"\u215D"],[/\\textfrac\{7\}\{8\}/g,"\u215E"],[/\\leftarrow /g,"\u2190"],[/\\uparrow /g,"\u2191"],[/\\rightarrow /g,"\u2192"],[/\\downarrow /g,"\u2193"],[/\\leftrightarrow /g,"\u2194"],[/\\updownarrow /g,"\u2195"],[/\\nwarrow /g,"\u2196"],[/\\nearrow /g,"\u2197"],[/\\searrow /g,"\u2198"],[/\\swarrow /g,"\u2199"],[/\\nleftarrow /g,"\u219A"],[/\\nrightarrow /g,"\u219B"],[/\\arrowwaveright /g,"\u219C"],[/\\arrowwaveright /g,"\u219D"],[/\\twoheadleftarrow /g,"\u219E"],[/\\twoheadrightarrow /g,"\u21A0"],[/\\leftarrowtail /g,"\u21A2"],[/\\rightarrowtail /g,"\u21A3"],[/\\mapsto /g,"\u21A6"],[/\\hookleftarrow /g,"\u21A9"],[/\\hookrightarrow /g,"\u21AA"],[/\\looparrowleft /g,"\u21AB"],[/\\looparrowright /g,"\u21AC"],[/\\leftrightsquigarrow /g,"\u21AD"],[/\\nleftrightarrow /g,"\u21AE"],[/\\Lsh /g,"\u21B0"],[/\\Rsh /g,"\u21B1"],[/\\ElsevierGlyph\{21B3\}/g,"\u21B3"],[/\\curvearrowleft /g,"\u21B6"],[/\\curvearrowright /g,"\u21B7"],[/\\circlearrowleft /g,"\u21BA"],[/\\circlearrowright /g,"\u21BB"],[/\\leftharpoonup /g,"\u21BC"],[/\\leftharpoondown /g,"\u21BD"],[/\\upharpoonright /g,"\u21BE"],[/\\upharpoonleft /g,"\u21BF"],[/\\rightharpoonup /g,"\u21C0"],[/\\rightharpoondown /g,"\u21C1"],[/\\downharpoonright /g,"\u21C2"],[/\\downharpoonleft /g,"\u21C3"],[/\\rightleftarrows /g,"\u21C4"],[/\\dblarrowupdown /g,"\u21C5"],[/\\leftrightarrows /g,"\u21C6"],[/\\leftleftarrows /g,"\u21C7"],[/\\upuparrows /g,"\u21C8"],[/\\rightrightarrows /g,"\u21C9"],[/\\downdownarrows /g,"\u21CA"],[/\\leftrightharpoons /g,"\u21CB"],[/\\rightleftharpoons /g,"\u21CC"],[/\\nLeftarrow /g,"\u21CD"],[/\\nLeftrightarrow /g,"\u21CE"],[/\\nRightarrow /g,"\u21CF"],[/\\Leftarrow /g,"\u21D0"],[/\\Uparrow /g,"\u21D1"],[/\\Rightarrow /g,"\u21D2"],[/\\Downarrow /g,"\u21D3"],[/\\Leftrightarrow /g,"\u21D4"],[/\\Updownarrow /g,"\u21D5"],[/\\Lleftarrow /g,"\u21DA"],[/\\Rrightarrow /g,"\u21DB"],[/\\rightsquigarrow /g,"\u21DD"],[/\\DownArrowUpArrow /g,"\u21F5"],[/\\forall /g,"\u2200"],[/\\complement /g,"\u2201"],[/\\partial /g,"\u2202"],[/\\exists /g,"\u2203"],[/\\nexists /g,"\u2204"],[/\\varnothing /g,"\u2205"],[/\\nabla /g,"\u2207"],[/\\in /g,"\u2208"],[/\\not\\in /g,"\u2209"],[/\\ni /g,"\u220B"],[/\\not\\ni /g,"\u220C"],[/\\prod /g,"\u220F"],[/\\coprod /g,"\u2210"],[/\\sum /g,"\u2211"],[/\\mp /g,"\u2213"],[/\\dotplus /g,"\u2214"],[/\\setminus /g,"\u2216"],[/\\circ /g,"\u2218"],[/\\bullet /g,"\u2219"],[/\\surd /g,"\u221A"],[/\\propto /g,"\u221D"],[/\\infty /g,"\u221E"],[/\\rightangle /g,"\u221F"],[/\\angle /g,"\u2220"],[/\\measuredangle /g,"\u2221"],[/\\sphericalangle /g,"\u2222"],[/\\mid /g,"\u2223"],[/\\nmid /g,"\u2224"],[/\\parallel /g,"\u2225"],[/\\nparallel /g,"\u2226"],[/\\wedge /g,"\u2227"],[/\\vee /g,"\u2228"],[/\\cap /g,"\u2229"],[/\\cup /g,"\u222A"],[/\\int /g,"\u222B"],[/\\int\\!\\int /g,"\u222C"],[/\\int\\!\\int\\!\\int /g,"\u222D"],[/\\oint /g,"\u222E"],[/\\surfintegral /g,"\u222F"],[/\\volintegral /g,"\u2230"],[/\\clwintegral /g,"\u2231"],[/\\ElsevierGlyph\{2232\}/g,"\u2232"],[/\\ElsevierGlyph\{2233\}/g,"\u2233"],[/\\therefore /g,"\u2234"],[/\\because /g,"\u2235"],[/\\Colon /g,"\u2237"],[/\\ElsevierGlyph\{2238\}/g,"\u2238"],[/\\mathbin\{\{:\}\\!\\!\{\-\}\\!\\!\{:\}\}/g,"\u223A"],[/\\homothetic /g,"\u223B"],[/\\sim /g,"\u223C"],[/\\backsim /g,"\u223D"],[/\\lazysinv /g,"\u223E"],[/\\wr /g,"\u2240"],[/\\not\\sim /g,"\u2241"],[/\\ElsevierGlyph\{2242\}/g,"\u2242"],[/\\NotEqualTilde /g,"\u2242-00338"],[/\\simeq /g,"\u2243"],[/\\not\\simeq /g,"\u2244"],[/\\cong /g,"\u2245"],[/\\approxnotequal /g,"\u2246"],[/\\not\\cong /g,"\u2247"],[/\\approx /g,"\u2248"],[/\\not\\approx /g,"\u2249"],[/\\approxeq /g,"\u224A"],[/\\tildetrpl /g,"\u224B"],[/\\not\\apid /g,"\u224B-00338"],[/\\allequal /g,"\u224C"],[/\\asymp /g,"\u224D"],[/\\Bumpeq /g,"\u224E"],[/\\NotHumpDownHump /g,"\u224E-00338"],[/\\bumpeq /g,"\u224F"],[/\\NotHumpEqual /g,"\u224F-00338"],[/\\doteq /g,"\u2250"],[/\\not\\doteq/g,"\u2250-00338"],[/\\doteqdot /g,"\u2251"],[/\\fallingdotseq /g,"\u2252"],[/\\risingdotseq /g,"\u2253"],[/\\eqcirc /g,"\u2256"],[/\\circeq /g,"\u2257"],[/\\estimates /g,"\u2259"],[/\\ElsevierGlyph\{225A\}/g,"\u225A"],[/\\starequal /g,"\u225B"],[/\\triangleq /g,"\u225C"],[/\\ElsevierGlyph\{225F\}/g,"\u225F"],[/\\not =/g,"\u2260"],[/\\equiv /g,"\u2261"],[/\\not\\equiv /g,"\u2262"],[/\\leq /g,"\u2264"],[/\\geq /g,"\u2265"],[/\\leqq /g,"\u2266"],[/\\geqq /g,"\u2267"],[/\\lneqq /g,"\u2268"],[/\\lvertneqq /g,"\u2268-0FE00"],[/\\gneqq /g,"\u2269"],[/\\gvertneqq /g,"\u2269-0FE00"],[/\\ll /g,"\u226A"],[/\\NotLessLess /g,"\u226A-00338"],[/\\gg /g,"\u226B"],[/\\NotGreaterGreater /g,"\u226B-00338"],[/\\between /g,"\u226C"],[/\\not\\kern\-0.3em\\times /g,"\u226D"],[/\\not</g,"\u226E"],[/\\not>/g,"\u226F"],[/\\not\\leq /g,"\u2270"],[/\\not\\geq /g,"\u2271"],[/\\lessequivlnt /g,"\u2272"],[/\\greaterequivlnt /g,"\u2273"],[/\\ElsevierGlyph\{2274\}/g,"\u2274"],[/\\ElsevierGlyph\{2275\}/g,"\u2275"],[/\\lessgtr /g,"\u2276"],[/\\gtrless /g,"\u2277"],[/\\notlessgreater /g,"\u2278"],[/\\notgreaterless /g,"\u2279"],[/\\prec /g,"\u227A"],[/\\succ /g,"\u227B"],[/\\preccurlyeq /g,"\u227C"],[/\\succcurlyeq /g,"\u227D"],[/\\precapprox /g,"\u227E"],[/\\NotPrecedesTilde /g,"\u227E-00338"],[/\\succapprox /g,"\u227F"],[/\\NotSucceedsTilde /g,"\u227F-00338"],[/\\not\\prec /g,"\u2280"],[/\\not\\succ /g,"\u2281"],[/\\subset /g,"\u2282"],[/\\supset /g,"\u2283"],[/\\not\\subset /g,"\u2284"],[/\\not\\supset /g,"\u2285"],[/\\subseteq /g,"\u2286"],[/\\supseteq /g,"\u2287"],[/\\not\\subseteq /g,"\u2288"],[/\\not\\supseteq /g,"\u2289"],[/\\subsetneq /g,"\u228A"],[/\\varsubsetneqq /g,"\u228A-0FE00"],[/\\supsetneq /g,"\u228B"],[/\\varsupsetneq /g,"\u228B-0FE00"],[/\\uplus /g,"\u228E"],[/\\sqsubset /g,"\u228F"],[/\\NotSquareSubset /g,"\u228F-00338"],[/\\sqsupset /g,"\u2290"],[/\\NotSquareSuperset /g,"\u2290-00338"],[/\\sqsubseteq /g,"\u2291"],[/\\sqsupseteq /g,"\u2292"],[/\\sqcap /g,"\u2293"],[/\\sqcup /g,"\u2294"],[/\\oplus /g,"\u2295"],[/\\ominus /g,"\u2296"],[/\\otimes /g,"\u2297"],[/\\oslash /g,"\u2298"],[/\\odot /g,"\u2299"],[/\\circledcirc /g,"\u229A"],[/\\circledast /g,"\u229B"],[/\\circleddash /g,"\u229D"],[/\\boxplus /g,"\u229E"],[/\\boxminus /g,"\u229F"],[/\\boxtimes /g,"\u22A0"],[/\\boxdot /g,"\u22A1"],[/\\vdash /g,"\u22A2"],[/\\dashv /g,"\u22A3"],[/\\top /g,"\u22A4"],[/\\perp /g,"\u22A5"],[/\\truestate /g,"\u22A7"],[/\\forcesextra /g,"\u22A8"],[/\\Vdash /g,"\u22A9"],[/\\Vvdash /g,"\u22AA"],[/\\VDash /g,"\u22AB"],[/\\nvdash /g,"\u22AC"],[/\\nvDash /g,"\u22AD"],[/\\nVdash /g,"\u22AE"],[/\\nVDash /g,"\u22AF"],[/\\vartriangleleft /g,"\u22B2"],[/\\vartriangleright /g,"\u22B3"],[/\\trianglelefteq /g,"\u22B4"],[/\\trianglerighteq /g,"\u22B5"],[/\\original /g,"\u22B6"],[/\\image /g,"\u22B7"],[/\\multimap /g,"\u22B8"],[/\\hermitconjmatrix /g,"\u22B9"],[/\\intercal /g,"\u22BA"],[/\\veebar /g,"\u22BB"],[/\\rightanglearc /g,"\u22BE"],[/\\ElsevierGlyph\{22C0\}/g,"\u22C0"],[/\\ElsevierGlyph\{22C1\}/g,"\u22C1"],[/\\bigcap /g,"\u22C2"],[/\\bigcup /g,"\u22C3"],[/\\diamond /g,"\u22C4"],[/\\cdot /g,"\u22C5"],[/\\star /g,"\u22C6"],[/\\divideontimes /g,"\u22C7"],[/\\bowtie /g,"\u22C8"],[/\\ltimes /g,"\u22C9"],[/\\rtimes /g,"\u22CA"],[/\\leftthreetimes /g,"\u22CB"],[/\\rightthreetimes /g,"\u22CC"],[/\\backsimeq /g,"\u22CD"],[/\\curlyvee /g,"\u22CE"],[/\\curlywedge /g,"\u22CF"],[/\\Subset /g,"\u22D0"],[/\\Supset /g,"\u22D1"],[/\\Cap /g,"\u22D2"],[/\\Cup /g,"\u22D3"],[/\\pitchfork /g,"\u22D4"],[/\\lessdot /g,"\u22D6"],[/\\gtrdot /g,"\u22D7"],[/\\verymuchless /g,"\u22D8"],[/\\verymuchgreater /g,"\u22D9"],[/\\lesseqgtr /g,"\u22DA"],[/\\gtreqless /g,"\u22DB"],[/\\curlyeqprec /g,"\u22DE"],[/\\curlyeqsucc /g,"\u22DF"],[/\\not\\sqsubseteq /g,"\u22E2"],[/\\not\\sqsupseteq /g,"\u22E3"],[/\\Elzsqspne /g,"\u22E5"],[/\\lnsim /g,"\u22E6"],[/\\gnsim /g,"\u22E7"],[/\\precedesnotsimilar /g,"\u22E8"],[/\\succnsim /g,"\u22E9"],[/\\ntriangleleft /g,"\u22EA"],[/\\ntriangleright /g,"\u22EB"],[/\\ntrianglelefteq /g,"\u22EC"],[/\\ntrianglerighteq /g,"\u22ED"],[/\\vdots /g,"\u22EE"],[/\\cdots /g,"\u22EF"],[/\\upslopeellipsis /g,"\u22F0"],[/\\downslopeellipsis /g,"\u22F1"],[/\\barwedge /g,"\u2305"],[/\\perspcorrespond /g,"\u2306"],[/\\lceil /g,"\u2308"],[/\\rceil /g,"\u2309"],[/\\lfloor /g,"\u230A"],[/\\rfloor /g,"\u230B"],[/\\recorder /g,"\u2315"],[/\\mathchar"2208/g,"\u2316"],[/\\ulcorner /g,"\u231C"],[/\\urcorner /g,"\u231D"],[/\\llcorner /g,"\u231E"],[/\\lrcorner /g,"\u231F"],[/\\frown /g,"\u2322"],[/\\smile /g,"\u2323"],[/\\langle /g,"\u2329"],[/\\rangle /g,"\u232A"],[/\\ElsevierGlyph\{E838\}/g,"\u233D"],[/\\Elzdlcorn /g,"\u23A3"],[/\\lmoustache /g,"\u23B0"],[/\\rmoustache /g,"\u23B1"],[/\\textvisiblespace /g,"\u2423"],[/\\ding\{172\}/g,"\u2460"],[/\\ding\{173\}/g,"\u2461"],[/\\ding\{174\}/g,"\u2462"],[/\\ding\{175\}/g,"\u2463"],[/\\ding\{176\}/g,"\u2464"],[/\\ding\{177\}/g,"\u2465"],[/\\ding\{178\}/g,"\u2466"],[/\\ding\{179\}/g,"\u2467"],[/\\ding\{180\}/g,"\u2468"],[/\\ding\{181\}/g,"\u2469"],[/\\circledS /g,"\u24C8"],[/\\Elzdshfnc /g,"\u2506"],[/\\Elzsqfnw /g,"\u2519"],[/\\diagup /g,"\u2571"],[/\\ding\{110\}/g,"\u25A0"],[/\\square /g,"\u25A1"],[/\\blacksquare /g,"\u25AA"],[/\\fbox\{~~\}/g,"\u25AD"],[/\\Elzvrecto /g,"\u25AF"],[/\\ElsevierGlyph\{E381\}/g,"\u25B1"],[/\\ding\{115\}/g,"\u25B2"],[/\\bigtriangleup /g,"\u25B3"],[/\\blacktriangle /g,"\u25B4"],[/\\vartriangle /g,"\u25B5"],[/\\blacktriangleright /g,"\u25B8"],[/\\triangleright /g,"\u25B9"],[/\\ding\{116\}/g,"\u25BC"],[/\\bigtriangledown /g,"\u25BD"],[/\\blacktriangledown /g,"\u25BE"],[/\\triangledown /g,"\u25BF"],[/\\blacktriangleleft /g,"\u25C2"],[/\\triangleleft /g,"\u25C3"],[/\\ding\{117\}/g,"\u25C6"],[/\\lozenge /g,"\u25CA"],[/\\bigcirc /g,"\u25CB"],[/\\ding\{108\}/g,"\u25CF"],[/\\Elzcirfl /g,"\u25D0"],[/\\Elzcirfr /g,"\u25D1"],[/\\Elzcirfb /g,"\u25D2"],[/\\ding\{119\}/g,"\u25D7"],[/\\Elzrvbull /g,"\u25D8"],[/\\Elzsqfl /g,"\u25E7"],[/\\Elzsqfr /g,"\u25E8"],[/\\Elzsqfse /g,"\u25EA"],[/\\bigcirc /g,"\u25EF"],[/\\ding\{72\}/g,"\u2605"],[/\\ding\{73\}/g,"\u2606"],[/\\ding\{37\}/g,"\u260E"],[/\\ding\{42\}/g,"\u261B"],[/\\ding\{43\}/g,"\u261E"],[/\\rightmoon /g,"\u263E"],[/\\mercury /g,"\u263F"],[/\\venus /g,"\u2640"],[/\\male /g,"\u2642"],[/\\jupiter /g,"\u2643"],[/\\saturn /g,"\u2644"],[/\\uranus /g,"\u2645"],[/\\neptune /g,"\u2646"],[/\\pluto /g,"\u2647"],[/\\aries /g,"\u2648"],[/\\taurus /g,"\u2649"],[/\\gemini /g,"\u264A"],[/\\cancer /g,"\u264B"],[/\\leo /g,"\u264C"],[/\\virgo /g,"\u264D"],[/\\libra /g,"\u264E"],[/\\scorpio /g,"\u264F"],[/\\sagittarius /g,"\u2650"],[/\\capricornus /g,"\u2651"],[/\\aquarius /g,"\u2652"],[/\\pisces /g,"\u2653"],[/\\ding\{171\}/g,"\u2660"],[/\\diamond /g,"\u2662"],[/\\ding\{168\}/g,"\u2663"],[/\\ding\{170\}/g,"\u2665"],[/\\ding\{169\}/g,"\u2666"],[/\\quarternote /g,"\u2669"],[/\\eighthnote /g,"\u266A"],[/\\flat /g,"\u266D"],[/\\natural /g,"\u266E"],[/\\sharp /g,"\u266F"],[/\\ding\{33\}/g,"\u2701"],[/\\ding\{34\}/g,"\u2702"],[/\\ding\{35\}/g,"\u2703"],[/\\ding\{36\}/g,"\u2704"],[/\\ding\{38\}/g,"\u2706"],[/\\ding\{39\}/g,"\u2707"],[/\\ding\{40\}/g,"\u2708"],[/\\ding\{41\}/g,"\u2709"],[/\\ding\{44\}/g,"\u270C"],[/\\ding\{45\}/g,"\u270D"],[/\\ding\{46\}/g,"\u270E"],[/\\ding\{47\}/g,"\u270F"],[/\\ding\{48\}/g,"\u2710"],[/\\ding\{49\}/g,"\u2711"],[/\\ding\{50\}/g,"\u2712"],[/\\ding\{51\}/g,"\u2713"],[/\\ding\{52\}/g,"\u2714"],[/\\ding\{53\}/g,"\u2715"],[/\\ding\{54\}/g,"\u2716"],[/\\ding\{55\}/g,"\u2717"],[/\\ding\{56\}/g,"\u2718"],[/\\ding\{57\}/g,"\u2719"],[/\\ding\{58\}/g,"\u271A"],[/\\ding\{59\}/g,"\u271B"],[/\\ding\{60\}/g,"\u271C"],[/\\ding\{61\}/g,"\u271D"],[/\\ding\{62\}/g,"\u271E"],[/\\ding\{63\}/g,"\u271F"],[/\\ding\{64\}/g,"\u2720"],[/\\ding\{65\}/g,"\u2721"],[/\\ding\{66\}/g,"\u2722"],[/\\ding\{67\}/g,"\u2723"],[/\\ding\{68\}/g,"\u2724"],[/\\ding\{69\}/g,"\u2725"],[/\\ding\{70\}/g,"\u2726"],[/\\ding\{71\}/g,"\u2727"],[/\\ding\{73\}/g,"\u2729"],[/\\ding\{74\}/g,"\u272A"],[/\\ding\{75\}/g,"\u272B"],[/\\ding\{76\}/g,"\u272C"],[/\\ding\{77\}/g,"\u272D"],[/\\ding\{78\}/g,"\u272E"],[/\\ding\{79\}/g,"\u272F"],[/\\ding\{80\}/g,"\u2730"],[/\\ding\{81\}/g,"\u2731"],[/\\ding\{82\}/g,"\u2732"],[/\\ding\{83\}/g,"\u2733"],[/\\ding\{84\}/g,"\u2734"],[/\\ding\{85\}/g,"\u2735"],[/\\ding\{86\}/g,"\u2736"],[/\\ding\{87\}/g,"\u2737"],[/\\ding\{88\}/g,"\u2738"],[/\\ding\{89\}/g,"\u2739"],[/\\ding\{90\}/g,"\u273A"],[/\\ding\{91\}/g,"\u273B"],[/\\ding\{92\}/g,"\u273C"],[/\\ding\{93\}/g,"\u273D"],[/\\ding\{94\}/g,"\u273E"],[/\\ding\{95\}/g,"\u273F"],[/\\ding\{96\}/g,"\u2740"],[/\\ding\{97\}/g,"\u2741"],[/\\ding\{98\}/g,"\u2742"],[/\\ding\{99\}/g,"\u2743"],[/\\ding\{100\}/g,"\u2744"],[/\\ding\{101\}/g,"\u2745"],[/\\ding\{102\}/g,"\u2746"],[/\\ding\{103\}/g,"\u2747"],[/\\ding\{104\}/g,"\u2748"],[/\\ding\{105\}/g,"\u2749"],[/\\ding\{106\}/g,"\u274A"],[/\\ding\{107\}/g,"\u274B"],[/\\ding\{109\}/g,"\u274D"],[/\\ding\{111\}/g,"\u274F"],[/\\ding\{112\}/g,"\u2750"],[/\\ding\{113\}/g,"\u2751"],[/\\ding\{114\}/g,"\u2752"],[/\\ding\{118\}/g,"\u2756"],[/\\ding\{120\}/g,"\u2758"],[/\\ding\{121\}/g,"\u2759"],[/\\ding\{122\}/g,"\u275A"],[/\\ding\{123\}/g,"\u275B"],[/\\ding\{124\}/g,"\u275C"],[/\\ding\{125\}/g,"\u275D"],[/\\ding\{126\}/g,"\u275E"],[/\\ding\{161\}/g,"\u2761"],[/\\ding\{162\}/g,"\u2762"],[/\\ding\{163\}/g,"\u2763"],[/\\ding\{164\}/g,"\u2764"],[/\\ding\{165\}/g,"\u2765"],[/\\ding\{166\}/g,"\u2766"],[/\\ding\{167\}/g,"\u2767"],[/\\ding\{182\}/g,"\u2776"],[/\\ding\{183\}/g,"\u2777"],[/\\ding\{184\}/g,"\u2778"],[/\\ding\{185\}/g,"\u2779"],[/\\ding\{186\}/g,"\u277A"],[/\\ding\{187\}/g,"\u277B"],[/\\ding\{188\}/g,"\u277C"],[/\\ding\{189\}/g,"\u277D"],[/\\ding\{190\}/g,"\u277E"],[/\\ding\{191\}/g,"\u277F"],[/\\ding\{192\}/g,"\u2780"],[/\\ding\{193\}/g,"\u2781"],[/\\ding\{194\}/g,"\u2782"],[/\\ding\{195\}/g,"\u2783"],[/\\ding\{196\}/g,"\u2784"],[/\\ding\{197\}/g,"\u2785"],[/\\ding\{198\}/g,"\u2786"],[/\\ding\{199\}/g,"\u2787"],[/\\ding\{200\}/g,"\u2788"],[/\\ding\{201\}/g,"\u2789"],[/\\ding\{202\}/g,"\u278A"],[/\\ding\{203\}/g,"\u278B"],[/\\ding\{204\}/g,"\u278C"],[/\\ding\{205\}/g,"\u278D"],[/\\ding\{206\}/g,"\u278E"],[/\\ding\{207\}/g,"\u278F"],[/\\ding\{208\}/g,"\u2790"],[/\\ding\{209\}/g,"\u2791"],[/\\ding\{210\}/g,"\u2792"],[/\\ding\{211\}/g,"\u2793"],[/\\ding\{212\}/g,"\u2794"],[/\\ding\{216\}/g,"\u2798"],[/\\ding\{217\}/g,"\u2799"],[/\\ding\{218\}/g,"\u279A"],[/\\ding\{219\}/g,"\u279B"],[/\\ding\{220\}/g,"\u279C"],[/\\ding\{221\}/g,"\u279D"],[/\\ding\{222\}/g,"\u279E"],[/\\ding\{223\}/g,"\u279F"],[/\\ding\{224\}/g,"\u27A0"],[/\\ding\{225\}/g,"\u27A1"],[/\\ding\{226\}/g,"\u27A2"],[/\\ding\{227\}/g,"\u27A3"],[/\\ding\{228\}/g,"\u27A4"],[/\\ding\{229\}/g,"\u27A5"],[/\\ding\{230\}/g,"\u27A6"],[/\\ding\{231\}/g,"\u27A7"],[/\\ding\{232\}/g,"\u27A8"],[/\\ding\{233\}/g,"\u27A9"],[/\\ding\{234\}/g,"\u27AA"],[/\\ding\{235\}/g,"\u27AB"],[/\\ding\{236\}/g,"\u27AC"],[/\\ding\{237\}/g,"\u27AD"],[/\\ding\{238\}/g,"\u27AE"],[/\\ding\{239\}/g,"\u27AF"],[/\\ding\{241\}/g,"\u27B1"],[/\\ding\{242\}/g,"\u27B2"],[/\\ding\{243\}/g,"\u27B3"],[/\\ding\{244\}/g,"\u27B4"],[/\\ding\{245\}/g,"\u27B5"],[/\\ding\{246\}/g,"\u27B6"],[/\\ding\{247\}/g,"\u27B7"],[/\\ding\{248\}/g,"\u27B8"],[/\\ding\{249\}/g,"\u27B9"],[/\\ding\{250\}/g,"\u27BA"],[/\\ding\{251\}/g,"\u27BB"],[/\\ding\{252\}/g,"\u27BC"],[/\\ding\{253\}/g,"\u27BD"],[/\\ding\{254\}/g,"\u27BE"],[/\\longleftarrow /g,"\u27F5"],[/\\longrightarrow /g,"\u27F6"],[/\\longleftrightarrow /g,"\u27F7"],[/\\Longleftarrow /g,"\u27F8"],[/\\Longrightarrow /g,"\u27F9"],[/\\Longleftrightarrow /g,"\u27FA"],[/\\longmapsto /g,"\u27FC"],[/\\sim\\joinrel\\leadsto/g,"\u27FF"],[/\\ElsevierGlyph\{E212\}/g,"\u2905"],[/\\UpArrowBar /g,"\u2912"],[/\\DownArrowBar /g,"\u2913"],[/\\ElsevierGlyph\{E20C\}/g,"\u2923"],[/\\ElsevierGlyph\{E20D\}/g,"\u2924"],[/\\ElsevierGlyph\{E20B\}/g,"\u2925"],[/\\ElsevierGlyph\{E20A\}/g,"\u2926"],[/\\ElsevierGlyph\{E211\}/g,"\u2927"],[/\\ElsevierGlyph\{E20E\}/g,"\u2928"],[/\\ElsevierGlyph\{E20F\}/g,"\u2929"],[/\\ElsevierGlyph\{E210\}/g,"\u292A"],[/\\ElsevierGlyph\{E21C\}/g,"\u2933"],[/\\ElsevierGlyph\{E21D\}/g,"\u2933-00338"],[/\\ElsevierGlyph\{E21A\}/g,"\u2936"],[/\\ElsevierGlyph\{E219\}/g,"\u2937"],[/\\Elolarr /g,"\u2940"],[/\\Elorarr /g,"\u2941"],[/\\ElzRlarr /g,"\u2942"],[/\\ElzrLarr /g,"\u2944"],[/\\Elzrarrx /g,"\u2947"],[/\\LeftRightVector /g,"\u294E"],[/\\RightUpDownVector /g,"\u294F"],[/\\DownLeftRightVector /g,"\u2950"],[/\\LeftUpDownVector /g,"\u2951"],[/\\LeftVectorBar /g,"\u2952"],[/\\RightVectorBar /g,"\u2953"],[/\\RightUpVectorBar /g,"\u2954"],[/\\RightDownVectorBar /g,"\u2955"],[/\\DownLeftVectorBar /g,"\u2956"],[/\\DownRightVectorBar /g,"\u2957"],[/\\LeftUpVectorBar /g,"\u2958"],[/\\LeftDownVectorBar /g,"\u2959"],[/\\LeftTeeVector /g,"\u295A"],[/\\RightTeeVector /g,"\u295B"],[/\\RightUpTeeVector /g,"\u295C"],[/\\RightDownTeeVector /g,"\u295D"],[/\\DownLeftTeeVector /g,"\u295E"],[/\\DownRightTeeVector /g,"\u295F"],[/\\LeftUpTeeVector /g,"\u2960"],[/\\LeftDownTeeVector /g,"\u2961"],[/\\UpEquilibrium /g,"\u296E"],[/\\ReverseUpEquilibrium /g,"\u296F"],[/\\RoundImplies /g,"\u2970"],[/\\ElsevierGlyph\{E214\}/g,"\u297C"],[/\\ElsevierGlyph\{E215\}/g,"\u297D"],[/\\Elztfnc /g,"\u2980"],[/\\ElsevierGlyph\{3018\}/g,"\u2985"],[/\\Elroang /g,"\u2986"],[/\\ElsevierGlyph\{E291\}/g,"\u2994"],[/\\Elzddfnc /g,"\u2999"],[/\\Angle /g,"\u299C"],[/\\Elzlpargt /g,"\u29A0"],[/\\ElsevierGlyph\{E260\}/g,"\u29B5"],[/\\ElsevierGlyph\{E61B\}/g,"\u29B6"],[/\\ElzLap /g,"\u29CA"],[/\\Elzdefas /g,"\u29CB"],[/\\LeftTriangleBar /g,"\u29CF"],[/\\NotLeftTriangleBar /g,"\u29CF-00338"],[/\\RightTriangleBar /g,"\u29D0"],[/\\NotRightTriangleBar /g,"\u29D0-00338"],[/\\ElsevierGlyph\{E372\}/g,"\u29DC"],[/\\blacklozenge /g,"\u29EB"],[/\\RuleDelayed /g,"\u29F4"],[/\\Elxuplus /g,"\u2A04"],[/\\ElzThr /g,"\u2A05"],[/\\Elxsqcup /g,"\u2A06"],[/\\ElzInf /g,"\u2A07"],[/\\ElzSup /g,"\u2A08"],[/\\ElzCint /g,"\u2A0D"],[/\\clockoint /g,"\u2A0F"],[/\\ElsevierGlyph\{E395\}/g,"\u2A10"],[/\\sqrint /g,"\u2A16"],[/\\ElsevierGlyph\{E25A\}/g,"\u2A25"],[/\\ElsevierGlyph\{E25B\}/g,"\u2A2A"],[/\\ElsevierGlyph\{E25C\}/g,"\u2A2D"],[/\\ElsevierGlyph\{E25D\}/g,"\u2A2E"],[/\\ElzTimes /g,"\u2A2F"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A34"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A35"],[/\\ElsevierGlyph\{E259\}/g,"\u2A3C"],[/\\amalg /g,"\u2A3F"],[/\\ElzAnd /g,"\u2A53"],[/\\ElzOr /g,"\u2A54"],[/\\ElsevierGlyph\{E36E\}/g,"\u2A55"],[/\\ElOr /g,"\u2A56"],[/\\perspcorrespond /g,"\u2A5E"],[/\\Elzminhat /g,"\u2A5F"],[/\\ElsevierGlyph\{225A\}/g,"\u2A63"],[/\\stackrel\{*\}\{=\}/g,"\u2A6E"],[/\\Equal /g,"\u2A75"],[/\\leqslant /g,"\u2A7D"],[/\\nleqslant /g,"\u2A7D-00338"],[/\\geqslant /g,"\u2A7E"],[/\\ngeqslant /g,"\u2A7E-00338"],[/\\lessapprox /g,"\u2A85"],[/\\gtrapprox /g,"\u2A86"],[/\\lneq /g,"\u2A87"],[/\\gneq /g,"\u2A88"],[/\\lnapprox /g,"\u2A89"],[/\\gnapprox /g,"\u2A8A"],[/\\lesseqqgtr /g,"\u2A8B"],[/\\gtreqqless /g,"\u2A8C"],[/\\eqslantless /g,"\u2A95"],[/\\eqslantgtr /g,"\u2A96"],[/\\Pisymbol\{ppi020\}\{117\}/g,"\u2A9D"],[/\\Pisymbol\{ppi020\}\{105\}/g,"\u2A9E"],[/\\NestedLessLess /g,"\u2AA1"],[/\\NotNestedLessLess /g,"\u2AA1-00338"],[/\\NestedGreaterGreater /g,"\u2AA2"],[/\\NotNestedGreaterGreater /g,"\u2AA2-00338"],[/\\preceq /g,"\u2AAF"],[/\\not\\preceq /g,"\u2AAF-00338"],[/\\succeq /g,"\u2AB0"],[/\\not\\succeq /g,"\u2AB0-00338"],[/\\precneqq /g,"\u2AB5"],[/\\succneqq /g,"\u2AB6"],[/\\precapprox /g,"\u2AB7"],[/\\succapprox /g,"\u2AB8"],[/\\precnapprox /g,"\u2AB9"],[/\\succnapprox /g,"\u2ABA"],[/\\subseteqq /g,"\u2AC5"],[/\\nsubseteqq /g,"\u2AC5-00338"],[/\\supseteqq /g,"\u2AC6"],[/\\nsupseteqq/g,"\u2AC6-00338"],[/\\subsetneqq /g,"\u2ACB"],[/\\supsetneqq /g,"\u2ACC"],[/\\ElsevierGlyph\{E30D\}/g,"\u2AEB"],[/\\Elztdcol /g,"\u2AF6"],[/\\ElsevierGlyph\{300A\}/g,"\u300A"],[/\\ElsevierGlyph\{300B\}/g,"\u300B"],[/\\ElsevierGlyph\{3018\}/g,"\u3018"],[/\\ElsevierGlyph\{3019\}/g,"\u3019"],[/\\openbracketleft /g,"\u301A"],[/\\openbracketright /g,"\u301B"]];return this}if(typeof module!=="undefined"&&module.exports){module.exports=BibtexParser};
\ No newline at end of file
+function BibtexParser(c){if(typeof c=="string"){var d={};var a=[];function b(f){a.push(f)}var e=BibtexParser.call(d,b);e.parse(c);return{entries:a,errors:e.getErrors()}}if(typeof c!="function"){throw"Invalid parser construction."}this.STATES_={ENTRY_OR_JUNK:0,OBJECT_TYPE:1,ENTRY_KEY:2,KV_KEY:3,EQUALS:4,KV_VALUE:5};this.DATA_={};this.CALLBACK_=c;this.CHAR_=0;this.LINE_=1;this.CHAR_IN_LINE_=0;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={};this.SKIPTILLEOL_=false;this.VALBRACES_=null;this.BRACETYPE_=null;this.BRACECOUNT_=0;this.STATE_=this.STATES_.ENTRY_OR_JUNK;this.ERRORS_=[];this.ENTRY_TYPES_={inproceedings:1,proceedings:2,article:3,techreport:4,misc:5,mastersthesis:6,book:7,phdthesis:8,incollection:9,unpublished:10,inbook:11,manual:12,periodical:13,booklet:14,masterthesis:15,conference:16,online:998,data:999};this.MACROS_={jan:"January",feb:"February",mar:"March",apr:"April",may:"May",jun:"June",jul:"July",aug:"August",sep:"September",oct:"October",nov:"November",dec:"December",Jan:"January",Feb:"February",Mar:"March",Apr:"April",May:"May",Jun:"June",Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November",Dec:"December"};this.getErrors=function(){return this.ERRORS_};this.parse=function(f){for(var g=0;g<f.length;g++){this.processCharacter_(f[g])}};this.error_=function(f){this.ERRORS_.push([this.LINE_,this.CHAR_IN_LINE_,this.CHAR_,f])};this.processEntry_=function(){var h=this.DATA_;if(h.Fields){for(var k in h.Fields){var p=h.Fields[k];for(var j=0;j<this.CHARCONV_.length;j++){var q=this.CHARCONV_[j][0];var n=this.CHARCONV_[j][1];p=p.replace(q,n)}p=p.replace(/[\n\r\t]/g," ").replace(/\s\s+/g," ").replace(/^\s+|\s+$/g,"");var l=p.length;var g="";for(var j=0;j<l;j++){var m=p[j];var o=false;if(m=="\\"&&j<l-1){m=p[++j]}else{if(m=="{"||m=="}"){o=true}}if(!o){g+=m}}h.Fields[k]=g}}if(h.ObjectType=="string"){for(var k in h.Fields){this.MACROS_[k]=h.Fields[k]}}else{this.CALLBACK_(h)}};this.processCharacter_=function(l){this.CHAR_++;this.CHAR_IN_LINE_++;if(l=="\n"){this.LINE_++;this.CHAR_IN_LINE_=1}if(this.SKIPTILLEOL_){if(l=="\n"){this.SKIPTILLEOL_=false}return}if(this.SKIPCOMMENT_&&l=="%"){this.SKIPTILLEOL_=true;return}if(this.SKIPWS_&&/\s/.test(l)){return}this.SKIPWS_=false;this.SKIPCOMMENT_=false;this.SKIPTILLEOL_=false;var f=true;while(f){f=false;switch(this.STATE_){case this.STATES_.ENTRY_OR_JUNK:if(l=="@"){this.STATE_=this.STATES_.OBJECT_TYPE;this.DATA_={ObjectType:""}}this.BRACETYPE_=null;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break;case this.STATES_.OBJECT_TYPE:if(/[A-Za-z]/.test(l)){this.DATA_.ObjectType+=l.toLowerCase();this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{var i=this.DATA_.ObjectType;if(i=="comment"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i=="string"){this.DATA_.ObjectType=i;this.DATA_.Fields={};this.BRACETYPE_=l;this.BRACECOUNT_=1;this.STATE_=this.STATES_.KV_KEY;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={Key:""}}else{if(i=="preamble"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i in this.ENTRY_TYPES_){this.DATA_.ObjectType="entry";this.DATA_.EntryType=i;this.DATA_.EntryKey="";this.STATE_=this.STATES_.ENTRY_KEY;f=true}else{this.error_('Unrecognized object type: "'+this.DATA_.ObjectType+'"');this.STATE_=this.STATES_.ENTRY_OR_JUNK}}}}}break;case this.STATES_.ENTRY_KEY:if((l==="{"||l==="(")&&this.BRACETYPE_==null){this.BRACETYPE_=l;this.BRACECOUNT_=1;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break}if(/[,%\s]/.test(l)){if(this.DATA_.EntryKey.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{if(this.BRACETYPE_==null){this.error_("No opening brace for object.");this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;f=true;this.STATE_=this.STATES_.KV_KEY;this.PARSETMP_.Key="";this.DATA_.Fields={}}}}else{this.DATA_.EntryKey+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}break;case this.STATES_.KV_KEY:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(/[\-A-Za-z:]/.test(l)){this.PARSETMP_.Key+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{if(this.PARSETMP_.Key.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.EQUALS;f=true}}break;case this.STATES_.EQUALS:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.error_('Key-value pair has key "'+this.PARSETMP_.Key+'", but no value.');this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(l=="="){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_VALUE;this.PARSETMP_.Value="";this.VALBRACES_={'"':[],"{":[]}}break;case this.STATES_.KV_VALUE:var k=this.VALBRACES_;var j=this.PARSETMP_.Value;var h=false;if(l=='"'||l=="{"||l=="}"||l==","){if(l==","){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}h=true}}if(l=='"'){if(0===k['"'].length+k["{"].length){k['"'].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false;break}if(k['"'].length==1&&k["{"].length==0&&(j.length==0||j[j.length-1]!="\\")){h=true}else{}}if(l=="{"){if(j.length==0||j[j.length-1]!="\\"){k["{"].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{}}if(l=="}"){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}f=true;h=true}else{if(j.length==0||j[j.length-1]!="\\"){if(k["{"].length>0){k["{"].splice(k["{"].length-1,1);if(0==k["{"].length+k['"'].length){h=true}else{}}}else{}}}}if(h){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_KEY;this.DATA_.Fields[this.PARSETMP_.Key]=this.PARSETMP_.Value;this.PARSETMP_={Key:""};this.VALBRACES_=null}else{this.PARSETMP_.Value+=l}break}}};this.CHARCONV_=[[/\\space /g,"\u0020"],[/\\textdollar /g,"\u0024"],[/\\textquotesingle /g,"\u0027"],[/\\ast /g,"\u002A"],[/\\textbackslash /g,"\u005C"],[/\\\^\{\}/g,"\u005E"],[/\\textasciigrave /g,"\u0060"],[/\\lbrace /g,"\u007B"],[/\\vert /g,"\u007C"],[/\\rbrace /g,"\u007D"],[/\\textasciitilde /g,"\u007E"],[/\\textexclamdown /g,"\u00A1"],[/\\textcent /g,"\u00A2"],[/\\textsterling /g,"\u00A3"],[/\\textcurrency /g,"\u00A4"],[/\\textyen /g,"\u00A5"],[/\\textbrokenbar /g,"\u00A6"],[/\\textsection /g,"\u00A7"],[/\\textasciidieresis /g,"\u00A8"],[/\\textcopyright /g,"\u00A9"],[/\\textordfeminine /g,"\u00AA"],[/\\guillemotleft /g,"\u00AB"],[/\\lnot /g,"\u00AC"],[/\\textregistered /g,"\u00AE"],[/\\textasciimacron /g,"\u00AF"],[/\\textdegree /g,"\u00B0"],[/\\pm /g,"\u00B1"],[/\\textasciiacute /g,"\u00B4"],[/\\mathrm\{\\mu\}/g,"\u00B5"],[/\\textparagraph /g,"\u00B6"],[/\\cdot /g,"\u00B7"],[/\\c\{\}/g,"\u00B8"],[/\\textordmasculine /g,"\u00BA"],[/\\guillemotright /g,"\u00BB"],[/\\textonequarter /g,"\u00BC"],[/\\textonehalf /g,"\u00BD"],[/\\textthreequarters /g,"\u00BE"],[/\\textquestiondown /g,"\u00BF"],[/\\`\{A\}/g,"\u00C0"],[/\\'\{A\}/g,"\u00C1"],[/\\\^\{A\}/g,"\u00C2"],[/\\~\{A\}/g,"\u00C3"],[/\\"\{A\}/g,"\u00C4"],[/\\AA /g,"\u00C5"],[/\\AE /g,"\u00C6"],[/\\c\{C\}/g,"\u00C7"],[/\\`\{E\}/g,"\u00C8"],[/\\'\{E\}/g,"\u00C9"],[/\\\^\{E\}/g,"\u00CA"],[/\\"\{E\}/g,"\u00CB"],[/\\`\{I\}/g,"\u00CC"],[/\\'\{I\}/g,"\u00CD"],[/\\\^\{I\}/g,"\u00CE"],[/\\"\{I\}/g,"\u00CF"],[/\\DH /g,"\u00D0"],[/\\~\{N\}/g,"\u00D1"],[/\\`\{O\}/g,"\u00D2"],[/\\'\{O\}/g,"\u00D3"],[/\\\^\{O\}/g,"\u00D4"],[/\\~\{O\}/g,"\u00D5"],[/\\"\{O\}/g,"\u00D6"],[/\\texttimes /g,"\u00D7"],[/\\O /g,"\u00D8"],[/\\`\{U\}/g,"\u00D9"],[/\\'\{U\}/g,"\u00DA"],[/\\\^\{U\}/g,"\u00DB"],[/\\"\{U\}/g,"\u00DC"],[/\\'\{Y\}/g,"\u00DD"],[/\\TH /g,"\u00DE"],[/\\ss /g,"\u00DF"],[/\\`\{a\}/g,"\u00E0"],[/\\'\{a\}/g,"\u00E1"],[/\\\^\{a\}/g,"\u00E2"],[/\\~\{a\}/g,"\u00E3"],[/\\"\{a\}/g,"\u00E4"],[/\\aa /g,"\u00E5"],[/\\ae /g,"\u00E6"],[/\\c\{c\}/g,"\u00E7"],[/\\`\{e\}/g,"\u00E8"],[/\\'\{e\}/g,"\u00E9"],[/\\\^\{e\}/g,"\u00EA"],[/\\"\{e\}/g,"\u00EB"],[/\\`\{\\i\}/g,"\u00EC"],[/\\'\{\\i\}/g,"\u00ED"],[/\\\^\{\\i\}/g,"\u00EE"],[/\\"\{\\i\}/g,"\u00EF"],[/\\dh /g,"\u00F0"],[/\\~\{n\}/g,"\u00F1"],[/\\`\{o\}/g,"\u00F2"],[/\\'\{o\}/g,"\u00F3"],[/\\\^\{o\}/g,"\u00F4"],[/\\~\{o\}/g,"\u00F5"],[/\\"\{o\}/g,"\u00F6"],[/\\div /g,"\u00F7"],[/\\o /g,"\u00F8"],[/\\`\{u\}/g,"\u00F9"],[/\\'\{u\}/g,"\u00FA"],[/\\\^\{u\}/g,"\u00FB"],[/\\"\{u\}/g,"\u00FC"],[/\\'\{y\}/g,"\u00FD"],[/\\th /g,"\u00FE"],[/\\"\{y\}/g,"\u00FF"],[/\\=\{A\}/g,"\u0100"],[/\\=\{a\}/g,"\u0101"],[/\\u\{A\}/g,"\u0102"],[/\\u\{a\}/g,"\u0103"],[/\\k\{A\}/g,"\u0104"],[/\\k\{a\}/g,"\u0105"],[/\\'\{C\}/g,"\u0106"],[/\\'\{c\}/g,"\u0107"],[/\\\^\{C\}/g,"\u0108"],[/\\\^\{c\}/g,"\u0109"],[/\\.\{C\}/g,"\u010A"],[/\\.\{c\}/g,"\u010B"],[/\\v\{C\}/g,"\u010C"],[/\\v\{c\}/g,"\u010D"],[/\\v\{D\}/g,"\u010E"],[/\\v\{d\}/g,"\u010F"],[/\\DJ /g,"\u0110"],[/\\dj /g,"\u0111"],[/\\=\{E\}/g,"\u0112"],[/\\=\{e\}/g,"\u0113"],[/\\u\{E\}/g,"\u0114"],[/\\u\{e\}/g,"\u0115"],[/\\.\{E\}/g,"\u0116"],[/\\.\{e\}/g,"\u0117"],[/\\k\{E\}/g,"\u0118"],[/\\k\{e\}/g,"\u0119"],[/\\v\{E\}/g,"\u011A"],[/\\v\{e\}/g,"\u011B"],[/\\\^\{G\}/g,"\u011C"],[/\\\^\{g\}/g,"\u011D"],[/\\u\{G\}/g,"\u011E"],[/\\u\{g\}/g,"\u011F"],[/\\.\{G\}/g,"\u0120"],[/\\.\{g\}/g,"\u0121"],[/\\c\{G\}/g,"\u0122"],[/\\c\{g\}/g,"\u0123"],[/\\\^\{H\}/g,"\u0124"],[/\\\^\{h\}/g,"\u0125"],[/\\Elzxh /g,"\u0127"],[/\\~\{I\}/g,"\u0128"],[/\\~\{\\i\}/g,"\u0129"],[/\\=\{I\}/g,"\u012A"],[/\\=\{\\i\}/g,"\u012B"],[/\\u\{I\}/g,"\u012C"],[/\\u\{\\i\}/g,"\u012D"],[/\\k\{I\}/g,"\u012E"],[/\\k\{i\}/g,"\u012F"],[/\\.\{I\}/g,"\u0130"],[/\\i /g,"\u0131"],[/\\\^\{J\}/g,"\u0134"],[/\\\^\{\\j\}/g,"\u0135"],[/\\c\{K\}/g,"\u0136"],[/\\c\{k\}/g,"\u0137"],[/\\'\{L\}/g,"\u0139"],[/\\'\{l\}/g,"\u013A"],[/\\c\{L\}/g,"\u013B"],[/\\c\{l\}/g,"\u013C"],[/\\v\{L\}/g,"\u013D"],[/\\v\{l\}/g,"\u013E"],[/\\L /g,"\u0141"],[/\\l /g,"\u0142"],[/\\'\{N\}/g,"\u0143"],[/\\'\{n\}/g,"\u0144"],[/\\c\{N\}/g,"\u0145"],[/\\c\{n\}/g,"\u0146"],[/\\v\{N\}/g,"\u0147"],[/\\v\{n\}/g,"\u0148"],[/\\NG /g,"\u014A"],[/\\ng /g,"\u014B"],[/\\=\{O\}/g,"\u014C"],[/\\=\{o\}/g,"\u014D"],[/\\u\{O\}/g,"\u014E"],[/\\u\{o\}/g,"\u014F"],[/\\H\{O\}/g,"\u0150"],[/\\H\{o\}/g,"\u0151"],[/\\OE /g,"\u0152"],[/\\oe /g,"\u0153"],[/\\'\{R\}/g,"\u0154"],[/\\'\{r\}/g,"\u0155"],[/\\c\{R\}/g,"\u0156"],[/\\c\{r\}/g,"\u0157"],[/\\v\{R\}/g,"\u0158"],[/\\v\{r\}/g,"\u0159"],[/\\'\{S\}/g,"\u015A"],[/\\'\{s\}/g,"\u015B"],[/\\\^\{S\}/g,"\u015C"],[/\\\^\{s\}/g,"\u015D"],[/\\c\{S\}/g,"\u015E"],[/\\c\{s\}/g,"\u015F"],[/\\v\{S\}/g,"\u0160"],[/\\v\{s\}/g,"\u0161"],[/\\c\{T\}/g,"\u0162"],[/\\c\{t\}/g,"\u0163"],[/\\v\{T\}/g,"\u0164"],[/\\v\{t\}/g,"\u0165"],[/\\~\{U\}/g,"\u0168"],[/\\~\{u\}/g,"\u0169"],[/\\=\{U\}/g,"\u016A"],[/\\=\{u\}/g,"\u016B"],[/\\u\{U\}/g,"\u016C"],[/\\u\{u\}/g,"\u016D"],[/\\r\{U\}/g,"\u016E"],[/\\r\{u\}/g,"\u016F"],[/\\H\{U\}/g,"\u0170"],[/\\H\{u\}/g,"\u0171"],[/\\k\{U\}/g,"\u0172"],[/\\k\{u\}/g,"\u0173"],[/\\\^\{W\}/g,"\u0174"],[/\\\^\{w\}/g,"\u0175"],[/\\\^\{Y\}/g,"\u0176"],[/\\\^\{y\}/g,"\u0177"],[/\\"\{Y\}/g,"\u0178"],[/\\'\{Z\}/g,"\u0179"],[/\\'\{z\}/g,"\u017A"],[/\\.\{Z\}/g,"\u017B"],[/\\.\{z\}/g,"\u017C"],[/\\v\{Z\}/g,"\u017D"],[/\\v\{z\}/g,"\u017E"],[/\\texthvlig /g,"\u0195"],[/\\textnrleg /g,"\u019E"],[/\\eth /g,"\u01AA"],[/\\textdoublepipe /g,"\u01C2"],[/\\'\{g\}/g,"\u01F5"],[/\\Elztrna /g,"\u0250"],[/\\Elztrnsa /g,"\u0252"],[/\\Elzopeno /g,"\u0254"],[/\\Elzrtld /g,"\u0256"],[/\\Elzschwa /g,"\u0259"],[/\\varepsilon /g,"\u025B"],[/\\Elzpgamma /g,"\u0263"],[/\\Elzpbgam /g,"\u0264"],[/\\Elztrnh /g,"\u0265"],[/\\Elzbtdl /g,"\u026C"],[/\\Elzrtll /g,"\u026D"],[/\\Elztrnm /g,"\u026F"],[/\\Elztrnmlr /g,"\u0270"],[/\\Elzltlmr /g,"\u0271"],[/\\Elzltln /g,"\u0272"],[/\\Elzrtln /g,"\u0273"],[/\\Elzclomeg /g,"\u0277"],[/\\textphi /g,"\u0278"],[/\\Elztrnr /g,"\u0279"],[/\\Elztrnrl /g,"\u027A"],[/\\Elzrttrnr /g,"\u027B"],[/\\Elzrl /g,"\u027C"],[/\\Elzrtlr /g,"\u027D"],[/\\Elzfhr /g,"\u027E"],[/\\Elzrtls /g,"\u0282"],[/\\Elzesh /g,"\u0283"],[/\\Elztrnt /g,"\u0287"],[/\\Elzrtlt /g,"\u0288"],[/\\Elzpupsil /g,"\u028A"],[/\\Elzpscrv /g,"\u028B"],[/\\Elzinvv /g,"\u028C"],[/\\Elzinvw /g,"\u028D"],[/\\Elztrny /g,"\u028E"],[/\\Elzrtlz /g,"\u0290"],[/\\Elzyogh /g,"\u0292"],[/\\Elzglst /g,"\u0294"],[/\\Elzreglst /g,"\u0295"],[/\\Elzinglst /g,"\u0296"],[/\\textturnk /g,"\u029E"],[/\\Elzdyogh /g,"\u02A4"],[/\\Elztesh /g,"\u02A7"],[/\\textasciicaron /g,"\u02C7"],[/\\Elzverts /g,"\u02C8"],[/\\Elzverti /g,"\u02CC"],[/\\Elzlmrk /g,"\u02D0"],[/\\Elzhlmrk /g,"\u02D1"],[/\\Elzsbrhr /g,"\u02D2"],[/\\Elzsblhr /g,"\u02D3"],[/\\Elzrais /g,"\u02D4"],[/\\Elzlow /g,"\u02D5"],[/\\textasciibreve /g,"\u02D8"],[/\\textperiodcentered /g,"\u02D9"],[/\\r\{\}/g,"\u02DA"],[/\\k\{\}/g,"\u02DB"],[/\\texttildelow /g,"\u02DC"],[/\\H\{\}/g,"\u02DD"],[/\\tone\{55\}/g,"\u02E5"],[/\\tone\{44\}/g,"\u02E6"],[/\\tone\{33\}/g,"\u02E7"],[/\\tone\{22\}/g,"\u02E8"],[/\\tone\{11\}/g,"\u02E9"],[/\\cyrchar\\C/g,"\u030F"],[/\\Elzpalh /g,"\u0321"],[/\\Elzrh /g,"\u0322"],[/\\Elzsbbrg /g,"\u032A"],[/\\Elzxl /g,"\u0335"],[/\\Elzbar /g,"\u0336"],[/\\'\{A\}/g,"\u0386"],[/\\'\{E\}/g,"\u0388"],[/\\'\{H\}/g,"\u0389"],[/\\'\{\}\{I\}/g,"\u038A"],[/\\'\{\}O/g,"\u038C"],[/\\mathrm\{'Y\}/g,"\u038E"],[/\\mathrm\{'\\Omega\}/g,"\u038F"],[/\\acute\{\\ddot\{\\iota\}\}/g,"\u0390"],[/\\Alpha /g,"\u0391"],[/\\Beta /g,"\u0392"],[/\\Gamma /g,"\u0393"],[/\\Delta /g,"\u0394"],[/\\Epsilon /g,"\u0395"],[/\\Zeta /g,"\u0396"],[/\\Eta /g,"\u0397"],[/\\Theta /g,"\u0398"],[/\\Iota /g,"\u0399"],[/\\Kappa /g,"\u039A"],[/\\Lambda /g,"\u039B"],[/\\Xi /g,"\u039E"],[/\\Pi /g,"\u03A0"],[/\\Rho /g,"\u03A1"],[/\\Sigma /g,"\u03A3"],[/\\Tau /g,"\u03A4"],[/\\Upsilon /g,"\u03A5"],[/\\Phi /g,"\u03A6"],[/\\Chi /g,"\u03A7"],[/\\Psi /g,"\u03A8"],[/\\Omega /g,"\u03A9"],[/\\mathrm\{\\ddot\{I\}\}/g,"\u03AA"],[/\\mathrm\{\\ddot\{Y\}\}/g,"\u03AB"],[/\\'\{\$\\alpha\$\}/g,"\u03AC"],[/\\acute\{\\epsilon\}/g,"\u03AD"],[/\\acute\{\\eta\}/g,"\u03AE"],[/\\acute\{\\iota\}/g,"\u03AF"],[/\\acute\{\\ddot\{\\upsilon\}\}/g,"\u03B0"],[/\\alpha /g,"\u03B1"],[/\\beta /g,"\u03B2"],[/\\gamma /g,"\u03B3"],[/\\delta /g,"\u03B4"],[/\\epsilon /g,"\u03B5"],[/\\zeta /g,"\u03B6"],[/\\eta /g,"\u03B7"],[/\\texttheta /g,"\u03B8"],[/\\iota /g,"\u03B9"],[/\\kappa /g,"\u03BA"],[/\\lambda /g,"\u03BB"],[/\\mu /g,"\u03BC"],[/\\nu /g,"\u03BD"],[/\\xi /g,"\u03BE"],[/\\pi /g,"\u03C0"],[/\\rho /g,"\u03C1"],[/\\varsigma /g,"\u03C2"],[/\\sigma /g,"\u03C3"],[/\\tau /g,"\u03C4"],[/\\upsilon /g,"\u03C5"],[/\\varphi /g,"\u03C6"],[/\\chi /g,"\u03C7"],[/\\psi /g,"\u03C8"],[/\\omega /g,"\u03C9"],[/\\ddot\{\\iota\}/g,"\u03CA"],[/\\ddot\{\\upsilon\}/g,"\u03CB"],[/\\'\{o\}/g,"\u03CC"],[/\\acute\{\\upsilon\}/g,"\u03CD"],[/\\acute\{\\omega\}/g,"\u03CE"],[/\\Pisymbol\{ppi022\}\{87\}/g,"\u03D0"],[/\\textvartheta /g,"\u03D1"],[/\\Upsilon /g,"\u03D2"],[/\\phi /g,"\u03D5"],[/\\varpi /g,"\u03D6"],[/\\Stigma /g,"\u03DA"],[/\\Digamma /g,"\u03DC"],[/\\digamma /g,"\u03DD"],[/\\Koppa /g,"\u03DE"],[/\\Sampi /g,"\u03E0"],[/\\varkappa /g,"\u03F0"],[/\\varrho /g,"\u03F1"],[/\\textTheta /g,"\u03F4"],[/\\backepsilon /g,"\u03F6"],[/\\cyrchar\\CYRYO /g,"\u0401"],[/\\cyrchar\\CYRDJE /g,"\u0402"],[/\\cyrchar\{\\'\\CYRG\}/g,"\u0403"],[/\\cyrchar\\CYRIE /g,"\u0404"],[/\\cyrchar\\CYRDZE /g,"\u0405"],[/\\cyrchar\\CYRII /g,"\u0406"],[/\\cyrchar\\CYRYI /g,"\u0407"],[/\\cyrchar\\CYRJE /g,"\u0408"],[/\\cyrchar\\CYRLJE /g,"\u0409"],[/\\cyrchar\\CYRNJE /g,"\u040A"],[/\\cyrchar\\CYRTSHE /g,"\u040B"],[/\\cyrchar\{\\'\\CYRK\}/g,"\u040C"],[/\\cyrchar\\CYRUSHRT /g,"\u040E"],[/\\cyrchar\\CYRDZHE /g,"\u040F"],[/\\cyrchar\\CYRA /g,"\u0410"],[/\\cyrchar\\CYRB /g,"\u0411"],[/\\cyrchar\\CYRV /g,"\u0412"],[/\\cyrchar\\CYRG /g,"\u0413"],[/\\cyrchar\\CYRD /g,"\u0414"],[/\\cyrchar\\CYRE /g,"\u0415"],[/\\cyrchar\\CYRZH /g,"\u0416"],[/\\cyrchar\\CYRZ /g,"\u0417"],[/\\cyrchar\\CYRI /g,"\u0418"],[/\\cyrchar\\CYRISHRT /g,"\u0419"],[/\\cyrchar\\CYRK /g,"\u041A"],[/\\cyrchar\\CYRL /g,"\u041B"],[/\\cyrchar\\CYRM /g,"\u041C"],[/\\cyrchar\\CYRN /g,"\u041D"],[/\\cyrchar\\CYRO /g,"\u041E"],[/\\cyrchar\\CYRP /g,"\u041F"],[/\\cyrchar\\CYRR /g,"\u0420"],[/\\cyrchar\\CYRS /g,"\u0421"],[/\\cyrchar\\CYRT /g,"\u0422"],[/\\cyrchar\\CYRU /g,"\u0423"],[/\\cyrchar\\CYRF /g,"\u0424"],[/\\cyrchar\\CYRH /g,"\u0425"],[/\\cyrchar\\CYRC /g,"\u0426"],[/\\cyrchar\\CYRCH /g,"\u0427"],[/\\cyrchar\\CYRSH /g,"\u0428"],[/\\cyrchar\\CYRSHCH /g,"\u0429"],[/\\cyrchar\\CYRHRDSN /g,"\u042A"],[/\\cyrchar\\CYRERY /g,"\u042B"],[/\\cyrchar\\CYRSFTSN /g,"\u042C"],[/\\cyrchar\\CYREREV /g,"\u042D"],[/\\cyrchar\\CYRYU /g,"\u042E"],[/\\cyrchar\\CYRYA /g,"\u042F"],[/\\cyrchar\\cyra /g,"\u0430"],[/\\cyrchar\\cyrb /g,"\u0431"],[/\\cyrchar\\cyrv /g,"\u0432"],[/\\cyrchar\\cyrg /g,"\u0433"],[/\\cyrchar\\cyrd /g,"\u0434"],[/\\cyrchar\\cyre /g,"\u0435"],[/\\cyrchar\\cyrzh /g,"\u0436"],[/\\cyrchar\\cyrz /g,"\u0437"],[/\\cyrchar\\cyri /g,"\u0438"],[/\\cyrchar\\cyrishrt /g,"\u0439"],[/\\cyrchar\\cyrk /g,"\u043A"],[/\\cyrchar\\cyrl /g,"\u043B"],[/\\cyrchar\\cyrm /g,"\u043C"],[/\\cyrchar\\cyrn /g,"\u043D"],[/\\cyrchar\\cyro /g,"\u043E"],[/\\cyrchar\\cyrp /g,"\u043F"],[/\\cyrchar\\cyrr /g,"\u0440"],[/\\cyrchar\\cyrs /g,"\u0441"],[/\\cyrchar\\cyrt /g,"\u0442"],[/\\cyrchar\\cyru /g,"\u0443"],[/\\cyrchar\\cyrf /g,"\u0444"],[/\\cyrchar\\cyrh /g,"\u0445"],[/\\cyrchar\\cyrc /g,"\u0446"],[/\\cyrchar\\cyrch /g,"\u0447"],[/\\cyrchar\\cyrsh /g,"\u0448"],[/\\cyrchar\\cyrshch /g,"\u0449"],[/\\cyrchar\\cyrhrdsn /g,"\u044A"],[/\\cyrchar\\cyrery /g,"\u044B"],[/\\cyrchar\\cyrsftsn /g,"\u044C"],[/\\cyrchar\\cyrerev /g,"\u044D"],[/\\cyrchar\\cyryu /g,"\u044E"],[/\\cyrchar\\cyrya /g,"\u044F"],[/\\cyrchar\\cyryo /g,"\u0451"],[/\\cyrchar\\cyrdje /g,"\u0452"],[/\\cyrchar\{\\'\\cyrg\}/g,"\u0453"],[/\\cyrchar\\cyrie /g,"\u0454"],[/\\cyrchar\\cyrdze /g,"\u0455"],[/\\cyrchar\\cyrii /g,"\u0456"],[/\\cyrchar\\cyryi /g,"\u0457"],[/\\cyrchar\\cyrje /g,"\u0458"],[/\\cyrchar\\cyrlje /g,"\u0459"],[/\\cyrchar\\cyrnje /g,"\u045A"],[/\\cyrchar\\cyrtshe /g,"\u045B"],[/\\cyrchar\{\\'\\cyrk\}/g,"\u045C"],[/\\cyrchar\\cyrushrt /g,"\u045E"],[/\\cyrchar\\cyrdzhe /g,"\u045F"],[/\\cyrchar\\CYROMEGA /g,"\u0460"],[/\\cyrchar\\cyromega /g,"\u0461"],[/\\cyrchar\\CYRYAT /g,"\u0462"],[/\\cyrchar\\CYRIOTE /g,"\u0464"],[/\\cyrchar\\cyriote /g,"\u0465"],[/\\cyrchar\\CYRLYUS /g,"\u0466"],[/\\cyrchar\\cyrlyus /g,"\u0467"],[/\\cyrchar\\CYRIOTLYUS /g,"\u0468"],[/\\cyrchar\\cyriotlyus /g,"\u0469"],[/\\cyrchar\\CYRBYUS /g,"\u046A"],[/\\cyrchar\\CYRIOTBYUS /g,"\u046C"],[/\\cyrchar\\cyriotbyus /g,"\u046D"],[/\\cyrchar\\CYRKSI /g,"\u046E"],[/\\cyrchar\\cyrksi /g,"\u046F"],[/\\cyrchar\\CYRPSI /g,"\u0470"],[/\\cyrchar\\cyrpsi /g,"\u0471"],[/\\cyrchar\\CYRFITA /g,"\u0472"],[/\\cyrchar\\CYRIZH /g,"\u0474"],[/\\cyrchar\\CYRUK /g,"\u0478"],[/\\cyrchar\\cyruk /g,"\u0479"],[/\\cyrchar\\CYROMEGARND /g,"\u047A"],[/\\cyrchar\\cyromegarnd /g,"\u047B"],[/\\cyrchar\\CYROMEGATITLO /g,"\u047C"],[/\\cyrchar\\cyromegatitlo /g,"\u047D"],[/\\cyrchar\\CYROT /g,"\u047E"],[/\\cyrchar\\cyrot /g,"\u047F"],[/\\cyrchar\\CYRKOPPA /g,"\u0480"],[/\\cyrchar\\cyrkoppa /g,"\u0481"],[/\\cyrchar\\cyrthousands /g,"\u0482"],[/\\cyrchar\\cyrhundredthousands /g,"\u0488"],[/\\cyrchar\\cyrmillions /g,"\u0489"],[/\\cyrchar\\CYRSEMISFTSN /g,"\u048C"],[/\\cyrchar\\cyrsemisftsn /g,"\u048D"],[/\\cyrchar\\CYRRTICK /g,"\u048E"],[/\\cyrchar\\cyrrtick /g,"\u048F"],[/\\cyrchar\\CYRGUP /g,"\u0490"],[/\\cyrchar\\cyrgup /g,"\u0491"],[/\\cyrchar\\CYRGHCRS /g,"\u0492"],[/\\cyrchar\\cyrghcrs /g,"\u0493"],[/\\cyrchar\\CYRGHK /g,"\u0494"],[/\\cyrchar\\cyrghk /g,"\u0495"],[/\\cyrchar\\CYRZHDSC /g,"\u0496"],[/\\cyrchar\\cyrzhdsc /g,"\u0497"],[/\\cyrchar\\CYRZDSC /g,"\u0498"],[/\\cyrchar\\cyrzdsc /g,"\u0499"],[/\\cyrchar\\CYRKDSC /g,"\u049A"],[/\\cyrchar\\cyrkdsc /g,"\u049B"],[/\\cyrchar\\CYRKVCRS /g,"\u049C"],[/\\cyrchar\\cyrkvcrs /g,"\u049D"],[/\\cyrchar\\CYRKHCRS /g,"\u049E"],[/\\cyrchar\\cyrkhcrs /g,"\u049F"],[/\\cyrchar\\CYRKBEAK /g,"\u04A0"],[/\\cyrchar\\cyrkbeak /g,"\u04A1"],[/\\cyrchar\\CYRNDSC /g,"\u04A2"],[/\\cyrchar\\cyrndsc /g,"\u04A3"],[/\\cyrchar\\CYRNG /g,"\u04A4"],[/\\cyrchar\\cyrng /g,"\u04A5"],[/\\cyrchar\\CYRPHK /g,"\u04A6"],[/\\cyrchar\\cyrphk /g,"\u04A7"],[/\\cyrchar\\CYRABHHA /g,"\u04A8"],[/\\cyrchar\\cyrabhha /g,"\u04A9"],[/\\cyrchar\\CYRSDSC /g,"\u04AA"],[/\\cyrchar\\cyrsdsc /g,"\u04AB"],[/\\cyrchar\\CYRTDSC /g,"\u04AC"],[/\\cyrchar\\cyrtdsc /g,"\u04AD"],[/\\cyrchar\\CYRY /g,"\u04AE"],[/\\cyrchar\\cyry /g,"\u04AF"],[/\\cyrchar\\CYRYHCRS /g,"\u04B0"],[/\\cyrchar\\cyryhcrs /g,"\u04B1"],[/\\cyrchar\\CYRHDSC /g,"\u04B2"],[/\\cyrchar\\cyrhdsc /g,"\u04B3"],[/\\cyrchar\\CYRTETSE /g,"\u04B4"],[/\\cyrchar\\cyrtetse /g,"\u04B5"],[/\\cyrchar\\CYRCHRDSC /g,"\u04B6"],[/\\cyrchar\\cyrchrdsc /g,"\u04B7"],[/\\cyrchar\\CYRCHVCRS /g,"\u04B8"],[/\\cyrchar\\cyrchvcrs /g,"\u04B9"],[/\\cyrchar\\CYRSHHA /g,"\u04BA"],[/\\cyrchar\\cyrshha /g,"\u04BB"],[/\\cyrchar\\CYRABHCH /g,"\u04BC"],[/\\cyrchar\\cyrabhch /g,"\u04BD"],[/\\cyrchar\\CYRABHCHDSC /g,"\u04BE"],[/\\cyrchar\\cyrabhchdsc /g,"\u04BF"],[/\\cyrchar\\CYRpalochka /g,"\u04C0"],[/\\cyrchar\\CYRKHK /g,"\u04C3"],[/\\cyrchar\\cyrkhk /g,"\u04C4"],[/\\cyrchar\\CYRNHK /g,"\u04C7"],[/\\cyrchar\\cyrnhk /g,"\u04C8"],[/\\cyrchar\\CYRCHLDSC /g,"\u04CB"],[/\\cyrchar\\cyrchldsc /g,"\u04CC"],[/\\cyrchar\\CYRAE /g,"\u04D4"],[/\\cyrchar\\cyrae /g,"\u04D5"],[/\\cyrchar\\CYRSCHWA /g,"\u04D8"],[/\\cyrchar\\cyrschwa /g,"\u04D9"],[/\\cyrchar\\CYRABHDZE /g,"\u04E0"],[/\\cyrchar\\cyrabhdze /g,"\u04E1"],[/\\cyrchar\\CYROTLD /g,"\u04E8"],[/\\cyrchar\\cyrotld /g,"\u04E9"],[/\\hspace\{0.6em\}/g,"\u2002"],[/\\hspace\{1em\}/g,"\u2003"],[/\\hspace\{0.33em\}/g,"\u2004"],[/\\hspace\{0.25em\}/g,"\u2005"],[/\\hspace\{0.166em\}/g,"\u2006"],[/\\hphantom\{0\}/g,"\u2007"],[/\\hphantom\{,\}/g,"\u2008"],[/\\hspace\{0.167em\}/g,"\u2009"],[/\\mkern1mu /g,"\u200A"],[/\\textendash /g,"\u2013"],[/\\textemdash /g,"\u2014"],[/\\rule\{1em\}\{1pt\}/g,"\u2015"],[/\\Vert /g,"\u2016"],[/\\Elzreapos /g,"\u201B"],[/\\textquotedblleft /g,"\u201C"],[/\\textquotedblright /g,"\u201D"],[/\\textdagger /g,"\u2020"],[/\\textdaggerdbl /g,"\u2021"],[/\\textbullet /g,"\u2022"],[/\\ldots /g,"\u2026"],[/\\textperthousand /g,"\u2030"],[/\\textpertenthousand /g,"\u2031"],[/\\backprime /g,"\u2035"],[/\\guilsinglleft /g,"\u2039"],[/\\guilsinglright /g,"\u203A"],[/\\mkern4mu /g,"\u205F"],[/\\nolinebreak /g,"\u2060"],[/\\ensuremath\{\\Elzpes\}/g,"\u20A7"],[/\\mbox\{\\texteuro\} /g,"\u20AC"],[/\\dddot /g,"\u20DB"],[/\\ddddot /g,"\u20DC"],[/\\mathbb\{C\}/g,"\u2102"],[/\\mathscr\{g\}/g,"\u210A"],[/\\mathscr\{H\}/g,"\u210B"],[/\\mathfrak\{H\}/g,"\u210C"],[/\\mathbb\{H\}/g,"\u210D"],[/\\hslash /g,"\u210F"],[/\\mathscr\{I\}/g,"\u2110"],[/\\mathfrak\{I\}/g,"\u2111"],[/\\mathscr\{L\}/g,"\u2112"],[/\\mathscr\{l\}/g,"\u2113"],[/\\mathbb\{N\}/g,"\u2115"],[/\\cyrchar\\textnumero /g,"\u2116"],[/\\wp /g,"\u2118"],[/\\mathbb\{P\}/g,"\u2119"],[/\\mathbb\{Q\}/g,"\u211A"],[/\\mathscr\{R\}/g,"\u211B"],[/\\mathfrak\{R\}/g,"\u211C"],[/\\mathbb\{R\}/g,"\u211D"],[/\\Elzxrat /g,"\u211E"],[/\\texttrademark /g,"\u2122"],[/\\mathbb\{Z\}/g,"\u2124"],[/\\Omega /g,"\u2126"],[/\\mho /g,"\u2127"],[/\\mathfrak\{Z\}/g,"\u2128"],[/\\ElsevierGlyph\{2129\}/g,"\u2129"],[/\\AA /g,"\u212B"],[/\\mathscr\{B\}/g,"\u212C"],[/\\mathfrak\{C\}/g,"\u212D"],[/\\mathscr\{e\}/g,"\u212F"],[/\\mathscr\{E\}/g,"\u2130"],[/\\mathscr\{F\}/g,"\u2131"],[/\\mathscr\{M\}/g,"\u2133"],[/\\mathscr\{o\}/g,"\u2134"],[/\\aleph /g,"\u2135"],[/\\beth /g,"\u2136"],[/\\gimel /g,"\u2137"],[/\\daleth /g,"\u2138"],[/\\textfrac\{1\}\{3\}/g,"\u2153"],[/\\textfrac\{2\}\{3\}/g,"\u2154"],[/\\textfrac\{1\}\{5\}/g,"\u2155"],[/\\textfrac\{2\}\{5\}/g,"\u2156"],[/\\textfrac\{3\}\{5\}/g,"\u2157"],[/\\textfrac\{4\}\{5\}/g,"\u2158"],[/\\textfrac\{1\}\{6\}/g,"\u2159"],[/\\textfrac\{5\}\{6\}/g,"\u215A"],[/\\textfrac\{1\}\{8\}/g,"\u215B"],[/\\textfrac\{3\}\{8\}/g,"\u215C"],[/\\textfrac\{5\}\{8\}/g,"\u215D"],[/\\textfrac\{7\}\{8\}/g,"\u215E"],[/\\leftarrow /g,"\u2190"],[/\\uparrow /g,"\u2191"],[/\\rightarrow /g,"\u2192"],[/\\downarrow /g,"\u2193"],[/\\leftrightarrow /g,"\u2194"],[/\\updownarrow /g,"\u2195"],[/\\nwarrow /g,"\u2196"],[/\\nearrow /g,"\u2197"],[/\\searrow /g,"\u2198"],[/\\swarrow /g,"\u2199"],[/\\nleftarrow /g,"\u219A"],[/\\nrightarrow /g,"\u219B"],[/\\arrowwaveright /g,"\u219C"],[/\\arrowwaveright /g,"\u219D"],[/\\twoheadleftarrow /g,"\u219E"],[/\\twoheadrightarrow /g,"\u21A0"],[/\\leftarrowtail /g,"\u21A2"],[/\\rightarrowtail /g,"\u21A3"],[/\\mapsto /g,"\u21A6"],[/\\hookleftarrow /g,"\u21A9"],[/\\hookrightarrow /g,"\u21AA"],[/\\looparrowleft /g,"\u21AB"],[/\\looparrowright /g,"\u21AC"],[/\\leftrightsquigarrow /g,"\u21AD"],[/\\nleftrightarrow /g,"\u21AE"],[/\\Lsh /g,"\u21B0"],[/\\Rsh /g,"\u21B1"],[/\\ElsevierGlyph\{21B3\}/g,"\u21B3"],[/\\curvearrowleft /g,"\u21B6"],[/\\curvearrowright /g,"\u21B7"],[/\\circlearrowleft /g,"\u21BA"],[/\\circlearrowright /g,"\u21BB"],[/\\leftharpoonup /g,"\u21BC"],[/\\leftharpoondown /g,"\u21BD"],[/\\upharpoonright /g,"\u21BE"],[/\\upharpoonleft /g,"\u21BF"],[/\\rightharpoonup /g,"\u21C0"],[/\\rightharpoondown /g,"\u21C1"],[/\\downharpoonright /g,"\u21C2"],[/\\downharpoonleft /g,"\u21C3"],[/\\rightleftarrows /g,"\u21C4"],[/\\dblarrowupdown /g,"\u21C5"],[/\\leftrightarrows /g,"\u21C6"],[/\\leftleftarrows /g,"\u21C7"],[/\\upuparrows /g,"\u21C8"],[/\\rightrightarrows /g,"\u21C9"],[/\\downdownarrows /g,"\u21CA"],[/\\leftrightharpoons /g,"\u21CB"],[/\\rightleftharpoons /g,"\u21CC"],[/\\nLeftarrow /g,"\u21CD"],[/\\nLeftrightarrow /g,"\u21CE"],[/\\nRightarrow /g,"\u21CF"],[/\\Leftarrow /g,"\u21D0"],[/\\Uparrow /g,"\u21D1"],[/\\Rightarrow /g,"\u21D2"],[/\\Downarrow /g,"\u21D3"],[/\\Leftrightarrow /g,"\u21D4"],[/\\Updownarrow /g,"\u21D5"],[/\\Lleftarrow /g,"\u21DA"],[/\\Rrightarrow /g,"\u21DB"],[/\\rightsquigarrow /g,"\u21DD"],[/\\DownArrowUpArrow /g,"\u21F5"],[/\\forall /g,"\u2200"],[/\\complement /g,"\u2201"],[/\\partial /g,"\u2202"],[/\\exists /g,"\u2203"],[/\\nexists /g,"\u2204"],[/\\varnothing /g,"\u2205"],[/\\nabla /g,"\u2207"],[/\\in /g,"\u2208"],[/\\not\\in /g,"\u2209"],[/\\ni /g,"\u220B"],[/\\not\\ni /g,"\u220C"],[/\\prod /g,"\u220F"],[/\\coprod /g,"\u2210"],[/\\sum /g,"\u2211"],[/\\mp /g,"\u2213"],[/\\dotplus /g,"\u2214"],[/\\setminus /g,"\u2216"],[/\\circ /g,"\u2218"],[/\\bullet /g,"\u2219"],[/\\surd /g,"\u221A"],[/\\propto /g,"\u221D"],[/\\infty /g,"\u221E"],[/\\rightangle /g,"\u221F"],[/\\angle /g,"\u2220"],[/\\measuredangle /g,"\u2221"],[/\\sphericalangle /g,"\u2222"],[/\\mid /g,"\u2223"],[/\\nmid /g,"\u2224"],[/\\parallel /g,"\u2225"],[/\\nparallel /g,"\u2226"],[/\\wedge /g,"\u2227"],[/\\vee /g,"\u2228"],[/\\cap /g,"\u2229"],[/\\cup /g,"\u222A"],[/\\int /g,"\u222B"],[/\\int\\!\\int /g,"\u222C"],[/\\int\\!\\int\\!\\int /g,"\u222D"],[/\\oint /g,"\u222E"],[/\\surfintegral /g,"\u222F"],[/\\volintegral /g,"\u2230"],[/\\clwintegral /g,"\u2231"],[/\\ElsevierGlyph\{2232\}/g,"\u2232"],[/\\ElsevierGlyph\{2233\}/g,"\u2233"],[/\\therefore /g,"\u2234"],[/\\because /g,"\u2235"],[/\\Colon /g,"\u2237"],[/\\ElsevierGlyph\{2238\}/g,"\u2238"],[/\\mathbin\{\{:\}\\!\\!\{\-\}\\!\\!\{:\}\}/g,"\u223A"],[/\\homothetic /g,"\u223B"],[/\\sim /g,"\u223C"],[/\\backsim /g,"\u223D"],[/\\lazysinv /g,"\u223E"],[/\\wr /g,"\u2240"],[/\\not\\sim /g,"\u2241"],[/\\ElsevierGlyph\{2242\}/g,"\u2242"],[/\\NotEqualTilde /g,"\u2242-00338"],[/\\simeq /g,"\u2243"],[/\\not\\simeq /g,"\u2244"],[/\\cong /g,"\u2245"],[/\\approxnotequal /g,"\u2246"],[/\\not\\cong /g,"\u2247"],[/\\approx /g,"\u2248"],[/\\not\\approx /g,"\u2249"],[/\\approxeq /g,"\u224A"],[/\\tildetrpl /g,"\u224B"],[/\\not\\apid /g,"\u224B-00338"],[/\\allequal /g,"\u224C"],[/\\asymp /g,"\u224D"],[/\\Bumpeq /g,"\u224E"],[/\\NotHumpDownHump /g,"\u224E-00338"],[/\\bumpeq /g,"\u224F"],[/\\NotHumpEqual /g,"\u224F-00338"],[/\\doteq /g,"\u2250"],[/\\not\\doteq/g,"\u2250-00338"],[/\\doteqdot /g,"\u2251"],[/\\fallingdotseq /g,"\u2252"],[/\\risingdotseq /g,"\u2253"],[/\\eqcirc /g,"\u2256"],[/\\circeq /g,"\u2257"],[/\\estimates /g,"\u2259"],[/\\ElsevierGlyph\{225A\}/g,"\u225A"],[/\\starequal /g,"\u225B"],[/\\triangleq /g,"\u225C"],[/\\ElsevierGlyph\{225F\}/g,"\u225F"],[/\\not =/g,"\u2260"],[/\\equiv /g,"\u2261"],[/\\not\\equiv /g,"\u2262"],[/\\leq /g,"\u2264"],[/\\geq /g,"\u2265"],[/\\leqq /g,"\u2266"],[/\\geqq /g,"\u2267"],[/\\lneqq /g,"\u2268"],[/\\lvertneqq /g,"\u2268-0FE00"],[/\\gneqq /g,"\u2269"],[/\\gvertneqq /g,"\u2269-0FE00"],[/\\ll /g,"\u226A"],[/\\NotLessLess /g,"\u226A-00338"],[/\\gg /g,"\u226B"],[/\\NotGreaterGreater /g,"\u226B-00338"],[/\\between /g,"\u226C"],[/\\not\\kern\-0.3em\\times /g,"\u226D"],[/\\not</g,"\u226E"],[/\\not>/g,"\u226F"],[/\\not\\leq /g,"\u2270"],[/\\not\\geq /g,"\u2271"],[/\\lessequivlnt /g,"\u2272"],[/\\greaterequivlnt /g,"\u2273"],[/\\ElsevierGlyph\{2274\}/g,"\u2274"],[/\\ElsevierGlyph\{2275\}/g,"\u2275"],[/\\lessgtr /g,"\u2276"],[/\\gtrless /g,"\u2277"],[/\\notlessgreater /g,"\u2278"],[/\\notgreaterless /g,"\u2279"],[/\\prec /g,"\u227A"],[/\\succ /g,"\u227B"],[/\\preccurlyeq /g,"\u227C"],[/\\succcurlyeq /g,"\u227D"],[/\\precapprox /g,"\u227E"],[/\\NotPrecedesTilde /g,"\u227E-00338"],[/\\succapprox /g,"\u227F"],[/\\NotSucceedsTilde /g,"\u227F-00338"],[/\\not\\prec /g,"\u2280"],[/\\not\\succ /g,"\u2281"],[/\\subset /g,"\u2282"],[/\\supset /g,"\u2283"],[/\\not\\subset /g,"\u2284"],[/\\not\\supset /g,"\u2285"],[/\\subseteq /g,"\u2286"],[/\\supseteq /g,"\u2287"],[/\\not\\subseteq /g,"\u2288"],[/\\not\\supseteq /g,"\u2289"],[/\\subsetneq /g,"\u228A"],[/\\varsubsetneqq /g,"\u228A-0FE00"],[/\\supsetneq /g,"\u228B"],[/\\varsupsetneq /g,"\u228B-0FE00"],[/\\uplus /g,"\u228E"],[/\\sqsubset /g,"\u228F"],[/\\NotSquareSubset /g,"\u228F-00338"],[/\\sqsupset /g,"\u2290"],[/\\NotSquareSuperset /g,"\u2290-00338"],[/\\sqsubseteq /g,"\u2291"],[/\\sqsupseteq /g,"\u2292"],[/\\sqcap /g,"\u2293"],[/\\sqcup /g,"\u2294"],[/\\oplus /g,"\u2295"],[/\\ominus /g,"\u2296"],[/\\otimes /g,"\u2297"],[/\\oslash /g,"\u2298"],[/\\odot /g,"\u2299"],[/\\circledcirc /g,"\u229A"],[/\\circledast /g,"\u229B"],[/\\circleddash /g,"\u229D"],[/\\boxplus /g,"\u229E"],[/\\boxminus /g,"\u229F"],[/\\boxtimes /g,"\u22A0"],[/\\boxdot /g,"\u22A1"],[/\\vdash /g,"\u22A2"],[/\\dashv /g,"\u22A3"],[/\\top /g,"\u22A4"],[/\\perp /g,"\u22A5"],[/\\truestate /g,"\u22A7"],[/\\forcesextra /g,"\u22A8"],[/\\Vdash /g,"\u22A9"],[/\\Vvdash /g,"\u22AA"],[/\\VDash /g,"\u22AB"],[/\\nvdash /g,"\u22AC"],[/\\nvDash /g,"\u22AD"],[/\\nVdash /g,"\u22AE"],[/\\nVDash /g,"\u22AF"],[/\\vartriangleleft /g,"\u22B2"],[/\\vartriangleright /g,"\u22B3"],[/\\trianglelefteq /g,"\u22B4"],[/\\trianglerighteq /g,"\u22B5"],[/\\original /g,"\u22B6"],[/\\image /g,"\u22B7"],[/\\multimap /g,"\u22B8"],[/\\hermitconjmatrix /g,"\u22B9"],[/\\intercal /g,"\u22BA"],[/\\veebar /g,"\u22BB"],[/\\rightanglearc /g,"\u22BE"],[/\\ElsevierGlyph\{22C0\}/g,"\u22C0"],[/\\ElsevierGlyph\{22C1\}/g,"\u22C1"],[/\\bigcap /g,"\u22C2"],[/\\bigcup /g,"\u22C3"],[/\\diamond /g,"\u22C4"],[/\\cdot /g,"\u22C5"],[/\\star /g,"\u22C6"],[/\\divideontimes /g,"\u22C7"],[/\\bowtie /g,"\u22C8"],[/\\ltimes /g,"\u22C9"],[/\\rtimes /g,"\u22CA"],[/\\leftthreetimes /g,"\u22CB"],[/\\rightthreetimes /g,"\u22CC"],[/\\backsimeq /g,"\u22CD"],[/\\curlyvee /g,"\u22CE"],[/\\curlywedge /g,"\u22CF"],[/\\Subset /g,"\u22D0"],[/\\Supset /g,"\u22D1"],[/\\Cap /g,"\u22D2"],[/\\Cup /g,"\u22D3"],[/\\pitchfork /g,"\u22D4"],[/\\lessdot /g,"\u22D6"],[/\\gtrdot /g,"\u22D7"],[/\\verymuchless /g,"\u22D8"],[/\\verymuchgreater /g,"\u22D9"],[/\\lesseqgtr /g,"\u22DA"],[/\\gtreqless /g,"\u22DB"],[/\\curlyeqprec /g,"\u22DE"],[/\\curlyeqsucc /g,"\u22DF"],[/\\not\\sqsubseteq /g,"\u22E2"],[/\\not\\sqsupseteq /g,"\u22E3"],[/\\Elzsqspne /g,"\u22E5"],[/\\lnsim /g,"\u22E6"],[/\\gnsim /g,"\u22E7"],[/\\precedesnotsimilar /g,"\u22E8"],[/\\succnsim /g,"\u22E9"],[/\\ntriangleleft /g,"\u22EA"],[/\\ntriangleright /g,"\u22EB"],[/\\ntrianglelefteq /g,"\u22EC"],[/\\ntrianglerighteq /g,"\u22ED"],[/\\vdots /g,"\u22EE"],[/\\cdots /g,"\u22EF"],[/\\upslopeellipsis /g,"\u22F0"],[/\\downslopeellipsis /g,"\u22F1"],[/\\barwedge /g,"\u2305"],[/\\perspcorrespond /g,"\u2306"],[/\\lceil /g,"\u2308"],[/\\rceil /g,"\u2309"],[/\\lfloor /g,"\u230A"],[/\\rfloor /g,"\u230B"],[/\\recorder /g,"\u2315"],[/\\mathchar"2208/g,"\u2316"],[/\\ulcorner /g,"\u231C"],[/\\urcorner /g,"\u231D"],[/\\llcorner /g,"\u231E"],[/\\lrcorner /g,"\u231F"],[/\\frown /g,"\u2322"],[/\\smile /g,"\u2323"],[/\\langle /g,"\u2329"],[/\\rangle /g,"\u232A"],[/\\ElsevierGlyph\{E838\}/g,"\u233D"],[/\\Elzdlcorn /g,"\u23A3"],[/\\lmoustache /g,"\u23B0"],[/\\rmoustache /g,"\u23B1"],[/\\textvisiblespace /g,"\u2423"],[/\\ding\{172\}/g,"\u2460"],[/\\ding\{173\}/g,"\u2461"],[/\\ding\{174\}/g,"\u2462"],[/\\ding\{175\}/g,"\u2463"],[/\\ding\{176\}/g,"\u2464"],[/\\ding\{177\}/g,"\u2465"],[/\\ding\{178\}/g,"\u2466"],[/\\ding\{179\}/g,"\u2467"],[/\\ding\{180\}/g,"\u2468"],[/\\ding\{181\}/g,"\u2469"],[/\\circledS /g,"\u24C8"],[/\\Elzdshfnc /g,"\u2506"],[/\\Elzsqfnw /g,"\u2519"],[/\\diagup /g,"\u2571"],[/\\ding\{110\}/g,"\u25A0"],[/\\square /g,"\u25A1"],[/\\blacksquare /g,"\u25AA"],[/\\fbox\{~~\}/g,"\u25AD"],[/\\Elzvrecto /g,"\u25AF"],[/\\ElsevierGlyph\{E381\}/g,"\u25B1"],[/\\ding\{115\}/g,"\u25B2"],[/\\bigtriangleup /g,"\u25B3"],[/\\blacktriangle /g,"\u25B4"],[/\\vartriangle /g,"\u25B5"],[/\\blacktriangleright /g,"\u25B8"],[/\\triangleright /g,"\u25B9"],[/\\ding\{116\}/g,"\u25BC"],[/\\bigtriangledown /g,"\u25BD"],[/\\blacktriangledown /g,"\u25BE"],[/\\triangledown /g,"\u25BF"],[/\\blacktriangleleft /g,"\u25C2"],[/\\triangleleft /g,"\u25C3"],[/\\ding\{117\}/g,"\u25C6"],[/\\lozenge /g,"\u25CA"],[/\\bigcirc /g,"\u25CB"],[/\\ding\{108\}/g,"\u25CF"],[/\\Elzcirfl /g,"\u25D0"],[/\\Elzcirfr /g,"\u25D1"],[/\\Elzcirfb /g,"\u25D2"],[/\\ding\{119\}/g,"\u25D7"],[/\\Elzrvbull /g,"\u25D8"],[/\\Elzsqfl /g,"\u25E7"],[/\\Elzsqfr /g,"\u25E8"],[/\\Elzsqfse /g,"\u25EA"],[/\\bigcirc /g,"\u25EF"],[/\\ding\{72\}/g,"\u2605"],[/\\ding\{73\}/g,"\u2606"],[/\\ding\{37\}/g,"\u260E"],[/\\ding\{42\}/g,"\u261B"],[/\\ding\{43\}/g,"\u261E"],[/\\rightmoon /g,"\u263E"],[/\\mercury /g,"\u263F"],[/\\venus /g,"\u2640"],[/\\male /g,"\u2642"],[/\\jupiter /g,"\u2643"],[/\\saturn /g,"\u2644"],[/\\uranus /g,"\u2645"],[/\\neptune /g,"\u2646"],[/\\pluto /g,"\u2647"],[/\\aries /g,"\u2648"],[/\\taurus /g,"\u2649"],[/\\gemini /g,"\u264A"],[/\\cancer /g,"\u264B"],[/\\leo /g,"\u264C"],[/\\virgo /g,"\u264D"],[/\\libra /g,"\u264E"],[/\\scorpio /g,"\u264F"],[/\\sagittarius /g,"\u2650"],[/\\capricornus /g,"\u2651"],[/\\aquarius /g,"\u2652"],[/\\pisces /g,"\u2653"],[/\\ding\{171\}/g,"\u2660"],[/\\diamond /g,"\u2662"],[/\\ding\{168\}/g,"\u2663"],[/\\ding\{170\}/g,"\u2665"],[/\\ding\{169\}/g,"\u2666"],[/\\quarternote /g,"\u2669"],[/\\eighthnote /g,"\u266A"],[/\\flat /g,"\u266D"],[/\\natural /g,"\u266E"],[/\\sharp /g,"\u266F"],[/\\ding\{33\}/g,"\u2701"],[/\\ding\{34\}/g,"\u2702"],[/\\ding\{35\}/g,"\u2703"],[/\\ding\{36\}/g,"\u2704"],[/\\ding\{38\}/g,"\u2706"],[/\\ding\{39\}/g,"\u2707"],[/\\ding\{40\}/g,"\u2708"],[/\\ding\{41\}/g,"\u2709"],[/\\ding\{44\}/g,"\u270C"],[/\\ding\{45\}/g,"\u270D"],[/\\ding\{46\}/g,"\u270E"],[/\\ding\{47\}/g,"\u270F"],[/\\ding\{48\}/g,"\u2710"],[/\\ding\{49\}/g,"\u2711"],[/\\ding\{50\}/g,"\u2712"],[/\\ding\{51\}/g,"\u2713"],[/\\ding\{52\}/g,"\u2714"],[/\\ding\{53\}/g,"\u2715"],[/\\ding\{54\}/g,"\u2716"],[/\\ding\{55\}/g,"\u2717"],[/\\ding\{56\}/g,"\u2718"],[/\\ding\{57\}/g,"\u2719"],[/\\ding\{58\}/g,"\u271A"],[/\\ding\{59\}/g,"\u271B"],[/\\ding\{60\}/g,"\u271C"],[/\\ding\{61\}/g,"\u271D"],[/\\ding\{62\}/g,"\u271E"],[/\\ding\{63\}/g,"\u271F"],[/\\ding\{64\}/g,"\u2720"],[/\\ding\{65\}/g,"\u2721"],[/\\ding\{66\}/g,"\u2722"],[/\\ding\{67\}/g,"\u2723"],[/\\ding\{68\}/g,"\u2724"],[/\\ding\{69\}/g,"\u2725"],[/\\ding\{70\}/g,"\u2726"],[/\\ding\{71\}/g,"\u2727"],[/\\ding\{73\}/g,"\u2729"],[/\\ding\{74\}/g,"\u272A"],[/\\ding\{75\}/g,"\u272B"],[/\\ding\{76\}/g,"\u272C"],[/\\ding\{77\}/g,"\u272D"],[/\\ding\{78\}/g,"\u272E"],[/\\ding\{79\}/g,"\u272F"],[/\\ding\{80\}/g,"\u2730"],[/\\ding\{81\}/g,"\u2731"],[/\\ding\{82\}/g,"\u2732"],[/\\ding\{83\}/g,"\u2733"],[/\\ding\{84\}/g,"\u2734"],[/\\ding\{85\}/g,"\u2735"],[/\\ding\{86\}/g,"\u2736"],[/\\ding\{87\}/g,"\u2737"],[/\\ding\{88\}/g,"\u2738"],[/\\ding\{89\}/g,"\u2739"],[/\\ding\{90\}/g,"\u273A"],[/\\ding\{91\}/g,"\u273B"],[/\\ding\{92\}/g,"\u273C"],[/\\ding\{93\}/g,"\u273D"],[/\\ding\{94\}/g,"\u273E"],[/\\ding\{95\}/g,"\u273F"],[/\\ding\{96\}/g,"\u2740"],[/\\ding\{97\}/g,"\u2741"],[/\\ding\{98\}/g,"\u2742"],[/\\ding\{99\}/g,"\u2743"],[/\\ding\{100\}/g,"\u2744"],[/\\ding\{101\}/g,"\u2745"],[/\\ding\{102\}/g,"\u2746"],[/\\ding\{103\}/g,"\u2747"],[/\\ding\{104\}/g,"\u2748"],[/\\ding\{105\}/g,"\u2749"],[/\\ding\{106\}/g,"\u274A"],[/\\ding\{107\}/g,"\u274B"],[/\\ding\{109\}/g,"\u274D"],[/\\ding\{111\}/g,"\u274F"],[/\\ding\{112\}/g,"\u2750"],[/\\ding\{113\}/g,"\u2751"],[/\\ding\{114\}/g,"\u2752"],[/\\ding\{118\}/g,"\u2756"],[/\\ding\{120\}/g,"\u2758"],[/\\ding\{121\}/g,"\u2759"],[/\\ding\{122\}/g,"\u275A"],[/\\ding\{123\}/g,"\u275B"],[/\\ding\{124\}/g,"\u275C"],[/\\ding\{125\}/g,"\u275D"],[/\\ding\{126\}/g,"\u275E"],[/\\ding\{161\}/g,"\u2761"],[/\\ding\{162\}/g,"\u2762"],[/\\ding\{163\}/g,"\u2763"],[/\\ding\{164\}/g,"\u2764"],[/\\ding\{165\}/g,"\u2765"],[/\\ding\{166\}/g,"\u2766"],[/\\ding\{167\}/g,"\u2767"],[/\\ding\{182\}/g,"\u2776"],[/\\ding\{183\}/g,"\u2777"],[/\\ding\{184\}/g,"\u2778"],[/\\ding\{185\}/g,"\u2779"],[/\\ding\{186\}/g,"\u277A"],[/\\ding\{187\}/g,"\u277B"],[/\\ding\{188\}/g,"\u277C"],[/\\ding\{189\}/g,"\u277D"],[/\\ding\{190\}/g,"\u277E"],[/\\ding\{191\}/g,"\u277F"],[/\\ding\{192\}/g,"\u2780"],[/\\ding\{193\}/g,"\u2781"],[/\\ding\{194\}/g,"\u2782"],[/\\ding\{195\}/g,"\u2783"],[/\\ding\{196\}/g,"\u2784"],[/\\ding\{197\}/g,"\u2785"],[/\\ding\{198\}/g,"\u2786"],[/\\ding\{199\}/g,"\u2787"],[/\\ding\{200\}/g,"\u2788"],[/\\ding\{201\}/g,"\u2789"],[/\\ding\{202\}/g,"\u278A"],[/\\ding\{203\}/g,"\u278B"],[/\\ding\{204\}/g,"\u278C"],[/\\ding\{205\}/g,"\u278D"],[/\\ding\{206\}/g,"\u278E"],[/\\ding\{207\}/g,"\u278F"],[/\\ding\{208\}/g,"\u2790"],[/\\ding\{209\}/g,"\u2791"],[/\\ding\{210\}/g,"\u2792"],[/\\ding\{211\}/g,"\u2793"],[/\\ding\{212\}/g,"\u2794"],[/\\ding\{216\}/g,"\u2798"],[/\\ding\{217\}/g,"\u2799"],[/\\ding\{218\}/g,"\u279A"],[/\\ding\{219\}/g,"\u279B"],[/\\ding\{220\}/g,"\u279C"],[/\\ding\{221\}/g,"\u279D"],[/\\ding\{222\}/g,"\u279E"],[/\\ding\{223\}/g,"\u279F"],[/\\ding\{224\}/g,"\u27A0"],[/\\ding\{225\}/g,"\u27A1"],[/\\ding\{226\}/g,"\u27A2"],[/\\ding\{227\}/g,"\u27A3"],[/\\ding\{228\}/g,"\u27A4"],[/\\ding\{229\}/g,"\u27A5"],[/\\ding\{230\}/g,"\u27A6"],[/\\ding\{231\}/g,"\u27A7"],[/\\ding\{232\}/g,"\u27A8"],[/\\ding\{233\}/g,"\u27A9"],[/\\ding\{234\}/g,"\u27AA"],[/\\ding\{235\}/g,"\u27AB"],[/\\ding\{236\}/g,"\u27AC"],[/\\ding\{237\}/g,"\u27AD"],[/\\ding\{238\}/g,"\u27AE"],[/\\ding\{239\}/g,"\u27AF"],[/\\ding\{241\}/g,"\u27B1"],[/\\ding\{242\}/g,"\u27B2"],[/\\ding\{243\}/g,"\u27B3"],[/\\ding\{244\}/g,"\u27B4"],[/\\ding\{245\}/g,"\u27B5"],[/\\ding\{246\}/g,"\u27B6"],[/\\ding\{247\}/g,"\u27B7"],[/\\ding\{248\}/g,"\u27B8"],[/\\ding\{249\}/g,"\u27B9"],[/\\ding\{250\}/g,"\u27BA"],[/\\ding\{251\}/g,"\u27BB"],[/\\ding\{252\}/g,"\u27BC"],[/\\ding\{253\}/g,"\u27BD"],[/\\ding\{254\}/g,"\u27BE"],[/\\longleftarrow /g,"\u27F5"],[/\\longrightarrow /g,"\u27F6"],[/\\longleftrightarrow /g,"\u27F7"],[/\\Longleftarrow /g,"\u27F8"],[/\\Longrightarrow /g,"\u27F9"],[/\\Longleftrightarrow /g,"\u27FA"],[/\\longmapsto /g,"\u27FC"],[/\\sim\\joinrel\\leadsto/g,"\u27FF"],[/\\ElsevierGlyph\{E212\}/g,"\u2905"],[/\\UpArrowBar /g,"\u2912"],[/\\DownArrowBar /g,"\u2913"],[/\\ElsevierGlyph\{E20C\}/g,"\u2923"],[/\\ElsevierGlyph\{E20D\}/g,"\u2924"],[/\\ElsevierGlyph\{E20B\}/g,"\u2925"],[/\\ElsevierGlyph\{E20A\}/g,"\u2926"],[/\\ElsevierGlyph\{E211\}/g,"\u2927"],[/\\ElsevierGlyph\{E20E\}/g,"\u2928"],[/\\ElsevierGlyph\{E20F\}/g,"\u2929"],[/\\ElsevierGlyph\{E210\}/g,"\u292A"],[/\\ElsevierGlyph\{E21C\}/g,"\u2933"],[/\\ElsevierGlyph\{E21D\}/g,"\u2933-00338"],[/\\ElsevierGlyph\{E21A\}/g,"\u2936"],[/\\ElsevierGlyph\{E219\}/g,"\u2937"],[/\\Elolarr /g,"\u2940"],[/\\Elorarr /g,"\u2941"],[/\\ElzRlarr /g,"\u2942"],[/\\ElzrLarr /g,"\u2944"],[/\\Elzrarrx /g,"\u2947"],[/\\LeftRightVector /g,"\u294E"],[/\\RightUpDownVector /g,"\u294F"],[/\\DownLeftRightVector /g,"\u2950"],[/\\LeftUpDownVector /g,"\u2951"],[/\\LeftVectorBar /g,"\u2952"],[/\\RightVectorBar /g,"\u2953"],[/\\RightUpVectorBar /g,"\u2954"],[/\\RightDownVectorBar /g,"\u2955"],[/\\DownLeftVectorBar /g,"\u2956"],[/\\DownRightVectorBar /g,"\u2957"],[/\\LeftUpVectorBar /g,"\u2958"],[/\\LeftDownVectorBar /g,"\u2959"],[/\\LeftTeeVector /g,"\u295A"],[/\\RightTeeVector /g,"\u295B"],[/\\RightUpTeeVector /g,"\u295C"],[/\\RightDownTeeVector /g,"\u295D"],[/\\DownLeftTeeVector /g,"\u295E"],[/\\DownRightTeeVector /g,"\u295F"],[/\\LeftUpTeeVector /g,"\u2960"],[/\\LeftDownTeeVector /g,"\u2961"],[/\\UpEquilibrium /g,"\u296E"],[/\\ReverseUpEquilibrium /g,"\u296F"],[/\\RoundImplies /g,"\u2970"],[/\\ElsevierGlyph\{E214\}/g,"\u297C"],[/\\ElsevierGlyph\{E215\}/g,"\u297D"],[/\\Elztfnc /g,"\u2980"],[/\\ElsevierGlyph\{3018\}/g,"\u2985"],[/\\Elroang /g,"\u2986"],[/\\ElsevierGlyph\{E291\}/g,"\u2994"],[/\\Elzddfnc /g,"\u2999"],[/\\Angle /g,"\u299C"],[/\\Elzlpargt /g,"\u29A0"],[/\\ElsevierGlyph\{E260\}/g,"\u29B5"],[/\\ElsevierGlyph\{E61B\}/g,"\u29B6"],[/\\ElzLap /g,"\u29CA"],[/\\Elzdefas /g,"\u29CB"],[/\\LeftTriangleBar /g,"\u29CF"],[/\\NotLeftTriangleBar /g,"\u29CF-00338"],[/\\RightTriangleBar /g,"\u29D0"],[/\\NotRightTriangleBar /g,"\u29D0-00338"],[/\\ElsevierGlyph\{E372\}/g,"\u29DC"],[/\\blacklozenge /g,"\u29EB"],[/\\RuleDelayed /g,"\u29F4"],[/\\Elxuplus /g,"\u2A04"],[/\\ElzThr /g,"\u2A05"],[/\\Elxsqcup /g,"\u2A06"],[/\\ElzInf /g,"\u2A07"],[/\\ElzSup /g,"\u2A08"],[/\\ElzCint /g,"\u2A0D"],[/\\clockoint /g,"\u2A0F"],[/\\ElsevierGlyph\{E395\}/g,"\u2A10"],[/\\sqrint /g,"\u2A16"],[/\\ElsevierGlyph\{E25A\}/g,"\u2A25"],[/\\ElsevierGlyph\{E25B\}/g,"\u2A2A"],[/\\ElsevierGlyph\{E25C\}/g,"\u2A2D"],[/\\ElsevierGlyph\{E25D\}/g,"\u2A2E"],[/\\ElzTimes /g,"\u2A2F"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A34"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A35"],[/\\ElsevierGlyph\{E259\}/g,"\u2A3C"],[/\\amalg /g,"\u2A3F"],[/\\ElzAnd /g,"\u2A53"],[/\\ElzOr /g,"\u2A54"],[/\\ElsevierGlyph\{E36E\}/g,"\u2A55"],[/\\ElOr /g,"\u2A56"],[/\\perspcorrespond /g,"\u2A5E"],[/\\Elzminhat /g,"\u2A5F"],[/\\ElsevierGlyph\{225A\}/g,"\u2A63"],[/\\stackrel\{*\}\{=\}/g,"\u2A6E"],[/\\Equal /g,"\u2A75"],[/\\leqslant /g,"\u2A7D"],[/\\nleqslant /g,"\u2A7D-00338"],[/\\geqslant /g,"\u2A7E"],[/\\ngeqslant /g,"\u2A7E-00338"],[/\\lessapprox /g,"\u2A85"],[/\\gtrapprox /g,"\u2A86"],[/\\lneq /g,"\u2A87"],[/\\gneq /g,"\u2A88"],[/\\lnapprox /g,"\u2A89"],[/\\gnapprox /g,"\u2A8A"],[/\\lesseqqgtr /g,"\u2A8B"],[/\\gtreqqless /g,"\u2A8C"],[/\\eqslantless /g,"\u2A95"],[/\\eqslantgtr /g,"\u2A96"],[/\\Pisymbol\{ppi020\}\{117\}/g,"\u2A9D"],[/\\Pisymbol\{ppi020\}\{105\}/g,"\u2A9E"],[/\\NestedLessLess /g,"\u2AA1"],[/\\NotNestedLessLess /g,"\u2AA1-00338"],[/\\NestedGreaterGreater /g,"\u2AA2"],[/\\NotNestedGreaterGreater /g,"\u2AA2-00338"],[/\\preceq /g,"\u2AAF"],[/\\not\\preceq /g,"\u2AAF-00338"],[/\\succeq /g,"\u2AB0"],[/\\not\\succeq /g,"\u2AB0-00338"],[/\\precneqq /g,"\u2AB5"],[/\\succneqq /g,"\u2AB6"],[/\\precapprox /g,"\u2AB7"],[/\\succapprox /g,"\u2AB8"],[/\\precnapprox /g,"\u2AB9"],[/\\succnapprox /g,"\u2ABA"],[/\\subseteqq /g,"\u2AC5"],[/\\nsubseteqq /g,"\u2AC5-00338"],[/\\supseteqq /g,"\u2AC6"],[/\\nsupseteqq/g,"\u2AC6-00338"],[/\\subsetneqq /g,"\u2ACB"],[/\\supsetneqq /g,"\u2ACC"],[/\\ElsevierGlyph\{E30D\}/g,"\u2AEB"],[/\\Elztdcol /g,"\u2AF6"],[/\\ElsevierGlyph\{300A\}/g,"\u300A"],[/\\ElsevierGlyph\{300B\}/g,"\u300B"],[/\\ElsevierGlyph\{3018\}/g,"\u3018"],[/\\ElsevierGlyph\{3019\}/g,"\u3019"],[/\\openbracketleft /g,"\u301A"],[/\\openbracketright /g,"\u301B"]];return this}if(typeof module!=="undefined"&&module.exports){module.exports=BibtexParser};
\ No newline at end of file
diff -r b737af143fcecafb89b187a2bd1b05d5cab6c3b5 -r fdcefd1c3661ea71661584e7bcc03f33022641d1 static/scripts/packed/mvc/citation/citation-view.js
--- a/static/scripts/packed/mvc/citation/citation-view.js
+++ b/static/scripts/packed/mvc/citation/citation-view.js
@@ -1,1 +1,1 @@
-define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,d,c){var b=Backbone.View.extend({tagName:"div",className:"citations",render:function(){this.$el.append("<p>"+this.formattedReference()+"</p>");return this},formattedReference:function(){var j=this.model;var i=j.entryType();var k=j.fields();var g="";var n=this._asSentence((k.author?k.author:"")+(k.year?(" ("+k.year+")"):""))+" ";var m=k.title||"";var h=k.pages?("pp. "+k.pages):"";var o=k.address;if(i=="article"){g=n+this._asSentence(m)+(k.journal?("In <em>"+k.journal+", "):"")+(k.volume?k.volume:"")+(k.number?("("+k.number+"), "):", ")+this._asSentence(h)+this._asSentence(k.address)+"</em>"}else{if(i=="inproceedings"||i=="proceedings"){g=n+this._asSentence(m)+(k.booktitle?("In <em>"+k.booktitle+", "):"")+(h?h:"")+(o?", "+o:"")+".</em>"}else{if(i=="mastersthesis"||i=="phdthesis"){g=n+this._asSentence(m)+(k.howpublished?k.howpublished+". ":"")+(k.note?k.note+".":"")}else{if(i=="techreport"){g=n+". "+this._asSentence(m)+this._asSentence(k.institution)+this._asSentence(k.number)+this._asSentence(k.type)}else{if(i=="book"||i=="inbook"||i=="incollection"){g=this._asSentence(n)+" "+this._formatBookInfo(k)}else{g=this._asSentence(n)+" "+this._asSentence(m)+this._asSentence(k.howpublished)+this._asSentence(k.note)}}}}}var l="";if(k.doi){l="http://dx.doi.org/"+k.doi;g+='[<a href="'+l+'">doi:'+k.doi+"</a>]"}var f=k.url||l;if(f){g+='[<a href="'+f+'">Link</a>]'}return g},_formatBookInfo:function(f){var g="";if(f.chapter){g+=f.chapter+" in "}if(f.title){g+="<em>"+f.title+"</em>"}if(f.editor){g+=", Edited by "+f.editor+", "}if(f.publisher){g+=", "+f.publisher}if(f.pages){g+=", pp. "+f.pages+""}if(f.series){g+=", <em>"+f.series+"</em>"}if(f.volume){g+=", Vol."+f.volume}if(f.issn){g+=", ISBN: "+f.issn}return g+"."},_asSentence:function(f){return(f&&f.trim())?f+". ":""}});var e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(g){var f=new b({model:g});this.$(".citations-formatted").append(f.render().el);var h=this.$(".citations-bibtex-text");h.val(h.val()+"\n\r"+g.attributes.content)},render:function(){this.$el.html(this.citationsElement());this.collection.each(function(f){this.renderCitation(f)},this);this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show();this.$(".citations-to-bibtex").hide();this.$(".citations-bibtex").show();this.$(".citations-formatted").hide();this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide();this.$(".citations-to-bibtex").show();this.$(".citations-bibtex").hide();this.$(".citations-formatted").show()},partialWarningElement:function(){if(this.collection.partial){return['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',"</div>",].join("")}else{return""}},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <i class="fa fa-pencil-square-o citations-to-bibtex" title="Select all as BibTeX."></i>',' <i class="fa fa-times citations-to-formatted" title="Return to formatted citation list."></i>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:b,CitationListView:e}});
\ No newline at end of file
+define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,d,c){var b=Backbone.View.extend({tagName:"div",className:"citations",render:function(){this.$el.append("<p>"+this.formattedReference()+"</p>");return this},formattedReference:function(){var k=this.model;var i=k.entryType();var l=k.fields();var g="";var o=this._asSentence((l.author?l.author:"")+(l.year?(" ("+l.year+")"):""))+" ";var n=l.title||"";var h=l.pages?("pp. "+l.pages):"";var p=l.address;if(i=="article"){var j=(l.volume?l.volume:"")+(l.number?(" ("+l.number+")"):"")+(h?", "+h:"");g=o+this._asSentence(n)+(l.journal?("In <em>"+l.journal+", "):"")+this._asSentence(j)+this._asSentence(l.address)+"</em>"}else{if(i=="inproceedings"||i=="proceedings"){g=o+this._asSentence(n)+(l.booktitle?("In <em>"+l.booktitle+", "):"")+(h?h:"")+(p?", "+p:"")+".</em>"}else{if(i=="mastersthesis"||i=="phdthesis"){g=o+this._asSentence(n)+(l.howpublished?l.howpublished+". ":"")+(l.note?l.note+".":"")}else{if(i=="techreport"){g=o+this._asSentence(n)+this._asSentence(l.institution)+this._asSentence(l.number)+this._asSentence(l.type)}else{if(i=="book"||i=="inbook"||i=="incollection"){g=o+" "+this._formatBookInfo(l)}else{g=o+" "+this._asSentence(n)+this._asSentence(l.howpublished)+this._asSentence(l.note)}}}}}var m="";if(l.doi){m="http://dx.doi.org/"+l.doi;g+='[<a href="'+m+'">doi:'+l.doi+"</a>]"}var f=l.url||m;if(f){g+='[<a href="'+f+'">Link</a>]'}return g},_formatBookInfo:function(f){var g="";if(f.chapter){g+=f.chapter+" in "}if(f.title){g+="<em>"+f.title+"</em>"}if(f.editor){g+=", Edited by "+f.editor+", "}if(f.publisher){g+=", "+f.publisher}if(f.pages){g+=", pp. "+f.pages+""}if(f.series){g+=", <em>"+f.series+"</em>"}if(f.volume){g+=", Vol."+f.volume}if(f.issn){g+=", ISBN: "+f.issn}return g+"."},_asSentence:function(f){return(f&&f.trim())?f+". ":""}});var e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(g){var f=new b({model:g});this.$(".citations-formatted").append(f.render().el);var h=this.$(".citations-bibtex-text");h.val(h.val()+"\n\r"+g.attributes.content)},render:function(){this.$el.html(this.citationsElement());this.collection.each(function(f){this.renderCitation(f)},this);this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show();this.$(".citations-to-bibtex").hide();this.$(".citations-bibtex").show();this.$(".citations-formatted").hide();this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide();this.$(".citations-to-bibtex").show();this.$(".citations-bibtex").hide();this.$(".citations-formatted").show()},partialWarningElement:function(){if(this.collection.partial){return['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',"</div>",].join("")}else{return""}},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <i class="fa fa-pencil-square-o citations-to-bibtex" title="Select all as BibTeX."></i>',' <i class="fa fa-times citations-to-formatted" title="Return to formatted citation list."></i>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:b,CitationListView:e}});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/82f8d68414f5/
Changeset: 82f8d68414f5
User: jmchilton
Date: 2014-09-25 17:49:29+00:00
Summary: Merge latest next-stable.
Affected #: 6 files
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 client/galaxy/scripts/libs/bibtex.js
--- a/client/galaxy/scripts/libs/bibtex.js
+++ b/client/galaxy/scripts/libs/bibtex.js
@@ -93,6 +93,7 @@
'booklet' : 14,
'masterthesis' : 15,
'conference' : 16
+ ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.
,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.
}
/** @private */ this.MACROS_ = {
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 client/galaxy/scripts/mvc/citation/citation-view.js
--- a/client/galaxy/scripts/mvc/citation/citation-view.js
+++ b/client/galaxy/scripts/mvc/citation/citation-view.js
@@ -24,11 +24,12 @@
var pages = fields.pages ? ("pp. " + fields.pages) : "";
var address = fields.address;
if( entryType == "article" ) {
+ var volume = (fields.volume ? fields.volume : "") +
+ (fields.number ? ( " (" + fields.number + ")" ) : "") +
+ (pages ? ", " + pages : "");
ref = authorsAndYear + this._asSentence(title) +
(fields.journal ? ("In <em>" + fields.journal + ", ") : "") +
- (fields.volume ? fields.volume : "") +
- (fields.number ? ( "(" + fields.number + "), " ) : ", " ) +
- this._asSentence(pages) +
+ this._asSentence(volume) +
this._asSentence(fields.address) +
"<\/em>";
} else if( entryType == "inproceedings" || entryType == "proceedings" ) {
@@ -43,14 +44,14 @@
(fields.howpublished ? fields.howpublished + ". " : "") +
(fields.note ? fields.note + "." : "");
} else if( entryType == "techreport" ) {
- ref = authorsAndYear + ". " + this._asSentence(title) +
+ ref = authorsAndYear + this._asSentence(title) +
this._asSentence(fields.institution) +
this._asSentence(fields.number) +
this._asSentence(fields.type);
} else if( entryType == "book" || entryType == "inbook" || entryType == "incollection" ) {
- ref = this._asSentence(authorsAndYear) + " " + this._formatBookInfo(fields);
+ ref = authorsAndYear + " " + this._formatBookInfo(fields);
} else {
- ref = this._asSentence(authorsAndYear) + " " + this._asSentence(title) +
+ ref = authorsAndYear + " " + this._asSentence(title) +
this._asSentence(fields.howpublished) +
this._asSentence(fields.note);
}
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 static/scripts/libs/bibtex.js
--- a/static/scripts/libs/bibtex.js
+++ b/static/scripts/libs/bibtex.js
@@ -93,6 +93,7 @@
'booklet' : 14,
'masterthesis' : 15,
'conference' : 16
+ ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.
,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.
}
/** @private */ this.MACROS_ = {
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 static/scripts/mvc/citation/citation-view.js
--- a/static/scripts/mvc/citation/citation-view.js
+++ b/static/scripts/mvc/citation/citation-view.js
@@ -24,11 +24,12 @@
var pages = fields.pages ? ("pp. " + fields.pages) : "";
var address = fields.address;
if( entryType == "article" ) {
+ var volume = (fields.volume ? fields.volume : "") +
+ (fields.number ? ( " (" + fields.number + ")" ) : "") +
+ (pages ? ", " + pages : "");
ref = authorsAndYear + this._asSentence(title) +
(fields.journal ? ("In <em>" + fields.journal + ", ") : "") +
- (fields.volume ? fields.volume : "") +
- (fields.number ? ( "(" + fields.number + "), " ) : ", " ) +
- this._asSentence(pages) +
+ this._asSentence(volume) +
this._asSentence(fields.address) +
"<\/em>";
} else if( entryType == "inproceedings" || entryType == "proceedings" ) {
@@ -43,14 +44,14 @@
(fields.howpublished ? fields.howpublished + ". " : "") +
(fields.note ? fields.note + "." : "");
} else if( entryType == "techreport" ) {
- ref = authorsAndYear + ". " + this._asSentence(title) +
+ ref = authorsAndYear + this._asSentence(title) +
this._asSentence(fields.institution) +
this._asSentence(fields.number) +
this._asSentence(fields.type);
} else if( entryType == "book" || entryType == "inbook" || entryType == "incollection" ) {
- ref = this._asSentence(authorsAndYear) + " " + this._formatBookInfo(fields);
+ ref = authorsAndYear + " " + this._formatBookInfo(fields);
} else {
- ref = this._asSentence(authorsAndYear) + " " + this._asSentence(title) +
+ ref = authorsAndYear + " " + this._asSentence(title) +
this._asSentence(fields.howpublished) +
this._asSentence(fields.note);
}
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 static/scripts/packed/libs/bibtex.js
--- a/static/scripts/packed/libs/bibtex.js
+++ b/static/scripts/packed/libs/bibtex.js
@@ -1,1 +1,1 @@
-function BibtexParser(c){if(typeof c=="string"){var d={};var a=[];function b(f){a.push(f)}var e=BibtexParser.call(d,b);e.parse(c);return{entries:a,errors:e.getErrors()}}if(typeof c!="function"){throw"Invalid parser construction."}this.STATES_={ENTRY_OR_JUNK:0,OBJECT_TYPE:1,ENTRY_KEY:2,KV_KEY:3,EQUALS:4,KV_VALUE:5};this.DATA_={};this.CALLBACK_=c;this.CHAR_=0;this.LINE_=1;this.CHAR_IN_LINE_=0;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={};this.SKIPTILLEOL_=false;this.VALBRACES_=null;this.BRACETYPE_=null;this.BRACECOUNT_=0;this.STATE_=this.STATES_.ENTRY_OR_JUNK;this.ERRORS_=[];this.ENTRY_TYPES_={inproceedings:1,proceedings:2,article:3,techreport:4,misc:5,mastersthesis:6,book:7,phdthesis:8,incollection:9,unpublished:10,inbook:11,manual:12,periodical:13,booklet:14,masterthesis:15,conference:16,data:999};this.MACROS_={jan:"January",feb:"February",mar:"March",apr:"April",may:"May",jun:"June",jul:"July",aug:"August",sep:"September",oct:"October",nov:"November",dec:"December",Jan:"January",Feb:"February",Mar:"March",Apr:"April",May:"May",Jun:"June",Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November",Dec:"December"};this.getErrors=function(){return this.ERRORS_};this.parse=function(f){for(var g=0;g<f.length;g++){this.processCharacter_(f[g])}};this.error_=function(f){this.ERRORS_.push([this.LINE_,this.CHAR_IN_LINE_,this.CHAR_,f])};this.processEntry_=function(){var h=this.DATA_;if(h.Fields){for(var k in h.Fields){var p=h.Fields[k];for(var j=0;j<this.CHARCONV_.length;j++){var q=this.CHARCONV_[j][0];var n=this.CHARCONV_[j][1];p=p.replace(q,n)}p=p.replace(/[\n\r\t]/g," ").replace(/\s\s+/g," ").replace(/^\s+|\s+$/g,"");var l=p.length;var g="";for(var j=0;j<l;j++){var m=p[j];var o=false;if(m=="\\"&&j<l-1){m=p[++j]}else{if(m=="{"||m=="}"){o=true}}if(!o){g+=m}}h.Fields[k]=g}}if(h.ObjectType=="string"){for(var k in h.Fields){this.MACROS_[k]=h.Fields[k]}}else{this.CALLBACK_(h)}};this.processCharacter_=function(l){this.CHAR_++;this.CHAR_IN_LINE_++;if(l=="\n"){this.LINE_++;this.CHAR_IN_LINE_=1}if(this.SKIPTILLEOL_){if(l=="\n"){this.SKIPTILLEOL_=false}return}if(this.SKIPCOMMENT_&&l=="%"){this.SKIPTILLEOL_=true;return}if(this.SKIPWS_&&/\s/.test(l)){return}this.SKIPWS_=false;this.SKIPCOMMENT_=false;this.SKIPTILLEOL_=false;var f=true;while(f){f=false;switch(this.STATE_){case this.STATES_.ENTRY_OR_JUNK:if(l=="@"){this.STATE_=this.STATES_.OBJECT_TYPE;this.DATA_={ObjectType:""}}this.BRACETYPE_=null;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break;case this.STATES_.OBJECT_TYPE:if(/[A-Za-z]/.test(l)){this.DATA_.ObjectType+=l.toLowerCase();this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{var i=this.DATA_.ObjectType;if(i=="comment"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i=="string"){this.DATA_.ObjectType=i;this.DATA_.Fields={};this.BRACETYPE_=l;this.BRACECOUNT_=1;this.STATE_=this.STATES_.KV_KEY;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={Key:""}}else{if(i=="preamble"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i in this.ENTRY_TYPES_){this.DATA_.ObjectType="entry";this.DATA_.EntryType=i;this.DATA_.EntryKey="";this.STATE_=this.STATES_.ENTRY_KEY;f=true}else{this.error_('Unrecognized object type: "'+this.DATA_.ObjectType+'"');this.STATE_=this.STATES_.ENTRY_OR_JUNK}}}}}break;case this.STATES_.ENTRY_KEY:if((l==="{"||l==="(")&&this.BRACETYPE_==null){this.BRACETYPE_=l;this.BRACECOUNT_=1;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break}if(/[,%\s]/.test(l)){if(this.DATA_.EntryKey.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{if(this.BRACETYPE_==null){this.error_("No opening brace for object.");this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;f=true;this.STATE_=this.STATES_.KV_KEY;this.PARSETMP_.Key="";this.DATA_.Fields={}}}}else{this.DATA_.EntryKey+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}break;case this.STATES_.KV_KEY:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(/[\-A-Za-z:]/.test(l)){this.PARSETMP_.Key+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{if(this.PARSETMP_.Key.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.EQUALS;f=true}}break;case this.STATES_.EQUALS:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.error_('Key-value pair has key "'+this.PARSETMP_.Key+'", but no value.');this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(l=="="){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_VALUE;this.PARSETMP_.Value="";this.VALBRACES_={'"':[],"{":[]}}break;case this.STATES_.KV_VALUE:var k=this.VALBRACES_;var j=this.PARSETMP_.Value;var h=false;if(l=='"'||l=="{"||l=="}"||l==","){if(l==","){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}h=true}}if(l=='"'){if(0===k['"'].length+k["{"].length){k['"'].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false;break}if(k['"'].length==1&&k["{"].length==0&&(j.length==0||j[j.length-1]!="\\")){h=true}else{}}if(l=="{"){if(j.length==0||j[j.length-1]!="\\"){k["{"].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{}}if(l=="}"){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}f=true;h=true}else{if(j.length==0||j[j.length-1]!="\\"){if(k["{"].length>0){k["{"].splice(k["{"].length-1,1);if(0==k["{"].length+k['"'].length){h=true}else{}}}else{}}}}if(h){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_KEY;this.DATA_.Fields[this.PARSETMP_.Key]=this.PARSETMP_.Value;this.PARSETMP_={Key:""};this.VALBRACES_=null}else{this.PARSETMP_.Value+=l}break}}};this.CHARCONV_=[[/\\space /g,"\u0020"],[/\\textdollar /g,"\u0024"],[/\\textquotesingle /g,"\u0027"],[/\\ast /g,"\u002A"],[/\\textbackslash /g,"\u005C"],[/\\\^\{\}/g,"\u005E"],[/\\textasciigrave /g,"\u0060"],[/\\lbrace /g,"\u007B"],[/\\vert /g,"\u007C"],[/\\rbrace /g,"\u007D"],[/\\textasciitilde /g,"\u007E"],[/\\textexclamdown /g,"\u00A1"],[/\\textcent /g,"\u00A2"],[/\\textsterling /g,"\u00A3"],[/\\textcurrency /g,"\u00A4"],[/\\textyen /g,"\u00A5"],[/\\textbrokenbar /g,"\u00A6"],[/\\textsection /g,"\u00A7"],[/\\textasciidieresis /g,"\u00A8"],[/\\textcopyright /g,"\u00A9"],[/\\textordfeminine /g,"\u00AA"],[/\\guillemotleft /g,"\u00AB"],[/\\lnot /g,"\u00AC"],[/\\textregistered /g,"\u00AE"],[/\\textasciimacron /g,"\u00AF"],[/\\textdegree /g,"\u00B0"],[/\\pm /g,"\u00B1"],[/\\textasciiacute /g,"\u00B4"],[/\\mathrm\{\\mu\}/g,"\u00B5"],[/\\textparagraph /g,"\u00B6"],[/\\cdot /g,"\u00B7"],[/\\c\{\}/g,"\u00B8"],[/\\textordmasculine /g,"\u00BA"],[/\\guillemotright /g,"\u00BB"],[/\\textonequarter /g,"\u00BC"],[/\\textonehalf /g,"\u00BD"],[/\\textthreequarters /g,"\u00BE"],[/\\textquestiondown /g,"\u00BF"],[/\\`\{A\}/g,"\u00C0"],[/\\'\{A\}/g,"\u00C1"],[/\\\^\{A\}/g,"\u00C2"],[/\\~\{A\}/g,"\u00C3"],[/\\"\{A\}/g,"\u00C4"],[/\\AA /g,"\u00C5"],[/\\AE /g,"\u00C6"],[/\\c\{C\}/g,"\u00C7"],[/\\`\{E\}/g,"\u00C8"],[/\\'\{E\}/g,"\u00C9"],[/\\\^\{E\}/g,"\u00CA"],[/\\"\{E\}/g,"\u00CB"],[/\\`\{I\}/g,"\u00CC"],[/\\'\{I\}/g,"\u00CD"],[/\\\^\{I\}/g,"\u00CE"],[/\\"\{I\}/g,"\u00CF"],[/\\DH /g,"\u00D0"],[/\\~\{N\}/g,"\u00D1"],[/\\`\{O\}/g,"\u00D2"],[/\\'\{O\}/g,"\u00D3"],[/\\\^\{O\}/g,"\u00D4"],[/\\~\{O\}/g,"\u00D5"],[/\\"\{O\}/g,"\u00D6"],[/\\texttimes /g,"\u00D7"],[/\\O /g,"\u00D8"],[/\\`\{U\}/g,"\u00D9"],[/\\'\{U\}/g,"\u00DA"],[/\\\^\{U\}/g,"\u00DB"],[/\\"\{U\}/g,"\u00DC"],[/\\'\{Y\}/g,"\u00DD"],[/\\TH /g,"\u00DE"],[/\\ss /g,"\u00DF"],[/\\`\{a\}/g,"\u00E0"],[/\\'\{a\}/g,"\u00E1"],[/\\\^\{a\}/g,"\u00E2"],[/\\~\{a\}/g,"\u00E3"],[/\\"\{a\}/g,"\u00E4"],[/\\aa /g,"\u00E5"],[/\\ae /g,"\u00E6"],[/\\c\{c\}/g,"\u00E7"],[/\\`\{e\}/g,"\u00E8"],[/\\'\{e\}/g,"\u00E9"],[/\\\^\{e\}/g,"\u00EA"],[/\\"\{e\}/g,"\u00EB"],[/\\`\{\\i\}/g,"\u00EC"],[/\\'\{\\i\}/g,"\u00ED"],[/\\\^\{\\i\}/g,"\u00EE"],[/\\"\{\\i\}/g,"\u00EF"],[/\\dh /g,"\u00F0"],[/\\~\{n\}/g,"\u00F1"],[/\\`\{o\}/g,"\u00F2"],[/\\'\{o\}/g,"\u00F3"],[/\\\^\{o\}/g,"\u00F4"],[/\\~\{o\}/g,"\u00F5"],[/\\"\{o\}/g,"\u00F6"],[/\\div /g,"\u00F7"],[/\\o /g,"\u00F8"],[/\\`\{u\}/g,"\u00F9"],[/\\'\{u\}/g,"\u00FA"],[/\\\^\{u\}/g,"\u00FB"],[/\\"\{u\}/g,"\u00FC"],[/\\'\{y\}/g,"\u00FD"],[/\\th /g,"\u00FE"],[/\\"\{y\}/g,"\u00FF"],[/\\=\{A\}/g,"\u0100"],[/\\=\{a\}/g,"\u0101"],[/\\u\{A\}/g,"\u0102"],[/\\u\{a\}/g,"\u0103"],[/\\k\{A\}/g,"\u0104"],[/\\k\{a\}/g,"\u0105"],[/\\'\{C\}/g,"\u0106"],[/\\'\{c\}/g,"\u0107"],[/\\\^\{C\}/g,"\u0108"],[/\\\^\{c\}/g,"\u0109"],[/\\.\{C\}/g,"\u010A"],[/\\.\{c\}/g,"\u010B"],[/\\v\{C\}/g,"\u010C"],[/\\v\{c\}/g,"\u010D"],[/\\v\{D\}/g,"\u010E"],[/\\v\{d\}/g,"\u010F"],[/\\DJ /g,"\u0110"],[/\\dj /g,"\u0111"],[/\\=\{E\}/g,"\u0112"],[/\\=\{e\}/g,"\u0113"],[/\\u\{E\}/g,"\u0114"],[/\\u\{e\}/g,"\u0115"],[/\\.\{E\}/g,"\u0116"],[/\\.\{e\}/g,"\u0117"],[/\\k\{E\}/g,"\u0118"],[/\\k\{e\}/g,"\u0119"],[/\\v\{E\}/g,"\u011A"],[/\\v\{e\}/g,"\u011B"],[/\\\^\{G\}/g,"\u011C"],[/\\\^\{g\}/g,"\u011D"],[/\\u\{G\}/g,"\u011E"],[/\\u\{g\}/g,"\u011F"],[/\\.\{G\}/g,"\u0120"],[/\\.\{g\}/g,"\u0121"],[/\\c\{G\}/g,"\u0122"],[/\\c\{g\}/g,"\u0123"],[/\\\^\{H\}/g,"\u0124"],[/\\\^\{h\}/g,"\u0125"],[/\\Elzxh /g,"\u0127"],[/\\~\{I\}/g,"\u0128"],[/\\~\{\\i\}/g,"\u0129"],[/\\=\{I\}/g,"\u012A"],[/\\=\{\\i\}/g,"\u012B"],[/\\u\{I\}/g,"\u012C"],[/\\u\{\\i\}/g,"\u012D"],[/\\k\{I\}/g,"\u012E"],[/\\k\{i\}/g,"\u012F"],[/\\.\{I\}/g,"\u0130"],[/\\i /g,"\u0131"],[/\\\^\{J\}/g,"\u0134"],[/\\\^\{\\j\}/g,"\u0135"],[/\\c\{K\}/g,"\u0136"],[/\\c\{k\}/g,"\u0137"],[/\\'\{L\}/g,"\u0139"],[/\\'\{l\}/g,"\u013A"],[/\\c\{L\}/g,"\u013B"],[/\\c\{l\}/g,"\u013C"],[/\\v\{L\}/g,"\u013D"],[/\\v\{l\}/g,"\u013E"],[/\\L /g,"\u0141"],[/\\l /g,"\u0142"],[/\\'\{N\}/g,"\u0143"],[/\\'\{n\}/g,"\u0144"],[/\\c\{N\}/g,"\u0145"],[/\\c\{n\}/g,"\u0146"],[/\\v\{N\}/g,"\u0147"],[/\\v\{n\}/g,"\u0148"],[/\\NG /g,"\u014A"],[/\\ng /g,"\u014B"],[/\\=\{O\}/g,"\u014C"],[/\\=\{o\}/g,"\u014D"],[/\\u\{O\}/g,"\u014E"],[/\\u\{o\}/g,"\u014F"],[/\\H\{O\}/g,"\u0150"],[/\\H\{o\}/g,"\u0151"],[/\\OE /g,"\u0152"],[/\\oe /g,"\u0153"],[/\\'\{R\}/g,"\u0154"],[/\\'\{r\}/g,"\u0155"],[/\\c\{R\}/g,"\u0156"],[/\\c\{r\}/g,"\u0157"],[/\\v\{R\}/g,"\u0158"],[/\\v\{r\}/g,"\u0159"],[/\\'\{S\}/g,"\u015A"],[/\\'\{s\}/g,"\u015B"],[/\\\^\{S\}/g,"\u015C"],[/\\\^\{s\}/g,"\u015D"],[/\\c\{S\}/g,"\u015E"],[/\\c\{s\}/g,"\u015F"],[/\\v\{S\}/g,"\u0160"],[/\\v\{s\}/g,"\u0161"],[/\\c\{T\}/g,"\u0162"],[/\\c\{t\}/g,"\u0163"],[/\\v\{T\}/g,"\u0164"],[/\\v\{t\}/g,"\u0165"],[/\\~\{U\}/g,"\u0168"],[/\\~\{u\}/g,"\u0169"],[/\\=\{U\}/g,"\u016A"],[/\\=\{u\}/g,"\u016B"],[/\\u\{U\}/g,"\u016C"],[/\\u\{u\}/g,"\u016D"],[/\\r\{U\}/g,"\u016E"],[/\\r\{u\}/g,"\u016F"],[/\\H\{U\}/g,"\u0170"],[/\\H\{u\}/g,"\u0171"],[/\\k\{U\}/g,"\u0172"],[/\\k\{u\}/g,"\u0173"],[/\\\^\{W\}/g,"\u0174"],[/\\\^\{w\}/g,"\u0175"],[/\\\^\{Y\}/g,"\u0176"],[/\\\^\{y\}/g,"\u0177"],[/\\"\{Y\}/g,"\u0178"],[/\\'\{Z\}/g,"\u0179"],[/\\'\{z\}/g,"\u017A"],[/\\.\{Z\}/g,"\u017B"],[/\\.\{z\}/g,"\u017C"],[/\\v\{Z\}/g,"\u017D"],[/\\v\{z\}/g,"\u017E"],[/\\texthvlig /g,"\u0195"],[/\\textnrleg /g,"\u019E"],[/\\eth /g,"\u01AA"],[/\\textdoublepipe /g,"\u01C2"],[/\\'\{g\}/g,"\u01F5"],[/\\Elztrna /g,"\u0250"],[/\\Elztrnsa /g,"\u0252"],[/\\Elzopeno /g,"\u0254"],[/\\Elzrtld /g,"\u0256"],[/\\Elzschwa /g,"\u0259"],[/\\varepsilon /g,"\u025B"],[/\\Elzpgamma /g,"\u0263"],[/\\Elzpbgam /g,"\u0264"],[/\\Elztrnh /g,"\u0265"],[/\\Elzbtdl /g,"\u026C"],[/\\Elzrtll /g,"\u026D"],[/\\Elztrnm /g,"\u026F"],[/\\Elztrnmlr /g,"\u0270"],[/\\Elzltlmr /g,"\u0271"],[/\\Elzltln /g,"\u0272"],[/\\Elzrtln /g,"\u0273"],[/\\Elzclomeg /g,"\u0277"],[/\\textphi /g,"\u0278"],[/\\Elztrnr /g,"\u0279"],[/\\Elztrnrl /g,"\u027A"],[/\\Elzrttrnr /g,"\u027B"],[/\\Elzrl /g,"\u027C"],[/\\Elzrtlr /g,"\u027D"],[/\\Elzfhr /g,"\u027E"],[/\\Elzrtls /g,"\u0282"],[/\\Elzesh /g,"\u0283"],[/\\Elztrnt /g,"\u0287"],[/\\Elzrtlt /g,"\u0288"],[/\\Elzpupsil /g,"\u028A"],[/\\Elzpscrv /g,"\u028B"],[/\\Elzinvv /g,"\u028C"],[/\\Elzinvw /g,"\u028D"],[/\\Elztrny /g,"\u028E"],[/\\Elzrtlz /g,"\u0290"],[/\\Elzyogh /g,"\u0292"],[/\\Elzglst /g,"\u0294"],[/\\Elzreglst /g,"\u0295"],[/\\Elzinglst /g,"\u0296"],[/\\textturnk /g,"\u029E"],[/\\Elzdyogh /g,"\u02A4"],[/\\Elztesh /g,"\u02A7"],[/\\textasciicaron /g,"\u02C7"],[/\\Elzverts /g,"\u02C8"],[/\\Elzverti /g,"\u02CC"],[/\\Elzlmrk /g,"\u02D0"],[/\\Elzhlmrk /g,"\u02D1"],[/\\Elzsbrhr /g,"\u02D2"],[/\\Elzsblhr /g,"\u02D3"],[/\\Elzrais /g,"\u02D4"],[/\\Elzlow /g,"\u02D5"],[/\\textasciibreve /g,"\u02D8"],[/\\textperiodcentered /g,"\u02D9"],[/\\r\{\}/g,"\u02DA"],[/\\k\{\}/g,"\u02DB"],[/\\texttildelow /g,"\u02DC"],[/\\H\{\}/g,"\u02DD"],[/\\tone\{55\}/g,"\u02E5"],[/\\tone\{44\}/g,"\u02E6"],[/\\tone\{33\}/g,"\u02E7"],[/\\tone\{22\}/g,"\u02E8"],[/\\tone\{11\}/g,"\u02E9"],[/\\cyrchar\\C/g,"\u030F"],[/\\Elzpalh /g,"\u0321"],[/\\Elzrh /g,"\u0322"],[/\\Elzsbbrg /g,"\u032A"],[/\\Elzxl /g,"\u0335"],[/\\Elzbar /g,"\u0336"],[/\\'\{A\}/g,"\u0386"],[/\\'\{E\}/g,"\u0388"],[/\\'\{H\}/g,"\u0389"],[/\\'\{\}\{I\}/g,"\u038A"],[/\\'\{\}O/g,"\u038C"],[/\\mathrm\{'Y\}/g,"\u038E"],[/\\mathrm\{'\\Omega\}/g,"\u038F"],[/\\acute\{\\ddot\{\\iota\}\}/g,"\u0390"],[/\\Alpha /g,"\u0391"],[/\\Beta /g,"\u0392"],[/\\Gamma /g,"\u0393"],[/\\Delta /g,"\u0394"],[/\\Epsilon /g,"\u0395"],[/\\Zeta /g,"\u0396"],[/\\Eta /g,"\u0397"],[/\\Theta /g,"\u0398"],[/\\Iota /g,"\u0399"],[/\\Kappa /g,"\u039A"],[/\\Lambda /g,"\u039B"],[/\\Xi /g,"\u039E"],[/\\Pi /g,"\u03A0"],[/\\Rho /g,"\u03A1"],[/\\Sigma /g,"\u03A3"],[/\\Tau /g,"\u03A4"],[/\\Upsilon /g,"\u03A5"],[/\\Phi /g,"\u03A6"],[/\\Chi /g,"\u03A7"],[/\\Psi /g,"\u03A8"],[/\\Omega /g,"\u03A9"],[/\\mathrm\{\\ddot\{I\}\}/g,"\u03AA"],[/\\mathrm\{\\ddot\{Y\}\}/g,"\u03AB"],[/\\'\{\$\\alpha\$\}/g,"\u03AC"],[/\\acute\{\\epsilon\}/g,"\u03AD"],[/\\acute\{\\eta\}/g,"\u03AE"],[/\\acute\{\\iota\}/g,"\u03AF"],[/\\acute\{\\ddot\{\\upsilon\}\}/g,"\u03B0"],[/\\alpha /g,"\u03B1"],[/\\beta /g,"\u03B2"],[/\\gamma /g,"\u03B3"],[/\\delta /g,"\u03B4"],[/\\epsilon /g,"\u03B5"],[/\\zeta /g,"\u03B6"],[/\\eta /g,"\u03B7"],[/\\texttheta /g,"\u03B8"],[/\\iota /g,"\u03B9"],[/\\kappa /g,"\u03BA"],[/\\lambda /g,"\u03BB"],[/\\mu /g,"\u03BC"],[/\\nu /g,"\u03BD"],[/\\xi /g,"\u03BE"],[/\\pi /g,"\u03C0"],[/\\rho /g,"\u03C1"],[/\\varsigma /g,"\u03C2"],[/\\sigma /g,"\u03C3"],[/\\tau /g,"\u03C4"],[/\\upsilon /g,"\u03C5"],[/\\varphi /g,"\u03C6"],[/\\chi /g,"\u03C7"],[/\\psi /g,"\u03C8"],[/\\omega /g,"\u03C9"],[/\\ddot\{\\iota\}/g,"\u03CA"],[/\\ddot\{\\upsilon\}/g,"\u03CB"],[/\\'\{o\}/g,"\u03CC"],[/\\acute\{\\upsilon\}/g,"\u03CD"],[/\\acute\{\\omega\}/g,"\u03CE"],[/\\Pisymbol\{ppi022\}\{87\}/g,"\u03D0"],[/\\textvartheta /g,"\u03D1"],[/\\Upsilon /g,"\u03D2"],[/\\phi /g,"\u03D5"],[/\\varpi /g,"\u03D6"],[/\\Stigma /g,"\u03DA"],[/\\Digamma /g,"\u03DC"],[/\\digamma /g,"\u03DD"],[/\\Koppa /g,"\u03DE"],[/\\Sampi /g,"\u03E0"],[/\\varkappa /g,"\u03F0"],[/\\varrho /g,"\u03F1"],[/\\textTheta /g,"\u03F4"],[/\\backepsilon /g,"\u03F6"],[/\\cyrchar\\CYRYO /g,"\u0401"],[/\\cyrchar\\CYRDJE /g,"\u0402"],[/\\cyrchar\{\\'\\CYRG\}/g,"\u0403"],[/\\cyrchar\\CYRIE /g,"\u0404"],[/\\cyrchar\\CYRDZE /g,"\u0405"],[/\\cyrchar\\CYRII /g,"\u0406"],[/\\cyrchar\\CYRYI /g,"\u0407"],[/\\cyrchar\\CYRJE /g,"\u0408"],[/\\cyrchar\\CYRLJE /g,"\u0409"],[/\\cyrchar\\CYRNJE /g,"\u040A"],[/\\cyrchar\\CYRTSHE /g,"\u040B"],[/\\cyrchar\{\\'\\CYRK\}/g,"\u040C"],[/\\cyrchar\\CYRUSHRT /g,"\u040E"],[/\\cyrchar\\CYRDZHE /g,"\u040F"],[/\\cyrchar\\CYRA /g,"\u0410"],[/\\cyrchar\\CYRB /g,"\u0411"],[/\\cyrchar\\CYRV /g,"\u0412"],[/\\cyrchar\\CYRG /g,"\u0413"],[/\\cyrchar\\CYRD /g,"\u0414"],[/\\cyrchar\\CYRE /g,"\u0415"],[/\\cyrchar\\CYRZH /g,"\u0416"],[/\\cyrchar\\CYRZ /g,"\u0417"],[/\\cyrchar\\CYRI /g,"\u0418"],[/\\cyrchar\\CYRISHRT /g,"\u0419"],[/\\cyrchar\\CYRK /g,"\u041A"],[/\\cyrchar\\CYRL /g,"\u041B"],[/\\cyrchar\\CYRM /g,"\u041C"],[/\\cyrchar\\CYRN /g,"\u041D"],[/\\cyrchar\\CYRO /g,"\u041E"],[/\\cyrchar\\CYRP /g,"\u041F"],[/\\cyrchar\\CYRR /g,"\u0420"],[/\\cyrchar\\CYRS /g,"\u0421"],[/\\cyrchar\\CYRT /g,"\u0422"],[/\\cyrchar\\CYRU /g,"\u0423"],[/\\cyrchar\\CYRF /g,"\u0424"],[/\\cyrchar\\CYRH /g,"\u0425"],[/\\cyrchar\\CYRC /g,"\u0426"],[/\\cyrchar\\CYRCH /g,"\u0427"],[/\\cyrchar\\CYRSH /g,"\u0428"],[/\\cyrchar\\CYRSHCH /g,"\u0429"],[/\\cyrchar\\CYRHRDSN /g,"\u042A"],[/\\cyrchar\\CYRERY /g,"\u042B"],[/\\cyrchar\\CYRSFTSN /g,"\u042C"],[/\\cyrchar\\CYREREV /g,"\u042D"],[/\\cyrchar\\CYRYU /g,"\u042E"],[/\\cyrchar\\CYRYA /g,"\u042F"],[/\\cyrchar\\cyra /g,"\u0430"],[/\\cyrchar\\cyrb /g,"\u0431"],[/\\cyrchar\\cyrv /g,"\u0432"],[/\\cyrchar\\cyrg /g,"\u0433"],[/\\cyrchar\\cyrd /g,"\u0434"],[/\\cyrchar\\cyre /g,"\u0435"],[/\\cyrchar\\cyrzh /g,"\u0436"],[/\\cyrchar\\cyrz /g,"\u0437"],[/\\cyrchar\\cyri /g,"\u0438"],[/\\cyrchar\\cyrishrt /g,"\u0439"],[/\\cyrchar\\cyrk /g,"\u043A"],[/\\cyrchar\\cyrl /g,"\u043B"],[/\\cyrchar\\cyrm /g,"\u043C"],[/\\cyrchar\\cyrn /g,"\u043D"],[/\\cyrchar\\cyro /g,"\u043E"],[/\\cyrchar\\cyrp /g,"\u043F"],[/\\cyrchar\\cyrr /g,"\u0440"],[/\\cyrchar\\cyrs /g,"\u0441"],[/\\cyrchar\\cyrt /g,"\u0442"],[/\\cyrchar\\cyru /g,"\u0443"],[/\\cyrchar\\cyrf /g,"\u0444"],[/\\cyrchar\\cyrh /g,"\u0445"],[/\\cyrchar\\cyrc /g,"\u0446"],[/\\cyrchar\\cyrch /g,"\u0447"],[/\\cyrchar\\cyrsh /g,"\u0448"],[/\\cyrchar\\cyrshch /g,"\u0449"],[/\\cyrchar\\cyrhrdsn /g,"\u044A"],[/\\cyrchar\\cyrery /g,"\u044B"],[/\\cyrchar\\cyrsftsn /g,"\u044C"],[/\\cyrchar\\cyrerev /g,"\u044D"],[/\\cyrchar\\cyryu /g,"\u044E"],[/\\cyrchar\\cyrya /g,"\u044F"],[/\\cyrchar\\cyryo /g,"\u0451"],[/\\cyrchar\\cyrdje /g,"\u0452"],[/\\cyrchar\{\\'\\cyrg\}/g,"\u0453"],[/\\cyrchar\\cyrie /g,"\u0454"],[/\\cyrchar\\cyrdze /g,"\u0455"],[/\\cyrchar\\cyrii /g,"\u0456"],[/\\cyrchar\\cyryi /g,"\u0457"],[/\\cyrchar\\cyrje /g,"\u0458"],[/\\cyrchar\\cyrlje /g,"\u0459"],[/\\cyrchar\\cyrnje /g,"\u045A"],[/\\cyrchar\\cyrtshe /g,"\u045B"],[/\\cyrchar\{\\'\\cyrk\}/g,"\u045C"],[/\\cyrchar\\cyrushrt /g,"\u045E"],[/\\cyrchar\\cyrdzhe /g,"\u045F"],[/\\cyrchar\\CYROMEGA /g,"\u0460"],[/\\cyrchar\\cyromega /g,"\u0461"],[/\\cyrchar\\CYRYAT /g,"\u0462"],[/\\cyrchar\\CYRIOTE /g,"\u0464"],[/\\cyrchar\\cyriote /g,"\u0465"],[/\\cyrchar\\CYRLYUS /g,"\u0466"],[/\\cyrchar\\cyrlyus /g,"\u0467"],[/\\cyrchar\\CYRIOTLYUS /g,"\u0468"],[/\\cyrchar\\cyriotlyus /g,"\u0469"],[/\\cyrchar\\CYRBYUS /g,"\u046A"],[/\\cyrchar\\CYRIOTBYUS /g,"\u046C"],[/\\cyrchar\\cyriotbyus /g,"\u046D"],[/\\cyrchar\\CYRKSI /g,"\u046E"],[/\\cyrchar\\cyrksi /g,"\u046F"],[/\\cyrchar\\CYRPSI /g,"\u0470"],[/\\cyrchar\\cyrpsi /g,"\u0471"],[/\\cyrchar\\CYRFITA /g,"\u0472"],[/\\cyrchar\\CYRIZH /g,"\u0474"],[/\\cyrchar\\CYRUK /g,"\u0478"],[/\\cyrchar\\cyruk /g,"\u0479"],[/\\cyrchar\\CYROMEGARND /g,"\u047A"],[/\\cyrchar\\cyromegarnd /g,"\u047B"],[/\\cyrchar\\CYROMEGATITLO /g,"\u047C"],[/\\cyrchar\\cyromegatitlo /g,"\u047D"],[/\\cyrchar\\CYROT /g,"\u047E"],[/\\cyrchar\\cyrot /g,"\u047F"],[/\\cyrchar\\CYRKOPPA /g,"\u0480"],[/\\cyrchar\\cyrkoppa /g,"\u0481"],[/\\cyrchar\\cyrthousands /g,"\u0482"],[/\\cyrchar\\cyrhundredthousands /g,"\u0488"],[/\\cyrchar\\cyrmillions /g,"\u0489"],[/\\cyrchar\\CYRSEMISFTSN /g,"\u048C"],[/\\cyrchar\\cyrsemisftsn /g,"\u048D"],[/\\cyrchar\\CYRRTICK /g,"\u048E"],[/\\cyrchar\\cyrrtick /g,"\u048F"],[/\\cyrchar\\CYRGUP /g,"\u0490"],[/\\cyrchar\\cyrgup /g,"\u0491"],[/\\cyrchar\\CYRGHCRS /g,"\u0492"],[/\\cyrchar\\cyrghcrs /g,"\u0493"],[/\\cyrchar\\CYRGHK /g,"\u0494"],[/\\cyrchar\\cyrghk /g,"\u0495"],[/\\cyrchar\\CYRZHDSC /g,"\u0496"],[/\\cyrchar\\cyrzhdsc /g,"\u0497"],[/\\cyrchar\\CYRZDSC /g,"\u0498"],[/\\cyrchar\\cyrzdsc /g,"\u0499"],[/\\cyrchar\\CYRKDSC /g,"\u049A"],[/\\cyrchar\\cyrkdsc /g,"\u049B"],[/\\cyrchar\\CYRKVCRS /g,"\u049C"],[/\\cyrchar\\cyrkvcrs /g,"\u049D"],[/\\cyrchar\\CYRKHCRS /g,"\u049E"],[/\\cyrchar\\cyrkhcrs /g,"\u049F"],[/\\cyrchar\\CYRKBEAK /g,"\u04A0"],[/\\cyrchar\\cyrkbeak /g,"\u04A1"],[/\\cyrchar\\CYRNDSC /g,"\u04A2"],[/\\cyrchar\\cyrndsc /g,"\u04A3"],[/\\cyrchar\\CYRNG /g,"\u04A4"],[/\\cyrchar\\cyrng /g,"\u04A5"],[/\\cyrchar\\CYRPHK /g,"\u04A6"],[/\\cyrchar\\cyrphk /g,"\u04A7"],[/\\cyrchar\\CYRABHHA /g,"\u04A8"],[/\\cyrchar\\cyrabhha /g,"\u04A9"],[/\\cyrchar\\CYRSDSC /g,"\u04AA"],[/\\cyrchar\\cyrsdsc /g,"\u04AB"],[/\\cyrchar\\CYRTDSC /g,"\u04AC"],[/\\cyrchar\\cyrtdsc /g,"\u04AD"],[/\\cyrchar\\CYRY /g,"\u04AE"],[/\\cyrchar\\cyry /g,"\u04AF"],[/\\cyrchar\\CYRYHCRS /g,"\u04B0"],[/\\cyrchar\\cyryhcrs /g,"\u04B1"],[/\\cyrchar\\CYRHDSC /g,"\u04B2"],[/\\cyrchar\\cyrhdsc /g,"\u04B3"],[/\\cyrchar\\CYRTETSE /g,"\u04B4"],[/\\cyrchar\\cyrtetse /g,"\u04B5"],[/\\cyrchar\\CYRCHRDSC /g,"\u04B6"],[/\\cyrchar\\cyrchrdsc /g,"\u04B7"],[/\\cyrchar\\CYRCHVCRS /g,"\u04B8"],[/\\cyrchar\\cyrchvcrs /g,"\u04B9"],[/\\cyrchar\\CYRSHHA /g,"\u04BA"],[/\\cyrchar\\cyrshha /g,"\u04BB"],[/\\cyrchar\\CYRABHCH /g,"\u04BC"],[/\\cyrchar\\cyrabhch /g,"\u04BD"],[/\\cyrchar\\CYRABHCHDSC /g,"\u04BE"],[/\\cyrchar\\cyrabhchdsc /g,"\u04BF"],[/\\cyrchar\\CYRpalochka /g,"\u04C0"],[/\\cyrchar\\CYRKHK /g,"\u04C3"],[/\\cyrchar\\cyrkhk /g,"\u04C4"],[/\\cyrchar\\CYRNHK /g,"\u04C7"],[/\\cyrchar\\cyrnhk /g,"\u04C8"],[/\\cyrchar\\CYRCHLDSC /g,"\u04CB"],[/\\cyrchar\\cyrchldsc /g,"\u04CC"],[/\\cyrchar\\CYRAE /g,"\u04D4"],[/\\cyrchar\\cyrae /g,"\u04D5"],[/\\cyrchar\\CYRSCHWA /g,"\u04D8"],[/\\cyrchar\\cyrschwa /g,"\u04D9"],[/\\cyrchar\\CYRABHDZE /g,"\u04E0"],[/\\cyrchar\\cyrabhdze /g,"\u04E1"],[/\\cyrchar\\CYROTLD /g,"\u04E8"],[/\\cyrchar\\cyrotld /g,"\u04E9"],[/\\hspace\{0.6em\}/g,"\u2002"],[/\\hspace\{1em\}/g,"\u2003"],[/\\hspace\{0.33em\}/g,"\u2004"],[/\\hspace\{0.25em\}/g,"\u2005"],[/\\hspace\{0.166em\}/g,"\u2006"],[/\\hphantom\{0\}/g,"\u2007"],[/\\hphantom\{,\}/g,"\u2008"],[/\\hspace\{0.167em\}/g,"\u2009"],[/\\mkern1mu /g,"\u200A"],[/\\textendash /g,"\u2013"],[/\\textemdash /g,"\u2014"],[/\\rule\{1em\}\{1pt\}/g,"\u2015"],[/\\Vert /g,"\u2016"],[/\\Elzreapos /g,"\u201B"],[/\\textquotedblleft /g,"\u201C"],[/\\textquotedblright /g,"\u201D"],[/\\textdagger /g,"\u2020"],[/\\textdaggerdbl /g,"\u2021"],[/\\textbullet /g,"\u2022"],[/\\ldots /g,"\u2026"],[/\\textperthousand /g,"\u2030"],[/\\textpertenthousand /g,"\u2031"],[/\\backprime /g,"\u2035"],[/\\guilsinglleft /g,"\u2039"],[/\\guilsinglright /g,"\u203A"],[/\\mkern4mu /g,"\u205F"],[/\\nolinebreak /g,"\u2060"],[/\\ensuremath\{\\Elzpes\}/g,"\u20A7"],[/\\mbox\{\\texteuro\} /g,"\u20AC"],[/\\dddot /g,"\u20DB"],[/\\ddddot /g,"\u20DC"],[/\\mathbb\{C\}/g,"\u2102"],[/\\mathscr\{g\}/g,"\u210A"],[/\\mathscr\{H\}/g,"\u210B"],[/\\mathfrak\{H\}/g,"\u210C"],[/\\mathbb\{H\}/g,"\u210D"],[/\\hslash /g,"\u210F"],[/\\mathscr\{I\}/g,"\u2110"],[/\\mathfrak\{I\}/g,"\u2111"],[/\\mathscr\{L\}/g,"\u2112"],[/\\mathscr\{l\}/g,"\u2113"],[/\\mathbb\{N\}/g,"\u2115"],[/\\cyrchar\\textnumero /g,"\u2116"],[/\\wp /g,"\u2118"],[/\\mathbb\{P\}/g,"\u2119"],[/\\mathbb\{Q\}/g,"\u211A"],[/\\mathscr\{R\}/g,"\u211B"],[/\\mathfrak\{R\}/g,"\u211C"],[/\\mathbb\{R\}/g,"\u211D"],[/\\Elzxrat /g,"\u211E"],[/\\texttrademark /g,"\u2122"],[/\\mathbb\{Z\}/g,"\u2124"],[/\\Omega /g,"\u2126"],[/\\mho /g,"\u2127"],[/\\mathfrak\{Z\}/g,"\u2128"],[/\\ElsevierGlyph\{2129\}/g,"\u2129"],[/\\AA /g,"\u212B"],[/\\mathscr\{B\}/g,"\u212C"],[/\\mathfrak\{C\}/g,"\u212D"],[/\\mathscr\{e\}/g,"\u212F"],[/\\mathscr\{E\}/g,"\u2130"],[/\\mathscr\{F\}/g,"\u2131"],[/\\mathscr\{M\}/g,"\u2133"],[/\\mathscr\{o\}/g,"\u2134"],[/\\aleph /g,"\u2135"],[/\\beth /g,"\u2136"],[/\\gimel /g,"\u2137"],[/\\daleth /g,"\u2138"],[/\\textfrac\{1\}\{3\}/g,"\u2153"],[/\\textfrac\{2\}\{3\}/g,"\u2154"],[/\\textfrac\{1\}\{5\}/g,"\u2155"],[/\\textfrac\{2\}\{5\}/g,"\u2156"],[/\\textfrac\{3\}\{5\}/g,"\u2157"],[/\\textfrac\{4\}\{5\}/g,"\u2158"],[/\\textfrac\{1\}\{6\}/g,"\u2159"],[/\\textfrac\{5\}\{6\}/g,"\u215A"],[/\\textfrac\{1\}\{8\}/g,"\u215B"],[/\\textfrac\{3\}\{8\}/g,"\u215C"],[/\\textfrac\{5\}\{8\}/g,"\u215D"],[/\\textfrac\{7\}\{8\}/g,"\u215E"],[/\\leftarrow /g,"\u2190"],[/\\uparrow /g,"\u2191"],[/\\rightarrow /g,"\u2192"],[/\\downarrow /g,"\u2193"],[/\\leftrightarrow /g,"\u2194"],[/\\updownarrow /g,"\u2195"],[/\\nwarrow /g,"\u2196"],[/\\nearrow /g,"\u2197"],[/\\searrow /g,"\u2198"],[/\\swarrow /g,"\u2199"],[/\\nleftarrow /g,"\u219A"],[/\\nrightarrow /g,"\u219B"],[/\\arrowwaveright /g,"\u219C"],[/\\arrowwaveright /g,"\u219D"],[/\\twoheadleftarrow /g,"\u219E"],[/\\twoheadrightarrow /g,"\u21A0"],[/\\leftarrowtail /g,"\u21A2"],[/\\rightarrowtail /g,"\u21A3"],[/\\mapsto /g,"\u21A6"],[/\\hookleftarrow /g,"\u21A9"],[/\\hookrightarrow /g,"\u21AA"],[/\\looparrowleft /g,"\u21AB"],[/\\looparrowright /g,"\u21AC"],[/\\leftrightsquigarrow /g,"\u21AD"],[/\\nleftrightarrow /g,"\u21AE"],[/\\Lsh /g,"\u21B0"],[/\\Rsh /g,"\u21B1"],[/\\ElsevierGlyph\{21B3\}/g,"\u21B3"],[/\\curvearrowleft /g,"\u21B6"],[/\\curvearrowright /g,"\u21B7"],[/\\circlearrowleft /g,"\u21BA"],[/\\circlearrowright /g,"\u21BB"],[/\\leftharpoonup /g,"\u21BC"],[/\\leftharpoondown /g,"\u21BD"],[/\\upharpoonright /g,"\u21BE"],[/\\upharpoonleft /g,"\u21BF"],[/\\rightharpoonup /g,"\u21C0"],[/\\rightharpoondown /g,"\u21C1"],[/\\downharpoonright /g,"\u21C2"],[/\\downharpoonleft /g,"\u21C3"],[/\\rightleftarrows /g,"\u21C4"],[/\\dblarrowupdown /g,"\u21C5"],[/\\leftrightarrows /g,"\u21C6"],[/\\leftleftarrows /g,"\u21C7"],[/\\upuparrows /g,"\u21C8"],[/\\rightrightarrows /g,"\u21C9"],[/\\downdownarrows /g,"\u21CA"],[/\\leftrightharpoons /g,"\u21CB"],[/\\rightleftharpoons /g,"\u21CC"],[/\\nLeftarrow /g,"\u21CD"],[/\\nLeftrightarrow /g,"\u21CE"],[/\\nRightarrow /g,"\u21CF"],[/\\Leftarrow /g,"\u21D0"],[/\\Uparrow /g,"\u21D1"],[/\\Rightarrow /g,"\u21D2"],[/\\Downarrow /g,"\u21D3"],[/\\Leftrightarrow /g,"\u21D4"],[/\\Updownarrow /g,"\u21D5"],[/\\Lleftarrow /g,"\u21DA"],[/\\Rrightarrow /g,"\u21DB"],[/\\rightsquigarrow /g,"\u21DD"],[/\\DownArrowUpArrow /g,"\u21F5"],[/\\forall /g,"\u2200"],[/\\complement /g,"\u2201"],[/\\partial /g,"\u2202"],[/\\exists /g,"\u2203"],[/\\nexists /g,"\u2204"],[/\\varnothing /g,"\u2205"],[/\\nabla /g,"\u2207"],[/\\in /g,"\u2208"],[/\\not\\in /g,"\u2209"],[/\\ni /g,"\u220B"],[/\\not\\ni /g,"\u220C"],[/\\prod /g,"\u220F"],[/\\coprod /g,"\u2210"],[/\\sum /g,"\u2211"],[/\\mp /g,"\u2213"],[/\\dotplus /g,"\u2214"],[/\\setminus /g,"\u2216"],[/\\circ /g,"\u2218"],[/\\bullet /g,"\u2219"],[/\\surd /g,"\u221A"],[/\\propto /g,"\u221D"],[/\\infty /g,"\u221E"],[/\\rightangle /g,"\u221F"],[/\\angle /g,"\u2220"],[/\\measuredangle /g,"\u2221"],[/\\sphericalangle /g,"\u2222"],[/\\mid /g,"\u2223"],[/\\nmid /g,"\u2224"],[/\\parallel /g,"\u2225"],[/\\nparallel /g,"\u2226"],[/\\wedge /g,"\u2227"],[/\\vee /g,"\u2228"],[/\\cap /g,"\u2229"],[/\\cup /g,"\u222A"],[/\\int /g,"\u222B"],[/\\int\\!\\int /g,"\u222C"],[/\\int\\!\\int\\!\\int /g,"\u222D"],[/\\oint /g,"\u222E"],[/\\surfintegral /g,"\u222F"],[/\\volintegral /g,"\u2230"],[/\\clwintegral /g,"\u2231"],[/\\ElsevierGlyph\{2232\}/g,"\u2232"],[/\\ElsevierGlyph\{2233\}/g,"\u2233"],[/\\therefore /g,"\u2234"],[/\\because /g,"\u2235"],[/\\Colon /g,"\u2237"],[/\\ElsevierGlyph\{2238\}/g,"\u2238"],[/\\mathbin\{\{:\}\\!\\!\{\-\}\\!\\!\{:\}\}/g,"\u223A"],[/\\homothetic /g,"\u223B"],[/\\sim /g,"\u223C"],[/\\backsim /g,"\u223D"],[/\\lazysinv /g,"\u223E"],[/\\wr /g,"\u2240"],[/\\not\\sim /g,"\u2241"],[/\\ElsevierGlyph\{2242\}/g,"\u2242"],[/\\NotEqualTilde /g,"\u2242-00338"],[/\\simeq /g,"\u2243"],[/\\not\\simeq /g,"\u2244"],[/\\cong /g,"\u2245"],[/\\approxnotequal /g,"\u2246"],[/\\not\\cong /g,"\u2247"],[/\\approx /g,"\u2248"],[/\\not\\approx /g,"\u2249"],[/\\approxeq /g,"\u224A"],[/\\tildetrpl /g,"\u224B"],[/\\not\\apid /g,"\u224B-00338"],[/\\allequal /g,"\u224C"],[/\\asymp /g,"\u224D"],[/\\Bumpeq /g,"\u224E"],[/\\NotHumpDownHump /g,"\u224E-00338"],[/\\bumpeq /g,"\u224F"],[/\\NotHumpEqual /g,"\u224F-00338"],[/\\doteq /g,"\u2250"],[/\\not\\doteq/g,"\u2250-00338"],[/\\doteqdot /g,"\u2251"],[/\\fallingdotseq /g,"\u2252"],[/\\risingdotseq /g,"\u2253"],[/\\eqcirc /g,"\u2256"],[/\\circeq /g,"\u2257"],[/\\estimates /g,"\u2259"],[/\\ElsevierGlyph\{225A\}/g,"\u225A"],[/\\starequal /g,"\u225B"],[/\\triangleq /g,"\u225C"],[/\\ElsevierGlyph\{225F\}/g,"\u225F"],[/\\not =/g,"\u2260"],[/\\equiv /g,"\u2261"],[/\\not\\equiv /g,"\u2262"],[/\\leq /g,"\u2264"],[/\\geq /g,"\u2265"],[/\\leqq /g,"\u2266"],[/\\geqq /g,"\u2267"],[/\\lneqq /g,"\u2268"],[/\\lvertneqq /g,"\u2268-0FE00"],[/\\gneqq /g,"\u2269"],[/\\gvertneqq /g,"\u2269-0FE00"],[/\\ll /g,"\u226A"],[/\\NotLessLess /g,"\u226A-00338"],[/\\gg /g,"\u226B"],[/\\NotGreaterGreater /g,"\u226B-00338"],[/\\between /g,"\u226C"],[/\\not\\kern\-0.3em\\times /g,"\u226D"],[/\\not</g,"\u226E"],[/\\not>/g,"\u226F"],[/\\not\\leq /g,"\u2270"],[/\\not\\geq /g,"\u2271"],[/\\lessequivlnt /g,"\u2272"],[/\\greaterequivlnt /g,"\u2273"],[/\\ElsevierGlyph\{2274\}/g,"\u2274"],[/\\ElsevierGlyph\{2275\}/g,"\u2275"],[/\\lessgtr /g,"\u2276"],[/\\gtrless /g,"\u2277"],[/\\notlessgreater /g,"\u2278"],[/\\notgreaterless /g,"\u2279"],[/\\prec /g,"\u227A"],[/\\succ /g,"\u227B"],[/\\preccurlyeq /g,"\u227C"],[/\\succcurlyeq /g,"\u227D"],[/\\precapprox /g,"\u227E"],[/\\NotPrecedesTilde /g,"\u227E-00338"],[/\\succapprox /g,"\u227F"],[/\\NotSucceedsTilde /g,"\u227F-00338"],[/\\not\\prec /g,"\u2280"],[/\\not\\succ /g,"\u2281"],[/\\subset /g,"\u2282"],[/\\supset /g,"\u2283"],[/\\not\\subset /g,"\u2284"],[/\\not\\supset /g,"\u2285"],[/\\subseteq /g,"\u2286"],[/\\supseteq /g,"\u2287"],[/\\not\\subseteq /g,"\u2288"],[/\\not\\supseteq /g,"\u2289"],[/\\subsetneq /g,"\u228A"],[/\\varsubsetneqq /g,"\u228A-0FE00"],[/\\supsetneq /g,"\u228B"],[/\\varsupsetneq /g,"\u228B-0FE00"],[/\\uplus /g,"\u228E"],[/\\sqsubset /g,"\u228F"],[/\\NotSquareSubset /g,"\u228F-00338"],[/\\sqsupset /g,"\u2290"],[/\\NotSquareSuperset /g,"\u2290-00338"],[/\\sqsubseteq /g,"\u2291"],[/\\sqsupseteq /g,"\u2292"],[/\\sqcap /g,"\u2293"],[/\\sqcup /g,"\u2294"],[/\\oplus /g,"\u2295"],[/\\ominus /g,"\u2296"],[/\\otimes /g,"\u2297"],[/\\oslash /g,"\u2298"],[/\\odot /g,"\u2299"],[/\\circledcirc /g,"\u229A"],[/\\circledast /g,"\u229B"],[/\\circleddash /g,"\u229D"],[/\\boxplus /g,"\u229E"],[/\\boxminus /g,"\u229F"],[/\\boxtimes /g,"\u22A0"],[/\\boxdot /g,"\u22A1"],[/\\vdash /g,"\u22A2"],[/\\dashv /g,"\u22A3"],[/\\top /g,"\u22A4"],[/\\perp /g,"\u22A5"],[/\\truestate /g,"\u22A7"],[/\\forcesextra /g,"\u22A8"],[/\\Vdash /g,"\u22A9"],[/\\Vvdash /g,"\u22AA"],[/\\VDash /g,"\u22AB"],[/\\nvdash /g,"\u22AC"],[/\\nvDash /g,"\u22AD"],[/\\nVdash /g,"\u22AE"],[/\\nVDash /g,"\u22AF"],[/\\vartriangleleft /g,"\u22B2"],[/\\vartriangleright /g,"\u22B3"],[/\\trianglelefteq /g,"\u22B4"],[/\\trianglerighteq /g,"\u22B5"],[/\\original /g,"\u22B6"],[/\\image /g,"\u22B7"],[/\\multimap /g,"\u22B8"],[/\\hermitconjmatrix /g,"\u22B9"],[/\\intercal /g,"\u22BA"],[/\\veebar /g,"\u22BB"],[/\\rightanglearc /g,"\u22BE"],[/\\ElsevierGlyph\{22C0\}/g,"\u22C0"],[/\\ElsevierGlyph\{22C1\}/g,"\u22C1"],[/\\bigcap /g,"\u22C2"],[/\\bigcup /g,"\u22C3"],[/\\diamond /g,"\u22C4"],[/\\cdot /g,"\u22C5"],[/\\star /g,"\u22C6"],[/\\divideontimes /g,"\u22C7"],[/\\bowtie /g,"\u22C8"],[/\\ltimes /g,"\u22C9"],[/\\rtimes /g,"\u22CA"],[/\\leftthreetimes /g,"\u22CB"],[/\\rightthreetimes /g,"\u22CC"],[/\\backsimeq /g,"\u22CD"],[/\\curlyvee /g,"\u22CE"],[/\\curlywedge /g,"\u22CF"],[/\\Subset /g,"\u22D0"],[/\\Supset /g,"\u22D1"],[/\\Cap /g,"\u22D2"],[/\\Cup /g,"\u22D3"],[/\\pitchfork /g,"\u22D4"],[/\\lessdot /g,"\u22D6"],[/\\gtrdot /g,"\u22D7"],[/\\verymuchless /g,"\u22D8"],[/\\verymuchgreater /g,"\u22D9"],[/\\lesseqgtr /g,"\u22DA"],[/\\gtreqless /g,"\u22DB"],[/\\curlyeqprec /g,"\u22DE"],[/\\curlyeqsucc /g,"\u22DF"],[/\\not\\sqsubseteq /g,"\u22E2"],[/\\not\\sqsupseteq /g,"\u22E3"],[/\\Elzsqspne /g,"\u22E5"],[/\\lnsim /g,"\u22E6"],[/\\gnsim /g,"\u22E7"],[/\\precedesnotsimilar /g,"\u22E8"],[/\\succnsim /g,"\u22E9"],[/\\ntriangleleft /g,"\u22EA"],[/\\ntriangleright /g,"\u22EB"],[/\\ntrianglelefteq /g,"\u22EC"],[/\\ntrianglerighteq /g,"\u22ED"],[/\\vdots /g,"\u22EE"],[/\\cdots /g,"\u22EF"],[/\\upslopeellipsis /g,"\u22F0"],[/\\downslopeellipsis /g,"\u22F1"],[/\\barwedge /g,"\u2305"],[/\\perspcorrespond /g,"\u2306"],[/\\lceil /g,"\u2308"],[/\\rceil /g,"\u2309"],[/\\lfloor /g,"\u230A"],[/\\rfloor /g,"\u230B"],[/\\recorder /g,"\u2315"],[/\\mathchar"2208/g,"\u2316"],[/\\ulcorner /g,"\u231C"],[/\\urcorner /g,"\u231D"],[/\\llcorner /g,"\u231E"],[/\\lrcorner /g,"\u231F"],[/\\frown /g,"\u2322"],[/\\smile /g,"\u2323"],[/\\langle /g,"\u2329"],[/\\rangle /g,"\u232A"],[/\\ElsevierGlyph\{E838\}/g,"\u233D"],[/\\Elzdlcorn /g,"\u23A3"],[/\\lmoustache /g,"\u23B0"],[/\\rmoustache /g,"\u23B1"],[/\\textvisiblespace /g,"\u2423"],[/\\ding\{172\}/g,"\u2460"],[/\\ding\{173\}/g,"\u2461"],[/\\ding\{174\}/g,"\u2462"],[/\\ding\{175\}/g,"\u2463"],[/\\ding\{176\}/g,"\u2464"],[/\\ding\{177\}/g,"\u2465"],[/\\ding\{178\}/g,"\u2466"],[/\\ding\{179\}/g,"\u2467"],[/\\ding\{180\}/g,"\u2468"],[/\\ding\{181\}/g,"\u2469"],[/\\circledS /g,"\u24C8"],[/\\Elzdshfnc /g,"\u2506"],[/\\Elzsqfnw /g,"\u2519"],[/\\diagup /g,"\u2571"],[/\\ding\{110\}/g,"\u25A0"],[/\\square /g,"\u25A1"],[/\\blacksquare /g,"\u25AA"],[/\\fbox\{~~\}/g,"\u25AD"],[/\\Elzvrecto /g,"\u25AF"],[/\\ElsevierGlyph\{E381\}/g,"\u25B1"],[/\\ding\{115\}/g,"\u25B2"],[/\\bigtriangleup /g,"\u25B3"],[/\\blacktriangle /g,"\u25B4"],[/\\vartriangle /g,"\u25B5"],[/\\blacktriangleright /g,"\u25B8"],[/\\triangleright /g,"\u25B9"],[/\\ding\{116\}/g,"\u25BC"],[/\\bigtriangledown /g,"\u25BD"],[/\\blacktriangledown /g,"\u25BE"],[/\\triangledown /g,"\u25BF"],[/\\blacktriangleleft /g,"\u25C2"],[/\\triangleleft /g,"\u25C3"],[/\\ding\{117\}/g,"\u25C6"],[/\\lozenge /g,"\u25CA"],[/\\bigcirc /g,"\u25CB"],[/\\ding\{108\}/g,"\u25CF"],[/\\Elzcirfl /g,"\u25D0"],[/\\Elzcirfr /g,"\u25D1"],[/\\Elzcirfb /g,"\u25D2"],[/\\ding\{119\}/g,"\u25D7"],[/\\Elzrvbull /g,"\u25D8"],[/\\Elzsqfl /g,"\u25E7"],[/\\Elzsqfr /g,"\u25E8"],[/\\Elzsqfse /g,"\u25EA"],[/\\bigcirc /g,"\u25EF"],[/\\ding\{72\}/g,"\u2605"],[/\\ding\{73\}/g,"\u2606"],[/\\ding\{37\}/g,"\u260E"],[/\\ding\{42\}/g,"\u261B"],[/\\ding\{43\}/g,"\u261E"],[/\\rightmoon /g,"\u263E"],[/\\mercury /g,"\u263F"],[/\\venus /g,"\u2640"],[/\\male /g,"\u2642"],[/\\jupiter /g,"\u2643"],[/\\saturn /g,"\u2644"],[/\\uranus /g,"\u2645"],[/\\neptune /g,"\u2646"],[/\\pluto /g,"\u2647"],[/\\aries /g,"\u2648"],[/\\taurus /g,"\u2649"],[/\\gemini /g,"\u264A"],[/\\cancer /g,"\u264B"],[/\\leo /g,"\u264C"],[/\\virgo /g,"\u264D"],[/\\libra /g,"\u264E"],[/\\scorpio /g,"\u264F"],[/\\sagittarius /g,"\u2650"],[/\\capricornus /g,"\u2651"],[/\\aquarius /g,"\u2652"],[/\\pisces /g,"\u2653"],[/\\ding\{171\}/g,"\u2660"],[/\\diamond /g,"\u2662"],[/\\ding\{168\}/g,"\u2663"],[/\\ding\{170\}/g,"\u2665"],[/\\ding\{169\}/g,"\u2666"],[/\\quarternote /g,"\u2669"],[/\\eighthnote /g,"\u266A"],[/\\flat /g,"\u266D"],[/\\natural /g,"\u266E"],[/\\sharp /g,"\u266F"],[/\\ding\{33\}/g,"\u2701"],[/\\ding\{34\}/g,"\u2702"],[/\\ding\{35\}/g,"\u2703"],[/\\ding\{36\}/g,"\u2704"],[/\\ding\{38\}/g,"\u2706"],[/\\ding\{39\}/g,"\u2707"],[/\\ding\{40\}/g,"\u2708"],[/\\ding\{41\}/g,"\u2709"],[/\\ding\{44\}/g,"\u270C"],[/\\ding\{45\}/g,"\u270D"],[/\\ding\{46\}/g,"\u270E"],[/\\ding\{47\}/g,"\u270F"],[/\\ding\{48\}/g,"\u2710"],[/\\ding\{49\}/g,"\u2711"],[/\\ding\{50\}/g,"\u2712"],[/\\ding\{51\}/g,"\u2713"],[/\\ding\{52\}/g,"\u2714"],[/\\ding\{53\}/g,"\u2715"],[/\\ding\{54\}/g,"\u2716"],[/\\ding\{55\}/g,"\u2717"],[/\\ding\{56\}/g,"\u2718"],[/\\ding\{57\}/g,"\u2719"],[/\\ding\{58\}/g,"\u271A"],[/\\ding\{59\}/g,"\u271B"],[/\\ding\{60\}/g,"\u271C"],[/\\ding\{61\}/g,"\u271D"],[/\\ding\{62\}/g,"\u271E"],[/\\ding\{63\}/g,"\u271F"],[/\\ding\{64\}/g,"\u2720"],[/\\ding\{65\}/g,"\u2721"],[/\\ding\{66\}/g,"\u2722"],[/\\ding\{67\}/g,"\u2723"],[/\\ding\{68\}/g,"\u2724"],[/\\ding\{69\}/g,"\u2725"],[/\\ding\{70\}/g,"\u2726"],[/\\ding\{71\}/g,"\u2727"],[/\\ding\{73\}/g,"\u2729"],[/\\ding\{74\}/g,"\u272A"],[/\\ding\{75\}/g,"\u272B"],[/\\ding\{76\}/g,"\u272C"],[/\\ding\{77\}/g,"\u272D"],[/\\ding\{78\}/g,"\u272E"],[/\\ding\{79\}/g,"\u272F"],[/\\ding\{80\}/g,"\u2730"],[/\\ding\{81\}/g,"\u2731"],[/\\ding\{82\}/g,"\u2732"],[/\\ding\{83\}/g,"\u2733"],[/\\ding\{84\}/g,"\u2734"],[/\\ding\{85\}/g,"\u2735"],[/\\ding\{86\}/g,"\u2736"],[/\\ding\{87\}/g,"\u2737"],[/\\ding\{88\}/g,"\u2738"],[/\\ding\{89\}/g,"\u2739"],[/\\ding\{90\}/g,"\u273A"],[/\\ding\{91\}/g,"\u273B"],[/\\ding\{92\}/g,"\u273C"],[/\\ding\{93\}/g,"\u273D"],[/\\ding\{94\}/g,"\u273E"],[/\\ding\{95\}/g,"\u273F"],[/\\ding\{96\}/g,"\u2740"],[/\\ding\{97\}/g,"\u2741"],[/\\ding\{98\}/g,"\u2742"],[/\\ding\{99\}/g,"\u2743"],[/\\ding\{100\}/g,"\u2744"],[/\\ding\{101\}/g,"\u2745"],[/\\ding\{102\}/g,"\u2746"],[/\\ding\{103\}/g,"\u2747"],[/\\ding\{104\}/g,"\u2748"],[/\\ding\{105\}/g,"\u2749"],[/\\ding\{106\}/g,"\u274A"],[/\\ding\{107\}/g,"\u274B"],[/\\ding\{109\}/g,"\u274D"],[/\\ding\{111\}/g,"\u274F"],[/\\ding\{112\}/g,"\u2750"],[/\\ding\{113\}/g,"\u2751"],[/\\ding\{114\}/g,"\u2752"],[/\\ding\{118\}/g,"\u2756"],[/\\ding\{120\}/g,"\u2758"],[/\\ding\{121\}/g,"\u2759"],[/\\ding\{122\}/g,"\u275A"],[/\\ding\{123\}/g,"\u275B"],[/\\ding\{124\}/g,"\u275C"],[/\\ding\{125\}/g,"\u275D"],[/\\ding\{126\}/g,"\u275E"],[/\\ding\{161\}/g,"\u2761"],[/\\ding\{162\}/g,"\u2762"],[/\\ding\{163\}/g,"\u2763"],[/\\ding\{164\}/g,"\u2764"],[/\\ding\{165\}/g,"\u2765"],[/\\ding\{166\}/g,"\u2766"],[/\\ding\{167\}/g,"\u2767"],[/\\ding\{182\}/g,"\u2776"],[/\\ding\{183\}/g,"\u2777"],[/\\ding\{184\}/g,"\u2778"],[/\\ding\{185\}/g,"\u2779"],[/\\ding\{186\}/g,"\u277A"],[/\\ding\{187\}/g,"\u277B"],[/\\ding\{188\}/g,"\u277C"],[/\\ding\{189\}/g,"\u277D"],[/\\ding\{190\}/g,"\u277E"],[/\\ding\{191\}/g,"\u277F"],[/\\ding\{192\}/g,"\u2780"],[/\\ding\{193\}/g,"\u2781"],[/\\ding\{194\}/g,"\u2782"],[/\\ding\{195\}/g,"\u2783"],[/\\ding\{196\}/g,"\u2784"],[/\\ding\{197\}/g,"\u2785"],[/\\ding\{198\}/g,"\u2786"],[/\\ding\{199\}/g,"\u2787"],[/\\ding\{200\}/g,"\u2788"],[/\\ding\{201\}/g,"\u2789"],[/\\ding\{202\}/g,"\u278A"],[/\\ding\{203\}/g,"\u278B"],[/\\ding\{204\}/g,"\u278C"],[/\\ding\{205\}/g,"\u278D"],[/\\ding\{206\}/g,"\u278E"],[/\\ding\{207\}/g,"\u278F"],[/\\ding\{208\}/g,"\u2790"],[/\\ding\{209\}/g,"\u2791"],[/\\ding\{210\}/g,"\u2792"],[/\\ding\{211\}/g,"\u2793"],[/\\ding\{212\}/g,"\u2794"],[/\\ding\{216\}/g,"\u2798"],[/\\ding\{217\}/g,"\u2799"],[/\\ding\{218\}/g,"\u279A"],[/\\ding\{219\}/g,"\u279B"],[/\\ding\{220\}/g,"\u279C"],[/\\ding\{221\}/g,"\u279D"],[/\\ding\{222\}/g,"\u279E"],[/\\ding\{223\}/g,"\u279F"],[/\\ding\{224\}/g,"\u27A0"],[/\\ding\{225\}/g,"\u27A1"],[/\\ding\{226\}/g,"\u27A2"],[/\\ding\{227\}/g,"\u27A3"],[/\\ding\{228\}/g,"\u27A4"],[/\\ding\{229\}/g,"\u27A5"],[/\\ding\{230\}/g,"\u27A6"],[/\\ding\{231\}/g,"\u27A7"],[/\\ding\{232\}/g,"\u27A8"],[/\\ding\{233\}/g,"\u27A9"],[/\\ding\{234\}/g,"\u27AA"],[/\\ding\{235\}/g,"\u27AB"],[/\\ding\{236\}/g,"\u27AC"],[/\\ding\{237\}/g,"\u27AD"],[/\\ding\{238\}/g,"\u27AE"],[/\\ding\{239\}/g,"\u27AF"],[/\\ding\{241\}/g,"\u27B1"],[/\\ding\{242\}/g,"\u27B2"],[/\\ding\{243\}/g,"\u27B3"],[/\\ding\{244\}/g,"\u27B4"],[/\\ding\{245\}/g,"\u27B5"],[/\\ding\{246\}/g,"\u27B6"],[/\\ding\{247\}/g,"\u27B7"],[/\\ding\{248\}/g,"\u27B8"],[/\\ding\{249\}/g,"\u27B9"],[/\\ding\{250\}/g,"\u27BA"],[/\\ding\{251\}/g,"\u27BB"],[/\\ding\{252\}/g,"\u27BC"],[/\\ding\{253\}/g,"\u27BD"],[/\\ding\{254\}/g,"\u27BE"],[/\\longleftarrow /g,"\u27F5"],[/\\longrightarrow /g,"\u27F6"],[/\\longleftrightarrow /g,"\u27F7"],[/\\Longleftarrow /g,"\u27F8"],[/\\Longrightarrow /g,"\u27F9"],[/\\Longleftrightarrow /g,"\u27FA"],[/\\longmapsto /g,"\u27FC"],[/\\sim\\joinrel\\leadsto/g,"\u27FF"],[/\\ElsevierGlyph\{E212\}/g,"\u2905"],[/\\UpArrowBar /g,"\u2912"],[/\\DownArrowBar /g,"\u2913"],[/\\ElsevierGlyph\{E20C\}/g,"\u2923"],[/\\ElsevierGlyph\{E20D\}/g,"\u2924"],[/\\ElsevierGlyph\{E20B\}/g,"\u2925"],[/\\ElsevierGlyph\{E20A\}/g,"\u2926"],[/\\ElsevierGlyph\{E211\}/g,"\u2927"],[/\\ElsevierGlyph\{E20E\}/g,"\u2928"],[/\\ElsevierGlyph\{E20F\}/g,"\u2929"],[/\\ElsevierGlyph\{E210\}/g,"\u292A"],[/\\ElsevierGlyph\{E21C\}/g,"\u2933"],[/\\ElsevierGlyph\{E21D\}/g,"\u2933-00338"],[/\\ElsevierGlyph\{E21A\}/g,"\u2936"],[/\\ElsevierGlyph\{E219\}/g,"\u2937"],[/\\Elolarr /g,"\u2940"],[/\\Elorarr /g,"\u2941"],[/\\ElzRlarr /g,"\u2942"],[/\\ElzrLarr /g,"\u2944"],[/\\Elzrarrx /g,"\u2947"],[/\\LeftRightVector /g,"\u294E"],[/\\RightUpDownVector /g,"\u294F"],[/\\DownLeftRightVector /g,"\u2950"],[/\\LeftUpDownVector /g,"\u2951"],[/\\LeftVectorBar /g,"\u2952"],[/\\RightVectorBar /g,"\u2953"],[/\\RightUpVectorBar /g,"\u2954"],[/\\RightDownVectorBar /g,"\u2955"],[/\\DownLeftVectorBar /g,"\u2956"],[/\\DownRightVectorBar /g,"\u2957"],[/\\LeftUpVectorBar /g,"\u2958"],[/\\LeftDownVectorBar /g,"\u2959"],[/\\LeftTeeVector /g,"\u295A"],[/\\RightTeeVector /g,"\u295B"],[/\\RightUpTeeVector /g,"\u295C"],[/\\RightDownTeeVector /g,"\u295D"],[/\\DownLeftTeeVector /g,"\u295E"],[/\\DownRightTeeVector /g,"\u295F"],[/\\LeftUpTeeVector /g,"\u2960"],[/\\LeftDownTeeVector /g,"\u2961"],[/\\UpEquilibrium /g,"\u296E"],[/\\ReverseUpEquilibrium /g,"\u296F"],[/\\RoundImplies /g,"\u2970"],[/\\ElsevierGlyph\{E214\}/g,"\u297C"],[/\\ElsevierGlyph\{E215\}/g,"\u297D"],[/\\Elztfnc /g,"\u2980"],[/\\ElsevierGlyph\{3018\}/g,"\u2985"],[/\\Elroang /g,"\u2986"],[/\\ElsevierGlyph\{E291\}/g,"\u2994"],[/\\Elzddfnc /g,"\u2999"],[/\\Angle /g,"\u299C"],[/\\Elzlpargt /g,"\u29A0"],[/\\ElsevierGlyph\{E260\}/g,"\u29B5"],[/\\ElsevierGlyph\{E61B\}/g,"\u29B6"],[/\\ElzLap /g,"\u29CA"],[/\\Elzdefas /g,"\u29CB"],[/\\LeftTriangleBar /g,"\u29CF"],[/\\NotLeftTriangleBar /g,"\u29CF-00338"],[/\\RightTriangleBar /g,"\u29D0"],[/\\NotRightTriangleBar /g,"\u29D0-00338"],[/\\ElsevierGlyph\{E372\}/g,"\u29DC"],[/\\blacklozenge /g,"\u29EB"],[/\\RuleDelayed /g,"\u29F4"],[/\\Elxuplus /g,"\u2A04"],[/\\ElzThr /g,"\u2A05"],[/\\Elxsqcup /g,"\u2A06"],[/\\ElzInf /g,"\u2A07"],[/\\ElzSup /g,"\u2A08"],[/\\ElzCint /g,"\u2A0D"],[/\\clockoint /g,"\u2A0F"],[/\\ElsevierGlyph\{E395\}/g,"\u2A10"],[/\\sqrint /g,"\u2A16"],[/\\ElsevierGlyph\{E25A\}/g,"\u2A25"],[/\\ElsevierGlyph\{E25B\}/g,"\u2A2A"],[/\\ElsevierGlyph\{E25C\}/g,"\u2A2D"],[/\\ElsevierGlyph\{E25D\}/g,"\u2A2E"],[/\\ElzTimes /g,"\u2A2F"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A34"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A35"],[/\\ElsevierGlyph\{E259\}/g,"\u2A3C"],[/\\amalg /g,"\u2A3F"],[/\\ElzAnd /g,"\u2A53"],[/\\ElzOr /g,"\u2A54"],[/\\ElsevierGlyph\{E36E\}/g,"\u2A55"],[/\\ElOr /g,"\u2A56"],[/\\perspcorrespond /g,"\u2A5E"],[/\\Elzminhat /g,"\u2A5F"],[/\\ElsevierGlyph\{225A\}/g,"\u2A63"],[/\\stackrel\{*\}\{=\}/g,"\u2A6E"],[/\\Equal /g,"\u2A75"],[/\\leqslant /g,"\u2A7D"],[/\\nleqslant /g,"\u2A7D-00338"],[/\\geqslant /g,"\u2A7E"],[/\\ngeqslant /g,"\u2A7E-00338"],[/\\lessapprox /g,"\u2A85"],[/\\gtrapprox /g,"\u2A86"],[/\\lneq /g,"\u2A87"],[/\\gneq /g,"\u2A88"],[/\\lnapprox /g,"\u2A89"],[/\\gnapprox /g,"\u2A8A"],[/\\lesseqqgtr /g,"\u2A8B"],[/\\gtreqqless /g,"\u2A8C"],[/\\eqslantless /g,"\u2A95"],[/\\eqslantgtr /g,"\u2A96"],[/\\Pisymbol\{ppi020\}\{117\}/g,"\u2A9D"],[/\\Pisymbol\{ppi020\}\{105\}/g,"\u2A9E"],[/\\NestedLessLess /g,"\u2AA1"],[/\\NotNestedLessLess /g,"\u2AA1-00338"],[/\\NestedGreaterGreater /g,"\u2AA2"],[/\\NotNestedGreaterGreater /g,"\u2AA2-00338"],[/\\preceq /g,"\u2AAF"],[/\\not\\preceq /g,"\u2AAF-00338"],[/\\succeq /g,"\u2AB0"],[/\\not\\succeq /g,"\u2AB0-00338"],[/\\precneqq /g,"\u2AB5"],[/\\succneqq /g,"\u2AB6"],[/\\precapprox /g,"\u2AB7"],[/\\succapprox /g,"\u2AB8"],[/\\precnapprox /g,"\u2AB9"],[/\\succnapprox /g,"\u2ABA"],[/\\subseteqq /g,"\u2AC5"],[/\\nsubseteqq /g,"\u2AC5-00338"],[/\\supseteqq /g,"\u2AC6"],[/\\nsupseteqq/g,"\u2AC6-00338"],[/\\subsetneqq /g,"\u2ACB"],[/\\supsetneqq /g,"\u2ACC"],[/\\ElsevierGlyph\{E30D\}/g,"\u2AEB"],[/\\Elztdcol /g,"\u2AF6"],[/\\ElsevierGlyph\{300A\}/g,"\u300A"],[/\\ElsevierGlyph\{300B\}/g,"\u300B"],[/\\ElsevierGlyph\{3018\}/g,"\u3018"],[/\\ElsevierGlyph\{3019\}/g,"\u3019"],[/\\openbracketleft /g,"\u301A"],[/\\openbracketright /g,"\u301B"]];return this}if(typeof module!=="undefined"&&module.exports){module.exports=BibtexParser};
\ No newline at end of file
+function BibtexParser(c){if(typeof c=="string"){var d={};var a=[];function b(f){a.push(f)}var e=BibtexParser.call(d,b);e.parse(c);return{entries:a,errors:e.getErrors()}}if(typeof c!="function"){throw"Invalid parser construction."}this.STATES_={ENTRY_OR_JUNK:0,OBJECT_TYPE:1,ENTRY_KEY:2,KV_KEY:3,EQUALS:4,KV_VALUE:5};this.DATA_={};this.CALLBACK_=c;this.CHAR_=0;this.LINE_=1;this.CHAR_IN_LINE_=0;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={};this.SKIPTILLEOL_=false;this.VALBRACES_=null;this.BRACETYPE_=null;this.BRACECOUNT_=0;this.STATE_=this.STATES_.ENTRY_OR_JUNK;this.ERRORS_=[];this.ENTRY_TYPES_={inproceedings:1,proceedings:2,article:3,techreport:4,misc:5,mastersthesis:6,book:7,phdthesis:8,incollection:9,unpublished:10,inbook:11,manual:12,periodical:13,booklet:14,masterthesis:15,conference:16,online:998,data:999};this.MACROS_={jan:"January",feb:"February",mar:"March",apr:"April",may:"May",jun:"June",jul:"July",aug:"August",sep:"September",oct:"October",nov:"November",dec:"December",Jan:"January",Feb:"February",Mar:"March",Apr:"April",May:"May",Jun:"June",Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November",Dec:"December"};this.getErrors=function(){return this.ERRORS_};this.parse=function(f){for(var g=0;g<f.length;g++){this.processCharacter_(f[g])}};this.error_=function(f){this.ERRORS_.push([this.LINE_,this.CHAR_IN_LINE_,this.CHAR_,f])};this.processEntry_=function(){var h=this.DATA_;if(h.Fields){for(var k in h.Fields){var p=h.Fields[k];for(var j=0;j<this.CHARCONV_.length;j++){var q=this.CHARCONV_[j][0];var n=this.CHARCONV_[j][1];p=p.replace(q,n)}p=p.replace(/[\n\r\t]/g," ").replace(/\s\s+/g," ").replace(/^\s+|\s+$/g,"");var l=p.length;var g="";for(var j=0;j<l;j++){var m=p[j];var o=false;if(m=="\\"&&j<l-1){m=p[++j]}else{if(m=="{"||m=="}"){o=true}}if(!o){g+=m}}h.Fields[k]=g}}if(h.ObjectType=="string"){for(var k in h.Fields){this.MACROS_[k]=h.Fields[k]}}else{this.CALLBACK_(h)}};this.processCharacter_=function(l){this.CHAR_++;this.CHAR_IN_LINE_++;if(l=="\n"){this.LINE_++;this.CHAR_IN_LINE_=1}if(this.SKIPTILLEOL_){if(l=="\n"){this.SKIPTILLEOL_=false}return}if(this.SKIPCOMMENT_&&l=="%"){this.SKIPTILLEOL_=true;return}if(this.SKIPWS_&&/\s/.test(l)){return}this.SKIPWS_=false;this.SKIPCOMMENT_=false;this.SKIPTILLEOL_=false;var f=true;while(f){f=false;switch(this.STATE_){case this.STATES_.ENTRY_OR_JUNK:if(l=="@"){this.STATE_=this.STATES_.OBJECT_TYPE;this.DATA_={ObjectType:""}}this.BRACETYPE_=null;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break;case this.STATES_.OBJECT_TYPE:if(/[A-Za-z]/.test(l)){this.DATA_.ObjectType+=l.toLowerCase();this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{var i=this.DATA_.ObjectType;if(i=="comment"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i=="string"){this.DATA_.ObjectType=i;this.DATA_.Fields={};this.BRACETYPE_=l;this.BRACECOUNT_=1;this.STATE_=this.STATES_.KV_KEY;this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.PARSETMP_={Key:""}}else{if(i=="preamble"){this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{if(i in this.ENTRY_TYPES_){this.DATA_.ObjectType="entry";this.DATA_.EntryType=i;this.DATA_.EntryKey="";this.STATE_=this.STATES_.ENTRY_KEY;f=true}else{this.error_('Unrecognized object type: "'+this.DATA_.ObjectType+'"');this.STATE_=this.STATES_.ENTRY_OR_JUNK}}}}}break;case this.STATES_.ENTRY_KEY:if((l==="{"||l==="(")&&this.BRACETYPE_==null){this.BRACETYPE_=l;this.BRACECOUNT_=1;this.SKIPWS_=true;this.SKIPCOMMENT_=true;break}if(/[,%\s]/.test(l)){if(this.DATA_.EntryKey.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{if(this.BRACETYPE_==null){this.error_("No opening brace for object.");this.STATE_=this.STATES_.ENTRY_OR_JUNK}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;f=true;this.STATE_=this.STATES_.KV_KEY;this.PARSETMP_.Key="";this.DATA_.Fields={}}}}else{this.DATA_.EntryKey+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}break;case this.STATES_.KV_KEY:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(/[\-A-Za-z:]/.test(l)){this.PARSETMP_.Key+=l;this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{if(this.PARSETMP_.Key.length<1){this.SKIPWS_=true;this.SKIPCOMMENT_=true}else{this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.EQUALS;f=true}}break;case this.STATES_.EQUALS:if((l=="}"&&this.BRACETYPE_=="{")||(l==")"&&this.BRACETYPE_=="(")){this.error_('Key-value pair has key "'+this.PARSETMP_.Key+'", but no value.');this.processEntry_();this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.ENTRY_OR_JUNK;break}if(l=="="){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_VALUE;this.PARSETMP_.Value="";this.VALBRACES_={'"':[],"{":[]}}break;case this.STATES_.KV_VALUE:var k=this.VALBRACES_;var j=this.PARSETMP_.Value;var h=false;if(l=='"'||l=="{"||l=="}"||l==","){if(l==","){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}h=true}}if(l=='"'){if(0===k['"'].length+k["{"].length){k['"'].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false;break}if(k['"'].length==1&&k["{"].length==0&&(j.length==0||j[j.length-1]!="\\")){h=true}else{}}if(l=="{"){if(j.length==0||j[j.length-1]!="\\"){k["{"].push(this.CHAR_);this.SKIPWS_=false;this.SKIPCOMMENT_=false}else{}}if(l=="}"){if(0===k['"'].length+k["{"].length){var g=this.PARSETMP_.Value.trim();if(g in this.MACROS_){this.PARSETMP_.Value=this.MACROS_[g]}else{this.error_("Reference to an undefined macro: "+g)}f=true;h=true}else{if(j.length==0||j[j.length-1]!="\\"){if(k["{"].length>0){k["{"].splice(k["{"].length-1,1);if(0==k["{"].length+k['"'].length){h=true}else{}}}else{}}}}if(h){this.SKIPWS_=true;this.SKIPCOMMENT_=true;this.STATE_=this.STATES_.KV_KEY;this.DATA_.Fields[this.PARSETMP_.Key]=this.PARSETMP_.Value;this.PARSETMP_={Key:""};this.VALBRACES_=null}else{this.PARSETMP_.Value+=l}break}}};this.CHARCONV_=[[/\\space /g,"\u0020"],[/\\textdollar /g,"\u0024"],[/\\textquotesingle /g,"\u0027"],[/\\ast /g,"\u002A"],[/\\textbackslash /g,"\u005C"],[/\\\^\{\}/g,"\u005E"],[/\\textasciigrave /g,"\u0060"],[/\\lbrace /g,"\u007B"],[/\\vert /g,"\u007C"],[/\\rbrace /g,"\u007D"],[/\\textasciitilde /g,"\u007E"],[/\\textexclamdown /g,"\u00A1"],[/\\textcent /g,"\u00A2"],[/\\textsterling /g,"\u00A3"],[/\\textcurrency /g,"\u00A4"],[/\\textyen /g,"\u00A5"],[/\\textbrokenbar /g,"\u00A6"],[/\\textsection /g,"\u00A7"],[/\\textasciidieresis /g,"\u00A8"],[/\\textcopyright /g,"\u00A9"],[/\\textordfeminine /g,"\u00AA"],[/\\guillemotleft /g,"\u00AB"],[/\\lnot /g,"\u00AC"],[/\\textregistered /g,"\u00AE"],[/\\textasciimacron /g,"\u00AF"],[/\\textdegree /g,"\u00B0"],[/\\pm /g,"\u00B1"],[/\\textasciiacute /g,"\u00B4"],[/\\mathrm\{\\mu\}/g,"\u00B5"],[/\\textparagraph /g,"\u00B6"],[/\\cdot /g,"\u00B7"],[/\\c\{\}/g,"\u00B8"],[/\\textordmasculine /g,"\u00BA"],[/\\guillemotright /g,"\u00BB"],[/\\textonequarter /g,"\u00BC"],[/\\textonehalf /g,"\u00BD"],[/\\textthreequarters /g,"\u00BE"],[/\\textquestiondown /g,"\u00BF"],[/\\`\{A\}/g,"\u00C0"],[/\\'\{A\}/g,"\u00C1"],[/\\\^\{A\}/g,"\u00C2"],[/\\~\{A\}/g,"\u00C3"],[/\\"\{A\}/g,"\u00C4"],[/\\AA /g,"\u00C5"],[/\\AE /g,"\u00C6"],[/\\c\{C\}/g,"\u00C7"],[/\\`\{E\}/g,"\u00C8"],[/\\'\{E\}/g,"\u00C9"],[/\\\^\{E\}/g,"\u00CA"],[/\\"\{E\}/g,"\u00CB"],[/\\`\{I\}/g,"\u00CC"],[/\\'\{I\}/g,"\u00CD"],[/\\\^\{I\}/g,"\u00CE"],[/\\"\{I\}/g,"\u00CF"],[/\\DH /g,"\u00D0"],[/\\~\{N\}/g,"\u00D1"],[/\\`\{O\}/g,"\u00D2"],[/\\'\{O\}/g,"\u00D3"],[/\\\^\{O\}/g,"\u00D4"],[/\\~\{O\}/g,"\u00D5"],[/\\"\{O\}/g,"\u00D6"],[/\\texttimes /g,"\u00D7"],[/\\O /g,"\u00D8"],[/\\`\{U\}/g,"\u00D9"],[/\\'\{U\}/g,"\u00DA"],[/\\\^\{U\}/g,"\u00DB"],[/\\"\{U\}/g,"\u00DC"],[/\\'\{Y\}/g,"\u00DD"],[/\\TH /g,"\u00DE"],[/\\ss /g,"\u00DF"],[/\\`\{a\}/g,"\u00E0"],[/\\'\{a\}/g,"\u00E1"],[/\\\^\{a\}/g,"\u00E2"],[/\\~\{a\}/g,"\u00E3"],[/\\"\{a\}/g,"\u00E4"],[/\\aa /g,"\u00E5"],[/\\ae /g,"\u00E6"],[/\\c\{c\}/g,"\u00E7"],[/\\`\{e\}/g,"\u00E8"],[/\\'\{e\}/g,"\u00E9"],[/\\\^\{e\}/g,"\u00EA"],[/\\"\{e\}/g,"\u00EB"],[/\\`\{\\i\}/g,"\u00EC"],[/\\'\{\\i\}/g,"\u00ED"],[/\\\^\{\\i\}/g,"\u00EE"],[/\\"\{\\i\}/g,"\u00EF"],[/\\dh /g,"\u00F0"],[/\\~\{n\}/g,"\u00F1"],[/\\`\{o\}/g,"\u00F2"],[/\\'\{o\}/g,"\u00F3"],[/\\\^\{o\}/g,"\u00F4"],[/\\~\{o\}/g,"\u00F5"],[/\\"\{o\}/g,"\u00F6"],[/\\div /g,"\u00F7"],[/\\o /g,"\u00F8"],[/\\`\{u\}/g,"\u00F9"],[/\\'\{u\}/g,"\u00FA"],[/\\\^\{u\}/g,"\u00FB"],[/\\"\{u\}/g,"\u00FC"],[/\\'\{y\}/g,"\u00FD"],[/\\th /g,"\u00FE"],[/\\"\{y\}/g,"\u00FF"],[/\\=\{A\}/g,"\u0100"],[/\\=\{a\}/g,"\u0101"],[/\\u\{A\}/g,"\u0102"],[/\\u\{a\}/g,"\u0103"],[/\\k\{A\}/g,"\u0104"],[/\\k\{a\}/g,"\u0105"],[/\\'\{C\}/g,"\u0106"],[/\\'\{c\}/g,"\u0107"],[/\\\^\{C\}/g,"\u0108"],[/\\\^\{c\}/g,"\u0109"],[/\\.\{C\}/g,"\u010A"],[/\\.\{c\}/g,"\u010B"],[/\\v\{C\}/g,"\u010C"],[/\\v\{c\}/g,"\u010D"],[/\\v\{D\}/g,"\u010E"],[/\\v\{d\}/g,"\u010F"],[/\\DJ /g,"\u0110"],[/\\dj /g,"\u0111"],[/\\=\{E\}/g,"\u0112"],[/\\=\{e\}/g,"\u0113"],[/\\u\{E\}/g,"\u0114"],[/\\u\{e\}/g,"\u0115"],[/\\.\{E\}/g,"\u0116"],[/\\.\{e\}/g,"\u0117"],[/\\k\{E\}/g,"\u0118"],[/\\k\{e\}/g,"\u0119"],[/\\v\{E\}/g,"\u011A"],[/\\v\{e\}/g,"\u011B"],[/\\\^\{G\}/g,"\u011C"],[/\\\^\{g\}/g,"\u011D"],[/\\u\{G\}/g,"\u011E"],[/\\u\{g\}/g,"\u011F"],[/\\.\{G\}/g,"\u0120"],[/\\.\{g\}/g,"\u0121"],[/\\c\{G\}/g,"\u0122"],[/\\c\{g\}/g,"\u0123"],[/\\\^\{H\}/g,"\u0124"],[/\\\^\{h\}/g,"\u0125"],[/\\Elzxh /g,"\u0127"],[/\\~\{I\}/g,"\u0128"],[/\\~\{\\i\}/g,"\u0129"],[/\\=\{I\}/g,"\u012A"],[/\\=\{\\i\}/g,"\u012B"],[/\\u\{I\}/g,"\u012C"],[/\\u\{\\i\}/g,"\u012D"],[/\\k\{I\}/g,"\u012E"],[/\\k\{i\}/g,"\u012F"],[/\\.\{I\}/g,"\u0130"],[/\\i /g,"\u0131"],[/\\\^\{J\}/g,"\u0134"],[/\\\^\{\\j\}/g,"\u0135"],[/\\c\{K\}/g,"\u0136"],[/\\c\{k\}/g,"\u0137"],[/\\'\{L\}/g,"\u0139"],[/\\'\{l\}/g,"\u013A"],[/\\c\{L\}/g,"\u013B"],[/\\c\{l\}/g,"\u013C"],[/\\v\{L\}/g,"\u013D"],[/\\v\{l\}/g,"\u013E"],[/\\L /g,"\u0141"],[/\\l /g,"\u0142"],[/\\'\{N\}/g,"\u0143"],[/\\'\{n\}/g,"\u0144"],[/\\c\{N\}/g,"\u0145"],[/\\c\{n\}/g,"\u0146"],[/\\v\{N\}/g,"\u0147"],[/\\v\{n\}/g,"\u0148"],[/\\NG /g,"\u014A"],[/\\ng /g,"\u014B"],[/\\=\{O\}/g,"\u014C"],[/\\=\{o\}/g,"\u014D"],[/\\u\{O\}/g,"\u014E"],[/\\u\{o\}/g,"\u014F"],[/\\H\{O\}/g,"\u0150"],[/\\H\{o\}/g,"\u0151"],[/\\OE /g,"\u0152"],[/\\oe /g,"\u0153"],[/\\'\{R\}/g,"\u0154"],[/\\'\{r\}/g,"\u0155"],[/\\c\{R\}/g,"\u0156"],[/\\c\{r\}/g,"\u0157"],[/\\v\{R\}/g,"\u0158"],[/\\v\{r\}/g,"\u0159"],[/\\'\{S\}/g,"\u015A"],[/\\'\{s\}/g,"\u015B"],[/\\\^\{S\}/g,"\u015C"],[/\\\^\{s\}/g,"\u015D"],[/\\c\{S\}/g,"\u015E"],[/\\c\{s\}/g,"\u015F"],[/\\v\{S\}/g,"\u0160"],[/\\v\{s\}/g,"\u0161"],[/\\c\{T\}/g,"\u0162"],[/\\c\{t\}/g,"\u0163"],[/\\v\{T\}/g,"\u0164"],[/\\v\{t\}/g,"\u0165"],[/\\~\{U\}/g,"\u0168"],[/\\~\{u\}/g,"\u0169"],[/\\=\{U\}/g,"\u016A"],[/\\=\{u\}/g,"\u016B"],[/\\u\{U\}/g,"\u016C"],[/\\u\{u\}/g,"\u016D"],[/\\r\{U\}/g,"\u016E"],[/\\r\{u\}/g,"\u016F"],[/\\H\{U\}/g,"\u0170"],[/\\H\{u\}/g,"\u0171"],[/\\k\{U\}/g,"\u0172"],[/\\k\{u\}/g,"\u0173"],[/\\\^\{W\}/g,"\u0174"],[/\\\^\{w\}/g,"\u0175"],[/\\\^\{Y\}/g,"\u0176"],[/\\\^\{y\}/g,"\u0177"],[/\\"\{Y\}/g,"\u0178"],[/\\'\{Z\}/g,"\u0179"],[/\\'\{z\}/g,"\u017A"],[/\\.\{Z\}/g,"\u017B"],[/\\.\{z\}/g,"\u017C"],[/\\v\{Z\}/g,"\u017D"],[/\\v\{z\}/g,"\u017E"],[/\\texthvlig /g,"\u0195"],[/\\textnrleg /g,"\u019E"],[/\\eth /g,"\u01AA"],[/\\textdoublepipe /g,"\u01C2"],[/\\'\{g\}/g,"\u01F5"],[/\\Elztrna /g,"\u0250"],[/\\Elztrnsa /g,"\u0252"],[/\\Elzopeno /g,"\u0254"],[/\\Elzrtld /g,"\u0256"],[/\\Elzschwa /g,"\u0259"],[/\\varepsilon /g,"\u025B"],[/\\Elzpgamma /g,"\u0263"],[/\\Elzpbgam /g,"\u0264"],[/\\Elztrnh /g,"\u0265"],[/\\Elzbtdl /g,"\u026C"],[/\\Elzrtll /g,"\u026D"],[/\\Elztrnm /g,"\u026F"],[/\\Elztrnmlr /g,"\u0270"],[/\\Elzltlmr /g,"\u0271"],[/\\Elzltln /g,"\u0272"],[/\\Elzrtln /g,"\u0273"],[/\\Elzclomeg /g,"\u0277"],[/\\textphi /g,"\u0278"],[/\\Elztrnr /g,"\u0279"],[/\\Elztrnrl /g,"\u027A"],[/\\Elzrttrnr /g,"\u027B"],[/\\Elzrl /g,"\u027C"],[/\\Elzrtlr /g,"\u027D"],[/\\Elzfhr /g,"\u027E"],[/\\Elzrtls /g,"\u0282"],[/\\Elzesh /g,"\u0283"],[/\\Elztrnt /g,"\u0287"],[/\\Elzrtlt /g,"\u0288"],[/\\Elzpupsil /g,"\u028A"],[/\\Elzpscrv /g,"\u028B"],[/\\Elzinvv /g,"\u028C"],[/\\Elzinvw /g,"\u028D"],[/\\Elztrny /g,"\u028E"],[/\\Elzrtlz /g,"\u0290"],[/\\Elzyogh /g,"\u0292"],[/\\Elzglst /g,"\u0294"],[/\\Elzreglst /g,"\u0295"],[/\\Elzinglst /g,"\u0296"],[/\\textturnk /g,"\u029E"],[/\\Elzdyogh /g,"\u02A4"],[/\\Elztesh /g,"\u02A7"],[/\\textasciicaron /g,"\u02C7"],[/\\Elzverts /g,"\u02C8"],[/\\Elzverti /g,"\u02CC"],[/\\Elzlmrk /g,"\u02D0"],[/\\Elzhlmrk /g,"\u02D1"],[/\\Elzsbrhr /g,"\u02D2"],[/\\Elzsblhr /g,"\u02D3"],[/\\Elzrais /g,"\u02D4"],[/\\Elzlow /g,"\u02D5"],[/\\textasciibreve /g,"\u02D8"],[/\\textperiodcentered /g,"\u02D9"],[/\\r\{\}/g,"\u02DA"],[/\\k\{\}/g,"\u02DB"],[/\\texttildelow /g,"\u02DC"],[/\\H\{\}/g,"\u02DD"],[/\\tone\{55\}/g,"\u02E5"],[/\\tone\{44\}/g,"\u02E6"],[/\\tone\{33\}/g,"\u02E7"],[/\\tone\{22\}/g,"\u02E8"],[/\\tone\{11\}/g,"\u02E9"],[/\\cyrchar\\C/g,"\u030F"],[/\\Elzpalh /g,"\u0321"],[/\\Elzrh /g,"\u0322"],[/\\Elzsbbrg /g,"\u032A"],[/\\Elzxl /g,"\u0335"],[/\\Elzbar /g,"\u0336"],[/\\'\{A\}/g,"\u0386"],[/\\'\{E\}/g,"\u0388"],[/\\'\{H\}/g,"\u0389"],[/\\'\{\}\{I\}/g,"\u038A"],[/\\'\{\}O/g,"\u038C"],[/\\mathrm\{'Y\}/g,"\u038E"],[/\\mathrm\{'\\Omega\}/g,"\u038F"],[/\\acute\{\\ddot\{\\iota\}\}/g,"\u0390"],[/\\Alpha /g,"\u0391"],[/\\Beta /g,"\u0392"],[/\\Gamma /g,"\u0393"],[/\\Delta /g,"\u0394"],[/\\Epsilon /g,"\u0395"],[/\\Zeta /g,"\u0396"],[/\\Eta /g,"\u0397"],[/\\Theta /g,"\u0398"],[/\\Iota /g,"\u0399"],[/\\Kappa /g,"\u039A"],[/\\Lambda /g,"\u039B"],[/\\Xi /g,"\u039E"],[/\\Pi /g,"\u03A0"],[/\\Rho /g,"\u03A1"],[/\\Sigma /g,"\u03A3"],[/\\Tau /g,"\u03A4"],[/\\Upsilon /g,"\u03A5"],[/\\Phi /g,"\u03A6"],[/\\Chi /g,"\u03A7"],[/\\Psi /g,"\u03A8"],[/\\Omega /g,"\u03A9"],[/\\mathrm\{\\ddot\{I\}\}/g,"\u03AA"],[/\\mathrm\{\\ddot\{Y\}\}/g,"\u03AB"],[/\\'\{\$\\alpha\$\}/g,"\u03AC"],[/\\acute\{\\epsilon\}/g,"\u03AD"],[/\\acute\{\\eta\}/g,"\u03AE"],[/\\acute\{\\iota\}/g,"\u03AF"],[/\\acute\{\\ddot\{\\upsilon\}\}/g,"\u03B0"],[/\\alpha /g,"\u03B1"],[/\\beta /g,"\u03B2"],[/\\gamma /g,"\u03B3"],[/\\delta /g,"\u03B4"],[/\\epsilon /g,"\u03B5"],[/\\zeta /g,"\u03B6"],[/\\eta /g,"\u03B7"],[/\\texttheta /g,"\u03B8"],[/\\iota /g,"\u03B9"],[/\\kappa /g,"\u03BA"],[/\\lambda /g,"\u03BB"],[/\\mu /g,"\u03BC"],[/\\nu /g,"\u03BD"],[/\\xi /g,"\u03BE"],[/\\pi /g,"\u03C0"],[/\\rho /g,"\u03C1"],[/\\varsigma /g,"\u03C2"],[/\\sigma /g,"\u03C3"],[/\\tau /g,"\u03C4"],[/\\upsilon /g,"\u03C5"],[/\\varphi /g,"\u03C6"],[/\\chi /g,"\u03C7"],[/\\psi /g,"\u03C8"],[/\\omega /g,"\u03C9"],[/\\ddot\{\\iota\}/g,"\u03CA"],[/\\ddot\{\\upsilon\}/g,"\u03CB"],[/\\'\{o\}/g,"\u03CC"],[/\\acute\{\\upsilon\}/g,"\u03CD"],[/\\acute\{\\omega\}/g,"\u03CE"],[/\\Pisymbol\{ppi022\}\{87\}/g,"\u03D0"],[/\\textvartheta /g,"\u03D1"],[/\\Upsilon /g,"\u03D2"],[/\\phi /g,"\u03D5"],[/\\varpi /g,"\u03D6"],[/\\Stigma /g,"\u03DA"],[/\\Digamma /g,"\u03DC"],[/\\digamma /g,"\u03DD"],[/\\Koppa /g,"\u03DE"],[/\\Sampi /g,"\u03E0"],[/\\varkappa /g,"\u03F0"],[/\\varrho /g,"\u03F1"],[/\\textTheta /g,"\u03F4"],[/\\backepsilon /g,"\u03F6"],[/\\cyrchar\\CYRYO /g,"\u0401"],[/\\cyrchar\\CYRDJE /g,"\u0402"],[/\\cyrchar\{\\'\\CYRG\}/g,"\u0403"],[/\\cyrchar\\CYRIE /g,"\u0404"],[/\\cyrchar\\CYRDZE /g,"\u0405"],[/\\cyrchar\\CYRII /g,"\u0406"],[/\\cyrchar\\CYRYI /g,"\u0407"],[/\\cyrchar\\CYRJE /g,"\u0408"],[/\\cyrchar\\CYRLJE /g,"\u0409"],[/\\cyrchar\\CYRNJE /g,"\u040A"],[/\\cyrchar\\CYRTSHE /g,"\u040B"],[/\\cyrchar\{\\'\\CYRK\}/g,"\u040C"],[/\\cyrchar\\CYRUSHRT /g,"\u040E"],[/\\cyrchar\\CYRDZHE /g,"\u040F"],[/\\cyrchar\\CYRA /g,"\u0410"],[/\\cyrchar\\CYRB /g,"\u0411"],[/\\cyrchar\\CYRV /g,"\u0412"],[/\\cyrchar\\CYRG /g,"\u0413"],[/\\cyrchar\\CYRD /g,"\u0414"],[/\\cyrchar\\CYRE /g,"\u0415"],[/\\cyrchar\\CYRZH /g,"\u0416"],[/\\cyrchar\\CYRZ /g,"\u0417"],[/\\cyrchar\\CYRI /g,"\u0418"],[/\\cyrchar\\CYRISHRT /g,"\u0419"],[/\\cyrchar\\CYRK /g,"\u041A"],[/\\cyrchar\\CYRL /g,"\u041B"],[/\\cyrchar\\CYRM /g,"\u041C"],[/\\cyrchar\\CYRN /g,"\u041D"],[/\\cyrchar\\CYRO /g,"\u041E"],[/\\cyrchar\\CYRP /g,"\u041F"],[/\\cyrchar\\CYRR /g,"\u0420"],[/\\cyrchar\\CYRS /g,"\u0421"],[/\\cyrchar\\CYRT /g,"\u0422"],[/\\cyrchar\\CYRU /g,"\u0423"],[/\\cyrchar\\CYRF /g,"\u0424"],[/\\cyrchar\\CYRH /g,"\u0425"],[/\\cyrchar\\CYRC /g,"\u0426"],[/\\cyrchar\\CYRCH /g,"\u0427"],[/\\cyrchar\\CYRSH /g,"\u0428"],[/\\cyrchar\\CYRSHCH /g,"\u0429"],[/\\cyrchar\\CYRHRDSN /g,"\u042A"],[/\\cyrchar\\CYRERY /g,"\u042B"],[/\\cyrchar\\CYRSFTSN /g,"\u042C"],[/\\cyrchar\\CYREREV /g,"\u042D"],[/\\cyrchar\\CYRYU /g,"\u042E"],[/\\cyrchar\\CYRYA /g,"\u042F"],[/\\cyrchar\\cyra /g,"\u0430"],[/\\cyrchar\\cyrb /g,"\u0431"],[/\\cyrchar\\cyrv /g,"\u0432"],[/\\cyrchar\\cyrg /g,"\u0433"],[/\\cyrchar\\cyrd /g,"\u0434"],[/\\cyrchar\\cyre /g,"\u0435"],[/\\cyrchar\\cyrzh /g,"\u0436"],[/\\cyrchar\\cyrz /g,"\u0437"],[/\\cyrchar\\cyri /g,"\u0438"],[/\\cyrchar\\cyrishrt /g,"\u0439"],[/\\cyrchar\\cyrk /g,"\u043A"],[/\\cyrchar\\cyrl /g,"\u043B"],[/\\cyrchar\\cyrm /g,"\u043C"],[/\\cyrchar\\cyrn /g,"\u043D"],[/\\cyrchar\\cyro /g,"\u043E"],[/\\cyrchar\\cyrp /g,"\u043F"],[/\\cyrchar\\cyrr /g,"\u0440"],[/\\cyrchar\\cyrs /g,"\u0441"],[/\\cyrchar\\cyrt /g,"\u0442"],[/\\cyrchar\\cyru /g,"\u0443"],[/\\cyrchar\\cyrf /g,"\u0444"],[/\\cyrchar\\cyrh /g,"\u0445"],[/\\cyrchar\\cyrc /g,"\u0446"],[/\\cyrchar\\cyrch /g,"\u0447"],[/\\cyrchar\\cyrsh /g,"\u0448"],[/\\cyrchar\\cyrshch /g,"\u0449"],[/\\cyrchar\\cyrhrdsn /g,"\u044A"],[/\\cyrchar\\cyrery /g,"\u044B"],[/\\cyrchar\\cyrsftsn /g,"\u044C"],[/\\cyrchar\\cyrerev /g,"\u044D"],[/\\cyrchar\\cyryu /g,"\u044E"],[/\\cyrchar\\cyrya /g,"\u044F"],[/\\cyrchar\\cyryo /g,"\u0451"],[/\\cyrchar\\cyrdje /g,"\u0452"],[/\\cyrchar\{\\'\\cyrg\}/g,"\u0453"],[/\\cyrchar\\cyrie /g,"\u0454"],[/\\cyrchar\\cyrdze /g,"\u0455"],[/\\cyrchar\\cyrii /g,"\u0456"],[/\\cyrchar\\cyryi /g,"\u0457"],[/\\cyrchar\\cyrje /g,"\u0458"],[/\\cyrchar\\cyrlje /g,"\u0459"],[/\\cyrchar\\cyrnje /g,"\u045A"],[/\\cyrchar\\cyrtshe /g,"\u045B"],[/\\cyrchar\{\\'\\cyrk\}/g,"\u045C"],[/\\cyrchar\\cyrushrt /g,"\u045E"],[/\\cyrchar\\cyrdzhe /g,"\u045F"],[/\\cyrchar\\CYROMEGA /g,"\u0460"],[/\\cyrchar\\cyromega /g,"\u0461"],[/\\cyrchar\\CYRYAT /g,"\u0462"],[/\\cyrchar\\CYRIOTE /g,"\u0464"],[/\\cyrchar\\cyriote /g,"\u0465"],[/\\cyrchar\\CYRLYUS /g,"\u0466"],[/\\cyrchar\\cyrlyus /g,"\u0467"],[/\\cyrchar\\CYRIOTLYUS /g,"\u0468"],[/\\cyrchar\\cyriotlyus /g,"\u0469"],[/\\cyrchar\\CYRBYUS /g,"\u046A"],[/\\cyrchar\\CYRIOTBYUS /g,"\u046C"],[/\\cyrchar\\cyriotbyus /g,"\u046D"],[/\\cyrchar\\CYRKSI /g,"\u046E"],[/\\cyrchar\\cyrksi /g,"\u046F"],[/\\cyrchar\\CYRPSI /g,"\u0470"],[/\\cyrchar\\cyrpsi /g,"\u0471"],[/\\cyrchar\\CYRFITA /g,"\u0472"],[/\\cyrchar\\CYRIZH /g,"\u0474"],[/\\cyrchar\\CYRUK /g,"\u0478"],[/\\cyrchar\\cyruk /g,"\u0479"],[/\\cyrchar\\CYROMEGARND /g,"\u047A"],[/\\cyrchar\\cyromegarnd /g,"\u047B"],[/\\cyrchar\\CYROMEGATITLO /g,"\u047C"],[/\\cyrchar\\cyromegatitlo /g,"\u047D"],[/\\cyrchar\\CYROT /g,"\u047E"],[/\\cyrchar\\cyrot /g,"\u047F"],[/\\cyrchar\\CYRKOPPA /g,"\u0480"],[/\\cyrchar\\cyrkoppa /g,"\u0481"],[/\\cyrchar\\cyrthousands /g,"\u0482"],[/\\cyrchar\\cyrhundredthousands /g,"\u0488"],[/\\cyrchar\\cyrmillions /g,"\u0489"],[/\\cyrchar\\CYRSEMISFTSN /g,"\u048C"],[/\\cyrchar\\cyrsemisftsn /g,"\u048D"],[/\\cyrchar\\CYRRTICK /g,"\u048E"],[/\\cyrchar\\cyrrtick /g,"\u048F"],[/\\cyrchar\\CYRGUP /g,"\u0490"],[/\\cyrchar\\cyrgup /g,"\u0491"],[/\\cyrchar\\CYRGHCRS /g,"\u0492"],[/\\cyrchar\\cyrghcrs /g,"\u0493"],[/\\cyrchar\\CYRGHK /g,"\u0494"],[/\\cyrchar\\cyrghk /g,"\u0495"],[/\\cyrchar\\CYRZHDSC /g,"\u0496"],[/\\cyrchar\\cyrzhdsc /g,"\u0497"],[/\\cyrchar\\CYRZDSC /g,"\u0498"],[/\\cyrchar\\cyrzdsc /g,"\u0499"],[/\\cyrchar\\CYRKDSC /g,"\u049A"],[/\\cyrchar\\cyrkdsc /g,"\u049B"],[/\\cyrchar\\CYRKVCRS /g,"\u049C"],[/\\cyrchar\\cyrkvcrs /g,"\u049D"],[/\\cyrchar\\CYRKHCRS /g,"\u049E"],[/\\cyrchar\\cyrkhcrs /g,"\u049F"],[/\\cyrchar\\CYRKBEAK /g,"\u04A0"],[/\\cyrchar\\cyrkbeak /g,"\u04A1"],[/\\cyrchar\\CYRNDSC /g,"\u04A2"],[/\\cyrchar\\cyrndsc /g,"\u04A3"],[/\\cyrchar\\CYRNG /g,"\u04A4"],[/\\cyrchar\\cyrng /g,"\u04A5"],[/\\cyrchar\\CYRPHK /g,"\u04A6"],[/\\cyrchar\\cyrphk /g,"\u04A7"],[/\\cyrchar\\CYRABHHA /g,"\u04A8"],[/\\cyrchar\\cyrabhha /g,"\u04A9"],[/\\cyrchar\\CYRSDSC /g,"\u04AA"],[/\\cyrchar\\cyrsdsc /g,"\u04AB"],[/\\cyrchar\\CYRTDSC /g,"\u04AC"],[/\\cyrchar\\cyrtdsc /g,"\u04AD"],[/\\cyrchar\\CYRY /g,"\u04AE"],[/\\cyrchar\\cyry /g,"\u04AF"],[/\\cyrchar\\CYRYHCRS /g,"\u04B0"],[/\\cyrchar\\cyryhcrs /g,"\u04B1"],[/\\cyrchar\\CYRHDSC /g,"\u04B2"],[/\\cyrchar\\cyrhdsc /g,"\u04B3"],[/\\cyrchar\\CYRTETSE /g,"\u04B4"],[/\\cyrchar\\cyrtetse /g,"\u04B5"],[/\\cyrchar\\CYRCHRDSC /g,"\u04B6"],[/\\cyrchar\\cyrchrdsc /g,"\u04B7"],[/\\cyrchar\\CYRCHVCRS /g,"\u04B8"],[/\\cyrchar\\cyrchvcrs /g,"\u04B9"],[/\\cyrchar\\CYRSHHA /g,"\u04BA"],[/\\cyrchar\\cyrshha /g,"\u04BB"],[/\\cyrchar\\CYRABHCH /g,"\u04BC"],[/\\cyrchar\\cyrabhch /g,"\u04BD"],[/\\cyrchar\\CYRABHCHDSC /g,"\u04BE"],[/\\cyrchar\\cyrabhchdsc /g,"\u04BF"],[/\\cyrchar\\CYRpalochka /g,"\u04C0"],[/\\cyrchar\\CYRKHK /g,"\u04C3"],[/\\cyrchar\\cyrkhk /g,"\u04C4"],[/\\cyrchar\\CYRNHK /g,"\u04C7"],[/\\cyrchar\\cyrnhk /g,"\u04C8"],[/\\cyrchar\\CYRCHLDSC /g,"\u04CB"],[/\\cyrchar\\cyrchldsc /g,"\u04CC"],[/\\cyrchar\\CYRAE /g,"\u04D4"],[/\\cyrchar\\cyrae /g,"\u04D5"],[/\\cyrchar\\CYRSCHWA /g,"\u04D8"],[/\\cyrchar\\cyrschwa /g,"\u04D9"],[/\\cyrchar\\CYRABHDZE /g,"\u04E0"],[/\\cyrchar\\cyrabhdze /g,"\u04E1"],[/\\cyrchar\\CYROTLD /g,"\u04E8"],[/\\cyrchar\\cyrotld /g,"\u04E9"],[/\\hspace\{0.6em\}/g,"\u2002"],[/\\hspace\{1em\}/g,"\u2003"],[/\\hspace\{0.33em\}/g,"\u2004"],[/\\hspace\{0.25em\}/g,"\u2005"],[/\\hspace\{0.166em\}/g,"\u2006"],[/\\hphantom\{0\}/g,"\u2007"],[/\\hphantom\{,\}/g,"\u2008"],[/\\hspace\{0.167em\}/g,"\u2009"],[/\\mkern1mu /g,"\u200A"],[/\\textendash /g,"\u2013"],[/\\textemdash /g,"\u2014"],[/\\rule\{1em\}\{1pt\}/g,"\u2015"],[/\\Vert /g,"\u2016"],[/\\Elzreapos /g,"\u201B"],[/\\textquotedblleft /g,"\u201C"],[/\\textquotedblright /g,"\u201D"],[/\\textdagger /g,"\u2020"],[/\\textdaggerdbl /g,"\u2021"],[/\\textbullet /g,"\u2022"],[/\\ldots /g,"\u2026"],[/\\textperthousand /g,"\u2030"],[/\\textpertenthousand /g,"\u2031"],[/\\backprime /g,"\u2035"],[/\\guilsinglleft /g,"\u2039"],[/\\guilsinglright /g,"\u203A"],[/\\mkern4mu /g,"\u205F"],[/\\nolinebreak /g,"\u2060"],[/\\ensuremath\{\\Elzpes\}/g,"\u20A7"],[/\\mbox\{\\texteuro\} /g,"\u20AC"],[/\\dddot /g,"\u20DB"],[/\\ddddot /g,"\u20DC"],[/\\mathbb\{C\}/g,"\u2102"],[/\\mathscr\{g\}/g,"\u210A"],[/\\mathscr\{H\}/g,"\u210B"],[/\\mathfrak\{H\}/g,"\u210C"],[/\\mathbb\{H\}/g,"\u210D"],[/\\hslash /g,"\u210F"],[/\\mathscr\{I\}/g,"\u2110"],[/\\mathfrak\{I\}/g,"\u2111"],[/\\mathscr\{L\}/g,"\u2112"],[/\\mathscr\{l\}/g,"\u2113"],[/\\mathbb\{N\}/g,"\u2115"],[/\\cyrchar\\textnumero /g,"\u2116"],[/\\wp /g,"\u2118"],[/\\mathbb\{P\}/g,"\u2119"],[/\\mathbb\{Q\}/g,"\u211A"],[/\\mathscr\{R\}/g,"\u211B"],[/\\mathfrak\{R\}/g,"\u211C"],[/\\mathbb\{R\}/g,"\u211D"],[/\\Elzxrat /g,"\u211E"],[/\\texttrademark /g,"\u2122"],[/\\mathbb\{Z\}/g,"\u2124"],[/\\Omega /g,"\u2126"],[/\\mho /g,"\u2127"],[/\\mathfrak\{Z\}/g,"\u2128"],[/\\ElsevierGlyph\{2129\}/g,"\u2129"],[/\\AA /g,"\u212B"],[/\\mathscr\{B\}/g,"\u212C"],[/\\mathfrak\{C\}/g,"\u212D"],[/\\mathscr\{e\}/g,"\u212F"],[/\\mathscr\{E\}/g,"\u2130"],[/\\mathscr\{F\}/g,"\u2131"],[/\\mathscr\{M\}/g,"\u2133"],[/\\mathscr\{o\}/g,"\u2134"],[/\\aleph /g,"\u2135"],[/\\beth /g,"\u2136"],[/\\gimel /g,"\u2137"],[/\\daleth /g,"\u2138"],[/\\textfrac\{1\}\{3\}/g,"\u2153"],[/\\textfrac\{2\}\{3\}/g,"\u2154"],[/\\textfrac\{1\}\{5\}/g,"\u2155"],[/\\textfrac\{2\}\{5\}/g,"\u2156"],[/\\textfrac\{3\}\{5\}/g,"\u2157"],[/\\textfrac\{4\}\{5\}/g,"\u2158"],[/\\textfrac\{1\}\{6\}/g,"\u2159"],[/\\textfrac\{5\}\{6\}/g,"\u215A"],[/\\textfrac\{1\}\{8\}/g,"\u215B"],[/\\textfrac\{3\}\{8\}/g,"\u215C"],[/\\textfrac\{5\}\{8\}/g,"\u215D"],[/\\textfrac\{7\}\{8\}/g,"\u215E"],[/\\leftarrow /g,"\u2190"],[/\\uparrow /g,"\u2191"],[/\\rightarrow /g,"\u2192"],[/\\downarrow /g,"\u2193"],[/\\leftrightarrow /g,"\u2194"],[/\\updownarrow /g,"\u2195"],[/\\nwarrow /g,"\u2196"],[/\\nearrow /g,"\u2197"],[/\\searrow /g,"\u2198"],[/\\swarrow /g,"\u2199"],[/\\nleftarrow /g,"\u219A"],[/\\nrightarrow /g,"\u219B"],[/\\arrowwaveright /g,"\u219C"],[/\\arrowwaveright /g,"\u219D"],[/\\twoheadleftarrow /g,"\u219E"],[/\\twoheadrightarrow /g,"\u21A0"],[/\\leftarrowtail /g,"\u21A2"],[/\\rightarrowtail /g,"\u21A3"],[/\\mapsto /g,"\u21A6"],[/\\hookleftarrow /g,"\u21A9"],[/\\hookrightarrow /g,"\u21AA"],[/\\looparrowleft /g,"\u21AB"],[/\\looparrowright /g,"\u21AC"],[/\\leftrightsquigarrow /g,"\u21AD"],[/\\nleftrightarrow /g,"\u21AE"],[/\\Lsh /g,"\u21B0"],[/\\Rsh /g,"\u21B1"],[/\\ElsevierGlyph\{21B3\}/g,"\u21B3"],[/\\curvearrowleft /g,"\u21B6"],[/\\curvearrowright /g,"\u21B7"],[/\\circlearrowleft /g,"\u21BA"],[/\\circlearrowright /g,"\u21BB"],[/\\leftharpoonup /g,"\u21BC"],[/\\leftharpoondown /g,"\u21BD"],[/\\upharpoonright /g,"\u21BE"],[/\\upharpoonleft /g,"\u21BF"],[/\\rightharpoonup /g,"\u21C0"],[/\\rightharpoondown /g,"\u21C1"],[/\\downharpoonright /g,"\u21C2"],[/\\downharpoonleft /g,"\u21C3"],[/\\rightleftarrows /g,"\u21C4"],[/\\dblarrowupdown /g,"\u21C5"],[/\\leftrightarrows /g,"\u21C6"],[/\\leftleftarrows /g,"\u21C7"],[/\\upuparrows /g,"\u21C8"],[/\\rightrightarrows /g,"\u21C9"],[/\\downdownarrows /g,"\u21CA"],[/\\leftrightharpoons /g,"\u21CB"],[/\\rightleftharpoons /g,"\u21CC"],[/\\nLeftarrow /g,"\u21CD"],[/\\nLeftrightarrow /g,"\u21CE"],[/\\nRightarrow /g,"\u21CF"],[/\\Leftarrow /g,"\u21D0"],[/\\Uparrow /g,"\u21D1"],[/\\Rightarrow /g,"\u21D2"],[/\\Downarrow /g,"\u21D3"],[/\\Leftrightarrow /g,"\u21D4"],[/\\Updownarrow /g,"\u21D5"],[/\\Lleftarrow /g,"\u21DA"],[/\\Rrightarrow /g,"\u21DB"],[/\\rightsquigarrow /g,"\u21DD"],[/\\DownArrowUpArrow /g,"\u21F5"],[/\\forall /g,"\u2200"],[/\\complement /g,"\u2201"],[/\\partial /g,"\u2202"],[/\\exists /g,"\u2203"],[/\\nexists /g,"\u2204"],[/\\varnothing /g,"\u2205"],[/\\nabla /g,"\u2207"],[/\\in /g,"\u2208"],[/\\not\\in /g,"\u2209"],[/\\ni /g,"\u220B"],[/\\not\\ni /g,"\u220C"],[/\\prod /g,"\u220F"],[/\\coprod /g,"\u2210"],[/\\sum /g,"\u2211"],[/\\mp /g,"\u2213"],[/\\dotplus /g,"\u2214"],[/\\setminus /g,"\u2216"],[/\\circ /g,"\u2218"],[/\\bullet /g,"\u2219"],[/\\surd /g,"\u221A"],[/\\propto /g,"\u221D"],[/\\infty /g,"\u221E"],[/\\rightangle /g,"\u221F"],[/\\angle /g,"\u2220"],[/\\measuredangle /g,"\u2221"],[/\\sphericalangle /g,"\u2222"],[/\\mid /g,"\u2223"],[/\\nmid /g,"\u2224"],[/\\parallel /g,"\u2225"],[/\\nparallel /g,"\u2226"],[/\\wedge /g,"\u2227"],[/\\vee /g,"\u2228"],[/\\cap /g,"\u2229"],[/\\cup /g,"\u222A"],[/\\int /g,"\u222B"],[/\\int\\!\\int /g,"\u222C"],[/\\int\\!\\int\\!\\int /g,"\u222D"],[/\\oint /g,"\u222E"],[/\\surfintegral /g,"\u222F"],[/\\volintegral /g,"\u2230"],[/\\clwintegral /g,"\u2231"],[/\\ElsevierGlyph\{2232\}/g,"\u2232"],[/\\ElsevierGlyph\{2233\}/g,"\u2233"],[/\\therefore /g,"\u2234"],[/\\because /g,"\u2235"],[/\\Colon /g,"\u2237"],[/\\ElsevierGlyph\{2238\}/g,"\u2238"],[/\\mathbin\{\{:\}\\!\\!\{\-\}\\!\\!\{:\}\}/g,"\u223A"],[/\\homothetic /g,"\u223B"],[/\\sim /g,"\u223C"],[/\\backsim /g,"\u223D"],[/\\lazysinv /g,"\u223E"],[/\\wr /g,"\u2240"],[/\\not\\sim /g,"\u2241"],[/\\ElsevierGlyph\{2242\}/g,"\u2242"],[/\\NotEqualTilde /g,"\u2242-00338"],[/\\simeq /g,"\u2243"],[/\\not\\simeq /g,"\u2244"],[/\\cong /g,"\u2245"],[/\\approxnotequal /g,"\u2246"],[/\\not\\cong /g,"\u2247"],[/\\approx /g,"\u2248"],[/\\not\\approx /g,"\u2249"],[/\\approxeq /g,"\u224A"],[/\\tildetrpl /g,"\u224B"],[/\\not\\apid /g,"\u224B-00338"],[/\\allequal /g,"\u224C"],[/\\asymp /g,"\u224D"],[/\\Bumpeq /g,"\u224E"],[/\\NotHumpDownHump /g,"\u224E-00338"],[/\\bumpeq /g,"\u224F"],[/\\NotHumpEqual /g,"\u224F-00338"],[/\\doteq /g,"\u2250"],[/\\not\\doteq/g,"\u2250-00338"],[/\\doteqdot /g,"\u2251"],[/\\fallingdotseq /g,"\u2252"],[/\\risingdotseq /g,"\u2253"],[/\\eqcirc /g,"\u2256"],[/\\circeq /g,"\u2257"],[/\\estimates /g,"\u2259"],[/\\ElsevierGlyph\{225A\}/g,"\u225A"],[/\\starequal /g,"\u225B"],[/\\triangleq /g,"\u225C"],[/\\ElsevierGlyph\{225F\}/g,"\u225F"],[/\\not =/g,"\u2260"],[/\\equiv /g,"\u2261"],[/\\not\\equiv /g,"\u2262"],[/\\leq /g,"\u2264"],[/\\geq /g,"\u2265"],[/\\leqq /g,"\u2266"],[/\\geqq /g,"\u2267"],[/\\lneqq /g,"\u2268"],[/\\lvertneqq /g,"\u2268-0FE00"],[/\\gneqq /g,"\u2269"],[/\\gvertneqq /g,"\u2269-0FE00"],[/\\ll /g,"\u226A"],[/\\NotLessLess /g,"\u226A-00338"],[/\\gg /g,"\u226B"],[/\\NotGreaterGreater /g,"\u226B-00338"],[/\\between /g,"\u226C"],[/\\not\\kern\-0.3em\\times /g,"\u226D"],[/\\not</g,"\u226E"],[/\\not>/g,"\u226F"],[/\\not\\leq /g,"\u2270"],[/\\not\\geq /g,"\u2271"],[/\\lessequivlnt /g,"\u2272"],[/\\greaterequivlnt /g,"\u2273"],[/\\ElsevierGlyph\{2274\}/g,"\u2274"],[/\\ElsevierGlyph\{2275\}/g,"\u2275"],[/\\lessgtr /g,"\u2276"],[/\\gtrless /g,"\u2277"],[/\\notlessgreater /g,"\u2278"],[/\\notgreaterless /g,"\u2279"],[/\\prec /g,"\u227A"],[/\\succ /g,"\u227B"],[/\\preccurlyeq /g,"\u227C"],[/\\succcurlyeq /g,"\u227D"],[/\\precapprox /g,"\u227E"],[/\\NotPrecedesTilde /g,"\u227E-00338"],[/\\succapprox /g,"\u227F"],[/\\NotSucceedsTilde /g,"\u227F-00338"],[/\\not\\prec /g,"\u2280"],[/\\not\\succ /g,"\u2281"],[/\\subset /g,"\u2282"],[/\\supset /g,"\u2283"],[/\\not\\subset /g,"\u2284"],[/\\not\\supset /g,"\u2285"],[/\\subseteq /g,"\u2286"],[/\\supseteq /g,"\u2287"],[/\\not\\subseteq /g,"\u2288"],[/\\not\\supseteq /g,"\u2289"],[/\\subsetneq /g,"\u228A"],[/\\varsubsetneqq /g,"\u228A-0FE00"],[/\\supsetneq /g,"\u228B"],[/\\varsupsetneq /g,"\u228B-0FE00"],[/\\uplus /g,"\u228E"],[/\\sqsubset /g,"\u228F"],[/\\NotSquareSubset /g,"\u228F-00338"],[/\\sqsupset /g,"\u2290"],[/\\NotSquareSuperset /g,"\u2290-00338"],[/\\sqsubseteq /g,"\u2291"],[/\\sqsupseteq /g,"\u2292"],[/\\sqcap /g,"\u2293"],[/\\sqcup /g,"\u2294"],[/\\oplus /g,"\u2295"],[/\\ominus /g,"\u2296"],[/\\otimes /g,"\u2297"],[/\\oslash /g,"\u2298"],[/\\odot /g,"\u2299"],[/\\circledcirc /g,"\u229A"],[/\\circledast /g,"\u229B"],[/\\circleddash /g,"\u229D"],[/\\boxplus /g,"\u229E"],[/\\boxminus /g,"\u229F"],[/\\boxtimes /g,"\u22A0"],[/\\boxdot /g,"\u22A1"],[/\\vdash /g,"\u22A2"],[/\\dashv /g,"\u22A3"],[/\\top /g,"\u22A4"],[/\\perp /g,"\u22A5"],[/\\truestate /g,"\u22A7"],[/\\forcesextra /g,"\u22A8"],[/\\Vdash /g,"\u22A9"],[/\\Vvdash /g,"\u22AA"],[/\\VDash /g,"\u22AB"],[/\\nvdash /g,"\u22AC"],[/\\nvDash /g,"\u22AD"],[/\\nVdash /g,"\u22AE"],[/\\nVDash /g,"\u22AF"],[/\\vartriangleleft /g,"\u22B2"],[/\\vartriangleright /g,"\u22B3"],[/\\trianglelefteq /g,"\u22B4"],[/\\trianglerighteq /g,"\u22B5"],[/\\original /g,"\u22B6"],[/\\image /g,"\u22B7"],[/\\multimap /g,"\u22B8"],[/\\hermitconjmatrix /g,"\u22B9"],[/\\intercal /g,"\u22BA"],[/\\veebar /g,"\u22BB"],[/\\rightanglearc /g,"\u22BE"],[/\\ElsevierGlyph\{22C0\}/g,"\u22C0"],[/\\ElsevierGlyph\{22C1\}/g,"\u22C1"],[/\\bigcap /g,"\u22C2"],[/\\bigcup /g,"\u22C3"],[/\\diamond /g,"\u22C4"],[/\\cdot /g,"\u22C5"],[/\\star /g,"\u22C6"],[/\\divideontimes /g,"\u22C7"],[/\\bowtie /g,"\u22C8"],[/\\ltimes /g,"\u22C9"],[/\\rtimes /g,"\u22CA"],[/\\leftthreetimes /g,"\u22CB"],[/\\rightthreetimes /g,"\u22CC"],[/\\backsimeq /g,"\u22CD"],[/\\curlyvee /g,"\u22CE"],[/\\curlywedge /g,"\u22CF"],[/\\Subset /g,"\u22D0"],[/\\Supset /g,"\u22D1"],[/\\Cap /g,"\u22D2"],[/\\Cup /g,"\u22D3"],[/\\pitchfork /g,"\u22D4"],[/\\lessdot /g,"\u22D6"],[/\\gtrdot /g,"\u22D7"],[/\\verymuchless /g,"\u22D8"],[/\\verymuchgreater /g,"\u22D9"],[/\\lesseqgtr /g,"\u22DA"],[/\\gtreqless /g,"\u22DB"],[/\\curlyeqprec /g,"\u22DE"],[/\\curlyeqsucc /g,"\u22DF"],[/\\not\\sqsubseteq /g,"\u22E2"],[/\\not\\sqsupseteq /g,"\u22E3"],[/\\Elzsqspne /g,"\u22E5"],[/\\lnsim /g,"\u22E6"],[/\\gnsim /g,"\u22E7"],[/\\precedesnotsimilar /g,"\u22E8"],[/\\succnsim /g,"\u22E9"],[/\\ntriangleleft /g,"\u22EA"],[/\\ntriangleright /g,"\u22EB"],[/\\ntrianglelefteq /g,"\u22EC"],[/\\ntrianglerighteq /g,"\u22ED"],[/\\vdots /g,"\u22EE"],[/\\cdots /g,"\u22EF"],[/\\upslopeellipsis /g,"\u22F0"],[/\\downslopeellipsis /g,"\u22F1"],[/\\barwedge /g,"\u2305"],[/\\perspcorrespond /g,"\u2306"],[/\\lceil /g,"\u2308"],[/\\rceil /g,"\u2309"],[/\\lfloor /g,"\u230A"],[/\\rfloor /g,"\u230B"],[/\\recorder /g,"\u2315"],[/\\mathchar"2208/g,"\u2316"],[/\\ulcorner /g,"\u231C"],[/\\urcorner /g,"\u231D"],[/\\llcorner /g,"\u231E"],[/\\lrcorner /g,"\u231F"],[/\\frown /g,"\u2322"],[/\\smile /g,"\u2323"],[/\\langle /g,"\u2329"],[/\\rangle /g,"\u232A"],[/\\ElsevierGlyph\{E838\}/g,"\u233D"],[/\\Elzdlcorn /g,"\u23A3"],[/\\lmoustache /g,"\u23B0"],[/\\rmoustache /g,"\u23B1"],[/\\textvisiblespace /g,"\u2423"],[/\\ding\{172\}/g,"\u2460"],[/\\ding\{173\}/g,"\u2461"],[/\\ding\{174\}/g,"\u2462"],[/\\ding\{175\}/g,"\u2463"],[/\\ding\{176\}/g,"\u2464"],[/\\ding\{177\}/g,"\u2465"],[/\\ding\{178\}/g,"\u2466"],[/\\ding\{179\}/g,"\u2467"],[/\\ding\{180\}/g,"\u2468"],[/\\ding\{181\}/g,"\u2469"],[/\\circledS /g,"\u24C8"],[/\\Elzdshfnc /g,"\u2506"],[/\\Elzsqfnw /g,"\u2519"],[/\\diagup /g,"\u2571"],[/\\ding\{110\}/g,"\u25A0"],[/\\square /g,"\u25A1"],[/\\blacksquare /g,"\u25AA"],[/\\fbox\{~~\}/g,"\u25AD"],[/\\Elzvrecto /g,"\u25AF"],[/\\ElsevierGlyph\{E381\}/g,"\u25B1"],[/\\ding\{115\}/g,"\u25B2"],[/\\bigtriangleup /g,"\u25B3"],[/\\blacktriangle /g,"\u25B4"],[/\\vartriangle /g,"\u25B5"],[/\\blacktriangleright /g,"\u25B8"],[/\\triangleright /g,"\u25B9"],[/\\ding\{116\}/g,"\u25BC"],[/\\bigtriangledown /g,"\u25BD"],[/\\blacktriangledown /g,"\u25BE"],[/\\triangledown /g,"\u25BF"],[/\\blacktriangleleft /g,"\u25C2"],[/\\triangleleft /g,"\u25C3"],[/\\ding\{117\}/g,"\u25C6"],[/\\lozenge /g,"\u25CA"],[/\\bigcirc /g,"\u25CB"],[/\\ding\{108\}/g,"\u25CF"],[/\\Elzcirfl /g,"\u25D0"],[/\\Elzcirfr /g,"\u25D1"],[/\\Elzcirfb /g,"\u25D2"],[/\\ding\{119\}/g,"\u25D7"],[/\\Elzrvbull /g,"\u25D8"],[/\\Elzsqfl /g,"\u25E7"],[/\\Elzsqfr /g,"\u25E8"],[/\\Elzsqfse /g,"\u25EA"],[/\\bigcirc /g,"\u25EF"],[/\\ding\{72\}/g,"\u2605"],[/\\ding\{73\}/g,"\u2606"],[/\\ding\{37\}/g,"\u260E"],[/\\ding\{42\}/g,"\u261B"],[/\\ding\{43\}/g,"\u261E"],[/\\rightmoon /g,"\u263E"],[/\\mercury /g,"\u263F"],[/\\venus /g,"\u2640"],[/\\male /g,"\u2642"],[/\\jupiter /g,"\u2643"],[/\\saturn /g,"\u2644"],[/\\uranus /g,"\u2645"],[/\\neptune /g,"\u2646"],[/\\pluto /g,"\u2647"],[/\\aries /g,"\u2648"],[/\\taurus /g,"\u2649"],[/\\gemini /g,"\u264A"],[/\\cancer /g,"\u264B"],[/\\leo /g,"\u264C"],[/\\virgo /g,"\u264D"],[/\\libra /g,"\u264E"],[/\\scorpio /g,"\u264F"],[/\\sagittarius /g,"\u2650"],[/\\capricornus /g,"\u2651"],[/\\aquarius /g,"\u2652"],[/\\pisces /g,"\u2653"],[/\\ding\{171\}/g,"\u2660"],[/\\diamond /g,"\u2662"],[/\\ding\{168\}/g,"\u2663"],[/\\ding\{170\}/g,"\u2665"],[/\\ding\{169\}/g,"\u2666"],[/\\quarternote /g,"\u2669"],[/\\eighthnote /g,"\u266A"],[/\\flat /g,"\u266D"],[/\\natural /g,"\u266E"],[/\\sharp /g,"\u266F"],[/\\ding\{33\}/g,"\u2701"],[/\\ding\{34\}/g,"\u2702"],[/\\ding\{35\}/g,"\u2703"],[/\\ding\{36\}/g,"\u2704"],[/\\ding\{38\}/g,"\u2706"],[/\\ding\{39\}/g,"\u2707"],[/\\ding\{40\}/g,"\u2708"],[/\\ding\{41\}/g,"\u2709"],[/\\ding\{44\}/g,"\u270C"],[/\\ding\{45\}/g,"\u270D"],[/\\ding\{46\}/g,"\u270E"],[/\\ding\{47\}/g,"\u270F"],[/\\ding\{48\}/g,"\u2710"],[/\\ding\{49\}/g,"\u2711"],[/\\ding\{50\}/g,"\u2712"],[/\\ding\{51\}/g,"\u2713"],[/\\ding\{52\}/g,"\u2714"],[/\\ding\{53\}/g,"\u2715"],[/\\ding\{54\}/g,"\u2716"],[/\\ding\{55\}/g,"\u2717"],[/\\ding\{56\}/g,"\u2718"],[/\\ding\{57\}/g,"\u2719"],[/\\ding\{58\}/g,"\u271A"],[/\\ding\{59\}/g,"\u271B"],[/\\ding\{60\}/g,"\u271C"],[/\\ding\{61\}/g,"\u271D"],[/\\ding\{62\}/g,"\u271E"],[/\\ding\{63\}/g,"\u271F"],[/\\ding\{64\}/g,"\u2720"],[/\\ding\{65\}/g,"\u2721"],[/\\ding\{66\}/g,"\u2722"],[/\\ding\{67\}/g,"\u2723"],[/\\ding\{68\}/g,"\u2724"],[/\\ding\{69\}/g,"\u2725"],[/\\ding\{70\}/g,"\u2726"],[/\\ding\{71\}/g,"\u2727"],[/\\ding\{73\}/g,"\u2729"],[/\\ding\{74\}/g,"\u272A"],[/\\ding\{75\}/g,"\u272B"],[/\\ding\{76\}/g,"\u272C"],[/\\ding\{77\}/g,"\u272D"],[/\\ding\{78\}/g,"\u272E"],[/\\ding\{79\}/g,"\u272F"],[/\\ding\{80\}/g,"\u2730"],[/\\ding\{81\}/g,"\u2731"],[/\\ding\{82\}/g,"\u2732"],[/\\ding\{83\}/g,"\u2733"],[/\\ding\{84\}/g,"\u2734"],[/\\ding\{85\}/g,"\u2735"],[/\\ding\{86\}/g,"\u2736"],[/\\ding\{87\}/g,"\u2737"],[/\\ding\{88\}/g,"\u2738"],[/\\ding\{89\}/g,"\u2739"],[/\\ding\{90\}/g,"\u273A"],[/\\ding\{91\}/g,"\u273B"],[/\\ding\{92\}/g,"\u273C"],[/\\ding\{93\}/g,"\u273D"],[/\\ding\{94\}/g,"\u273E"],[/\\ding\{95\}/g,"\u273F"],[/\\ding\{96\}/g,"\u2740"],[/\\ding\{97\}/g,"\u2741"],[/\\ding\{98\}/g,"\u2742"],[/\\ding\{99\}/g,"\u2743"],[/\\ding\{100\}/g,"\u2744"],[/\\ding\{101\}/g,"\u2745"],[/\\ding\{102\}/g,"\u2746"],[/\\ding\{103\}/g,"\u2747"],[/\\ding\{104\}/g,"\u2748"],[/\\ding\{105\}/g,"\u2749"],[/\\ding\{106\}/g,"\u274A"],[/\\ding\{107\}/g,"\u274B"],[/\\ding\{109\}/g,"\u274D"],[/\\ding\{111\}/g,"\u274F"],[/\\ding\{112\}/g,"\u2750"],[/\\ding\{113\}/g,"\u2751"],[/\\ding\{114\}/g,"\u2752"],[/\\ding\{118\}/g,"\u2756"],[/\\ding\{120\}/g,"\u2758"],[/\\ding\{121\}/g,"\u2759"],[/\\ding\{122\}/g,"\u275A"],[/\\ding\{123\}/g,"\u275B"],[/\\ding\{124\}/g,"\u275C"],[/\\ding\{125\}/g,"\u275D"],[/\\ding\{126\}/g,"\u275E"],[/\\ding\{161\}/g,"\u2761"],[/\\ding\{162\}/g,"\u2762"],[/\\ding\{163\}/g,"\u2763"],[/\\ding\{164\}/g,"\u2764"],[/\\ding\{165\}/g,"\u2765"],[/\\ding\{166\}/g,"\u2766"],[/\\ding\{167\}/g,"\u2767"],[/\\ding\{182\}/g,"\u2776"],[/\\ding\{183\}/g,"\u2777"],[/\\ding\{184\}/g,"\u2778"],[/\\ding\{185\}/g,"\u2779"],[/\\ding\{186\}/g,"\u277A"],[/\\ding\{187\}/g,"\u277B"],[/\\ding\{188\}/g,"\u277C"],[/\\ding\{189\}/g,"\u277D"],[/\\ding\{190\}/g,"\u277E"],[/\\ding\{191\}/g,"\u277F"],[/\\ding\{192\}/g,"\u2780"],[/\\ding\{193\}/g,"\u2781"],[/\\ding\{194\}/g,"\u2782"],[/\\ding\{195\}/g,"\u2783"],[/\\ding\{196\}/g,"\u2784"],[/\\ding\{197\}/g,"\u2785"],[/\\ding\{198\}/g,"\u2786"],[/\\ding\{199\}/g,"\u2787"],[/\\ding\{200\}/g,"\u2788"],[/\\ding\{201\}/g,"\u2789"],[/\\ding\{202\}/g,"\u278A"],[/\\ding\{203\}/g,"\u278B"],[/\\ding\{204\}/g,"\u278C"],[/\\ding\{205\}/g,"\u278D"],[/\\ding\{206\}/g,"\u278E"],[/\\ding\{207\}/g,"\u278F"],[/\\ding\{208\}/g,"\u2790"],[/\\ding\{209\}/g,"\u2791"],[/\\ding\{210\}/g,"\u2792"],[/\\ding\{211\}/g,"\u2793"],[/\\ding\{212\}/g,"\u2794"],[/\\ding\{216\}/g,"\u2798"],[/\\ding\{217\}/g,"\u2799"],[/\\ding\{218\}/g,"\u279A"],[/\\ding\{219\}/g,"\u279B"],[/\\ding\{220\}/g,"\u279C"],[/\\ding\{221\}/g,"\u279D"],[/\\ding\{222\}/g,"\u279E"],[/\\ding\{223\}/g,"\u279F"],[/\\ding\{224\}/g,"\u27A0"],[/\\ding\{225\}/g,"\u27A1"],[/\\ding\{226\}/g,"\u27A2"],[/\\ding\{227\}/g,"\u27A3"],[/\\ding\{228\}/g,"\u27A4"],[/\\ding\{229\}/g,"\u27A5"],[/\\ding\{230\}/g,"\u27A6"],[/\\ding\{231\}/g,"\u27A7"],[/\\ding\{232\}/g,"\u27A8"],[/\\ding\{233\}/g,"\u27A9"],[/\\ding\{234\}/g,"\u27AA"],[/\\ding\{235\}/g,"\u27AB"],[/\\ding\{236\}/g,"\u27AC"],[/\\ding\{237\}/g,"\u27AD"],[/\\ding\{238\}/g,"\u27AE"],[/\\ding\{239\}/g,"\u27AF"],[/\\ding\{241\}/g,"\u27B1"],[/\\ding\{242\}/g,"\u27B2"],[/\\ding\{243\}/g,"\u27B3"],[/\\ding\{244\}/g,"\u27B4"],[/\\ding\{245\}/g,"\u27B5"],[/\\ding\{246\}/g,"\u27B6"],[/\\ding\{247\}/g,"\u27B7"],[/\\ding\{248\}/g,"\u27B8"],[/\\ding\{249\}/g,"\u27B9"],[/\\ding\{250\}/g,"\u27BA"],[/\\ding\{251\}/g,"\u27BB"],[/\\ding\{252\}/g,"\u27BC"],[/\\ding\{253\}/g,"\u27BD"],[/\\ding\{254\}/g,"\u27BE"],[/\\longleftarrow /g,"\u27F5"],[/\\longrightarrow /g,"\u27F6"],[/\\longleftrightarrow /g,"\u27F7"],[/\\Longleftarrow /g,"\u27F8"],[/\\Longrightarrow /g,"\u27F9"],[/\\Longleftrightarrow /g,"\u27FA"],[/\\longmapsto /g,"\u27FC"],[/\\sim\\joinrel\\leadsto/g,"\u27FF"],[/\\ElsevierGlyph\{E212\}/g,"\u2905"],[/\\UpArrowBar /g,"\u2912"],[/\\DownArrowBar /g,"\u2913"],[/\\ElsevierGlyph\{E20C\}/g,"\u2923"],[/\\ElsevierGlyph\{E20D\}/g,"\u2924"],[/\\ElsevierGlyph\{E20B\}/g,"\u2925"],[/\\ElsevierGlyph\{E20A\}/g,"\u2926"],[/\\ElsevierGlyph\{E211\}/g,"\u2927"],[/\\ElsevierGlyph\{E20E\}/g,"\u2928"],[/\\ElsevierGlyph\{E20F\}/g,"\u2929"],[/\\ElsevierGlyph\{E210\}/g,"\u292A"],[/\\ElsevierGlyph\{E21C\}/g,"\u2933"],[/\\ElsevierGlyph\{E21D\}/g,"\u2933-00338"],[/\\ElsevierGlyph\{E21A\}/g,"\u2936"],[/\\ElsevierGlyph\{E219\}/g,"\u2937"],[/\\Elolarr /g,"\u2940"],[/\\Elorarr /g,"\u2941"],[/\\ElzRlarr /g,"\u2942"],[/\\ElzrLarr /g,"\u2944"],[/\\Elzrarrx /g,"\u2947"],[/\\LeftRightVector /g,"\u294E"],[/\\RightUpDownVector /g,"\u294F"],[/\\DownLeftRightVector /g,"\u2950"],[/\\LeftUpDownVector /g,"\u2951"],[/\\LeftVectorBar /g,"\u2952"],[/\\RightVectorBar /g,"\u2953"],[/\\RightUpVectorBar /g,"\u2954"],[/\\RightDownVectorBar /g,"\u2955"],[/\\DownLeftVectorBar /g,"\u2956"],[/\\DownRightVectorBar /g,"\u2957"],[/\\LeftUpVectorBar /g,"\u2958"],[/\\LeftDownVectorBar /g,"\u2959"],[/\\LeftTeeVector /g,"\u295A"],[/\\RightTeeVector /g,"\u295B"],[/\\RightUpTeeVector /g,"\u295C"],[/\\RightDownTeeVector /g,"\u295D"],[/\\DownLeftTeeVector /g,"\u295E"],[/\\DownRightTeeVector /g,"\u295F"],[/\\LeftUpTeeVector /g,"\u2960"],[/\\LeftDownTeeVector /g,"\u2961"],[/\\UpEquilibrium /g,"\u296E"],[/\\ReverseUpEquilibrium /g,"\u296F"],[/\\RoundImplies /g,"\u2970"],[/\\ElsevierGlyph\{E214\}/g,"\u297C"],[/\\ElsevierGlyph\{E215\}/g,"\u297D"],[/\\Elztfnc /g,"\u2980"],[/\\ElsevierGlyph\{3018\}/g,"\u2985"],[/\\Elroang /g,"\u2986"],[/\\ElsevierGlyph\{E291\}/g,"\u2994"],[/\\Elzddfnc /g,"\u2999"],[/\\Angle /g,"\u299C"],[/\\Elzlpargt /g,"\u29A0"],[/\\ElsevierGlyph\{E260\}/g,"\u29B5"],[/\\ElsevierGlyph\{E61B\}/g,"\u29B6"],[/\\ElzLap /g,"\u29CA"],[/\\Elzdefas /g,"\u29CB"],[/\\LeftTriangleBar /g,"\u29CF"],[/\\NotLeftTriangleBar /g,"\u29CF-00338"],[/\\RightTriangleBar /g,"\u29D0"],[/\\NotRightTriangleBar /g,"\u29D0-00338"],[/\\ElsevierGlyph\{E372\}/g,"\u29DC"],[/\\blacklozenge /g,"\u29EB"],[/\\RuleDelayed /g,"\u29F4"],[/\\Elxuplus /g,"\u2A04"],[/\\ElzThr /g,"\u2A05"],[/\\Elxsqcup /g,"\u2A06"],[/\\ElzInf /g,"\u2A07"],[/\\ElzSup /g,"\u2A08"],[/\\ElzCint /g,"\u2A0D"],[/\\clockoint /g,"\u2A0F"],[/\\ElsevierGlyph\{E395\}/g,"\u2A10"],[/\\sqrint /g,"\u2A16"],[/\\ElsevierGlyph\{E25A\}/g,"\u2A25"],[/\\ElsevierGlyph\{E25B\}/g,"\u2A2A"],[/\\ElsevierGlyph\{E25C\}/g,"\u2A2D"],[/\\ElsevierGlyph\{E25D\}/g,"\u2A2E"],[/\\ElzTimes /g,"\u2A2F"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A34"],[/\\ElsevierGlyph\{E25E\}/g,"\u2A35"],[/\\ElsevierGlyph\{E259\}/g,"\u2A3C"],[/\\amalg /g,"\u2A3F"],[/\\ElzAnd /g,"\u2A53"],[/\\ElzOr /g,"\u2A54"],[/\\ElsevierGlyph\{E36E\}/g,"\u2A55"],[/\\ElOr /g,"\u2A56"],[/\\perspcorrespond /g,"\u2A5E"],[/\\Elzminhat /g,"\u2A5F"],[/\\ElsevierGlyph\{225A\}/g,"\u2A63"],[/\\stackrel\{*\}\{=\}/g,"\u2A6E"],[/\\Equal /g,"\u2A75"],[/\\leqslant /g,"\u2A7D"],[/\\nleqslant /g,"\u2A7D-00338"],[/\\geqslant /g,"\u2A7E"],[/\\ngeqslant /g,"\u2A7E-00338"],[/\\lessapprox /g,"\u2A85"],[/\\gtrapprox /g,"\u2A86"],[/\\lneq /g,"\u2A87"],[/\\gneq /g,"\u2A88"],[/\\lnapprox /g,"\u2A89"],[/\\gnapprox /g,"\u2A8A"],[/\\lesseqqgtr /g,"\u2A8B"],[/\\gtreqqless /g,"\u2A8C"],[/\\eqslantless /g,"\u2A95"],[/\\eqslantgtr /g,"\u2A96"],[/\\Pisymbol\{ppi020\}\{117\}/g,"\u2A9D"],[/\\Pisymbol\{ppi020\}\{105\}/g,"\u2A9E"],[/\\NestedLessLess /g,"\u2AA1"],[/\\NotNestedLessLess /g,"\u2AA1-00338"],[/\\NestedGreaterGreater /g,"\u2AA2"],[/\\NotNestedGreaterGreater /g,"\u2AA2-00338"],[/\\preceq /g,"\u2AAF"],[/\\not\\preceq /g,"\u2AAF-00338"],[/\\succeq /g,"\u2AB0"],[/\\not\\succeq /g,"\u2AB0-00338"],[/\\precneqq /g,"\u2AB5"],[/\\succneqq /g,"\u2AB6"],[/\\precapprox /g,"\u2AB7"],[/\\succapprox /g,"\u2AB8"],[/\\precnapprox /g,"\u2AB9"],[/\\succnapprox /g,"\u2ABA"],[/\\subseteqq /g,"\u2AC5"],[/\\nsubseteqq /g,"\u2AC5-00338"],[/\\supseteqq /g,"\u2AC6"],[/\\nsupseteqq/g,"\u2AC6-00338"],[/\\subsetneqq /g,"\u2ACB"],[/\\supsetneqq /g,"\u2ACC"],[/\\ElsevierGlyph\{E30D\}/g,"\u2AEB"],[/\\Elztdcol /g,"\u2AF6"],[/\\ElsevierGlyph\{300A\}/g,"\u300A"],[/\\ElsevierGlyph\{300B\}/g,"\u300B"],[/\\ElsevierGlyph\{3018\}/g,"\u3018"],[/\\ElsevierGlyph\{3019\}/g,"\u3019"],[/\\openbracketleft /g,"\u301A"],[/\\openbracketright /g,"\u301B"]];return this}if(typeof module!=="undefined"&&module.exports){module.exports=BibtexParser};
\ No newline at end of file
diff -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 -r 82f8d68414f5c9a0e5aeaaabca85cf7044e06183 static/scripts/packed/mvc/citation/citation-view.js
--- a/static/scripts/packed/mvc/citation/citation-view.js
+++ b/static/scripts/packed/mvc/citation/citation-view.js
@@ -1,1 +1,1 @@
-define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,d,c){var b=Backbone.View.extend({tagName:"div",className:"citations",render:function(){this.$el.append("<p>"+this.formattedReference()+"</p>");return this},formattedReference:function(){var j=this.model;var i=j.entryType();var k=j.fields();var g="";var n=this._asSentence((k.author?k.author:"")+(k.year?(" ("+k.year+")"):""))+" ";var m=k.title||"";var h=k.pages?("pp. "+k.pages):"";var o=k.address;if(i=="article"){g=n+this._asSentence(m)+(k.journal?("In <em>"+k.journal+", "):"")+(k.volume?k.volume:"")+(k.number?("("+k.number+"), "):", ")+this._asSentence(h)+this._asSentence(k.address)+"</em>"}else{if(i=="inproceedings"||i=="proceedings"){g=n+this._asSentence(m)+(k.booktitle?("In <em>"+k.booktitle+", "):"")+(h?h:"")+(o?", "+o:"")+".</em>"}else{if(i=="mastersthesis"||i=="phdthesis"){g=n+this._asSentence(m)+(k.howpublished?k.howpublished+". ":"")+(k.note?k.note+".":"")}else{if(i=="techreport"){g=n+". "+this._asSentence(m)+this._asSentence(k.institution)+this._asSentence(k.number)+this._asSentence(k.type)}else{if(i=="book"||i=="inbook"||i=="incollection"){g=this._asSentence(n)+" "+this._formatBookInfo(k)}else{g=this._asSentence(n)+" "+this._asSentence(m)+this._asSentence(k.howpublished)+this._asSentence(k.note)}}}}}var l="";if(k.doi){l="http://dx.doi.org/"+k.doi;g+='[<a href="'+l+'">doi:'+k.doi+"</a>]"}var f=k.url||l;if(f){g+='[<a href="'+f+'">Link</a>]'}return g},_formatBookInfo:function(f){var g="";if(f.chapter){g+=f.chapter+" in "}if(f.title){g+="<em>"+f.title+"</em>"}if(f.editor){g+=", Edited by "+f.editor+", "}if(f.publisher){g+=", "+f.publisher}if(f.pages){g+=", pp. "+f.pages+""}if(f.series){g+=", <em>"+f.series+"</em>"}if(f.volume){g+=", Vol."+f.volume}if(f.issn){g+=", ISBN: "+f.issn}return g+"."},_asSentence:function(f){return(f&&f.trim())?f+". ":""}});var e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(g){var f=new b({model:g});this.$(".citations-formatted").append(f.render().el);var h=this.$(".citations-bibtex-text");h.val(h.val()+"\n\r"+g.attributes.content)},render:function(){this.$el.html(this.citationsElement());this.collection.each(function(f){this.renderCitation(f)},this);this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show();this.$(".citations-to-bibtex").hide();this.$(".citations-bibtex").show();this.$(".citations-formatted").hide();this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide();this.$(".citations-to-bibtex").show();this.$(".citations-bibtex").hide();this.$(".citations-formatted").show()},partialWarningElement:function(){if(this.collection.partial){return['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',"</div>",].join("")}else{return""}},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <i class="fa fa-pencil-square-o citations-to-bibtex" title="Select all as BibTeX."></i>',' <i class="fa fa-times citations-to-formatted" title="Return to formatted citation list."></i>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:b,CitationListView:e}});
\ No newline at end of file
+define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,d,c){var b=Backbone.View.extend({tagName:"div",className:"citations",render:function(){this.$el.append("<p>"+this.formattedReference()+"</p>");return this},formattedReference:function(){var k=this.model;var i=k.entryType();var l=k.fields();var g="";var o=this._asSentence((l.author?l.author:"")+(l.year?(" ("+l.year+")"):""))+" ";var n=l.title||"";var h=l.pages?("pp. "+l.pages):"";var p=l.address;if(i=="article"){var j=(l.volume?l.volume:"")+(l.number?(" ("+l.number+")"):"")+(h?", "+h:"");g=o+this._asSentence(n)+(l.journal?("In <em>"+l.journal+", "):"")+this._asSentence(j)+this._asSentence(l.address)+"</em>"}else{if(i=="inproceedings"||i=="proceedings"){g=o+this._asSentence(n)+(l.booktitle?("In <em>"+l.booktitle+", "):"")+(h?h:"")+(p?", "+p:"")+".</em>"}else{if(i=="mastersthesis"||i=="phdthesis"){g=o+this._asSentence(n)+(l.howpublished?l.howpublished+". ":"")+(l.note?l.note+".":"")}else{if(i=="techreport"){g=o+this._asSentence(n)+this._asSentence(l.institution)+this._asSentence(l.number)+this._asSentence(l.type)}else{if(i=="book"||i=="inbook"||i=="incollection"){g=o+" "+this._formatBookInfo(l)}else{g=o+" "+this._asSentence(n)+this._asSentence(l.howpublished)+this._asSentence(l.note)}}}}}var m="";if(l.doi){m="http://dx.doi.org/"+l.doi;g+='[<a href="'+m+'">doi:'+l.doi+"</a>]"}var f=l.url||m;if(f){g+='[<a href="'+f+'">Link</a>]'}return g},_formatBookInfo:function(f){var g="";if(f.chapter){g+=f.chapter+" in "}if(f.title){g+="<em>"+f.title+"</em>"}if(f.editor){g+=", Edited by "+f.editor+", "}if(f.publisher){g+=", "+f.publisher}if(f.pages){g+=", pp. "+f.pages+""}if(f.series){g+=", <em>"+f.series+"</em>"}if(f.volume){g+=", Vol."+f.volume}if(f.issn){g+=", ISBN: "+f.issn}return g+"."},_asSentence:function(f){return(f&&f.trim())?f+". ":""}});var e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(g){var f=new b({model:g});this.$(".citations-formatted").append(f.render().el);var h=this.$(".citations-bibtex-text");h.val(h.val()+"\n\r"+g.attributes.content)},render:function(){this.$el.html(this.citationsElement());this.collection.each(function(f){this.renderCitation(f)},this);this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show();this.$(".citations-to-bibtex").hide();this.$(".citations-bibtex").show();this.$(".citations-formatted").hide();this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide();this.$(".citations-to-bibtex").show();this.$(".citations-bibtex").hide();this.$(".citations-formatted").show()},partialWarningElement:function(){if(this.collection.partial){return['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',"</div>",].join("")}else{return""}},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <i class="fa fa-pencil-square-o citations-to-bibtex" title="Select all as BibTeX."></i>',' <i class="fa fa-times citations-to-formatted" title="Return to formatted citation list."></i>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:b,CitationListView:e}});
\ No newline at end of file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
3 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/a0880211749b/
Changeset: a0880211749b
Branch: next-stable
User: saketkc
Date: 2014-09-25 06:10:51+00:00
Summary: Update tool_list to reflect recent change in use of envirnoment variables
tool_list.py now makese use of GALAXY_TEST_TOOL_CONF and exits throwing an appropriate error
Affected #: 1 file
diff -r 5296d69134bddeb11246c70347d83c6073da646f -r a0880211749b1f65c4fa78f9c121fa2234decc67 tool_list.py
--- a/tool_list.py
+++ b/tool_list.py
@@ -1,9 +1,15 @@
-import os,sys
+import os
+import sys
#--------read tool_conf.xml to get all the tool xml file names-----------
onoff = 1
tool_list = []
-for line in open("tool_conf.xml", "r"):
+tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', 'config/tool_conf.xml' )
+if not os.path.isfile(tool_conf_file):
+ sys.stderr.write( "Tool config file not found: {}\n".format(tool_conf_file) )
+ sys.exit(1)
+
+for line in open(tool_conf_file, "r"):
if line.find("<!--") != -1:
onoff = 0
if line.find("file") != -1 and onoff==1:
https://bitbucket.org/galaxy/galaxy-central/commits/f3284eb7ec21/
Changeset: f3284eb7ec21
Branch: next-stable
User: jmchilton
Date: 2014-09-25 13:00:38+00:00
Summary: Fixes to tool_list.py for legacy configurations and modified tool confs.
Now uses roughly the same order of precedence as Galaxy proper's config.
Affected #: 1 file
diff -r a0880211749b1f65c4fa78f9c121fa2234decc67 -r f3284eb7ec210d50a3e9f2c0d393cffcb24894da tool_list.py
--- a/tool_list.py
+++ b/tool_list.py
@@ -4,8 +4,15 @@
#--------read tool_conf.xml to get all the tool xml file names-----------
onoff = 1
tool_list = []
-tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', 'config/tool_conf.xml' )
-if not os.path.isfile(tool_conf_file):
+tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', None )
+
+if tool_conf_file is None:
+ for possible_tool_file in [ 'config/tool_conf.xml', 'tool_conf.xml', 'config/tool_conf.xml.sample' ]:
+ tool_conf_file = possible_tool_file
+ if os.path.isfile( possible_tool_file ):
+ break
+
+if tool_conf_file is None or not os.path.isfile(tool_conf_file):
sys.stderr.write( "Tool config file not found: {}\n".format(tool_conf_file) )
sys.exit(1)
https://bitbucket.org/galaxy/galaxy-central/commits/1db1d66229db/
Changeset: 1db1d66229db
User: jmchilton
Date: 2014-09-25 13:03:21+00:00
Summary: Merge latest next-stable.
Affected #: 1 file
diff -r bcd98385d0af97c1dd5d4ba7944da49ff28158e1 -r 1db1d66229db79f633f70b6f5b52d339cdb2dbb4 tool_list.py
--- a/tool_list.py
+++ b/tool_list.py
@@ -4,8 +4,15 @@
#--------read tool_conf.xml to get all the tool xml file names-----------
onoff = 1
tool_list = []
-tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', 'config/tool_conf.xml' )
-if not os.path.isfile(tool_conf_file):
+tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', None )
+
+if tool_conf_file is None:
+ for possible_tool_file in [ 'config/tool_conf.xml', 'tool_conf.xml', 'config/tool_conf.xml.sample' ]:
+ tool_conf_file = possible_tool_file
+ if os.path.isfile( possible_tool_file ):
+ break
+
+if tool_conf_file is None or not os.path.isfile(tool_conf_file):
sys.stderr.write( "Tool config file not found: {}\n".format(tool_conf_file) )
sys.exit(1)
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: saketkc: Update tool_list to reflect recent change in use of envirnoment variables
by commits-noreply@bitbucket.org 25 Sep '14
by commits-noreply@bitbucket.org 25 Sep '14
25 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/bcd98385d0af/
Changeset: bcd98385d0af
User: saketkc
Date: 2014-09-25 06:10:51+00:00
Summary: Update tool_list to reflect recent change in use of envirnoment variables
tool_list.py now makese use of GALAXY_TEST_TOOL_CONF and exits throwing an appropriate error
Affected #: 1 file
diff -r a3d10d4db962d762d045bf3e46163508d3572e95 -r bcd98385d0af97c1dd5d4ba7944da49ff28158e1 tool_list.py
--- a/tool_list.py
+++ b/tool_list.py
@@ -1,9 +1,15 @@
-import os,sys
+import os
+import sys
#--------read tool_conf.xml to get all the tool xml file names-----------
onoff = 1
tool_list = []
-for line in open("tool_conf.xml", "r"):
+tool_conf_file = os.environ.get( 'GALAXY_TEST_TOOL_CONF', 'config/tool_conf.xml' )
+if not os.path.isfile(tool_conf_file):
+ sys.stderr.write( "Tool config file not found: {}\n".format(tool_conf_file) )
+ sys.exit(1)
+
+for line in open(tool_conf_file, "r"):
if line.find("<!--") != -1:
onoff = 0
if line.find("file") != -1 and onoff==1:
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0