diff options
author | Eike Stepper | 2011-07-13 18:56:07 +0000 |
---|---|---|
committer | Eike Stepper | 2011-07-13 18:56:07 +0000 |
commit | f0c06455c96b4dd3f0dd3c1a2a93ebfcc4d2f44d (patch) | |
tree | 1101df2c420d3df900fbba43930767d397da1f06 | |
parent | a751e7ca929bc6398070ccd12403d1999e0d5ce3 (diff) | |
download | cdo-f0c06455c96b4dd3f0dd3c1a2a93ebfcc4d2f44d.tar.gz cdo-f0c06455c96b4dd3f0dd3c1a2a93ebfcc4d2f44d.tar.xz cdo-f0c06455c96b4dd3f0dd3c1a2a93ebfcc4d2f44d.zip |
[351616] [releng] Provide platform-specific CDOServer + CDOExplorer downloads
https://bugs.eclipse.org/bugs/show_bug.cgi?id=351616
7 files changed, 52 insertions, 396 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.product/.options b/plugins/org.eclipse.emf.cdo.server.product/.options index 83038cb0e0..0b064a34b6 100644 --- a/plugins/org.eclipse.emf.cdo.server.product/.options +++ b/plugins/org.eclipse.emf.cdo.server.product/.options @@ -1,11 +1,3 @@ # Debugging and tracing options -org.eclipse.emf.cdo.server/debug = true -org.eclipse.emf.cdo.server/debug.protocol = true -org.eclipse.emf.cdo.server/debug.repository = true -org.eclipse.emf.cdo.server/debug.session = true -org.eclipse.emf.cdo.server/debug.transaction = true -org.eclipse.emf.cdo.server/debug.revision = true -org.eclipse.emf.cdo.server/debug.resource = true -org.eclipse.emf.cdo.server/debug.store = true -org.eclipse.emf.cdo.server/debug.types = true +org.eclipse.emf.cdo.server.product/debug = true diff --git a/plugins/org.eclipse.emf.cdo.server.product/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.server.product/.settings/.api_filters deleted file mode 100644 index 9e39d0d361..0000000000 --- a/plugins/org.eclipse.emf.cdo.server.product/.settings/.api_filters +++ /dev/null @@ -1,298 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.emf.cdo.server" version="2">
- <resource path="src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java" type="org.eclipse.emf.cdo.internal.server.DelegatingRepository">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="InternalRepository"/>
- <message_argument value="CDOCommonRepository"/>
- <message_argument value="DelegatingRepository"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/LockManager.java" type="org.eclipse.emf.cdo.internal.server.LockManager$DurableView">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="IView"/>
- <message_argument value="CDOCommonView"/>
- <message_argument value="DurableView"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/QueryManager.java" type="org.eclipse.emf.cdo.internal.server.QueryManager$QueryContext">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="IQueryContext"/>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="QueryContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/Repository.java" type="org.eclipse.emf.cdo.internal.server.Repository">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="InternalRepository"/>
- <message_argument value="CDOCommonRepository"/>
- <message_argument value="Repository"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/ResourcesQueryHandler.java" type="org.eclipse.emf.cdo.internal.server.ResourcesQueryHandler$QueryContext">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="QueryResourcesContext"/>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="QueryContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/ServerCDOView.java" type="org.eclipse.emf.cdo.internal.server.ServerCDOView">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="Options"/>
- <message_argument value="ServerCDOView"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/ServerCDOView.java" type="org.eclipse.emf.cdo.internal.server.ServerCDOView$ServerCDOSession">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDORepositoryInfo"/>
- <message_argument value="ServerCDOSession"/>
- </message_arguments>
- </filter>
- <filter id="574619656">
- <message_arguments>
- <message_argument value="InternalCDOSession"/>
- <message_argument value="ServerCDOSession"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/Session.java" type="org.eclipse.emf.cdo.internal.server.Session">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="InternalSession"/>
- <message_argument value="CDOCommonSession"/>
- <message_argument value="Session"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java" type="org.eclipse.emf.cdo.internal.server.TransactionCommitContext$DeltaLockWrapper">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOIDAndBranch"/>
- <message_argument value="DeltaLockWrapper"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java" type="org.eclipse.emf.cdo.internal.server.TransactionCommitContext$XRefContext">
- <filter id="572522506">
- <message_arguments>
- <message_argument value="CDOIDReference"/>
- <message_argument value="XRefContext"/>
- </message_arguments>
- </filter>
- <filter id="574660632">
- <message_arguments>
- <message_argument value="QueryXRefsContext"/>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="XRefContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/View.java" type="org.eclipse.emf.cdo.internal.server.View">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="InternalView"/>
- <message_argument value="CDOCommonView"/>
- <message_argument value="View"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/XRefsQueryHandler.java" type="org.eclipse.emf.cdo.internal.server.XRefsQueryHandler$QueryContext">
- <filter id="572522506">
- <message_arguments>
- <message_argument value="CDOIDReference"/>
- <message_argument value="QueryContext"/>
- </message_arguments>
- </filter>
- <filter id="574660632">
- <message_arguments>
- <message_argument value="QueryXRefsContext"/>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="QueryContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionConfiguration.java" type="org.eclipse.emf.cdo.internal.server.embedded.EmbeddedClientSessionConfiguration$RepositoryInfo">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDORepositoryInfo"/>
- <message_argument value="RepositoryInfo"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java" type="org.eclipse.emf.cdo.internal.server.embedded.EmbeddedClientSessionProtocol">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOSessionProtocol"/>
- <message_argument value="EmbeddedClientSessionProtocol"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedServerSessionProtocol.java" type="org.eclipse.emf.cdo.internal.server.embedded.EmbeddedServerSessionProtocol">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="ISessionProtocol"/>
- <message_argument value="CDOProtocol"/>
- <message_argument value="EmbeddedServerSessionProtocol"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java" type="org.eclipse.emf.cdo.internal.server.mem.MEMStore">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="DurableLocking"/>
- <message_argument value="IDurableLockingManager"/>
- <message_argument value="MEMStore"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/mem/MEMStoreAccessor.java" type="org.eclipse.emf.cdo.internal.server.mem.MEMStoreAccessor">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="DurableLocking"/>
- <message_argument value="IDurableLockingManager"/>
- <message_argument value="MEMStoreAccessor"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/internal/server/syncing/OfflineClone.java" type="org.eclipse.emf.cdo.internal.server.syncing.OfflineClone$CommitContextData">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOCommitData"/>
- <message_argument value="CommitContextData"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IQueryContext.java" type="org.eclipse.emf.cdo.server.IQueryContext">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="IQueryContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IRepository.java" type="org.eclipse.emf.cdo.server.IRepository">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOCommonRepository"/>
- <message_argument value="IRepository"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/ISession.java" type="org.eclipse.emf.cdo.server.ISession">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="CDOCommonSession"/>
- <message_argument value="ISession"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IStoreAccessor.java" type="org.eclipse.emf.cdo.server.IStoreAccessor$DurableLocking">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="IDurableLockingManager"/>
- <message_argument value="DurableLocking"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IStoreAccessor.java" type="org.eclipse.emf.cdo.server.IStoreAccessor$QueryResourcesContext">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="QueryResourcesContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IStoreAccessor.java" type="org.eclipse.emf.cdo.server.IStoreAccessor$QueryXRefsContext">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="QueryXRefsContext"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/ITransaction.java" type="org.eclipse.emf.cdo.server.ITransaction">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOCommonTransaction"/>
- <message_argument value="ITransaction"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/IView.java" type="org.eclipse.emf.cdo.server.IView">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOCommonView"/>
- <message_argument value="IView"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/embedded/CDOSession.java" type="org.eclipse.emf.cdo.server.embedded.CDOSession">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOSession"/>
- <message_argument value="CDOSession"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/server/embedded/CDOSessionConfiguration.java" type="org.eclipse.emf.cdo.server.embedded.CDOSessionConfiguration">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOSessionConfiguration"/>
- <message_argument value="CDOSessionConfiguration"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/spi/server/DurableLockArea.java" type="org.eclipse.emf.cdo.spi.server.DurableLockArea">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="LockArea"/>
- <message_argument value="DurableLockArea"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/spi/server/ISessionProtocol.java" type="org.eclipse.emf.cdo.spi.server.ISessionProtocol">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="CDOProtocol"/>
- <message_argument value="ISessionProtocol"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/spi/server/InternalLockManager.java" type="org.eclipse.emf.cdo.spi.server.InternalLockManager">
- <filter id="574619656">
- <message_arguments>
- <message_argument value="IDurableLockingManager"/>
- <message_argument value="InternalLockManager"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/spi/server/InternalSession.java" type="org.eclipse.emf.cdo.spi.server.InternalSession">
- <filter id="571473929">
- <message_arguments>
- <message_argument value="Options"/>
- <message_argument value="InternalSession"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="src/org/eclipse/emf/cdo/spi/server/Store.java" type="org.eclipse.emf.cdo.spi.server.Store">
- <filter id="574660632">
- <message_arguments>
- <message_argument value="ExactMatch"/>
- <message_argument value="CDOBranchPoint"/>
- <message_argument value="Store"/>
- </message_arguments>
- </filter>
- </resource>
-</component>
diff --git a/plugins/org.eclipse.emf.cdo.server.product/CDOServer.product b/plugins/org.eclipse.emf.cdo.server.product/CDOServer.product deleted file mode 100644 index 6ee02e97be..0000000000 --- a/plugins/org.eclipse.emf.cdo.server.product/CDOServer.product +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product name="CDO Server" id="org.eclipse.emf.cdo.server.product" application="org.eclipse.emf.cdo.server.app" useFeatures="false" includeLaunchers="true">
-
- <configIni use="">
- </configIni>
-
- <launcherArgs>
- <programArgs>-debug --console ---launcher.XXMaxPermSize -128M</programArgs>
- <vmArgs>-Xms256M --Xmx1024M --Ddebug=true --Dnet4j.config=.</vmArgs>
- <vmArgsMac>-XstartOnFirstThread --Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
- </launcherArgs>
-
- <windowImages/>
-
- <launcher name="cdo-server">
- <solaris/>
- <win useIco="false">
- <bmp/>
- </win>
- </launcher>
-
- <vm>
- </vm>
-
- <plugins>
- <plugin id="org.eclipse.core.contenttype"/>
- <plugin id="org.eclipse.core.jobs"/>
- <plugin id="org.eclipse.core.runtime"/>
- <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
- <plugin id="org.eclipse.emf.cdo"/>
- <plugin id="org.eclipse.emf.cdo.common"/>
- <plugin id="org.eclipse.emf.cdo.server"/>
- <plugin id="org.eclipse.emf.cdo.server.db"/>
- <plugin id="org.eclipse.emf.cdo.server.net4j"/>
- <plugin id="org.eclipse.emf.cdo.server.product"/>
- <plugin id="org.eclipse.emf.common"/>
- <plugin id="org.eclipse.emf.ecore"/>
- <plugin id="org.eclipse.emf.ecore.change"/>
- <plugin id="org.eclipse.emf.ecore.xmi"/>
- <plugin id="org.eclipse.equinox.app"/>
- <plugin id="org.eclipse.equinox.common"/>
- <plugin id="org.eclipse.equinox.launcher"/>
- <plugin id="org.eclipse.equinox.launcher.carbon.macosx" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.hpux.ia64_32" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.ppc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.ppc64" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.s390" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.s390x" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.solaris.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.aix.ppc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.hpux.ia64_32" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.equinox.preferences"/>
- <plugin id="org.eclipse.equinox.registry"/>
- <plugin id="org.eclipse.net4j"/>
- <plugin id="org.eclipse.net4j.db"/>
- <plugin id="org.eclipse.net4j.db.h2"/>
- <plugin id="org.eclipse.net4j.tcp"/>
- <plugin id="org.eclipse.net4j.util"/>
- <plugin id="org.eclipse.osgi"/>
- <plugin id="org.h2"/>
- </plugins>
-
- <features>
- <feature id="org.eclipse.emf.cdo.server.product"/>
- </features>
-
-
-</product>
diff --git a/plugins/org.eclipse.emf.cdo.server.product/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.product/META-INF/MANIFEST.MF index ebc077162c..0c70ba8b35 100644 --- a/plugins/org.eclipse.emf.cdo.server.product/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.server.product/META-INF/MANIFEST.MF @@ -8,7 +8,10 @@ Bundle-Localization: plugin Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ClassPath: . -Require-Bundle: org.eclipse.emf.cdo.server.db;bundle-version="[4.0.0,5.0.0)", +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)", + org.eclipse.emf.cdo.server.db;bundle-version="[4.0.0,5.0.0)", org.eclipse.emf.cdo.server.net4j;bundle-version="[4.0.0,5.0.0)", org.eclipse.net4j.db.h2;bundle-version="[4.0.0,5.0.0)", org.eclipse.net4j.tcp;bundle-version="[4.0.0,5.0.0)" +Export-Package: org.eclipse.emf.cdo.server.internal.product.bundle;version="4.1.0";x-internal:=true +Bundle-Activator: org.eclipse.emf.cdo.server.internal.product.bundle.OM$Activator diff --git a/plugins/org.eclipse.emf.cdo.server.product/build.properties b/plugins/org.eclipse.emf.cdo.server.product/build.properties index 750ad26344..837e0de5f4 100644 --- a/plugins/org.eclipse.emf.cdo.server.product/build.properties +++ b/plugins/org.eclipse.emf.cdo.server.product/build.properties @@ -19,7 +19,8 @@ bin.includes = .,\ icons/,\ config/ src.includes = about.html,\ - copyright.txt + copyright.txt,\ + config/ jars.compile.order = . source.. = src/ output.. = bin/ diff --git a/plugins/org.eclipse.emf.cdo.server.product/plugin.xml b/plugins/org.eclipse.emf.cdo.server.product/plugin.xml index 90ca05e3d3..a2a4c01203 100644 --- a/plugins/org.eclipse.emf.cdo.server.product/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.server.product/plugin.xml @@ -13,7 +13,7 @@ <plugin> - <extension id="product" point="org.eclipse.core.runtime.products"> + <extension id="tcp_h2" point="org.eclipse.core.runtime.products"> <product name="%product.name" description="%product.description" diff --git a/plugins/org.eclipse.emf.cdo.server.product/src/org/eclipse/emf/cdo/server/internal/product/bundle/OM.java b/plugins/org.eclipse.emf.cdo.server.product/src/org/eclipse/emf/cdo/server/internal/product/bundle/OM.java new file mode 100644 index 0000000000..794de53330 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.product/src/org/eclipse/emf/cdo/server/internal/product/bundle/OM.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.server.internal.product.bundle; + +import org.eclipse.net4j.util.om.OMBundle; +import org.eclipse.net4j.util.om.OMPlatform; +import org.eclipse.net4j.util.om.OSGiActivator; +import org.eclipse.net4j.util.om.log.OMLogger; +import org.eclipse.net4j.util.om.trace.OMTracer; + +/** + * The <em>Operations & Maintenance</em> class of this bundle. + * + * @author Eike Stepper + */ +public abstract class OM +{ + public static final String BUNDLE_ID = "org.eclipse.emf.cdo.server.product"; //$NON-NLS-1$ + + public static final OMBundle BUNDLE = OMPlatform.INSTANCE.bundle(BUNDLE_ID, OM.class); + + public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$ + + public static final OMLogger LOG = BUNDLE.logger(); + + /** + * @author Eike Stepper + */ + public static final class Activator extends OSGiActivator + { + public Activator() + { + super(BUNDLE); + } + } +} |