diff --git a/CHANGELOG.md b/CHANGELOG.md
index a61a78fddcb..b20c6bf2e94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- We enabled creating a new file link manually. [#11017](https://github.com/JabRef/jabref/issues/11017)
- We added a toggle button to invert the selected groups. [#9073](https://github.com/JabRef/jabref/issues/9073)
- We reintroduced the floating search in the main table. [#4237](https://github.com/JabRef/jabref/issues/4237)
+- We added a switch not to store the linked file URL, because it caused troubles at other apps. [#11735](https://github.com/JabRef/jabref/pull/11735)
- When starting a new SLR, the selected catalogs now persist within and across JabRef sessions. [koppor#614](https://github.com/koppor/jabref/issues/614)
- We added a different background color to the search bar to indicate when the search syntax is wrong. [#11658](https://github.com/JabRef/jabref/pull/11658)
diff --git a/build.gradle b/build.gradle
index b365a899529..abcd0eec189 100644
--- a/build.gradle
+++ b/build.gradle
@@ -238,7 +238,7 @@ dependencies {
}
implementation 'org.fxmisc.flowless:flowless:0.7.3'
implementation 'org.fxmisc.richtext:richtextfx:0.11.3'
- implementation (group: 'com.dlsc.gemsfx', name: 'gemsfx', version: '2.43.0') {
+ implementation (group: 'com.dlsc.gemsfx', name: 'gemsfx', version: '2.48.0') {
exclude module: 'javax.inject' // Split package, use only jakarta.inject
exclude module: 'commons-lang3'
exclude group: 'org.apache.commons.validator'
@@ -325,7 +325,7 @@ dependencies {
implementation 'com.github.vatbub:mslinks:1.0.6.2'
// YAML formatting
- implementation 'org.yaml:snakeyaml:2.2'
+ implementation 'org.yaml:snakeyaml:2.3'
// AI
implementation 'dev.langchain4j:langchain4j:0.34.0'
@@ -339,7 +339,7 @@ dependencies {
implementation 'ai.djl:api:0.29.0'
implementation 'ai.djl.pytorch:pytorch-model-zoo:0.29.0'
implementation 'ai.djl.huggingface:tokenizers:0.29.0'
- implementation 'io.github.stefanbratanov:jvm-openai:0.10.0'
+ implementation 'io.github.stefanbratanov:jvm-openai:0.11.0'
// openai depends on okhttp, which needs kotlin - see https://github.com/square/okhttp/issues/5299 for details
implementation ('com.squareup.okhttp3:okhttp:4.12.0') {
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
@@ -370,7 +370,7 @@ dependencies {
xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '3.0.2'
xjc group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '3.0.2'
- rewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:2.17.0"))
+ rewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:2.18.0"))
rewrite("org.openrewrite.recipe:rewrite-static-analysis")
rewrite("org.openrewrite.recipe:rewrite-logging-frameworks")
rewrite("org.openrewrite.recipe:rewrite-testing-frameworks")
diff --git a/buildres/abbrv.jabref.org b/buildres/abbrv.jabref.org
index b69f1d607a5..234cce883ad 160000
--- a/buildres/abbrv.jabref.org
+++ b/buildres/abbrv.jabref.org
@@ -1 +1 @@
-Subproject commit b69f1d607a57488276f3402bbf610d9129e7f6fb
+Subproject commit 234cce883adf9012c2831990d883b198d1d6a939
diff --git a/src/main/java/org/jabref/gui/linkedfile/DownloadLinkedFileAction.java b/src/main/java/org/jabref/gui/linkedfile/DownloadLinkedFileAction.java
index 490da28bdca..ea434197f9c 100644
--- a/src/main/java/org/jabref/gui/linkedfile/DownloadLinkedFileAction.java
+++ b/src/main/java/org/jabref/gui/linkedfile/DownloadLinkedFileAction.java
@@ -169,9 +169,9 @@ private void onSuccess(Path targetDirectory, Path downloadedFile) {
if (newLinkedFile.getDescription().isEmpty() && !linkedFile.getDescription().isEmpty()) {
newLinkedFile.setDescription((linkedFile.getDescription()));
}
- if (linkedFile.getSourceUrl().isEmpty() && LinkedFile.isOnlineLink(linkedFile.getLink())) {
+ if (linkedFile.getSourceUrl().isEmpty() && LinkedFile.isOnlineLink(linkedFile.getLink()) && filePreferences.shouldKeepDownloadUrl()) {
newLinkedFile.setSourceURL(linkedFile.getLink());
- } else {
+ } else if (filePreferences.shouldKeepDownloadUrl()) {
newLinkedFile.setSourceURL(linkedFile.getSourceUrl());
}
diff --git a/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java b/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java
index 4eb29ff872f..cff14afe648 100644
--- a/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java
+++ b/src/main/java/org/jabref/gui/openoffice/OpenOfficePanel.java
@@ -41,7 +41,6 @@
import org.jabref.gui.util.BackgroundTask;
import org.jabref.gui.util.DirectoryDialogConfiguration;
import org.jabref.gui.util.TaskExecutor;
-import org.jabref.logic.ai.AiService;
import org.jabref.logic.citationkeypattern.CitationKeyGenerator;
import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences;
import org.jabref.logic.citationstyle.CitationStyle;
@@ -95,7 +94,6 @@ public class OpenOfficePanel {
private final VBox vbox = new VBox();
private final PreferencesService preferencesService;
- private final AiService aiService;
private final StateManager stateManager;
private final ClipBoardManager clipBoardManager;
private final UndoManager undoManager;
@@ -109,7 +107,6 @@ public class OpenOfficePanel {
public OpenOfficePanel(LibraryTabContainer tabContainer,
PreferencesService preferencesService,
- AiService aiService,
KeyBindingRepository keyBindingRepository,
JournalAbbreviationRepository abbreviationRepository,
TaskExecutor taskExecutor,
@@ -123,7 +120,6 @@ public OpenOfficePanel(LibraryTabContainer tabContainer,
this.fileUpdateMonitor = fileUpdateMonitor;
this.entryTypesManager = entryTypesManager;
this.preferencesService = preferencesService;
- this.aiService = aiService;
this.taskExecutor = taskExecutor;
this.dialogService = dialogService;
this.stateManager = stateManager;
diff --git a/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.fxml b/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.fxml
index 57cd5a4a449..463debd9327 100644
--- a/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.fxml
+++ b/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.fxml
@@ -20,6 +20,7 @@
+
diff --git a/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.java b/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.java
index 222a4a268dc..7090ddc8752 100644
--- a/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.java
+++ b/src/main/java/org/jabref/gui/preferences/websearch/WebSearchTab.java
@@ -29,6 +29,7 @@ public class WebSearchTab extends AbstractPreferenceTabView new OpenOfficePanel(
tabContainer,
preferences,
- aiService,
preferences.getKeyBindingRepository(),
abbreviationRepository,
taskExecutor,
diff --git a/src/main/java/org/jabref/http/server/Server.java b/src/main/java/org/jabref/http/server/Server.java
index a734031c585..bfd6b83a0fe 100644
--- a/src/main/java/org/jabref/http/server/Server.java
+++ b/src/main/java/org/jabref/http/server/Server.java
@@ -1,7 +1,6 @@
package org.jabref.http.server;
import java.net.URI;
-import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
@@ -32,7 +31,7 @@ public class Server {
* Starts an http server serving the last files opened in JabRef
* More files can be provided as args.
*/
- public static void main(final String[] args) throws InterruptedException, URISyntaxException {
+ public static void main(final String[] args) throws InterruptedException {
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
@@ -86,12 +85,12 @@ private static void startServer() {
SeBootstrap.start(Application.class, configuration).thenAccept(instance -> {
LOGGER.debug("Server started.");
instance.stopOnShutdown(stopResult ->
- System.out.printf("Stop result: %s [Native stop result: %s].%n", stopResult,
+ LOGGER.debug("Stop result: {} [Native stop result: {}].", stopResult,
stopResult.unwrap(Object.class)));
final URI uri = instance.configuration().baseUri();
- System.out.printf("Instance %s running at %s [Native handle: %s].%n", instance, uri,
+ LOGGER.debug("Instance {} running at {} [Native handle: {}].%n", instance, uri,
instance.unwrap(Object.class));
- System.out.println("Send SIGKILL to shutdown.");
+ LOGGER.debug("Send SIGKILL to shutdown.");
serverInstance = instance;
});
}
@@ -111,7 +110,7 @@ private static SSLContext getSslContext() {
LOGGER.error("Could not find server key store {}.", serverKeyStore);
LOGGER.error("One create one by following the steps described in [http-server.md](/docs/code-howtos/http-server.md), which is rendered at ");
}
- return sslContextConfig.createSSLContext();
+ return sslContextConfig.createSSLContext(false);
}
static void stopServer() {
diff --git a/src/main/java/org/jabref/preferences/FilePreferences.java b/src/main/java/org/jabref/preferences/FilePreferences.java
index fe89be62899..2a713d48be5 100644
--- a/src/main/java/org/jabref/preferences/FilePreferences.java
+++ b/src/main/java/org/jabref/preferences/FilePreferences.java
@@ -38,6 +38,7 @@ public class FilePreferences {
private final ObjectProperty backupDirectory = new SimpleObjectProperty<>();
private final BooleanProperty confirmDeleteLinkedFile = new SimpleBooleanProperty();
private final BooleanProperty moveToTrash = new SimpleBooleanProperty();
+ private final BooleanProperty shouldKeepDownloadUrl = new SimpleBooleanProperty();
public FilePreferences(String userAndHost,
String mainFileDirectory,
@@ -51,7 +52,8 @@ public FilePreferences(String userAndHost,
boolean createBackup,
Path backupDirectory,
boolean confirmDeleteLinkedFile,
- boolean moveToTrash) {
+ boolean moveToTrash,
+ boolean shouldKeepDownloadUrl) {
this.userAndHost.setValue(userAndHost);
this.mainFileDirectory.setValue(mainFileDirectory);
this.storeFilesRelativeToBibFile.setValue(storeFilesRelativeToBibFile);
@@ -65,6 +67,7 @@ public FilePreferences(String userAndHost,
this.backupDirectory.setValue(backupDirectory);
this.confirmDeleteLinkedFile.setValue(confirmDeleteLinkedFile);
this.moveToTrash.setValue(moveToTrash);
+ this.shouldKeepDownloadUrl.setValue(shouldKeepDownloadUrl);
}
public String getUserAndHost() {
@@ -214,4 +217,16 @@ public BooleanProperty moveToTrashProperty() {
public void moveToTrash(boolean moveToTrash) {
this.moveToTrash.set(moveToTrash);
}
+
+ public boolean shouldKeepDownloadUrl() {
+ return shouldKeepDownloadUrl.get();
+ }
+
+ public BooleanProperty shouldKeepDownloadUrlProperty() {
+ return shouldKeepDownloadUrl;
+ }
+
+ public void setKeepDownloadUrl(boolean shouldKeepDownloadUrl) {
+ this.shouldKeepDownloadUrl.set(shouldKeepDownloadUrl);
+ }
}
diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java
index e56b0cf013c..71010a99881 100644
--- a/src/main/java/org/jabref/preferences/JabRefPreferences.java
+++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java
@@ -453,6 +453,7 @@ public class JabRefPreferences implements PreferencesService {
private static final String PREFS_EXPORT_PATH = "prefsExportPath";
private static final String DOWNLOAD_LINKED_FILES = "downloadLinkedFiles";
private static final String FULLTEXT_INDEX_LINKED_FILES = "fulltextIndexLinkedFiles";
+ private static final String KEEP_DOWNLOAD_URL = "keepDownloadUrl";
// Helper string
private static final String USER_HOME = System.getProperty("user.home");
@@ -776,6 +777,7 @@ private JabRefPreferences() {
defaults.put(WARN_BEFORE_OVERWRITING_KEY, Boolean.TRUE);
defaults.put(CONFIRM_DELETE, Boolean.TRUE);
defaults.put(CONFIRM_LINKED_FILE_DELETE, Boolean.TRUE);
+ defaults.put(KEEP_DOWNLOAD_URL, Boolean.TRUE);
defaults.put(DEFAULT_CITATION_KEY_PATTERN, "[auth][year]");
defaults.put(UNWANTED_CITATION_KEY_CHARACTERS, "-`ʹ:!;?^");
defaults.put(RESOLVE_STRINGS_FOR_FIELDS, "author;booktitle;editor;editora;editorb;editorc;institution;issuetitle;journal;journalsubtitle;journaltitle;mainsubtitle;month;publisher;shortauthor;shorteditor;subtitle;titleaddon");
@@ -2261,7 +2263,8 @@ public FilePreferences getFilePreferences() {
getPath(BACKUP_DIRECTORY, OS.getNativeDesktop().getBackupDirectory()),
getBoolean(CONFIRM_LINKED_FILE_DELETE),
// We make use of the fallback, because we need AWT being initialized, which is not the case at the constructor JabRefPreferences()
- getBoolean(TRASH_INSTEAD_OF_DELETE, OS.getNativeDesktop().moveToTrashSupported()));
+ getBoolean(TRASH_INSTEAD_OF_DELETE, OS.getNativeDesktop().moveToTrashSupported()),
+ getBoolean(KEEP_DOWNLOAD_URL));
EasyBind.listen(getInternalPreferences().getUserAndHostProperty(), (obs, oldValue, newValue) -> filePreferences.getUserAndHostProperty().setValue(newValue));
EasyBind.listen(filePreferences.mainFileDirectoryProperty(), (obs, oldValue, newValue) -> put(MAIN_FILE_DIRECTORY, newValue));
@@ -2277,6 +2280,7 @@ public FilePreferences getFilePreferences() {
EasyBind.listen(filePreferences.backupDirectoryProperty(), (obs, oldValue, newValue) -> put(BACKUP_DIRECTORY, newValue.toString()));
EasyBind.listen(filePreferences.confirmDeleteLinkedFileProperty(), (obs, oldValue, newValue) -> putBoolean(CONFIRM_LINKED_FILE_DELETE, newValue));
EasyBind.listen(filePreferences.moveToTrashProperty(), (obs, oldValue, newValue) -> putBoolean(TRASH_INSTEAD_OF_DELETE, newValue));
+ EasyBind.listen(filePreferences.shouldKeepDownloadUrlProperty(), (obs, oldValue, newValue) -> putBoolean(KEEP_DOWNLOAD_URL, newValue));
return filePreferences;
}
diff --git a/src/main/resources/csl-styles b/src/main/resources/csl-styles
index 2b15b1fbc19..4e0902d4885 160000
--- a/src/main/resources/csl-styles
+++ b/src/main/resources/csl-styles
@@ -1 +1 @@
-Subproject commit 2b15b1fbc190e003b555486f46ce1112fd95defc
+Subproject commit 4e0902d4885da1e910e5898a644778bbc6b6c0d6
diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties
index 6af82df342c..97541ca1f39 100644
--- a/src/main/resources/l10n/JabRef_en.properties
+++ b/src/main/resources/l10n/JabRef_en.properties
@@ -2781,3 +2781,4 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Warning: The
Currently\ selected\ JStyle\:\ '%0' = Currently selected JStyle: '%0'
Currently\ selected\ CSL\ Style\:\ '%0' = Currently selected CSL Style: '%0'
+Store\ url\ for\ downloaded\ file=Store url for downloaded file
diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties
index 0e53c04e124..205b7482e02 100644
--- a/src/main/resources/l10n/JabRef_fr.properties
+++ b/src/main/resources/l10n/JabRef_fr.properties
@@ -2780,3 +2780,4 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Attention \:
Currently\ selected\ JStyle\:\ '%0' = JStyle actuellement sélectionné \: '%0'
Currently\ selected\ CSL\ Style\:\ '%0' = Style CSL actuellement sélectionné \: '%0'
+Store\ url\ for\ downloaded\ file=Enregistrer l'URL du fichier téléchargé
diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties
index 2d88ccb5727..ad2e52e1d25 100644
--- a/src/main/resources/l10n/JabRef_it.properties
+++ b/src/main/resources/l10n/JabRef_it.properties
@@ -2746,3 +2746,4 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Attenzione\:
Currently\ selected\ JStyle\:\ '%0' = JStyle attualmente selezionato\: '%0'
Currently\ selected\ CSL\ Style\:\ '%0' = Stile CSL attualmente selezionato\: '%0'
+Store\ url\ for\ downloaded\ file=Memorizza url per il file scaricato
diff --git a/src/main/resources/l10n/JabRef_pl.properties b/src/main/resources/l10n/JabRef_pl.properties
index a9e12512966..dcfd08de8ff 100644
--- a/src/main/resources/l10n/JabRef_pl.properties
+++ b/src/main/resources/l10n/JabRef_pl.properties
@@ -838,6 +838,7 @@ JabRef\ skipped\ the\ entry.=JabRef pominął wpis.
Import\ error=Błąd importowania
Open\ library\ error=Błąd podczas otwierania biblioteki
Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Proszę sprawdzić plik biblioteki pod kątem nieprawidłowej składni.
+SourceTab\ error=
Sort\ subgroups\ A-Z=Sortuj podgrupy A-Z
Sort\ subgroups\ Z-A=Sortuj podgrupy A-Z
@@ -1262,6 +1263,7 @@ Other\ fields=Inne pola
Show\ remaining\ fields=Pokaż pozostałe pola
Abbreviate\ journal\ names=Skrócone nazwy czasopism
+Abbreviating...=Zamienianie tytułów na skrócone...
Duplicated\ Journal\ Abbreviation=Zdublowany skrót czasopisma
Duplicated\ Journal\ File=Zduplikowany plik czasopisma
Error\ Occurred=Wystąpił błąd
@@ -1858,3 +1860,4 @@ Redownload\ missing\ files\ for\ current\ library?=Pobrać ponownie brakujące p
Currently\ selected\ JStyle\:\ '%0' = Aktualnie wybrany JStyl\: '%0'
Currently\ selected\ CSL\ Style\:\ '%0' = Aktualnie wybrany styl CSL\: '%0'
+Store\ url\ for\ downloaded\ file=Przechowuj adres URL pobranego pliku
diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties
index 5896c114742..32881703f65 100644
--- a/src/main/resources/l10n/JabRef_pt_BR.properties
+++ b/src/main/resources/l10n/JabRef_pt_BR.properties
@@ -2775,3 +2775,4 @@ Warning\:\ The\ selected\ directory\ is\ not\ a\ valid\ directory.=Aviso\: O dir
Currently\ selected\ JStyle\:\ '%0' = JStyle selecionado atualmente\: '%0'
Currently\ selected\ CSL\ Style\:\ '%0' = Estilo CSL atualmente selecionado\: '%0'
+Store\ url\ for\ downloaded\ file=Salvar url do arquivo baixado
diff --git a/src/test/java/org/jabref/gui/linkedfile/DownloadLinkedFileActionTest.java b/src/test/java/org/jabref/gui/linkedfile/DownloadLinkedFileActionTest.java
index 067b21f0cc2..7f2af826d44 100644
--- a/src/test/java/org/jabref/gui/linkedfile/DownloadLinkedFileActionTest.java
+++ b/src/test/java/org/jabref/gui/linkedfile/DownloadLinkedFileActionTest.java
@@ -77,6 +77,7 @@ void replacesLinkedFiles(@TempDir Path tempFolder) throws Exception {
when(databaseContext.getFirstExistingFileDir(any())).thenReturn(Optional.of(tempFolder));
when(filePreferences.getFileNamePattern()).thenReturn("[citationkey]");
when(filePreferences.getFileDirectoryPattern()).thenReturn("");
+ when(filePreferences.shouldKeepDownloadUrl()).thenReturn(true);
DownloadLinkedFileAction downloadLinkedFileAction = new DownloadLinkedFileAction(
databaseContext,
@@ -100,6 +101,7 @@ void doesntReplaceSourceURL(boolean keepHtml) throws Exception {
when(databaseContext.getFirstExistingFileDir(any())).thenReturn(Optional.of(tempFolder));
when(filePreferences.getFileNamePattern()).thenReturn("[citationkey]");
when(filePreferences.getFileDirectoryPattern()).thenReturn("");
+ when(filePreferences.shouldKeepDownloadUrl()).thenReturn(true);
DownloadLinkedFileAction downloadLinkedFileAction = new DownloadLinkedFileAction(
databaseContext,
diff --git a/src/test/java/org/jabref/logic/importer/fetcher/OpenAccessDoiTest.java b/src/test/java/org/jabref/logic/importer/fetcher/OpenAccessDoiTest.java
index 9fa8d7f361e..e3b9015dbb2 100644
--- a/src/test/java/org/jabref/logic/importer/fetcher/OpenAccessDoiTest.java
+++ b/src/test/java/org/jabref/logic/importer/fetcher/OpenAccessDoiTest.java
@@ -27,8 +27,8 @@ void setUp() {
@Test
void findByDOI() throws IOException {
- entry.setField(StandardField.DOI, "10.1038/nature12373");
- assertEquals(Optional.of(new URL("https://dash.harvard.edu/bitstream/1/12285462/1/Nanometer-Scale%20Thermometry.pdf")), finder.findFullText(entry));
+ entry.setField(StandardField.DOI, "10.1186/s12993-024-00248-9");
+ assertEquals(Optional.of(new URL("https://behavioralandbrainfunctions.biomedcentral.com/counter/pdf/10.1186/s12993-024-00248-9")), finder.findFullText(entry));
}
@Test
diff --git a/src/test/java/org/jabref/logic/importer/fetcher/TitleFetcherTest.java b/src/test/java/org/jabref/logic/importer/fetcher/TitleFetcherTest.java
index 8e659aac651..5446b6a9151 100644
--- a/src/test/java/org/jabref/logic/importer/fetcher/TitleFetcherTest.java
+++ b/src/test/java/org/jabref/logic/importer/fetcher/TitleFetcherTest.java
@@ -32,8 +32,10 @@ void setUp() {
.withField(StandardField.BOOKTITLE, "2009 35th Euromicro Conference on Software Engineering and Advanced Applications")
.withField(StandardField.PUBLISHER, "IEEE")
.withField(StandardField.TITLE, "BPELscript: A Simplified Script Syntax for WS-BPEL 2.0")
+ .withField(StandardField.VOLUME, "5331")
.withField(StandardField.YEAR, "2009")
.withField(StandardField.MONTH, "#aug#")
+ .withField(StandardField.PAGES, "39--46")
.withField(StandardField.DOI, "10.1109/seaa.2009.21");
}