From 8efcd6990897eb618acdb6a1d42be89f2235aa6a Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 16 Nov 2016 09:46:33 +0100 Subject: [PATCH 001/191] Added an initial stub of a fix tracking documentation --- wiki/howto/development/fix-tracking.md | 89 ++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 wiki/howto/development/fix-tracking.md diff --git a/wiki/howto/development/fix-tracking.md b/wiki/howto/development/fix-tracking.md new file mode 100644 index 00000000000..0d9da932c14 --- /dev/null +++ b/wiki/howto/development/fix-tracking.md @@ -0,0 +1,89 @@ +# Fix Tracking + +[[_TOC_]] + +## Introduction + +TODO + +### Fixes and Tracks + +In the domain model, Fixes are held by Tracks that allow access to the fixes and support some useful operations. `Tracks` are associated to a `TrackedRace` that gives access to its `Track` instances. + +There are abstract `Track` implementations that e.g. provide `Timepoint` based access. Typically there are specific implementations that provide calculations based on the concrete `Fix` type. + +### Something about mappings + +In the RegattaLog, there are specific event implementations that are subtypes of `RegattaLogDeviceMappingEvent`. These events map domain objects (e.g. `Competitor` or `Mark`) to `DeviceIdentifiers`. In the persistence, fixes are saved for a `DeviceIdentifier`. +The concrete type of the mapping event is used when loading fixes so that specific mappings can be handled specifically. + +### Persistence of Fixes + +The persistence of fixes is defined by `SensorFixStore` that supports saving fixes as well as loading fixes. To be able to work with fixes on the persistence, a `DeviceIdentifier` needs to be mapped as described above. + +Fixes can be saved one by one or in batches. Saving single fixes is meant to be used in live mode when a device submits single fixes to the backend. When importing archived fixes, this should always be done in batches to reduce the load on the DB as well as the time for the save operation. + +The concrete MongoDB-based implementation of `SensorFixStore` is `MongoSensorFixStoreImpl`. + +## Fixes on the persistence and in the domain model + +There are different types of fixes used by the persistence and domain model. There are different ways to implement extensions to handle new types of fixes. + +The persistence defined by `SensorFixStore` implementations can be extended to store custom fix implementations. + +In addition there is a special type of fix called DoubleVectorFix that can be used for a generic persistence that is based on a specific amount of double values. Based on this persistent fix type you can also define a mapping to be processed when loading fixes. Doing this, you do not need to extend the persistence but map such generic fixes to concrete ones. + +The further chapters will guide through the process of extending the system for a new fix type or the usage of already existing fix types. + +### Fix loading process + +TODO +* Add a graph +* Visitor pattern + +### Implementing new persistent fix type + +Any fix type to be persisted by `SensorFixStore` implementations needs to implement the `Timed` interface. + +To enable `MongoSensorFixStoreImpl` to save and load specific data of your concrete fix type, you need to provide an implementation of `FixMongoHandler`. This implementation is responsible to construct MongoDB objects from the fix when saving and needs to map those MongoDB objects back to the fix objects when loading from the DB. + +To make `MongoSensorFixStoreImpl` find your implementation, it needs to be registered as OSGi service and the `FixMongoHandler` interface needs to specifically be exported. In addition the qualified classname of your fix implementation must be given to the registered OSGi service using the key `TypeBasedServiceFinder.TYPE`. + + Dictionary properties = new Hashtable(); + properties.put(TypeBasedServiceFinder.TYPE, MyFixImpl.class.getName()); + ServiceRegistration registration = context.registerService(FixMongoHandler.class, new MyFixMongoHandlerImpl(), properties); + +To be able to load the new fix type, you need to define a mapping event that implements `RegattaLogDeviceMappingEvent`. There's an abstract implementation `RegattaLogDeviceMappingEventImpl` that implements most of the needed common logic. + +For your concrete mapping event implementation you need to provide a specific sub-interface of `RegattaLogDeviceMappingEvent`. This interface is used to extend the visitor interface `MappingEventVisitor`, so that you can call the correct visitor method in your mapping event implementation's `accept(MappingEventVisitor)` method. + +In consequence of extending the `MappingEventVisitor` interface, you need to fix two implementations in `FixLoaderAndTracker` that now need a new method for your mapping event type. Here you need to implement the logic to load fixes into the specific `Track` of the `TrackedRace`: + +* An implementation for loading fixes of a timerange +* An implementation to handle newly added fixes in live tracking + +### Implementing SensorFix type + +In contrast of handling the persistence and loading of the fixes by ourself, you can also provide an implementation based on `DoubleVectorFix`, that supports the storage of arbitrary amounts of double values and accessing those by index. + +Similar to the above case, you need to provide a mapping event implementation. In this case there's no need to define a custom interface. For mapping `Competitors`, implement `RegattaLogDeviceCompetitorSensorDataMappingEvent`. + +To load `DoubleVectorFixes` for your new mapping event type into a `Track`, you need to provide an implementation of `SensorFixMapper`. This implementation needs to be published as OSGi service: + + ServiceRegistration registration = context.registerService(SensorFixMapper.class, new MyFixMapper(), null); + +The `SensorFixMapper` is responsible to obtain and/or create the correct `Track` given the `TrackedRace` and adding fixes to the specific `Track`. + +### More specifics on Tracks + +There are different ways to associate `Tracks` with a `TrackedRace`. e.g. `GPSFixes` are managed in distinct `GPSFixTrack` instances that are associated to `Competitor` or `Mark` instances known by the `TrackedRace`. This can also be implemented for a specific new Track/Fix type. + +In addition there's a generic association of `SensorFixTracks` that are not only associated to the specific domain object but also to a key so that you can easily have multiple additional `Tracks` for a domain object of a `TrackedRace`. + +## Import of Fixes + +TODO + +### Adding importer + +TODO \ No newline at end of file From 7da60aba40588d7dece640dbe5ec2ddbb1d470c9 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 24 Nov 2016 10:33:07 +0100 Subject: [PATCH 002/191] Using newer Orbit updatesites where possible --- .../race-analysis-p2-remote.target | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index 4475ba3b28b..384c3525227 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -41,6 +41,11 @@ + + + + + @@ -52,23 +57,21 @@ - - - - + + - - + + - + - + @@ -87,8 +90,8 @@ - - + + From ad28ff74081d8cd26adc2c5d0b112a41f8f2ccfd Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 24 Nov 2016 11:08:35 +0100 Subject: [PATCH 003/191] Added missing bundles to target platform that cause validation errors --- .../race-analysis-p2-remote.target | 498 +++++++++--------- 1 file changed, 250 insertions(+), 248 deletions(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index 384c3525227..b4e2b851be1 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,248 +1,250 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e0a9e5796ba621e1607708b42ff3991293e9cfa4 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 24 Nov 2016 13:08:25 +0100 Subject: [PATCH 004/191] Using more current orbit site --- .../definitions/race-analysis-p2-remote.target | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index b4e2b851be1..eaf30edb2c2 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -43,7 +43,7 @@ - + From dd5d1fc7457165dc7ea0580765769051371031ba Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 24 Nov 2016 13:29:02 +0100 Subject: [PATCH 005/191] Using junit and hamcrest from orbit / adjustments for different junit bundle ID --- java/com.google.gwt.osgi/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../definitions/race-analysis-p2-remote.target | 16 ++++++++++++++-- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../com.sap.sse.common.test/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- java/com.sap.sse.gwt.test/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- java/com.sap.sse.test/META-INF/MANIFEST.MF | 2 +- 44 files changed, 57 insertions(+), 45 deletions(-) diff --git a/java/com.google.gwt.osgi/META-INF/MANIFEST.MF b/java/com.google.gwt.osgi/META-INF/MANIFEST.MF index 8827322a846..8fc65835387 100755 --- a/java/com.google.gwt.osgi/META-INF/MANIFEST.MF +++ b/java/com.google.gwt.osgi/META-INF/MANIFEST.MF @@ -173,7 +173,7 @@ Export-Package: com.google.gwt.activity.shared, org.hibernate.validator, org.hibernate.validator.engine Require-Bundle: javax.validation;bundle-version="1.0.0";resolution:=optional, - org.junit4;bundle-version="4.8.2";resolution:=optional + org.junit;bundle-version="4.8.2";resolution:=optional Import-Package: com.gargoylesoftware.htmlunit;resolution:=optional, com.google.gwt.core.ext;resolution:=optional, com.google.gwt.core.ext.typeinfo;resolution:=optional, diff --git a/java/com.sap.sailing.barbados.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.barbados.resultimport.test/META-INF/MANIFEST.MF index 9829a6d3b4c..4d151e7392a 100644 --- a/java/com.sap.sailing.barbados.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.barbados.resultimport.test/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.osgi.framework;version="1.3.0" Bundle-ActivationPolicy: lazy -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sailing.barbados.resultimport, com.sap.sailing.domain.common, com.sap.sailing.domain, diff --git a/java/com.sap.sailing.declination.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.declination.test/META-INF/MANIFEST.MF index 4274aede4e5..471e6294cc2 100644 --- a/java/com.sap.sailing.declination.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.declination.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.declination -Require-Bundle: org.junit4;bundle-version="4.8.2" +Require-Bundle: org.junit;bundle-version="4.8.2" Import-Package: com.sap.sailing.domain.common, com.sap.sailing.domain.common.impl, com.sap.sailing.domain.common.quadtree diff --git a/java/com.sap.sailing.domain.deckmanadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.deckmanadapter.test/META-INF/MANIFEST.MF index b67aed88b96..d2447cc1845 100644 --- a/java/com.sap.sailing.domain.deckmanadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.deckmanadapter.test/META-INF/MANIFEST.MF @@ -6,4 +6,4 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sailing.domain.deckmanadapter Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4 +Require-Bundle: org.junit;bundle-version="4.8.2" diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.igtimiadapter.test/META-INF/MANIFEST.MF index f61ce095465..5595d14983e 100644 --- a/java/com.sap.sailing.domain.igtimiadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.igtimiadapter.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-SymbolicName: com.sap.sailing.domain.igtimiadapter.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sailing.domain.common, com.sap.sse.mongodb, com.sap.sse.common diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.racelogtrackingadapter.test/META-INF/MANIFEST.MF index 3f9cbc1525d..1e49750b8e5 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.domain.racelogtrackingadapter -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sailing.domain.racelogtrackingadapter.testsupport, org.mockito.mockito-core;bundle-version="1.9.5", org.objenesis;bundle-version="1.3.0", diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.testsupport/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.racelogtrackingadapter.testsupport/META-INF/MANIFEST.MF index ab5f50f9c87..29e3390faaa 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.testsupport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.testsupport/META-INF/MANIFEST.MF @@ -15,7 +15,7 @@ Require-Bundle: com.sap.sailing.domain.shared.android, org.json.simple;bundle-version="1.1.0", org.mockito.mockito-core;bundle-version="1.9.5", org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sse.common, com.sap.sailing.server.gateway.serialization.shared.android Export-Package: com.sap.sailing.domain.racelog.tracking.test.mock diff --git a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF index 1b6d41de6cb..34b8773f204 100644 --- a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF @@ -8,7 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.domain.shared.android;bundle-version="1.0.0", org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.objenesis;bundle-version="1.3.0", org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.domain.test, diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF index 719c89203da..24425cd678b 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF @@ -16,7 +16,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.persistence, com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.swisstimingadapter.persistence;bundle-version="1.0.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.hamcrest.core;bundle-version="1.1.0", com.sap.sse, com.sap.sse.common diff --git a/java/com.sap.sailing.domain.swisstimingreplayadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingreplayadapter.test/META-INF/MANIFEST.MF index ead28dc4b0d..32530b5c375 100644 --- a/java/com.sap.sailing.domain.swisstimingreplayadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingreplayadapter.test/META-INF/MANIFEST.MF @@ -9,6 +9,6 @@ Fragment-Host: com.sap.sailing.domain.swisstimingreplayadapter Import-Package: org.json.simple, org.json.simple.parser Require-Bundle: com.sap.sailing.domain.test, - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sse.common, org.mockito.mockito-core;bundle-version="1.10.14" diff --git a/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF index 321c675e4bb..1b5afb4c9c8 100644 --- a/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.test/META-INF/MANIFEST.MF @@ -15,7 +15,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.test, org.hamcrest;bundle-version="1.1.0", org.objenesis;bundle-version="1.3.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.json.simple;bundle-version="1.1.0", com.sap.sse.common, com.sap.sse.replication, diff --git a/java/com.sap.sailing.ess40.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.ess40.resultimport.test/META-INF/MANIFEST.MF index 68e845ecf70..b91f5ba57b6 100644 --- a/java/com.sap.sailing.ess40.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.ess40.resultimport.test/META-INF/MANIFEST.MF @@ -8,5 +8,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.ess40.resultimport Import-Package: org.osgi.framework;version="1.3.0" Bundle-ActivationPolicy: lazy -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common diff --git a/java/com.sap.sailing.expeditionconnector.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.expeditionconnector.test/META-INF/MANIFEST.MF index 0d26160e819..4638a24fb27 100644 --- a/java/com.sap.sailing.expeditionconnector.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.expeditionconnector.test/META-INF/MANIFEST.MF @@ -9,5 +9,5 @@ Fragment-Host: com.sap.sailing.expeditionconnector Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain.test, com.sap.sailing.udpconnector, - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sse.common diff --git a/java/com.sap.sailing.freg.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.freg.resultimport.test/META-INF/MANIFEST.MF index 8a815e6186d..193580c43c3 100644 --- a/java/com.sap.sailing.freg.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.freg.resultimport.test/META-INF/MANIFEST.MF @@ -8,5 +8,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.freg.resultimport Import-Package: org.osgi.framework;version="1.3.0" Bundle-ActivationPolicy: lazy -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common diff --git a/java/com.sap.sailing.geocoding.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.geocoding.test/META-INF/MANIFEST.MF index 8821740276b..51712421440 100644 --- a/java/com.sap.sailing.geocoding.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.geocoding.test/META-INF/MANIFEST.MF @@ -6,5 +6,5 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.geocoding -Require-Bundle: org.junit4;bundle-version="4.8.2" +Require-Bundle: org.junit;bundle-version="4.8.2" Import-Package: org.json.simple.parser diff --git a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF index c8c7a2fa269..e0e149afa64 100644 --- a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF @@ -6,5 +6,5 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sailing.kiworesultimport -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common diff --git a/java/com.sap.sailing.manage2sail.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.manage2sail.resultimport.test/META-INF/MANIFEST.MF index a39154b876f..c19f1bae884 100644 --- a/java/com.sap.sailing.manage2sail.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.manage2sail.resultimport.test/META-INF/MANIFEST.MF @@ -13,7 +13,7 @@ Import-Package: com.sap.sailing.domain.common, com.sap.sailing.xrr.schema, org.osgi.framework;version="1.5.0" Fragment-Host: com.sap.sailing.manage2sail.resultimport -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common, org.mockito.mockito-core;bundle-version="1.9.5", org.objenesis;bundle-version="1.3.0", diff --git a/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF index 86266b2b867..76baa0cce22 100644 --- a/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.media.persistence.test/META-INF/MANIFEST.MF @@ -9,7 +9,7 @@ Require-Bundle: org.mongodb.mongo-java-driver;bundle-version="2.13.0", com.sap.sse.mongodb, org.json.simple;bundle-version="1.1.0", org.hamcrest.core;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain.persistence;bundle-version="1.0.0", com.sap.sailing.gwt.ui;bundle-version="1.0.0", com.sap.sailing.domain.common;bundle-version="1.0.0", diff --git a/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF index fa9864f7111..fd6cfaa9ae6 100644 --- a/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.mongodb.test/META-INF/MANIFEST.MF @@ -17,7 +17,7 @@ Require-Bundle: com.sap.sailing.domain, org.json.simple;bundle-version="1.1.0", com.sap.sailing.domain.swisstimingadapter, org.objenesis;bundle-version="1.3.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.hamcrest;bundle-version="1.1.0", org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.polars, diff --git a/java/com.sap.sailing.polars.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.test/META-INF/MANIFEST.MF index 6aef689fd45..b3f852001cf 100644 --- a/java/com.sap.sailing.polars.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.test/META-INF/MANIFEST.MF @@ -9,7 +9,7 @@ Fragment-Host: com.sap.sailing.polars Require-Bundle: org.hamcrest;bundle-version="1.1.0", org.hamcrest.core;bundle-version="1.1.0", org.mockito.mockito-core;bundle-version="1.10.14", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain.test, com.sap.sse.common, com.sap.sailing.domain.tractracadapter, diff --git a/java/com.sap.sailing.sailwave.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.sailwave.resultimport.test/META-INF/MANIFEST.MF index 90e311e00bb..fc3dcff993e 100644 --- a/java/com.sap.sailing.sailwave.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.sailwave.resultimport.test/META-INF/MANIFEST.MF @@ -8,5 +8,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.osgi.framework;version="1.5.0" Bundle-ActivationPolicy: lazy Fragment-Host: com.sap.sailing.sailwave.resultimport -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common diff --git a/java/com.sap.sailing.selenium.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.selenium.test/META-INF/MANIFEST.MF index 5d967ca8b4f..c3d45e5a170 100644 --- a/java/com.sap.sailing.selenium.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.selenium.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.openqa.selenium.osgi;bundle-version="2.40.0", com.sap.sse.mongodb;bundle-version="1.0.0", org.mongodb.mongo-java-driver;bundle-version="2.13.0", diff --git a/java/com.sap.sailing.server.gateway.serialization.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.serialization.test/META-INF/MANIFEST.MF index 8a479508c89..25dfbf1b299 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.serialization.test/META-INF/MANIFEST.MF @@ -9,7 +9,7 @@ Fragment-Host: com.sap.sailing.server.gateway.serialization Require-Bundle: com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.domain.common;bundle-version="1.0.0", org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain.shared.android, org.json.simple, org.mockito.mockito-core;bundle-version="1.9.5", diff --git a/java/com.sap.sailing.server.gateway.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.test/META-INF/MANIFEST.MF index 3b60fe6bb9a..d0d8042ccda 100644 --- a/java/com.sap.sailing.server.gateway.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.test/META-INF/MANIFEST.MF @@ -10,7 +10,7 @@ Require-Bundle: org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.domain.test, org.hamcrest;bundle-version="1.1.0", org.objenesis;bundle-version="1.3.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain.racelogtrackingadapter.testsupport, com.sap.sse.common, com.sun.jersey, diff --git a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF index 84dde5ee175..f7e5df42591 100644 --- a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF @@ -19,7 +19,7 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.expeditionconnector, com.sap.sailing.domain.swisstimingadapter, org.json.simple;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.hamcrest;bundle-version="1.1.0", com.sap.sailing.polars, com.sap.sse.common, diff --git a/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF index dd44553ef6c..07ac54ed0b5 100644 --- a/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.test/META-INF/MANIFEST.MF @@ -15,7 +15,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sse.mongodb, com.tractrac.clientmodule;bundle-version="2.0.0", org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain.test, org.mockito.mockito-core;bundle-version="1.10.14", com.sap.sse.common, diff --git a/java/com.sap.sailing.server.trackfiles.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.trackfiles.test/META-INF/MANIFEST.MF index f890b69aafe..04c539ad640 100644 --- a/java/com.sap.sailing.server.trackfiles.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.trackfiles.test/META-INF/MANIFEST.MF @@ -13,7 +13,7 @@ Require-Bundle: com.tractrac.clientmodule;bundle-version="2.0.0", com.sap.sailing.domain.test;bundle-version="1.0.0", com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.server;bundle-version="1.0.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.mockito.mockito-core;bundle-version="1.9.5", org.objenesis;bundle-version="1.3.0", com.sap.sse.common diff --git a/java/com.sap.sailing.simulator.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.simulator.test/META-INF/MANIFEST.MF index 98fb40d647d..4affde18434 100644 --- a/java/com.sap.sailing.simulator.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.simulator.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: com.sap.sailing.simulator;bundle-version="1.0.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.server;bundle-version="1.0.0", diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index eaf30edb2c2..3e155dc2f4b 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -41,6 +41,17 @@ + + + + + + + + + + + @@ -235,7 +246,8 @@ - + + diff --git a/java/com.sap.sailing.velum.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.velum.resultimport.test/META-INF/MANIFEST.MF index 37750879a18..78d95d14d7c 100644 --- a/java/com.sap.sailing.velum.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.velum.resultimport.test/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.osgi.framework;version="1.5.0" Bundle-ActivationPolicy: lazy -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sailing.velum.resultimport, com.sap.sailing.domain.common, com.sap.sailing.domain, diff --git a/java/com.sap.sailing.xmlexport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.xmlexport.test/META-INF/MANIFEST.MF index 928da6af4d1..2568e3beedd 100644 --- a/java/com.sap.sailing.xmlexport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.xmlexport.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sailing.xmlexport Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common, com.sap.sailing.domain.test;bundle-version="1.0.0", com.tractrac.clientmodule;bundle-version="3.0.7" diff --git a/java/com.sap.sailing.xrr.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.xrr.resultimport.test/META-INF/MANIFEST.MF index 1d11bdf45a4..d8ca9e79cdf 100644 --- a/java/com.sap.sailing.xrr.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.xrr.resultimport.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sailing.xrr.resultimport Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common Export-Package: com.sap.sailing.xrr.resultimport.test Import-Package: com.sap.sailing.xrr.schema diff --git a/java/com.sap.sailing.yachtscoring.resultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.yachtscoring.resultimport.test/META-INF/MANIFEST.MF index d3021c8f440..d09158cd622 100644 --- a/java/com.sap.sailing.yachtscoring.resultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.yachtscoring.resultimport.test/META-INF/MANIFEST.MF @@ -13,7 +13,7 @@ Import-Package: com.sap.sailing.domain.common, com.sap.sailing.xrr.schema, org.osgi.framework;version="1.5.0" Fragment-Host: com.sap.sailing.yachtscoring.resultimport -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.common, org.mockito.mockito-core;bundle-version="1.9.5", org.objenesis;bundle-version="1.3.0", diff --git a/java/com.sap.sse.common.test/META-INF/MANIFEST.MF b/java/com.sap.sse.common.test/META-INF/MANIFEST.MF index cc8d376e601..ee329444eca 100644 --- a/java/com.sap.sse.common.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.common.test/META-INF/MANIFEST.MF @@ -9,5 +9,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.mockito.mockito-core;bundle-version="1.9.5", org.hamcrest;bundle-version="1.1.0", org.objenesis;bundle-version="1.3.0", - org.junit4;bundle-version="4.8.2" + org.junit;bundle-version="4.8.2" Export-Package: com.sap.sse.common.test diff --git a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF index efe4d4b1cc6..86c8b18047d 100644 --- a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF @@ -7,6 +7,6 @@ Bundle-Vendor: SAP Fragment-Host: com.sap.sse.filestorage Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.apache.commons.io;bundle-version="2.2.0", com.sap.sse.replication.testsupport diff --git a/java/com.sap.sse.gwt.test/META-INF/MANIFEST.MF b/java/com.sap.sse.gwt.test/META-INF/MANIFEST.MF index c18fe42b33d..93ebde6b0b8 100644 --- a/java/com.sap.sse.gwt.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.gwt.test/META-INF/MANIFEST.MF @@ -7,5 +7,5 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Fragment-Host: com.sap.sse.gwt Require-Bundle: com.sap.sse.common;bundle-version="1.0.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.google.gwt.osgi;bundle-version="2.7.0" diff --git a/java/com.sap.sse.mail.replication.test/META-INF/MANIFEST.MF b/java/com.sap.sse.mail.replication.test/META-INF/MANIFEST.MF index 2757ce82521..375a06837e7 100644 --- a/java/com.sap.sse.mail.replication.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.mail.replication.test/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Vendor: SAP Fragment-Host: com.sap.sse.mail Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.rabbitmq.client, com.sap.sse.replication.testsupport, com.sap.sse.mail.replication.testsupport diff --git a/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF b/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF index 84cf686c18a..1416b29bad6 100644 --- a/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF @@ -11,7 +11,7 @@ Require-Bundle: com.sap.sse.replication, com.sap.sse, com.sap.sse.common, org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", org.mockito.mockito-core;bundle-version="1.10.14", com.sun.mail.javax.mail;bundle-version="1.4.5" Export-Package: com.sap.sse.mail.replication.testsupport diff --git a/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF index 75cb42f3baf..e39da7f26ea 100644 --- a/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.operationaltransformation.test/META-INF/MANIFEST.MF @@ -5,6 +5,6 @@ Bundle-SymbolicName: com.sap.sse.operationaltransformation.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.replication Fragment-Host: com.sap.sse.operationaltransformation diff --git a/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF b/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF index ff140e7a262..3ce5281ec10 100644 --- a/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: com.sap.sse.replication.testsupport Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.replication, com.sap.sse.common, com.rabbitmq.client;bundle-version="2.8.4", diff --git a/java/com.sap.sse.security.replication.test/META-INF/MANIFEST.MF b/java/com.sap.sse.security.replication.test/META-INF/MANIFEST.MF index 69111890757..53ee9028cfb 100644 --- a/java/com.sap.sse.security.replication.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security.replication.test/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-Vendor: SAP Fragment-Host: com.sap.sse.security Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.hamcrest;bundle-version="1.1.0", - org.junit4;bundle-version="4.8.2", + org.junit;bundle-version="4.8.2", com.sap.sse.security.userstore.mongodb, com.sap.sse.mongodb, com.rabbitmq.client, diff --git a/java/com.sap.sse.security.test/META-INF/MANIFEST.MF b/java/com.sap.sse.security.test/META-INF/MANIFEST.MF index c6c6aa543bc..98d004b01d1 100755 --- a/java/com.sap.sse.security.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security.test/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sse.security Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2", +Require-Bundle: org.junit;bundle-version="4.8.2", com.sap.sse.security.userstore.mongodb, org.mongodb.mongo-java-driver;bundle-version="2.13.0", com.sap.sse.mongodb, diff --git a/java/com.sap.sse.shared.android.test/META-INF/MANIFEST.MF b/java/com.sap.sse.shared.android.test/META-INF/MANIFEST.MF index 40e6dcd56b5..53d4cbe93cb 100644 --- a/java/com.sap.sse.shared.android.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.shared.android.test/META-INF/MANIFEST.MF @@ -9,5 +9,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.mockito.mockito-core;bundle-version="1.9.5", org.hamcrest;bundle-version="1.1.0", org.objenesis;bundle-version="1.3.0", - org.junit4;bundle-version="4.8.2" + org.junit;bundle-version="4.8.2" Export-Package: com.sap.sse.shared.android.test diff --git a/java/com.sap.sse.test/META-INF/MANIFEST.MF b/java/com.sap.sse.test/META-INF/MANIFEST.MF index 09b9c3c8b12..7f6967449cc 100644 --- a/java/com.sap.sse.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.test/META-INF/MANIFEST.MF @@ -6,4 +6,4 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Fragment-Host: com.sap.sse Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.junit4;bundle-version="4.8.2" +Require-Bundle: org.junit;bundle-version="4.8.2" From 68d42a02c22ee50b23bdcb06857616d955312667 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 24 Nov 2016 15:14:16 +0100 Subject: [PATCH 006/191] Using apache commons from orbit where possible --- .../definitions/race-analysis-p2-remote.target | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index 3e155dc2f4b..bd96c284f6d 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -34,10 +34,6 @@ - - - - @@ -64,6 +60,12 @@ + + + + + + From 40049a319cfa97717dbd55314f92e1466bc2fe34 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Mon, 28 Nov 2016 10:44:15 +0100 Subject: [PATCH 007/191] different RaceSummary layout for large font size (phone only) --- .../res/layout/race_summary_large_font.xml | 293 ++++++++++++++++++ ...ce_summary.xml => race_summary_normal.xml} | 0 .../raceinfo/RaceSummaryFragment.java | 7 +- 3 files changed, 299 insertions(+), 1 deletion(-) create mode 100644 mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_large_font.xml rename mobile/com.sap.sailing.racecommittee.app/res/layout/{race_summary.xml => race_summary_normal.xml} (100%) diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_large_font.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_large_font.xml new file mode 100644 index 00000000000..0b7533a425a --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_large_font.xml @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_normal.xml similarity index 100% rename from mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary.xml rename to mobile/com.sap.sailing.racecommittee.app/res/layout/race_summary_normal.xml diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java index aa706281192..270d09e3f50 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.sap.sailing.android.shared.util.AppUtils; import com.sap.sailing.android.shared.util.ViewHelper; import com.sap.sailing.domain.abstractlog.race.state.RaceStateChangedListener; import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState; @@ -37,7 +38,11 @@ public class RaceSummaryFragment extends BaseFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View layout = inflater.inflate(R.layout.race_summary, container, false); + int resId = R.layout.race_summary_normal; + if (AppUtils.with(inflater.getContext()).isPhone() && getResources().getConfiguration().fontScale > 1) { + resId = R.layout.race_summary_large_font; + } + View layout = inflater.inflate(resId, container, false); mRaceStateListener = new RaceStateListener(); mDateFormat = new SimpleDateFormat("HH:mm:ss", getResources().getConfiguration().locale); From 137bce36c13341e9644a2607c4df244405130028 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 10:15:17 +0100 Subject: [PATCH 008/191] Removed direct bundle references to slf4j because it seems that we do not really need it in our code --- java/com.sap.sailing.barbados.resultimport/META-INF/MANIFEST.MF | 2 -- java/com.sap.sse.security/META-INF/MANIFEST.MF | 1 - 2 files changed, 3 deletions(-) diff --git a/java/com.sap.sailing.barbados.resultimport/META-INF/MANIFEST.MF b/java/com.sap.sailing.barbados.resultimport/META-INF/MANIFEST.MF index 40b356a0688..eccd0e62539 100644 --- a/java/com.sap.sailing.barbados.resultimport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.barbados.resultimport/META-INF/MANIFEST.MF @@ -13,9 +13,7 @@ Bundle-ActivationPolicy: lazy Require-Bundle: com.sap.sailing.server, com.sap.sailing.domain.common, com.sap.sailing.domain, - jcl.over.slf4j;bundle-version="1.6.4", com.sap.sailing.resultimport, - slf4j.api;bundle-version="1.6.4", com.sap.sse.common, org.dom4j;bundle-version="1.6.1", org.apache.xmlbeans;bundle-version="2.3.0", diff --git a/java/com.sap.sse.security/META-INF/MANIFEST.MF b/java/com.sap.sse.security/META-INF/MANIFEST.MF index 486da0880bc..0fff6d23d5d 100644 --- a/java/com.sap.sse.security/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security/META-INF/MANIFEST.MF @@ -18,7 +18,6 @@ Import-Package: com.sap.sse.util, Bundle-ActivationPolicy: lazy Bundle-ClassPath: . Require-Bundle: javax.servlet;bundle-version="2.5.0", - slf4j.api;bundle-version="1.6.4", org.json.simple, com.sun.jersey, org.apache.commons.logging;bundle-version="1.1.1", From 14d834db0790e405c033d5c747545258427e9758 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 10:18:34 +0100 Subject: [PATCH 009/191] Highcharts and mgwt seem to be only needed by GWT compiler. Set the bundle dependency to resolution:=optional to make it possible to exclude these at runtime --- java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF | 4 ++-- java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF b/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF index 5cd7adf9e26..85faf4fe777 100644 --- a/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.dashboards.gwt/META-INF/MANIFEST.MF @@ -13,7 +13,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.common, com.sap.sailing.domain.shared.android, com.sap.sailing.gwt.ui, - org.moxieapps.gwt.highcharts;bundle-version="1.6.0", + org.moxieapps.gwt.highcharts;bundle-version="1.6.0";resolution:=optional, com.sap.sse.gwt, com.sap.sailing.domain.igtimiadapter, com.sap.sailing.expeditionconnector, @@ -21,7 +21,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.declination, org.json.simple;bundle-version="1.1.0", com.sap.sailing.udpconnector, - com.googlecode.mgwt;bundle-version="2.0.0", + com.googlecode.mgwt;bundle-version="2.0.0";resolution:=optional, com.sap.sse.gwt.adminconsole, org.apache.commons.math;bundle-version="2.1.0" Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index 8cfb13530f1..91b10d10d5e 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -17,7 +17,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sailing.domain.tractracadapter.persistence, com.sap.sailing.domain.common, com.sap.sailing.resultimport, - org.moxieapps.gwt.highcharts;bundle-version="1.5.0", + org.moxieapps.gwt.highcharts;bundle-version="1.5.0";resolution:=optional, com.sap.sailing.geocoding, com.sap.sse.replication, com.googlecode.java-diff-utils;bundle-version="1.3.0", From 3ec659572fce900597b6920594779c907f949639 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 10:21:26 +0100 Subject: [PATCH 010/191] Importing commons logging by its package. We have both, commons logging and jcl-over-slf4j in the product. In addition we have no commons-logging implementation in the product. With this change we can consistently use jcl-over-slf4j that delivers log messages to jul. --- java/com.sap.sse.filestorage/META-INF/MANIFEST.MF | 4 ++-- java/com.sap.sse.security/META-INF/MANIFEST.MF | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF index 4df238efad2..1dd0213f6cf 100644 --- a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF @@ -8,14 +8,14 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.sap.sse.filestorage, com.sap.sse.filestorage.impl, com.sap.sse.filestorage.testsupport -Import-Package: org.osgi.framework;version="1.8.0", +Import-Package: org.apache.commons.logging, + org.osgi.framework;version="1.8.0", org.osgi.util.tracker;version="1.5.1" Bundle-Activator: com.sap.sse.filestorage.impl.Activator Require-Bundle: org.apache.servicemix.bundles.aws-java-sdk;bundle-version="1.9.8", com.fasterxml.jackson.core.jackson-databind, com.fasterxml.jackson.core.jackson-core, com.fasterxml.jackson.core.jackson-annotations, - org.apache.commons.logging;bundle-version="1.1.3", com.sap.sse.common, com.sap.sse.mongodb, com.sap.sse.replication, diff --git a/java/com.sap.sse.security/META-INF/MANIFEST.MF b/java/com.sap.sse.security/META-INF/MANIFEST.MF index 0fff6d23d5d..746bef216a4 100644 --- a/java/com.sap.sse.security/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security/META-INF/MANIFEST.MF @@ -12,6 +12,7 @@ Import-Package: com.sap.sse.util, javax.ws.rs;version="1.1.1", javax.ws.rs.core;version="1.1.1", javax.ws.rs.ext;version="1.1.1", + org.apache.commons.logging, org.codehaus.jackson.jaxrs;version="1.9.13", org.osgi.framework;version="1.3.0", org.osgi.util.tracker;version="1.5.1" @@ -20,7 +21,6 @@ Bundle-ClassPath: . Require-Bundle: javax.servlet;bundle-version="2.5.0", org.json.simple, com.sun.jersey, - org.apache.commons.logging;bundle-version="1.1.1", org.apache.commons.beanutils;bundle-version="1.8.0", org.apache.shiro.core;bundle-version="1.2.2", org.apache.shiro.ehcache;bundle-version="1.2.3", From 00b56f2fa329174eeb1466354345175c5d0681b3 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 10:22:11 +0100 Subject: [PATCH 011/191] Added new features in sse for runtime and sse itself --- java/com.sap.sse.feature.runtime/.gitignore | 1 + java/com.sap.sse.feature.runtime/.project | 17 + .../build.properties | 1 + java/com.sap.sse.feature.runtime/feature.xml | 406 ++++++++++++++++++ java/com.sap.sse.feature.runtime/pom.xml | 15 + java/com.sap.sse.feature/.gitignore | 1 + java/com.sap.sse.feature/.project | 11 + java/com.sap.sse.feature/build.properties | 1 + java/com.sap.sse.feature/feature.xml | 175 ++++++++ java/com.sap.sse.feature/pom.xml | 15 + java/pom.xml | 2 + 11 files changed, 645 insertions(+) create mode 100644 java/com.sap.sse.feature.runtime/.gitignore create mode 100644 java/com.sap.sse.feature.runtime/.project create mode 100644 java/com.sap.sse.feature.runtime/build.properties create mode 100644 java/com.sap.sse.feature.runtime/feature.xml create mode 100644 java/com.sap.sse.feature.runtime/pom.xml create mode 100644 java/com.sap.sse.feature/.gitignore create mode 100644 java/com.sap.sse.feature/.project create mode 100644 java/com.sap.sse.feature/build.properties create mode 100644 java/com.sap.sse.feature/feature.xml create mode 100644 java/com.sap.sse.feature/pom.xml diff --git a/java/com.sap.sse.feature.runtime/.gitignore b/java/com.sap.sse.feature.runtime/.gitignore new file mode 100644 index 00000000000..3e2fcc71712 --- /dev/null +++ b/java/com.sap.sse.feature.runtime/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/java/com.sap.sse.feature.runtime/.project b/java/com.sap.sse.feature.runtime/.project new file mode 100644 index 00000000000..cf6753cfcdf --- /dev/null +++ b/java/com.sap.sse.feature.runtime/.project @@ -0,0 +1,17 @@ + + + com.sap.sse.feature.runtime + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/java/com.sap.sse.feature.runtime/build.properties b/java/com.sap.sse.feature.runtime/build.properties new file mode 100644 index 00000000000..82ab19c62d1 --- /dev/null +++ b/java/com.sap.sse.feature.runtime/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml diff --git a/java/com.sap.sse.feature.runtime/feature.xml b/java/com.sap.sse.feature.runtime/feature.xml new file mode 100644 index 00000000000..5ab4139b82a --- /dev/null +++ b/java/com.sap.sse.feature.runtime/feature.xml @@ -0,0 +1,406 @@ + + + + + [Enter Feature Description here.] + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.feature.runtime/pom.xml b/java/com.sap.sse.feature.runtime/pom.xml new file mode 100644 index 00000000000..27cb27a002c --- /dev/null +++ b/java/com.sap.sse.feature.runtime/pom.xml @@ -0,0 +1,15 @@ + + + + 4.0.0 + + + com.sap.sailing + root + 1.0.0-SNAPSHOT + + + com.sap.sse.feature.runtime + eclipse-feature + diff --git a/java/com.sap.sse.feature/.gitignore b/java/com.sap.sse.feature/.gitignore new file mode 100644 index 00000000000..3e2fcc71712 --- /dev/null +++ b/java/com.sap.sse.feature/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/java/com.sap.sse.feature/.project b/java/com.sap.sse.feature/.project new file mode 100644 index 00000000000..55ac4855a33 --- /dev/null +++ b/java/com.sap.sse.feature/.project @@ -0,0 +1,11 @@ + + + com.sap.sse.feature + + + + + + + + diff --git a/java/com.sap.sse.feature/build.properties b/java/com.sap.sse.feature/build.properties new file mode 100644 index 00000000000..b73c56eb863 --- /dev/null +++ b/java/com.sap.sse.feature/build.properties @@ -0,0 +1 @@ +bin.includes = diff --git a/java/com.sap.sse.feature/feature.xml b/java/com.sap.sse.feature/feature.xml new file mode 100644 index 00000000000..75cea485bec --- /dev/null +++ b/java/com.sap.sse.feature/feature.xml @@ -0,0 +1,175 @@ + + + + + The SAP Sailing Server. + +Provides connectivity to a TracTrac live GPS feed as well as a live feed from an Expedition system. +Computes leaderboard information for sailing races and offers RESTful APIs to all of this. + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.feature/pom.xml b/java/com.sap.sse.feature/pom.xml new file mode 100644 index 00000000000..54a33e86098 --- /dev/null +++ b/java/com.sap.sse.feature/pom.xml @@ -0,0 +1,15 @@ + + + + 4.0.0 + + + com.sap.sailing + root + 1.0.0-SNAPSHOT + + + com.sap.sse.feature + eclipse-feature + diff --git a/java/pom.xml b/java/pom.xml index 118f27a1a12..597a331e3b7 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -92,6 +92,8 @@ com.sap.sse.replication com.sap.sse.threadmanager com.sap.sse.filestorage + com.sap.sse.feature + com.sap.sse.feature.runtime com.sap.sailing.domain com.sap.sailing.geocoding com.sap.sailing.datamining From fec97b6195c07855f14749cbf97474f2efd4afe6 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 10:22:43 +0100 Subject: [PATCH 012/191] Fixed all validation errors in the product by adding required bundles to the features --- .../raceanalysis.product | 4 +- .../feature.xml | 114 ++++++++----- java/com.sap.sailing.feature/feature.xml | 156 +++++------------- 3 files changed, 112 insertions(+), 162 deletions(-) diff --git a/java/com.sap.sailing.feature.p2build/raceanalysis.product b/java/com.sap.sailing.feature.p2build/raceanalysis.product index 5079f298038..dc450a1c4f0 100755 --- a/java/com.sap.sailing.feature.p2build/raceanalysis.product +++ b/java/com.sap.sailing.feature.p2build/raceanalysis.product @@ -29,6 +29,8 @@ + + @@ -47,7 +49,6 @@ - @@ -60,6 +61,7 @@ + diff --git a/java/com.sap.sailing.feature.runtime/feature.xml b/java/com.sap.sailing.feature.runtime/feature.xml index 3ac65bbd136..1389950b041 100644 --- a/java/com.sap.sailing.feature.runtime/feature.xml +++ b/java/com.sap.sailing.feature.runtime/feature.xml @@ -18,103 +18,133 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.feature/feature.xml b/java/com.sap.sailing.feature/feature.xml index 12e6cbee047..9ec19467287 100755 --- a/java/com.sap.sailing.feature/feature.xml +++ b/java/com.sap.sailing.feature/feature.xml @@ -29,6 +29,8 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + From dd0cc8e172317874441e68daecf492f9ad48d3d1 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 15:40:44 +0100 Subject: [PATCH 013/191] Removed references to commons-logging from the target platform --- .../definitions/race-analysis-p2-remote.target | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index bd96c284f6d..a4e7fbf9d94 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -78,7 +78,6 @@ - @@ -125,8 +124,6 @@ - - From 76ee80a22cc0a42fc6fb173912f2c6307dc1a7d3 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 15:45:10 +0100 Subject: [PATCH 014/191] Removed bundles form the base feature that aren't used anymore or that should now be loaded from orbit --- .../features/target-base/feature.xml | 28 ------------------ .../plugins/target-base/commons-codec-1.6.jar | Bin 232771 -> 0 bytes .../target-base/commons-collections-3.2.1.jar | Bin 575389 -> 0 bytes .../target-base/commons-logging-1.1.3.jar | Bin 62050 -> 0 bytes .../javax.servlet_2.5.0.v201103041518.jar | Bin 119303 -> 0 bytes 5 files changed, 28 deletions(-) delete mode 100755 java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-codec-1.6.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-collections-3.2.1.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-logging-1.1.3.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-base/javax.servlet_2.5.0.v201103041518.jar diff --git a/java/com.sap.sailing.targetplatform.base/features/target-base/feature.xml b/java/com.sap.sailing.targetplatform.base/features/target-base/feature.xml index 7b1553c431c..b2ab1335057 100755 --- a/java/com.sap.sailing.targetplatform.base/features/target-base/feature.xml +++ b/java/com.sap.sailing.targetplatform.base/features/target-base/feature.xml @@ -19,13 +19,6 @@ version="1.3.0" unpack="false"/> - - - - - - - - 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%0D!i*HX8O4MB=oJfx_b0#x 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⪚|U3VY}d-^qs5aFtVx+RK?q( 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

(TLX+)v?_>QQPREAAiWGY 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 Xlz{<4C9qfv_|u{aqy=0+^o00-JA(}_ diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-collections-3.2.1.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-collections-3.2.1.jar deleted file mode 100644 index c35fa1fee145cba638884e41b80a401cbe4924ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575389 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

?oJ#e5nzTJZ4Sq?os&$ zvRexge)zJm@=Jqb$g=(xlOENuXLloe&DH$iT)eDbLXkg$P;QMBU@J@?hN> znZzPPZjam-n7wdJdYv38`;e6p_tOm_tS*2>6f;I3n9?%D5$4H@Sud@Hq|BfCkp0osmc?(+VYdp(M{o?zCfF8rclEpZ4mw zO!mPaBbT|hq|*H>h+v0sN?J%y$sV(P%HboaLpUzF?|Ql|_$XxRZGMVLljsqf1<`U0>! z`-LJ5|BnN0s&9s^U_mupFe?x7>R;UG90%4Ncjol3=yLE@T{o5xDT-yZN>!0az z>v11}w9Hp%b%Ob}3LZn`lT=voEihd&4+q!EAoPZ5t9~W!5PV7~dR@}HZ?f==m`#>J z+yQy@f4CK!VArsn;r;qm`y-U&_#Z{wf1jvnd3dWVcYo)2&1R>|kO2WhfrbT%_NRvn ztPSQM3TXf%x9kQa8vpe-CYufb)j3z%Ecj_E0AH(xSEGUj*R}mcw=ZvL-dJhgczXj> z)bjb%-n8HP_B!1F05W7W`MI<2Ml-%Wy+d*2fU7 z?>Ty_ha#aR@4o9yt7F47af_30CmAm zB3@RL{XHT%{|Q#_?xBI4tK+@2oU6kA zDZ>@zti>D~8arJi$UQoFIA#w*F2&J%Zwf|L+qAyYi*1bCLW@)RZ&~}$K#EjxYN(NH zEFlHa(n74V2HDnVz#|D~P8b+YqLA*#vib@-E#?MbtE@!IS}jHH1|Ic|nivxF`aE{S zAL-Omlcq`NXsIwoGc>vyJz*Ealc1hSv^nY;U3FWK@-AhJD(DrYoSu3tZnEaO=I*i- z9hUAMMm{7RmPBx6vBTK1f-rO$IFrtQvjP zimLpSsP_5_h3NzZpP&o1LTeqo-~Ytj{K1H_8K-{JvNM8kMO)QEIMrE)Swm9ONo&4^ z>~D08n5yc_P5#W}WeXvi58*VhoWwoW7=2B)3X2Tqk+#=_&a5ZwPY0X+V)lHT4E zk?f<#)Mw1#sfz+fkZb&60o(@p$5R%LF)t z$VxqnD(fC1XHI01BDNH(7mWcgHSrUisd%k{m(N&{&vdPzE_(#qTMYYS%s*ovctkpApwD`O`?gbORt~q&v)83)MYwiViz^F zQx^b``Bb5`kYpUWFU#99*WiP6&~GeOl#roeZG#f6wbrhq%WgUj0i{XIEg|W{AtLsB zj-_fc%xpL+QUv-z(nzH`W=TccI(aq3oUJ|?y|OZrRRnvm_;_N>px9EoTB(Du8jin^ zbiZB8nuPq-*>K);@lSSIkE#^Pou!m&RZV(Us;;%}s;Uz@*AcO;iBDCEyG>NR1se@) zq9qz{Ewcc0cOs%2Q}Vp$hMgQbg6 zeESMt#VlNHl)5r8TueqRiEGr;$|$ylzxywBT;6iiSnMkF<&e{vZPjWH>S(s0i*jui z=7x%(%IRjgYRd|HMCPuGv7 z5D62wD~IDUTX@h(9UMA@W!gWpgl{Bh?P42m>Gf|L_C7l6Th$%H#k^HyrFx4QC?%|J zSu0t_8*jzGPb|ZaV3&JnBbQX0TWHW}tt!eb9)!*%kliSx@5`{VN5xo%Dnm4Y1fO4C z&gLyEe}o^yEJ24#^|TO>mFGsN$DP<}i}ejDR|@N)V5hWt`e-$c`}!NTk<|xO?TAGo zyXklr*f&-u9M9A}&8YJ;#waCl}3%1g-hln z1m%j+k(a`(P8t>q%Br>2T9W=Up)~^~$<%{W4Vg2iOdBPVs`(Wa_QHd4@r7bhgo-Pb zLH|~h?vE+z=P}D2qp+rpY)>PYU3~XlKM&_uPPpB12D_?XR_{|tuzxDTHIZj@Qvm6g&FFUkmudBkC<91@Q6|XD{ zHo$ruB+IZm^$us1L#~j}X8cYFruf%&?^TfK?YVITL{0K0?aOa9+O z5PW+m7JS|^q#xYmxlZ>eA4{Q|9ssYGM1-4z9q)Zy#=g)_2ZSqXT^2!t>mgmf%fUeB z1F4p4KE^Pt58}lxkkPGuH@>@wmu~H@bCiR-I{B^;Vqo6Hu3s;=s4*`?1Qh)TYZoXd zOoi<>#FK_cvZ|GlRw{8u1XieLh$6N{zuBi|DM)f(3K6vHtF46Yz3`0?-#6={O$hTO zb$>MwAp5+4;k!nz`s~Bql?WJMq&o(IPVH#(eW3TEP@KL+Vhwg(q1=S=zYqOk463|& z8}euy4VAx3@5^g>q9yH9&CfV{s?0!6%1!10MZ{D9_wZn3|1QEnP75QrDizeDJK_U*FVZ=2=o z;v*5--hQX@Arrh0kpu4BY~NA84^VO)?g^GcP%dHh9nNwAC5i!d9@uRMI5{Owp@#{P zDE-~MP|)9#cw6l@6jnztA>R-^MSm_2^HUI7_eW8aPSn!5%3x2#GG8dGzQ+wY93uf6 zCE%<8EEt4KmBe$=aA!$>7w*vez26@ITE1rk1pJ3Rw2y^Q^*g5xUv|Cm$&cKsXL|E* zEOhnP*CmXpVp$3YPO$q~z`({{+GeA`HWu$Yq|8-8VNkS2nzSan?Q*4E(0#;bGATyvn1u1!g{p=s88$liH>+d(0ogNBw`kGZF&Vtrp3 z9q*gV(~!=>kwP-P^@?UCa8JtIh_SL6*}$cQX^APWNuzC2mLK&J4pP zzc)9{2bY+pO*;+6QmK9c>pn3^9e>-?$eTTID!<&`=XKUi7&M_jAf}WfPx{jhd)pD{tdj{+A zxs_^LX4+~KPga_NQVpXO^A~HqmiPX zZ51FP-wtiA8@F`JZS(!D1`o1(ajYI$teny0cA?rW0_Wj`tK0$$)^XV{#b8R{x_9Yl zYw|jv@Wj$~qR&Qnb6u88)g*VZcnc=$3nm5__=>Q+8K|AD11aSFJ+XB+H=tgv!Lkqy z!Mwu*|3*BnAIt*|y>K=3a3-xDBo!NiSyL$<+zy+e~RMJPiVk&!)h2v7Cl?CSGi zE5b<&lEeuqa^Nm{;C!I1g^eLX-LUVm%r39wZYatJWWcOE^mkQtcyh|o3Dr&OR<3XP zL%=9h5!m$~G4i-gn&50S>pCJWnP zhs{A*uWM;7?i&uz7X$-e<{XH$s~4IhFrXPceJbv&3(1e>QS12;mF)%?HGfGBk?|Tqip9 z8%bXs)af*-!{7AnRK!r;*r!{PJcX$GXr2cl-vlDyosrCp+gmE$M=Ne0;l4$WP*u3K zxI!v@;{-a&`ha7GHz)_q{}1&DdfKRT%OsCJhuv@+IuFVio4Gu0H^ISZ2b0Apt~VqK z6?}eP0U8Q3+0~#i^x+SsRy@EbV>SF(%B<^VSdyXQ4tr*r-)AnUj6>VXzqu7rU`@O! z+s)jtWvRm0j9kbpJ5XFvO#-htfcTm%I3)$WXUWM(youxr2yv2B{1&$S&e#vJV^Hvp zG%(g6X7Ojth_T2RqM7ako(>kxfRJuhQL(VlsCF4dXu59Gyzt*_f(2AR4f$x%UoJJ& ziC;tqY7y`hnjCmk)9Wp~9kg!z>Z&=~=d~f+UIpJ{wt?(fni*!_@EDj2fzD- zC`}=6Xxg)URbMdRfa|7!FMgcta>(^#D{YJVDMg;hln=P??G)T+*u)umR%!CD4PZo>rF zKy_~}msl;yk7dK-)QV3qYzjZ&5cx91a;PyGvNhHgyCkjss@#`5IQbJFf- zC6u-wr5sSt@g0Le;WW2hiD#uU23V$MH;SU?9pU}o>yegG~ zH#U|6W?GyC=9PQsI;JMz1=XZVvT51Y1j)03{kUXlAy`17j}l^evAeobC}1^$Y6D_w ziKAGd>)*bi+EOJvPRpl~_09-MK*_ww6C?k0?RZLe{puk;=$ zRZrn=5p&ds57l5ly|1=K&OPKvdr74MKcazJls)#a+f0!cTB45`3zV+_TQ;&i$mrv{ zZjez5Hm(?zmSWDsHz0nrV=|q)rdYz}*l~rg7?vw#=T$!8lz;7k)^;6q>Be4*#b;$` z2k9_3M;M-w*7?oGXCe#Lt#b?UMGwdr*H)tg#hbvz+Q1&KpL|$3O}7)sx6aR$w><-^ z=-VG zPQh*qKQ4)XOnnAAshd7Ju;K1EMVnlBqA@oOs0sQ8c|!ulqc5F z#F^nCH{MSv6U!a}G_y))VCl*S9G=8dSAN_@!GsTVgZ=T21(hcrOq&R&Yo?SQ%qXCT zZA`1=P`k0{d_cBRYXt~CrC=9o#T0tM3!g3+6npWV9&ZfleL+&rcEpQ&pemnmke2Nn zhb|f4AH&v5#iuqzbiyD9c_?44^qBf#WcxXh)8frSz@=^z7SX$kvUeM^0%jE+%t$dl zN=aU9NM5c;Ueu7ixuJZ?p?uk)d=a30>7jfHpnUnEz6hau0zvIKLHf5+c5~WxjghJL zQGI|-rsjh^MuXzbMm!MqD|w`If;VrmQZeRgy>YPHy25-TIni0(LxKl>3`}@kH3Ct|x9FkO#j{r>LnkWtBxg)A1{N9$lTOW`TE`(C+veQT-il zuAZw#eHPwK^24Tn9BdL2uM_hFcX_L= zljD!6d^))W`2@3G(I0aCGyxQU!y}yaj@o{z;x6eA8hj$S>wTm67WT%dKeFG3e35N0 z?~Lp`y4|IJ;eVBXs|xt(yFVd_WPHV+R{L2)C>|(M{v4A&#pxEXHs6r=1g$oKTQ&wz z#FHw~THS`TEMgBKWsJH$M)S4zI`H?@1q^Si{RK?dUXzw*=@>tiKjaAc#I~EvxtJVD z@(yj|aP43N3)#R8&{1baw(co4hov_Cap3+V*eALYhdR7RTJeo}&y|28=LnCyYE^I~ zf~~7eZ=-#0MM>fR1xEYqSJ?U`54+Mk0Q#vdvm&1-0zH+Aog#rpT`ZE#GDoP}rc|=a zbvBG(LS-9o(WYB+K(`L}JdxurVY-L3j^kylkDK&quaOh@)7NUp|l3`?9tpvx`-D-Fzoi|}VlQ=&T z>{S(AYRqr;Ve5;c(UkKVQc#2s22*lFK+(bjF}O)Je37A2ejZsA{Y((HrN}gPoH#u`y^l|vd>NQsBojH)$gPA1VBL{`JYOjH%d*Dr*9r5RmGaLy&<{w_qhb=H*-}_L%EU9~jUz<&4Z$NRA+Q z8q$>OQCVP@#IhM!V>E7aY*Yah58I{>>^jeH+D$x$&Ms3*zLfw-Q)!|+g$U+u5rO#( zq%paA$g;O8ftFDs0TfiAanLRq0q_IRBBv^_{3KzBj0rTXV)Dvjk!H|pMk<66ZKDx)#G)g93A^bk|`?$Z} zLYViGdx`Slw)Ykdw`QU-AIX?RxhR6KJeqH{!>F$bX{3JC=wmzKNB63Vl=>*F_wogL zJ(M+ZcHtL?n}&_v;sClG)s^o4Ch^UL)(E{6Qajbr+7i!casJjdBBtc4(nwh%>27=D zhzk+Br@A$L9l=m0esXwpS)xoS{1;J`$6_UD(}>`L+*A40Dk(;_Lj}rYTkw-GAT_`n z@zY<(sglh8JYmS;9slRN2K_HSnVGT(eh_v3EB=70D;_FxRtykYpEWS`NzVO6oVk z29Thu2!j$-|0=veYcPWbY&~McawixC&ClUspmE!tY5ke)}3KU9Mfomz*9Kh*L= zUm3{l&y9K4)zGk9+iQ_!*@G0*aT}MD!_Vn3Bx53>gKw5J%E`aq(Ux zfes|+K9|P5kQ~?=E+`$o{%E4MdC9#HMZ&Ujfm?4aFL=<_GCPFV2jHe(g@Fs+H`xh| zc*5BPcxn&g5Z5v=N$41HZ zh>V3l)CEx$JNf~Y5mXI(ieaLne`a)K{d(IFd>d1}9xum3%ov@fD4RT<~ozl3pj2T1rD7FW=i8`j5cmx0K{1ENl>uNT4UW{>Ub-iO_^ zayA?lGirD4@R#Ka0je+EGW0F=C6Gw@?u6@+2@V9}VjY4DbmP$wHLV0~UMBzdpGWIP8& zz>q$i1+~16KrxppcFk1v{EAcI6K}kfVGuMNQ@v1>NF+4e{gv5{TE?h6K>2CB1bvi} z_8&2ALrOAy=wUill1B-6^w+wxh&TCW-r>e1S!1#{>?6s60n)m4$;Q5ns?e<-i)K^&4_>{I)d@exPJkaE!vJzMGyBgaKMPe&^xmo0maj&Rzq(TZDDLR5Sh_M`m=wUFlVPGpL$)oZZNhIF} zSr_i`PivO{*5nTJkCX|H%A4Y1-7>}6HIkNuxIXrpoM1di%7baprMYS>M*W7ehJ>=L zI#g(+LsDK4(icT4>xdT-`fSSik)P zY)nD_UkNi+ZEfs~Ele#846RN6!@n{+<=t^p1a+jh*=SNx1ON`Xw_$H_PC-idV>lbc z^1QGjNr)k=1Ri%psv1WcO9OFF(IuJ=1biif^<@|mYRJ*Kz0qJq+bQU;MoA&8x0U`lJ!c+r9mBM9eeZac;OA^?;R)Avw7CXO0~xi8--9|e_J-M7 z9;^2;58TBl(E4rW>0RbTea{~RCVt56|Q$4w8x-#uT3yB+MhqNwH?xpf;NxX)K~vQ z#{+cVc;RDwriD(+Wu4Z-9VByAY;C?>X+OQ!l8LS}($PaZGwUx~5C8 zf05f`M*+~v$kQ>>aT@|Ud-~%c6Z5>=9g9G6GuT7zwovG(u6lGzr&^>frMdC}H~Z;t z0REePlXAAOl)&E+xwl}uVY2Ux`IEd zqM)K^r3xx_B}5?z9w!|UvA2wN$tqRv)i_iWZR4wc0|c!vMnnJs5n3QX*8GnUI zpj_UY_k~VTZJn~Q4uDcvrgD9zu2;Rm{MOQiCV+exdrvH{Qgt?5GTvbFT58gM9P>pq z4FTgZ86oL<_A4K$Hjho$-)L^Gn~Y@WR^jiS988@{oaf*yG?aqb#DXN5GoxvVmnMDg zGr^L(f%Z9(f8Y}U9B<1CONvl8!$xg)SBf1y6<9BlHJQUnXp75smwUK)ae`anyy1Fc zzqgxXf>r4U>E^|!szmA!*_zJL8|(T71qv5y%7gncJzv$MtXC@iv7x8;8KK#?UbXs# zI|_DSa62mW;IA!Of;)meMkrqddcA(8tJtE%gZJp6r&ZIlD^xqJ3sgVO<4uMS;pA$b zD=z&rWS$q4eLfEbc9gQUZF@UW2+kVX8?w?5j96RLLY7_zs&^kr&R-FYDEc)<+!dEZ z9pqS?lrOgIY(D-ha!beU19+v#`i1ERnxJ@n4%177IR}gA*Yu6M3Rf0T#0?Oi37=q3PhjgE46_I$7g&7g z2IEP+RnSpa?om(eC3gka$0rpqd*%!v4md}{eRoPnMBFO$BnJ}FcSN%mc8OIKeCKtO zKg@rnHxYw(ggL~s3sPGPV${dCl6_(hZ9uuA8XD7)c6dM@$B4Ia2Oek+zfcp3kMDVs z4>{UOm|dw7ag-bnf5HrYTKkqr=tO$kC}!L0SmW6w-Y@86%d|;=#n5#8?x3HVcXxvo zYvv4e0l$XWIy4ZS!a!(6M{lJ}oa7;=d~1+BLgjK;39th=MYbqeR;Gf2i+K+3^wV#9 zE^?I~A`;&_AmkeF0c4!TOa*lJ!L}tOm;bnaL*Ri!nQ;*kxYiT0Or81&T*yfs3pGc< z|s?p*q*cAmWTJkwZ+?X{-aI?@%=yi!E0m9*Pwp1dwF1g z{Sx`V!=(QvAOFvATv5uqBBnCZaCb)R&s0y$3PG2Kr=A!Y`9c#}=%Lj*pShb-Wzi-P zB$afXU45RBh|dkG(+9uL4DN-GA0x%!)X7T%5wLds69xFj~^GR;U(2qE0ZW^I1}g< zqDL{b#d|>_D9&w1FhCMrx#PKG>=-h0?2KB|Wy3kuY_*5J=mVVt$?hf?XZL_+sE^ z;gEw^UD-ve_jReX&7T4(q0hN43&OT0imw&TX}zg#xfRYcns_T)AX(qK$#Z#TUVnY} zsJU%xY<4oT7NS~1nA35bonnW~0ZB;npm0v7H|e{g9Ybf(0%D75xG|d&>E7)x zN!&3ce{N6+IpH+44o{&T7OIjVa|akk>j1W7zmZhw$o&o}M)e<&eu8AC6*UEUx!oHn z`TidTh5q-Ja{U}p98)!ZfqrNrB&tlh%rwK^zmJKE$YUMvuRGzb8~%zJ@j>xm(7_fB z#X1Q?nmyum<@b{tDxk{Ns;kLP;YFo?eVG?Kx3K%m$lKzaDP(#TA`Xj{BF`+;Yses+ zHN62aPiE#vw}di6bjvj)WLxx@S*z_LXJre2lkH9SKc{<#2F-}4yb)u#rMchVC`5=5 z`tZ2{=^ottSZc))y26?*1Ta2a6f^fADRoFTUGGvoGA%;{{0sark_ODq+)gfIgkolH z4Z;wR3YJemx1IP;TvT_Rc9EM?2eZ5U@JBI9m^);5z&$fWZ@zW%Uk6?D`%-*~;*{{H zE>X=IpLs7-gFbWHix0$q^@oZXCu&^ugH4GaB}Ueu->V2aCQZl>2ss{~D#?hnZ3Z5= zm(&i4&sDPNj?rUhV#M%>FT`S-C#~&ATH`~hJ&@dl3G0>`wOD1H^`it7H z`z{Z1RVACmZ|Wd!t-FfekjQ4TSBM|wGdL(ZCTPcdkTl31{D7ZY0J)MDt?sG2v?BNd zrpq!0uc@h&F1A?*k;9ze5clwja!=T4h4e(p!&fCiCQjJiccw8tDOc)npE%cBN1kXz zA0o?^Ku9X2sJFn0?2peJIouX^g)h;rNj!LZ_=rmyE`j6@q(UgIxMmjt^-G(6jjb8& zTj^NmmE7cCY25n)!eO?aRwAC8Ve{go`_pe`6|9iasZ$vLje$u>;4=r;#r;yp)3OC;rcC>M) z3N&wFE?~z?ns+Wqnx!&>Pj^xfHy2j<4IMxL`9jYnSaggN?-#a zUn^-kJL_%YO?f#ep8 z=IoSg+A6s)7{e3ohjwYgy^cKSl`N2Z(8}IoEc3WyN}4*kJUz^PTg!%i}t;`)*YI7y89AUFcu3y%Djv zBz>-Ma4B=o_Mg=V3?+0rKTze1*<3v-gF}2XH?=LCxIKCD;=)vw+thG$#j+o6&cjar%yZ z$i7k;`23*#XkC;pBZh&7L$xm`{Dc(%kvlm4G$%=axN*&BwMy0SK2B34tEPebYO|FP zsOfn3@zN0maJ&=tVfZa7-V%}(2Iu{T0z|D24HokV{YBD1#8E=13!pJMf;3(FXms^; z+vNIb6jipY0uL^EyO=P%REubO{>7UC{%7`Nm}4{G=BqUQt$5)f4lQ)>Vgn#?Y}S1g z>~;D|1JGb)uDpHmvPgYaJykx9XKK#&6O=P!w<#24k!($7VPzh^VVwyCXXo(o+x2AV z_8rWw6NvQ?cIr%+^@E^12QCO&UkP%w>a)i`YYdCnws_IQO~cSq)}E`omESPE~| zurLK4oTCmuPT*QhB8uE&+6msV`pzmLsKN=tk%lTi5hJvrlJv%%H0k};+*RXj?0tpW zYV*)#lkn+ac%~#HIYS0-b8MC84h2NRZH)Y(N>5faq6&XD+M}Jb+6UST+bVapbMD9w zH!eajr8cTdgx4#8$t!~V4F>XoJ9-Y5Y%WGEFXsm1)1UQ3wL`LdSFkNIp}~*wfpcmO zmrd4Z58yK>;(?WBmiHyCdWYc?v%x3TE!-8Dyla%-vH=8MfFt&KmxhP=X)vH@(C0sK z^Iy5M43)C%0r;<9azAFBwErg%@DBh~scPD4E+T7-cHJczt;$3qBCLx?f)B)HvXRBg z31DHZn?X$ltk{K;uPon1IR#LaxgYT3BE=_*`gK9>YU3E>nt>;-@PP=FFeX0L<9?d^ ztfQ~V_^h8wovw*4tA@vlGb}J}9dG;yoOoO|KD(Vfe|ud6{yMj#33Y1GodDFAS(wR8 z+-e^5Bpo3qmEuC{5#$HDsqOF{7;q`_QkpPexU{3+M!ff;=Y_i$MC66Y2PZw)9oF|I zI4aT4hPyYUmf7`2lwHh6mIb|q%4WXRf~&A4@I5Z_!uQP)f7ky-EB;;=rs}U2pn7<} zEY*P{)Z+W?fLJ2^(KkRV-H}&YTH_-+{nfkscPqP-yA!Y<6nVi{K--2QZBl)7BQ$Ab zT{*H_CePiS>U_h35~yVOB9PmP)ImLn@(PQ~68mo(f{J~)#gBgmXYzXfkDJ7ip$q$H zR#OtmL8*YLJ5_SJj3zo|$`~0HwP(^adswxOO{T8O_61RvRk1>y$rF~Ov2Ag znYl46RQrdPjsgZ$J6x(mOGl^?H9V3LnX487hvA;SZ4B&!xrIcq*$w)(8&98M->=-D z%j1b~V#^3aDbjV`EEEK!@HZ9CRqR(G0glnitWk2R(-%u)pkBuWQVbQbthlC252SRC zB^7tf3tp7^c@1HAnG!T5r=h7M#6Sy)b@Xz}!;7wk*+SF?UKAIE1k0?0La#`eJ@QfI zRm*cVJ?8?}4&F=tpEW_X>Wj?}P-A>yAuUDx9SDTluB5?l@I4tL1<|xweRfd$vOKLJ zahW7aIkX~xG5H&#*W0@3j?HXd$B|?L7&dl~u9;(bM+VRhyQ#7|5>iyL_(H~__e>U} zd5Yj=9shbx=ERu6cgTj$M9bOHR2l5JB004RDwrY627P+Y4DC+6evlw9?3BM;G|KYZ zf1&lO5fP1MVX79~w|QVZ9}REIV1yp4g}qaE0t< zxOE0Ip&w@`(~?ZQpK5|Tx`FY?YI~;fuyP541BIlwA5GJmT<~4L;bSl}aYs~Pu`m%% zdlqQHen(=_g%ZDCohHs?PZYzZ2LFVyRaEyF6++U8uz!*=bU>#}K7TBxaMS@Zw;2*Q zN?l&Rcg{w3nk0s&)ik>@Prj@zn^PHwaBfc8T>yx1-0?TZ;K-g_o&T5^GpyYItCWuE z(9&lDh#dS-reIYx?;Ou5U_zV?X~UeA)I!bW^?6A3)kyeLyA6K4$%Dk)5oOFNsLYS* zfPb;&rbdN1h^Y{3)-q~494pf9ZPglS*mRdc_Taq&) z|4;t$#`GbB`h}8GVY;H=cVR&E=nB5-8-m&M%Rv#(!-BYO5qUJ5V6_D7>jA(JG8Z+z zb24b!u4%%?q;4YFMBW9)FCdE90W2G~IUBiV=;a+OOIUl>f^iW<#|S}}@NjuHbiM__ zW``n^TyN%z-t_svd|3+u3Pc-3ch^!7f?{J%qOtFsLg?i;cQ)xaEVFkD-F82$+Y3Ib zt~){n(mhR0%X@=KEjWxHL|Lj&rm5AH@Y*ZSu3Q+%Ogykx~FDH)ivQ zMV=>0N*?8o<>(7C)Qsd*dzCIr8n}v zB&?R`b!4Z;(fYHr(i?(xb~t~b9+T5{f{Hl}rqH@G7` zIQOp%Ha;UgeC@W!T3i^fejefO;l2pi#kkq!;QJ43Zq_NMHj213W6%;J z=#=DqgbAoTNJF`uU}lj1#i^S3g#WtXy(0_%>XK$5FxwALU0QO;S>wR$mNNa%^2v4 z;h)bTo71SCfKxmWA#*&oLcAV;CY>A1aYw2m%)Wp@&k1pC3rix)i1G+gwo`htX&)UM zseDjYKBdL?yA&Op5X*-=ezhSqRqG0R^R?m(mr3q+#MTev9;cN)FO`cW;kbop5ujpy zMdjzX12&#Pr7vcv6>XK@c|SvGY4Tp=)?=*f09fHct<;g}VGKBiD-MpkUu(T+ zl`c}={TZe`EPZ13cv*~O7>CT6b2u73qTF-QLHgF%tHJjk7QTtuDUH}Z)Jgt`Kd+03 zqSeSR+?E`p$8w4J_HK48EzE>Ce9pHbZnW9cksYjQ{rNs`d+N>`uDFr@{PcQB_RgL~ zm#>8UeEu)ZmVYJM!Q@pOU2u^PZ zjzJ2oIFN7I&H}1evnmEiB~&y2x_sJ0Aa$iFo?>Yz?{KNfsC+JqS!7gXondTH8IGlC ztfd9aO+{-hzt-sTL$myKJDTn~c_WlzKSc40OmDWJX*T#f{kI>T?cK(spX?1iP$uY~ zXgCq<;TORFWXu10`Pdw}=h~lyx$Z|+;NMts7Wn7oMa+zC1e}bGjqLwd-kha8ZiDFr z_cgTTifLkoBRz*wVrDwe;*8_W0t*10CoLA`}=Xag7=q{9%D3rY8G0L6jpsI zqJ_>t`yNf`W47A$@M>F`0ev)^RG25;&!&8cU8a?Ybyy3vzWP9TXpCd!ncBQv$c!GR zaHDK4RbI2D@+b7+GM6ZF{bY-^>au0cnZpnY{!z-snQ8E!BP|Q&Awdn*%BH&*bh*WqYgg)Z$sg~IE9KZ*M`Rz~yUpTXC{HI)Ld zGA~OXHHQh#7RUP07`tQ(mYHr)lcgVFN&|Nc@2@KqTR~(uFCMzG)XhyrrVioa+fSmt#6_T z6#e!804ajd=&214|EOvX^Z;uy-86;D#xchB#QIGi;DsUS5s~TKU)sBGPA)?fE!LHj z4eM^wmWndO_&IGb->`S#X<0j^AG*0z*>5#_E+%t^fdgXtXQxzLg}oqf`MKH8fpLEu z1z#&yY**HBjk|CQ92M^T*p`x&QrH-iIE+P&HSrb8Lf0(<&;uWgq`{kfA%(6!br}O6 zPMN*A-}p$n0dX#GoqDz#7*9B>Ow3Q#CT;9-~b*)8HT)aqsB4AFwxSV^Qb#c zwL-m`eqi=;Ug+wb|27d;)0ON5DjGTuEmY{npW|zQp++t%Abc=zI++HXsrXIQKjY@8 z0QFh8PmtA1HVhqXME4cVzXkqr5g4TMD#0#Em-z+MS=m5xmzI-f0Xmc4jnh9&l+?C{ zhd3O&p9+T0Efi26v;gVI!@qnT>hp-89YTJkozm1;@HA-MQ;M79`Qv*1deO3l$AQ)c zy16jE|DYE-rI-1(enyM6oOAFUm&>yW!3O$;)G(rGwnN1_<3;8@vN!){ZUpkd62y`x zh4FHIaNzc$S+M>Y6)I?xxIy1kc+%7HcIR>128(Fo16ByMMwj_o-eE`#Y>iJB@R&uj zULy8RUkLML+j74!hTUv)3Hsq)3w1^i9BLk}dY<@54-L@~n9&hgk|~@@yMNgcdwT}j zavtr8ENqx5`q~s>dmhO=)YgY%gu0@s_p%07Zsh4md@jJAaLPC5l4>^wc8XcQF10>Al zA8*Gq4f?~-{Ht&Uh=3NJAQ{KP*#0IY2(Hbk`SDu9Ag-9UnSN-qhBE6vej`#R#@&qa zhqY_G+DM8M(!Ifi2?G02^J9zQ6;a?;eee&d1+58fMNaff0T63P5k-4>NY#A05Z%2t z${#dA+xvRJDGNW+Ya1Mvm?(NdTkC7rZT@v~iA>8&WRpx0Q)W$|W0D5hw?ya9VP{#K zjtXr1#a<>SK~h8>#^RLg(Kl7nyRa{WtUmclv6&P^ z7df{nNZvr@e%z=7XJl^nJXMw_P6hd=B%@mCvw^yCZ7CQ68Kb>&u@q{_wohs9MFbQV z72Omk8WhR?kB@D0yef9sohM6>rT)~YhL6DASixT^QIDU8Ne_!r66{H`;i=x$s}bHX zA{M=8n)_^TP+q?J`ykt6hZu!k0R+4gw9?XUIYXCGXf$dNT^j1;hY{B#TI;%L-+r+@ z9HbtMA)Ug;5Fj~3*Cr7Cjk()F7Svhu*p z+r^XkxA87|sEy)hexIQRzf$JO4si=0J$}LFiwbc0mby5rdc#b@{I|t%$ zp2?5COp8-+wfR#iaw(`vDDW0BdX{r<-(sjx;H}?b*PC{heH}>bL1U3hIyLA~0d3;& zHSbdp49qA!6Fs1VYll9?VM{;gdLdYpM%>g6SPZ{s^NU*D+ZmQdH~Mue!~%Q?VD=L+fVcJVz`X_+I} z=V9r1PG=nE;7l#TAu#p+_cpqKn=I-F#) zF5=(JIm5;9H@?g`o+w=+Y7I+OZQct?Y-@u1;fPrMNeXYp)U$} z(JY3u4M?GS8$|fk@f^eVtLy_91~1`5#2_)&Pe@gHQF1WUL`dB2KmyH74QBkr?=+#B zfEn(GsEU&&qSMqQkv54KXhlX6Pw&zYO#=gD5 zzqt8*vRoNG{|74%tZ2$E_(?@Ze$KyB!~Tbr|9@7Q!qN0F{(MM6$AER=2;9L;7uZx{ zRFS}0n-G{+R;zZ3?b;QQ0{1i=<#)vLh2cv|7q z2yt57$6k35@;6qxV$;sW{f6XJlcLc{ByGD# z#`SZ;i%7&4|En=pC3b-JX<%ts%HUTdQ#Jsh*r>a1anbb8^ zeO$dXY|=fYz_JskzUNu+^Ow8|Bh{=sj1E}yT!U8{dQSE31IlLT-jEP>M4Z=^0Texl za&b?p{o)wp%C}Ozq?@~L6d6~KARi@I^eR1z$a)l{2y{bnjA*1+oAl$&D2>3i9BP^H zEa5shi z-Z7u`y1NJ@;O_=NHe#jPB4ppvrk@G5$raY0ApiZUoV&cU8vJy3S73hq;`q0(ih!k! zfrXj1$v;=+pBu8M@~)_4gytPhmAQGC3sNU6TwM$dDTW&0UkF4k1Oz!CHxAPd%GTyF z<@{6$wkdf(=QLJkMn!57e^tN;oQ6)kIpl5Ardv|{6?XR8rLBTj?A)OHcG%vr{m%2R z&%M`i=Er{4^DnAi9b_wSGE>w^4PF|d_Lu@pA%_A}j=R|~CvQi+PP9#;bZh!eJOY;T zmBKw^z`@LJr#l?!2^hhVTXWI~qv8PdM@dp-RKTupf73VK>9 zy`~`c>OB@<2gG25vss#c@zkb9>qQ7)i3opxl68rewnOLB*}^!FC)UaKCtMC!Ex)sL z`hJ-Xa%dH1tKfVgDv!{>lSQ}hw5+SH%zPW z1k+~B)CJV&=k%E}oum?ydKK8lT^#jCTvik3adr?iQ|A5t?S5FZ;={}I+i&~p#js2R^6|@P$!cR$d%~;$B@^V^BZNl5ds-jL6 zHEo?Hklg3vthE5cVnhX8RzZk^C=cJ0F**ZkI8hX2;{8P0j2fGXtMUTmdcb~ZDQUtv zz0yZXNz*_%gpVqj8Vr|bjnQVU=h*W}hZJ1jJB78%D3>w}R~T_g>-{2Joq~4ibw z1|A!Qk*C7a5rCG=?%L{Z6I&vdJ|S6-eM3&ga2m5pO(|e}z>>1Zg-lw}Mfqima?yhr zSXA?|J@&}e!IXAM;f29gXfrdu7EG4Ixxx7KRzmgukYBC(#TJUvFXYeQUB%$Z(?^cPnC+p8pO51c?z34md zCmYkaz>0mKMOAEox|zYKgmIr#(XS*$tZgy(T2B!IHUu>uli<$ggYvE>dHiZ3JCs#e zK2=kS>^ghs1vTM6R^Q(WI2vXoF}?$#c8hy)t7QC{70pI>0Cy8`Ws;cLkHiL~rlVfRN|cWrkX|9Ohuotb zyxy~g`6(E!(CP*ISp5CNZ~Oawyt|IjjvR6OH?HI}nZx^<#>(N5u=}~z!p$I&vbp^o zOeytP{T)Q@w$x04j&X&_yFd4T41|#DBw)i+Ulp>O#uB9HG9+Ka;Jy4Ci5ZlabA2yi z+%F9WXc+13MDNi~9DB0WmC0e7$Pz10g z?g`b*Wa{VoGVjbdfA;w~Z&_$kYnI&sa9|?WI{30}wtrh@4k)+VLd6!oBJ%wFZpGuQ zG1;t|0nNP(KLWkXiCOXufL#r=%swsTw0qU4l$T*OarSAqG{Y-#uEEHhKJV2MG>aWw zwi_%}*tui3vm;=Uj*&B1`YUA-7{xT&TV~fZ-pv|0`I>#54nI)4R5DQ_2WU_Fwb8$S zrbMqXMl(}fJx1>I8Ib=-L5jNh|BYOO87Yx2wR%J^x9a^lyXd8t+V0pU189p+JdgLk z)7W}LWy5apEj~j#Jf(1W^44S+-s&qCo8EkKn}SO6nrK_zh`qY-|Yr~lV)i=fn z0)PRV|Du^mvTyL?GhAbk>8lTOV^cyElvDQWXYJ-)f?`K>AIYeyMQ@+K>WIxb1r-<; zvc6w7fmH@?KWpSKhE_QRUtHytv@||z9$f!odeGVE zgncxOvw+f1T!Ze*^kvy|jSCgJC0rf8B#$^c2Ey`iV%5 zCM4LCjnwNiVzq!L-ZW^r+pAj#$M8+boU&1immE$>0i4^447)gbvih+|4c>CU`iQ_x zkL|VsvFubDLLt2HWT)us&fMll?)+yAnsM5`(Wc?OS5;#)AQ{ zf2a*xaCqnE8I3$%hM}*Int1J|b)B2h)kPC_`1z~TMAQX48SSnb>j}9Utvf}V;4bB2 zFV!0NIE{6kz7QJY!$n!eI!m^Ql*%? z-YA*RJl>(#8)_sF7_<%&9Ny}ZfsHpGe(=%J<9BqfX0O9XQ}#{#X0^2^K&>+ig=t}@ z(BL%X)F&g0hP+N?*V&Od&$XDvOE9*>wjQETVA`k`(83r}vFzJjT!ULT;cV*G?T`NE zUk0;!Cbb&6`dTc16q@B0uCWw*gpx@snULyryh|(CS2R3ut0(>FaZoxb;ysULN^Q*y zZd$mj&n8Vpp-GC(@0OdHfky!D(jI|QnpFm)hQ54^Nt1DAHd{yar6>M^CD+?>y?`&-qg*Pb@awSFt>s(__Vpsyil4}MeG4@gV)O5kFf@7odO%)cU$3|m}rC6f(whb5~U5|9qhod#dJdlbLKkUF>>a*-ZOn$ z=qE~Fy1PShW2L!t2h|aP4=8$@3Upr`4634JE-DLdlfRQ)o!&>K)!?#XB6A2EC~c%@ z6i>zYAU^JhwJZy97p67WlJ>*#5^lhR_iqxvEyxa=b<41Io1#1P@4 z*X&XzA6!OX<|2gJx9H%EL)uz_^6%cD}kRa_a3z+^|$RiQtC z5)vJ8IsHK^?SuS z$ZA<-PS2H%!>hG;s(8Ka1{s`tsfeqM)N&8RhsYaY ziVT$Fsydrnn_O_%z45}8{zbviI0(~hQA4K9Ri=<&S>%14XnKU-F@JD}pCHh?{6Bru z#s8)wJjsz!Nk*UK*BWB$5lX1Vvz>z{ForP*&|6ODt)MHg-gOgia)z87orEax@1J1l zFVAPx2*|qV3V+m>=SwRAgVjml`Efxv+kqC>qLU`wHT1OrgVNVjy5dk3^|6U7vK`p2}TEdDJAxiIO7wZ)ct9`Ylyo z*t%&5KxPk#xN=deVs8k%!_Mv^2)KaBC7?=x^@8I&l7orz$ci5S5yR?St_>!)-A~BF zhJ0hq4@ksL+?HS5E^m>&cT9Jq>rY^m^j}wY5=VtW1kPc;`+{&v5!}>7byPe?WugL5 z(**njIVdK-dDe~8!^q{8Jj64cP%rt*vI<}&oDfanm+NNGuctUwkuoQobCG$WS$pUz zgr2uGA`kgdCW?i;iO`Nr%J>GzM5N=bNg0V*+B^>&Op)W+p+s|=P6HIo!zU^ZsELrWLe~s*e3uV^}>Q5lRX}`~D zJ@oIz6kJ(@wwXh!JRYLeK!a>DhM&r(+RGHJxB9yk(%ZVEUNFGx8byES1L_?0A8;ER z4eAN1P2VE7?JI9YEywOgl;hUylV|p$ZRww8npAg5SG(MRY!P3B9vo5rLbVOrSLOlv znqckGwFCF*7ahBOM-QeY zXA{i7J&uSzgp!_gwEWKVaAG8c$x{~gIxMNbr9h3nb(ohMIYyEz&ry{8I)-pG6w4lM zGY=VOG@)VD^tjo_Rh%kqWQeu@T@wmM#e78e%hII7v}G-9r2F@OkH8AvqAN&0jIavq z*Dv1x(+K>ZEx7;Hh%Zvow)vL>_wtruSUVFgGR;5ye{0CxMF}bip6fvPa;4oF!L(-cuLR*v0Xw?SUFyiSA zkK?J<2x&GBNg% zOsb4b#$u%4IP5W-R1va`7emo~h_=!<8YcWK1tlU@4^JwIk!_%Or_r>v<94%_XFv(mmH<*FU2#xXOl4!*fC}DDfH80soF^k zg4md``4?d9*^lhC1$%eo?pn3R_L%kg>UJHe9~v%=E>6rzsVfCuPF7~xS$>eqqn?l*YH$d{xgwVg`faYEQ|?!YOv5JDI( zTp3{-Ffsh9faXrK4Zqhx0L)t~lwk7=KZpA%Mf41F=0VF)EmW`~TJVR!Eg%fUliMwDM{o!lyH8mv*rN3lREt5LZC`?*okduQgYFOzda79nt|5oc$gd z|JI85rny4eOOA#r<53egb4j0W&1*7Mpu^lbEDp15&9Q$_zW`~f}Blzy;yXc)&B zmpbnS8hAojqObs|dVwHN!uWC$`Ba^JjOpq)@JBjOD* zRuXPE#?bPO6FUcm=yq&@jZ9DTjn%5BXtft>q{(fjW%THgE86sapnn2>2b_pfUuWr# z5*ni&Ti|>hFJZ=Y&`tb>E{p+4wAh9!QYQ57yWYTI9&X^QuPSm!@s22jj;gIpubbak zNAmolR7vvqxrnpq9sKXxQocbA!VK2M%GEMs2#wX^^EBe`&KYGIxH*P3-(=={0Ood< zEBWX0D0Jra<(49om}CY`pfOh}69i)No#i?+KRz4$gk6E=p1|Kurdg11mW%amt?BQ3 z_nfUZRdGu|BvuRcYe#*2G0E%IPlhcDowH(b`4ah=oDsk4bxDW9qeQA}S$f@m`f~8U6LMbc*qLz zq2|L0=6BPUm&jsjR=NW{)tZfy#A{IbVfbWxE0BUz2Qa&Csbt%G2lZKc^6CT_aO7Koyha#Q3@s5O} zV&j_5^lQl~>+wI>BKRqDYffpDXV$9?a&wVT5PD<&Qu;T?Meh`}l<#N&U5{|{#+7iy zs@%+jc?X|M{StndjGV6u&L#$g9e1-TE~C$Hbev$)hgwxje%B8c7N%JpLRNDIC0$wC zs8bz(G>-Jb0e2FHm>_j;vWW^{lf)PajwxEOT%t4h6d}RJq_a=ADgg72)*U%Yi6jkC z^wtCF?rVp4G)U>WgB>sj)#gc7Ss>J&9$tu?$aptM&)QVk*iXvnhx6wnN}DuqZA53z zS-zW_z1~babB(S1H5j?Ll)&m>K1Q{K<=2Wk0sxIOT}vb79jrMZ_vu(7C|9FhClAfu9IU&V0fx#4!4FhWw}Tp1GG zp`@82q!J^mA$+=O(6_NnchY7l*ie2{Lwl4!WKD6nDh)t6`oJpNzH)@qc(m%Fg(*ex z`S@^OETw#CpP0eK?3UljcE(+mn#^cPGkIfKCb7u=qXvJzR&{7e7xd+eLXFh;mcI?o zn<*bW0&akb$$;L#7<_w)hiZ^N&5xajtiF1&nT=bK{@pyScvbcg-PoYXDwFz9Js2lZ z$jA~X?;d3Zqe<_{SAw5gZCrj}D_FD^rWS7vJG7sO_?bo~GM8(&TZoFqs1962Hh&MI zPkRwj1g|~&@d4Qlf;`4~Ma#-+qDjDA<0(5_BLp_;2fg4~>QE`qSarOo|?oGA4v{hmr(KZ#|N>wq?non^1e-3!|A@2B;b&H&>&^v~d9fD6vi zliy}qIaVezC6#wI**ZQT%yS3xt#pn1vAUU^x2)^(kM{RJVvzM*87FDEzQXXPxI_)Rr-PaH{HA?}%^hpb}900qYc;*qX2VsrS{ z`)?z`j{~yxcG03tu>lRH{+P3Y?O53(=+pbF6wr$(CZCjQ0&A#3D z^xGZZiSwSg5qrh{z4jVw?q`lU<`^~}D@Qdc2Ez4ZE$-<9=_x85Sk7EV&R!9ux=q@xw@@Zd+Wb7h9oog?>wbgt3UlP~4b0JVU*F zCUSI4AH2AVyz{!reu*c4LScSR9`FC+nwoB5W$k}oF-&C*Y)E%|Pim5Xz3eqqD0WkQ zct;?%Dk7fqx;jE829guPC=(hntSGUho($yKMYrsKp1~6CA5Y=6KpLzIB`lCej+Umz z1H%gAs<@ykYi$hTI)g`1ghx`W6%(4JJewso$cL%@bgD?;&eN%?j|L>hSs#90c682w2TUY$GJQQi~(D z9X7>9q*0OHj9c}X%rZtc73bR3XHO+jBXcK z%es|Nd%NVK*kN4RA2diZ0QBSr5wf$%cOX$m-i{T*CH2Fg(C}D~ki(D99C|&E|A$}{ zWRkGx?4yA$guthxE5BJuflRYe-8%mTU1fX=YbI=q8O_wVsJKu&U8JcAmW=&w0)t)l zE>Z#V23r&zX!BU$-7O8#I@yij2y2F(cGKqv-hVcNKkwt*U%o{UMZn)C8-KeI6f}1* zbhgrW_;)Ax&x2WJ+_(%fKXTBQ0d1r;Tm%h05Fwf^x1d0EL=XctdWz8mh|~f@Z%xT* zl`o+;gSY-J)iX$!KNf3T%S6e%CFXgZIhfB`iG*)T!HAQ`G zp_D92E!9bI&|J(nA-P#$LVxt|#@CpiMfsP$~vp`ebCZymLRv z1fCD-i+Re!0__?rEcSabBZjWWh9>{uIvtbmDA%+$VB_wzr{sl?eLzRe{KVirw#gdp zxr|`2rcqQ23Oq+S@O$Iw_u>b4bK1j&oj!4F7dL@H2$2&?tz#n4qt_jD-wUl$+QN)4 z-c(>hwMbFS)!${nhLUcerq)m0UH#Gl?w|jKwHbLgg7&#MS|-)r+J@x8_mC9|zVFEK zl`)@jAL9I~5B-{mp6Q0kN}k@3)+e1%TBRSfN9~*?7cI}C@z4lWL#LrsY^DI#1TjBE zQ&u5~VYRWO)|LTOD=1M|*_2dGaFOfhEv?p~gaV>GsTggpV(8cC?pw;M9z5Xjg0_T1 zZGp-y*ULe!=5kIYkxegM`mSP6l|8(HkwA_cTkU#q^9;F;TW`HF7-q6P?^yod>;k?k z6D#re%*pKAxrOU*gG$c9*vQ;a-^tkMuY!rj_)UxNA=B^|nQpojYr|60(sYr9HID_V zkdWD^Fj1gHgP%1YUBIYGn$7A((qs`@S9mo3Nu)67?b_4L&jF@%Ys9=bh{%n+7K)6{H9Wl%Liz`mOq14(ENENj|)19afmOZ>Xz8?Udi~*qJKj zMAf3b`K}JQs07%3K)sfdF4y=YYrgPa=MTpGiP}Zo*rb1wyA#_)OPr7BaaxF#qIVyQ zFCn0+*;C5|o`N?UUNuIs%OqZoSGkT&&SiUgZ^v;qS-kHZ+$xiha6LC4z);z+imv1RG^dV1cXKKFA#{?}NYa!FqF9it zR@UADD44Y02*2<@g@w1T8=7$TEu>$4w%?w(uBVrETJK&+04T8MW}`C^24dm}X$Gsn zMHq_iE-7Hzoy{2akYz2=mvaq^r^cA(>O{95C2lK_krbpX++_L_f{r2d$0@={fQ-St zo75k4QGF&Ig&5{*TwlIftd4N{Ea%R^26YA~l33c7!@6^&mj-M38yffNWtmJwo!1c4 z)~v(qRkRYM0I{ox{p0{!6m;u32kKv8HLP6>EdvaG9G9q|xn!2?23;ysP}e1?&8vvx zZJ_f!CLT!(=_1N3d;q;8Y*9Bwt)pdn<5@7u^ju>!<|OqTbV*(U=N9*v`>4PHeK%tv{>rO=#3@zcjiMK$z(R z0({?YfBR0NGuMFnW9rb~pBHo4oCQ^cNpoxVgUarU?UeseHR&GWnmV$-i+V%ZnT_w?ql*^Cc4-H z2dvJq=$x8AM~!T9@BXOXvc%AEd=0?4efWGx0(rvzSq{33Ok=uRqncnez!|L^FzkGL zp;L-om%*;D(h}w-QstI&xPIMr)X-t6Fi{wETeT8|vHqOAIc@6#KtS$r{4Sd_(s+jv z59jL*C*Y&>3A;wr@yfI2np;YjLy2mZRI6;Ejkr1_`UI_+`>S{US&tJihd3<0VRMpsEAe&#(S>sB97sHk-IjlCyG=hG_{Z} zQA>E)bHxc^?H1~!DLP(@e8lLf5&T zbfen77_-_b%v79WE6r>I97*L=LprT%Oha{DckPBoCQxQLRQVuBpY*wU$Gps8Y6nVM zLYoKddSPXKV3g+yu4W*^YR!f#D$!)dq~LXab!u@HVOzv)(^7qe8`YKnRLhpJ(7J}M zq2J(xBrgFT+$JBZceKtcAdwRi(mm1930X!#c5Jb3jac&y%SV{&DXW)I_rBsQ@bRgv zRzbI2=(n-q>kr)-9Ie7%_RC8e1blj!n5 zWbO0XtIGSjJnY)8f>&PXDYC3uN1e>~x|`aXpXxoeb)1oUOZN5h5)6>EpN1Druq%ob zr&Hj?b`gxFLP0jKV`Rijnod;5PPvR5KWV?35%V3P%6>W+?xRFV!K)KDIbQctXC*Uw zgtFS95j6j8CS+->_Ivq*&7Za7ISh~AYcjn0O+LB+Zae0K)!R++(e}ko<OELNgxw<`gl2JuYlGDWO^6{J8Neugy2&P%!Bsi*LEtaO(o zdc^EPJz+LX`WNU}ILsBBuX-6w%A2F;>Zb=oww?;(5h?f9&aQKqHj9cLRs&{*i}DJ_ zc+vCXicvp?VR4x&mb8;n8zv@hrO)Dr(3sI&CEe#X=-StgKEE1CDLHke)<|o#a5LRo zi`mQQ&sU~9%I2h8QAfnB$xq&o3YkhrK;`#__kw7X&jkg67ANP4NcB5hd^;uP~f-m|_C4K)g@8cXdw;hjNZ!m~O~k z$mP5EUMm*}uvWwP`==UK4`l_o9$X&az>N~XTMh5;V`E3y1dB=UG1~Jx+@K8(bXiucM5&X{VF<6w0N8QHZ_@?M5zSrX`Ih2??j{ zSySlw8%1NpNm2;xN=BOBs%H+)Y%8CZe$6YISw)Jhcp#d=l_@QKnnAb82JFa=%=8@r zrldTOMsR`&5Q|-y(>_L@W`n@H4>o3XZfwgs7o}-RMQ*4tZ<^&ght;b6Wy~oiJbBDA z>g55N5Il;M2dj?@KwuthAx=@>3jrrR;2b`dHT+BvduhLb@ZSaC4r;y&MrdpJ4#b^^ zkX7~ITG|ZRI`|u-7(2wP)ElH&S5N_tvVD!nzMO(BtjJn|F1ySv;=J0BYzDx#4IlS` zXJHbqs5%{)$3@e<54n2ybFvV1@JDKP$vysdS;w2!usMh<1qW;?ja>MH%_*eJa) z?@l!D9ismBm}`LYhdrmuN=W_&iLeE(%X{MG zwp>s*(j#8PIIp|jJ5>11b%&6R)81T2=1O78oj{|sZR6;|j0x!Frik%2%|sVbskt?4 z5h9|FTOb@tU$$t;5W&KJPM2VJ!6j{;iZd1UYQQVGYd4Ef>6*s^NOvP3!SJVJ3hStP zdJpz!>c@uNRPeCc3jE?t2FGLZDAcwUW9bjd`%OI{zjJrEJkrbLo}thDN(1?t};?@(eYz=|?3?oc*V&^3tR% zt+GlH_7BbJk%oLFs~+rHggarhrLajgvb+`2CjIu6D4$y3w?P@`5L0^UEM+g1+2a?k zg~vJ_W0+{RRz^R%GR#K-RrUS6#~(Ap?Cvr5U)gTD8AESY6ZfS5r-=vc+8g#7ODLv;^K7lqw6_U|{}Qt=*Z6E4Xn@C`nY~WDo3>;6g!1OPdz#|mOdqc{5 zB+C0wZ{)pSbWM>2SMke2ogIBXk&vr_nm$1>E@_=577gVNt4Y5w>SS2%UeVpg(9FTs#@ypSd-+Vobr~diWbNW+ z^Kk%)TI6c*yv|krnE^3D=%46PC`dUFC*w|R4Z!mlOqp>f$DNrsr?Fl~dYdJRgXoGc3bMhj1IR&+%@tKh||o7el9vawcgLPU8=5`({a z&>L{e@OAeZg>yf2{OOd8MwAWtFvJsb>#u`XJld*<5z;rNQdbdODw<56V*n9Hnj;JC`v#TLRD5@e^zmi{4vHp$g5atZr5{Tu@mvhI zc~FQP#8D@sQ}Jl6W{=!`+wkn{dm7Ur^0M)vZ=Ubg0^uGMdy<-m*Q;Rb47_5K{#>PSORkbgroQAdY`#Ox2@;Z-J~dpheS%L zyAAI@xTz^VQr+v0O^>_teOH0Df00v^3*6n7Vaa`KiA9GG9u>Qb_5~;_W4d@w9CO{g z6qUPB&D*!{xW}l)Mu><%t0$EwmaJ86U_59}S%t=TN4z%cTZnqSZ@ECM|evK!jZTzaSe1do)Jq?PC9$n9eWzxo|5Ot(LEyDB8a1H=f zxd`>v=jgjkTd(AvQp|j-JHEUdc`)7TX+8+5Jj&*D@liI1DF0IH@`Y+Cks9o=R)QE; zRJPrLtio&w5(ajsM#Png!Fk>Pxga9nx8G+6?cd`v(I2U(TVfN*??}c}J7BBUc})B( zIfrPxyw{c|2qVgvKAb%&V|N4-5gYWrIww=%1)$bde~W7!`52&_ZJdR5q7P^aFgLm1 zeM`0kP_#mN;N^!|p~E4-?GsT9ZWt^2GjYISu({USA$(Dw8YFjMBtsG%e&5!v@@1hU zUd*%a!7Na-U=hQ_H#v1hJGUKq?{SKxke!PVg@|bg;w?1t6&b@L<7Q8&PchN<`4@-P ze+VH$grmyBzX|t*Z-$EX?*q`??mwZIsIV^4&j-(KNmpBI(Yb9a+XM-taMN3sXo9wC*v#ztyi7j9hr?kMuif~e z&OC>sJA48ZLn!nplX9_2Jj!rURv!`gz`*&;7Z_`q_~K+e&sZy$Q&&(TZDL%) z^zjC1dVCOu$j6?1MyJ9JX+6Y?@vo})hY|@ti5lmH|G48DiYx&8B@vZc!3CI4$eE-> z#yIN!C;LdWXeP$~{cPF3*+>4r{d|>e4E}c}H-$=)vPkmi+}re*GxiBUiNOzmVKb-& zpkCo6_@vU9QWeq9D^kU197Y_5MT-8Kzx*Uwd01?;%nTOI@;sYA@gCaebD4t@nNPhl z-ZmY(mNT=vyM2Dpho5u2GGy{0GC^eYRcIX^%Ehd+XR6*|qB`9hXqX-}1WcQ;mG_$w z9Us`~^n=2n{nR2Huxh4k0#_ow=QJT|A@M7^4zs9@9QIG!Od*G-P2~DTWXr=+nKq)S z(|OejlZ7Ly=1a4jc=XzKbLYAdwtUdOi1pakjBP+2PtNP?p9XFfPJw2<44VWlnaXWv za*eovQcVf&O|p(+Ir+V5-8>oAKf*U!FLhjXy6%AITLv8n;3w~-y<2V90@FKk_~mM7 z5amB_@hxYt0u9KLdIW@O-6c&NO=6iOGudL;jC`LQBb~2x-avD{4h4^72djhdShajj zYSEWu6?KVCP2>U-VKCMM@5e-i(GnT!$-#yl(-(&ww)dk)4PyabAFXyjEK=5V7Se9% zJxe0N9sdoj)vFA=TqDKSw67lvyhWespa+&W?t(}LQ?WzY+=DwOB=(sOMLQo=JjnNK zvhxxE^;OxIS`AT8NoBnTTfEpnJ-c&7WA~-ADp`+G|IW3SC}w=KYva7Bl1_z8KSWoX zjb#nMEoT(_{6bkL!v!}2`DYdUK=$y99QKxHvK f(viV8|<)1Q_i6^T8<~L81!dx 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

oP&EDG7=|3nt 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

F+#>fR-|U5z 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 ZsZf-G1N__16?IvVF&+pM4txm&`hO2SPe1?w From f14644cec9deb44924bbe4ece9a7bdb1e9957986 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 15:54:10 +0100 Subject: [PATCH 015/191] Using Jackson from orbit --- .../definitions/race-analysis-p2-remote.target | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target index a4e7fbf9d94..4c3e16ff6e0 100644 --- a/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target +++ b/java/com.sap.sailing.targetplatform/definitions/race-analysis-p2-remote.target @@ -1,5 +1,5 @@ - + @@ -85,6 +85,11 @@ + + + + + From 3d9483df9134d5f00abdb4b0ffa6d5dc8a066a46 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 1 Dec 2016 15:54:43 +0100 Subject: [PATCH 016/191] Removed bundles form the jackson feature that should now be loaded from orbit --- .../features/target-jackson/feature.xml | 121 +++++++----------- .../jackson-annotations-2.5.0.jar | Bin 39815 -> 0 bytes .../target-jackson/jackson-core-2.5.0.jar | Bin 229685 -> 0 bytes .../target-jackson/jackson-databind-2.5.0.jar | Bin 1136338 -> 0 bytes .../jackson-jaxrs-base-2.5.0.jar | Bin 28717 -> 0 bytes .../jackson-jaxrs-json-provider-2.5.0.jar | Bin 16687 -> 0 bytes 6 files changed, 43 insertions(+), 78 deletions(-) delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-annotations-2.5.0.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-core-2.5.0.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-databind-2.5.0.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-jaxrs-base-2.5.0.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-jaxrs-json-provider-2.5.0.jar diff --git a/java/com.sap.sailing.targetplatform.base/features/target-jackson/feature.xml b/java/com.sap.sailing.targetplatform.base/features/target-jackson/feature.xml index 718b7ee89f3..abd6ab1cdf8 100644 --- a/java/com.sap.sailing.targetplatform.base/features/target-jackson/feature.xml +++ b/java/com.sap.sailing.targetplatform.base/features/target-jackson/feature.xml @@ -1,78 +1,43 @@ - - - - - Jackson libraries - - - - NA. - - - - - - - - - - - - - - - - - - - - - + + + + + Jackson libraries + + + + NA. + + + + + + + + + + + diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-annotations-2.5.0.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-annotations-2.5.0.jar deleted file mode 100644 index 62521310a6a36445da887bd21d6f5acdbdcdd695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39815 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 MOh6)m@6C7r54;7xLjV8( diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-core-2.5.0.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-jackson/jackson-core-2.5.0.jar deleted file mode 100644 index e8ca122f7d814117876e09f1e17db171bb4d970d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229685 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 z 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

November 2016

From 8559a890179a3792016aaac63db5211a785b4a1e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 30 Dec 2016 18:11:34 +0100 Subject: [PATCH 082/191] count progress while restoring races; expose as JMX bean attributes Change-Id: I4ba11ecd761f6acae724a626ca043271ae38c3a5 --- .../persistence/DomainObjectFactory.java | 22 ++++++++------- .../impl/DomainObjectFactoryImpl.java | 5 +++- .../sailing/server/RacingEventService.java | 16 +++++++++++ .../server/RacingEventServiceMXBean.java | 2 ++ .../server/impl/RacingEventServiceImpl.java | 25 ++++++++++++++---- .../impl/RacingEventServiceMXBeanImpl.java | 10 +++++++ .../JConsoleNumberOfTrackedRacesRestored.png | Bin 0 -> 38276 bytes .../JConsoleNumberOfTrackedRacesToRestore.png | Bin 0 -> 38451 bytes .../release_notes_admin.html | 8 +++++- .../sse/common/TypeBasedServiceFinder.java | 3 ++- 10 files changed, 74 insertions(+), 17 deletions(-) create mode 100644 java/com.sap.sailing.www/images/JConsoleNumberOfTrackedRacesRestored.png create mode 100644 java/com.sap.sailing.www/images/JConsoleNumberOfTrackedRacesToRestore.png diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java index afe57752b58..751457a70e2 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java @@ -155,18 +155,22 @@ public interface DomainObjectFactory { * {@link TrackedRegatta#getTrackedRace(RaceDefinition)}. * * @param callback - * invoked for each connectivity params object successfully resolved; this pattern is preferred over - * a non-{@code void} return type because resolving the connectivity parameters objects itself happens + * invoked for each connectivity params object successfully resolved; this pattern is preferred over a + * non-{@code void} return type because resolving the connectivity parameters objects itself happens * through a callback pattern that may be triggered asynchronously by the services for handling the - * respective parameter types becoming available only later. For example, during the OSGi startup - * phase, when the {@code RacingEventService} is launched, not all persistence bundles will have run - * their activators; some may even depend on the {@code RacingEventService} and therefore won't start - * their activators before the activator of {@code RacingEventService} has completed. This would - * either result in a {@link NoCorrespondingServiceRegisteredException} or would have to be handled - * by not treating those connectivity parameter objects which defeats the whole purpose of this method. + * respective parameter types becoming available only later. For example, during the OSGi startup phase, + * when the {@code RacingEventService} is launched, not all persistence bundles will have run their + * activators; some may even depend on the {@code RacingEventService} and therefore won't start their + * activators before the activator of {@code RacingEventService} has completed. This would either result + * in a {@link NoCorrespondingServiceRegisteredException} or would have to be handled by not treating + * those connectivity parameter objects which defeats the whole purpose of this method. + * @return the number of connectivity parameter objects found in the database; callers may use this to understand + * the progress with the {@code callback} invocations of which eventually there should be this many, at + * least if all handlers have ultimately become available. * * @see MongoObjectFactory#addConnectivityParametersForRaceToRestore(RaceTrackingConnectivityParameters) * @see MongoObjectFactory#removeConnectivityParametersForRaceToRestore(RaceTrackingConnectivityParameters) */ - void loadConnectivityParametersForRacesToRestore(Consumer callback) throws MalformedURLException, URISyntaxException; + int loadConnectivityParametersForRacesToRestore(Consumer callback) + throws MalformedURLException, URISyntaxException; } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index 334fb4e0aae..cdce9ed5653 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -2285,9 +2285,11 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } @Override - public void loadConnectivityParametersForRacesToRestore(Consumer callback) throws MalformedURLException, URISyntaxException { + public int loadConnectivityParametersForRacesToRestore(Consumer callback) throws MalformedURLException, URISyntaxException { final DBCollection collection = database.getCollection(CollectionNames.CONNECTIVITY_PARAMS_FOR_RACES_TO_BE_RESTORED.name()); + int count = 0; for (final DBObject o : collection.find()) { + count++; final String type = (String) o.get(TypeBasedServiceFinder.TYPE); raceTrackingConnectivityParamsServiceFinder.applyServiceWhenAvailable(type, connectivityParamsPersistenceService -> { final Map map = new HashMap<>(); @@ -2304,5 +2306,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { } }); } + return count; } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index ff02becd191..6596ebe725d 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -639,4 +639,20 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch * yet, the given callback will be informed asynchronously on registration of the RaceTracker in question. */ void getRaceTrackerByRegattaAndRaceIdentifier(RegattaAndRaceIdentifier raceIdentifier, Consumer callback); + + /** + * When restoring tracked races was requested upon creation of this service and after the corresponding restore records + * were read from the persistent store, this method returns the number of races to be restored. Otherwise, it returns 0. + * + * @see #getNumberOfTrackedRacesRestored() + */ + int getNumberOfTrackedRacesToRestore(); + + /** + * When restoring tracked races was requested upon creation of this service, this method tells the number of races + * whose loading process has already been triggered. Otherwise, it returns 0. + * + * @see #getNumberOfTrackedRacesToRestore() + */ + int getNumberOfTrackedRacesRestored(); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceMXBean.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceMXBean.java index 4d251c924c7..a7399bf3b8c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceMXBean.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventServiceMXBean.java @@ -9,4 +9,6 @@ package com.sap.sailing.server; */ public interface RacingEventServiceMXBean { public int getNumberOfLeaderboards(); + public int getNumberOfTrackedRacesToRestore(); + public int getNumberOfTrackedRacesRestored(); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 7f1056b8620..878cba359df 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -32,6 +32,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import java.util.function.Function; import java.util.logging.Level; @@ -439,6 +440,10 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes private final TrackedRegattaListener trackedRegattaListener; + private int numberOfTrackedRacesToRestore; + + private final AtomicInteger numberOfTrackedRacesRestored; + private transient final ConcurrentHashMap scoreCorrectionListenersByLeaderboard; private transient final ConcurrentHashMap connectivityParametersByRace; @@ -569,6 +574,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes final WindStore windStore, final SensorFixStore sensorFixStore, TypeBasedServiceFinderFactory serviceFinderFactory, TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService, boolean restoreTrackedRaces) { logger.info("Created " + this); + this.numberOfTrackedRacesRestored = new AtomicInteger(); this.scoreCorrectionListenersByLeaderboard = new ConcurrentHashMap<>(); this.connectivityParametersByRace = new ConcurrentHashMap<>(); this.notificationService = sailingNotificationService; @@ -606,15 +612,13 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes regattaTrackingCache = new ConcurrentHashMap<>(); regattaTrackingCacheLock = new NamedReentrantReadWriteLock("regattaTrackingCache for " + this, /* fair */false); raceTrackersByRegatta = new ConcurrentHashMap<>(); - raceTrackersByRegattaLock = new NamedReentrantReadWriteLock("raceTrackersByRegatta for " + this, /* fair */ - false); + raceTrackersByRegattaLock = new NamedReentrantReadWriteLock("raceTrackersByRegatta for " + this, /* fair */false); raceTrackersByID = new ConcurrentHashMap<>(); raceTrackersByIDLocks = new ConcurrentHashMap<>(); raceTrackerCallbacks = new ConcurrentHashMap<>(); leaderboardGroupsByName = new ConcurrentHashMap<>(); leaderboardGroupsByID = new ConcurrentHashMap<>(); - leaderboardGroupsByNameLock = new NamedReentrantReadWriteLock("leaderboardGroupsByName for " + this, /* fair */ - false); + leaderboardGroupsByNameLock = new NamedReentrantReadWriteLock("leaderboardGroupsByName for " + this, /* fair */false); leaderboardsByName = new ConcurrentHashMap(); leaderboardsByNameLock = new NamedReentrantReadWriteLock("leaderboardsByName for " + this, /* fair */false); operationExecutionListeners = new ConcurrentHashMap<>(); @@ -663,10 +667,11 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes private void restoreTrackedRaces() { final ScheduledExecutorService backgroundExecutor = ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor(); try { - getDomainObjectFactory().loadConnectivityParametersForRacesToRestore(params -> { + numberOfTrackedRacesToRestore = getDomainObjectFactory().loadConnectivityParametersForRacesToRestore(params -> { backgroundExecutor.execute(()->{ try { addRace(/* addToRegatta==null means "default regatta" */ null, params, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS); + numberOfTrackedRacesRestored.incrementAndGet(); } catch (Exception e) { logger.log(Level.SEVERE, "Exception trying to restore race"+params, e); } @@ -3676,4 +3681,14 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes } } + + @Override + public int getNumberOfTrackedRacesToRestore() { + return numberOfTrackedRacesToRestore; + } + + @Override + public int getNumberOfTrackedRacesRestored() { + return numberOfTrackedRacesRestored.get(); + } } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceMXBeanImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceMXBeanImpl.java index ccfff914913..39baae70ae6 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceMXBeanImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceMXBeanImpl.java @@ -19,4 +19,14 @@ public class RacingEventServiceMXBeanImpl implements RacingEventServiceMXBean { public int getNumberOfLeaderboards() { return getRacingEventService().getLeaderboards().size(); } + + @Override + public int getNumberOfTrackedRacesToRestore() { + return getRacingEventService().getNumberOfTrackedRacesToRestore(); + } + + @Override + public int getNumberOfTrackedRacesRestored() { + return getRacingEventService().getNumberOfTrackedRacesRestored(); + } } diff --git a/java/com.sap.sailing.www/images/JConsoleNumberOfTrackedRacesRestored.png b/java/com.sap.sailing.www/images/JConsoleNumberOfTrackedRacesRestored.png new file mode 100644 index 0000000000000000000000000000000000000000..b8dee7f697f8e21462cc0f4f08717a3f789877c9 GIT binary patch literal 38276 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 NqMV9szVz(}{|9n*&V=t#!`kx&H! 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 + The restore progress can be monitored using the JConsole or any other JMX monitoring tool. In the + com.sap.sailing category you will find the RacingEventService object. Among its + attributes there are now the two new ones: NumberOfTrackedRacesToRestore and + NumberOfTrackedRacesRestored. See the following two screen shots:

+

+ diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/TypeBasedServiceFinder.java b/java/com.sap.sse.common/src/com/sap/sse/common/TypeBasedServiceFinder.java index 3b722a4303c..94fd620cd0b 100644 --- a/java/com.sap.sse.common/src/com/sap/sse/common/TypeBasedServiceFinder.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/TypeBasedServiceFinder.java @@ -43,7 +43,8 @@ public interface TypeBasedServiceFinder { * found. If the service is not found, instead of throwing a {@link NoCorrespondingServiceRegisteredException}, * the {@code callback} is recorded by this finder; when at a later point in time a service with {@code type} * becomes available, all callbacks recorded this way will be {@link Callback#withService(Object) invoked} - * with the service that became available. + * with the service that became available. The method returns immediately after recording the callback in + * this case. */ void applyServiceWhenAvailable(String type, Callback callback); From 9b826652fc8986e2012a3a3f9014420830c8f117 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 30 Dec 2016 18:12:33 +0100 Subject: [PATCH 083/191] use https instead of http as default protocol for the default www.sapsailing.com value for master data import Change-Id: Id332c21f047611ad6a57b36f7395ac9280f53a38 --- .../sailing/gwt/ui/masterdataimport/MasterDataImportPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/masterdataimport/MasterDataImportPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/masterdataimport/MasterDataImportPanel.java index ec91acc62f1..2003f3ee495 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/masterdataimport/MasterDataImportPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/masterdataimport/MasterDataImportPanel.java @@ -71,7 +71,7 @@ public class MasterDataImportPanel extends VerticalPanel { HorizontalPanel serverAddressPanel = new HorizontalPanel(); serverAddressPanel.add(new Label(stringMessages.importRemoteHost())); hostBox = new TextBox(); - hostBox.setText("http://www.sapsailing.com/"); + hostBox.setText("https://www.sapsailing.com/"); hostBox.setWidth("300px"); serverAddressPanel.add(hostBox); fetchIdsButton = new Button(stringMessages.importFetchRemoteLgs()); From a7974cc00f1f05b00d560c77feb8df9f1ba390d4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 30 Dec 2016 18:14:53 +0100 Subject: [PATCH 084/191] added missing file AbstractRaceTrackingConnectivityParametersHandler.java Change-Id: I67f789473c0d92e710040abd16c11f58e74a2e48 --- ...TrackingConnectivityParametersHandler.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceTrackingConnectivityParametersHandler.java diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceTrackingConnectivityParametersHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceTrackingConnectivityParametersHandler.java new file mode 100644 index 00000000000..447873b891b --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceTrackingConnectivityParametersHandler.java @@ -0,0 +1,25 @@ +package com.sap.sailing.domain.tracking.impl; + +import java.util.Map; + +import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; +import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParametersHandler; + +public abstract class AbstractRaceTrackingConnectivityParametersHandler + implements RaceTrackingConnectivityParametersHandler { + private static final String CORRECT_WIND_DIRECTION_BY_MAGNETIC_DECLINATION = "correctWindDirectionByMagneticDeclination"; + private static final String TRACK_WIND = "trackWind"; + + protected void addWindTrackingParameters(RaceTrackingConnectivityParameters params, Map map) { + map.put(TRACK_WIND, params.isTrackWind()); + map.put(CORRECT_WIND_DIRECTION_BY_MAGNETIC_DECLINATION, params.isCorrectWindDirectionByMagneticDeclination()); + } + + protected boolean isTrackWind(Map from) { + return from.containsKey(TRACK_WIND) ? (Boolean) from.get(TRACK_WIND) : false; + } + + protected boolean isCorrectWindDirectionByMagneticDeclination(Map from) { + return from.containsKey(CORRECT_WIND_DIRECTION_BY_MAGNETIC_DECLINATION) ? (Boolean) from.get(CORRECT_WIND_DIRECTION_BY_MAGNETIC_DECLINATION) : true; + } +} From 94d23f021904066f9a9b8b4693ac2f489f2a223e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 31 Dec 2016 00:54:52 +0100 Subject: [PATCH 085/191] making removal of connectivity params from DB resilient against unset service finder --- .../SailingDashboardsGWT sdm.launch | 92 +++++------ .../SailingDashboardsGWT.launch | 90 +++++----- .../impl/MongoObjectFactoryImpl.java | 21 ++- .../SailingGWT sdm.launch | 156 +++++++++--------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 150 ++++++++--------- .../Security UI sdm.launch | 108 ++++++------ .../Security UI.launch | 106 ++++++------ 7 files changed, 364 insertions(+), 359 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch index f7d00da3fd0..c2d9abb8f9c 100644 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch @@ -1,46 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch index 25eb0c93742..f1fab25cd8b 100644 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch @@ -1,45 +1,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index fe07ad934b4..54bbdb16a17 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -1524,15 +1524,20 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { @Override public void removeConnectivityParametersForRaceToRestore(RaceTrackingConnectivityParameters params) { - final String typeIdentifier = params.getTypeIdentifier(); - final RaceTrackingConnectivityParametersHandler paramsPersistenceService = raceTrackingConnectivityParamsServiceFinder.findService(typeIdentifier); - if (paramsPersistenceService != null) { - final DBCollection collection = database.getCollection(CollectionNames.CONNECTIVITY_PARAMS_FOR_RACES_TO_BE_RESTORED.name()); - DBObject key = new BasicDBObject(); - key.putAll(paramsPersistenceService.getKey(params)); - collection.remove(key, WriteConcern.SAFE); + if (raceTrackingConnectivityParamsServiceFinder != null) { + final String typeIdentifier = params.getTypeIdentifier(); + final RaceTrackingConnectivityParametersHandler paramsPersistenceService = raceTrackingConnectivityParamsServiceFinder.findService(typeIdentifier); + if (paramsPersistenceService != null) { + final DBCollection collection = database.getCollection(CollectionNames.CONNECTIVITY_PARAMS_FOR_RACES_TO_BE_RESTORED.name()); + DBObject key = new BasicDBObject(); + key.putAll(paramsPersistenceService.getKey(params)); + collection.remove(key, WriteConcern.SAFE); + } else { + logger.warning("Couldn't find a persistence service for connectivity parameters of type "+typeIdentifier); + } } else { - logger.warning("Couldn't find a persistence service for connectivity parameters of type "+typeIdentifier); + logger.warning("No connectivity parameters service finder set; unable to remove connectivity parameters from persistent store for " + + params + " of type " + params.getTypeIdentifier()); } } diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 4c3271a52ac..4a15fa5eb4b 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -1,78 +1,78 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 0c4449938c3..05d195e0e53 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.security.ui/Security UI sdm.launch b/java/com.sap.sse.security.ui/Security UI sdm.launch index 42497e6bbf2..d3848dc2ec0 100644 --- a/java/com.sap.sse.security.ui/Security UI sdm.launch +++ b/java/com.sap.sse.security.ui/Security UI sdm.launch @@ -1,54 +1,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.security.ui/Security UI.launch b/java/com.sap.sse.security.ui/Security UI.launch index 0262bee9a54..92bac81c128 100644 --- a/java/com.sap.sse.security.ui/Security UI.launch +++ b/java/com.sap.sse.security.ui/Security UI.launch @@ -1,53 +1,53 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a1e6e9cd441cac48418bbabc9886366182acd3e5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 31 Dec 2016 01:25:13 +0100 Subject: [PATCH 086/191] adjusted tests according to simplification of RaceTracker to only one race per tracker --- .../sailing/server/test/RaceTrackerMock.java | 4 +-- .../server/test/RaceTrackerStartStopTest.java | 30 ++++++++----------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerMock.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerMock.java index ca86a94251f..ba93c62c113 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerMock.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerMock.java @@ -31,11 +31,11 @@ public class RaceTrackerMock extends AbstractRaceTrackerBaseImpl { this.isTracking = isTracking; } - public void setIsTracking(boolean isTracking){ + public void setIsTracking(boolean isTracking) { this.isTracking = isTracking; } - public boolean getIsTracking(){ + public boolean getIsTracking() { return isTracking; } diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerStartStopTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerStartStopTest.java index d9a6b62e54d..3153eec6445 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerStartStopTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/RaceTrackerStartStopTest.java @@ -11,8 +11,8 @@ import static org.mockito.Mockito.mock; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.UUID; @@ -42,6 +42,7 @@ import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.testsupport.RacingEventServiceImplMock; +import com.sap.sse.common.Util; public class RaceTrackerStartStopTest { @@ -93,12 +94,6 @@ public class RaceTrackerStartStopTest { /* windStore */ EmptyWindStore.INSTANCE, /* delayToLiveInMillis */ 0l, /* millisecondsOverWhichToAverageWind */ 0l, /* millisecondsOverWhichToAverageSpeed */ 0l, /* raceDefinitionSetToUpdate */ null, /*useMarkPassingCalculator*/ false, mock(RaceLogResolver.class)); - Set raceDefinitionSetRace1 = new HashSet(); - raceDefinitionSetRace1.add(raceDef1); - Set raceDefinitionSetRace2 = new HashSet(); - raceDefinitionSetRace2.add(raceDef2); - Set raceDefinitionSetRace3 = new HashSet(); - raceDefinitionSetRace3.add(raceDef3); Long trackerID1 = new Long(1); Long trackerID2 = new Long(2); Long trackerID3 = new Long(3); @@ -115,7 +110,7 @@ public class RaceTrackerStartStopTest { } /** - * This test method tests, if the {@link RacingEventService#stopTracking(Regatta, RaceDefinition) stopTracking} method works correctly. + * This test method tests if the {@link RacingEventService#stopTracking(Regatta, RaceDefinition) stopTracking} method works correctly. */ @Test public void testStopTrackingRace() throws MalformedURLException, IOException, InterruptedException { @@ -139,21 +134,21 @@ public class RaceTrackerStartStopTest { trackedRegatta.unlockTrackedRacesAfterRead(); } assertTrue(foundTrackedRaceForRaceDef2); - // The raceTracker2 and raceTracker3 should currently not be in track mode. + // The raceTracker2 should no longer be in track mode: assertTrue(raceTracker1.getIsTracking()); assertFalse(raceTracker2.getIsTracking()); - assertFalse(raceTracker3.getIsTracking()); + assertTrue(raceTracker3.getIsTracking()); // The RaceTrackersByID map should not contain the trackers raceTracker2 and raceTracker3 anymore assertTrue(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker1)); assertFalse(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker2)); - assertFalse(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker3)); - // The RaceTrakcersByEvent map should contain a tracker with a set of RaceDefinitions, containing the + assertTrue(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker3)); + // The RaceTrackersByEvent map should contain a tracker with a set of RaceDefinitions, containing the // raceDefinition1 assertEquals(1, racingEventService.getRaceTrackersByRegattaMap().size()); Iterator raceTrackerIter = racingEventService.getRaceTrackersByRegattaMap().get(regatta).iterator(); while (raceTrackerIter.hasNext()) { RaceTracker currentTracker = raceTrackerIter.next(); - assertSame(raceTracker1, currentTracker); + assertTrue(Util.contains(Arrays.asList(raceTracker1, raceTracker3), currentTracker)); } } @@ -182,13 +177,14 @@ public class RaceTrackerStartStopTest { trackedRegatta.unlockTrackedRacesAfterRead(); } assertFalse(foundTrackedRaceForRaceDef2); - // The trackers map should still contain the raceTrackers + // The trackers map should still contain the raceTrackers, except for raceTracker2 which should + // have been removed because the race named RACENAME2 was removed, hopefully together with its tracker... assertTrue(racingEventService.getRaceTrackersByRegattaMap().get(regatta).contains(raceTracker1)); - assertTrue(racingEventService.getRaceTrackersByRegattaMap().get(regatta).contains(raceTracker2)); + assertFalse(racingEventService.getRaceTrackersByRegattaMap().get(regatta).contains(raceTracker2)); assertTrue(racingEventService.getRaceTrackersByRegattaMap().get(regatta).contains(raceTracker3)); - // The raceTrackerMap should still contain the raceTrackers. These raceTracker should not contain the raceDefinition raceDef2 anymore + // The raceTrackerMap should still contain the raceTrackers, except the one for race 2 which was removed. assertTrue(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker1)); - assertTrue(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker2)); + assertFalse(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker2)); assertTrue(racingEventService.getRaceTrackersByIDMap().containsValue(raceTracker3)); // The raceTracker should still exist; it shall still contain raceDef1 and raceDef2 because a tracker keeps tracking what it tracks... assertSame(raceTracker1.getRace(), raceDef1); From 96c3e22ca3d8348208609ab059bfd01e47e79510 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 1 Jan 2017 16:35:14 +0100 Subject: [PATCH 087/191] added alias names for Olympic Summar Games 2012 SwissTiming archived races Change-Id: I54e69fc0b3009be489782adf8dd661131a9e07eb --- .../com/sap/sailing/domain/common/BoatClassMasterdata.java | 4 ++-- .../gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java | 2 +- .../gwt/ui/adminconsole/TracTracEventManagementPanel.java | 2 -- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java index 0bf539a6b6a..dbfc53adde6 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java @@ -16,7 +16,7 @@ public enum BoatClassMasterdata { _49ER ("49er", true, 4.88, 1.93, BoatHullType.MONOHULL, true), _49ERFX ("49erFX", true, 4.88, 1.93, BoatHullType.MONOHULL, true, "49FX"), _420 ("420", true, 4.20, 1.65, BoatHullType.MONOHULL, true, "420er", "420M", "420W"), - _470 ("470", true, 4.70, 1.68, BoatHullType.MONOHULL, true, "470er", "470M", "470W"), + _470 ("470", true, 4.70, 1.68, BoatHullType.MONOHULL, true, "470er", "470M", "470W", "470 - M", "470 - W"), _5O5 ("5O5", true, 5.03, 1.88, BoatHullType.MONOHULL, true, "505", "5o5", "505er", "5o5er"), _5_5MR ("5.5mR", true, 9.50, 1.92, BoatHullType.MONOHULL, true, "5.5 Meter", "5.5 Metre", "5.5", "5.5M", "5.5-metre", "5.5 metre"), A_CAT ("A-Catamaran", true, 5.49, 2.30, BoatHullType.CATAMARAN, false, "A-Cat", "ACat", "A-Class Catamaran"), @@ -85,7 +85,7 @@ public enum BoatClassMasterdata { RS500 ("RS 500", true, 4.34, 1.58, BoatHullType.MONOHULL, true, "RS500", "RS_500"), RS800 ("RS 800", true, 4.80, 1.88, BoatHullType.MONOHULL, true, "RS800", "RS_800"), RS_AERO ("RS Aero", true, 4.00, 1.40, BoatHullType.MONOHULL, false, "RSAERO", "RS_Aero"), - RS_X ("RS:X", true, 2.86, 0.93, BoatHullType.SURFERBOARD, false, "RS-X", "RSX", "RS:X"), + RS_X ("RS:X", true, 2.86, 0.93, BoatHullType.SURFERBOARD, false, "RS-X", "RSX", "RS:X", "RS:X Men", "RS:X Woman"), RS_FEVA ("RS Feva", true, 3.64, 1.42, BoatHullType.MONOHULL, true, "RSFeva"), SONAR ("Sonar", true, 7.01, 2.39, BoatHullType.MONOHULL, true), SOLING ("Soling", true, 8.15, 1.91, BoatHullType.MONOHULL, true), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java index afcb3c08683..0a1e5326b1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java @@ -196,7 +196,7 @@ public class SwissTimingReplayConnectorPanel extends AbstractEventManagementPane @Override public List getSearchableStrings(SwissTimingReplayRaceDTO t) { List strings = new ArrayList(); - strings.addAll(Arrays.asList(t.boat_class, t.flight_number, t.getName(), t.race_id, t.rsc)); + strings.addAll(Arrays.asList(t.boat_class, t.flight_number, t.getName(), t.rsc)); return strings; } }; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java index 7b921543829..1e12553c092 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java @@ -455,12 +455,10 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { private String getBoatClassNamesAsString(TracTracRaceRecordDTO object) { StringBuilder boatClassNames = new StringBuilder(); - for (String boatClassName : object.boatClassNames) { boatClassNames.append(boatClassName); boatClassNames.append(", "); } - return boatClassNames.substring(0, boatClassNames.length() - 2); } From 8c908f2913a0cff62ee77d337980112bd8c33891 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Mon, 2 Jan 2017 12:00:26 +0100 Subject: [PATCH 088/191] exclude HDPI phone devices from new layout (e.g. Samsung Galaxy S4 Mini) --- .../app/ui/fragments/raceinfo/RaceSummaryFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java index aef4b157af9..80ff797ccb7 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/RaceSummaryFragment.java @@ -43,8 +43,9 @@ public class RaceSummaryFragment extends BaseFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + final AppUtils appUtils = AppUtils.with(inflater.getContext()); final int resId; - if (AppUtils.with(inflater.getContext()).isPhone() && getResources().getConfiguration().fontScale > 1) { + if (appUtils.isPhone() && getResources().getConfiguration().fontScale > 1 && !appUtils.isHDPI()) { resId = R.layout.race_summary_large_font; } else { resId = R.layout.race_summary_normal; From ef5454ff8da4cdd3a11cd55300b5c3a80b27c36a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 2 Jan 2017 16:23:51 +0100 Subject: [PATCH 089/191] be more lenient when splitting keyword strings (ignore unclosed phrases, take trailing backslash as itself) Change-Id: Ie01cbdc0f1afd8c3dd949d8f6a0f39de409631a3 --- .../sse/common/test/SplittingStringsTest.java | 39 ++++++++ .../src/com/sap/sse/common/Util.java | 94 +++++++++++++++++++ .../panels/AbstractFilterablePanel.java | 6 +- 3 files changed, 136 insertions(+), 3 deletions(-) create mode 100755 java/com.sap.sse.common.test/src/com/sap/sse/common/test/SplittingStringsTest.java mode change 100644 => 100755 java/com.sap.sse.common/src/com/sap/sse/common/Util.java diff --git a/java/com.sap.sse.common.test/src/com/sap/sse/common/test/SplittingStringsTest.java b/java/com.sap.sse.common.test/src/com/sap/sse/common/test/SplittingStringsTest.java new file mode 100755 index 00000000000..bc249c98173 --- /dev/null +++ b/java/com.sap.sse.common.test/src/com/sap/sse/common/test/SplittingStringsTest.java @@ -0,0 +1,39 @@ +package com.sap.sse.common.test; + +import static com.sap.sse.common.Util.isEmpty; +import static com.sap.sse.common.Util.splitAlongWhitespaceRespectingDoubleQuotedPhrases; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; + +import org.junit.Test; + +import com.sap.sse.common.Util; + +/** + * Tests {@link Util#splitAlongWhitespaceRespectingDoubleQuotedPhrases(String)} + * + * @author Axel Uhl (d043530) + * + */ +public class SplittingStringsTest { + @Test + public void testSimpleSplit() { + assertNull(splitAlongWhitespaceRespectingDoubleQuotedPhrases(null)); + assertEquals(Arrays.asList("a", "b", "c"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a b c")); + assertEquals(Arrays.asList("a", "b c"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"b c\"")); + assertEquals(Arrays.asList("a", "b \" c"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"b \\\" c\"")); + assertEquals(Arrays.asList("a", "bc", "de"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"bc\"de")); + assertEquals(Arrays.asList("a", "bc", "de"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a\"bc\"de ")); + assertEquals(Arrays.asList("a", "b \" c"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"b \\\" c\"")); + assertEquals(Arrays.asList(" "), splitAlongWhitespaceRespectingDoubleQuotedPhrases("\\ ")); + assertEquals(Arrays.asList("\""), splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \\\"")); + assertEquals(Arrays.asList(" \\"), splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \\ \\\\ ")); + assertTrue(isEmpty(splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \n\t "))); + assertEquals(Arrays.asList("abc"), splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \"abc")); // ignore unterminated quote + assertEquals(Arrays.asList("abc "), splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \"abc ")); // ignore unterminated quote + assertEquals(Arrays.asList("afd", "fsd", "fd\\"), splitAlongWhitespaceRespectingDoubleQuotedPhrases("afd fsd fd\\")); // trailing escape character stands for itself + } +} diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java old mode 100644 new mode 100755 index 0c4b4de0a66..91de6166cbb --- a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import com.google.gwt.thirdparty.guava.common.base.Strings; import com.sap.sse.common.util.NaturalComparator; @@ -450,6 +451,99 @@ public class Util { return join(separator, strings); } + /** + * Splits {@code s} along whitespace (blank, tab, line feed, carriage return, form feed) characters that are not + * within a phrase. Phrases are enclosed by double quotes ({@code "}). To make a double quote or any other + * character part of a {@link String} in the result, a backslash ({@code \}) must precede the double quote as an escape character. With this, + * a {@code \} character or a whitespace character can become part of the split result by escaping it with a {@code \} character. If {@code s}'s last character + * happens to be the (unescaped) escape character it stands for itself. + * + * A double quote {@code "} in the middle of an unquoted phrase marks the beginning of a new quoted phrase. When occurring unescaped in + * a quoted phrase, it marks the end of that quoted phrase, and a new unquoted phrase starts. + *

+ * + * The following example expressions all evaluate to {@code true}: + * + *

+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("a b c")}.equals(Arrays.asList("a", "b", "c"))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"b c\"")}.equals(Arrays.asList("a", "b c"))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"b \\\" c\"")}.equals(Arrays.asList("a", "b \" c"))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("a \"bc\"de")}.equals(Arrays.asList("a", "bc", "de"))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("a\"bc\" de")}.equals(Arrays.asList("a", "bc", "de"))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("\\ ")}.equals(Arrays.asList(" "))
+     * {@link #splitAlongWhitespaceRespectingDoubleQuotedPhrases(String) splitAlongWhitespaceRespectingDoubleQuotedPhrases("  \\ \\\\ ")}.equals(Arrays.asList(" \\"))
+     * {@link #isEmpty(Iterable) isEmpty(splitAlongWhitespaceRespectingDoubleQuotedPhrases(" \n\t  "))
+     * 
+ * + * @return if {@code s==null}, then {@code null}, else a non-{@code null} but possibly empty sequence of {@link Strings} whose iteration order corresponds with + * the occurrence of the split results, left to right, in {@code s} + */ + public static Iterable splitAlongWhitespaceRespectingDoubleQuotedPhrases(String s) { + final char ESCAPE_CHARACTER = '\\'; + final List result; + if (s == null) { + result = null; + } else { + result = new ArrayList<>(); + boolean escaped = false; + StringBuilder phrase = null; + boolean inQuotedPhrase = false; + for (final char c : s.toCharArray()) { + if (escaped) { + if (phrase == null) { + phrase = new StringBuilder(); + } + phrase.append(c); + escaped = false; + } else if (c == ESCAPE_CHARACTER) { + escaped = true; // don't append but mark for next character to be appended + } else if (c == '"') { + if (inQuotedPhrase) { + result.add(phrase.toString()); + inQuotedPhrase = false; + phrase = null; + } else { + inQuotedPhrase = true; + if (phrase != null) { // starts a quoted phrase in the middle of a running phrase + result.add(phrase.toString()); + } + phrase = new StringBuilder(); + } + } else { + if (inQuotedPhrase) { + phrase.append(c); + } else { + if (new String(new char[] {c}).matches("\\s")) { // whitespace + if (phrase != null) { + // phrase is terminated by this whitespace + result.add(phrase.toString()); + phrase = null; + } // else skip whitespace outside of phrases + } else { + if (phrase == null) { + phrase = new StringBuilder(); + } + phrase.append(c); + } + } + } + } + if (escaped) { + // escape character as last character stands for itself + if (phrase == null) { + phrase = new StringBuilder(); + } + phrase.append(ESCAPE_CHARACTER); + } + if (phrase != null) { + // a phrase is also terminated by the end of the string, also (lenient mode) if + // within an (unterminated) quoted phrase + result.add(phrase.toString()); + } + } + return result; + } + /** * Returns the first non-null object in objects or null * if no such object exists. diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java index 48c9da24ca4..f1ee5267bb8 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/panels/AbstractFilterablePanel.java @@ -1,7 +1,6 @@ package com.sap.sse.gwt.client.panels; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -13,6 +12,7 @@ import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.ColumnSortEvent; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.view.client.ListDataProvider; import com.sap.sse.common.Util; @@ -177,7 +177,7 @@ public abstract class AbstractFilterablePanel extends HorizontalPanel { public void filter() { filtered.getList().clear(); retainElementsInFilteredThatPassFilter(); - filtered.refresh(); + filtered.flush(); sort(); } @@ -211,7 +211,7 @@ public abstract class AbstractFilterablePanel extends HorizontalPanel { getTextBox().addKeyUpHandler(new KeyUpHandler() { @Override public void onKeyUp(KeyUpEvent event) { - filterer.setKeywords(Arrays.asList(getTextBox().getText().split(" "))); + filterer.setKeywords(Util.splitAlongWhitespaceRespectingDoubleQuotedPhrases(getTextBox().getText())); filter(); } }); From 23922b7181582b57cc3ce608902be054b784b692 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 2 Jan 2017 16:33:13 +0100 Subject: [PATCH 090/191] added release notes for phrase filter/search Change-Id: Iaa633ee238090b28221353fec21127fc23b2c0de --- java/com.sap.sailing.www/release_notes_admin.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index df526a35e0c..07355cda68a 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -23,6 +23,16 @@

Release Notes - Administration Console

+

December 2016

+
    +
  • Filter boxes now support quoting phrases, such as "Race 2" to make them a single search term. + Previously, when entering Race 2 this would match all lines containing Race as well + as all lines containing the digit 2, such as it occurs in 2015 or 2016. + Enclosing the phrase with double quotes as in "Race 2" will consider the full string in quotes + as a search term. In the unlikely case of searching for a double quote you can do that by prefixing + the double quote with a backslash character, as in \". +
  • +

December 2016

  • Partial replication is now possible. If the system property replicate.on.start From ad75744dc21c3745bb419bf457f2b63d34b05ad5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 2 Jan 2017 17:16:07 +0100 Subject: [PATCH 091/191] removed offending import in Util Change-Id: Id97a62b9cda920fd79f62b2578d43fc921937469 --- java/com.sap.sse.common/src/com/sap/sse/common/Util.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java index 91de6166cbb..49330b92752 100755 --- a/java/com.sap.sse.common/src/com/sap/sse/common/Util.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/Util.java @@ -14,7 +14,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import com.google.gwt.thirdparty.guava.common.base.Strings; import com.sap.sse.common.util.NaturalComparator; From 4077952dac07b0aa96e3ff3f7c72766615cf5f93 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 3 Jan 2017 11:10:47 +0100 Subject: [PATCH 092/191] fix for bug 4016: LeaderboardGroupsResource now only writes the race columns that belong to the enclosing series Change-Id: I85aa4fdd4efe778d1c565b148e58fe9071df6266 --- .../jaxrs/api/LeaderboardGroupsResource.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java index 46bd91cf41c..5c1ead02012 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardGroupsResource.java @@ -3,10 +3,8 @@ package com.sap.sailing.server.gateway.jaxrs.api; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -34,6 +32,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Triple; import com.sap.sse.common.impl.MillisecondsTimePoint; @Path("/v1/leaderboardgroups") @@ -93,7 +92,7 @@ public class LeaderboardGroupsResource extends AbstractSailingServerResource { jsonLeaderboard.put("lastScoringUpdate", null); } - final LinkedHashMap> fleetsBySeriesName = new LinkedHashMap<>(); + final List, Iterable>> seriesNameAndFleetsAndRaceColumnsOfSeries = new ArrayList<>(); final Map medalSeriesNames = new HashMap<>(); if (isRegattaLeaderboard) { RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; @@ -103,25 +102,28 @@ public class LeaderboardGroupsResource extends AbstractSailingServerResource { for (final Series series : regatta.getSeries()) { List fleets = new ArrayList<>(); Util.addAll(series.getFleets(), fleets); - fleetsBySeriesName.put(series.getName(), fleets); + seriesNameAndFleetsAndRaceColumnsOfSeries.add(new Triple, Iterable>(series.getName(), fleets, series.getRaceColumns())); medalSeriesNames.put(series.getName(), series.isMedal()); } } else { jsonLeaderboard.put("scoringScheme", leaderboard.getScoringScheme().getType()); jsonLeaderboard.put("regattaName", null); - // write a 'default' series to be conform with our common regatta structure - fleetsBySeriesName.put(LeaderboardNameConstants.DEFAULT_SERIES_NAME, Collections.singleton(leaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME))); + // write a 'default' series to conform with our common regatta structure + seriesNameAndFleetsAndRaceColumnsOfSeries.add(new Triple, Iterable>( + LeaderboardNameConstants.DEFAULT_SERIES_NAME, + Collections.singleton(leaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), + leaderboard.getRaceColumns())); } JSONArray jsonSeriesEntries = new JSONArray(); jsonLeaderboard.put("series", jsonSeriesEntries); - for (final Entry> e : fleetsBySeriesName.entrySet()) { + for (final Triple, Iterable> e : seriesNameAndFleetsAndRaceColumnsOfSeries) { JSONObject jsonSeries = new JSONObject(); jsonSeriesEntries.add(jsonSeries); - jsonSeries.put("name", e.getKey()); - jsonSeries.put("isMedalSeries", medalSeriesNames.get(e.getKey())); + jsonSeries.put("name", e.getA()); + jsonSeries.put("isMedalSeries", medalSeriesNames.get(e.getA())); JSONArray jsonFleetsEntries = new JSONArray(); jsonSeries.put("fleets", jsonFleetsEntries); - for (final Fleet fleet : e.getValue()) { + for (final Fleet fleet : e.getB()) { if (fleet != null) { JSONObject jsonFleet = new JSONObject(); jsonFleet.put("name", fleet.getName()); @@ -130,7 +132,7 @@ public class LeaderboardGroupsResource extends AbstractSailingServerResource { jsonFleetsEntries.add(jsonFleet); JSONArray jsonRacesEntries = new JSONArray(); jsonFleet.put("races", jsonRacesEntries); - for (RaceColumn raceColumn: leaderboard.getRaceColumns()) { + for (RaceColumn raceColumn : e.getC()) { JSONObject jsonRaceColumn = new JSONObject(); jsonRaceColumn.put("name", raceColumn.getName()); jsonRaceColumn.put("isMedalRace" , raceColumn.isMedalRace()); From 27242a89d65a9cc879458b0e27836280e961874b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 3 Jan 2017 15:39:40 +0100 Subject: [PATCH 093/191] use middle of leg instead of middle of course for wind to estimate leg's target time Change-Id: Ibb11324c4896b6969987b7f2ec2a1e032af04bba --- .../com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index 85ee7d7ca06..abe5b89e6e5 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -517,7 +517,7 @@ public class TrackedLegImpl implements TrackedLeg { throws NotEnoughDataHasBeenAddedException, NoWindException { assert timepoint.equals(markPositionCache.getTimePoint()); assert getTrackedRace() == markPositionCache.getTrackedRace(); - Position centralPosition = trackedRace.getCenterOfCourse(timepoint); + Position centralPosition = getMiddleOfLeg(timepoint); Wind wind = trackedRace.getWind(centralPosition, timepoint, getTrackedRace().getWindSources(WindSourceType.TRACK_BASED_ESTIMATION)); Position from = trackedRace.getApproximatePosition(leg.getFrom(), timepoint); Position to = trackedRace.getApproximatePosition(leg.getTo(), timepoint); From 99dad9111bb4cb522829a8c7bb93334147ded751 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 3 Jan 2017 15:58:10 +0100 Subject: [PATCH 094/191] fixed calculation of true wind angle for getEstimatedTimeToComplete Change-Id: I68fa5f80eb2124938f43e0dd801d794ad096ae06 --- .../com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index abe5b89e6e5..1279d3e66da 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -525,7 +525,7 @@ public class TrackedLegImpl implements TrackedLeg { BoatClass boatClass = trackedRace.getRace().getBoatClass(); Duration result; if (legType == LegType.REACHING) { - Bearing trueWindAngle = wind.getBearing().getDifferenceTo(from.getBearingGreatCircle(to)); + Bearing trueWindAngle = from.getBearingGreatCircle(to).getDifferenceTo(wind.getBearing().reverse()); SpeedWithConfidence reachSpeed = polarDataService.getSpeed(boatClass, wind, trueWindAngle); Distance distance = from.getDistance(to); result = reachSpeed.getObject().getDuration(distance); From 710ea4d23b6ba9397a2140e82cc7c00cdbf17d85 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 3 Jan 2017 18:23:42 +0100 Subject: [PATCH 095/191] preparing for more sophisticated target time results provided by leg and race Change-Id: I242023635df0c6cfd22e2e8ab945f0706a89f6e6 --- .../domain/tracking/TargetTimeInfo.java | 98 +++++++++++++++++ .../tracking/impl/TargetTimeInfoImpl.java | 102 ++++++++++++++++++ 2 files changed, 200 insertions(+) create mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java create mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java new file mode 100755 index 00000000000..58bcb55a8a1 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java @@ -0,0 +1,98 @@ +package com.sap.sailing.domain.tracking; + +import com.sap.sailing.domain.base.Course; +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.polars.PolarDataService; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; + +/** + * Information about the time competitors of a race are expected to need for the legs of a race. This is based on a + * {@link TrackedRace} with {@link TrackedLeg}s and + * {@link TrackedRace#getWind(com.sap.sailing.domain.common.Position, com.sap.sse.common.TimePoint) wind information}. + * Furthermore, a valid {@link PolarDataService} instance must be bound to the {@link TrackedRace} to make predictions + * possible. + *

    + * + * In order to give a rationale for the response, in addition to the total expected duration the expected durations for + * each leg are specified, together with the {@link Wind} data used for the leg, leg distance, the true wind angle for + * the leg's direction and the leg type that this leads to. + * + * @author Axel Uhl (d043530) + * + */ +public interface TargetTimeInfo { + public interface LegTargetTimeInfo { + /** + * The distance between the waypoints delimiting the leg, at the {@link #getExpectedStartTimePoint() expected + * time point} at which the competitor starts the leg. + */ + Distance getDistance(); + + /** + * True wind at the position in the middle between the two positions at which the waypoints delimiting + * the leg are at {@link #getExpectedStartTimePoint()}. + */ + Wind getWind(); + + /** + * The bearing from the leg's start waypoint to the leg's end waypoint at {@link #getExpectedStartTimePoint()}/ + */ + Bearing getLegBearing(); + + /** + * The angle between the wind direction (from) and the bearing from the leg's start waypoint position at + * {@link #getExpectedStartTimePoint()} and the leg's end waypoint position at + * {@link #getExpectedStartTimePoint()}. For example, if a windward mark is a few meters off to the left, + * viewed from the leeward start line, then the wind comes a little more from the starboard side compared + * to the course middle line, therefore would have a true wind angle to the leg of, say 5deg. + */ + Bearing getTrueWindAngleToLeg(); + + /** + * The time a competitor is expected to need to sail the leg in the {@link #getWind() wind conditions expected}. + */ + Duration getExpectedDuration(); + + /** + * The time point when the competitor is expected to enter this leg. For the race's first leg + * this equals the {@link TargetTimeInfo#getExpectedStartTimePoint()} result. + */ + TimePoint getExpectedStartTimePoint(); + + /** + * The type of the leg at {@link #getExpectedStartTimePoint()}, given the {@link #getWind() wind conditions} + * and the {@link #getLegBearing() leg bearing} at that point in time. + */ + LegType getLegType(); + } + + /** + * The time point when a competitor whose hypothetical race is described + * by this object starts. This time is the basis for determining wind angles + * as input for the polar / VPP calculations. Wind is taken on each leg + * during the expected time at which the competitor starts that leg. + */ + TimePoint getExpectedStartTimePoint(); + + /** + * The expected total duration; equals the sum of the {@link LegTargetTimeInfo#getExpectedDuration() leg durations} + * as aggregated across {@link #getLegTargetTimes()}. + */ + Duration getExpectedDuration(); + + /** + * The per-leg information about the expected hypothetical sail around the course. The element + * order matches that of the {@link Course#getLegs() legs in the race course}. + */ + Iterable getLegTargetTimes(); + + /** + * The {@link Duration#plus(Duration) sum} of {@link LegTargetTimeInfo#getExpectedDuration() expected leg durations} + * across all legs of type {@code spentInLegsOfType}. + */ + Duration getExpectedDuration(LegType spentInLegsOfType); +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java new file mode 100755 index 00000000000..bce09b03bcd --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java @@ -0,0 +1,102 @@ +package com.sap.sailing.domain.tracking.impl; + +import java.util.stream.StreamSupport; + +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.tracking.TargetTimeInfo; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; + +public class TargetTimeInfoImpl implements TargetTimeInfo { + private final Iterable legInfos; + + private final TimePoint expectedStartTimePoint; + + public static class LegTargetTimeInfoImpl implements LegTargetTimeInfo { + private final Distance distance; + private final Wind wind; + private final Bearing legBearing; + private final Bearing trueWindAngleToLeg; + private final Duration expectedDuration; + private final TimePoint expectedStartTimePoint; + private final LegType legType; + + public LegTargetTimeInfoImpl(Distance distance, Wind wind, Bearing legBearing, Bearing trueWindAngleToLeg, + Duration expectedDuration, TimePoint expectedStartTimePoint, LegType legType) { + super(); + this.distance = distance; + this.wind = wind; + this.legBearing = legBearing; + this.trueWindAngleToLeg = trueWindAngleToLeg; + this.expectedDuration = expectedDuration; + this.expectedStartTimePoint = expectedStartTimePoint; + this.legType = legType; + } + + @Override + public Distance getDistance() { + return distance; + } + + @Override + public Wind getWind() { + return wind; + } + + @Override + public Bearing getLegBearing() { + return legBearing; + } + + @Override + public Bearing getTrueWindAngleToLeg() { + return trueWindAngleToLeg; + } + + @Override + public Duration getExpectedDuration() { + return expectedDuration; + } + + @Override + public TimePoint getExpectedStartTimePoint() { + return expectedStartTimePoint; + } + + @Override + public LegType getLegType() { + return legType; + } + } + + public TargetTimeInfoImpl(Iterable legInfos, TimePoint expectedStartTimePoint) { + super(); + this.legInfos = legInfos; + this.expectedStartTimePoint = expectedStartTimePoint; + } + + @Override + public TimePoint getExpectedStartTimePoint() { + return expectedStartTimePoint; + } + + @Override + public Duration getExpectedDuration() { + return StreamSupport.stream(legInfos.spliterator(), /* parallel */ false).map(l->l.getExpectedDuration()).reduce(Duration.NULL, Duration::plus); + } + + @Override + public Iterable getLegTargetTimes() { + return legInfos; + } + + @Override + public Duration getExpectedDuration(final LegType spentInLegsOfType) { + return StreamSupport.stream(legInfos.spliterator(), /* parallel */ false).filter(l->l.getLegType()==spentInLegsOfType). + map(l->l.getExpectedDuration()).reduce(Duration.NULL, Duration::plus); + } + +} From 1664286df30936b2735b3ca691c60a2faaf470e7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 4 Jan 2017 10:39:30 +0100 Subject: [PATCH 096/191] introduced JSON format for TargetTimeInfo and use it in RegattasResource's targettime method Change-Id: I93bf54964c34b0a25b5a15e37f9efb6e962bab01 --- .../domain/common}/TargetTimeInfo.java | 8 +-- .../common}/impl/TargetTimeInfoImpl.java | 50 +++++++++++------- .../impl/CurrentRaceFilterImplTest.java | 2 +- .../domain/base/racegroup/RaceCell.java | 8 +++ .../base/racegroup/impl/RaceCellImpl.java | 13 ++++- .../domain/test/TargetTimeEstimationTest.java | 18 ++++--- .../domain/test/mock/MockedTrackedRace.java | 3 +- ...ockedTrackedRaceWithStartTimeAndRanks.java | 4 +- .../sailing/domain/tracking/TrackedLeg.java | 4 +- .../sailing/domain/tracking/TrackedRace.java | 5 +- .../domain/tracking/impl/TrackedLegImpl.java | 17 ++++--- .../domain/tracking/impl/TrackedRaceImpl.java | 17 +++++-- .../gwt/ui/test/MockedTrackedRace.java | 4 +- .../impl/TargetTimeInfoDeserializer.java | 51 +++++++++++++++++++ .../racegroup/impl/RaceCellDeserializer.java | 11 ++-- .../racegroup/impl/RaceGroupDeserializer.java | 6 ++- .../impl/TargetTimeInfoSerializer.java | 44 ++++++++++++++++ .../impl/RaceCellJsonSerializer.java | 10 +++- .../gateway/impl/rc/RaceGroupFactory.java | 26 ++++++++-- .../impl/rc/RaceGroupJsonExportServlet.java | 6 ++- .../gateway/jaxrs/api/RegattasResource.java | 12 +++-- .../server/masterdata/DummyTrackedRace.java | 4 +- 22 files changed, 251 insertions(+), 72 deletions(-) rename java/{com.sap.sailing.domain/src/com/sap/sailing/domain/tracking => com.sap.sailing.domain.common/src/com/sap/sailing/domain/common}/TargetTimeInfo.java (90%) rename java/{com.sap.sailing.domain/src/com/sap/sailing/domain/tracking => com.sap.sailing.domain.common/src/com/sap/sailing/domain/common}/impl/TargetTimeInfoImpl.java (60%) create mode 100755 java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/TargetTimeInfoDeserializer.java create mode 100755 java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TargetTimeInfo.java similarity index 90% rename from java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java rename to java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TargetTimeInfo.java index 58bcb55a8a1..2c1af7b0cc1 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TargetTimeInfo.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/TargetTimeInfo.java @@ -1,11 +1,5 @@ -package com.sap.sailing.domain.tracking; +package com.sap.sailing.domain.common; -import com.sap.sailing.domain.base.Course; -import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.LegType; -import com.sap.sailing.domain.common.Wind; -import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TargetTimeInfoImpl.java similarity index 60% rename from java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java rename to java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TargetTimeInfoImpl.java index bce09b03bcd..e842854d4dc 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TargetTimeInfoImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/TargetTimeInfoImpl.java @@ -1,36 +1,31 @@ -package com.sap.sailing.domain.tracking.impl; - -import java.util.stream.StreamSupport; +package com.sap.sailing.domain.common.impl; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.Wind; -import com.sap.sailing.domain.tracking.TargetTimeInfo; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; public class TargetTimeInfoImpl implements TargetTimeInfo { private final Iterable legInfos; - private final TimePoint expectedStartTimePoint; - public static class LegTargetTimeInfoImpl implements LegTargetTimeInfo { private final Distance distance; private final Wind wind; private final Bearing legBearing; - private final Bearing trueWindAngleToLeg; private final Duration expectedDuration; private final TimePoint expectedStartTimePoint; private final LegType legType; - public LegTargetTimeInfoImpl(Distance distance, Wind wind, Bearing legBearing, Bearing trueWindAngleToLeg, - Duration expectedDuration, TimePoint expectedStartTimePoint, LegType legType) { + public LegTargetTimeInfoImpl(Distance distance, Wind wind, Bearing legBearing, Duration expectedDuration, + TimePoint expectedStartTimePoint, LegType legType) { super(); this.distance = distance; this.wind = wind; this.legBearing = legBearing; - this.trueWindAngleToLeg = trueWindAngleToLeg; this.expectedDuration = expectedDuration; this.expectedStartTimePoint = expectedStartTimePoint; this.legType = legType; @@ -53,7 +48,7 @@ public class TargetTimeInfoImpl implements TargetTimeInfo { @Override public Bearing getTrueWindAngleToLeg() { - return trueWindAngleToLeg; + return getLegBearing().getDifferenceTo(getWind().getBearing().reverse()); } @Override @@ -70,22 +65,32 @@ public class TargetTimeInfoImpl implements TargetTimeInfo { public LegType getLegType() { return legType; } + + @Override + public String toString() { + return "LegTargetTimeInfoImpl [distance=" + distance + ", wind=" + wind + ", legBearing=" + legBearing + + ", expectedDuration=" + expectedDuration + ", expectedStartTimePoint=" + expectedStartTimePoint + + ", legType=" + legType + "]"; + } } - - public TargetTimeInfoImpl(Iterable legInfos, TimePoint expectedStartTimePoint) { + + public TargetTimeInfoImpl(Iterable legInfos) { super(); this.legInfos = legInfos; - this.expectedStartTimePoint = expectedStartTimePoint; } @Override public TimePoint getExpectedStartTimePoint() { - return expectedStartTimePoint; + return Util.isEmpty(legInfos) ? null : legInfos.iterator().next().getExpectedStartTimePoint(); } @Override public Duration getExpectedDuration() { - return StreamSupport.stream(legInfos.spliterator(), /* parallel */ false).map(l->l.getExpectedDuration()).reduce(Duration.NULL, Duration::plus); + Duration result = Duration.NULL; + for (final LegTargetTimeInfo legInfo : legInfos) { + result = result.plus(legInfo.getExpectedDuration()); + } + return result; } @Override @@ -95,8 +100,17 @@ public class TargetTimeInfoImpl implements TargetTimeInfo { @Override public Duration getExpectedDuration(final LegType spentInLegsOfType) { - return StreamSupport.stream(legInfos.spliterator(), /* parallel */ false).filter(l->l.getLegType()==spentInLegsOfType). - map(l->l.getExpectedDuration()).reduce(Duration.NULL, Duration::plus); + Duration result = Duration.NULL; + for (final LegTargetTimeInfo legInfo : legInfos) { + if (legInfo.getLegType() == spentInLegsOfType) { + result = result.plus(legInfo.getExpectedDuration()); + } + } + return result; } + @Override + public String toString() { + return "TargetTimeInfoImpl [legInfos=" + legInfos + "]"; + } } diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/base/racegroup/impl/CurrentRaceFilterImplTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/base/racegroup/impl/CurrentRaceFilterImplTest.java index 6c8b7394dac..a1acdfca3ab 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/base/racegroup/impl/CurrentRaceFilterImplTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/base/racegroup/impl/CurrentRaceFilterImplTest.java @@ -413,7 +413,7 @@ public class CurrentRaceFilterImplTest { for (int i=0; i < numberOfRaces; i++) { _505RaceCells.add(new RaceCellImpl(raceColumnNamePrefix+(i+firstRaceColumnNumber), /* race log */ null, /* factor */ firstRaceColumnNumber, /* explicitFactor */ null, - /* zeroBasedIndexInFleet */ i)); + /* zeroBasedIndexInFleet */ i, /* targetTime */ null)); } final RaceRowImpl _505RaceRow = new RaceRowImpl(new FleetImpl(fleetName), _505RaceCells); return _505RaceRow; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceCell.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceCell.java index 833f0a6fac2..f55fef33e8c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceCell.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/RaceCell.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.base.racegroup; import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sse.common.Named; import com.sap.sse.common.Util; @@ -33,4 +34,11 @@ public interface RaceCell extends Named { * index 0. */ int getZeroBasedIndexInFleet(); + + /** + * If there is a tracked race for this race and we have sufficient information about wind and the boat class's + * polar / VPP data this method will return an estimated duration for how long the race will take based on the + * current course. + */ + TargetTimeInfo getTargetTime(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceCellImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceCellImpl.java index cb69b6d7b83..c645efb79e7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceCellImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/racegroup/impl/RaceCellImpl.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.base.racegroup.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.base.racegroup.RaceCell; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sse.common.Util; import com.sap.sse.common.impl.NamedImpl; @@ -21,6 +22,8 @@ public class RaceCellImpl extends NamedImpl implements RaceCell { private final Double explicitFactor; private final int zeroBasedIndexInFleet; + + private final TargetTimeInfo targetTime; /** * @param zeroBasedIndexInFleet @@ -34,12 +37,13 @@ public class RaceCellImpl extends NamedImpl implements RaceCell { * except in case the first race column is a "virtual" one that holds a non-discardable carry-forward * result. In this case, the second Race Column, which is the first "non-virtual" one, receives index 0. */ - public RaceCellImpl(String raceColumnName, RaceLog raceLog, double factor, Double explicitFactor, int zeroBasedIndexInFleet) { + public RaceCellImpl(String raceColumnName, RaceLog raceLog, double factor, Double explicitFactor, int zeroBasedIndexInFleet, TargetTimeInfo targetTime) { super(raceColumnName); this.raceLog = raceLog; this.factor = factor; this.explicitFactor = explicitFactor; this.zeroBasedIndexInFleet = zeroBasedIndexInFleet; + this.targetTime = targetTime; } @Override @@ -70,9 +74,14 @@ public class RaceCellImpl extends NamedImpl implements RaceCell { return zeroBasedIndexInFleet; } + @Override + public TargetTimeInfo getTargetTime() { + return targetTime; + } + @Override public String toString() { return "RaceCellImpl [factor=" + factor + ", explicitFactor=" + explicitFactor + ", zeroBasedIndexInFleet=" - + zeroBasedIndexInFleet + ", getName()=" + getName() + "]"; + + zeroBasedIndexInFleet + ", name=" + getName() + ", targetTime: " + getTargetTime() + "]"; } } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java index d1b4b9ca77f..b994752e314 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java @@ -48,6 +48,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; public class TargetTimeEstimationTest { + @SuppressWarnings("unchecked") // the problem here is any(Set.class) which cannot infer the type arguments @Test public void simpleReachTargetTimeEstimation() throws NotEnoughDataHasBeenAddedException, NoWindException { // Setup mock objects @@ -63,11 +64,11 @@ public class TargetTimeEstimationTest { Bearing legBearing = startOfLeg.getBearingGreatCircle(endOfLeg); SpeedWithConfidence boatSpeedWithConfidence = new SpeedWithConfidenceImpl(new KnotSpeedImpl(12), 1, null); DynamicTrackedRaceImpl trackedRace = mock(DynamicTrackedRaceImpl.class); - when(trackedRace.getCenterOfCourse(timepoint)).thenReturn(centerOfCourse); WindSource source = mock(WindSource.class); Set sources = Collections.singleton(source); when(trackedRace.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION)).thenReturn(sources); - when(trackedRace.getWind(any(Position.class), eq(timepoint), eq(sources))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint), any(Set.class))).thenReturn(wind); RaceDefinition race = mock(RaceDefinition.class); when(race.getBoatClass()).thenReturn(mockedBoatClass); @@ -79,17 +80,20 @@ public class TargetTimeEstimationTest { Waypoint to = mock(Waypoint.class); when(leg.getFrom()).thenReturn(from); when(leg.getTo()).thenReturn(to); + when(trackedRace.getApproximatePosition(from, timepoint)).thenReturn(startOfLeg); + when(trackedRace.getApproximatePosition(to, timepoint)).thenReturn(endOfLeg); when(trackedRace.getApproximatePosition(from, timepoint)).thenReturn(startOfLeg); when(trackedRace.getApproximatePosition(to, timepoint)).thenReturn(endOfLeg); - when(mockedPolars.getSpeed(mockedBoatClass, wind, windBearing.getDifferenceTo(legBearing))).thenReturn(boatSpeedWithConfidence); + when(mockedPolars.getSpeed(mockedBoatClass, wind, legBearing.getDifferenceTo(windBearing.reverse()))).thenReturn(boatSpeedWithConfidence); HashSet competitors = new HashSet(); TrackedLeg trackedLeg = new TrackedLegImpl(trackedRace, leg, competitors); //Actual test of functionality - Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)); + Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, + new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)).getExpectedDuration(); assertEquals(75494, duration.asMillis(), 100); } @@ -141,7 +145,8 @@ public class TargetTimeEstimationTest { TrackedLeg trackedLeg = new TrackedLegImpl(trackedRace, leg, competitors); //Actual test of functionality - Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)); + Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, + new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)).getExpectedDuration(); assertEquals(213513, duration.asMillis(), 100); } @@ -193,7 +198,8 @@ public class TargetTimeEstimationTest { TrackedLeg trackedLeg = new TrackedLegImpl(trackedRace, leg, competitors); //Actual test of functionality - Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)); + Duration duration = trackedLeg.getEstimatedTimeToComplete(mockedPolars, timepoint, + new MarkPositionAtTimePointCacheImpl(trackedRace, timepoint)).getExpectedDuration(); assertEquals(95090, duration.asMillis(), 100); } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index 23b7ebb5e21..bb4298e6ecd 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -36,6 +36,7 @@ import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; @@ -1035,7 +1036,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public Duration getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, + public TargetTimeInfo getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, NoWindException { return null; } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java index 9f596ddc595..ecb3dab6078 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java @@ -27,6 +27,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; @@ -59,7 +60,6 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; -import com.sap.sse.common.Duration; import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @@ -644,7 +644,7 @@ public class MockedTrackedRaceWithStartTimeAndRanks implements TrackedRace { } @Override - public Duration getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, + public TargetTimeInfo getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, NoWindException { return null; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java index da4592948ff..dcd9c41478f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java @@ -10,10 +10,10 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.TargetTimeInfo.LegTargetTimeInfo; import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; -import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; @@ -164,7 +164,7 @@ public interface TrackedLeg extends Serializable { * is not available * @throws NoWindException no wind available. unable to determine legtypes for given timepoint */ - Duration getEstimatedTimeToComplete(PolarDataService polarDataService, TimePoint timepoint, MarkPositionAtTimePointCache markPositionCache) + LegTargetTimeInfo getEstimatedTimeToComplete(PolarDataService polarDataService, TimePoint timepoint, MarkPositionAtTimePointCache markPositionCache) throws NotEnoughDataHasBeenAddedException, NoWindException; /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java index c9f4e7ec66d..a456b3f8d49 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java @@ -32,6 +32,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.TimingConstants; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.Wind; @@ -923,13 +924,13 @@ public interface TrackedRace extends Serializable, IsManagedByCache reachSpeed = polarDataService.getSpeed(boatClass, wind, trueWindAngle); - Distance distance = from.getDistance(to); + SpeedWithConfidence reachSpeed = polarDataService.getSpeed(boatClass, wind, trueWindAngleToLeg); result = reachSpeed.getObject().getDuration(distance); } else { SpeedWithBearingWithConfidence portSpeedAndBearing = polarDataService.getAverageSpeedWithBearing( @@ -536,7 +539,7 @@ public class TrackedLegImpl implements TrackedLeg { boatClass, wind, legType, Tack.STARBOARD); result = estimateTargetTimeTacking(from, to, portSpeedAndBearing, starboardSpeedAndBearing, wind); } - return result; + return new TargetTimeInfoImpl.LegTargetTimeInfoImpl(distance, wind, legBearing, result, timepoint, legType); } private Duration estimateTargetTimeTacking(Position from, Position to, diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 2b1c51dcf55..8f1cf87f9f9 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -82,11 +82,13 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.TimingConstants; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; +import com.sap.sailing.domain.common.TargetTimeInfo.LegTargetTimeInfo; import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLog; import com.sap.sailing.domain.common.confidence.BearingWithConfidence; import com.sap.sailing.domain.common.confidence.BearingWithConfidenceCluster; @@ -101,6 +103,7 @@ import com.sap.sailing.domain.common.impl.CourseChangeImpl; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.KnotSpeedImpl; import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; +import com.sap.sailing.domain.common.impl.TargetTimeInfoImpl; import com.sap.sailing.domain.common.impl.WindImpl; import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; @@ -3930,18 +3933,22 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl } @Override - public Duration getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, + public TargetTimeInfo getEstimatedTimeToComplete(final TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, NoWindException { if (polarDataService == null) { throw new NotEnoughDataHasBeenAddedException("Target time estimation failed. No polar service available."); } Duration durationOfAllLegs = Duration.NULL; - final MarkPositionAtTimePointCache markPositionCache = new MarkPositionAtTimePointCacheImpl(this, timepoint); + TimePoint current = timepoint; + final List legTargetTimes = new ArrayList<>(); for (TrackedLeg leg : trackedLegs.values()) { - Duration durationOfLeg = leg.getEstimatedTimeToComplete(polarDataService, timepoint, markPositionCache); - durationOfAllLegs = durationOfAllLegs.plus(durationOfLeg); + final MarkPositionAtTimePointCache markPositionCache = new MarkPositionAtTimePointCacheImpl(this, current); + LegTargetTimeInfo legTargetTime = leg.getEstimatedTimeToComplete(polarDataService, current, markPositionCache); + legTargetTimes.add(legTargetTime); + durationOfAllLegs = durationOfAllLegs.plus(legTargetTime.getExpectedDuration()); + current = current.plus(legTargetTime.getExpectedDuration()); // simulate the next leg with the wind as of the projected finishing time of the previous leg } - return durationOfAllLegs; + return new TargetTimeInfoImpl(legTargetTimes); } @Override diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java index c948deb2535..a97e253a59a 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java @@ -29,6 +29,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; @@ -69,7 +70,6 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.WindTrackImpl; -import com.sap.sse.common.Duration; import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @@ -768,7 +768,7 @@ public class MockedTrackedRace implements DynamicTrackedRace { } @Override - public Duration getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, + public TargetTimeInfo getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, NoWindException { return null; } diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/TargetTimeInfoDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/TargetTimeInfoDeserializer.java new file mode 100755 index 00000000000..0588510e38d --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/TargetTimeInfoDeserializer.java @@ -0,0 +1,51 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.TargetTimeInfo; +import com.sap.sailing.domain.common.TargetTimeInfo.LegTargetTimeInfo; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sailing.domain.common.impl.TargetTimeInfoImpl; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.TargetTimeInfoSerializer; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; + +public class TargetTimeInfoDeserializer implements JsonDeserializer { + final JsonDeserializer windDeserializer; + + public TargetTimeInfoDeserializer(JsonDeserializer windDeserializer) { + super(); + this.windDeserializer = windDeserializer; + } + + @Override + public TargetTimeInfo deserialize(JSONObject object) throws JsonDeserializationException { + final List legInfos = new ArrayList<>(); + final JSONArray legsAsJson = (JSONArray) object.get(TargetTimeInfoSerializer.LEGS); + for (final Object legAsObject : legsAsJson) { + final JSONObject legAsJson = (JSONObject) legAsObject; + final Duration expectedDuration = new MillisecondsDurationImpl(((Number) legAsJson.get(TargetTimeInfoSerializer.LEG_DURATION_MILLIS)).longValue()); + final TimePoint expectedStartTime = new MillisecondsTimePoint(((Number) legAsJson.get(TargetTimeInfoSerializer.LEG_START_TIME_MILLIS)).longValue()); + final Bearing legBearing = new DegreeBearingImpl(((Number) legAsJson.get(TargetTimeInfoSerializer.LEG_BEARING_DEGREES)).doubleValue()); + final Distance legDistance = new MeterDistance(((Number) legAsJson.get(TargetTimeInfoSerializer.LEG_DISTANCE_METERS)).doubleValue()); + final LegType legType = LegType.valueOf((String) legAsJson.get(TargetTimeInfoSerializer.LEG_TYPE)); + final Wind legWind = windDeserializer.deserialize((JSONObject) legAsJson.get(TargetTimeInfoSerializer.LEG_WIND)); + final LegTargetTimeInfo legInfo = new TargetTimeInfoImpl.LegTargetTimeInfoImpl(legDistance, legWind, legBearing, expectedDuration, expectedStartTime, legType); + legInfos.add(legInfo); + } + return new TargetTimeInfoImpl(legInfos); + } +} diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceCellDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceCellDeserializer.java index 767e41dc1f9..891a2270d19 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceCellDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceCellDeserializer.java @@ -5,6 +5,7 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.base.racegroup.RaceCell; import com.sap.sailing.domain.base.racegroup.impl.RaceCellImpl; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; @@ -12,10 +13,12 @@ import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceCellJsonS public class RaceCellDeserializer implements JsonDeserializer { - private JsonDeserializer logDeserializer; + private final JsonDeserializer logDeserializer; + private final JsonDeserializer targetTimeDeserializer; - public RaceCellDeserializer(JsonDeserializer logDeserializer) { + public RaceCellDeserializer(JsonDeserializer logDeserializer, JsonDeserializer targetTimeDeserializer) { this.logDeserializer = logDeserializer; + this.targetTimeDeserializer = targetTimeDeserializer; } public RaceCell deserialize(JSONObject object) @@ -25,9 +28,11 @@ public class RaceCellDeserializer implements JsonDeserializer { final double factor = factorJson == null ? 1 : ((Number) factorJson).doubleValue(); final Double explicitFactor = (Double) object.get(RaceCellJsonSerializer.FIELD_EXPLICIT_FACTOR); final Number zeroBasedIndexInFleet = (Number) object.get(RaceCellJsonSerializer.FIELD_ZERO_BASED_INDEX_IN_FLEET); + final JSONObject targetTimeInfoJson = (JSONObject) object.get(RaceCellJsonSerializer.FIELD_TARGET_TIME_INFO); + final TargetTimeInfo targetTime = targetTimeInfoJson == null ? null : targetTimeDeserializer.deserialize(targetTimeInfoJson); JSONObject logJson = Helpers.getNestedObjectSafe(object, RaceCellJsonSerializer.FIELD_RACE_LOG); RaceLog log = logDeserializer.deserialize(logJson); - return new RaceCellImpl(name, log, factor, explicitFactor, zeroBasedIndexInFleet == null ? -1 : zeroBasedIndexInFleet.intValue()); + return new RaceCellImpl(name, log, factor, explicitFactor, zeroBasedIndexInFleet == null ? -1 : zeroBasedIndexInFleet.intValue(), targetTime); } } diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java index 05f3b44e431..20eb3745964 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racegroup/impl/RaceGroupDeserializer.java @@ -18,6 +18,9 @@ import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserial import com.sap.sailing.server.gateway.deserialization.impl.ColorDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.FleetDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; +import com.sap.sailing.server.gateway.deserialization.impl.PositionJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.TargetTimeInfoDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.WindJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogDeserializer; import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEventDeserializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceGroupJsonSerializer; @@ -33,7 +36,8 @@ public class RaceGroupDeserializer implements JsonDeserializer { JsonDeserializer proceduresDeserializer) { return new RaceGroupDeserializer(new BoatClassJsonDeserializer(domainFactory), new SeriesWithRowsDeserializer( new RaceRowDeserializer(new FleetDeserializer(new ColorDeserializer()), new RaceCellDeserializer( - new RaceLogDeserializer(RaceLogEventDeserializer.create(domainFactory))))), + new RaceLogDeserializer(RaceLogEventDeserializer.create(domainFactory)), + new TargetTimeInfoDeserializer(new WindJsonDeserializer(new PositionJsonDeserializer()))))), proceduresDeserializer); } diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java new file mode 100755 index 00000000000..fa1cdefee37 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java @@ -0,0 +1,44 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.common.TargetTimeInfo; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.TargetTimeInfo.LegTargetTimeInfo; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class TargetTimeInfoSerializer implements JsonSerializer { + + public static final String LEGS = "legs"; + public static final String LEG_START_TIME_MILLIS = "legStartMillis"; + public static final String LEG_DURATION_MILLIS = "legDurationMillis"; + public static final String LEG_DISTANCE_METERS = "legDistanceMeters"; + public static final String LEG_BEARING_DEGREES = "legBearingDegrees"; + public static final String LEG_WIND = "legWind"; + public static final String LEG_TYPE = "legType"; + + private final JsonSerializer windSerializer; + + public TargetTimeInfoSerializer(JsonSerializer windSerializer) { + super(); + this.windSerializer = windSerializer; + } + + @Override + public JSONObject serialize(TargetTimeInfo object) { + final JSONArray legsAsJson = new JSONArray(); + final JSONObject result = new JSONObject(); + result.put(LEGS, legsAsJson); + for (final LegTargetTimeInfo legInfo : object.getLegTargetTimes()) { + final JSONObject legAsJson = new JSONObject(); + legAsJson.put(LEG_START_TIME_MILLIS, legInfo.getExpectedStartTimePoint().asMillis()); + legAsJson.put(LEG_DURATION_MILLIS, legInfo.getExpectedDuration().asMillis()); + legAsJson.put(LEG_DISTANCE_METERS, legInfo.getDistance().getMeters()); + legAsJson.put(LEG_BEARING_DEGREES, legInfo.getLegBearing().getDegrees()); + legAsJson.put(LEG_TYPE, legInfo.getLegType().name()); + legAsJson.put(LEG_WIND, windSerializer.serialize(legInfo.getWind())); + } + return result; + } +} diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceCellJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceCellJsonSerializer.java index 19240a6b646..6881caa0df7 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceCellJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racegroup/impl/RaceCellJsonSerializer.java @@ -4,6 +4,7 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.base.racegroup.RaceCell; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.server.gateway.serialization.JsonSerializer; public class RaceCellJsonSerializer implements JsonSerializer { @@ -13,11 +14,14 @@ public class RaceCellJsonSerializer implements JsonSerializer { public static final String FIELD_FACTOR = "factor"; public static final String FIELD_EXPLICIT_FACTOR = "explicitfactor"; public static final String FIELD_ZERO_BASED_INDEX_IN_FLEET = "zerobasedindexinfleet"; + public static final String FIELD_TARGET_TIME_INFO = "targettimeinfo"; - private JsonSerializer logSerializer; + private final JsonSerializer logSerializer; + private final JsonSerializer targetTimeInfoSerializer; - public RaceCellJsonSerializer(JsonSerializer logSerializer) { + public RaceCellJsonSerializer(JsonSerializer logSerializer, JsonSerializer targetTimeInfoSerializer) { this.logSerializer = logSerializer; + this.targetTimeInfoSerializer = targetTimeInfoSerializer; } @Override @@ -28,6 +32,8 @@ public class RaceCellJsonSerializer implements JsonSerializer { result.put(FIELD_EXPLICIT_FACTOR, object.getExplicitFactor()); result.put(FIELD_ZERO_BASED_INDEX_IN_FLEET, object.getZeroBasedIndexInFleet()); result.put(FIELD_RACE_LOG, logSerializer.serialize(object.getRaceLog())); + final TargetTimeInfo targetTime = object.getTargetTime(); + result.put(FIELD_TARGET_TIME_INFO, targetTime==null?null:targetTimeInfoSerializer.serialize(targetTime)); return result; } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java index 602a876e950..71b5efa3781 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupFactory.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.logging.Logger; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.CourseArea; @@ -25,14 +26,21 @@ import com.sap.sailing.domain.base.racegroup.impl.RaceGroupImpl; import com.sap.sailing.domain.base.racegroup.impl.RaceRowImpl; import com.sap.sailing.domain.base.racegroup.impl.SeriesWithRowsImpl; import com.sap.sailing.domain.common.LeaderboardNameConstants; +import com.sap.sailing.domain.common.NoWindException; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; +import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; /** * Used to convert {@link Leaderboard}s to {@link RaceGroup}s. */ public class RaceGroupFactory { + private static final Logger logger = Logger.getLogger(RaceGroupFactory.class.getName()); /** * Convert given {@link RegattaLeaderboard} to a {@link RaceGroup}. @@ -98,20 +106,32 @@ public class RaceGroupFactory { } /** - * Delivers the race cell in the order of the {@link RaceColumn}s provided in {@code raceColumns}. + * Delivers the race cell in the order of the {@link RaceColumn}s provided in {@code raceColumns}. The + * {@link RaceCell#getTargetTime() target times} are based on an + * {@link TrackedRace#getEstimatedTimeToComplete(TimePoint) estimation} for the current point in time, when the + * request is being made, using this time point to determine the wind speed and direction for each leg. */ private List getCells(String fleetName, List raceColumns, boolean isFirstRaceColumnVirtual) { boolean skippedFirst = false; List cells = new ArrayList<>(); if (raceColumns != null) { int zeroBasedIndexOfRaceInFleet = 0; + final TimePoint now = MillisecondsTimePoint.now(); for (final RaceColumn raceColumn : raceColumns) { if (isFirstRaceColumnVirtual && !skippedFirst) { skippedFirst = true; } else { - Fleet fleet = raceColumn.getFleetByName(fleetName); + final Fleet fleet = raceColumn.getFleetByName(fleetName); + final TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); + TargetTimeInfo targetTime; + try { + targetTime = trackedRace == null ? null : trackedRace.getEstimatedTimeToComplete(now); + } catch (NotEnoughDataHasBeenAddedException | NoWindException e) { + logger.fine(()->"Unable to determine target time for "+trackedRace); + targetTime = null; + } cells.add(new RaceCellImpl(raceColumn.getName(), raceColumn.getRaceLog(fleet), - raceColumn.getFactor(), raceColumn.getExplicitFactor(), zeroBasedIndexOfRaceInFleet++)); + raceColumn.getFactor(), raceColumn.getExplicitFactor(), zeroBasedIndexOfRaceInFleet++, targetTime)); } } } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupJsonExportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupJsonExportServlet.java index 91487d6bc84..74048d86294 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupJsonExportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/RaceGroupJsonExportServlet.java @@ -23,7 +23,10 @@ import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.RegattaConfigurationJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.TargetTimeInfoSerializer; +import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceCellJsonSerializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceGroupJsonSerializer; import com.sap.sailing.server.gateway.serialization.racegroup.impl.RaceRowJsonSerializer; @@ -95,7 +98,8 @@ public class RaceGroupJsonExportServlet extends AbstractJsonHttpServlet { RegattaConfigurationJsonSerializer.create(), new SeriesWithRowsOfRaceGroupSerializer(new SeriesWithRowsJsonSerializer( new RaceRowsOfSeriesWithRowsSerializer(new RaceRowJsonSerializer(new FleetJsonSerializer( - new ColorJsonSerializer()), new RaceCellJsonSerializer(createRaceLogSerializer(clientUuid))))))); + new ColorJsonSerializer()), new RaceCellJsonSerializer(createRaceLogSerializer(clientUuid), + new TargetTimeInfoSerializer(new WindJsonSerializer(new PositionJsonSerializer())))))))); } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java index aa3bb3d1fa6..73b49c30cb6 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java @@ -36,6 +36,7 @@ import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.tracking.GPSFix; import com.sap.sailing.domain.common.tracking.GPSFixMoving; @@ -60,14 +61,16 @@ import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.CompetitorWithChangingBoatJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.DurationJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.RaceEntriesJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.RegattaJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.SeriesJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.TargetTimeInfoSerializer; import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; import com.sap.sse.InvalidDateException; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; @@ -526,6 +529,7 @@ public class RegattasResource extends AbstractSailingServerResource { @Path("{regattaname}/races/{racename}/targettime") public Response getTargetTime(@PathParam("regattaname") String regattaName, @PathParam("racename") String raceName, @QueryParam("timeasmillis") Long timeasmillis) { + // TODO bug 3108: add distances upwind/downwind/reach if (timeasmillis == null) { timeasmillis = System.currentTimeMillis(); } @@ -541,12 +545,10 @@ public class RegattasResource extends AbstractSailingServerResource { } else { DynamicTrackedRace trackedRace = getService().getTrackedRace(regatta, race); if (trackedRace != null) { - Duration targetTime; + TargetTimeInfo targetTime; try { targetTime = trackedRace.getEstimatedTimeToComplete(timePoint); - - DurationJsonSerializer serializer = new DurationJsonSerializer(); - + final TargetTimeInfoSerializer serializer = new TargetTimeInfoSerializer(new WindJsonSerializer(new PositionJsonSerializer())); JSONObject jsonCourse = serializer.serialize(targetTime); String json = jsonCourse.toJSONString(); response = Response.ok(json).header("Content-Type", MediaType.APPLICATION_JSON + ";charset=UTF-8").build(); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java index 4bed05fb47a..2b3736f605a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java @@ -27,6 +27,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.TargetTimeInfo; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.tracking.GPSFix; @@ -58,7 +59,6 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; -import com.sap.sse.common.Duration; import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @@ -604,7 +604,7 @@ public class DummyTrackedRace extends TrackedRaceWithWindEssentials { } @Override - public Duration getEstimatedTimeToComplete(TimePoint timepoint) + public TargetTimeInfo getEstimatedTimeToComplete(TimePoint timepoint) throws NotEnoughDataHasBeenAddedException, NoWindException { return null; } From 51cea7a46d80554d80ef506784d4c7648c00b937 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 4 Jan 2017 10:57:08 +0100 Subject: [PATCH 097/191] added redundant but useful output to TargetTime JSON format (total duration and leg angle to wind) Change-Id: I69ce77ce365e27e350e164216f7e38cf2dc6153f --- .../serialization/impl/TargetTimeInfoSerializer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java index fa1cdefee37..986760ea8d4 100755 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/TargetTimeInfoSerializer.java @@ -11,10 +11,12 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer; public class TargetTimeInfoSerializer implements JsonSerializer { public static final String LEGS = "legs"; + public static final String DURATION_MILLIS = "durationMillis"; public static final String LEG_START_TIME_MILLIS = "legStartMillis"; public static final String LEG_DURATION_MILLIS = "legDurationMillis"; public static final String LEG_DISTANCE_METERS = "legDistanceMeters"; public static final String LEG_BEARING_DEGREES = "legBearingDegrees"; + public static final String LEG_TRUE_WIND_ANGLE_TO_LEG_DEGREES = "legTrueWindAngleToLegDegrees"; public static final String LEG_WIND = "legWind"; public static final String LEG_TYPE = "legType"; @@ -29,6 +31,8 @@ public class TargetTimeInfoSerializer implements JsonSerializer public JSONObject serialize(TargetTimeInfo object) { final JSONArray legsAsJson = new JSONArray(); final JSONObject result = new JSONObject(); + // redundant, but possibly useful to clients other than the deserializer: + result.put(DURATION_MILLIS, object.getExpectedDuration().asMillis()); result.put(LEGS, legsAsJson); for (final LegTargetTimeInfo legInfo : object.getLegTargetTimes()) { final JSONObject legAsJson = new JSONObject(); @@ -36,8 +40,11 @@ public class TargetTimeInfoSerializer implements JsonSerializer legAsJson.put(LEG_DURATION_MILLIS, legInfo.getExpectedDuration().asMillis()); legAsJson.put(LEG_DISTANCE_METERS, legInfo.getDistance().getMeters()); legAsJson.put(LEG_BEARING_DEGREES, legInfo.getLegBearing().getDegrees()); + // redundant, but possibly useful to clients other than the deserializer: + legAsJson.put(LEG_TRUE_WIND_ANGLE_TO_LEG_DEGREES, legInfo.getTrueWindAngleToLeg().getDegrees()); legAsJson.put(LEG_TYPE, legInfo.getLegType().name()); legAsJson.put(LEG_WIND, windSerializer.serialize(legInfo.getWind())); + legsAsJson.add(legAsJson); } return result; } From 7ad329b78db0763c14e3f14821c2c43227f1afa9 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 4 Jan 2017 14:22:15 +0100 Subject: [PATCH 098/191] don't try to produce a URL from null Change-Id: Ia9944ce6d94d37ee75a193d06c83e9022bfff763 --- .../sap/sailing/gwt/ui/server/SailingServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index a3b5d753190..2f3d7938e72 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -3660,10 +3660,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S private Map convertToLocalesAndUrls(Map sailorsInfoWebsiteURLsByLocaleName) { Map eventURLs = new HashMap<>(); for (Map.Entry entry : sailorsInfoWebsiteURLsByLocaleName.entrySet()) { - try { - eventURLs.put(toLocale(entry.getKey()), new URL(entry.getValue())); - } catch(Exception e) { - // broken URLs or Locales are not being stored + if (entry.getValue() != null) { + try { + eventURLs.put(toLocale(entry.getKey()), new URL(entry.getValue())); + } catch(Exception e) { + // broken URLs or Locales are not being stored + } } } return eventURLs; From 415b10a73f3617a307bcb9e58fd422727215166b Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 5 Jan 2017 16:37:35 +0000 Subject: [PATCH 099/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../ui/client/StringMessages.properties.xlf | 55 ++++++++++++++++--- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties.xlf b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties.xlf index 03128dc78cc..298fe071d5b 100644 --- a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties.xlf +++ b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties.xlf @@ -1,12 +1,12 @@ - +

    - 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 - +
    @@ -1050,7 +1050,7 @@ Registered at {0} - Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4} + Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4}, replicating {5} Show wind speed data @@ -1965,10 +1965,10 @@ SOG when Starting - Distance to start line at race start time + Distance to start line at race start time; distance to nearest line end in case the competitor projects beyond the line''s ends - Distance to start line five seconds before the start + Distance to start line five seconds before the start; distance to nearest line end in case the competitor projects beyond the line''s ends Speed over ground at race start time @@ -4567,7 +4567,7 @@ https://play.google.com/store/apps/details?id=com.sap.sailing.android.buoy.positioning.app - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png + https://play.google.com/intl/en/badges/images/badge_new.png http://appstore.com/sapsailinsight @@ -4611,6 +4611,9 @@ There are no events yet. + + Please select a competitor import provider... + Please select a result import provider... @@ -4978,7 +4981,7 @@ Jobs - © 2011-2016 SAP Sailing Analytics + © 2011-2017 SAP Sailing Analytics SAP Sailing in @@ -5163,6 +5166,42 @@ Incorrect value for the buoy zone radius in hull lengths + + Import Competitors + + + Select competitors to be imported on the left. Selecting a single competitor shows any existing competitors that may represent the same entity on the right. To use an existing one, select it. When done mapping, select all competitors you want to import in the table on the left and press OK. Note that the tables can be sorted by clicking or tapping on the column headers. + + + Existing Competitors + + + Competitors to Import + + + Has matches + + + Filter competitors to import by name, sail number, race or fleet + + + Error loading competitor import providers: {0} + + + Error loading competitor import descriptors: {0} + + + Could not save competitor registrations: {0} + + + Use, e.g., the race+fleet name + + + Version: {0} + + + Replicating objects + \ No newline at end of file From fbe4f124eed0929c74308d770896a983919931d1 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 6 Jan 2017 11:40:48 +0100 Subject: [PATCH 100/191] fixed test cases for target time estimation due to computing wind on leg middle instead of center of course Change-Id: Ibfaddcbf5b6d9296b32b60cfdb95a6817b3548ea --- .../domain/test/TargetTimeEstimationTest.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java index b994752e314..64df6e5594d 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/TargetTimeEstimationTest.java @@ -97,6 +97,7 @@ public class TargetTimeEstimationTest { assertEquals(75494, duration.asMillis(), 100); } + @SuppressWarnings("unchecked") // the problem here is any(Set.class) which cannot infer the type arguments @Test public void simpleUpwindTargetTimeEstimation() throws NotEnoughDataHasBeenAddedException, NoWindException { // Setup mock objects @@ -112,10 +113,8 @@ public class TargetTimeEstimationTest { DynamicTrackedRaceImpl trackedRace = mock(DynamicTrackedRaceImpl.class); when(trackedRace.getCenterOfCourse(timepoint)).thenReturn(centerOfCourse); - WindSource source = mock(WindSource.class); - Set sources = Collections.singleton(source); - when(trackedRace.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION)).thenReturn(sources); - when(trackedRace.getWind(any(Position.class), eq(timepoint), eq(sources))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint), any(Set.class))).thenReturn(wind); RaceDefinition race = mock(RaceDefinition.class); when(race.getBoatClass()).thenReturn(mockedBoatClass); @@ -150,6 +149,7 @@ public class TargetTimeEstimationTest { assertEquals(213513, duration.asMillis(), 100); } + @SuppressWarnings("unchecked") // the problem here is any(Set.class) which cannot infer the type arguments @Test public void simpleDownwindTargetTimeEstimation() throws NotEnoughDataHasBeenAddedException, NoWindException { // Setup mock objects @@ -165,10 +165,8 @@ public class TargetTimeEstimationTest { DynamicTrackedRaceImpl trackedRace = mock(DynamicTrackedRaceImpl.class); when(trackedRace.getCenterOfCourse(timepoint)).thenReturn(centerOfCourse); - WindSource source = mock(WindSource.class); - Set sources = Collections.singleton(source); - when(trackedRace.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION)).thenReturn(sources); - when(trackedRace.getWind(any(Position.class), eq(timepoint), eq(sources))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint))).thenReturn(wind); + when(trackedRace.getWind(any(Position.class), eq(timepoint), any(Set.class))).thenReturn(wind); RaceDefinition race = mock(RaceDefinition.class); when(race.getBoatClass()).thenReturn(mockedBoatClass); From e96d0d51231584331aad62661eb0847a29012322 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 8 Jan 2017 21:14:01 +0100 Subject: [PATCH 101/191] fix for bug 4020, carrying hullBeam through BoatClassDTO which is now always defaulted to a non-null Distance --- .../domain/common/dto/BoatClassDTO.java | 14 +++++++---- .../domain/base/impl/BoatClassImpl.java | 4 ++- .../impl/TransientCompetitorStoreImpl.java | 3 ++- .../test/LeaderboardDTODiffingTest.java | 14 +++++++---- .../user/profile/GetFavoritesAction.java | 2 +- ...edMultiSelectionBoatClassDataProvider.java | 2 +- .../ui/adminconsole/CompetitorEditDialog.java | 2 +- .../RegattaWithSeriesAndFleetsDialog.java | 2 +- .../StructureImportManagementPanel.java | 2 +- .../ui/client/shared/racemap/BoatOverlay.java | 25 ++++++++----------- .../gwt/ui/server/SailingServiceImpl.java | 2 +- 11 files changed, 39 insertions(+), 33 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/BoatClassDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/BoatClassDTO.java index b4e6fdc1cd4..02a33457d7b 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/BoatClassDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/BoatClassDTO.java @@ -14,24 +14,28 @@ public class BoatClassDTO extends NamedDTO implements Serializable, Comparable(newVersion.competitors); // clone competitor list so it's not identical to that of previous version CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "912p09871203987", - /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", new MeterDistance(5.05)), /* timeOnTimeFactor */ null, + /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", + BoatClassMasterdata._5O5.getHullLength(), BoatClassMasterdata._5O5.getHullBeam()), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); newVersion.competitors.add(13, somebodyNew); // insert a competitor; this should mess up all others' indexes; check if this works CompetitorDTO wolfgang = getPreviousCompetitorByName("HUNGER +JESS"); @@ -256,7 +257,8 @@ public class LeaderboardDTODiffingTest { newVersion.setSuppressedCompetitors(newSuppressedCompetitors); newVersion.competitors = new ArrayList(newVersion.competitors); // clone competitor list so it's not identical to that of previous version CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "912p09871203987", - /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", new MeterDistance(5.05)), /* timeOnTimeFactor */ null, + /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", + BoatClassMasterdata._5O5.getHullLength(), BoatClassMasterdata._5O5.getHullBeam()), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); newVersion.setSuppressed(newVersion.competitors.get(13), true); // suppress an existing competitor; compaction should reduce this to a single number only newVersion.setSuppressed(somebodyNew, true); // check that mixed mode with existing and new competitors works as well @@ -279,7 +281,8 @@ public class LeaderboardDTODiffingTest { public void testDisplayNameChange() { newVersion.competitors = new ArrayList(newVersion.competitors); // clone competitor list so it's not identical to that of previous version CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "912p09871203987", - /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", new MeterDistance(5.05)), /* timeOnTimeFactor */ null, + /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", + BoatClassMasterdata._5O5.getHullLength(), BoatClassMasterdata._5O5.getHullBeam()), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); newVersion.competitors.add(somebodyNew); newVersion.competitorDisplayNames = new HashMap(newVersion.competitorDisplayNames); @@ -309,7 +312,8 @@ public class LeaderboardDTODiffingTest { newVersion.setCompetitorsFromBestToWorst(r9, newOrdering); newVersion.competitors = new ArrayList(newVersion.competitors); // clone competitor list so it's not identical to that of previous version CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "912p09871203987", - /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", new MeterDistance(5.05)), /* timeOnTimeFactor */ null, + /* imageURL */ null, /* flagImageURL */ null, new BoatDTO("LSC", "GER 1234"), new BoatClassDTO("505", + BoatClassMasterdata._5O5.getHullLength(), BoatClassMasterdata._5O5.getHullBeam()), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null); newVersion.competitors.add(somebodyNew); newOrdering.add(somebodyNew); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/user/profile/GetFavoritesAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/user/profile/GetFavoritesAction.java index b4539d6d405..58029acce59 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/user/profile/GetFavoritesAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/user/profile/GetFavoritesAction.java @@ -34,7 +34,7 @@ public class GetFavoritesAction implements SailingAction { if (preferences != null) { for (BoatClassNotificationPreference pref : preferences.getBoatClasses()) { String name = pref.getBoatClass().getName(), displayName = pref.getBoatClass().getDisplayName(); - selected.add(new BoatClassDTO(name, displayName, pref.getBoatClass().getHullLength())); + selected.add(new BoatClassDTO(name, displayName, pref.getBoatClass().getHullLength(), pref.getBoatClass().getHullBeam())); notifyAboutUpcomingRaces |= pref.isNotifyAboutUpcomingRaces(); notifyAboutResults |= pref.isNotifyAboutResults(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/multiselection/AbstractSuggestedMultiSelectionBoatClassDataProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/multiselection/AbstractSuggestedMultiSelectionBoatClassDataProvider.java index 6245a0eab63..6a4c4a99d48 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/multiselection/AbstractSuggestedMultiSelectionBoatClassDataProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/multiselection/AbstractSuggestedMultiSelectionBoatClassDataProvider.java @@ -40,7 +40,7 @@ public abstract class AbstractSuggestedMultiSelectionBoatClassDataProvider exten List boatClasses = Arrays.asList(BoatClassMasterdata.values()); List suggestionItems = new ArrayList<>(); for (BoatClassMasterdata bcm : filter.applyFilter(queryTokens, boatClasses)) { - suggestionItems.add(new BoatClassDTO(bcm.getDisplayName(), bcm.getHullLength())); + suggestionItems.add(new BoatClassDTO(bcm.getDisplayName(), bcm.getHullLength(), bcm.getHullBeam())); } callback.setSuggestionItems(suggestionItems); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorEditDialog.java index ca595671334..72c63417a2a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorEditDialog.java @@ -188,7 +188,7 @@ public class CompetitorEditDialog extends DataEntryDialog { color = new InvalidColor(iae); } } - BoatClassDTO boatClass = new BoatClassDTO(boatClassName.getValue(), Distance.NULL); + BoatClassDTO boatClass = new BoatClassDTO(boatClassName.getValue(), Distance.NULL, Distance.NULL); BoatDTO boat = new BoatDTO(name.getText(), sailId.getText()); CompetitorDTO result = new CompetitorDTOImpl(name.getText(), color, email.getText(), /* twoLetterIsoCountryCode */ null, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsDialog.java index e3192b400f0..34611a7d115 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsDialog.java @@ -48,7 +48,7 @@ public abstract class RegattaWithSeriesAndFleetsDialog extends AbstractRegattaWi protected RegattaDTO getResult() { RegattaDTO result = getRegattaDTO(); result.setName(nameEntryField.getText().trim()); // trim to particularly avoid trailing blanks - result.boatClass = new BoatClassDTO(boatClassEntryField.getText(), Distance.NULL); + result.boatClass = new BoatClassDTO(boatClassEntryField.getText(), Distance.NULL, Distance.NULL); return result; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportManagementPanel.java index e9aea45d22e..dcd634590ca 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportManagementPanel.java @@ -342,7 +342,7 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat */ private RegattaDTO createRegattaDefaults(RegattaDTO regatta) { RegattaDTO result = new RegattaDTO("Default", ScoringSchemeType.LOW_POINT); - result.boatClass = new BoatClassDTO(BoatClassDTO.DEFAULT_NAME, /* hull length */ new MeterDistance(5)); + result.boatClass = new BoatClassDTO(BoatClassDTO.DEFAULT_NAME, /* hull length */ new MeterDistance(5), /* hull beam */ new MeterDistance(1.8)); result.series = regatta.series; result.rankingMetricType = RankingMetrics.ONE_DESIGN; return result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java index 37471e031d8..b15e2eb9be6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatOverlay.java @@ -7,7 +7,7 @@ import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.LatLng; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.base.Size; -import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.common.dto.BoatClassDTO; @@ -149,43 +149,38 @@ public class BoatOverlay extends CanvasOverlayV3 { } public Util.Pair getBoatScaleAndSize(BoatClassDTO boatClass) { - BoatClassMasterdata boatClassMasterdata = BoatClassMasterdata.resolveBoatClass(boatClass.getName()); - Size boatSizeInPixel = getCorrelatedBoatSize(boatClassMasterdata); - + Size boatSizeInPixel = getCorrelatedBoatSize(boatClass.getHullLength(), boatClass.getHullBeam()); double boatHullScaleFactor = boatSizeInPixel.getWidth() / (boatVectorGraphics.getHullLengthInPx()); double boatBeamScaleFactor = boatSizeInPixel.getHeight() / (boatVectorGraphics.getBeamInPx()); - // as the canvas contains the whole boat the canvas size relates to the overall length, not the hull length double scaledWidthSize = (boatVectorGraphics.getOverallLengthInPx()) * boatHullScaleFactor; double scaledBeamSize = (boatVectorGraphics.getOverallLengthInPx()) * boatBeamScaleFactor; - return new Util.Pair(Size.newInstance(boatHullScaleFactor, boatBeamScaleFactor), Size.newInstance(scaledWidthSize + scaledWidthSize / 2.0, scaledBeamSize + scaledBeamSize / 2.0)); } - private Size getCorrelatedBoatSize(BoatClassMasterdata boatClassMasterdata) { - Size boatSizeInPixel = calculateBoundingBox(mapProjection, boatFix.position, - boatClassMasterdata.getHullLength(), boatClassMasterdata.getHullBeam()); - changeBoatSizeIfTooShortHull(boatSizeInPixel, boatClassMasterdata); - changeBoatSizeIfTooNarrowBeam(boatSizeInPixel, boatClassMasterdata); + private Size getCorrelatedBoatSize(Distance hullLength, Distance hullBeam) { + Size boatSizeInPixel = calculateBoundingBox(mapProjection, boatFix.position, hullLength, hullBeam); + changeBoatSizeIfTooShortHull(boatSizeInPixel, hullLength, hullBeam); + changeBoatSizeIfTooNarrowBeam(boatSizeInPixel, hullLength, hullBeam); return boatSizeInPixel; } - private void changeBoatSizeIfTooShortHull(Size boatSizeInPixel, BoatClassMasterdata boatClassMasterdata) { + private void changeBoatSizeIfTooShortHull(Size boatSizeInPixel, Distance hullLength, Distance hullBeam) { // the minimum boat length is related to the hull of the boat, not the overall length double minBoatHullLengthInPx = boatVectorGraphics.getMinHullLengthInPx(); if (boatSizeInPixel.getWidth() < minBoatHullLengthInPx) { - double ratioBeanHullLength = boatClassMasterdata.getHullBeam().divide(boatClassMasterdata.getHullLength()); + double ratioBeanHullLength = hullBeam.divide(hullLength); boatSizeInPixel.setHeight(minBoatHullLengthInPx * ratioBeanHullLength); boatSizeInPixel.setWidth(minBoatHullLengthInPx); } } - private void changeBoatSizeIfTooNarrowBeam(Size boatSizeInPixel, BoatClassMasterdata boatClassMasterdata) { + private void changeBoatSizeIfTooNarrowBeam(Size boatSizeInPixel, Distance hullLength, Distance hullBeam) { // if the boat gets too narrow, use the minimum beam and scale the hull length according to aspect double minBoatBeamLengthInPx = boatVectorGraphics.getMinBeamLengthInPx(); if (boatSizeInPixel.getHeight() < minBoatBeamLengthInPx) { - double ratioHullBeanLength = boatClassMasterdata.getHullLength().divide(boatClassMasterdata.getHullBeam()); + double ratioHullBeanLength = hullLength.divide(hullBeam); boatSizeInPixel.setWidth(minBoatBeamLengthInPx * ratioHullBeanLength); boatSizeInPixel.setHeight(minBoatBeamLengthInPx); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 2f3d7938e72..645f7d52a50 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -879,7 +879,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S regattaDTO.endDate = regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null; BoatClass boatClass = regatta.getBoatClass(); if (boatClass != null) { - regattaDTO.boatClass = new BoatClassDTO(boatClass.getName(), boatClass.getDisplayName(), boatClass.getHullLength()); + regattaDTO.boatClass = new BoatClassDTO(boatClass.getName(), boatClass.getDisplayName(), boatClass.getHullLength(), boatClass.getHullBeam()); } if (regatta.getDefaultCourseArea() != null) { regattaDTO.defaultCourseAreaUuid = regatta.getDefaultCourseArea().getId(); From ff5d813ca233555b007966fd893fec0a78a3900b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sun, 8 Jan 2017 21:21:45 +0100 Subject: [PATCH 102/191] added VO60 (Volvo Ocean 60) as new BoatClassMasterdata entry --- .../src/com/sap/sailing/domain/common/BoatClassMasterdata.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java index dbfc53adde6..cb7839f8336 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java @@ -100,6 +100,7 @@ public enum BoatClassMasterdata { TORNADO ("Tornado Catamaran", true, 6.10, 3.02, BoatHullType.CATAMARAN, true, "Tornado", "Tornado Cat"), TRIAS ("Trias", true, 9.20, 2.12, BoatHullType.MONOHULL, true), VIPER_640 ("Viper 640", true, 6.43, 2.49, BoatHullType.MONOHULL, true), + VO60 ("VO60", true, 19.5, 5.25, BoatHullType.MONOHULL, true, "Volvo Ocean 60", "VolvoOcean60", "W60", "Whitbread60", "Whitbread 60"), VX_ONE ("VX ONE", true, 5.79, 2.19, BoatHullType.MONOHULL, true, "VX-ONE"), X_99 ("X-99", true, 9.96, 2.95, BoatHullType.MONOHULL, true, "X99"), From 174fa80f47a7d9634ad8c3b85c9f353f07215939 Mon Sep 17 00:00:00 2001 From: Maximilian Pflueger Date: Mon, 9 Jan 2017 08:06:01 +0000 Subject: [PATCH 103/191] Updated onboarding (markdown) --- wiki/howto/onboarding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/howto/onboarding.md b/wiki/howto/onboarding.md index c4e32cec374..d29634b9923 100644 --- a/wiki/howto/onboarding.md +++ b/wiki/howto/onboarding.md @@ -87,7 +87,7 @@ Beside the installation script for Eclipse Mars, there is also one for the new E * Wait until the target platform has been resolved completely * Rebuild all projects 4. Run the Race Analysis Suite - * Start the MongoDB + * Start the MongoDB (cd /somePathto MongoDB/mongodb/bin; rm c:/data/SAP/sailing/mongodb/mongod.lock; ./mongod --dbpath c:/data/SAP/sailing/mongodb) * Start the appropriate Eclipse launch configuration (e.g. 'Sailing Server (Proxy)') You´ll find this in the debug dropdown * Run "Security UI sdm" in the debug dropdown * Run "SailingGWT" in the debug dropdown From 91668b3a4cae2e9868c1bb7b3db2e587bf1ccc44 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 9 Jan 2017 10:22:02 +0100 Subject: [PATCH 104/191] removed windStatusJson servlet; it wasn't used at all according to our 2016 server logs (AWStats) Change-Id: I018c6a6a7ea0f0c369a8e875ad5a32333d7f316f --- .../SailingGWT sdm.launch | 156 +++++++++--------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 150 ++++++++--------- .../WEB-INF/web.xml | 8 - .../gateway/impl/WindStatusJsonServlet.java | 140 ---------------- 4 files changed, 153 insertions(+), 301 deletions(-) delete mode 100644 java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 4a15fa5eb4b..4c3271a52ac 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -1,78 +1,78 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 05d195e0e53..0c4449938c3 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,75 +1,75 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server.gateway/WEB-INF/web.xml b/java/com.sap.sailing.server.gateway/WEB-INF/web.xml index b8795dece22..9752cc0f343 100644 --- a/java/com.sap.sailing.server.gateway/WEB-INF/web.xml +++ b/java/com.sap.sailing.server.gateway/WEB-INF/web.xml @@ -139,14 +139,6 @@ WindStatusHtmlServlet /windStatus - - WindStatusJsonServlet - com.sap.sailing.server.gateway.impl.WindStatusJsonServlet - - - WindStatusJsonServlet - /windStatusJson - TrackFilesExportPostServlet com.sap.sailing.server.gateway.trackfiles.impl.TrackFilesExportPostServlet diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java deleted file mode 100644 index 856f1abb4b6..00000000000 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.sap.sailing.server.gateway.impl; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Deque; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.igtimiadapter.BulkFixReceiver; -import com.sap.sailing.domain.igtimiadapter.IgtimiWindListener; -import com.sap.sse.common.Duration; -import com.sap.sse.common.TimePoint; -import com.sap.sse.common.impl.MillisecondsTimePoint; - -/** - * Shows the state of wind receivers regardless of them being attached to a race. - * Currently Igtimi is supported. - * - * @author Simon Marcel Pamies - * - */ -public class WindStatusJsonServlet extends WindStatusServlet implements IgtimiWindListener, BulkFixReceiver { - - private static final long serialVersionUID = 6091476602985063675L; - private static final String PARAM_SHOW_DUMMY_DATA = "showDummyData"; - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - String reinitializeWindReceiverParameter = req.getParameter(PARAM_RELOAD_WIND_RECEIVER); - String showDummyDataAsString = req.getParameter(PARAM_SHOW_DUMMY_DATA); - resp.setContentType("application/json"); - PrintWriter out = resp.getWriter(); - boolean showDummyData = showDummyDataAsString != null && showDummyDataAsString.equalsIgnoreCase("true"); - if (showDummyData) { - out.print(generateDummyData().toJSONString()); - } else { - initializeWindReceiver(reinitializeWindReceiverParameter != null && reinitializeWindReceiverParameter.equalsIgnoreCase("true")); - JSONObject windInformation = new JSONObject(); - windInformation.put("windFixesReceivedSoFar", getIgtimiMessagesRawCount()+getLastExpeditionMessages().size()); - JSONArray windFixesIgtimi = new JSONArray(); - if (getLastIgtimiMessages() != null && !getLastIgtimiMessages().isEmpty()) { - for(Entry> deviceAndMessagesList: getLastIgtimiMessages().entrySet()) { - final Deque copyOfLastIgtimiMessages; - synchronized (deviceAndMessagesList.getValue()) { - copyOfLastIgtimiMessages = new ArrayDeque<>(deviceAndMessagesList.getValue()); - } - if(copyOfLastIgtimiMessages.size() > 0) { - TimePoint latestTimePoint = copyOfLastIgtimiMessages.peek().getWind().getTimePoint(); - long lastFixDiffInMs = System.currentTimeMillis() - latestTimePoint.asMillis(); - windInformation.put("lastWindFixMillisecondsAgo", lastFixDiffInMs); - } - Iterator messageIt = copyOfLastIgtimiMessages.iterator(); - while (messageIt.hasNext()){ - JSONObject windFix = new JSONObject(); - windFix.put("sensorId", deviceAndMessagesList.getKey()); - IgtimiMessageInfo message = messageIt.next(); - windFix.put("sensorPositionLatitude", message.getWind().getPosition().getLatDeg()); - windFix.put("sensorPositionLongitude", message.getWind().getPosition().getLngDeg()); - windFix.put("windFromInDegrees", message.getWind().getFrom().getDegrees()); - windFix.put("windToInDegrees", message.getWind().getFrom().reverse().getDegrees()); - windFix.put("windSpeedInMetersPerSecond", message.getWind().getMetersPerSecond()); - windFix.put("windSpeedInStatuteMilesPerHour", message.getWind().getStatuteMilesPerHour()); - windFix.put("windSpeedInKilometersPerHour", message.getWind().getKilometersPerHour()); - windFix.put("windSpeedInKnots", message.getWind().getKnots()); - windFix.put("measurementTimePointAsMillis", message.getWind().getTimePoint().asMillis()); - windFixesIgtimi.add(windFix); - } - } - } - windInformation.put("windFixes", windFixesIgtimi); - out.print(windInformation.toJSONString()); - } - out.close(); - } - - @SuppressWarnings("serial") - private JSONObject generateDummyData() { - List> dummyWindFixes = new ArrayList>(); - dummyWindFixes.add(new HashMap() {{ - put("sensorId", "DD-EE-HG"); - put("sensorPositionLatitude", 49.2511599999); - put("sensorPositionLongitude", 8.624829999); - put("windFromInDegrees", 90.0); - put("windToInDegrees", 270.0); - put("windSpeedInMetersPerSecond", 6.944444); - put("windSpeedInKilometersPerHour", 25.0); - put("windSpeedInStatuteMilesPerHour", 15.43); - put("windSpeedInKnots", 13.498920086); - put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(4)).asMillis()); - }}); - dummyWindFixes.add(new HashMap() {{ - put("sensorId", "DD-AA-EF"); - put("sensorPositionLatitude", 49.244489999); - put("sensorPositionLongitude", 8.6253399999); - put("windFromInDegrees", 100.0); - put("windToInDegrees", 280.0); - put("windSpeedInMetersPerSecond", 6.944444); - put("windSpeedInKilometersPerHour", 25.0); - put("windSpeedInStatuteMilesPerHour", 15.43); - put("windSpeedInKnots", 13.498920086); - put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(5)).asMillis()); - }}); - dummyWindFixes.add(new HashMap() {{ - put("sensorId", "DD-UU-KL"); - put("sensorPositionLatitude", 49.243539999); - put("sensorPositionLongitude", 8.6146099999); - put("windFromInDegrees", 85.0); - put("windToInDegrees", 265.0); - put("windSpeedInMetersPerSecond", 6.944444); - put("windSpeedInKilometersPerHour", 25.0); - put("windSpeedInStatuteMilesPerHour", 15.43); - put("windSpeedInKnots", 13.498920086); - put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(6)).asMillis()); - }}); - JSONObject windInformation = new JSONObject(); - windInformation.put("windFixesReceivedSoFar", 3); - JSONArray windFixesIgtimi = new JSONArray(); - windInformation.put("lastWindFixMillisecondsAgo", 1239876); - for (Map windDummyFix : dummyWindFixes) { - JSONObject windFix = new JSONObject(); - windFix.putAll(windDummyFix); - windFixesIgtimi.add(windFix); - } - windInformation.put("windFixes", windFixesIgtimi); - return windInformation; - } - -} From a09823d20a5c7fec5c1cc9d5fcec7e9993a1d5f6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 9 Jan 2017 11:54:30 +0100 Subject: [PATCH 105/191] use Class object instead of class name to create service tracker Change-Id: I3ed24acc8547391111e6397f80c5d750efbdf68f --- .../src/com/sap/sailing/server/impl/RacingEventServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 878cba359df..5b386c00f69 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -3327,7 +3327,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes result = Collections.singleton((WindTrackerFactory) ExpeditionWindTrackerFactory.getInstance()); } else { ServiceTracker tracker = new ServiceTracker( - bundleContext, WindTrackerFactory.class.getName(), null); + bundleContext, WindTrackerFactory.class, null); tracker.open(); result = new HashSet<>(); for (WindTrackerFactory factory : tracker.getServices(new WindTrackerFactory[0])) { From ba374b30d6da83f7667ca95807dde5b4c2bdd5b3 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 10 Jan 2017 10:32:17 +0100 Subject: [PATCH 106/191] Removed package import to org.apache.commons.logging from bundles that seem to not need commons-logging at all --- java/com.sap.sse.filestorage/META-INF/MANIFEST.MF | 3 +-- java/com.sap.sse.security/META-INF/MANIFEST.MF | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF index 1dd0213f6cf..93a22a94350 100644 --- a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF @@ -8,8 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.sap.sse.filestorage, com.sap.sse.filestorage.impl, com.sap.sse.filestorage.testsupport -Import-Package: org.apache.commons.logging, - org.osgi.framework;version="1.8.0", +Import-Package: org.osgi.framework;version="1.8.0", org.osgi.util.tracker;version="1.5.1" Bundle-Activator: com.sap.sse.filestorage.impl.Activator Require-Bundle: org.apache.servicemix.bundles.aws-java-sdk;bundle-version="1.9.8", diff --git a/java/com.sap.sse.security/META-INF/MANIFEST.MF b/java/com.sap.sse.security/META-INF/MANIFEST.MF index 8b5bd334a42..797ca5b03e5 100644 --- a/java/com.sap.sse.security/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.security/META-INF/MANIFEST.MF @@ -12,7 +12,6 @@ Import-Package: com.sap.sse.util, javax.ws.rs;version="1.1.1", javax.ws.rs.core;version="1.1.1", javax.ws.rs.ext;version="1.1.1", - org.apache.commons.logging, org.codehaus.jackson.jaxrs;version="1.9.13", org.osgi.framework;version="1.3.0", org.osgi.util.tracker;version="1.5.1" From 8fa393278ed6d1cda3660996db26246665dd60b1 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 10 Jan 2017 10:33:38 +0100 Subject: [PATCH 107/191] Cleanup of com.sap.sse.filestorage.test. I guess this is just a leftover --- .../META-INF/MANIFEST.MF | 3 +-- java/com.sap.sse.filestorage.test/pom.xml | 20 ------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF index d1509cfd315..1b81e9c08b7 100644 --- a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF @@ -10,5 +10,4 @@ Require-Bundle: org.hamcrest;bundle-version="1.1.0", org.junit;bundle-version="4.8.2", org.apache.commons.io;bundle-version="2.2.0", com.sap.sse.replication.testsupport -Import-Package: org.apache.commons.logging, - org.slf4j;version="1.6.4" +Import-Package: org.apache.commons.logging diff --git a/java/com.sap.sse.filestorage.test/pom.xml b/java/com.sap.sse.filestorage.test/pom.xml index d87194b0d23..871455584ed 100644 --- a/java/com.sap.sse.filestorage.test/pom.xml +++ b/java/com.sap.sse.filestorage.test/pom.xml @@ -9,24 +9,4 @@ com.sap.sse.filestorage.test eclipse-test-plugin - - - - - org.eclipse.tycho - target-platform-configuration - - - - - eclipse-plugin - jcl.over.slf4j - 1.6.4 - - - - - - - From 2c84c1a910e98904cbeb216525e2381c099867ee Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 10 Jan 2017 11:15:43 +0100 Subject: [PATCH 108/191] Formatting and removed TODO --- wiki/howto/development/fix-tracking.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/wiki/howto/development/fix-tracking.md b/wiki/howto/development/fix-tracking.md index 59e9eb679d9..fcc12bb04b0 100644 --- a/wiki/howto/development/fix-tracking.md +++ b/wiki/howto/development/fix-tracking.md @@ -41,12 +41,6 @@ In addition there is a special type of fix called `DoubleVectorFix` that can be The further chapters will guide through the process of extending the system for a new fix type or the usage of already existing fix types. -### Fix loading process - -TODO -* Add a graph -* Visitor pattern - ### Implementing new persistent fix type Any fix type to be persisted by `SensorFixStore` implementations needs to implement the `Timed` interface. @@ -101,5 +95,3 @@ Further `DoubleVectorFixImporter` implementations can be registered to the OSGi The importer to be used to process the file is defined by the user by choosing the appropriate importer in the admin console upload formular. The list available importer types is retrieved dynamically in the administration console. Therefore, simply registering an importer as a service in the OSGi registry makes it available in the admin ui. - - From 11fc43246105be889996573948fa7e56c59a2d95 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 10 Jan 2017 11:21:26 +0100 Subject: [PATCH 109/191] Added some JavaDocs to OSGiBasedTrackedRegattaListener --- .../impl/OSGiBasedTrackedRegattaListener.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/OSGiBasedTrackedRegattaListener.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/OSGiBasedTrackedRegattaListener.java index dec61364235..5a430064c98 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/OSGiBasedTrackedRegattaListener.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/OSGiBasedTrackedRegattaListener.java @@ -2,6 +2,7 @@ package com.sap.sailing.server.impl; import java.util.function.Consumer; +import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; @@ -10,10 +11,18 @@ import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaListener; import com.sap.sse.util.ServiceTrackerFactory; +/** + * Convenient implementation of {@link TrackedRegattaListener} that delegates to {@link TrackedRegattaListener} + * instances found in the OSGi service registry. + */ public class OSGiBasedTrackedRegattaListener implements TrackedRegattaListener { - + private ServiceTracker serviceTracker; + /** + * A {@link ServiceTracker} is created using the given {@link BundleContext}. To ensure proper cleanup when the + * calling {@link BundleActivator} is stopped, call {@link #close()}. + */ public OSGiBasedTrackedRegattaListener(BundleContext context) { serviceTracker = ServiceTrackerFactory.createAndOpen(context, TrackedRegattaListener.class); serviceTracker.open(true); @@ -22,11 +31,15 @@ public class OSGiBasedTrackedRegattaListener implements TrackedRegattaListener { public void close() { serviceTracker.close(); } - + + /** + * Encapsulates the common code to iterate over all TrackedRegattaListener instances that are published to the OSGi + * service registry. + */ private void forEachListener(Consumer consumer) { - for(ServiceReference serviceReference : serviceTracker.getServiceReferences()) { + for (ServiceReference serviceReference : serviceTracker.getServiceReferences()) { TrackedRegattaListener listener = serviceTracker.getService(serviceReference); - if(listener != null) { + if (listener != null) { consumer.accept(listener); } } From 2cfc7a5819892ecbf7c96efdd9bb0d9f42a4644e Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 10 Jan 2017 13:36:59 +0100 Subject: [PATCH 110/191] Added package import of commons-logging to com.sap.sse.filestorage again, because of a NoClassDefFoundError --- java/com.sap.sse.filestorage/META-INF/MANIFEST.MF | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF index 93a22a94350..1dd0213f6cf 100644 --- a/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage/META-INF/MANIFEST.MF @@ -8,7 +8,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.sap.sse.filestorage, com.sap.sse.filestorage.impl, com.sap.sse.filestorage.testsupport -Import-Package: org.osgi.framework;version="1.8.0", +Import-Package: org.apache.commons.logging, + org.osgi.framework;version="1.8.0", org.osgi.util.tracker;version="1.5.1" Bundle-Activator: com.sap.sse.filestorage.impl.Activator Require-Bundle: org.apache.servicemix.bundles.aws-java-sdk;bundle-version="1.9.8", From f7a924a2e34300083b652b22bd0b25f88fc6daf2 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Tue, 10 Jan 2017 15:53:24 +0100 Subject: [PATCH 111/191] removed warnings in Android Studio (wrong parameter type) --- .../com.sap.sailing.racecommittee.app/res/values-de/strings.xml | 2 +- mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml index 29c9e302ede..398f1bd11ea 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml @@ -475,7 +475,7 @@ Manuelle Eingabe Gruppenwettfahrt Wettfahrt auswählen - \'%1$s\' zur Ergebnisliste hinzugefügt an Position %2$s + \'%1$s\' zur Ergebnisliste hinzugefügt an Position %2$d Anmelden Position Server erfolgreich geändert auf %1$s. diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml index d31aec67500..083a364f50b 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml @@ -503,7 +503,7 @@ Manual Input Group Racing Select Race - Added \'%1$s\' to result list at position %2$s + Added \'%1$s\' to result list at position %2$d Getting Started Position Server successfully changed to %1$s. From 2b2e1f71e7fd82d4e83a6b270c827c6ab1794a3b Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Tue, 10 Jan 2017 16:07:43 +0100 Subject: [PATCH 112/191] fixed remove competitor from finishing list --- .../racecommittee/app/ui/adapters/FinishListAdapter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/FinishListAdapter.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/FinishListAdapter.java index 09625c7da3b..451726b5bbc 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/FinishListAdapter.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/FinishListAdapter.java @@ -159,9 +159,10 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter Date: Wed, 11 Jan 2017 08:53:58 +0100 Subject: [PATCH 113/191] Added package import to org.apache.commons.logging of com.sap.sse.filestorage.test again because it turned out that this is necessary for the tests --- java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF index 1b81e9c08b7..d1509cfd315 100644 --- a/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.filestorage.test/META-INF/MANIFEST.MF @@ -10,4 +10,5 @@ Require-Bundle: org.hamcrest;bundle-version="1.1.0", org.junit;bundle-version="4.8.2", org.apache.commons.io;bundle-version="2.2.0", com.sap.sse.replication.testsupport -Import-Package: org.apache.commons.logging +Import-Package: org.apache.commons.logging, + org.slf4j;version="1.6.4" From b041e3218ae483ac7334250ae2b1ac859b051cd1 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 11 Jan 2017 10:23:23 +0100 Subject: [PATCH 114/191] rolling back changes of com.sap.sse.filestorage.test to the state of b0ca44d to make the tycho build work again --- java/com.sap.sse.filestorage.test/pom.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/java/com.sap.sse.filestorage.test/pom.xml b/java/com.sap.sse.filestorage.test/pom.xml index 871455584ed..d87194b0d23 100644 --- a/java/com.sap.sse.filestorage.test/pom.xml +++ b/java/com.sap.sse.filestorage.test/pom.xml @@ -9,4 +9,24 @@ com.sap.sse.filestorage.test eclipse-test-plugin + + + + + org.eclipse.tycho + target-platform-configuration + + + + + eclipse-plugin + jcl.over.slf4j + 1.6.4 + + + + + + + From e78f81a70728dfe40b8fd504fffd388ffc051a79 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 11 Jan 2017 14:29:28 +0100 Subject: [PATCH 115/191] removed igtimi.client.redirecturi system property; use https://www.sapsailing.com/... for a default Igtimi redirect URI; use the client side Window.Location base URL as the redirect URI for Oauth web-based account adding; this usually has problems with non-matching redirect URIs with the app described on Igtimi's side, but it will help avoid accidentally adding accounts to the archive server Change-Id: Id2a6c34bb8846d5675d4c9e3b6bd1397cf149da0 --- .../SailingDashboardsGWT sdm.launch | 92 +++++++-------- .../SailingDashboardsGWT.launch | 90 +++++++-------- .../impl/WebSocketServerListTest.java | 2 +- .../igtimiadapter/oauth/SignInTest.java | 6 +- .../websocket/WebSocketTest.java | 2 +- .../sailing/domain/igtimiadapter/Client.java | 4 +- .../IgtimiConnectionFactory.java | 5 +- .../domain/igtimiadapter/impl/Activator.java | 6 +- .../domain/igtimiadapter/impl/ClientImpl.java | 22 +++- .../impl/IgtimiConnectionFactoryImpl.java | 9 +- .../ui/adminconsole/IgtimiAccountsPanel.java | 5 +- .../sailing/gwt/ui/client/SailingService.java | 2 +- .../gwt/ui/client/SailingServiceAsync.java | 2 +- .../gwt/ui/server/SailingServiceImpl.java | 4 +- .../SailingServer (Proxy).launch | 4 +- .../Security UI sdm.launch | 108 +++++++++--------- .../Security UI.launch | 106 ++++++++--------- 17 files changed, 244 insertions(+), 225 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch index c2d9abb8f9c..f7d00da3fd0 100644 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch @@ -1,46 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch index f1fab25cd8b..25eb0c93742 100644 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch @@ -1,45 +1,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WebSocketServerListTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WebSocketServerListTest.java index 0349411a1a8..83be473e440 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WebSocketServerListTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/impl/WebSocketServerListTest.java @@ -23,7 +23,7 @@ public class WebSocketServerListTest { @Test public void testWebSocketServerList() throws IllegalStateException, ClientProtocolException, IOException, ParseException, URISyntaxException { final ClientImpl testAppClient = new ClientImpl("7fcdd217e0aa16090edb4ad55b09ec43b2021090e209541fc9b7003c2a2b70c6", - "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http://127.0.0.1:8888/igtimi/oauth/v1/authorizationcallback"); + "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http", "127.0.0.1", "8888", "/igtimi/oauth/v1/authorizationcallback"); MongoDBConfiguration mongoTestConfig = MongoDBConfiguration.getDefaultTestConfiguration(); MongoDBService mongoTestService = mongoTestConfig.getService(); final IgtimiConnectionFactoryImpl igtimiConnectionFactory = new IgtimiConnectionFactoryImpl(testAppClient, PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoTestService), diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/oauth/SignInTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/oauth/SignInTest.java index 46b52a07481..634834a9913 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/oauth/SignInTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/oauth/SignInTest.java @@ -37,7 +37,7 @@ public class SignInTest { IllegalAccessException, ClassCastException, ParseException { // use the credentials of "Another Test App" final Client testAppClient = new ClientImpl("7fcdd217e0aa16090edb4ad55b09ec43b2021090e209541fc9b7003c2a2b70c6", - "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http://127.0.0.1:8888/igtimi/oauth/v1/authorizationcallback"); + "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http", "127.0.0.1", "8888", "/igtimi/oauth/v1/authorizationcallback"); MongoDBConfiguration mongoTestConfig = MongoDBConfiguration.getDefaultTestConfiguration(); MongoDBService mongoTestService = mongoTestConfig.getService(); final IgtimiConnectionFactoryImpl igtimiConnectionFactory = new IgtimiConnectionFactoryImpl(testAppClient, PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoTestService), @@ -55,7 +55,7 @@ public class SignInTest { InstantiationException, IllegalAccessException, ClassCastException { // use the credentials of "Another Test App" final Client testAppClient = new ClientImpl("a4cecd8593e12d43a03433a6db0eea243a411749f93c278dce6a26d4804eebd2", - "4d66022d1ec3e2991f8053514495b61cc076ff02d664f0dc8f3df9150c3864ef", "http://1.2.3.4"); + "4d66022d1ec3e2991f8053514495b61cc076ff02d664f0dc8f3df9150c3864ef", "http", "1.2.3.4", null, "/"); MongoDBConfiguration mongoTestConfig = MongoDBConfiguration.getDefaultTestConfiguration(); MongoDBService mongoTestService = mongoTestConfig.getService(); final IgtimiConnectionFactoryImpl igtimiConnectionFactory = new IgtimiConnectionFactoryImpl(testAppClient, PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoTestService), @@ -71,7 +71,7 @@ public class SignInTest { InstantiationException, IllegalAccessException, ClassCastException, ParseException { // use the credentials of "Another Test App" final Client testAppClient = new ClientImpl("a4cecd8593e12d43a03433a6db0eea243a411749f93c278dce6a26d4804eebd2", - "4d66022d1ec3e2991f8053514495b61cc076ff02d664f0dc8f3df9150c3864ef", "http://1.2.3.4"); + "4d66022d1ec3e2991f8053514495b61cc076ff02d664f0dc8f3df9150c3864ef", "http", "1.2.3.4", null, "/"); MongoDBConfiguration mongoTestConfig = MongoDBConfiguration.getDefaultTestConfiguration(); MongoDBService mongoTestService = mongoTestConfig.getService(); final IgtimiConnectionFactory igtimiConnectionFactory = new IgtimiConnectionFactoryImpl(testAppClient, PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoTestService), diff --git a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketTest.java b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketTest.java index eb3f52bf7fa..6a16cf8bb4e 100755 --- a/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketTest.java +++ b/java/com.sap.sailing.domain.igtimiadapter.test/src/com/sap/sailing/domain/igtimiadapter/websocket/WebSocketTest.java @@ -155,7 +155,7 @@ public class WebSocketTest { public void testWebSocketConnect() throws Exception { final List allFixesReceived = new ArrayList<>(); final Client client = new ClientImpl("7fcdd217e0aa16090edb4ad55b09ec43b2021090e209541fc9b7003c2a2b70c6", - "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http://127.0.0.1:8888/igtimi/oauth/v1/authorizationcallback"); + "aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a", "http", "127.0.0.1", "8888", "/igtimi/oauth/v1/authorizationcallback"); MongoDBConfiguration mongoTestConfig = MongoDBConfiguration.getDefaultTestConfiguration(); MongoDBService mongoTestService = mongoTestConfig.getService(); final IgtimiConnectionFactory igtimiConnectionFactory = new IgtimiConnectionFactoryImpl(client, PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoTestService), diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/Client.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/Client.java index ec6656a32d9..f76da91101d 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/Client.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/Client.java @@ -18,5 +18,7 @@ public interface Client { String getSecret(); - String getRedirectUri(); + String getDefaultRedirectUri(); + + String getRedirectUri(String redirectProtocol, String redirectHost, String redirectPort); } diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnectionFactory.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnectionFactory.java index a3c479940a3..04bc60e64b3 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnectionFactory.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/IgtimiConnectionFactory.java @@ -32,8 +32,11 @@ public interface IgtimiConnectionFactory { * Obtains a URL that a user agent (e.g., a web browser) can be sent to in order to allow that user to authenticate * and then authorize this factory's {@link Client} for accessing the user's Igtimi data. The URL is chosen such that * it redirects to the {@link AuthorizationCallback} with the code response type. + * @param redirectProtocol TODO + * @param redirectHost TODO + * @param redirectPort TODO */ - String getAuthorizationUrl(); + String getAuthorizationUrl(String redirectProtocol, String redirectHost, String redirectPort); /** * Using the "account" service, retrieves the {@link Account} information for this access token and stores the token diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/Activator.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/Activator.java index 66140374735..f9c2941f1e6 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/Activator.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/Activator.java @@ -38,10 +38,9 @@ public class Activator implements BundleActivator { private static final String DEFAULT_CLIENT_ID = "d29eae61621af3057db0e638232a027e96b1d2291b1b89a1481dfcac075b0bf4"; private static final String DEFAULT_CLIENT_SECRET = "537dbd14a84fcb470c91d85e8c4f8f7a356ac5ffc8727594d1bfe900ee5942ef"; - private static final String DEFAULT_CLIENT_REDIRECT_URI = "http://sapsailing.com/igtimi/oauth/v1/authorizationcallback"; + private static final String CLIENT_REDIRECT_PATH = "/igtimi/oauth/v1/authorizationcallback"; private static final String CLIENT_ID_PROPERTY_NAME = "igtimi.client.id"; private static final String CLIENT_SECRET_PROPERTY_NAME = "igtimi.client.secret"; - private static final String CLIENT_REDIRECT_URI_PROPERTY_NAME = "igtimi.client.redirecturi"; private final Future connectionFactory; private final Future windTrackerFactory; private final ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactoryWithPriority(Thread.NORM_PRIORITY, /* daemon */ true)); @@ -50,8 +49,7 @@ public class Activator implements BundleActivator { logger.info(getClass().getName()+" constructor"); final String clientId = System.getProperty(CLIENT_ID_PROPERTY_NAME, DEFAULT_CLIENT_ID); final String clientSecret = System.getProperty(CLIENT_SECRET_PROPERTY_NAME, DEFAULT_CLIENT_SECRET); - final String clientRedirectUri = System.getProperty(CLIENT_REDIRECT_URI_PROPERTY_NAME, DEFAULT_CLIENT_REDIRECT_URI); - final Client client = new ClientImpl(clientId, clientSecret, clientRedirectUri); + final Client client = new ClientImpl(clientId, clientSecret, "https", "www.sapsailing.com", /* port==null means default */ null, CLIENT_REDIRECT_PATH); final DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDefaultDomainObjectFactory(); final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(); connectionFactory = executor.submit(new Callable() { diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java index 2ea4ea52b55..13b8e2ea6cc 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java @@ -5,13 +5,19 @@ import com.sap.sailing.domain.igtimiadapter.Client; public class ClientImpl implements Client { private final String id; private final String secret; - private final String redirectUri; + private final String defaultRedirectProtocol; + private final String defaultRedirectHostname; + private final String defaultRedirectPort; + private final String redirectUriPath; - public ClientImpl(String id, String secret, String redirectUri) { + public ClientImpl(String id, String secret, String defaultRedirectProtocol, String defaultRedirectHostname, String defaultRedirectPort, String redirectUriPath) { super(); this.id = id; this.secret = secret; - this.redirectUri = redirectUri; + this.defaultRedirectProtocol = defaultRedirectProtocol; + this.defaultRedirectHostname = defaultRedirectHostname; + this.defaultRedirectPort = defaultRedirectPort; + this.redirectUriPath = redirectUriPath; } @Override @@ -25,7 +31,13 @@ public class ClientImpl implements Client { } @Override - public String getRedirectUri() { - return redirectUri; + public String getDefaultRedirectUri() { + return getRedirectUri(defaultRedirectProtocol, defaultRedirectHostname, defaultRedirectPort); + } + + @Override + public String getRedirectUri(String redirectProtocol, String redirectHost, String redirectPort) { + return redirectProtocol+"://"+redirectHost+(redirectPort==null?"":(":"+redirectPort))+ + (redirectUriPath.startsWith("/")?redirectUriPath:"/"+redirectUriPath); } } diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java index 9d7c3f12d43..42f672b98ef 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiConnectionFactoryImpl.java @@ -112,7 +112,7 @@ public class IgtimiConnectionFactoryImpl implements IgtimiConnectionFactory { } private String getOauthAuthorizeUrl() throws UnsupportedEncodingException { - return getBaseUrl()+"/oauth/authorize?response_type=code&client_id="+getClient().getId()+"&redirect_uri="+URLEncoder.encode(getClient().getRedirectUri(), "UTF-8"); + return getBaseUrl()+"/oauth/authorize?response_type=code&client_id="+getClient().getId()+"&redirect_uri="+URLEncoder.encode(getClient().getDefaultRedirectUri(), "UTF-8"); } /** @@ -320,8 +320,9 @@ public class IgtimiConnectionFactoryImpl implements IgtimiConnectionFactory { } @Override - public String getAuthorizationUrl() { - return getBaseUrl()+"/oauth/authorize?response_type=code&client_id="+getClient().getId()+"&redirect_uri="+client.getRedirectUri(); + public String getAuthorizationUrl(String redirectProtocol, String redirectHost, String redirectPort) { + return getBaseUrl()+"/oauth/authorize?response_type=code&client_id="+getClient().getId()+ + "&redirect_uri="+client.getRedirectUri(redirectProtocol, redirectHost, redirectPort); } private Client getClient() { @@ -344,7 +345,7 @@ public class IgtimiConnectionFactoryImpl implements IgtimiConnectionFactory { urlParameters.add(new BasicNameValuePair("client_id", getClient().getId())); urlParameters.add(new BasicNameValuePair("client_secret", getClient().getSecret())); urlParameters.add(new BasicNameValuePair("code", code)); - urlParameters.add(new BasicNameValuePair("redirect_uri", getClient().getRedirectUri())); + urlParameters.add(new BasicNameValuePair("redirect_uri", getClient().getDefaultRedirectUri())); post.setEntity(new UrlEncodedFormEntity(urlParameters)); HttpResponse response = client.execute(post); JSONObject accessTokenJson = ConnectivityUtils.getJsonFromResponse(response); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java index d0a5e3efb9c..5b5d93e9063 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java @@ -156,7 +156,10 @@ public class IgtimiAccountsPanel extends FlowPanel { } }); add(refreshButton); - this.sailingService.getIgtimiAuthorizationUrl(new AsyncCallback() { + final String protocol = Window.Location.getProtocol(); + final String hostname = Window.Location.getHostName(); + final String port = Window.Location.getPort(); + this.sailingService.getIgtimiAuthorizationUrl(protocol, hostname, port, new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(IgtimiAccountsPanel.this.stringMessages.errorGettingIgtimiAuthorizationUrl(caught.getMessage()), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index e8a6bc89cb5..7f32068f28e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -453,7 +453,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS Iterable getAllIgtimiAccountEmailAddresses(); - String getIgtimiAuthorizationUrl(); + String getIgtimiAuthorizationUrl(String redirectProtocol, String redirectHostname, String redirectPort); boolean authorizeAccessToIgtimiUser(String eMailAddress, String password) throws Exception; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 48f3df41ef8..52642309e93 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -620,7 +620,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getAllIgtimiAccountEmailAddresses(AsyncCallback> callback); - void getIgtimiAuthorizationUrl(AsyncCallback callback); + void getIgtimiAuthorizationUrl(String redirectProtocol, String redirectHostname, String redirectPort, AsyncCallback callback); void authorizeAccessToIgtimiUser(String eMailAddress, String password, AsyncCallback callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 645f7d52a50..bfbe77086cf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -5087,8 +5087,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public String getIgtimiAuthorizationUrl() { - return getIgtimiConnectionFactory().getAuthorizationUrl(); + public String getIgtimiAuthorizationUrl(String redirectProtocol, String redirectHostname, String redirectPort) { + return getIgtimiConnectionFactory().getAuthorizationUrl(redirectProtocol, redirectHostname, redirectPort); } @Override diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index 8bfc8b200e7..4dd423cadad 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/java/com.sap.sse.security.ui/Security UI sdm.launch b/java/com.sap.sse.security.ui/Security UI sdm.launch index d3848dc2ec0..42497e6bbf2 100644 --- a/java/com.sap.sse.security.ui/Security UI sdm.launch +++ b/java/com.sap.sse.security.ui/Security UI sdm.launch @@ -1,54 +1,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sse.security.ui/Security UI.launch b/java/com.sap.sse.security.ui/Security UI.launch index 92bac81c128..0262bee9a54 100644 --- a/java/com.sap.sse.security.ui/Security UI.launch +++ b/java/com.sap.sse.security.ui/Security UI.launch @@ -1,53 +1,53 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 8b0449a147e78a5e8e2ef3952ec8ed22052378bb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 11 Jan 2017 15:02:03 +0100 Subject: [PATCH 116/191] avoid instanceof check by using a RaceLog event visitor# modified: java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java Change-Id: I472aa0df36165a078a541b532f741b1ce13cbbd4 --- .../sailing/server/impl/RaceLogScoringReplicator.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java index cd71012d9e0..56e3f0ef579 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java @@ -8,6 +8,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmed import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.ConfirmedFinishPositioningListFinder; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishPositioningListFinder; +import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -90,9 +91,12 @@ public class RaceLogScoringReplicator implements RaceColumnListener { @Override public void raceLogEventAdded(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier, RaceLogEvent event) { - if (event instanceof RaceLogFinishPositioningConfirmedEvent) { - handleFinishPositioningList(raceColumn, raceLogIdentifier, (RaceLogFinishPositioningConfirmedEvent) event); - } + event.accept(new BaseRaceLogEventVisitor() { + @Override + public void visit(RaceLogFinishPositioningConfirmedEvent event) { + handleFinishPositioningList(raceColumn, raceLogIdentifier, (RaceLogFinishPositioningConfirmedEvent) event); + } + }); } private void handleFinishPositioningList(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier, RaceLogFinishPositioningConfirmedEvent event) { From d787fb2a3a31291060228ccce60816b22255de61 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 11 Jan 2017 15:48:12 +0100 Subject: [PATCH 117/191] added a failing test case Change-Id: Iffd2ae08bcd348f881ea8ae5888e219b52ca2afc --- .../test/ApplyScoresFromRaceLogTest.java | 109 +++++++++++------- 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java index 96e8418a984..75136b84f3f 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.UUID; import java.util.function.Function; +import org.junit.Before; import org.junit.Test; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; @@ -45,15 +46,20 @@ import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTestBase { - /** - * See also bug 3794: make sure that different variants of scores and max points reasons / penalties are applied to the - * leaderboard. - */ - @Test - public void testApplicationOfScoresFromRaceLog() throws NoWindException { - final RacingEventService service = new RacingEventServiceImpl(); - final List competitors = new ArrayList<>(); - for (int i=0; i<20; i++) { + private RacingEventService service; + private Regatta regatta; + private RaceColumn f1Column; + private List competitors; + private Leaderboard leaderboard; + + @Before + public void setUp() { + service = new RacingEventServiceImpl(); + } + + private void setUp(int numberOfCompetitors, TimePoint now, ScoringSchemeType scoringScheme) { + competitors = new ArrayList<>(); + for (int i=0; i scores = new HashMap<>(); final Map mprs = new HashMap<>(); int oneBasedRank = 1; @@ -120,33 +134,9 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest */ @Test public void testScoresFromRaceLogOnlyAppliedIfExplicitOrNoMaxPointsReason() throws NoWindException { - final RacingEventService service = new RacingEventServiceImpl(); - final List competitors = new ArrayList<>(); - for (int i=0; i<8; i++) { - final String competitorName = "C"+i; - competitors.add(service.getBaseDomainFactory().getCompetitorStore().getOrCreateCompetitor(UUID.randomUUID(), - competitorName, /* displayColor */ Color.RED, /* email */ null, /* flagImageURI */ null, - new TeamImpl("STG", Collections.singleton( - new PersonImpl(competitorName, new NationalityImpl("GER"), - /* dateOfBirth */ null, "This is famous "+competitorName)), - new PersonImpl("Rigo van Maas", new NationalityImpl("NED"), - /* dateOfBirth */null, "This is Rigo, the coach")), new BoatImpl(competitorName + "'s boat", - new BoatClassImpl("505", /* typicallyStartsUpwind */ true), /* sailID */ null), - /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null, null)); - } - final Regatta regatta = createRegatta(/* qualifying */0, new String[] { "Default" }, /* final */1, - new String[] { "Default" }, - /* medal */false, /* medal */ 0, "testOneStartedRaceWithDifferentScores", - DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.HIGH_POINT_FIRST_GETS_TEN_OR_EIGHT)); - TimePoint now = MillisecondsTimePoint.now(); + final TimePoint now = MillisecondsTimePoint.now(); TimePoint later = new MillisecondsTimePoint(now.asMillis()+1000); - TrackedRace f1 = new MockedTrackedRaceWithStartTimeAndRanks(now, competitors); - RaceColumn f1Column = series.get(1).getRaceColumnByName("F1"); - f1Column.setTrackedRace(f1Column.getFleets().iterator().next(), f1); - final Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - - service.addLeaderboard(leaderboard); // should add a RaceLogScoringReplicator as listener to the leaderboard - service.addRegattaWithoutReplication(regatta); + setUp(8, now, ScoringSchemeType.HIGH_POINT_FIRST_GETS_TEN_OR_EIGHT); int oneBasedRank = 1; final CompetitorResults results = new CompetitorResultsImpl(); @@ -177,6 +167,41 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest assertScoreCorrections(leaderboard, f1Column, competitors.get(6), MaxPointsReason.NONE, 4, /* score is corrected */ true, later); // score corrected based on rank because MaxPointsReason.NONE set assertScoreCorrections(leaderboard, f1Column, competitors.get(7), MaxPointsReason.NONE, 3.3, /* score is corrected */ true, later); // score corrected based on explicit score } + + /** + * See bug 4025: When a scoring race log event is received it may contain a partial competitor set. It shall depend on + * the previous state resulting from the race log, without the last event, what needs to be done with the leaderboard + * score corrections. If a competitor which which an earlier message did have a correction now no longer is part of + * the latest scoring race log event, and if the score corrections in the leaderboard match up with what the previous + * event had caused, remove that score correction again. + */ + @Test + public void testApplyingOCSThenClearingOCS() { + TimePoint now = MillisecondsTimePoint.now(); + TimePoint later = new MillisecondsTimePoint(now.asMillis()+1000); + setUp(3, now, ScoringSchemeType.LOW_POINT); + int oneBasedRank = 1; + final CompetitorResults results = new CompetitorResultsImpl(); + // set OCS + setResultForCompetitor(competitors.get(0), oneBasedRank++, results, MaxPointsReason.OCS, /* explicit score */ null); + final RaceLog f1RaceLog = f1Column.getRaceLog(f1Column.getFleets().iterator().next()); + final LogEventAuthorImpl author = new LogEventAuthorImpl("Axel", 0); + final RaceState f1RaceState = new RaceStateImpl(service, f1RaceLog, author, + new RacingProcedureFactoryImpl(author, new EmptyRegattaConfiguration())); + f1RaceState.setFinishPositioningListChanged(now, results); + final List rankedCompetitorsBeforeApplying = leaderboard.getCompetitorsFromBestToWorst(later); + assertEquals(competitors, rankedCompetitorsBeforeApplying); // no effects of preliminary results list yet + f1RaceState.setFinishPositioningConfirmed(now); + // validate that it arrived in leaderboard + assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); + + // now clear OCS again: + final CompetitorResults resultsWithOCSCleared = new CompetitorResultsImpl(); + f1RaceState.setFinishPositioningListChanged(later, resultsWithOCSCleared); + f1RaceState.setFinishPositioningConfirmed(later); + // validate that it got cleared in leaderboard + assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.NONE, 0, /* score is corrected */ false, later); + } private void assertScoreCorrections(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, MaxPointsReason expectedMaxPointsReason, double expectedScore, boolean expectedIsScoreCorrected, From a803fe2e646569195b9da5c69b7ec8ed4864760e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 11 Jan 2017 15:50:28 +0100 Subject: [PATCH 118/191] made failing test a bit more sophisticated Change-Id: I3cc02d3b33686455ee36e7e618924b9b157e7100 --- .../sap/sailing/server/test/ApplyScoresFromRaceLogTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java index 75136b84f3f..9c64d6d6ff5 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java @@ -184,6 +184,7 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest final CompetitorResults results = new CompetitorResultsImpl(); // set OCS setResultForCompetitor(competitors.get(0), oneBasedRank++, results, MaxPointsReason.OCS, /* explicit score */ null); + setResultForCompetitor(competitors.get(1), oneBasedRank++, results, MaxPointsReason.OCS, /* explicit score */ null); final RaceLog f1RaceLog = f1Column.getRaceLog(f1Column.getFleets().iterator().next()); final LogEventAuthorImpl author = new LogEventAuthorImpl("Axel", 0); final RaceState f1RaceState = new RaceStateImpl(service, f1RaceLog, author, @@ -194,12 +195,15 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest f1RaceState.setFinishPositioningConfirmed(now); // validate that it arrived in leaderboard assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); + assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); - // now clear OCS again: + // now clear OCS for first competitor again and leave second competitor OCS: final CompetitorResults resultsWithOCSCleared = new CompetitorResultsImpl(); + setResultForCompetitor(competitors.get(1), oneBasedRank++, resultsWithOCSCleared, MaxPointsReason.OCS, /* explicit score */ null); f1RaceState.setFinishPositioningListChanged(later, resultsWithOCSCleared); f1RaceState.setFinishPositioningConfirmed(later); // validate that it got cleared in leaderboard + assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.NONE, 0, /* score is corrected */ false, later); } From 0fe25e18429d7cae494a47b5e79bc3bff28729f8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 11 Jan 2017 18:10:01 +0100 Subject: [PATCH 119/191] found a fix for bug 4025 that also fixes the failing test case; compute old results by using an extension to the results finder that can exclude a particular result event; then remove score corrections matching old results that are not overwritten by new results Change-Id: I953f85a5dd04bffc5a82941406492aa7d8a5641d --- .../ConfirmedFinishPositioningListFinder.java | 20 +++++- .../race/state/RaceStateChangedListener.java | 1 - .../impl/DynamicTrackedRaceLogListener.java | 3 + .../test/ApplyScoresFromRaceLogTest.java | 20 +++--- .../server/impl/RaceLogScoringReplicator.java | 71 ++++++++++++++++--- 5 files changed, 93 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ConfirmedFinishPositioningListFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ConfirmedFinishPositioningListFinder.java index 381df5b1c36..47c18c85d70 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ConfirmedFinishPositioningListFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/ConfirmedFinishPositioningListFinder.java @@ -13,12 +13,30 @@ public class ConfirmedFinishPositioningListFinder extends RaceLogAnalyzer raceLogs = new ConcurrentHashMap<>(); private DynamicTrackedRace trackedRace; diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java index 9c64d6d6ff5..1949cdd0517 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/ApplyScoresFromRaceLogTest.java @@ -179,12 +179,12 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest public void testApplyingOCSThenClearingOCS() { TimePoint now = MillisecondsTimePoint.now(); TimePoint later = new MillisecondsTimePoint(now.asMillis()+1000); - setUp(3, now, ScoringSchemeType.LOW_POINT); - int oneBasedRank = 1; + final int numberOfCompetitors = 2; + setUp(numberOfCompetitors, now, ScoringSchemeType.LOW_POINT); final CompetitorResults results = new CompetitorResultsImpl(); // set OCS - setResultForCompetitor(competitors.get(0), oneBasedRank++, results, MaxPointsReason.OCS, /* explicit score */ null); - setResultForCompetitor(competitors.get(1), oneBasedRank++, results, MaxPointsReason.OCS, /* explicit score */ null); + setResultForCompetitor(competitors.get(0), /* one-based rank */ 0, results, MaxPointsReason.OCS, /* explicit score */ null); + setResultForCompetitor(competitors.get(1), /* one-based rank */ 0, results, MaxPointsReason.OCS, /* explicit score */ null); final RaceLog f1RaceLog = f1Column.getRaceLog(f1Column.getFleets().iterator().next()); final LogEventAuthorImpl author = new LogEventAuthorImpl("Axel", 0); final RaceState f1RaceState = new RaceStateImpl(service, f1RaceLog, author, @@ -194,17 +194,17 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest assertEquals(competitors, rankedCompetitorsBeforeApplying); // no effects of preliminary results list yet f1RaceState.setFinishPositioningConfirmed(now); // validate that it arrived in leaderboard - assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); - assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); + assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.OCS, numberOfCompetitors+1, /* score is corrected */ false, later); + assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, numberOfCompetitors+1, /* score is corrected */ false, later); // now clear OCS for first competitor again and leave second competitor OCS: final CompetitorResults resultsWithOCSCleared = new CompetitorResultsImpl(); - setResultForCompetitor(competitors.get(1), oneBasedRank++, resultsWithOCSCleared, MaxPointsReason.OCS, /* explicit score */ null); + setResultForCompetitor(competitors.get(1), /* one-based rank */ 0, resultsWithOCSCleared, MaxPointsReason.OCS, /* explicit score */ null); f1RaceState.setFinishPositioningListChanged(later, resultsWithOCSCleared); f1RaceState.setFinishPositioningConfirmed(later); // validate that it got cleared in leaderboard - assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, 4, /* score is corrected */ false, later); - assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.NONE, 0, /* score is corrected */ false, later); + assertScoreCorrections(leaderboard, f1Column, competitors.get(1), MaxPointsReason.OCS, numberOfCompetitors+1, /* score is corrected */ false, later); + assertScoreCorrections(leaderboard, f1Column, competitors.get(0), MaxPointsReason.NONE, 1, /* score is corrected */ false, later); // ranking first, one point in low-point scheme } private void assertScoreCorrections(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, @@ -217,7 +217,7 @@ public class ApplyScoresFromRaceLogTest extends LeaderboardScoringAndRankingTest private void setResultForCompetitor(final Competitor competitor, int oneBasedRank, final CompetitorResults results, MaxPointsReason maxPointsReason, Double explicitScore) { - results.add(new CompetitorResultImpl(competitor.getId(), competitor.getName(), oneBasedRank++, maxPointsReason, explicitScore, /* finishingTime */ null, /* comment */ null)); + results.add(new CompetitorResultImpl(competitor.getId(), competitor.getName(), oneBasedRank, maxPointsReason, explicitScore, /* finishingTime */ null, /* comment */ null)); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java index 56e3f0ef579..8d5e943fecf 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java @@ -1,5 +1,9 @@ package com.sap.sailing.server.impl; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + import com.sap.sailing.domain.abstractlog.race.CompetitorResult; import com.sap.sailing.domain.abstractlog.race.CompetitorResults; import com.sap.sailing.domain.abstractlog.race.RaceLog; @@ -16,6 +20,7 @@ import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; +import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; @@ -94,7 +99,7 @@ public class RaceLogScoringReplicator implements RaceColumnListener { event.accept(new BaseRaceLogEventVisitor() { @Override public void visit(RaceLogFinishPositioningConfirmedEvent event) { - handleFinishPositioningList(raceColumn, raceLogIdentifier, (RaceLogFinishPositioningConfirmedEvent) event); + handleFinishPositioningList(raceColumn, raceLogIdentifier, event); } }); } @@ -104,7 +109,7 @@ public class RaceLogScoringReplicator implements RaceColumnListener { if (leaderboard != null) { Fleet fleet = raceColumn.getFleetByName(raceLogIdentifier.getFleetName()); RaceLog raceLog = raceColumn.getRaceLog(fleet); - checkNeedForScoreCorrectionByResultsOfRaceCommittee(leaderboard, raceColumn, fleet, raceLog, event.getCreatedAt()); + checkNeedForScoreCorrectionByResultsOfRaceCommittee(leaderboard, raceColumn, fleet, raceLog, event.getCreatedAt(), event); } } @@ -129,13 +134,19 @@ public class RaceLogScoringReplicator implements RaceColumnListener { * * @param timePoint * the TimePoint at which the race committee confirmed their last rank list entered in the app. + * @param event + * the event that has announced the latest results; used with a finder to determine the effective changes to + * be applied to the leaderboard; if before {@code event} the race log had a result for a competitor that + * is still in the {@code leaderboard}'s score corrections and after applying {@code event} there is no + * result for that competitor anymore, remove those score corrections. */ - private void checkNeedForScoreCorrectionByResultsOfRaceCommittee(Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet, RaceLog raceLog, TimePoint timePoint) { + private void checkNeedForScoreCorrectionByResultsOfRaceCommittee(Leaderboard leaderboard, RaceColumn raceColumn, + Fleet fleet, RaceLog raceLog, TimePoint timePoint, RaceLogFinishPositioningConfirmedEvent event) { int numberOfCompetitorsInLeaderboard = Util.size(leaderboard.getCompetitors()); int numberOfCompetitorsInRace; CompetitorResults positioningList; numberOfCompetitorsInRace = getNumberOfCompetitorsInRace(raceColumn, fleet, numberOfCompetitorsInLeaderboard); - ConfirmedFinishPositioningListFinder confirmedPositioningListFinder = new ConfirmedFinishPositioningListFinder(raceLog); + final ConfirmedFinishPositioningListFinder confirmedPositioningListFinder = new ConfirmedFinishPositioningListFinder(raceLog); positioningList = confirmedPositioningListFinder.analyze(); if (positioningList == null) { // we expect this case for old sailing events such as ESS Singapore, Quingdao, where the confirmation event did not contain the finish @@ -145,27 +156,52 @@ public class RaceLogScoringReplicator implements RaceColumnListener { // RaceLogFinishPositioningConfirmedEvent event was found in the race log } if (positioningList != null) { + final Map newResultsByCompetitorId = new HashMap<>(); for (CompetitorResult positionedCompetitor : positioningList) { - Competitor competitor = service.getBaseDomainFactory().getExistingCompetitorById(positionedCompetitor.getCompetitorId()); + newResultsByCompetitorId.put(positionedCompetitor.getCompetitorId(), positionedCompetitor); + final Competitor competitor = service.getBaseDomainFactory().getExistingCompetitorById(positionedCompetitor.getCompetitorId()); // The score is updated when explicitly provided or when no penalty was set; // in turn, this means that when a penalty is set and no score is explicitly provided, // it is up to the scoring scheme to infer a penalty score for the MaxPointsReason. // See also bug 3955. - if (positionedCompetitor.getScore() != null - || positionedCompetitor.getMaxPointsReason() == null - || positionedCompetitor.getMaxPointsReason().equals(MaxPointsReason.NONE)) { + if (isNeedToCorrectScore(positionedCompetitor)) { int rankByRaceCommittee = getRankInPositioningListByRaceCommittee(positionedCompetitor); correctScoreInLeaderboard(leaderboard, raceColumn, timePoint, numberOfCompetitorsInRace, competitor, rankByRaceCommittee, positionedCompetitor.getScore()); } setMaxPointsReasonInLeaderboardIfNecessary(leaderboard, raceColumn, timePoint, positionedCompetitor.getMaxPointsReason(), competitor); } + final CompetitorResults oldResults = confirmedPositioningListFinder.analyzeIgnoring(event); + if (oldResults != null) { + // check if any of the old results need to be canceled from the leaderboard's score corrections, such + // as a cleared OCS; see also bug 4025 + for (final CompetitorResult oldResult : oldResults) { + if (!newResultsByCompetitorId.containsKey(oldResult.getCompetitorId())) { + final Competitor competitor = service.getBaseDomainFactory().getExistingCompetitorById(oldResult.getCompetitorId()); + // check what the leaderboard score correction looks like; if it matches the old result, remove the correction: + if (Util.equalsWithNull(leaderboard.getScoreCorrection().getMaxPointsReason(competitor, raceColumn, TimePoint.EndOfTime), oldResult.getMaxPointsReason())) { + service.apply(new UpdateLeaderboardMaxPointsReason(leaderboard.getName(), raceColumn.getName(), competitor.getId().toString(), /* reason */ null, timePoint)); + } + if (isNeedToCorrectScore(oldResult) && + Util.equalsWithNull(leaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, raceColumn), + getScoreFromRaceCommittee(leaderboard, raceColumn, timePoint, numberOfCompetitorsInRace, competitor, oldResult.getOneBasedRank(), oldResult.getScore()))) { + service.apply(new UpdateLeaderboardScoreCorrection(leaderboard.getName(), raceColumn.getName(), competitor.getId().toString(), /* correctedScore */ null, timePoint)); + } + } + } + } // Since the metadata update is used by the Sailing suite to determine the final state of a race, it has to // be triggered, even though no score correction may have been performed applyMetadataUpdate(leaderboard, timePoint, COMMENT_TEXT_ON_SCORE_CORRECTION); } } + private boolean isNeedToCorrectScore(CompetitorResult positionedCompetitor) { + return positionedCompetitor.getScore() != null + || positionedCompetitor.getMaxPointsReason() == null + || positionedCompetitor.getMaxPointsReason().equals(MaxPointsReason.NONE); + } + private boolean setMaxPointsReasonInLeaderboardIfNecessary(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint timePoint, MaxPointsReason maxPointsReason, Competitor competitor) { boolean scoreHasBeenCorrected = false; @@ -181,6 +217,22 @@ public class RaceLogScoringReplicator implements RaceColumnListener { private void correctScoreInLeaderboard(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint timePoint, final int numberOfCompetitorsInRace, Competitor competitor, int rankByRaceCommittee, Double optionalExplicitScore) { + final Double scoreByRaceCommittee = getScoreFromRaceCommittee(leaderboard, raceColumn, timePoint, + numberOfCompetitorsInRace, competitor, rankByRaceCommittee, optionalExplicitScore); + // Do ALWAYS apply score corrections from race committee + applyScoreCorrectionOperation(leaderboard, raceColumn, competitor, scoreByRaceCommittee, timePoint); + } + + /** + * If a non-{@code null} {@code optionalExplicitScore} is provided, it it returned. Otherwise, an implicit score is + * determined from the {@code rankByRaceCommittee} using the leaderboard scoring scheme's + * {@link ScoringScheme#getScoreForRank(Leaderboard, RaceColumn, Competitor, int, java.util.concurrent.Callable, com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher, TimePoint) + * getScoreForRank(...)} method. Usually, scoring schemes will return {@code null} as score for {@code 0} as + * (one-based) rank. + */ + private Double getScoreFromRaceCommittee(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint timePoint, + final int numberOfCompetitorsInRace, Competitor competitor, int rankByRaceCommittee, + Double optionalExplicitScore) { final Double scoreByRaceCommittee; if (optionalExplicitScore == null) { scoreByRaceCommittee = leaderboard.getScoringScheme().getScoreForRank(leaderboard, raceColumn, competitor, @@ -188,8 +240,7 @@ public class RaceLogScoringReplicator implements RaceColumnListener { } else { scoreByRaceCommittee = optionalExplicitScore; } - // Do ALWAYS apply score corrections from race committee - applyScoreCorrectionOperation(leaderboard, raceColumn, competitor, scoreByRaceCommittee, timePoint); + return scoreByRaceCommittee; } private void applyScoreCorrectionOperation(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, Double correctedScore, TimePoint timePoint) { From 6dba9892c1520c098571ec585e0f9675334b88ed Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:29:44 +0000 Subject: [PATCH 120/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/Polars_StringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ja.properties.xlf b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ja.properties.xlf index 47fa99e5b1a..6585b20869f 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ja.properties.xlf +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA From 849e1ab8ecb70fcd4f26e9ae9a4894e10fabecd4 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:29:58 +0000 Subject: [PATCH 121/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/Sailing_StringMessages_ja.properties.xlf | 2 +- .../stringmessages/XLF/StringMessages_ja.properties.xlf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ja.properties.xlf b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ja.properties.xlf index a388689ee7e..9f8850c79de 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ja.properties.xlf +++ b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAIVWS28jKRC+8yu4jJQcRopn9qkVKznJ2vHKeci2Ntoj7i53o7TBApys59dvVdEP7Ew8F7rq4wOKetHLHUCpljQKHldgl1A4W4Zr2DgPaU6OroJcMyBuTYjaFrDy+hUaXN0BskPEg96CokHMoVoddqDwK0kQS22a2a2ij3zYb9fgxb+gvaKB2Aljfjv9oKNxVjcmHlQmi3HhnT1sVfsVC6h0jFq1X3Hj9j7A2INWSZQki2un402jQ1AkSRbFpAGIikex0AUoGnCH7Q6iic6rQeQNeK1Ygd4qGjLmEu9R1CtdZUtkAiWieEVdgl877UvygbHVrdtqYxcQvYFX8Dc1aiqjBbboHJnmAznv/I5VENOn5cT8d46GjM9Iwf3utX95Qucg89wCosmWl0xdQNg38UcGy0RLSx43mQd/dFPpNnKgk6EW9kg5b2Xi5P6ferff5Z6WjOSUfJYcTF7MHXN0eyLkF+EkRluLIXemu4DO7ZzcWz6Y92xsuYwebBXrmb0Gvceai4pg2eHSWNnNiOtNvFI3utmSNFJzU9VRauNJ/dKqaw/wDQj5qqZgYwMZ9JO6d3hFHXPwZzXxEOoM+UXh8c5WGfSrusPt5RvaRupvaqobnvi941YtMLpCxPlk40j9Y1yDZsjQY1/U3d57U6AbsI4brPJXWBbUfjpNsiovrrANhfiHHMk3jH28PKbP7BP4Avc+XYcu+3RKpWQ6t4CzlBeO18E1+wgLbV9Up0jSUsCoRb6LFvdNCtUm9j1zHJdRI6NvmdFJRiS2IhZSF36usQ2TSjmWdjomnLbptO3QqxPariBDx3Fi0F+Ur4p02o8RSZBIvfZx0yViUAmh/O2xnrXSxUvOYL2f/dtgiLJZ1vvZJ8D+HQ83xhfNEa2dkO0MWz3F2g2Pfu5CQC7bzZDEpprA4TlydNnUWE35oadToRNDXnyiY+dcU5eDfa40++3EWBPq3DqGZcKz62Cs80uQ+t7ya4hvALaPwNiW7QHfu5K8GLVhkZ//bE+8FLOAz2vxgu/tLMhW7K0Ymg737syg7BVKbX2ItH85JfOZXfdPQefXu1PSE07RVjSkVDz6T2jzru9njI43EXtcIrA8zN8aDwW96dimbQWq12UCqIBuocKeM5hEXhpMIk0868POGaziThDdy4WBVq3MUWfru+Qg+cPCYktP6yqZP5TVqjY+Ht6v4Lh+PVlAfeEN029I2XH5qm3UFbh9+MuWj5u5saA6nsyTN6dK5HLuGuqXVN10yp1uNlibNXCe0WuVCp0tiDXIGgm0jOQN136Dz9n3bfjwuJXZAvrDxlnnKEWQZIzC1aLiHkrd8M8US9xOxf+VN8i0cAoAAA== diff --git a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ja.properties.xlf b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ja.properties.xlf index d6aa3a6d09d..4eae11dd4fd 100644 --- a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ja.properties.xlf +++ b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA From a94cbd0a64dbcaa8ddc0cd1fcf4ed84a533253ee Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:30:15 +0000 Subject: [PATCH 122/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/StringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ja.properties.xlf b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ja.properties.xlf index 14ca95ed69a..6d26621c6b0 100644 --- a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ja.properties.xlf +++ b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAKVUTW/bMAy9+1cQ2CEbkAVpdwvgQ5YuWIChDZr2sKPs0A1XWTIk2VkQ5L+PkvNhtzZarBfbEh/f4yNlGZHiQt3jk3BO3GU/KlQuNrwJ+/EBSIGpQzDYXx0GoDNAD+Hl9WEQmZA9l4iun+Tz/tvhy5tUEsUaTaKFWZ8YGlsMGrdzmCJqJq02enuPtpTO/iL1/EBOYuw3WTbshmLtXYWmIty+xPgY6GMwQC+svOiAX0AeMFVC7iy90vZNEMdYFDHczaSw1qfMSZHd4HpVJn8wdbHfg0wb8ChIPSz0byMsZEcsfAWFZ0sgKkFSJBKjTzCewJn+VuQ4hKtJ0L9BmxoqHGnVXcB3vd7Ftw3ajiJ4fNxyEAYvoqOGoVWqDc60MeyEhU6emqyt3A6NPg+NIXdaeSH9ATepzgt05LRZMhJt3aCTl9k5GjgKD1kfJwOSFHpaUZ+NYOVC1zuPbsVg4V1y7KJV93+NIW0p9dbeM4de8c5BtLXePFaPBSeQevLH9WRmWv9VHWPdkpRgnTAOrObS3vdTDOF6Ao5y7JYNNuavxXzdDUFRFEb/pVw4lDtgJN9q7MSWyVloobhmBvBn/FuXwTX3CqliKVDaUUZpCHOvjM5hNV3Cirviw+GCcZTaETxocKVRfBtm7awhFDwki1CRJQc7XRooLRrg0jLiaXNZboP+9DxDglJvR5GPL+tw/Oixx0VEeWGIb+FF/Y74WYl0Fy/rd2SFLF1t5qeQUvumDKN/18D20lAGAAA= From d71b20de725ea586283454d389f03a756aca7647 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:30:38 +0000 Subject: [PATCH 123/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../client/StringMessages_ja.properties.xlf | 88 +++++++++++++++---- .../ui/client/StringMessages_ja.properties | 19 +++- 2 files changed, 86 insertions(+), 21 deletions(-) diff --git a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties.xlf b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties.xlf index c84676f6049..44aeb1fa75b 100644 --- a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties.xlf +++ b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties.xlf @@ -1,12 +1,12 @@ - +
    - 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 - +
    @@ -1396,8 +1396,8 @@ 登録時刻 {0} - Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4} - マスタ {0}:{2}、メッセージングポート {3}:{1}、エクスチェンジ {4} から複製 + Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4}, replicating {5} + マスタ {0}:{2}、メッセージングポート {3}:{1}、エクスチェンジ {4} から複製、{5} を複製 Show wind speed data @@ -2616,12 +2616,12 @@ スタート時の SOG - Distance to start line at race start time - レーススタート時刻のスタートラインまでの距離 + Distance to start line at race start time; distance to nearest line end in case the competitor projects beyond the line''s ends + レーススタート時刻のスタートラインまでの距離 (競技者がスタートラインの各エンドより外側に位置している場合は近い方のエンドまでの距離) - Distance to start line five seconds before the start - スタート 5 秒前のスタートラインまでの距離 + Distance to start line five seconds before the start; distance to nearest line end in case the competitor projects beyond the line''s ends + スタート 5 秒前のスタートラインまでの距離 (競技者がスタートラインの各エンドより外側に位置している場合は近い方のエンドまでの距離) Speed over ground at race start time @@ -3185,7 +3185,7 @@ Protest starts at - 抗議開始時刻 + 抗議開始時刻 Protest ends at @@ -3849,7 +3849,7 @@ Sailing World Cup Start - セーリングワールドカップ開始 + セーリングワールドカップ開始 Activate configuration @@ -4629,7 +4629,7 @@ Loading wind data... - 風データをロード中... + 風データをロード中... No Videos @@ -5877,11 +5877,11 @@ The following competitors cannot be registered to this race : {0} - 次の競技者はこのレースに登録することができません: {0} + 次の競技者はこのレースに登録することができません: {0} {0} has already been assigned to fleet {2} in race {3} and therefore cannot be assigned to fleet {1} within the same race - {0} はすでにレース {3} のフリート {2} に割り当てられており、そのため同一レース内でフリート {1} に割り当てることはできません + {0} はすでにレース {3} のフリート {2} に割り当てられており、そのため同一レース内でフリート {1} に割り当てることはできません Add Mark to Regatta @@ -6084,8 +6084,8 @@ https://play.google.com/store/apps/details?id=com.sap.sailing.android.buoy.positioning.app - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png + https://play.google.com/intl/en/badges/images/badge_new.png + https://play.google.com/intl/en/badges/images/badge_new.png http://appstore.com/sapsailinsight @@ -6143,6 +6143,10 @@ There are no events yet. イベントがまだありません。 + + Please select a competitor import provider... + 競技者インポートプロバイダを選択してください... + Please select a result import provider... 結果インポートプロバイダを選択してください... @@ -6632,8 +6636,8 @@ 採用 - © 2011-2016 SAP Sailing Analytics - © 2011-2016 SAP Sailing Analytics + © 2011-2017 SAP Sailing Analytics + © 2011-2017 SAP Sailing Analytics SAP Sailing in @@ -6879,6 +6883,54 @@ Incorrect value for the buoy zone radius in hull lengths 艇身単位のゾーン半径の値が不適切 + + Import Competitors + 競技者のインポート + + + Select competitors to be imported on the left. Selecting a single competitor shows any existing competitors that may represent the same entity on the right. To use an existing one, select it. When done mapping, select all competitors you want to import in the table on the left and press OK. Note that the tables can be sorted by clicking or tapping on the column headers. + インポートする競技者を左側で選択します。単一の競技者を選択しても、同一の対象を表す既存の競技者が複数あればそれらが右側に表示されます。既存の競技者を使用するには、その競技者を選択します。マッピングが終了したら、テーブルにインポートするすべての競技者を左側で選択して、OK を押します。テーブルは、列ヘッダをクリックするかタップしてソートが可能であることに注意してください。 + + + Existing Competitors + 既存の競技者 + + + Competitors to Import + インポートする競技者 + + + Has matches + 一致あり + + + Filter competitors to import by name, sail number, race or fleet + インポートする競技者を名前、セールナンバー、レース、またはフリートでフィルタリング + + + Error loading competitor import providers: {0} + 競技者インポートプロバイダのロードでエラーが発生: {0} + + + Error loading competitor import descriptors: {0} + 競技者インポート記述子のロードでエラーが発生: {0} + + + Could not save competitor registrations: {0} + 競技者登録を保存できませんでした: {0} + + + Use, e.g., the race+fleet name + たとえば、レース+フリート名を使用 + + + Version: {0} + バージョン: {0} + + + Replicating objects + オブジェクトの複製 +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties index 343f03e6bba..ecba3522c6d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ja.properties @@ -344,7 +344,7 @@ courseMiddleLine=コース中央航路 messagingPortNumber=メッセージングポート番号 (初期値は 0) servletPortNumber=サーブレットポート番号 registeredAt=登録時刻 {0} -replicatingFromMaster=マスタ {0}:{2}、メッセージングポート {3}:{1}、エクスチェンジ {4} から複製 TODO {5} +replicatingFromMaster=マスタ {0}:{2}、メッセージングポート {3}:{1}、エクスチェンジ {4} から複製、{5} を複製 showWindSpeedSeries=風速データ表示 showWindDirectionSeries=風向データ表示 fleet=フリート @@ -649,8 +649,8 @@ distanceToLineFiveSecondsBeforeStart=スタート 5 秒前のラインまでの speedOverGroundAtRaceStart=スタート時の SOG speedOverGroundFiveSecondsBeforeStart=スタート 5 秒前の SOG speedOverGroundWhenPassingStart=スタート時の SOG -distanceToLineAtRaceStartTooltip=レーススタート時刻のスタートラインまでの距離 -distanceToLineFiveSecondsBeforeStartTooltip=スタート 5 秒前のスタートラインまでの距離 +distanceToLineAtRaceStartTooltip=レーススタート時刻のスタートラインまでの距離 (競技者がスタートラインの各エンドより外側に位置している場合は近い方のエンドまでの距離) +distanceToLineFiveSecondsBeforeStartTooltip=スタート 5 秒前のスタートラインまでの距離 (競技者がスタートラインの各エンドより外側に位置している場合は近い方のエンドまでの距離) speedOverGroundAtRaceStartTooltip=レーススタート時刻の対地速力 speedOverGroundFiveSecondsBeforeStartTooltip=スタート 5 秒前の対地速力 speedOverGroundWhenPassingStartTooltip=競技者がスタートを通過したときの対地速力 @@ -1535,6 +1535,7 @@ dragToChangePosition=ドラッグして位置を変更\n右クリックして削 moveFix=フィックスを移動 manage2SailEvent=Manage2Sail イベント noEventsYet=イベントがまだありません。 +selectCompetitorImportProvider=競技者インポートプロバイダを選択してください... selectResultImportProvider=結果インポートプロバイダを選択してください... buildVersion=ビルドバージョン serverInformation=サーバ情報 @@ -1719,3 +1720,15 @@ filterDeviceMappings=デバイスマッピングのフィルタリング raceStartAnalysis=レーススタート分析 buoyZoneRadiusInHullLengths=艇身単位のゾーン半径 (例: 2 または3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=艇身単位のゾーン半径の値が不適切 +importCompetitors=競技者のインポート +chooseWhichCompetitorsShouldBeImported=インポートする競技者を左側で選択します。単一の競技者を選択しても、同一の対象を表す既存の競技者が複数あればそれらが右側に表示されます。既存の競技者を使用するには、その競技者を選択します。マッピングが終了したら、テーブルにインポートするすべての競技者を左側で選択して、OK を押します。テーブルは、列ヘッダをクリックするかタップしてソートが可能であることに注意してください。 +existingCompetitors=既存の競技者 +importedCompetitors=インポートする競技者 +hasMatches=一致あり +filterImportedCompetitorsByNameSailRaceFleet=インポートする競技者を名前、セールナンバー、レース、またはフリートでフィルタリング +errorLoadingCompetitorImportProviders=競技者インポートプロバイダのロードでエラーが発生: {0} +errorLoadingCompetitorImportDescriptors=競技者インポート記述子のロードでエラーが発生: {0} +couldNotSaveCompetitorRegistrations=競技者登録を保存できませんでした: {0} +searchTagForImportedCompetitorPlaceholder=たとえば、レース+フリート名を使用 +version=バージョン: {0} +replicables=オブジェクトの複製 From 17447047e769677a28b7abb22abf66817524e5f9 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:30:49 +0000 Subject: [PATCH 124/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/FileStorageStringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ja.properties.xlf b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ja.properties.xlf index 14952fa3fe4..93be3d54df8 100644 --- a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ja.properties.xlf +++ b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA== From 1b88e6e25beacbf871585a335ff31c7788d37cc9 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:31:02 +0000 Subject: [PATCH 125/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../ui/client/i18n/XLF/StringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ja.properties.xlf b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ja.properties.xlf index 6e129ed41ee..13291e0934a 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ja.properties.xlf +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    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 From 65bd19f7d1c9a0d166f59d75739da0b12e2738ec Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:31:13 +0000 Subject: [PATCH 126/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../controls/filestorage/XLF/StringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ja.properties.xlf b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ja.properties.xlf index 1c5c5a7aae1..956b382f5f0 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ja.properties.xlf +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA== From 01cb4c603737e15866a9fbc66b8d16f9175ddda6 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:31:27 +0000 Subject: [PATCH 127/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/TrackingStringMessages_ja.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ja.properties.xlf b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ja.properties.xlf index 9ce996e6326..292821aeb53 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ja.properties.xlf +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ja.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF1RQU7DQAy85xW+cakQ50o5FCSkSEBLk8J5m7iN1c16tXZbIsTf2U1SWnHzzjjjmYkGUx/I7Qt3IjVK7J455NWEwhWGHYdMauPe10/c4DJ8kJBugq14jXsSxbCQ/NUcEOQYEHo+QmtOCNoifD/8wMJ7ICdqrMXmHqoWHSS9YWHH1vI5XRzlgQPUlurDwFpyBzhKoqNsAOlMUN+yi+oMYToPRrIz2po7rDj/HKe4kNGy3AgGyUuN30F8JjOZcU1gam6pxQiNtI2aLmY/oe2HsFVL8hKt5MVuiGdizICmSb40ctAZssBjogZPVCOcSdvhneIbm9b7aw0zEOq87aesW4wlpEiS3Myz7ZH7Cl2DIU8j6DBnxvtSOWAxylT4pRdLDbs7vfaejvaoM/AWjeDl8DxJFCz5pHCtxPupgj/qtpJkYhXTxl/t/ZvpMC8XKyhj6lTBY7I40plErHAl7Vv9vwoTnv0Cs+RzW3sCAAA= From 22ff0ba0759cbf6ff4daa5b9610df6fb142a086e Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:31:47 +0000 Subject: [PATCH 128/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/Polars_StringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ru.properties.xlf b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ru.properties.xlf index 6ae3f0fcd32..3a498d58122 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ru.properties.xlf +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA From ca97919c59ee82dd494c8bfdc03e1f2ef7d691f6 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:32:01 +0000 Subject: [PATCH 129/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/Sailing_StringMessages_ru.properties.xlf | 2 +- .../stringmessages/XLF/StringMessages_ru.properties.xlf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ru.properties.xlf b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ru.properties.xlf index b324dfe30fe..48b2d7e49dd 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ru.properties.xlf +++ b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAIVWS28jKRC+8yu4jJQcRopn9qkVKznJ2vHKeci2Ntoj7i53o7TBApys59dvVdEP7Ew8F7rq4wOKetHLHUCpljQKHldgl1A4W4Zr2DgPaU6OroJcMyBuTYjaFrDy+hUaXN0BskPEg96CokHMoVoddqDwK0kQS22a2a2ij3zYb9fgxb+gvaKB2Aljfjv9oKNxVjcmHlQmi3HhnT1sVfsVC6h0jFq1X3Hj9j7A2INWSZQki2un402jQ1AkSRbFpAGIikex0AUoGnCH7Q6iic6rQeQNeK1Ygd4qGjLmEu9R1CtdZUtkAiWieEVdgl877UvygbHVrdtqYxcQvYFX8Dc1aiqjBbboHJnmAznv/I5VENOn5cT8d46GjM9Iwf3utX95Qucg89wCosmWl0xdQNg38UcGy0RLSx43mQd/dFPpNnKgk6EW9kg5b2Xi5P6ferff5Z6WjOSUfJYcTF7MHXN0eyLkF+EkRluLIXemu4DO7ZzcWz6Y92xsuYwebBXrmb0Gvceai4pg2eHSWNnNiOtNvFI3utmSNFJzU9VRauNJ/dKqaw/wDQj5qqZgYwMZ9JO6d3hFHXPwZzXxEOoM+UXh8c5WGfSrusPt5RvaRupvaqobnvi941YtMLpCxPlk40j9Y1yDZsjQY1/U3d57U6AbsI4brPJXWBbUfjpNsiovrrANhfiHHMk3jH28PKbP7BP4Avc+XYcu+3RKpWQ6t4CzlBeO18E1+wgLbV9Up0jSUsCoRb6LFvdNCtUm9j1zHJdRI6NvmdFJRiS2IhZSF36usQ2TSjmWdjomnLbptO3QqxPariBDx3Fi0F+Ur4p02o8RSZBIvfZx0yViUAmh/O2xnrXSxUvOYL2f/dtgiLJZ1vvZJ8D+HQ83xhfNEa2dkO0MWz3F2g2Pfu5CQC7bzZDEpprA4TlydNnUWE35oadToRNDXnyiY+dcU5eDfa40++3EWBPq3DqGZcKz62Cs80uQ+t7ya4hvALaPwNiW7QHfu5K8GLVhkZ//bE+8FLOAz2vxgu/tLMhW7K0Ymg737syg7BVKbX2ItH85JfOZXfdPQefXu1PSE07RVjSkVDz6T2jzru9njI43EXtcIrA8zN8aDwW96dimbQWq12UCqIBuocKeM5hEXhpMIk0868POGaziThDdy4WBVq3MUWfru+Qg+cPCYktP6yqZP5TVqjY+Ht6v4Lh+PVlAfeEN029I2XH5qm3UFbh9+MuWj5u5saA6nsyTN6dK5HLuGuqXVN10yp1uNlibNXCe0WuVCp0tiDXIGgm0jOQN136Dz9n3bfjwuJXZAvrDxlnnKEWQZIzC1aLiHkrd8M8US9xOxf+VN8i0cAoAAA== diff --git a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ru.properties.xlf b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ru.properties.xlf index 8560071614a..f71af745a65 100644 --- a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ru.properties.xlf +++ b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA From 7782fa85eacb813a3117e79a8ad02dd7a9782eea Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:32:13 +0000 Subject: [PATCH 130/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/StringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ru.properties.xlf b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ru.properties.xlf index 5002ff1a35c..f3fa094f4f9 100644 --- a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ru.properties.xlf +++ b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAKVUTW/bMAy9+1cQ2CEbkAVpdwvgQ5YuWIChDZr2sKPs0A1XWTIk2VkQ5L+PkvNhtzZarBfbEh/f4yNlGZHiQt3jk3BO3GU/KlQuNrwJ+/EBSIGpQzDYXx0GoDNAD+Hl9WEQmZA9l4iun+Tz/tvhy5tUEsUaTaKFWZ8YGlsMGrdzmCJqJq02enuPtpTO/iL1/EBOYuw3WTbshmLtXYWmIty+xPgY6GMwQC+svOiAX0AeMFVC7iy90vZNEMdYFDHczaSw1qfMSZHd4HpVJn8wdbHfg0wb8ChIPSz0byMsZEcsfAWFZ0sgKkFSJBKjTzCewJn+VuQ4hKtJ0L9BmxoqHGnVXcB3vd7Ftw3ajiJ4fNxyEAYvoqOGoVWqDc60MeyEhU6emqyt3A6NPg+NIXdaeSH9ATepzgt05LRZMhJt3aCTl9k5GjgKD1kfJwOSFHpaUZ+NYOVC1zuPbsVg4V1y7KJV93+NIW0p9dbeM4de8c5BtLXePFaPBSeQevLH9WRmWv9VHWPdkpRgnTAOrObS3vdTDOF6Ao5y7JYNNuavxXzdDUFRFEb/pVw4lDtgJN9q7MSWyVloobhmBvBn/FuXwTX3CqliKVDaUUZpCHOvjM5hNV3Cirviw+GCcZTaETxocKVRfBtm7awhFDwki1CRJQc7XRooLRrg0jLiaXNZboP+9DxDglJvR5GPL+tw/Oixx0VEeWGIb+FF/Y74WYl0Fy/rd2SFLF1t5qeQUvumDKN/18D20lAGAAA= From 97edef3afb3905094e2231424ac5f3b13c398011 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:32:37 +0000 Subject: [PATCH 131/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../client/StringMessages_ru.properties.xlf | 88 +++++++++++++++---- .../ui/client/StringMessages_ru.properties | 21 ++++- 2 files changed, 87 insertions(+), 22 deletions(-) diff --git a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties.xlf b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties.xlf index dbfe0575ee0..ab0941cca5d 100644 --- a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties.xlf +++ b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties.xlf @@ -1,12 +1,12 @@ - +
    - H4sIAAAAAAAAAMy9a3PcSJIl+h2/AtNtdyXZkqlHTffsqA1WlyIlFWdEUk1Spe5dXRsDM0ESo0wgB8gUxWqr/379HHePCCAzKVVv37VbVkoC8UIgEOHh4Y/ji7Ipb6oXF2U9L07iddaV0+qwXSzq1aqqDpbL4lwSci3R5ZLAEj/X1V3Vad4XXmeLcnnYNquunffS4DKf2k22lJrFe/nJVlL1Uv69/lI1q764tNtc77P+ru77y3pRNzdW4iKmeCG08bmavaqu264qfqr7Vdvd5+11bhl5peVuqqbqynnxVv9mcymJ7vbFO7nKeamJ1U25WpWebnfZXd3Mio/yIy/WVOsvVXd5v6wwVLxh/nu5mb8rr6p5cXlb97n8v7qtctTKmZff3dbT27xv8+uyQ/a0XSzn1aqa3+fVYrm6n2Rddd1V/W1xrn/lftF+qeQWf/iUi3bdTSv2JdfrbFYullUjo3LcrKrui7zmkafknoQPgg/B78Uvxau+0Fe34SrsrwxFI398hHBtY7SqF1Uh36Di1WXbzlf1kgl8WbxRtarlK+S9zB+p1jaSIe86r24m+RtJR7HrupPRlSTN41Cspaez/LprFzJOVTNubln2veQjtV+VndSum2qSLefl/cWykq6/l6u8x2VM/KmaL4sPfZX/7vnvcpkieVfdrOcy+CixfyXvqjX28t+90AKzdn01r/aZylIsVMpgy2drGzZ90s6qd7V8FvyElPMKV4X+yZHCITqqkMrfeM9+vavKL5V++HzVStdYsVzlZXdVy4eQiYwK/Z/yCh8x7ytZRLM+f1xNbibS4z8+0y63TZXLmlivqlzufmepjSQ/wUqY4YH5FVeIDJo8clauyvwaA8XXPG7+vWmxvPjOjz83TzJ8haPqpniDr/F4Vt08yZqWE+Cv1UpmdyVNlfKvkW4jNb+vVpNs1a5k7n1aP/vh4IdsWnbdfXEwna4XMuLyabP4MYvDcJmk9klyn6ZfVPNqKi0Uf3v269O/Pf81mRa9jIpmTqSHF+vprYzqrOqu2rKbFadt3kuSTLSQliXXQqCu65t1V67qtimSivkgJ2uqu6N2pf8Xp9XdZDLJqlm9upjKkPbFa7nM37e10BnkTNv5etGclvLljhvvetorkknm53WTe4k8KZKVs1l84sFshna7qpE6Mfmc98ixRXtOWt00bO6y9YaRjKeRwPpCzkNBTL3Qh9A1EoDL9pDvQgqAcnqbrRvkFh/4Jx1QPiYdRzY1LZup0MRD/pHlUpV99Roz+oDl3zPB5niZ46UGhV615epwLqt/XFIescqnyMlmdS/zTekV5uxP7Z2Q5vsLEAojY2dNcaSldMFgNWDuKjUBqbyrV7f5bXuXC4m/12QZkk63hvhSH6UY6Ds6fzDvJOP+9VfZLPrBm7MxEje8UF5qwbxiSe/v5S2IfDuf9SfrfvWqOl0vqq6eho6uQn6+kAKyiPNGi+xq4aCfVs1M3uahNkov5K0k5ZHqI4KRlC5dVd3ZtW4FFz5WJNNhrHSMdIIOZjpTxjNbZ9Flm5aUOW6zC/MsrZBMBYy47CCyAnWqc25umT5K/6o7/b66HrP2c3H279mimpVz1C5OcJXrRshuMtV6zORWttBt6/dM0rcv266UZXEuP7zyzTFStUeP+hw5WPfYyDp9OnmMc9bV61zbiBnf0ZQWzoRNEP5mztbO9FpbSzK+3VovcwybPQj6+a7+ycDOy2VfFftZ9XUpW2Tx32Wd3BTvMK1WWO3HzYlwN0LYjywhK9GLm+oi3Xc+rV+8ePaHnGnbCgQmQzpm2bpr53in/KYT1mGWz9YdJqbzGnufmmk5n+rW46tRtr76S90LTSeLyHvtGPjFLxX4lat7ZmDnlTlUzbCz4Dsd/CM6hob+wT1rPr8t64azLsdVSEp7N6uvr2XPRnPW/LLta2xuupLJa607KbEir8MSXfWlbtfKuWV9ucSBQN7koCnn96t6KtRAE/KQkpLJlBqm6QMyOahxUa1AW4Z01BOz3nOTFCzBg5UU71dnjVCem6NqhROMLk6wUiAOKxJ8MJszZmf2pvyUWCNv+aECG3T29uES6cD6oG18duEQevlS+MaXZJRPq6+rj+X9EnwC+ALycsXry4PvKpg+M5TXqbC6lfccMcuYHr0yleVU51cjzeZ31u5eflX2zpynNUEI/J1k1rXTWpjThXyO/KZthU2WzvS1fByd0Zic6yrHsUSmWCdjLjNqkt2US6fu8U3fyiFQOqTfe2sRf8fX9n56fHocF8sT4Tm7Wg4z+uL+2tbdMKNthpM94ODIwpMDl6TJVChv5aGyBMP7+8L9+eQt9420ScwZLAcu0mXVSf6Ca7L6rzV60Wr79kDuNvp+bKlfX/VS0BrqJ58afL0bjEM1n/e6fYI9rcpuXlfd+CPetev5LL/FIeG2JJ8me/cdee8+dlLOjnX/Sc56wvzjyfjooAVJF4dds2Fbdu1/6g7mg/o94zkcx0nmc+REmn4rM8QXkYzmrrx0Km+bYnpItsMzptad0IGn86rCX1toGN71EplPZ+1dwwmIMd6TCS8lZB5Ky/d7uX3Pct42N/tkk5MGuDYwkfl1Mn+U71WX7ds2bGAfLTMhy63098FK/qIfx+8Q2oi0d+sCDF/AvqIwbf4xMDP/NwYh9uB7xiHyCW/s8x/g64fBkaX922t9e3TsVZMVYeOQpAznY8pX/X80PJ+a03a1nehupzVIkWkv9Fd45L7salmwWIlOQdnX+lqWuLDkUyEOWL3IrHk8XM4lX862OCnpwQxSg9cQGggrfFRdl+v5aiBKoBRD0/VkKPwypWV6AMzlVqVimltezStl7i/91kU9uMfnsYoUfxmfyZObc4M8srFJJvNhSaIm6KkCW5yeIkjDNfHsmg/AKUSzXH6Hw4hM+iT/tS0Bz7XueFf8vi+C5E4fO2w/VO9X7TLJa5cxa6oHZFl+kEuE6+xWZYxn10liKnhM6mXyGeqmkgGPZYsjpuGkIt8hFk4P8X04quvBSg7QFzIM59hMcM6Uk7Rw6DISnaV4Zw9QqLQ27JncwHD4tMaWbSdNvMdvBmnQUSnD987FQhiRrpox8YKXmiw8bF98OD/us//s2+ZDNy/+7eLsNP9w/o6NoDm2mbOlo9hSzLHmmIc6H7panyvNWmEkWTEkquw2EWnoTOrzw7D12UBlt22/4hr5yS5k7KfCnFKAc3hbTT9ftV9lSDowKSqSfSXbLtaZsNVHsSx5/Yt0ztg5029zEypky3LdVwfrVSu8Sj01gW3xHql56cm5CXQzpJwPhbuxlJzL7jPK6SK/RDlh/rh/ohmvqtVdVTV43sHsC4iTF7nSHLa2v17OyDnVjYsLX2p9EzC0zSkWBoSXPBewBZcL3Mg0WZEPkQn2S9W12fS2bfvqAxt1SfLZdWS5tbPFIYvl+nB5thbEahiw4NqjrOq6tjMuHl9C6BjP3q+Rnhufr0wl6S8OyazzplqREqPScUNmDJ9sWP/aCmkDdSw2auzjbT2vLrt7KQpZ2epjkK0P27tDOSEL9yTYLfqX/45tk7L0tsf8Lr+elzdZ3SiplfE3GtsWq1Z+L4RrxlUvXJ8zuDMS1wvwgZGnR2MQFIMiqa6DU1JPNrJroriKEC3JT/bDEn7290JzPxx5ATkthUwVkZxIQx+WxYdlcn8kO2eBH9INLuRkhQgFt9XBDvnKwDueNfN7l5EkYl1921Yyg+A2leay6pZq+NpaFR9UWNGvymFvawKv9K5qbla3xaVcyvzDNVdSn4hEhacjo6nya+W179t1Pq8/k7kTHgDy+B8zrR8X5rukvZWs4/5SPp6QLVzmuM4ak5m5dqgPeqJ+My9lhzXTGR/XNPWuSqkTVcpmQ8cNXmt7czub6shdrIS0yaaD3+w/6ysZm3/Db7as5GS/uj+su+lcEt/rbW73UZh23J+u53MVqZGfkdW/rsj2yBxs7yj8T2XtQ/l6qlJLx0qpz+GtzConMVPcBPnSpYlGgnwp95SNIkNpyFi0Ehhx8NWqXoo896cmYT2NNecB1I7SdWTJ67559EhOSXVTyxHNJEdHf19XonD6t/dFmcpxZ8YHsnfC8RY/+xEMqTmSVSsUxR4spsohJOaamh7hWQIH/EuX3Wbsj0zud205K1Q5wuO/3Gr72mL4TlFEWDdCPTPbvT409aro/e49ZMBrbpgnMo018+npicxEHCl4v5D9TjaySu8+rZ89u3qWTecyeYpD/FKxVHbV4UjvBHVWSkZmVT/t6qXxbOE6wwJSoTjlX7bIMuovu3tpin+zpv3hnexkVXfYSkvFh4aMtYzAdW3yteOzw/yH/TkL7U9RagLpOETh2LLljbDByx8SRa4CI59cBD3n1m5lxIFOApMvlqtteojJw20IRTH2+nsaizRFK00yHH9kQ/kJzOd6mV0Jw3VwV94X4Lzy8g4KUSE5pDu8GshTFxhIkkKQpe10C7SKpIpX26uTnm2vPiBvgbpNeTvM3N70clBjx0MWZff5fdn32M9P5JqKbOzqyGBK1sp06JzsyVT53MiGG2h2NmvXN/NSJv9aWN1O15LsyUyUPjBV13+fXddzmU66v73htbH9mvHqHh/5rIs6NeF++S2FrCT6NC/t319KuYJBs4TU16W25s9ZICm39vQ4EyS6eoB0EW5W8sgDvSmVp8l9uiqpV02XZCyWal57XlsmdDOvuvaul4GknkY+ht1bifOBRUXSJFUe2qReewUZv9DVnAIBjhhZyVjkQ6oUHWcOHppmvv4KvuovJ+8Kvcrlk8pd8jZHZX+b6J0OWwh0Q6J9jlSkPvwqqeQ9fJzSjq0Hdk6te7X3KI77XK+yexmLv8oYNG1x2srxSiYiiP8Bp5+csrAR8KfUqWdiB+UnG1M+g3ZCB+83JDfH/b9jfgsbir3tA7ln5R+NoSaVUa4am6odAws3C7JJJFw6JoucK6Q/PtHYi789+1V6oMXfYKtCH7SR/A7S02vuX1YkGBd4ocBVSol0XENTgyFNGuyFrE1v3VaJN+yPmSDJNmuGBnZBKwuaWGRCUOq5zB35zcAc41xsDYGRVrONUTun7ergiww3NpbQpvJcnqzCDzlxV4PCKgThWW1H8aQIBDBMguiFCWslULsJVuTA9dT5nnJMmf/UGCQ8eVBIO6u6cQKdZNckqspIkNeMJ7rijRJc4yuM64n5LzkVIgV5TxMikNwDfUvJdrsimJUI+fvbi18zMq82vbTiwYpFkf/815csJB2VQ7suaJ4Wj1oeHzQ9vyublepfuOIDT/bokTT06NGPOaSIL8Edm2y+tckbdg5ZBpJZzvsWmgeMLQUeV5W1Ofsn8gV2hFPGwNffrRw2U431T3I/MIIZFeg3SuhJLG2DDxi3oRsNK+s2g1on5VJLL8olSyGBZZAwWFTp4kvajkswSQTbuRwqB2+YtEkDtehOQmj1AjmcctadVnfjJopD5mzW3ejXblMiZo8MiiBJxgG8d0WjXMtCF975JknZfTLEUUPWumpKRlLoVC20NzJueb7R782uDgwuZIOCTDnhfzfsLdpmX+XOCcOccZAe4k03RvRhg5lJZlP77HrjG9kKwNhsfqcq8Bi9nK+EY8eefwVRxgF+h7PxrfdaDU02yf2wq5X2FJRBNwDshzB/pfAFF9ldNZdPI+zjhu78o+bQ+urgfb6pSt9Z9VU7uy9Q56rjltdb1euy6XMedMIJUb7NHempbvhKVivs2moOOPmUfcoxvbC/7KcvWjW3lDGqtSZqfV2CKeJR9VZG4eaWpG6fh09TWch8Iw/J811vmtOGZqjC7N7UTQ8LUAgE2Am1G2Kxhp1a1H0PfkIZ5LCf6HjLG1t3o2ltX8N+FlptvLG8Kmz9sFViTNB6MFWi2hRtgUbLUU8OJy2lxVj+83r6+UB2ua6UNfc/23Zx3MhZsTa7z5kku2JpOcd+KS+O5/0iJSVDrXJ5pKVcuTczylX/JBP6DiGZnKQ+XB4WB3PVXPOoJAkUCsNsldy0GrAqFz2UDONBb+QTtl2B3sn3wDVr476AUJi9CUmXbUyUribp4Pz7gr9p6rq9l1T8JqkUiVZN35oCFEqHnoy4FTm7vi7kX1LlkpsRf0PqNjEg34NiwFW7XYx3peL5wsT0HARWEy6lWl7Uv1TKXLxVluFS5iuFUBeSKxPjl2q7WPtZqB4lerFKFJu7JXYwqXahfZBuQwA4KrTRo7/4IzZqb+0cSIk/P46FHf3j8OVM2bB/iQWKSxlU7MDjvYEt7dmAD4XzsdgDDQtXdNx8qVe6zeEpFYXsnpS/3j/Bt//mI4K1iLxKcwPpj92jj5KgMiLLVNmTZZh0RxgMIeJyA97ZjNc/+JWqPKSz4KNhiW2qEjBYpA8LSXspxD9hik8HnLBtN765SFFuDim/ontB4FTk5a7qRmX6qkeAOJMcyKFlQUjU9dUrmJ5sLYbc/F0pNMqUsyxq6gIZnC2VYqbSIa7QLeVO5CusO+nDXXW1Lbts1uXI3WNLMTMdtgJKOTkZqUKhclcJpxsW3Zr4EloTN17L3K6heG8XiWND/6F3QmoJOVJUZ+PqGlVIxf71l+3rr9P5euZKm6iuMZ2UKmysQUmutHjQCWHpvQR3n8EuHjb/xRu70FMRlMMg0EGJ/JTq4qUmZVcUX9Ep4N/Wi2VOrwGcSzDbooA262Xze+/eCVSuXGA7XAbfhRy2CrmdGvNu3bCpO2XJUSDU/rC0hZFUlgmJF1pT2UVrivIGNoEgBuDAkxOzpDwlU44zki0qbAtCw285tMVBc6MiS6qkyN8fN2NDdu5lO+zrpfgGk8nyypvB4aG2M/F5vB7q+iyDCumRgs/qU0GtRz2z5Tq46tv5elUddm3fU/TEmsFexQxO/3L5+jtrbDP0nKKomgvklU46ZbpI0U0mKPP+ZgGZgiv61YzExPrka3ArRDQYvtY3Qim+3fP8vz/d/6462/oeTbvc/o+UpwT31bOxrTZKLLSoZ7N5Re+bP+XPhF8pyeANWxoUakzjrFqhnlXkta9X+7f0q5FJuGddGhXq6pvbpNTAEPfv+GSlVflt367/9scjGcFZPkqtej2ruc1vLqPadkaTzA0Miy/YOI2Hbbx11/3ACvl7v7h9zb9r0v4jXvyBr7/73R+aDZOMJ88T4SmqLlh7oC1Nyo8b0yOpmYGdfxP64nYGfjJOyJC7NQi/AlbsKbYJch1R7nNbzZfvpI99AR8udtdsjJBqcjOkZqp3Y+obXmpyCeuNlXwM5hz4nWbqWJxwKJh/uDE42QJmZHKYuoEy3jRRJ56WU4hs0oLHz1JjMKi/uy/zapXUu9CUtBZMqGqMZDU7gJOR31D69ezXSLXVP8Q+xHlM1UFc6NfAtirDtpcvhj382w+S/lzS4wj/86/cpj76acoE8pQk3cWDlVopWcHANm4UDgxmrzWu51W1Kt7gN7sK2g9seDkvIVcmk2i7uLAzZh1ju/g2ucjPVbPecGD6gsRJWpyTQg6Yr02SOqrQR3EsKB0O2yZqnUSJrB4tcGj3Vi6DJySr+oHCHP3cXlSboej4AXmMWat8SwjDVyv41vZ+yhBv+mg5+58olSZunPegztJMCr/REfVPeaghLfGtdjgrHmqGBb6rlV4nV299K0yH1Mu6WDFHuDW51BZhYUM3SPlVMwqbwOqVZHWnZaNtnq+b4+Z9CYOeam7Pyael8ocwErUsOaawSRxP+IThV3Jt3vgbBYVtOZtpV+GOpR2dtX9t1+cUan8USnXZmsjbmvq21Ns+6O+EEvzuR5XeRMm2FcQOMtCqREm4Vv8npebQAQgJofbPbPlkhb/v2i/wSeiNss+1lCoGZRy8HEzetaByi/r+51UvxBHe3pft8QLECWTNXUg65ubwDMeL1SxACpe110V7rf06u5JTYrPZM+9R6/kbfeqVWnrPuO2ACOhyhFLieqCZxR6UL9dXc5p0gOsCJSXxhNTshtpGJe7CB0Q3OZnLzNbDjlJ67tTt9XU9rWXO6Zv20UdDBYGJC12f6eufWRUdub7QUdtoCZ6pJkmYR5ec+Twrl8v5fXGA36xfT2EWfb2W6aOnupnpdi+SHDvFzVzXy0FncR9zqAPTo4mO+9qKWD09/ycvFw59AwskNZD7eFs1UfBx3PNcK0dTV3vlK5Tl2ZabDlzWB/xaPtUaWV+rB/RBj52FyqILSwLLzSMiVcJeEARJBll2pEL/OFFXci8LXt29ZR7HveyorfrTdnUCIWhw/bVVyq3ChWxq8AY8BpmTydQCtSRjqo7del7vSe/66ACis9DUWM7CxbaNkuSn7hjOtX5VcVHSIEpLkMC+gRmo1owbiDqXy/ANREdORtxDJzwx7f8kV0KVq0LHGR+v/Lh/YvVhSYbuScqP0iP0TTgY2iYJCQxGL0IE7RpzWSd/wIewWe/39Ak3XkYFM87YqA80+Thj5+xOBT3O4s1V7HO1bu8piM1usMm/hcL1KpHOugdX4S5i5IVkhW0YWYKoDgSqONxTqEWuR+VanFFvgMYAtehlV5c49CdsrJosAa2BxiteItNFroPwoZtDwklKaRTyw/k7W6Ym+SQPPqgCkmvrtAtlnODGZkh7jWBvEovzcTe2ko3tjXr/ZAva7F0fuqbZm23YLrKFLYR5/IjHk/ITnVuDp3CObbSsHZOszW5Zr0rmbdZ8aSz6ol1V4O3hXafHoZ7GJ7IoNDkck9SeYK6pNCOYW5Hx5zM9lGb2m19ukC9Eytrf+elG7W39cDvaHH65HR2z7/Zgt2QcB/n8HttrpB9lWGfwSbZX1qcNZJjKMyR7FuBy1NBlJMJU7mGwcU2trLYr1E8tonRki3egmkzINUWoRgf2wyyhPjT9eokpI9uZMmTVlZy3K3dVapewP//F3OSELAkHojUnufOOwhJD99yqI0ulKCS0nRZqIrvV15x6CmFu4L1U3YF6ADuDZCQzNCA1JkLK07e0RqHPULq5KwdD2jna0o0xQdbOKWY1t9OEWN/YlMu7Fl0BK/GWNjDKsqzuWqgvP3Ovt52lzG9oGrP5QWX7YiNn13KVuBFsfE618Eazqfto+kJbWt8Yjq3NbrQk07DqglOxHiODKuOYmcE1OPAartgYVj64xoF2V93yWoFqrKqsCY4kVhV3MvBhZNluq0X1rr3jBLi471fVQmjPnaKo5JowLPxTfXOblsb99xR/3ffmCrFZJX99cZG7o8Tj58+efLON5y++2cqL72klNajQhYpTnELIwDupUVsPOeGVU7dwzJ+/sCJ7+Qs5Iuznz5+HBGE/JvlBA8SgypXV5heSv/66EmpYBRsDPV1iscuq/qw2ktflFyzzTZfLYOuwgFTsYIrDMPT4x9dqCDwTtpNE40pWxmfT8VR7dvbT7Um7AyplDUinwBOue3CE20cLNOwVmuwv62pz0PdyEjnqo7RYLuW2zy8dz7dyZv6fVdduzLM9H3CUyFFk2Eys/gaCoS1dSev/wZCAdrVxUX/9VhN//EYTryEH/VYj/2NrI2F4eUw4p4HEtpaYnWv+t1tIZ/OlOm03qRvLytxs8hv07Ln7KnBS0FyF6c/chvmh1z6A55fQmGU7V2Hu7mHwEdjLYw2cxrZPkdXt6zm8rdhqD0dKmPT08fHP/iWZOVwVaQUe2rXK8Ds8m/zL1i/xm56cDvBB/qUEEx7k5/P2bl+prz1A/uIJe7K+cFel3SR+Q88NVKrTkQM+za9hVKxwJf1tqSc26MhhXalaIaMZA7CZvYAVomIyAhCgaTpD9FFz+akZ2qGhyq18ODhJm6zaD3Z61lAIjU+NUJkSHhNAJ4B6AbOlt4RV+blS92i8aSXzCkVe2Gm17kJ3JuqYpo/+ITlCLup9bcoQO7Z+IBUs3KwrI96plCFMiD0QvUBPr+5Jtu2jrBec6o0SQMn4zc9JPz/4dvhT2Mdf90B54HgbnJ3uSSCtKu6AdtlmBx5HLsZotXR5b4ClxhFS4IjQ+T53z5iyUxAavXb/dSkSMWXUzee2utc9SyaPapwwpeTNfd+QrUfmoAr9vlSYX2HP4P6VjmTYOqT+jk8klJ97AK0lzhrsDLrHwXZ650dyABA2bvMbFkl/xzP+jg/0Xd+G40v2wFrT6ZrKtgMCn1k0zBRMUVFacHdNBjb9ykQU0a+snMWuPZhyAVCgsybd9/acwKfk/FtNXFbN7ia2k/6tjZx14+1vR1v5Yxnh/7GLGdvS5PfwZM6JPRtxYv86YsRG0/ghBku+BumizESyWPya6shX09ZbuPpeCcjWtZHCdnEqq98gl983P+zlXTX/Un1zTF/8xjFNW/0tw/pNBvc3jOvGRsOH/MMHVk8jF77z6lFET4lv5tXX+mo+sMQ3g/JryxpYzmgtEyhuqeQy0M06BgOyu+pIEjpoAibS27pKd6etHUWNLc9ihW1PmA26VxwNO5PJXrVlbwVqq5+q0sbsVCNbOiEM++DpHlIySOYLiPLN0UmOn+qoQGmbYhXi102933fVtbDlLrAGVYXYe8nkbFF+rRfrxQ60sJPyaw7EsAdLDRDDBlA/av7ZbwEQg80DLfZGTJfBrMLW7oLuL0cGbhPtWS9RQK3OHPnmm5XSLq5i/dGiMg/HgKfzja6pc9fWjqnByDcq/KZOmQnKN7p0bmg+WzvlUD/frPSbOiaUfYAh9K0ubuvazjK/qSdj9n0Aupz6m9eQ2rG5sfO69cnNw7YX2uxUMCfb2hN7VgqxGNdQwIeUVfZAMX/mwU4gRuNFB8+9vV0senUVv719uVi87PtINGhhUpomSK1KYEpCmyS1xzBUlpO6ETqgiGZEPpDtyFVk0S5DYVroaCZN/e3Fr5O0qcRq/OGGhhbjz6WVlrtrOS/8YoCf+zMa2jBSQeIkwyF6BbPZd3aRAQXLkvwqDohim2A0FNKJimg1naLOI95SjQEpM1Axigu7yOpey8DRVCtn6yYU+xAuQ9UReEhIzVOoaPpMEGG9OFjP6jb/b/nPwv622Vo6hY4sAKxIvPbjk9c5dwapOgeQ+Qpuj+srvb2wi2zaLu9pblYc+lV2V88AA/L+a/ERV/njZf21mj/J5Kwp2cz4iZchZ1XC9bkEVGX9C5S+v1TZzH3Ejuwif2zzbrKAw8hsRmcQWvVxpPlGT/V9JPev7Xq1vqpiviVk9/r3eFZYSn48G3gpJu0+aLWhHihqI+juikM7ErNVGZuRGGjs0OQEEvANexMouw1fRV31gDQA5Y0wjbLRAwuCRs3mp1eDgDJbz/Q2Id2nrsLcCzeceY42kjI0UirlRWOFAbPCtZnK0inDBOmG2jDihAD5ulpcVTM5chWv7QIfqNYlKE8L3u8HIZWNBABTaXvV1VMYz9dQqqaI3dCnMpMWBsweqvANc3dQ5zWTRuWgHz6PCELwQpJzZzB8Dz7bA6Dn0+BvqPzSIHcDS8qsCQc0ZjXwWgwMdG84lvb54RRBZBcYnZf3MnX1hQzCTEFf0BR8vDBnbRKZtylvYK9zMJ9rFVPa8EO5d22Aih2BWft8bHa8LA75p+Px4CHNoVfCG2GQ7YugFr/GwVw6jYM5P0pyhLgFnpI6cRXq1zVUeh33JwGmeqT1okCVNmLalE4l1fK4Ecs72eWimcq8xZamm+JJUmJsUx4qvPtGhW2W1WF7x9Mc8RjI4AutP/EGgfWx7elIHzx5XPC7n0q4kPA8gINsex7SB88bF/zu5xFfRM6Dt6XsLxf4zZYlMF2a4r3+hbtv1QAQGX+IfVfQojSJcHLQCX/4xeH7ZV6ksU4sc+ZBTwYOEnS/2eYeob430TnCzOLixqnIf2YslzCLqKKBDDzJTm6oQP0fjczUJf7aIUZoR4Uzs+I1natLaNbA3piIJafVysU8KH/qGdvRyJtQehtY+m+vbGdNJYbeSdrJ8JyvuFLtxjE04lj4MTOFtd6iod08ye5U6Lebp1tT6DtkU+EX2XopXwPKGr/IgOdcACs6q2EBeUMOqqaRI68zBTa4bAuPnNKy7ZtyqW51sudMgZlN4fgQp1kLfKvo4FSrtk4mhrlRrGd1VSfocF+r57CJUoI3weRTcxBdBIwQw9q/jxCraO2ulAVXQdohr/KnT00ZXQQ2K9UrlpdHanlZncI+XbYEfFP4B3+Zj2VPdQsN+7rPqgngYH1PHR8BgPtFxw7X7KsFW3CbkB5Z6xPDQQkxZDi3zXYHO8pBVw3zejfs4Swe1NSkQf6oviVqkc+QR/C881kWIu/0gPC3Z3s6knu/fzaRlR2yz+mDOc7el/W+WUHDLK2q9+287C5uYUr81pJypuVMzKCM64BCiqSjurzpykWvqSygy3OjBi/lsAVJC4gROOr3OACWy9vC0km+bPEvefiTzG9XD8dHWZCs0ruji5B6fLVuzuWbtO52ktzP8y81JP3ze8J8w6ampBgxBsrB7tGV6k0zs1e2usKMfaJAxTzn5wY1Kjz1mla1xOUPuFMk0A++El33do2IGvB9s7qPyHGTE0Seo6I+2wwgVF7JOUMbs7EKFptctTUcGLXTnxrp9fZBdPtQDsQEZmn1TVPLO5eotiQgUIiIwEGj4fsV5LrCcjem5KROKYQ62TI4OMuT5Z8BwyAMDU/105Cu5+Jv1faRITTPtZz17P3ZmMnzy7RVSiHioIR+Ymp8amgGoZbxSR3Io01k8IyHkudb3ir2yfx7w4slLZkg8TtqpxR9sbMhdfpyzRUnsO2ynCKqtq1X2Iivqrl5oY/efC8qDKH6AE4hWjKMfH/Q5hgoIgM4tAU8qjF4lLvD/bwnXoJX7tPh+iAnS/lY+Ixvy/WNgh5DwszpzO92g3QLjUX1gXscfaMZH7NX99BIqyvkXDUI0WEJUzg+BVsTLOemU10cd1XwR75Zq3hjQX9sxIVr1Psq9qd3iHysg+ty3tfX9zaaIJe2Sra8fXQVH75+FdLjmwf3qW81k7y+r8QKb7bugtv1qP3V7ThixB6HQBbS8BVsNwf57NoVjfZma+6zdSPrtNZB+dTEL5e+tAo9ztYrhFboHXqttfv8cYAMVUVwuRTGScjck51NhFXvTbBjisVElX88HwybtEkNJx3FqXQKVs7+U07SqI1lknbeniFH9sow5Gb1uvdHcwGoS0sDidNV28lBGcd9lPpmM+kq1ypqLmCLePQWNmKfmvjQcn7TdkLwFg912WiM7CbTQJTah/svm9O0ojfk97Wbvkisi7XGZlfebrLdPA1cd0z81IRwKVeVbmIUE5dNQrlUHOvzVwmXVkiU7VLDXjEdGZc6ECQeE9tdcqJQ4daz3NWGGzVXSUdWPLZG/8hVtVxSH6FKKAVnsUR8RzJuOyqdlF997kN7NRmEtDAv3i8I1Pat2oH7hY64FJL11afTteJmA//Odkfd5NVFSc8igQzwaQNqTUe5V5HM9uY6hwTDcHiodOgXMshuJRUVkBj9vSLyat5HoL6rcpZSaVu36d5ijlsNJogsYto9gmjL0hY6rdu4Oc2AnEmRTw2JvFL8oUBRiV2Pd8gXSAOWkeIDPabfrgVtWqWdejJR/6ntbA2dqsLWPWJuHqgYeL1rOclVDD2wCjoIowsA3Rae70sVPiephjkH+TMjYU45B5OV2PGAQYJQhEcLTKeuvlqrVDy58QfHZTAJwmX2+LJeBin0bUSkpO3rUu3dZNABxCV/+YK9xc8JQC+plMPj0ulQaIBGt2GsgsPc6tYCt2qlCQGBj2fDyhAsGHbWvLxJPN2BDRys5vqIH7xpwKCxvYbNXiZWvRRbbPZnQ7PGOJzDZgyOGTm168jMDdFCfvHMaVq5IGvZ7Ivq9hJpC2yWH+jMp+aiVTPAYH2F19jjMcpsQjgxyKB8DBq3m2XPlLfvLzxKRblaMxyh/MmaFrkBsM14OCCymZSZDlmuVKCTQSC4RaDKQeyLxlxmFT4OGzXxFc88B1A5Yng2ah1gZX3B70IxVHjy/lOumtNm0KRabvb0QvxTfthW6kSp57yfYehpQJYvmB0WlDHsL+H+Sf+w/9k2FV3E8l/kKlNCHKSeuvHnjxdPHCHYhAJDjEQXFQRkxKb1gptxX70sQ78yrCMcDg66SvWljiki9+bvhqze3d2Q3icZafo2n6qk9ZEqM3nQZKh82qwTVFCDShBJfVjKjvtGFmvBK43mgIx37Z1l8EozlPa7Xcllu2kN82q9ArMcskJI6HKbicwEajyyheTIS7dT0Y2SkP9RQ6V8MwAeB6srZ7SZWqmrbVQ0uAphT3g3yHpDJ3TNVUNDbDzJAoaMt26igNcgr89kAs0ocTTU7Kd2ryRDH6vz3dYM9jW1G9c4pdeOi5AE97kMOEkRGVYdSsZRgSbj9gI0wsPNmW+LB9IKrdkQAmlKhkTmucWVMU2cjm+wqaWdahcj9IRI5up2BHVkCGZujmCaw6g2Bm8IO9FubW7iBhBOfzFPdHC5U8T7MPi4pr1jzCLXFGnMItcOqTdnkodRC5mms1KQriR0wMuc/cc/ef+u8VDB7P7aUkIR9PSu7WaxyNJSEC9VNve2ew3T0r7QPyH1tF0x5bIl1BrtTzG/Q4F3CKUB64d3zn5vZFnLLACIrOETUguKt4mRxLYC1pIX22zsUP2jGUaJF+mLhEy8yUYBjjuNy/QTqHQoDg+N+yUTF5ql1vnCOa3uhe8I17YjjUCUL6NidWfgnkmMf9ECR+aAGkn2JsbKILBJwxMPc0Z14O1ikn7zGNte/Q/9wD19HD0iffTF2dv4tFG5HY9DlW88AZ76toBiHfrjO/rP7tFwbiZ9qxheHp0dmUV91yB9o9VrQpRaNPcEr+Vb4xcPNhumTZv9/K7h3d3ib+rj+AvsbpafZWSc5vqp2DrbgKGKkrDLgMJ3mUaJKBVncCsKcu9BulpriZGLkMo9NDRuMaYlkwGahqWYlJRKjKq2WTy4IUF6puiVs0oj2+fKgWVgJJSBLcBe5MrTJiYkKdI5rskZv6m/vlMHntSYhazyG561H6sHzQ97qmmTv4zRqkBaT3Jh6T5qM1Wfgl/yjLyvTSSnozjbwzhwk+WHwWTeWHyY8/C4udq/MIAzrJOd6/E7m921ogwu3J6UrLEIbebGM8yjXu67JmEwerMvSEgc/XIxaITlqam0ZfrgaV5fhFG2Er2bh/PuJ3hAH7pXsZZQtMzW79TeqF9pdMEwjybGyu+ELtLa38AukukWgV61S4ddLb+1svEDFA5rcmoFvAehwpthvpvdjJoNdjej5qy19EBC1sM3zsIv1GyyUF1NsnfqRnl8cdZ2x2eHCKmjm2UskUQcgFeMBt/JpUaO0jn1GtBRVCHr7JBZqrLVGOggtDi2BiyOPoBx9JjZHlHTJseRpvj8qJpR/usmze6U2AslGEVWA20wE45gtPEYwtgcmKIKLIyTeAwpaaIBiDHhKtcDbtyAY57AviPYwP9ETRqeURmmJycNCFKV/3R8dPT6VG0sgTv2hjSJJg1ClVTcQ95WidUEcK0pvtLIgnMb1LN993YFu5Xw6fVWDhTL06SFV/fngw9xKfwvHrZRjKcPltNziBc0kB2Y2PiVGdD2r0oEjeHlVdkFOB45yq0AVtvJEMB7r1qtKfRcLxkAjpHmLuwif0zp65Os7af13HxUz+J1TJc3PYvXWbmAtBJ2twd+lV0zvmczvS/e+JWQ77oHva4BW6AO3SEOe84XWSgfeRYu3Tfhct01dFigoI53Fp/M9DAWVjCofgCG38wKNcrPYPTPe/cdwNvL8NwQ7SxcZu2iqXuqrIuzcCk9wya7bihJlc6Fu2whe86sOMGvvMGiXKKPS4OmeY0AibjYR/gRyUeHB2A6ktavF0LX74sL/ctiFWQ9hCUsJcEFQS4EirOANgY/qZFKYTYKpn+isZAkQpjHOBZyjT8Z0Cs5Eu8AY6nouNA3MO2cJsDp+NzrnHpejO5H+S9G+S9G+T+M8n+AXdm78qqaw7KMA6N3+IoJC6KJcW1gWlVw7i3+vaqWHga1z+5uy9XxtaFLfJSb/ePr3ACLEo8f3ewSXCRd5jYH1UJ8wzLYJihRzWKd75TPTBIxkUdWKHCTe8AFKyAcUX3ThCI2P2ZMjWXtrB+K+fE+FIgc2DYL3hDECrNDoxnQqi5KuGhVdu056auMKgUsqVENF62FQJokysIdyW54JJM4xtBUIRE4H+ztM0xsqxJC5J6vGYHBTF4ZPi5ECOk0LxjJwn5b4xP3ijsky2UqDBbqr2Efr46nGta4d3yHWSgkDSIuJFB11EQcHISZhdtLPdB8CNr8zQf04YQNuAaVNlnf0hhSOAmrWCtTOFLIaBVKSb0FDDIWybmmG8qXIcY4csynRjk0IsZtBgQBsBhdOp4PMkPyi1915oeEH35NMMkmw2diXt6BI2LM059KKstaT1SdwsZM2aNtNPUy0GWqNb+a8KsvvBqRjef+MGqNj77njoLW8FxxTsO107axTwfW5RAahjeKN55KPBgbZhbLUeFwv2/I5IqGFaB3DUfWg1bzBSIur6HJ9gpMZSyOF/b7y3azEU0JyGzAC07AckOw6Oqr7Ap18zopdppGkza1kaqCvLbsyGvaqPgyguDVWkre7KdxaOqksS3v+M32Xqcoc8rfLoLlZYDTZecm+XGUfa4SOL/gH0Gtvz75oWcxijfV7G23ikoxH4nxU13WHSSmrnA3eS7F1EJLwc9ue+xFBCreBlFsVp7WPlCZ0lmjgMW5wYcqRLzGQJ9WEGo89PA+4h07pHEfmkRUF8UuMHCv3kbuyUtvJokJP56Nro4s/UOP2yq9t7G503Zbg6dtwuQP27TW4ued5BqPAd9rY1nkV+RsbQTNG0bOeZOtz4ebhY/JuA/qbhGGm8q3qNPwz9P5iF4lxkJCnA5mCw5d384Jedwu42PDW1PSnYYJKPt3CLh4oCELEXMQpAeyr4OmkQ5MqxmUVu8regWbya3thoX9tVTF59bDh10NcmQ2+IWlw/V9toY/ZLiynOOG/Vjelr3jKPLabGPn5xWC+phZLMBScas72nshEAjPgIC5dqWg71cyf5kerjhKcHrxD3LUyfCkZ79W3V98yB8fYYHKbtX/0xOHgzOEwN4aKQ4uL1+fXh6fnb7UFRznZkIvzErGW57kR21+enbpFuBlc89zW+4IvneG8zFTkQ31+Hl1fS397P8pm0m37fHxm49fRpU92LGV5kGvc6gIcgmfq+fG15i5TRmwiIIURHrRb4HFVHgiN1xzUYRslcuuhWM21SXv9Vpda9McmxX9waqoICjdkjfTPBk5SvxU2NebzjHC9SksncziE2FXFFbpshWGDittAeFrp9GsVkjMrtcdbIsRBqCc9wfyYsIBvdFEYv5Dt1IyORP+fn7PiUh0RNyZeNTirVOWaNHVFJ1WE901bBAkRWfqwcqmdrkyZwVJMZR7SbJRUF5Acnz8jDmLJaACSfI5hpJrESY9sqSebdobPZ/O2xvnY5jm2lQmU0127sVNa9aFapqhUK/VLLSXp9iBeWfZStWwbcFawXBizdFMWukNMnYYxBGkE9uWhnOlE8GcgQHsIiNW7UEze9vOrz8sVfQbnOHy/VxdSE1OkxMlR0WX+1E4KaMn1M0sZBWL0KSWbP3Im9tsnWL9zcazZbksYzX9tjgjqv3KPih6t63eFUzVH6ooD4dijRbdwQS0GkzCB5r/ZT1fHzeQPD3wCNVJ14bv/N1t45XVwnNboxB3aqWN191d6ftednvT4VV3N99HGKtvvPP2R3ByYEr4Izg93IR1P1Eh0aaaZCT72gkRQse+1LN12LCk9K1M/eGD9Yhwsb7q4UwO9OLBJmd1Vi3wNJv7zV7r+8XJ7XZmstXw9CXDv67Q5wcnOLQf2wX71765ayANb23HaFB98j0N5QG6jPSPmwQw18iiaq3sRlb7judw9dYWulGORU1/R9gyYVyaslkx6vJcWIgHXtoGzpkGSWm27Rrbmv5JKO/8NzV9vX2bGTf+/W1uVN0xUOPpYbsJPOnCdJcN9Att9b5n2DjfS2epdo1a2uK3RmujxR2D5W1+d1PZVVd+aWPxAUfiyk6W8cEblCADktGKoquq2AxvtxFHFL1LnncJENytxc6apL2zrXRHS3nHzrdRGeyyqpemZVBBkQz3X9U9P42OprKL31FPSV8tNTB+XDfwnyDfaeb5TwJgO2CvefA3BGzE93mZWzbdaDXjHZgz3KY+nha/FzpXq/Ghm5veQ2MGmskr4QFS/9tEEqQ4BobFy0beVqtBbHGiohRvX19uVssp+5cvqZGw+ZAQokgR++hfCvMsbfyU9pDn1WrdNVU0iaQHoiU6yJVJVEwCxRtV7XxXVzQwq54S2ImID1152zG09ULBv4JS2wVfWFidsEcXxJRWcbWnqZ7SfcYA3tXQLhcH+npm3HvovuqWNgJBO1Z/wEXYjAU9aCIqRIGloXh5IUzpUCO6GRw4RAnJZlUMf3FUee25Wdab16Mrl1JPyIwSN8OWIeYP/W/lmR4wUea/sJAOhEPdESzKNLYozWTflTf/m824yv0crQQ/LCU49OZVRAOVqsg6kYeGuHKMY+RAPNZuiH2aud3dn9eqqnKLvfy/NAGKDcK1vKtuFK2FNtZHVHTlanph0upBhHKVAKdgYd2GXWYUMg+inU/lrovO3oe4zcN91o3FBuvmoCejI9sVjLIkIwOhLo5gfYuRCZIDHu+CI7fUZGHa+Rf8JfE7oKOk0j11mnRkAvSlYTgsBCjBcdQwDCzDFyCyRnXMGX1bJXdnZy104IQBal5VzfQWRhIe3IUd0rw8ZOaWm/WxU2kvouW/HCXX81kASioOR66WfZBXJxBJwd9RthI8nw7K/WkFh+tXla1OYjmnHq4awddajc4Z7lw+Cfbd5n5j7bwYxVffdMVJvYMWagdFQ11p0jYbNa9GB3v00E31LlaMYEyrffN8MgeZgcPR2JU9NGtvd5r4SL2frra0usOLavCY8BCM7QJ+PzLA8hJnHSQO74Nz2kFX0eC6CEkyeav5LB1TBnyfKPzBx1vZCiwsAhfgZave2xb6CK6A2CpQLMFAKGczePE31Z3DmZq5DpEYJu5JDqZww5ccTSS+4VAoYgIcxhVEqKXobRLW4tuQFFbkPyWPSh6QKd8ptJvPCA6EJeVIDPQVSiR5rg1ld83QhcVJYYbLeNv6bZMVO1ii080V/Y2lrGt0sIA1KeNG9eq+UNbm6j4LLk7y7cr5lFYPRbiKHlCZ7P7dvS1+fmVHzCo+tp16DWlsePAmXJQyEx05Guoxj27dtH9GU2k8ZbYdYweAxKZR0EE1R3HRiRXIvfY/PiwZxEf/pBlE+HIGgGZy5Cpff11Wsxh72AojMM7xTOPjHM9eplkpzlL/UeWnO3C0LByLoRG6FZrzHhgZauN+/NScRR2uOtAvKQm9Mj8wNsGAhuY+R6kp/Qzv78r7Sdo/B0D6jV0LEEn/2N7oFFGzCht892HG8JMTlv7Q7WVCBak+19vc0thruE7x8KC1H0vVJ4ChkMp6CLCWf7CW//nXLY2Qt+Wv2ShtRpwM9qXtDaEN6AhX9/VVTQsyU34lESkHCi73T9wRofI3NB7co7c/YHu88QQP54oqdNRreQQdh8AG+6otMh7hjsjkARfDnAGD45Y5tMXQVfljIjyoA3jfrxe0UtmLOC5RvOQTrEnixj75jojn4e2cNJl3fRKjOIhr2Fq/Myh6MChF/Wm5XHGX0tCl7RX2KsURqAOqb78ZOt0bOXFvfRhuskfKhjwUT33QgUXaQHgbDhjD6qmoHr7EUIBwd1HbyJDozbnOjUphhu5J3Uyji/6q+rrSjV0heKiXtpXtKC6zpHyMs/apwSms1SqQcGnswpn65LhxmGppgqkYshxFVbPOA9aq3KmJmWaYuRleHvdxxURwU4MZVQeoEGI5yBRkcjuCxDgs31ID3Zkk1aw2PzWPwdgEs+Bkoj4J/fBXeag/Q1xc61howd/4oRYCUOzWFnRoHqqfguB6bWpGdQP3XUzp4Gkbt3YqgcOOT+WfbcRNe7gWlnhBbqHqLmh0finTRxu5JO4Hs3I1SEdtcohwzJTeNT31uG+V69jowsyLoAs3xpKMeuDPHtf1BwPxeVTFRCBCdIU9El5FjhLqHwdSPO4C1mDnhQcNkSs5bVc/Q8jzqpqWa5pfGrciTHUPeOw9WTbMSvivlPOygGV6ejwKRcgDMfrugFd2+w/MRT6H1of47FdlV/ykYFO84TZzMT4Jm51Xv3EeNouyTbBttSjbgrYN+bahAYF8QVrgEauLOS1euY8uhJenlb1BCHBj/7R+9uzq2acGOzQt9G/LHtvzIg8xsHeFl1Wgu29Hl6VZVf/jg8083IoFWn3264981wLOClmbBt/c1Xhq1vzNjvZb7J53dju2/HDDQz/NH90aP+mXG+Qn+m5z7d1LKPpe6om+54gIq5JK/OMjWn8mfaIBaGJPmvrFQEKz3TcmecQgVBvhSFMjceHUcHZKNbKlljHN7NAPAkZ18vaTrJ4V0lcWVcWsIZ1qJRoK0GP10C5CitPTAIgj+5tqcbn5DyP5pZFJPzW+UsnOTLnR58+ur67/+Oxfns+q8vmLPwhd+OfyD3+cVdUf/jD74/Ppv/7rrLr+5/KPL6qJnabWCIFQkBTkeiMnS2mYKQq3qHpsOWYi3rNSHpOHa44rvl10B0cIxHnTg7yrwV3+RoswQi75Ud5OrSDTYPfdTB80WRPUvzs1FoRl59A+ELGnk/t+6C4+HeRNPIIjSS7tZ9PGPYSj5w5rJzyffpxJVvokila4Nq+G5reGUqERlt7Ay5PWzi5G0nhI5LfN8NlM5zcqmBH9ZgULfnwis/28mtZL2sHbiVnYvJrKUE3OZvJy4A/TVz9i2sbQNth0mmpg6Fx1J7DiHpg5qwcJpCauJivUmCTqzawN4lt4ZQrVA3pfwOyDSHMVbE8h28SsCQlwhTgfPm34MhdVDAgx+ITjTm43RB1WgdfVlxJ2sa6LNlOqA8uQCT7SUoc66REyFDfrYkgo7rOu61/8UT3Yzs8vXvzRXRHVcv1j281nh+ul+ZeaOTtTc0l2j9ZqNVok/qjhmwQ9fMGQxwYp4Ik/VfMl2CvF1eGpJpSKFpUgebnhIz96ZF8m2A4/ekQZmz+ekEU+1sBl83ggaFMo52hEQw/ghRdaUdU3tXdneiYhLbzSXZ8K/mtCfow+wsTWBEf/72ladxCPTx7AhWdGA4cKedraTdRKCbYTtLZSW4pgStHno/zNIQ9efO43GOqGUcei1O5pRx8aYyF4UPPr9GGo04vgZIgBeF+ubuUdIC0JcyamAVDYLv+e8aM34W3aIPf+CfSy2iNEsNQOyfFeTglMfIVLS54zMpmma5Qyy4iGgRFQXWO0cB6OqEO/Y3lspxHf10oYEfrR1Y4FqS5deqS1Eyown8CRbH1aELI4ctC6GRpJJ0gb+/1SaLiM87AJuLWozZspRFapP7Z5XcCpNcAv4DQ6qDQIlhTgySEjDw0FBAqc7RhPjab/xhn6t07K0z4YVwqFYa+yNJzOhtVdxZnMZeJAAfNJktU40ev1CmQUdL2QBd6VSZAyBL+j1Ic2oX6SiTX1q/CZePicywljnyiHoxQkgBKxgceMMUxaqMz/Ew67qxAxiP1wFNMBAdUYgX8MxzMT8hGdfWCjh3M/v2eYrdE/KIdZD0/9+o3LrTXDDP2OFgzZ8LCdJ+6VU9yZ9cANQjMfKHJkXxzzNvf7ITL48bDsCB4c423VDYgyxsQe1CSrN3yQxcJer27brv5FWjsgs37ZajHAiHhU7FgGjyGyR+utAVwEj+RpcXgosGrVbEvLw6NBKLm7fXA885kc4h9s9hCFiEQV2gwt/ClATjJFPS66CH3C8XirnmE2eNZGCI6i43GjZcLIp6ViAPfwCdixZPxxv+vUOBAAfPNAmkoFfhwCmWtzwzkwhjC3loYTiEspDHr6Pbc1eTG0uVUrr4carMBU42gjX9LPNtU+ErGgcJJTX5dUSZkhzNv8QLOl9CIpnfnnKxzUJtOj76VwZhfhEPwd4/2bhvtljKqyqAa2CYdUsL6qFHR9lkBGoeAQL+p4BTGvHeLU9n6W48A1ydQ457IV0nda3cUNSY2MfJcY7iqOP1w2QpeXy6qJ0lD6DCX7CTpkIAI4PldxT3EjaCwNeJuDQYLMp0RsFIgAkk3JPHg0djycpgHpawByJPT1zEK+3hB5EbWeRFBO8l5oA8MOFFV9yGTXxxpOvQc/12gK3gDacUi+HNHXZ+aPRpY/BnXTpsJRW5UJZl2Rc7UcJ61Dwc/0otLp8uiRlgIfX14pb2L9cf/TgIJM+QMxUOK52N7BBfoRotRtrogBIiW14M7uki5oZqBs9HJWelB7ToyOlVZ3UHow7vFhyShdDpwZow2GoYZCfFC78tC3aSBhGO6WbVgragmUOVW9oh3eVm7zFPPUcqnfAne0A6wnu6rK1QAPHZ1WYWewiRponvpEc+dIj9RohJaKV3KV85ICWeibeRKkSr1XCzhX5JTz3jEsE/RHx0L3UYnnlSjW07Ak7Z1ZlamQN5iYjdTrwdpr3US581DfvmcHLiwdpzjV5Gbi/JUpEqxHFM3XCq62TZoVHojcPn1mONWtKHtSRvEKA21iLkxjlj0KiHfvlcV3OVrMyD0nGjmEskEtEgsFFYh85cQCQnqT+QuF6m8tIdbuKnLEp7C8LYT2WlhwTc2JNAlhftkTmvYNgmbDj0lOEMLfWgxRw7plRO3ewyhPQ6n5PR1n1QVFUeqUQ7Ck3NI2S/XbivXZrJI9B6geaWmqL5jBGeaVnGfW4/O4gjosDB6AsiqVfnWf7pcml766H4RT6cb7qiGkmHlNapVraCmDEDWMr6CixyhNzgcZqmMm8iBwl2wQHF5FBWOWZ5IxzyppHiFsh3Du1SyB0ALL5CNw6ACOYD9YcABcRt7Jh0V93E2eqF7xJkPM31GfDigMlQYSECO3a5CnFE0KMwzxSXqK6f8DKA4qoTdGUlPw6ZUYYyg1zYYVyakIfyy4Zz7tsNS4s3iP9wAxdXPPcbjBekaLPYBLboYdlH09YmkHQw5G3DPxbTNAjEEAviDEbQYKFFox0LbBAQyG50A9/Pk5T20tG+jLPMKYWgLKA7kUL1s8i/iEd27sG9gaNQZkDzTYPZ1ml/epHcSqdWSL8/buWGXp2qh95nCkN0yqjsA9kdbtJUFkNpqfmLz4eOZC4uMjS6KxrCXSXnYBHk5YQA16yBu0OMiL6dYK7smFWEt+n5Wrk5bm0IqveavabGwAJ6UsiTNhF4uDlUZGA2PmJ2z4iGsbkIdphFW6fy5KLhHgqOQtmM3HvJR9oFo9GWK4NseragEn4KX0eIQS0uQ1QqlD3Y+AQ8Cu156HV7JXUfMDxrFR2wNiqtPhJrxKcYhb7Y69QFIWol3Jt5lF4FHOrssgV1GBB9rotZH4vkouZeTCsAnD+q6OoKXFZZBQ2LilgwXudl4H8NJatgXEETNWIMR+cjNAT8goHwkwJ9SFBmwH7VJhcmthDA7APhNJw7THyrRbZG51MpNpSWE55uzAyhrEteBvwl6mTGWSHLRtDSVMWwV2s67sjenI50TdJY8zCICDhd301ylTe7SpTwm2/9v0Kv0D9YKp0aCT7J0Z0R28e+fzbajccuuoTt1Ngo6KZ30a8KhwQC14NPl9VyOkwr1nLe3eCDb3YleOkGrHlF2b4ElN+DyKTeE6nrot2CwbBIrshRI/+/UJYQ20aqpg7tKmJ7m1arZ/P45xl+mbratkE9mHmQrMm63uWmxegxov9mFjvm8FtVzEYEj3hojWMIgHG7v9Xr5iygzg3lHpopOHk+VkhJyOp4EiXcbu00adkGx+8QamNqobMtd6UxoTPfu0Hc6IoFIeIEwQTTveb28uffEdbRrbpYYUQ5RvTXNDgJdZKgp6/XVaLXlYcyMZcrlFKlzKH1csJQNCinkd5xF55CcRA3HTFSeiIW44WfVpTzTl7DrY6tCUY7NOfpDElNCoxOVmuPe7YaT3jRjvW8LbvoEj6Y4Yt+plOtGofIjGxweru/txc1TeMxJfCJkGU+j7/oHS/0tm3P9TyFGrlWP13UMFGyupUE9E7oIALMYdgBxevizkXF7g8g7mh92wDFT7mu7F3shIXbXt541ynpH9Xl0PVPB+obVkr+hoDfY4zTylhYmlSMI63s2oB8Plkz9lW1sqDHQc9uLy+L+9+HXrkxGf+u97cEhad/NRJ7zR4vjRo1lOXQOju2IoNro1yQ03IQdE/6cGWPzeU50oO7qqmYO+ale21trWF5uH1AJbJ1SKvvX5Gx8pdmD80MFXSIFsD5pyfi+bcj/Asg2pChBJwJgVVurA+GN5265aQnbjnNwmCLNK71i3YIDqTMsW7/kn0/IFw1+D7sLu7Bi/et3rjZXTYoTZYPKH83fqV8uy9NB8rJcdHGI7M0N+/j++Pn+x/PpEm5RS1ioqWMtMZOua2C+BVtMdhwoXmpAnFU1jEJ3KwOR54OBgcCPbLaW4LAs41i8g3xBIC59/oHc5bsHtD8mUygvMzWODUGmuqc3hIgOWklEiyNYySoRyiBpyYv6xupLjHAfNk3JLY0xtFoZ5NkqQMoGrR4KO7O1qtXz59CkEv0SAmfTl0swnJjKPntg6kxSZOAA3Sx5oqTmSNx/qTGt4cIQoC2XetTdt+Oi4iZ+C/O17UsruczjkkMn1OzK4uKr8MO2BZmWJmMrBcN4v5iUQX4KRCreRoHeYaqG811J89CDqNFns2Ti+tsl5hvo7DbvUVeViXm2N8KsW/V4iCfUbvBo8D+M1d+TAYbWeMsW5QQcOalELifU+J6J2qABRtMLxecQoDZRHY1QF1pSZPXhmH5Lj40KSBkYO8lWF91kshR71Qlg/NTRsqHtTpNzABMQg09TK22TWb99f7OURctRr2OG8vibne0ctH2BlsGF0BlaksSxdUiutRHxS0jBto/dGZtVUaIG6rAFaVw4j665JPAZWaRw18wBCwF7iT+/lz/eBvuox5GInwwPQv353BymGoNYDj+9VGyItKqSvTbHzdGIlGSHA0WgKjvwnbksNKyRfHA4fXX7TCrfQGGmpzNZnIzpJiLzts/5saR53/fuqU+g9OQCZb3AU+behGEOfKbacisflpKghSiqNuGOxeTiv1jHPohEZDnNqVXFuPsojk4zgu7y1cGpEYGhYZhvUj4tuHKeS6CGu6SKRlzfrwbfDeIJtjiIdQyenwjHX3Mgo+7gHsbix+vhAJhU3AAiNZMOvbEFdeJKF7o9OyPrhpiFLTQ621YHPCvntrdWmmkt5G3UvCFFCWZvZmzx6JPP30aNs3VdhXIW0I5jZtKKdbapP9Awz6Yw47RYpBQc6HgVduMfjCWGoAGQPyy8V99kpMjHtiA1ScBcBWvrgDfxnQBbavOwv8NJxYSjCo81FzACcWBngpv7F49vQ1dTmvDXDXJ/i9EpOpjQWzdX9qrJQOZvLpBjHiYpLw42Izjr32R/GYbB4gEF24czGRhgGDxFobrkgqpjhxOwwm+Y/RQf+7VEcrFKgEd/ZOUbneGze6CUxv544gqfuNn6prBd2AqFv4NABbYFzrLJ5kVaprn4j0kJuOnzNMN3+ACM8WqufqWBGa2Q37WX7eiA9e9vSPIrMRwAKRjEvcQA3s4FNgFZxpR25FUxCIGNATKfk2cBrUi1I016sp7d63oWHzhpiNx5sEzIb+ZFKBnZ8zCarmUJT8OjSpxyKGrVtwlfAIXPjHD58mnZt/AirvuNB5maBxh0mEcHJLx3Yj5bMvs8jJ7tiqI/NQq8IattqIWyG6m1O1TUvY+K7EVx+UFKDHbbzip4sDksl9DLedtRgNrYY3ns+9xydfsMCYckp2marWIOcwMqSsThcdwbt0ZcnaS8U2GiP+ONfkidzrxk0hrEf9D4W2eyenhOSBk/KhhRMLr1BTcr1XDYuFD1NHTm0XM/qlnOczebTeb2Eb8l9M73t2gZ0UEkv5c3zucmZ53NOiZ+DF6wFPogJGdVHhBkOiiUqm0IIQws/uBm8zA9U4Sw1y+jBetYU7smaueMXgzK5y5gGZjL1hZ2wCzsu+Il7qDf5c3co8zPFnzTbTPB40ZEygJ0cLJcK20wt/2yWKjDsuar8v3Kv+NriivsLPlVu0ixC1PaSQKyNRljFYO+5DYKcSQDgEETZfz4/ZFyL/2K3C721kQ5uFCSKNtTRj4JnHqyhpPRmyUGhcDTTIuFAHgr8bMdsK/DFz9qhwMXwyG3l7CC+pUEQk6RTVOJ5l/oE6GjofRehKuRwBwsyO+WQmJkM2AT6bv5KNYa62jbV6q4VxiXBYeXow6rhRmjhJFNpbfR7KA09AvbeAdjsUIEk8BRio1IETZ6v01s9J4JJkyPKlHgVmLxayE6J0zTXAnoo2BPMlnQhk8eDTWEe7/3ke8FAdNIds9Xx825Id8R0FTRXs1f3hV8CUwLaaEOBpzpar4cijCCC99gCIylGqrKwbo20g1vjDdh244L+dFMei0lSNRaMXYBjNjJSt9SRcbrCoFqeg6HabWgpxg/wRmL0ANR41ckxr+rerOdzOWwAH0cbutJ0bJzXIY8+CFlPkCzdGDHFhxgZCqGlodm+mOZ6iJkBoqB6x/MQlo1suGkXo+8zrfL6J0Pb0LfVynwzxxahN8L/q0V2lEH85a8D26Ov+/f7Hlvj671nIdWtkmC8RLZRMTh4maAJJfBBFkTpSJ0sfKBhUgdQZIurYHGV3BMjmM65rb/D54MmNK0pUFXongCTuM2V8jB+yCOhSYdGH3Za3emcHI+P9pdHvOBzqiLb6bCidVruTZ/RtDRPsMgM7JJZB6kNiZz7UltbC1UQg0ukdrZTi2MQQkyMLH9VrUTeFIEw3bBl0/zXUNZVdADO49oxF6SI4XpQd8qZ+BSWTxVA8o7BD6zKrzZ4R9GIkYg+ph7itm9PTe0cyyQbRyPFNnia//z+vYf9jVDFOrpVhPwAqZIp3+JwAmUYrHt4o344ZuIva0xlp0D2XlQ/1Te3lDi81tgMMhMG/gVTRbXz8MVQdzd6bivpoOMq9OfPrMhe/qIBwOO/hnuZSpP8oLmXHTtE2/ZJ9/rrSvYM6an5nBnImWzgQiQ+VwySfV1+we6zEULaY39VapohbwcWuKfTCGUOs7ZSXv1KpsVnMzyAFcpt8I6z7hDrTRuQTnnw74mRE5pBBnoyMOBhynFjoQeNvs0qUMnfWHcgH0xNLweGE0ryzOzSTI0fDPQWUCAmsuQUKsxA7tY3cuiXVXZ2eDHBpknv2qacH8xvoJu/XVCSUVvqQGQh1MXKcB+ESNmi2dluiJTck2IZM6gaFPI0MwWAonkWGjNrgGtGT0p7AOFMWjTKZ8p+o+DFeklP6KS0pQzfKlixqb+znvetX5ttWN/6kDF8bgChJ1Ee9PXSv50/WD4u0S7tUynCSZuG9A2f2+ZB8BoKdUDzo2lpUjRaIFMnoo7J0vVxr9wrWbO2jLlufGxg21tpfefWH65uYwayOKwdM4YysqSyd14aGX6Q0Qvs+DBpU74xnF3hKJ9M440doWWJ72zIbEST9hL1xkabwa1gMBejtoMuHsVreoIMTBGb18wZ2iA2uZaE2+uXejWAcThmyiA2nRZydmBL4W3IDhmCg8/nSWkzEdYOETZ2FIYg+Ch6/2RdMnAFrh0f9kKT8hOF5WfioFzc64fbPr00tN3e2GLyFrLH8zXcXZtcsarYsJPGvKAbjarRbD3AXFMqYNpIW/pBcqmQXdiOtVLST62eIPBzl9ZUa41btVYMDU0+NceN0AE1QNET3DI9kLl3SJenOz3PQPXUgYukf/PI2WND09fQx1cwQK78ZdZLDwtQm91+slMBn3RmgguilB7PRkXA5OM8aoUSMSVycmR5fMcAmqPAl0F+FZFyHF5KRbUKI2PoMjnvbN6+Wrf3l6rr9vmKpNzSsrY7WWNTnevM7AvA9FqKzxcZsmWpcFBX9zxWlmYpHWW7l91aWPEbOabEbRpRZ00UMBI9z7TkQ60Uh2dvg4PGsYM7v3Uf6uPmhGCV0Wnj8d3TPDpWP4nOHYaMtNlG6s8RdXUOpBTcTyHmNm2FSnNl6D41MbzsNAmlrhzdHrR4XtU0P442iWmbZLJT1TCGw95Qexj9YGs1THVAQd+LA+gunMW0QekgjWI/D/1SplSq0uwCRxAV45vuCIftWX1NVYy+TD+x6JD/oIFMTpa/eSQ7lQwPhzJ/w3it//8cOYPPdaBcSscpjlLQTS53ruKDfqoEvOBqzx+HhCdaAKeNYYmY8iTr2271Sg7+sEG8us9mZX9LaYZhLx75fcw5JZLTK9mh3AjHylKELukuwE/DQO+u7CrdyzZE2KLsYeQRxlvT10PMlK+bGmcfIWjrrooqUJa70k6orEPhBtX0n2K1KnzJi4P34WAULJGS3lpfw5vFHJCagPtYXH682MyKYVEvPx7tqPlBXqL4jLC/O2uziFC8WASiGxpIY5xismnNmGOqt62ZJwrDX8BaN8TzHb4ztR+MLH1ZLjF6BNWlFEKjNAUo7lDtwiJyBpQnYwYSnKdYVk9qMt591dvk0YOdJyYTxjxQNadOY44HB9TS8uKMSyfc4GnjOXva5sMn75i12xsJc5fGavS0TVuDdtPkJZzDtICPZCyC3a8wO4GoXyucKuZjUM8H5fy4O8RWcyS0/tU9AdZ2vB/jjMTCD73lg836G4N0uq+b6w768KCAz4b0rhrBVdumDidiiyJgHjKAv6q+o0dvK9iIdfff97K/5V03Wv4/+747xz9dJONPKW3SReKBVuKL7W4I7Xip2BYCYB+saMuM01aBe2xYGiYHB6qEdFXlosBPTDoauMgK1zXwkmUHcOhL+g6qeNz8O/T8NBuApUFKH0N/g1wnL5KXGLWmJQ6ucJhXk68i77d17/yQAuMiT/vXTdUbdtjo+7pBLOkil4v8dTrwoZHzwxxXGc/o6an3MVNk1w1H50FuTH5CLfSHJbee/Q/L/HEfTO+UL2mXOLgsyuWT4CEZ3SLdlkITkrgExiJZVLtgRYoD52G5xIw/u44g5gfQ6eGMN5NK9XUNMOZHjxaqntfi6EQEQOdsnznGDNiiUNO1ZsCyMG0UDoEdvFAq+pJj6zsVPuS2ONdERQFXht7eGoeCBmUm2RS66MtWkZA/6mjJdvV06jrqFXOCqA9jty+sE2gtm8ANHL8sas5mg8GQsR82zE8BEzciaQYw51BalTOY8ZdtWDqXXU2vb9vppJm4hug5s3iSgH8Gq5X+J9nLX0n/NdifunpB2rFvmOzTUDJxdFbAndnWBhFmQAEOj+py3t44iVPdvsWko4xer0z8ac9o2juzPVNPKw3PO+C/YxQiDdnaEJE0L4Mehb7XcpLRJ6rfHGARWkwsmv7m47e8U4Ay047SkgwO5WuZXPNxF1N/bz1yTwzPVaZyMD7pwoEAscSC8H/lqKBqWU7MBEjMNThA4pIRckZl1Bdjo+C9mlBuNKP+JTFvozoheFfRIHCzCcu0pjaKbrSYllfj5802NTnN3WhGdaTJKWfLEKU+VQObgMNoDfAyH3kK7BrGwEi6odg1Ld3eVTc9I73Ewk//9twv4aXZ0DkT6IcGjGIAKRmj/whRO9G/mcyE4qC5z9bd3H3y+0Ko1L7aephKY+lZQ12ylAuu/WM18c42aE2AADdmxo6riOPTl8sL6Mj7s6bgWYU3sDlRmfOF5xcaEz6PhTIcDmBX+Y6BQdq7TLlkqm0L8qe/VIbvXH1dBQVKjQA+wlt/XQ3w1mvTWGs2kTBChhpkvZ+XDUPP6l9LPcReOh9EnrXiW2LVxif4GeUihGhLZsJi0Bkrap5N/g58Y0Av9MCwkfnBSyhFez9bW/RUPWF7/NQ4yz62FDPzXYX66FANRXLQJJ0RoutNCYtDE81RwQT/KPzVnK0VndUg0iguRvUDKxIKyNg10I+ewMhoSmYMmhB5c0X0PB9knzXVvqZnbTd9X3UER8Nz1h2U/4OywrIkJXIWoYZNX/CgCczSsCIy99tmH3+f+o0X3dGzVP8ZO/ky516Zl9Ou7c1YHwwiVI5/+iS7wD4nJIagj2EEsPUiHHwQxvT5YwUxf+po6k+ouhECcLNvrHgQ3Dx2vPQn3xyiQae3jdbL/KJd3hIPhMyL0JiZXKohVk9dsIopAHY3M3/20j9t8kol1NFPVTXNQAiUNXXVvqnrIfrrHz1SEJkQ9wZvKsOUxlfo0/ZhyJX/rkYsLQul8Tua38ZQCAocYF4PAHL0yL0cBUgek8pUoQEaKNYvdSs1o+yhNlVb7aKuLbafflju/d8x7QbG9ckMzJ/m4zmIaQX1qjVPGXTsMx4lo+bAVEmOlFOXcnqRI5bJvTK411zRPuxys3YU/cfG4Jj66fnk2RPgmkM5cYVNVznkJn4UDJNFtKGJd1OuaWcjJG5e7UndpQ64CzgtXAZx06nA2Lokqq9LC6zSdTXwmnFeQxB0WVw4zzzqA6vmC0Ee5RPNs2SSPeqDDffPJ2+f/nxyOEm+jVK2QhhmJ3Kr7WQtnNRkyZzaG55AMXLZHiW0bdxyqq8P31cH/0+DYYcfhOocao8pyLOHfai6GX9wTDv4Dv3WDo97FAj0931QmWdBttwrltqurocGg/mlMQ6kJfYA+nHazEoF5enY6HM+NY+TuTyc5GFmu1obb7aKY/3E1/KuQYzpdOYwuX0aY+WS+KVbi22JyKJ0MXURi5syPAadrqa0rg5BBYMxRyA9j32LeLKpXdAAK4OeHawsekw1O9D1c5CINd+UiMfarw5uq3IWzVLQxIQT9P+WxcCl9g9qeucArfLKG0sX+shaxXHybFXL17+2x+QlnpMSapmfVQick2xHkQRwLUX6oHCoCLqYP46f9wlmftgacc5NaA9aYAi09VWPWKDaUE+cbOiSr1vz5aQrZ5IcnJmDb6mpRvZyi1TbC8E8bVdQzr6CNGYvt5buqhJ7z0s9zfx5LYdOw0pWTXWS4saraSE3XB0W47OHxRRfelAMh7BBIZq7pUXkIAB9cFrovSYNigXwsT6ijhFHgsYchlPi1zQfcAnmWXPCeERRVk2nG3pZb2hq8L01fJFsL9EYVC3L+88QOn2BD1rb/JjdtKv2SBPNV2VURErA2QKZcMZws/2/BLt9O/jN5+Wyr/4CP1FeMTn4V719f6FAGQgQSmC/zCaUft7C15tWIDAhyysYISsoFQQJ7zm9YLGCm0x+564nj4fNvd8/m1A3Ms+uHiogmTLUHuly4LHuaOMjR/Wm5WlkULQhzluUUatV37YnyiMzQAOlBskATxq5/9wBgCozzc7BTVuYoicvb9rsFjyEJ94y6Y4Wh4UaHmbuHCvnuLopjtxe2bWmiozhARENz6QfK3+G51+YXyfHd2LuM4wt/TDVHTN8b/Vyhq9W8XtrXvkeF0677CAKq91wgKoveS8NHOPOxQza8K6KQ2TuwsRrv4WfLHW86gHCY0K0e2xGPq7LQTCUkSCi2C6AaNo3g7EbfHwfVmtfJokSjeA4phQjuIwBvfINMa4V5RFxpXMFvQ5nVwSsTIocxmQvSWjbggi4BHIMBiB5aeYfenQ+d1P+ktricIyOtvyWkS0xWziknDc5LjPFPFP/Kj3bmofVlAj47xX9VW2HDBQ/TQNonoeBh/ROhhlwZIcKW2tSxgCmyhBObjjeHFVT2cjm6uUrR2m75fKJ5vI/Y4S5ghIzeY4zgbhGBVVQOS65dPysgJulmBMb0jBNTnM3ZFzqTqUIFhv1NTnN3ajPPBPaQW58WX6usJBNjKEZBtaOrHw5jzLAYQVtO0dAdhWHQh+ZVsI01WABRRI4QKVMvwQJUyKBDs4MaURRT8zIBhsptUkAwRxSfafPQ7pOt43SOvU2S3dJwNGwT+tMXJVXV9Vso6VLJm97ME7lmw/mWX2zdBpMlW5hQiT49uGWluNt8xECyIK/lnIwHkeiaXqUzk24TVBM4ftJ0rrVdL3SDZkQnCFIZzBvn6dgnG6Mvw0Za4CLRWxkRUVWJ4EDc5843wiT7RDJjo1s3gtRB+AkJKnzYwLiqLCNFhNHk0eQjmnH+oV8S5n8TRXBRENSgiQ6r29utwi7LX2Qv7G2NDPDmv/zEDu2AHXIx8CxY4RZFNqGL6vpauBjVhrRpEeNfdwVPDXtScsnFj6jCqmlD2vQ9bIZP0BTN9vX9I3mvXjauq2xN7DDe+Mu1UUqtnWW6JpmfJiJjx797fmvjx5tr2sEaKOBbfXXjaw5k47FvSym2aam7Mi4qBmqbJReDstZnK1xMQ+5NRMqOYc96JnG/wBypCbklsJpLCtnXi91iXAaA43VU7KpxmOaVXAXIKLzWwvZCU8BJkxuNOXxE1VXYdfT6EujKiG2KL2y2itinMOJsLe4Guo9rufFmQZm3cuv1quY1Df1UtYYRX0OS8sAQlavlzdiiEwHIVHUaPI2CUNLFAcCUtUrOKX0huBApJO5pW15m2Gl1Epwo3feMcAJojv6IrW5m6h3Sn09fFkfBfMkMiNZkGf4Ql529wcYLTMqn7sJLby/c7VG1+HkiTa/FgqwaGGY1gOEafZWaK7MDqJQEUfuRhNsi5YSFzRiICAV8ns1XyA0leRegn/uYvaK9zH/tWMWMVd3aCHqrXCbimhlzl4GHKhgV+7vRTaTSUCaiGE4CTVhTg10xKepdnDyua5Xqpi9q2fwBr0lFM5V1LAD2QwiAQRsXH4NkqtbRJdfxVI/WKl/RqlJCK7hntPH3jH0PT4OVawl66J2bxrCblxVIQan4SCqfg7Ay2qQbeBisouB2ZHN9AOOxOek+gnaMOe6mmuHk3KIcoPNdE0gjo71MHEnsp0tKh4VFMbVKhlO7bRrgZQ72bbTnqmWadt+i8M4WavHREnHAumB7b2vAMJqJ/Yk3ZXPN9tXO8L5/VkjQ8lHjXbm4Iq3iUAvo2BQpKj4Y/okYcuxuJMHDbBDdz5tpvV2IoMOH2guPvoOaYTHWKOwgOX/lDvIjjkYWSDSofywj5YplA9eVTUxzgIaJtUvS/f3ppJiMvgmbNhm28AzNm1l8JA9tfb1bBO1LmIMbDlDwg19Zl0BWzTxVzc26bvenV2DQisEjWOlXUPsj4IIfvf3iObXxrDxKcM3D9S339XOcEQmuyBndTHY3JrtRGHnBmMzaTTYk/y1hqCCmidC7w7DUan5/PUqjLKsfX9oymdeDpy7BvbcjLSiFCd8dbbsM2ts1YDt67JeuhSO0pcyRkKhuUqZQJHqGgcldQ8mp5tRjxZ7saWm0GKIMeokCAtV2LJ50BypdZ95bCD0FJS6lrbF811xYS62+L0rcgsMGVJziKEISCjff61lFfdEd/cnc9YuFU9RswPEu822vR3g6QTNk/6aeVliVWnmWXFbiR5jSYQm8wwrtU6Ec8WoYT7F0aerdzL5Q0n6B//w6zYf7teyEwD9+qRc7nLjppmRFYMRmkUiaZenxWW71BvgUy9LCJhereEeAIOys+YnyIIQecAzhdVBLpXlXNy3dJeRTfK2mi+Zml2FBoSpaj9XH7mRFq9iTfBjkpHfMcfF0i6L1rjPsi2mO9e18B8W+bmhF1RcH8mqkGGWcuqE3y3eEQM9tgI/1R6xCGl1B3avvQEk5IwSl5SswXyW7lgmdIPxV19iq3duNmhJQz8mn5rtoXoYD6NZyxZDf61yfnaNJeBEgLD0wqTOjhuV2Z1rKWGgyi+m39+j5V5v6Cz6otGbfQgvsLGOPnImMnidwbJuHJDHdTgTOQDk9hwy2w7iAQnDwGRe3fsC9IZTLAyHhxEiqUaIKT4M5QK+SRBX/5Y6bPUudCyYpAItGIfIOb7FkF0L1d3eyqIK8Jo8v2Zgpw/xKgyiUvFsGD9Y80iuDJXfx3gzCq5hIGwNhivj+BGWDpp5QS52UOIAGlGYH09BWTDsFh7JggMY0N4w/KNxw9SmWsesFxkJ9nF/oKT+YPAsgCTIJLd3i34Eti1sCzLJPUb7YlA1RxbXwU1tE9gaxDgI6QYYP4NAPPAQB4PboUnbxrx9AP5EtwEEQf+cVLtsx22cXRsUtxQcYHgDk2sMzw0qpiAWCe/57jc9YgxjxnCWm8BjcAJ1jLEQAe2bT0pios13PGwrRNqQPPh+OIIbccSab4ndvlfW9mNmCe9a4dsYNAZ3npog6+K98ZcCfbrlWUt8SZl+JHjrZg4PfxlNob9rQ/rTuKYh9GpefZW5pZARTRva0dQ9c5dwsMrGRhGz3NvsHWmC+3b1VTa0aY2TCQ9jIGY9Tnr/1V3cN9Piz+f7+OtL7rSNi+Kiima/eFKyLHqz9E34BY/v+LnCEh3Fd3TuwQO6QSg+iDSIfUARkWxtckUaNaLrntnCn7+zGJ3bA90kdvKhgsYtjDkWp5CbUaHYw0IsT6u7N/VXEkvQqjFG/RkGKMQe2cA/0qA4K8/nqR8yHaNKdHSSJt3eIBRMo4/0c9q3+sZ/IlNC4Xe6RQ5/aM+wnnqW99Y4UMlyAItX95H9xMODEZ/sYrOuvAmBYmV3Y4+b3B7BzYmGqFGzd7VerXCUuKrm4BYHZI+eLmNSx10uevXW3EqTowTyVfFMZloVz9BQEbrmsFwsS2HRi/Vq8R+97OJC7SO+9X9DKgDy1ouiF16XpxwmmiShePHs+R8nz15omrcViy49TWYSiybY2aFU7M1x02Nnlo2uAOp2//LpU+RNbtr2Zl4BbVsBd57KdtY/nSla3Y/StuSg6Ym3LTt719aziesSJlIhPga8k3o5rarqf/9hXdpceBIc8+mnDoTuqvvHvdOVtDnxSbbxbq/KmRzjdj1J1sL8adU8vUKp/qmK357ST6aeSsY+Kuwzd7JsbjL0Ca3CoBtQAPp9CoNE91x9Cf+yLBJqsj8Xws/LWvqPqgn+63CsMXVACMAV7NYU7c+UBSEal5Cxg8t2Pb2F4HqBaLcfjimyFd4QybSLZHr+4ZjRkzxKKRburAKaK5b0Ea+YKJm8A6z3NRge5OvGoqlKOWC0Jyt7YK8Egitd62vKkk0OexIWm2MbLMKiw0lULlL8CgYnKqRC3g9i/2rIz+tIY9JKGqmNtQKpGVTXCG0bD1O4hy2Psxi1kwzUSvZyHlviR5HExMM2WmZSPLkfnI+Ak7aomrXq9zDCmcH6FCcG5SO0CHvPC0wl5YROYkIABVMctr9Wo1gLpiSm/NSC2FDvomh9Oz0cHO5Jo9mk7g1X63o++1lNguTEKTfBQKi3sDQharfva0mSFRry91bscAyp18xgwFEZkOFFSHDoQmCdEAWF4goNkqCxEowjmx04gBrsmTOLHht3yndJOFmNLISY4wWN1e62mR6t7tq/cD958ZVSlgzyDsYPrGjtllj47P3+97//dT9YjlgCsYteDNNGjfyv63Lep9rKh9qicGCjQWgj5S1kygnjgWjbGKAIQynME6U/KlwVHjZmJaVe94hCV/e3DsJs7XikrQv1ZJbTdFSmhMxDx4Gmhnz/0pJzT9/L0+4ZeGQeYK8tptLx+D0cZdICiJWSjZ/aArcrp0MbEpu6CZD8yu1zrPZmNKIQ2naTze/TmGXYHtPStKDnpomwPvA8UYXO6AHgw/uCjiqoxTL7G4IB8MzwOQTGys29BVCAk8mK3oaanId0R0MP9hgOex6wJe+IP0DzGp3K7iGJDJ0KTO5xmfUeYopTxNAUNEvtfA5Q+D3wULtg51PqECw1NWv7qZwBDL/8LLlJc6CWe7uWc0NaQjk6Jmc3zNRrD+1QnNgFcXtfVQxSUzDqiN2ooS4tDY7q62u1ZjEbMySwooFKopqCSgqFu3Kcwffxmn0gfju6QY2ag7trE66a11YIjf5zCddQYQjV49lvvV7EkfC6IUXrvxP+80KordXHbY57zT2pZ7O55+mNZnBfSerxXiva7qs9dp9hA9PUOx9Iz/SxlMUzlXuCVvxfuPsJA1lAo3LbDblsioLTqTHeUvQMlM4ThOdWnx44/clhDThnDO8sZ2DNoDkx97LTs0tClGn4Z+xn+UXbAUrXYmHI6eXlE359XVL65fU6a2MEDwxokUb0QEJagCM3KMEUeD9pnA624EE7rLrnaeWQqTVtlH14N2KdBAhB7EyzszUjLuVFLi+2317vX8FEot+odQLnc7m0wuXiSmMCq5lk0yqZohkGlMZKn9TeAnauEG4m8ButiTsj6IYxZ44cetCYxaPzaJ6hUY0Ty1EwqbzHEte4LxRQxuCadvIbgAEh+gBdh2OsS40Ns7TATIQcN3mmxpqL4VFvK8vob0uVPoCMygS/DgEhzMpV+ICISBsl1xprW+XfieSTSCkhFI6anMWoOZoLOQEs1a+Jrky91/z++BpoWcKpwobwuBeGCcIJmdhrdnsJC/8pmMiylxp7jNAG5ji24lqUAF1m0gQKjVm81Nb94Ep5hUn6VQ9D8HU8+V658bQWhI2ql1MV2yxzFVzhcvMMSKIQ++DbD96weOM5TwfpoUaqd/OyAwdiLxiCnVdJwTRoeZYOygHW+ml150ba4P1Go6bkAHIHs0PabOADAuphZls4xx1trK2YeWLbIj4XivoTtSoBdQxJuabtLjUweDEy+6bV7bVDA7eDBkLYjIeftxk645vVx+FAtnSCEBks/F0RQdKaW2OBTB7WbrxpExOH/3OKjm8rOJTlk0Vcq7eVTJW+7QhOaQxrGfIAqgjoeXLBd1B4wFVbjUAJgcWtyZGEdHNypCODD/e8iwEMEg36oUorGz2L0NJ2jjs5GX6VTWHhUWOOFL4BMiumJwbvhuzQZ7JZEKBWmdHXdmdc57qbK2b2O5fXwl8+AGQHKa4V9FKhUBAdP3okJPbRo8HaC8YPySnPYDA+9FRyUd5psMtBSTtUmdyVtArZS0Io/O7VvUZp+527VM7ogQxxpVkEYBPCLN3WBeMVrcpl+13dcNmpS75hnxaEkXddSwODQV+cH598ajbVha31b1cllImv+SN8Lki8HE2E4X/BjgbT4IiaoVbDs63GwpOMW1hAlCFIGH5e5n/1UBSIObHuK1tW8Vj02BbNu9cHR6/PX50dnB8hbPmTJJ7ISH+bQIm4qeItgbPwn58uwpwKRwufVFkQfRYXQQh6Ja9TvJKfrIXFeqkSEosZGL3LVBl0p8nZgkJTOa6fKFq3nPY1aI8twJ81Oo+Bfnlo7YGfjuFxpwEDlMYFS0OjYzHawwQWY2Cq3uP1DJkF+7QaHZgtSWK4OApGEWJRuPUi/bgi0olZX0zc683DlLhttglJbaDJy6gHhg60gcJBf3snHEcv22zxUS7gpNkgRLgKM2mNHYH2LI6Sh0oiOgq4+og+wfi3+ImZW5L0YPFTlyQ5aoT8Tdp15PBqOmgPzQ1bK/Azbm1bY2wLFPqwXNZEIMHppNCIQiDfwN1QOg4YCo2PqshbzkkUfqHOF5sG9O88qprBVDCSmoLFa8qgIoOVtCuLG0eAYLvOrltZzN2/tVd9gR+7h+0xN68CzlIH/5q/ePb8+T5UB9tBEa1aWGtpobrxXOnMvOAvwCvgQyOT0DLfKwNb2F9LfSNnSjgHFn6R3XIMaNq62QvN1KlDN5Xbdk48M43UJdtbrSE9LtIQQSByKu2MBVQ6Yv5MFtE6nC78wR/bbj5jHZq8X6yvVqz2toK1bZ+g27MZsAFEyr+q4Pd9vWasd/fK1ObJjDsvm5vsRKnNJD5Je0fr4ZuuXN6CsZpDuuuLKJTUgE2hZ8eLRYX94J7bwvzae3iHN2GobXsi8TAJdAzOFZ2ylzD5LygEqJ65LU3GT9QeIoKhkEmNbPva8JB0gSvHrbP+FZVtvuQ389VR7a/oxc4y6ecGFcKbcTC16OfqflAJgKb/b2tX09vGDUTv/hV7bIC1EDt12xTQQW6LWijaGnGAAL1tpJW8iLQSllo36q/vvDfDj92l3EtvcURySc5wOJyPNyKQZEU2yXgZPC2fMCSinsjHMlCQTaHN4nHQZsqKoSnOXrYtNTZzA8fmy/YJ527So7AfYsvo1MoOTyBm/T32AZhOaI0/rjmLzLSDPTAOPjUVigiXaSVCPNkrc00+JU1uwpE1B4DlVtbdBre7XOUn2PXJXBjNgvWIwh0mZpHeu6MGLlJrBn4YVZ8WNU0Ns3+GMeQ18/bmPVIZXg67F4WG9TGP7Mq8NRqT5cu+cIM/dl+PkM1whckLQeesytNh50o1FfyYW+jt/AETdFZ22JLeBonvWIV3lBXeOJsb6938nkHBG5TyZN5hCi5iFvZxp2/n5olRjzcNHVQnm+g5UeAV9RM6cxc1Lwwv2PKt1FlrBZ/H1lVddop3pD3jVQskyDrL+xzsupaISsQL2tfeJQB/SgGCbA67Rsh+tFpiHu2nrvZKeV9ZpjRIZWmUJcF3UVf7WK+e24OodHIeRImw8imEmNjjetuskEMv0lwEXm6o7+ccgY6dZADs7C89QN6rwPUwD2772uWG+WFOoRhqitkQ2LpxFRaiZGaGeD9aVHZK2You2eP4FulK+0bedckYv9bg0LM/OFprDs9RGw+kKIuF7Pxgur5f9kM3uQ+Fe8d/ald1qIgSg3t/a0TtN8IU3+Cv4lNdf3mT/cbt5e29+/NO72pkde6PkCLPzdElGmgQgOYVyYr0+NVxr5u5vKXs+GiYvgdYqXyTolJ8+hTLCNULYTWnua6te/g9S2gHGEQOx2k1K7kA0cQh8ezh5ojStDnzPKzr/dmFGGe1kHw12Rbv89krk7/NLzeUjAgiQmvN+cDi1TlAS42VBxGWIqvNwfbT7tBrRelle/17LUrDOTmRJT6zsoojgHBAwwmYtzrg2sG+ogyk670bz5bHnLUX2T+YrUWhwn+unYViIUTAVzDUPLBZjgXgfsQ7jn7IAv9KWn2IoVuXL/PJXqe9Po6AxdOenodckMA1zzt32yDKtQSxWteLQ7etUPmyI86vT7swAev5xJ52Day8LaF/KvfF2Xihip9cCGutLm72uEDOUMaM2V3m/7I4G5SZJG+6yJbgieAmJTiCDUgFGCv1RlCvTaIAKS7MBPj4BFBXHUXONLJ1iRGb29JAMBG+XTugmClNUy1qSCLf7JO3uIzbG+oJ4ncVlOwRqcNyBz1WytsLjQoqmFKMcy2daXXGkjQjRJdeGym8GeiIZ+2qOcYreaglKKPyB/kDvG/4qpiK+dZDbHv+IHvVSfF4aJx3fl4UJ1tmKSLytZ2s/Nqs+lEqe4cJVrE7GOvIQ6Smr5zXfLqEhnBMNNdQRbNyz10xArsqbY2qKunwyTizEUlfITpMf0E3vqgTTw5p0mfCB6POY3Z4lfpGd2OCwSlJwscCJpWlDUwOZyy2hlAmWL2oWf7f/EFoMRfYM8z9dIiEL7a1vjupf4ToJ71xmy5ZR6n85o1LvavTe/nSCUNFWlOdk+NBfXKQmpYleI4xZIqEMA1rzr59jCMex41v5gsfyqs3ETCJDELvNHyji+AW+e3C9FUUmuP3xBuTTigXmd1lmD1KRMsb9y8E1OajaMfOfaZdaXZx3nqx38OwjS9OCR7veJtvKUurRNmSf/C5QYEdHw989xC3ngVEB2sAsuWhI0MorLMq7lAJwwWiCjzMyXybFQ+LPxae4ZjzqPHwQjV1mKVixFz8CApHcaF2lW7FIfgpneZb85TVJbHFVOzZPcp6fCyL3q31IRUeYUoFwMGM32mBCCFcL6UHE8J6lqwNN+U03OZSpA1E0KQtLaj+0KgTyQ9IIeLJRi0hWMThXYilBuwyryzvkWrHZApeHDXM/o6FMBkCDV3cc3f4PFbrFSz1WSM1Nb7M/6baYl5D0Jmwe2xJmWZOQg8PqkjL4UkeIhJs1ZVQy+pFEqKAjIzal8P9kJFEW2wQdImaNgzPYyEdht3LBDpG5BvSWzLlDKFy8sPMdP2eMGoI60PBSsRU0u6KmEqFzP85rdjtPOD+sOq2wnkPqpao925YG+QKAcZ/yX3yoVo3vVu2Dz1cBsD2dHPeRf+wbjF/xQY+9/QfsIHmhJfFLS7ad2+uhAiKiu4LnJth+P6Vbyx9Hy0HFuDPP//Ht6/+BSMUq2jtZQEA + H4sIAAAAAAAAAMy9a3PcSJIl+h2/AtNt90qyJVOPmu7ZURusLkVKKs6IopqkSt27ujYGZoIkRplADpApitVW//36Oe4eEUBmkqre3rVbVkoC8UIgEOHh4Y/ji7Ipr6sX52U9L07iddaV0+qwXSzq1aqqDpbL4kwSci3R5ZLAEj/X1W3Vad5XXmeLcnnYNquunffS4DKf2k22lJrFB/nJVlL1Qv69/lo1q764sNtc77P+tu77i3pRN9dW4jymeCG08aWavaqu2q4qfqr7Vdvd5e1Vbhl5peWuq6bqynnxVv9mcymJ7vbFO7nKeamJ1XW5WpWebnfZbd3Mik/yIy/WVOuvVXdxt6wwVLxh/ge5mb8rL6t5cXFT97n8v7qpctTKmZff3tTTm7xv86uyQ/a0XSzn1aqa3+XVYrm6m2RdddVV/U1xpn/lftF+reQWf/iU83bdTSv2JdfrbFYullUjo3LcrKruq7zmkafknoQPgg/B78Uvxau+0Fe34SrsrwxFI398hHBtY7SqF1Uh36Di1UXbzlf1kgl8WbxRtarlK+S9zB+p1jaSIe86r64n+RtJR7GrupPRlSTN41Cspaez/KprFzJOVTNubln2veQjtV+VndSum2qSLefl3fmykq5/kKu8x2VM/KmaL4uPfZX/7vnvcpkieVddr+cy+CixfynvqjX28t+90AKzdn05r/aZylIsVMpgy2drGzZ90s6qd7V8FvyElLMKV4X+yZHCITqqkMrfeM9+vavKr5V++HzVStdYsVzlZXdZy4eQiYwK/Z/yCh8x7ytZRLM+f1xNrifS4z8+0y63TZXLmlivqlzufmepjSQ/wUqY4YH5JVeIDJo8clauyvwKA8XXPG7+vWmxvPjOj780TzJ8haPquniDr/F4Vl0/yZqWE+Cv1UpmdyVNlfKvkW4jNb+rVpNs1a5k7n1eP/vh4IdsWnbdXXEwna4XMuLyabP4MYvDcJmk9klyn6afV/NqKi0Uf3v269O/Pf81mRa9jIpmTqSH5+vpjYzqrOou27KbFe/bvJckmWghLUuuhUBd1dfrrlzVbVMkFfNBTtZUt0ftSv8v3le3k8kkq2b16nwqQ9oXr+Uy/9DWQmeQM23n60XzvpQvd9x419NekUwyP6+b3EvkSZGsnM3iEw9mM7TbVY3UiclnvEeOLdoz0uqmYXMXrTeMZDyNBNYXch4KYuqFPoSukQBctId8F1IAlNPbbN0gt/jIP+mA8jHpOLKpadlMhSYe8o8sl6rsq9eY0Qcs/4EJNsfLHC81KPSqLVeHc1n945LyiFU+RU42q3uZb0qvMGd/am+FNN+dg1AYGTttiiMtpQsGqwFzV6kJSOVtvbrJb9rbXEj8nSbLkHS6NcSX+iTFQN/R+YN5Jxl3r7/JZtEP3pyNkbjhhfJSC+YVS3p/L25A5Nv5rD9Z96tX1fv1ourqaejoKuTnCykgizhvtMiuFg76adXM5G3ua6P0Qt5KUh6pPiIYSenSZdWdXulWcO5jRTIdxkrHSCfoYKYzZTyzdRZdtGlJmeM2uzDP0grJVMCIyw4iK1CnOufmlumj9K+61e+r6zFrvxSn/54tqlk5R+3iBFe5boTsJlOtx0xuZQvdtn5PJX37su1KWRZn8sMr3xwjVXv0qM+Rg3WPjazTp5PHOGNdvc61jZjxHU1p4UzYBOFv5mztVK+1tSTj4dZ6mWPY7EHQz3b1TwZ2Xi77qtjPqm9L2SKL/ybr5Lp4h2m1wmo/bk6EuxHCfmQJWYleXFfn6b7zef3ixbM/5EzbViAwGdIxy9ZdO8c75dedsA6zfLbuMDGd19j73EzL+VS3Hl+NsvXVX+teaDpZRN5rx8Avfq3Ar1zeMQM7r8yhaoadBd/p4B/RMTT0D+5Z8+VtWTecdTmuQlLau1l9dSV7Npqz5pdtX2Nz05VMXmvdSYkVeR2W6KqvdbtWzi3ryyUOBPImB005v1vVU6EGmpCHlJRMptQwTR+QyUGN82oF2jKko56Y9Z6bpGAJHqykeL86bYTyXB9VK5xgdHGClQJxWJHgg9mcMTuzN+WnxBp5yw8V2KDTt/eXSAfWB23jswuH0MuXwje+IKP8vvq2+lTeLcEngC8gL1e8vjj4roLpM0N5nQqrG3nPEbOM6dErU1lOdX410mx+a+3u5Zdl78x5WhOEwN9JZl07rYU5XcjnyK/bVthk6Uxfy8fRGY3Jua5yHEtkinUy5jKjJtl1uXTqHt/0rRwCpUP6vbcW8Xd8be+nx6fHcbE8EZ6zq+Uwoy/ur23dDTPaZjjZAw6OLDw5cEmaTIXyRh4qSzC8vy/cn0/ect9Im8ScwXLgIl1WneQvuCar/1qjF622bw/kbqPvx5b69WUvBa2hfvK5wde7xjhU83mv2yfY06rs5nXVjT/ibbuez/IbHBJuSvJpsnffkvfuYyfl7Fj3n+WsJ8w/noyPDlqQdHHYNRu2Zdf+p+5gPqjfM57DcZxkPkdOpOm3MkN8Eclo7spLp/K2KaaHZDs8Y2rdCh14Oq8q/LWFhuFdL5H5dNbeNpyAGOM9mfBSQuahtHy3l9v3LOdtc71PNjlpgGsDE5lfJ/NH+V510b5twwb2yTITstxKf++t5C/6afwOoY1Ie7cuwPAF7CsK0+YfAzPzf2EQYg++Zxwin/DGPv8Bvn4YHFnav73Ww6Njr5qsCBuHJGU4H1O+6n/T8Hxu3rer7UR3O61Bikx7ob/CI/dlV8uCxUp0Csq+1leyxIUlnwpxwOpFZs3j4XIu+XK2xUlJD2aQGryG0EBY4aPqqlzPVwNRAqUYmq4nQ+GXKS3TA2AutyoV09zycl4pc3/hty7qwT0+j1Wk+Mv4TJ7cnBvkkY1NMpkPSxI1QU8V2OL0FEEaromnV3wATiGa5fI7HEZk0if5r20JeK51x7vi930RJHf62GH7oXq/apdJXruMWVM9IMvyg1wiXGc3KmM8vUoSU8FjUi+Tz1A3lQx4LFscMQ0nFfkOsXB6iO/DUV0PVnKAPpdhOMNmgnOmnKSFQ5eR6CzFO3uAQqW1Yc/kBobDpzW2bDtp4gN+M0iDjkoZvncuFsKIdNWMiee81GThYfvi49lxn/1n3zYfu3nxb+en7/OPZ+/YCJpjmzlbOootxRxrjnmo87Gr9bnSrBVGkhVDospuE5GGzqQ+Pwxbnw1UdtP2K66Rn+xCxn4qzCkFOIc31fTLZftNhqQDk6Ii2Vey7WKdCVt9FMuS1z9P54ydM/02N6FCtizXfXWwXrXCq9RTE9gWH5Cal56cm0A3Q8rZULgbS8m57C6jnC7yS5QT5o/7J5rxqlrdVlWD5x3MvoI4eZFLzWFr++vljJxT3bi48KXWNwFD27zHwoDwkucCtuBygWuZJivyITLBfqm6NpvetG1ffWSjLkk+vYost3a2OGSxXB8uz9aCWA0DFlx7lFVd13bGxeNLCB3j2fs10nPj85WpJP3FIZl13lQrUmJUOm7IjOGTDetfWSFtoI7FRo19uqnn1UV3J0UhK1t9CrL1YXu3KCdk4Y4Eu0X/8t+xbVKW3vaY3+VX8/I6qxsltTL+RmPbYtXK77lwzbjqhetzBndG4noOPjDy9GgMgmJQJNV1cErqyUZ2TRRXEaIl+cl+WMLP/l5o7ocjLyCnpZCpIpITaejjsvi4TO6PZOcs8EO6wYWcrBCh4LY62CFfGXjH02Z+5zKSRKyrb9tKZhDcptJcVt1SDV9bq+KDCiv6TTnsbU3gld5VzfXqpriQS5l/uOZK6hORqPB0ZDRVfq289l27zuf1FzJ3wgNAHv9jpvXjwnyXtLeSddxfyMcTsoXLHNdZYzIz1w71QU/Ub+al7LBmOuPjmqbeVSl1okrZbOi4wWttb25nUx25i5WQNtl08Jv9Z30pY/Nv+M2WlZzsV3eHdTedS+IHvc3tPgrTjvv36/lcRWrkZ2T1ryuyPTIH21sK/1NZ+1C+nqrU0rFS6nN4I7PKScwUN0G+dGGikSBfyj1lo8hQGjIWrQRGHHy1qpciz/25SVhPY815ALWjdB1Z8rpvHj2SU1Ld1HJEM8nR0d/XlSic/u19UaZy3JnxgeydcLzFz34EQ2qOZNUKRbEHi6lyCIm5pqZHeJbAAf/CZbcZ+yOT+11bzgpVjvD4L7favrYYvlMUEdaNUM/Mdq+PTb0qer/7ABnwmhvmiUxjzXz6/kRmIo4UvF/IficbWaV3n9fPnl0+y6ZzmTzFIX6pWCq76nCkd4I6KyUjs6qfdvXSeLZwnWEBqVCc8i9bZBn1l92dNMW/WdP+8E52sqo7bKWl4mNDxlpG4Ko2+drx6WH+w/6chfanKDWBdByicGzZ8kbY4OUPiSJXgZFPLoKec2u3MuJAJ4HJF8vVNj3E5P42hKIYe/09jUWaopUmGY4/sqH8BOZzvcwuheE6uC3vCnBeeXkLhaiQHNIdXg3kqQsMJEkhyNJ2ugVaRVLFq+3VSc+2Vx+Qt0DdprwdZm5vejmoseMhi7L78qHse+znJ3JNRTZ2dWQwJWtlOnRO9mSqfGlkww00O5u16+t5KZN/Laxup2tJ9mQmSh+Yquu/z67quUwn3d/e8NrYfs14dYePfNpFnZpwv/yWQlYSfZqX9u8vpVzBoFlC6utSW/PnLJCUW3t6nAkSXT1Augg3K3nkgd6UytPkPl2V1KumSzIWSzWvPa8tE7qZV11728tAUk8jH8PurcTZwKIiaZIqD21Sr72CjF/oak6BAEeMrGQs8jFVio4zBw9NM19/A1/1l5N3hV7l8knlLnmbo7K/SfROhy0EuiHRPkcqUh9+lVTyHj5OacfWAzun1r3aexTHfa5X2Z2MxV9lDJq2eN/K8UomIoj/AaefnLKwEfCn1KlnYgflJxtTPoN2QgfvNyQ3x/2/Y34LG4q97SO5Z+UfjaEmlVGuGpuqHQMLNwuySSRcOiaLnCukPz7R2Iu/PftVeqDF32CrQh+0kfwW0tMr7l9WJBgXeKHAVUqJdFxDU4MhTRrshaxNb9xWiTfsj5kgyTZrhgZ2QSsLmlhkQlDqucwd+c3AHONcbA2BkVazjVE779vVwVcZbmwsoU3luTxZhR9y4q4GhVUIwrPajuJJEQhgmATRCxPWSqB2E6zIgeup8wPlmDL/qTFIePKgkHZWdeMEOsmuSFSVkSCvGU90xRsluMZXGNcT819yKkQK8oEmRCC5B/qWku12RTArEfL3txe/ZmRebXppxYMViyL/+a8vWUg6Kod2XdA8LR61PD5oen5bNivVv3DFB57s0SNp6NGjH3NIEV+COzbZfGuTN+wcsgwks5z3LTQPGFsKPC4ra3P2T+QL7AinjIGvvxs5bKYa65/kfmAEMyrQb5TQk1jaBh8wbkM3GlbWbQa1Tsqlll6US5ZCAssgYbCo0sWXtB2XYJIItnM5VA5eM2mTBmrRnYTQ6gVyOOWse1/djpsoDpmzWXejX7tNiZg9MiiCJBkH8N4VjXItC1145+skZffJEEcNWeuqKRlJoVO10N7IuOX5Rr83uzowuJANCjLlhP/dsLdom32VOycMc8ZBuo833RjR+w1mJplN7dOrjW9kKwBjs/mdqsBj9HK+Eo4de/4lRBkH+B3OxrfeazU02ST3w65W2lNQBt0AsB/C/JXCF1xkt9VcPo2wjxu680+aQ+urgw/5pip9Z9VX7eyuQJ3Ljlteb1WvyqbPedAJJ0T5Nrekp7rhK1mtsGurOeDkc/Y5x/TC/rKfvmjV3FDGqNaaqPVtCaaIR9UbGYXrG5K6fR4+TWUh8408JM93vWlOG5qhCrN7XTc9LEAhEGAn1G6IxRp2alH3PfgJZZDDfqLjLW9s3Y2mtX0N+1lotfHG8qqw9cNWiTFB68FUiWpTtAUaLUc9OZy0lBZj+c/r6ZcD2eW6Utbc/2jbxXEjZ8Xa7D5nkuyKpeUc+6W8OJ73i5SUDLXK5ZGWcuXezChX/ZNM6DuEZHKS+nhxWBzMVXPNo5IkUCgMs1Vy02rAqlz0UDKMB72RT9h2BXon3wPXrI37AkJh9iYkXbQxUbqapIPz7wv+pqnr9k5S8ZukUiRaNX1rClAoHXoy4lbk9OqqkH9JlQtuRvwNqdvEgHwPigFX7XYx3qWK5wsT03MQWE24lGp5Xv9SKXPxVlmGC5mvFEKdS65MjF+q7WLtZ6F6lOjFKlFs7pbYwaTahfZBug0B4KjQRo/+4o/YqL21cyAl/vw4Fnb0j8OXM2XD/iUWKC5kULEDj/cGtrRnAz4Uzsdi9zQsXNFx87Ve6TaHp1QUsntS/nr/BN/+wUcEaxF5leYa0h+7Rx8lQWVElqmyJ8sw6Y4wGELE5Qa8sxmvf/QrVXlIZ8FHwxLbVCVgsEgfFpL2Uoh/whS/H3DCtt345iJFuTmk/IruBYFTkZe7rBuV6aseAeJMciCHlgUhUddXr2B6srUYcvN3pdAoU86yqKkLZHC2VIqZSoe4QreUO5GvsO6kD7fV5bbsslmXI3ePLcXMdNgKKOXkZKQKhcpdJZxuWHRj4ktoTdx4LXO7huKDXSSODf3H3gmpJeRIUZ2Nq2tUIRX711+0r79N5+uZK22iusZ0UqqwsQYludLiQSeEpfcS3H0Gu3jY/Bdv7EJPRVAOg0AHJfJTqouXmpRdUnxFp4B/Wy+WOb0GcC7BbIsC2qyXze+DeydQuXKO7XAZfBdy2CrkdmrMu3XDpm6VJUeBUPvj0hZGUlkmJF5oTWUXrSnKa9gEghiAA09OzJLylEw5zki2qLAtCA2/4dAWB821iiypkiJ/f9yMDdm5l+2wr5fiG0wmyytvBoeH2s7EZ/F6qOuzDCqkRwo+q08FtR71zJbr4LJv5+tVddi1fU/RE2sGexUzOP3LxevvrLHN0HOKomoukFc66ZTpIkU3maDM++sFZAqu6FczEhPrk6/BrRDRYPhaXwuleLjn+X97uv9ddbb1PZp2uf0fKU8J7qtnY1ttlFhoUc9m84reN3/Knwm/UpLBG7Y0KNSYxlm1Qj2ryGtfrfZv6Fcjk3DPujQq1NXXN0mpgSHu3/HJSqvy275d//DHIxnBWT5KrXo9q7nNby6j2nZGk8wNDIsv2DiNh228ddf9wAr5e7+4fc2/a9L+I178nq+/+93vmw2TjCfPE+Epqi5Ye6AtTcqPG9MjqZmBnX8T+uJ2Bn4yTsiQuzUIvwJW7Cm2CXIdUe5zU82X76SPfQEfLnbXbIyQanIzpGaqd2PqG15qcgnrjZV8DOYc+J1m6liccCiYf7gxONkCZmRymLqGMt40USeellOIbNKCx89SYzCov7uv82qV1DvXlLQWTKhqjGQ1O4CTkd9Q+vXs10i11T/EPsRZTNVBXOjXwLYqw7aXL4Y9/NsPkv5c0uMI//Ove3nSeP63P/zKfeuTH69MQk/R0m08aanZkhUMfORG4cBx9lrjal5Vq+INfrPLoA7BDpjzEoJmco22rQt/Y+Yytq1vE5T8XDXrDY+mr0icpMU5S+TE+dpEq6MKfZTPgvTh9G2y10kU0epZA6d4b+UiuEayqp8wzPPPDUi1GcqS7xHQmPnKQ1IZvlrBt7b3Uw5502nLzwOJlmni1nr3KjHNxvCBjqjDyn0NaYmH2uGsuK8ZFviuVnqdXL31rTClUi8zfMUcYd/kUluEyQ39IuVX7SpsAqubktWdlo22ebZujpsPJSx8qrk9J5+WyjDCatSy5NzCJnFe4ROGX8nVe+NvFDS45WymXYV/lnZ01v61XZ9Ryv1JSNdFazJwa+phMbh90N8JafjdjyrOiaJuK4gtZaBmiaJxrf5PSt6hFBBaQXWgGffJCv/QtV/hpNAbqZ9rKdUUyjh4OdjAa0FlH/X9z6peqCXcvy/a4wWoFeic+5R0zM3hKo4Xq1mAJC9rr4r2Svt1einHxmazZ96j1vM3+tQr+fSecR8CEdDlCC3F1UBVi00pX64v57TxABsG0gpqmkGMdk31o1J7YQyi35zMZWbr6UdJP7fu9uqqntYy5/RN++i0oZLBxKeuz/T1T62Kjlxf6KhttARXVRMtzKOPznyelcvl/K44wG/Wr6ewk75ay/TRY97MlL3nSY4d62au/OWgs7iPOfSD6VlFx31tRayeCgSSlwunwIFJklrMfbqpmigJOe550JWzquvB8hXK8rDLTQc+7AMGLp9qjayv1SX6oMfOQu3RuSWBB+eZkTpiLwiCJIMsO1Khf5yoK7mXBa/+3zKP41521Fb9+3Z1Aqlo8AW2VcqtwqVuagEHgAaZk8nUArUkp6qe3nqA70nv+ugRorPQ9FrO08W2jZLk791TnGv9suKipIWUliCBfQO7UK0ZNxD1NpfhG8iSnIy4y054Ytr/Sa6EKlcNj3NCXvlx/8Tqw7QM3ZOUH6VH6JuwNDRWEhIYrGCECNo15rJO/gAYYbPe7+kkbsyNSmqc01GnaDJ2xt/ZnUp+nOebqxzoct3eUTKbXWOTfwsN7GUirnWXrsJ9xsgLyQrbsLoEUR1IWHHap5SLXI8Kujij3gCeAXrSi64uIQVI+Fq1YQJ8A61ZvESmi1wH4WM3h8iTlNIo5Mezd7ZMTRRKpnxQBSTX1mkXyjjBjc2Q9hrB3iQWZ+NubCUb2xv1/skWtNm7PnRNszfbsF1kC1sIe/kRjyflJzq3Bk/hHNtoWTsmWZvdsl6VzNus+dJ49kW7qsDsw91Oz0c9rVFkUWhyODepgcFcU2lXMLci489niinN7De/3CBfiJS1v/PTjdrb+uF2tDn8cjs6Zt/t3m7JOA7y+T2210g/yrDO4JNsr6xPGwg1lWdI9izg56jly0imqdzDYOOaWlltV6ifmkjpyBbvQDWZkGuKUI0O7IeZRn1s+vUSU0a2M2XIqks5gFfuu9QuYZD+i/nNCVkSDkRrTnLnHYUlhjK6Vc+WSmFJaEwt1ER2q285FRfC3MCdqboF9QCYBslIZvBAal2ElKdvaZ5CJ6J0c1cOhrRztKUbY4KsnVPMam6nCbG+sSkXty26AlbiLY1ilGVZ3bbQZ37hXm87S5lf01Zm84PK9sVGTq/kKvEr2PicavKNZlN/0vSFtrS+MRxbm91oSaZh1QUvYz1GBt3GMTODr3DgNVzTMax8cIUD7a665ZUi11hVWRMcSawq7mTgw8iy3VSL6l17ywlwftevqoXQnluFVck1YVj4p/r6Ji2N++8p/rrvzTdis0r++vw8d8+Jx8+fPXmwjecvHmzlxfe0klpY6ELFKU4xZeCu1Kjxh5zwyqmbPObPX1iRvfyFHBH28+fPQ4KwH5P8oAGEUOXaa3MUyV9/Wwk1rILRgZ4usdhlVX9Ro8mr8iuW+aYPZjB+WEBMdjDFYRiK/eMrtQyeCdtJonEpK+OLKX2qPTv76fak3QGVsgakU+AJ1z04wu2jBRr2Ck32F3W1Oeh7OYkcFVRaLJdy2+eXjudbOTP/j6prN+bZng84SuQoMmwmVn8DwdCWrqT1/2DQQLvaOK+/PdTEHx9o4jUEow818t+3NhKGl8eEM1pMbGuJ2bnmP9xCOpsv1Iu7Sf1aVuZ3k1+jZ8/deYGTgvYrTH/mRs33vfYBXMGExizbuUp3dw+Dj8BeHmvgNLZ9iqxuXs/hfsVWe3hWwsanj49/9i/JzOGqSCvw0K5Vht/h2eRftn6J3/TkdIAP8q8lmPAgUJ+3t/tKfe0B8hdP2JP1hbsq7SYBHXpuoFKdnh1wcn4NK2PFL+lvSj2xQWkOc0tVExnNGKDP7AXwEBWTEZEATdM7oo+qzM/N0DANVW7kw8Fr2oTXfrDTs4ZianxuhMqUcKEAXAH0DZgtvSWsyi+V+kvjTSuZVyjywk6rdRe6M1FPNX30D8kRclHva1MG4bH1A6lg4XpdGfFOpQxhQuyB6AV6enlHsm0fZb3gVG+UAErGb35O+vnBt8PBwj7+ugfsA8fb8O10TwJpVXEH1M02O/A4cjFGq6XLewNwNY6QIkmEzve5u8qUnaLS6LU7tEuRCDKjfj831Z3uWTJ5VAWFKSVv7vuGbD0yB1Xo97XC/Ap7BvevdCTD1iH1d3wiofzcA2g+cdpgZ9A9DsbUOz+SI4KwcZvfMFH6O57xd3yg7/o2HF+yB9aaTtdUth0g+czEYaboigrbgrsrMrDpVybEiH5l5Sx27cGUC4ACnTbpvrfnBD4l5w81cVE1u5vYTvq3NnLajbe/HW3lj2WE//suZmxLk9/Dkzkn9mzEif3riBEbTeP7GCz5GqSLMhPJYvFrqmdfTeNv4ep7JSBb10aK48WprI6EXH4PftiL22r+tXpwTF/8xjFNW/0tw/ogg/sbxnVjo+FD/uEDq6eRc9959Siip8Q38+pbfTkfmOabhfmVZQ1MabSWCRS3VHIZ6GYdwwXZXXUkCR00AZvpbV2l/9PWjqLGlmexwrYnzAbdK46Gnclkr9qytwLG1U9VaWN2qpEtnZiGfXB9DykZJPMFRPnm+STHT/VcoLRNwQvx67bfH7rqSthyF1iDqkLsvWRytii/1Yv1Ygd82En5LQeE2L2lBhBiA+wftQfttyCKwQiCJnwjpstwV2F8d05/mCNDu4kGrhcooGZoDoXzYKW0i6tYf7SozOUxAOw80DX19traMbUgeaDCb+qU2aQ80KUzg/fZ2inH/nmw0m/qmFD2AajQQ13c1rWdZX5TT8bs+wCFOXVAryG1Y3Njb3brk9uLbS+02algX7a1J/asFHMxrqEAGCmr7J5i/syDnciMxosOnntzs1j06jt+c/NysXjZ95Fo0MKkNE2QWpXAlIRGSmqPYTAtJ3UjdEAhzgiFINuRq8iiXYbittDzTJr624tfJ2lTiRn5/Q0NTcifSystd9dyXvjFAFD3ZzS0YaSCxEmGQ/QKdrTv7CIDLJYl+VUcEAU7wWgoxhMV0WpLRZ1HvKUaA1JmwGQU53aR1b2WgeepVs7WTSj2MVyGqiM0kZCap9jRdKIg5HpxsJ7Vbf5/5z8L+9tma+kUOrIA0iIB3I9PXufcGaTqHMjmK/hBri/19twusmm7vKP9WXHoV9ltPQMuyIdvxSdc5Y+X9bdq/iSTs6ZkM+MnXoacVQlf6BLYlfUvUPr+UmUzdxo7sov8sc27yQIeJLMZvUNo5seR5hs91feR3L+269X6sor5lpDd6d/jWWEp+fFs4LaYtHuv1Ya6pKjRoPsvDu1IzFZlbEZiKLJDkxNIwDfsTaDsNsAV9d0D9ACUN8I0ykYPcAhaOZvjXg0Cymw909uEdCe7CnMv3HDmOfxIytBIqZQXjRUGzArXZipLpwwTpBtqwwgcAijsanFZzeTIVby2C3ygWpegPC24wx+EVDYSEE2l7VVXT2FNX0OpmkJ4Q5/KTFoYMHuowjcQ3kGd10walYN++CxCCsEtSc6dwRI+OHEPkJ/fBwdE5ZcGuRvgUmZeOKAxq4EbY2CgewO2tM8PLwlCvcAKvbyTqasvZJhmigKDpuD0hTlrk8jcT3kDe52D+VyrmNKGH8rdbQN27Ajd2udjs+Nlcch/Px4PHtIciyW8EQbZvghq8WsczKXTOJjzoyRHiBsALKlXV6GOXkOl13F/EnCrR1ovClRpI6ZN6VRSLY8bsbyTXS6aqcxbbGm6KZ4kJcZG5qHCuwcqbDO1Dts7nuYQyIAKX2j9iTcI8I9tT0f64Mnjgt/9VOKHhOcBLWTb85A+eN644Hc/j4Ajch68KWV/OcdvtiwB8tIUH/Qv/H+rBgjJ+EMwvIIWpUnIk4NO+MOvjucv8yINfmKZM4+CMvCYoD/ONn8JdcaJ3hJmFhc3ToUCNGO5hFlEFY1s4El2ckMF6v9oZKY+8leOOUI7KpyZFcDpTH1EswYGyIQweV+tXMyD8u89Yzs8eRNKb0NP/+2V7aypxNA7STsZnvMVaKrdOIZGYAs/ZqY411s0tJsn2Z0K/XbzdGsKfcdwKvwiWy/la0BZ4xcZAJ4LgEdnNSwgr8lB1TRy5HWmSAcXbeGhVFq2fV0u1c9O9pwpQLQpHB8CN2uBh4oOTrVq62RimGsFf1bfdaIQ97W6EpsoJbgXTD43B9FnwAgxzP/7iLmK1m5LWXAVpB3yKn/63JTRZ2CzUr1ieXmklpfVKezTRUsEOMWD8Jf5VPZUt9Cwr/uimgAO1vfU8REA2l/09HDNvlqwBT8K6ZG1PjFglBBUhnPbbHewoxx01TCvd8MezuJBTU0a5I/qW6IW+QJ5BM87X2Qh8k4PCH97tqcjuff7ZxNZ2SH7jE6Z4+x9We+bFTTu0qr60M7L7vwGpsRvLSlnWs7EDMq4DrCkSDqqy+uuXPSaygK6PDdq8FIOW5C0gBiBo/6AA2C5vCksneTLFv+Shz/JfLh6OD7KgmSV3j1fhNTjq3VzLt+kdbeT5H6ef60h6Z/fEfcbNjUlxYgxcg52j65U95qZvbLVFWbsMwUq5ko/N+xR4anXtKolUH8AoiKBvveV6Mu3a0TUgO/B6j4ix01OVHmOijpxM6JQeSnnDG3MxipYbHLV1vBo1E5/bqTX2wfR7UM5EBOYpdXXTS3vXKLakghBIUQCB42G75eQ6wrL3ZiSkzqlEPtky+DgLE+WfwZQgzA0PNVPQ7qeix+q7SNDrJ4rOevZ+7Mxk+eXaauUQsRBCf3E1Pjc0AxCLeOTOpBHm8jgGQ8lz7e8VeyTOfyGF0taMkHid9ROKfpiZ0PqBeaaK05g22U5RVRtW6+wEV9Wc3NLH735XlQYQvUB4EK0ZKD5/qDNMVCIBnBoC7hYY/Aod4c/ek8ABa/cp8P1UU6W8rHwGd+W62tFQYaEmdOZ3+0a6RYri+oD9zh6oBkfs1d30Eirb+RcNQjRYQlTOD4FWxMs56ZTXRy3VXBQvl6reGNBB20EimvUHSv2p3fMfKyDq3Le11d3Npogl7ZKtrx99B0fvn4V0uObB/eph5pJXt9XYoU3W3fBD3vU/upmHEJij0MgC2n4Crabg3x27YpGe7M199m6kXVa66B8buKXS19ahR6n6xViLfSOxdbaff44YIiqIrhcCuMkZO7JzibCqvcm2DEFZ6LKP54Phk3apIaTjgJXOgUrZ/8pJ2nUxjJJO2/PkCN7ZaBys3rd+6O5ANSlpYHE6bLt5KCM4z5KPdhMusq1ipoL2CIevYWN2OcmPrScX7edELzFfV02GiO7yTQQpfb+/svmNK3oHvl97aYvEutirbHZlbebbDdPA9cdEz83IX7KZaWbGMXEZZNQLhXH+vxVwqUVEmW71LBXTEfGpQ5EjcfEdpecKFS48Sx3teFGzVXSkRWPrdE/clUtl9RHqBJK0VosEd+RjNuOSiflN5/70F5NBjEuzK33KyK3PVQ7cL/QEZdCsr75dLpSIG0A4tnuqJu8uijpWSSQAT5tQK3pKPcqktneXOeQYKAO95UO/UIG2a2koiIUo7+XhGLN+4jcd1nOUipt6zbdW8xxq8EEkUVMu0cQbVnaQqd1GzenGZAzKfK5IZFXij8UKCqx6/EO+QJpADdSwKDHdOS1KE6rtFNPJuo/tZ2toVNV2LpHzM09FQOvdyUnuYqxCFZBB2F0ASjcwvN9rcLnJNUw5yB/ZiTMKedgshI7HjBqEIrwaIHp1NWXa5WKJzf+4LgMJkG4zB5f1Msghb6JEJW0fV2qvZsMOpC55C9fsLeAOgH5JZVyeKA6HQqN2Og2jFVwmFvdWCRXrTQhQvDxbFgZggUD05qX14nrO8CCg9VcHwGFNw0YNNjXsNmLxKqXYovN/mxo1hiYc9iM4TMjp3YdmbkhWgwwnjlNKxdkLZt9Ud1eIm2BzfI9nfncnLdqBhisr/AaezxGmU0IJwYZlE9B43a97Jny9sO5h60oV2vGJ5Q/WdMiNyC4GQ8HiDaTMtMhy5UKdDIIBLcIVDmIfdGYy6zCx2GjJr7imecAKkcMz0atA6ysr/hdKKgKT95/ylVz2gyaVMvNnl6If8oP20qdKPWc9zMMPQ3Z8gWzw4Iyhv0l3D/pH/Y/2qaii1j+i1xlSoiD1FM3/vzx4olDBptQYAia6KKCAJXYtF5wMxCsl2UsWMZ5hMPBQVepvtRBRuTe/N2Q1bu7G9L7JCNN3+ZTlbQ+UmUmD5oMlU+bdYIKalAJIqmPS9lx38hiLXil4R2Q8a69tQxeaYbSfrcruWg3rWFerVdglkNWiBFdbjORmUCNR7aQHHnpdiq6UTIGQNRQKd8MxMfB6soZfqZW6mobFQ2uQhwU3g2y3tAJXXPV0BAbT7KAIeOtmyjgNQzsU5lAM0ocDUb7qd0rydDH6ny3NYN9Te3GNXDpleMiJNF+LgJwUoSKVYeScZigybi9AI1wf3Pm2+KRtUJrNoSAnpIhkXlugWZME6fjG2xqaafaxZA9IbS5uh1BHRmim5sjmOYwzI3hHcJOtFubm7ghhtNfzBMdbe49AoAYnlzT3jKIkWuKNIiRa4fUmzPJw6iFTNNZKWpXEkvgZc7+45+8f9d47GB2f20poQh6ett2s1hkaSkIoCqbe9u9hmlpX+ifkPq+XTHloiX2Gu1PMb9DgXeIrQHrh3fOfm9kWcssAMys4RNSC4q3iZHEtgLWkhfbbOxQ/aMZV4kX6YuETLzJRgGOO43L9BOodCgOD437JRMXmqXW+cI5re6E7wjXtiONUJUvomJ1ZySfSQyI0QJY5oAaSfYmBs8gsEnDEw9zRnXg7WKSfvMY2179D/3APX0cTiJ99Pnp2/i0Ubkdj0OVB54AT31bQLEO/fEdDmj3aDg3k75VjDePzo7Mov40OC41cniA9R4LKzaiUPF+w/7Koi/iPe5a4/5QBzKyCvCP3zP0D/T1ikioFjQ+QYFhkf9N3d79reMhbMMMa2NMv28q7G7x3jd/aLbsbpZTaDwipkuLrbMNGNUoub0IEIIXaYiLUkESt0I49x5hrLWWGHYJqdzvQ+MWIFsyGV1qWIpJSanEAGybdYYbPaTnn165wESXClcbJGVgepTZLsAK5cp/J+YuKUw7rsnFv6m/vVNno9Twhmz9G8oFHqu3zw97qhWUvwwwqyhgT3JhPz9pM1WfInfyPL+vTSQnubiGwjiQIeCHwbTdIBRYSfAOutw/N3Q2rL6dtOM7m921Tg3r3J6UrNyIy+aGPsyjDvG7JmEw0LMvSPge/XIx4oXlqVm3ZfrgaV5fhFG2Er2bsvPuJ3hrH7oHtJZQqM/W75RC9CsNjRjm0cSOHTthlrT2AzhLMt0iSq126bCr5bfWI8cAMcSanFoB70Go8GaY7yZCo2aDjdCoOWstPTyRTfJNvvALNfEsVK+U7PO6qR+fn7bd8ekh4gHpxh5LJOES4MGjkYNyqZGjdE4dDPQpVcg6PWSWqpc1gDsILY7YATekD8Ah3HQ8HKhNjiNN8flRNaP8102a3SmxF0owCgsH2mDmJsHA5DEExzkAURUVGVKDGA/TxBgQucKtrwdWuoHcPIEtSrDX/4laPzyjMkBSThoQpCr/6fjo6PV7tQcFRtob0iSaXwhVUtEU+XAlVhNgzaZYUCNr02041fbd2xVsbMKn11s5/CzfJy28ujsbfIgL4dXxsI1iPCmxnJ6ZvKABAsEcyK/M2Ld/VSLiDS8vyy5AB8mxcwWk3U6GAJ6G1WpNAe16yeh1DJN3bhf5Y0qKn2RtP63n5k97Gq9jurzpabzOygUkq7ARPvCr7IrBSZvpXfHGr4R81z3odQ2IBXU+D0Hkc77IQnne03DpfhQX666hcwWFiryz4GqmM7KYiEFNBST/ZlaoA0EGBwXeu58D3l6G55rIbOEyaxdN3VO9XpyGS+kZNtl1Q6mvdC7cZQvZc2bFCX7lDRblEn1cGozOa0R3xMU+YqdIPjo8AP6RtH69ELp+V5zrXxarIJcipmIpCS60coFVnAW0h/hJDWoKs6cwXRkNmyQRgkcG4ZBr/MkAvcmReAcMToX2hW6EaWc0V07H507n1PNidD/KfzHKfzHK/2GU/wNs4N6Vl9UcVnAcGL3DV0xYEE2MawPTqoIjcvHvVbX0GK59dntTro6vDAnjk9zsH1/lBq6UeCfpZpdgOOkytzmo1uwbVsw2QYnAFut8pyxpkoi0PCxEgZvco0VYAeGI6usmFLH5MWNqLGtyiVDMRRGhQOTAtlkbhwhcmB0aioEWgFEaRwu4K89JX2VUKeBejWq4GDBEASVRFu5IdsMjmcQxAKgKtMD5YG+fYWJblRDf92zN8BFmnsvYdyG8Sad5waAXtuYaXLlXjCRZLlNhsFB/DVt+dZLVmMy9Y1HMQiFpEEEtgQCk5uzgIMyE3V7qnuZDxOkHH9AHaQCgJVQyZn1LA2Dh1K4iuEyxVCFPVtgn9WwwvFsk55puiGSGbuMoN58b5dCIbrcZzQQgaHQ/eT7IDMkvftWZHxJ++DXBT5sMn4l5eQuOiAFbfyqp2Gs9UfUfGzNlj3bc1CFB76qeB+puoH77avA2nvvDkDs++p47irjDc8UZjezet419OrAuh9CGvFGw9FQ6w8A2s1iOypG7fYNVV+SugBtsILgecZsvEEGFDQq3VxAtY3G8sN9ftJuNaEpAkQPYcYL0GyJdV99kV6ib10mx92kobFNxqdrKa8uOvKY9jS8jCImtpeTNfhrH1U4a2/KOD7b3OkXEU/52EaxEAxYwOzfJj6OcduVa1NJsoq7dE1KffN+zGIKcJgFtt4oKPB+J8VNdLh+ku24cYLJnitSFloKf3fbY84iyvA1f2SxSrX0gSKWzRtGWc4M6VXx7DeA+rSDUuO/hfQRrdjzmPjSJkDSKs2BAZL2N3JOX3kwS0H48G111WvqHHrdVem9jc+/bbQ2+bxMmf9imtRY/7yTXYBL4XhvLIr8kZ2sjaJ47cs6bbH0+XEJ8TMZ9UNeQMNxUFEb9i3+ezkf0MjFsEuJ0MFtw6Pp2TnjmdhkfG96aUvk0xkHZv0O0yAONt4iAiSA9kH0dNI10YFrNoGD7UNGD2cyDbTcs7K+lKri4Hj7sapAjs8EvLB1u+rM1fDfDleUcN+zH8qbsHfOR12bHOz+rEJHITHgB7Ipb3dE+CIFAbAlE+7UrRay/lPnL9HDFUYKDjn+Qo06GJz37teqq40P++AgLVHar/p+eOHSdoRn21khxcHHx+v3F8en7l7qC49xM6IVZ9HjLk/yozd+fXri1etnc8dyWO9rwrWGSzFRkQ5uDvLq6ggz0n7KZdNseH7/5+GVUMYUdW2kedFCHinaX8Ll6bnyNmduUATcpSEGkF/0WCE+FUnIjOxdFyFa57Fo4kVO180Gv1Q04zbFZ0R+sCshut+XNNE9GjhI/Ffb1ph+N0IIKoSez+ETYFYWAumiFocNKW0D42mkorhUSs6t1BztoxDAo5/2BvJhwQG80kQELoAcqmZwJfz+/40QkkiPuTDxqweIpS7TQcIqkq4nuxjaI8KIz9WBlU7tcmWOFpBhEvyTZKCgvIDk+fsacxRJQ1yT5HEPJtfCYHhZTzzbttZ5P5+218zFMc80vk6nSO/PipuHrQjXNUFjaahbay1Ocw7yzbKVq2LZgWWGYtuYUJ630Bm87jEAJ0oltS2PR0uFhzqgGdpERV/egmb1t51cflyr6DY57+X6u7q4mp8mJ6KOiy/0onJTRE+pm1ryKm2hSS7Z+5M1ttk6x/mbj2bJclrGaflucEdXWZh8UvdtW7xJm9fdVlIdDCUjr82CuWg0m4T3N/7Ker48bSJ7ueYTqz2vDov7utvHKao26rVGIO7XSxuvurvR9L7u96fCqu5vvI+TWA++8/RGcHJgS/ghODze33U9USLT/JhnJvnVChNCxr/VsHTYsKX0jU3/4YD0inK8vezi+A2l5sMlZnVUL7M/mbrPX+n5xcrtNnGw1PH3J8K8r9PneCQ7tx3bB/pVv7hoFxFvbMRpUn3xPQ3mAWSP94yYBfDiyqForu5bVvuM5XL21xZ2UY1HT3xJiTRiXpmxWDBk9Fxbinpe2gXOmQVKabbvGtqZ/Eso7/01NX23fZsaNf3+bG1V3DNR4ethuAq+/MN1lA/1Ku8LvGTbO99JZql2jlrb40GhttLhjsLzN724qu+zKr20sPuBIXNnJMj54gxJkQDJafHRVFZvh7TbiiKK3yfMuANi7tdhpk7R3upXuaCnv2Nk2KoNdVvXStGIqKJLh/qu656fRKVZ28VvqKelXpsbQj+sGvh7kO82V4EkAlwdENw/+htaN4EQvc8umy69mvANzhtvUH9WCD0PnajU+dnPTe2jAQzPPJZRB6iucSIIUc8Fwg9nI22o1CIxOBJfi7euLzWo5Zf/yJTWMNx8S4ispuiB9YWFKpo2/p+3mWbVad00VzTfpLWmJDshlEhWTQPFGVTvf1RWNKqunBHYiYllX3naMy71QoLKg1HbBFxZWJ+zROfGvVVztaaqndP82AI01tCHGgb6eGfceuq+6pY0o1h5XIGA4bAayHjQRFaLA/VBsvxBjdagR3YxsHCKaZLMqhuo4qrz23LwAzEPTlUup12ZGiZvh4BCfiL7C8kyP9ijzX1hIB+2h7gjWbxoYlSa978rr/8VmXOV+hlaCz5gSHHoeK/qCSlVknchDQ1A8xlxy0CBrNwRuzdxG8M9rVVW5dWH+X5oAxQahZd5V14osQ3vwIyq6cjW9MGn1ILy6SoBTYLNuw4Y0CpkHodqnctdFx/RD3ObhPuvGYoN1c9CT0ZHtCgZkkpGBUBdHsBTGyATJAY93welcarIwfRIK/pL4HdCpU+meOng6igL60jB0F4Kp4DhqeAuW4QsQWaM65ji/rZK73rMWOnDCYDqvqmZ6AyMJD0TDDmleHjJzy8362Km0F9FLQY6S6/ksgDoVhyO30D7IqxM4p+CbKVsJnk9n6v59BefwV5WtTuJOp964Gn7YWo2OJO4IPwm26OYqZO28GAWH33QbSj2ZFmoHRaNiadI2GzUFRwd79NDNCs9XDL9MDwPz0jJnnoFz1NjtPjRrb/c+8ef6MF1taXWHx9fgMeEhGNsFfJRkgOUlTjtIHD4ER7qDrqJxeBGSZPJW81k6poxWP1Gohk83shVYCAcuwItWPc0tTBPcFrFVoFiC11DOZkAcaKpbh141cx2iRkzc6x1M4YbfO5pI/NihUMQEOIwriLBQ0TMmrMW3ISmsyH9KHpU8IFO+U2g3nxGcHUvKkRiULJRI8lwbyu6aoQuLk8IMl/G29dsmK3awRKebK/qBpaxrdLCANSnjRvXqrlDW5vIuC+5Y8u3K+ZRWD0W4it5amez+3Z0tfn5lR/cqPrWdejhpYHvwJlyUMhMd5RrqMQ/N3bR/RlNpMGi2HeMcgMSmIdxBNUdB3YlryL32Pz4uGXBI/6QZRCNzBoBmcuQqX39bVrMYONkKI4jP8Uxj+RzPXqZZKSZU/0nlpzswvyx0jCEnuhWa8x4YGWrjfvzcnEYdrjr7LykJvTSfNTbB4Ivm6kepKX0i727Lu0naPwdr+o1dC3BO/9je6BRRswobfPe3xvCTE5b+0EVnQgWpPtfb3NLYa7h58fCgtR9L1SeAzJDKegiwln+wlv/51y2NkLflr9kobUbHDPal7TVhGOi0V/f1ZU0LMlN+JdEzBwou96XcEU3zNzQeXLm3P2B7sPQEu+eSKnTUa3kEHcfvBvuqLTJ24o6w6gHDwxwXg5OZOd/FMFv5Y6JRqLN6368XtFLZi5gzUbzkE6xJgt4++Y5w7eHtnDQZEkASYDmIa9havzOiezAoRf1puVxxl9K4q+0l9irFPKgDAnG/GffdGzlxZAEYbrJHyobcFwx+0IFF2kB4Gw4YQwCqqB5+z1CAcHdR28iQ6M25zo1KYYYZSl1iI5zAqvq20o1d4YKol7aV7Ygzs6R8jAn3ucEprNUqkHBpnMWZ+g+5cZhqaYKpGLIc8VWzzgIurNypiZlmmLkZXh73ccVEIFaDRFVnrRAfOsgUZHI72sU4hOBSg/KZJNWsNj83j8HYBLPgZKI+Cf3wV7mvP0MMX+tYaMHf+L4WAqjt1hZ0aO6rnwL2em1qRnUD911M6eD7Nm7tVAKHHZ/KP9uIm/ZwLSzxgtxC1Z3T6PxCpo82ckGMEmblapCO2uQQ4UQqvWt66nHfKtex0YWZF0EXro0lGfXAnz2u6w8GOvWoiolAhOgKeyS8ihwl1JcPpHjcBazBzgsPGiJX8r5d/Qwhz6tqWq5pfmncijDVPaC892TZMCvhv1LOy4Kr6enxKBQhD8RIwQNe2e0/MBf5HFof4rNfll3xkwJj8YbbzPn4JGx2Xv3GedgsyjaBwdWibAsyOOTbhlwE8gVpgYfbLua0eOU+uhBenlb2BnfAjf3z+tmzy2efG+zQtNC/KXtsz4s8BPDeFQpXQfkejoRLs6r+x3ubub8VCwr77Ncf+a4FnBWyNg0Uuqvx1Kz5wY72W+yed3Y7tnx/w0Of0h/dGj/plxvkJ/puc0PeSyj6Xuo1v+foDauSSvzjI1p/Jn2iAWhiT5r6xUBCs903JnnEIKwcoVNTI3Hh1HB2SjWypZYxzezQDwJGdfL2k6yeFdJXFlXFrKGyaiUaCtC79tAuQorT0wDeI/ubanG5+Q+jDqZRVD83vlLJzky50efPri6v/vjsX57PqvL5iz8IXfjn8g9/nFXVH/4w++Pz6b/+66y6+ufyjy+qiZ2m1gjXUJAU5HojJ0tpmCkKDal6bDlmIja1Uh6Th2uOK75ddAdHCMSk04O8q8Fd/kaLMMJD+VHeTq0g02D33UwfNFkT1Bc9NRaEZefQPhBxspP7fujaPh3kTTzaJEku7WfTxj3cpOcOayc8n36cSVb6JIpWuDavhua3hqih0aDewCOV1s4uRtLYTeS3zfDZTOc3KpgR/WYFC9R8IrP9rJrWS9rB24lZ2LyaylBNzmbycuAP01c/YtrG0DbYdJpqYOhcdSew4h6YOasHCaQmriYr1Jgk6s2sDWJxeGUK1QPSYMAXhEhzFWxPIdvErAkJcIU4Gz5t+DLnVQxeMfiE405uN0QdVoHX1dcSdrGuizZTqgPLkAk+0lKHOukRMhQ362JIKO6yrutf/FE92M7Ozl/80V0R1XL9U9vNZ4frpfnCmjk7U3NJdu/bajVaJP6o4ZsEPXzB8MwGf+CJP1XzJdgrxQDiqSaUihaVIHm5YTk/emRfJtgOP3pEGZs/nvBKPtZwNPXYJWhTKOdoREMP4IUXWlHVN7V3p3omIS281F2fCv4rwpOMPsLE1gRH/+9pWncQj6UegJBnRgOHCnna2k3USgm2E7S2UluKYErR56P8zSEPXnzuNxjqhlHHotTuaUfvG2MheFDz6/RhWNbz4GSIAfhQrm7kHSAtCXMmpgH82C7/nvGjN+FN2iD3/gn0stojRNvUDsnxXk4JTHyFS0ueM4qapmtENcuIhoER/F3jyXAejqhDv2N5bKcR39dKGBH60dWOW6kuXXqktRMq8KnAkWx9WhCyOMrRuhkaSSeoIPv9Umi4jPOwCbi1qM2bKURWqT+2eV3AqTVAReA0Oqg0COwUoNQhIw8NBbQMnO0Y+42m/8YZ+rdOytM+GFcK22GvsjRM0YbVXcWZzGViVgGfSpLVONHr9Qq6FHS9kAXelklANQTqo9SHNqF+kok19avwmXj4nMsJY58oh6MUJAAosYHHjIdMWqjM/xMOu6sQMYj9cBTTAQHVGAGVDMczE/IRnX1go4dzP79nmK3RPyiHWQ9P/fqNy601wwz9jhYMhfGwnSfulVPcmfXANcJIHyjKZV8c8zb3+yGK+fGw7AjKHONt1Q00M8bvHtQkqzd8kMXtXq9u2q7+RVo7ILN+0WoxQJ54BO9YBo8hCknrrQEIBY/kaXF4KLBq1WxLy8OjQSi5u31wPPOZHOLvbfYQhYiaFdoMLfwpwGMyRT0uugjTwvF4q55hNnjWRgjkouNxrWXCyKelYrD58AnYsWT8cb/r1DgQADx4IE2lAj8OQde1ueEcGMOtW0vDCcSlFAY9/Z7bmjwf2tyqldd9DVZgqnG0kS/pZ5tqH4lYUDjJqa9LqqTMEJJufqDZUnqRlM788xUOwJPp0fdCOLPzcAj+jvH+TcP9MkaAWVQD24RDKlhfVQoQP0vgrVBwiG11vIKY1w5xans/y3HgmmRqnHPRCul7X93GDUmNjHyXGO4qjpVcNkKXl8uqidJQ+gwl+wk6ZCACOD5XcU9xI2gsDXibg0GCzKdEHBeIAJJNyTx4NM49nKYBP2xgdyT09czC014TJRK1nkQAUfJeaAPDDsRXfchk18caTr17P9doCl4DhnJIvhx92Gfmj0aWPwV106bCUVuVCWZdkXO1HCetQ8HP9LzS6fLokZYCH19eKm9i/XH/04DYTPkDMVDiudjewQX6EU7Vba6IASIlteDO7pIuaGagbPRyVnpQe06M5JVWdwB9MO7xYckoXQycGaMNhiGcQnxQu/LQt2kgYRhGmG1YK2oJlDlVvaId3lZu8xTz1HKp3wLNtAMCKLusytUAux2dVmFnsIkaaJ76RHPnqJTUaISWildylfOSAlnom3kSpEq9Vws4V+SU897xNhOkSsdt91GJ55Uo1tMQKu2tWZWpkDeYmI3U68Haa91EufNQ375nBy4sHac41eR64vyVKRKsRxTN1woEt02aFR6I3D59ZjjVrSh7UkbxEgNtYi5MY5Y9Cuh8H5TFdzlazMg9Jxo5hLJBLRILBRWIfOXEAkJ6k/kLhepvLSHW7ipyxO9heVsI7bUQ5pqaExUTwvyyJ4zuGwT4hh+TnCCEv7V4p4bLy+jfvYd8noZS8zs6zqoLiiLqKYdgSbmlbZbqtxXrs1klew5QPdLSVF8wgzPMKznPrMfncQV1WBg8AGVVKv3qLt0vTS59eTcI/dKN91VDSDHzmtQq19BSBuF0GAtCRY9RmpwPMlTHTJRE4C7ZIDi8igrGLM8kY55V0jxC2A7h3KtZAqEFlslH4NDBJsF+sOAAZI28kw+L+ribPFG94k2GmL+jPh1QGCoNJCBGbtcgTymaFGYYYqn0FNP/B1AcVEJvjKSm4NMrMcZQapoNK5JTEf5YcM982mGpcWfxAe8BYurmnuPQiPWMFnsAwtwMkSj7esT9DoYcjA5o4ttmgBiDYIFBiNsMFCi0YqBtgwMYDM+Bevjzc57aWjbQl3k0NLUElAdyKV60eBaxFG/d2DewNWoMyB5waarT7PIutYNYtY5scdbeHqssXRu1zxyO9IZJ1RG4J9K6vSTgzUbzE5MXH89cSHx8ZEk0lrVE2ssuwMMJC6gBGnmDFgd5Md1awT25EGvJ77NyddLSHFqxQG9Um40N4KSUJXEq7GJxsNIobm0ToUDhI65tQB6m0WDp/rkouUSAo5K3YDYf81L2gWr1ZIg32xyvqgWcgJfS4xFKSJPXCPsOdT+CIwFnX3seXsleRc0PGHNHbQ+I/06Hm/AqxSFutTv2AklZiHYl32YWQVI5uy6CXEUFHmij10bi+yq5lJELwyYM67s6AqySp1Cew8YtHaw1UQUD0Gq9IlCgmwqGOFVuBugJGeUjAeaEutCA7aBdKkxuLYzBAdhnImmY9liZdosirk5mMi0pLMecHVhZg7gW/E3Yy5SpTJKDtq2hhGmrwG7Wlb0xHfmcCMHkcQbBerCwm/4qZWqPNvUpwfZ/m16lv6deMDUadJK9MyO6g3fvfL4NlVtuHdWpu0nQUfGsTwMeFQ6oBY8mf+hqhH+486yl3RvB5l7syhFS7ZiyaxM8qQmfR7EpXMdTtwWbZYOglr1Q4me/PiGsgVZNFcxd2vQkt1bN9u/HMUY0fbN1lWwi+zBTQYSz1W2LzWtQ48U+bMz3raCWixgM6d4Q0RoGsWtjtz/IV0yZAdw7Kl108nCynIyQ0/E0qKXL2H3aqBOSzS/ewNRGdUPmWm9KYyJ9v2+HMyKolAcIE0T+jvfbm0tffEebxnapIcUQkVzT3BDgZZaKgl5/m1ZLHtbcSIZcbpEKl/LHFUvJgJBiXsV5RB75ScRA3HTFiWiIG05WfdoTTTm9CrY6NOXYrJMfJPEvNIJyuRma/nYYlX4jHv2WULxv4Ei6Ix6veplONIIgIgfyweruftwclXeMGhjCu8EU+q6/p/T/lBn3/xZy1GrlWH17X8HGSirUE5G7IACLMRIgh5cvCzmXF7i4hflhNywD1b6me7E3MlKXbftlo5xnZL9X1wMVvJ9rLdkrOlqDPU4z39PCxFIkYR3vZtSD4fLJn7KtLRUGkA57cXn83178uvXJiKX99z04JK27+agT3mhx/OjRLKeugZFoMRQb3ZrkhpuQI5zA5wZxA7ynOlF2dFUzB33Vrmytta0vNg+pBbZOqBR96/M3PlLswPihg6+QAtkeNOX8TjblfoBlG1IVIJKAMSus1IHxx/KmXbWEF8c5uU0QZpXesW7BYNqZli0+8E+m5QuG6gbdhd3ZMX71utcbK6fFCLPB5I9n79SvlmXpoflYLzs4xHZmhvz8v397/mL57Yk2KaWsVVSwlpnI1jWxXwKtpjsOFc41IU8qmsYgOpWByfMgx8HgRrZbSnFZFnCsX0G+IZAWPv9A73LcgtsfkimVF5ibxwah0lxTm8NFBiwlI1qQrWVEC+UQNTzG/FN1Kcc5Dpon5ZbG+N8sDPNslCBlAlePBB3Zm9Vq+fLpUwh+iQAz6culmU9MZB49sXUmKTJxAG6WPNBScyRvPtSZ1vDgCFEWyrxrr9vw0XETPwX52w+klN2XcMghk+t3ZHBxVflh2oPiyhIxlYNh0p/PSyC+BCMVbiNB7zDVQnmvpfjoQYRsstizcSxwk/MM9XcaIqqrysW82hqNWC36vUQSljh4NXgexmvuyIHDaj1linODDhzUohYS631ORO1QAaJohePz6FYa1I/GqAqsKTN78Mw+JMfHhSQN4hzkqwrvs1gKPeqFsH5uaNhQ96ZIuYYJiEGmqZW3yazffjjfyyPkqNeww3l9Rc73llo+wMpgw+gMrEjjbrqkVlqJ+KSkYdpG743MqqnQAnVZA7SuHEbWXZN4DPAsmsiTcY/gwsSf3suf7wN91ePdxU6GB6B//e4OUgxBrQce36s2RFpUSF+bYmfpxEoyQjCm0RQc+U/clBoCSb44HD66/LoVbqEx0lKZrU8+jqQSooT7rD9dmsdd/6HqFHpPDkDmGxxF/m0oxjBtii2n4nE5KWo4lUqjA1kcIc6rdcyzyEmGw5xaVZyZj/LIJCP4Lm8tnBoRGBqW2Qb146Ibx6kk0olrukjk5c168O0wnmCbo6jM0MmpcMw1NzLKPu5BLG6sPj6QScUNAEKj7vArWwAanmSh+6MTsn64achSk4NtdeCzQn57a7Wp5lLeRt0LwqlQ1mb2Jo8eyfx99Chb91UYVyHtCLw2rWhnm+oTPcNMOiNOu0V1wYGOR0EX7vF4QhgqANnD8kvFfXaKTEw7YoMU3EWAlj54A/8ZkIU2L/tzvHRcGIrwaHMRMwAnVgbjqX/xWDx0NbU5b80w16c4vZKTKY1Fc3m3qiysz+YyKcYxreLScCOi08599odxGCx2YZBdOLOxEYbBwxmaWy6IKmY4MTvMpvlP0YF/exQHqxRoxHd2jpFEHps3eknMryeO4Km7jV8q64WdQOgbOHRAW+Acq2xepFWqq9+ItJCbDl8zTLc/wAiP1uqnKpjRGtl1e9G+HkjP3rY0jyLzEYCCUcxLHMDNbGAToFVcaUduBZMQyBgQ0yl5NvCaVAvStOfr6Y2ed+Ghs4bYjQfbhMxGfqSSgR0fs8lqptAUPLr0KYeiRm2b8BVwyNw4hw+fpl0bP8Kq73iQuVmgcYdJRCD1Cwf2oyWz7/PIyS4Z6mOz0CuC2rZaCJuheptTdc3LmPhuBJcflNRgh+28oieLw1IJvYy3HTWYjS2G957PPUen37BAWHKKttkq1iAnsLJkLA7XnUF79OVJ2gsFNtoj/vjX5MncawaNYewHvY9FNrun54SkwZOyIQWTS29Qk3I9l40LRU9TRw4t17O65Rxns/l0Xi/hW3LXTG+6tgEdVNJLefN8bnLm+ZxT4ufgBWuBD2JCRvURYYaDYonKphBu0UIlbgZa8wNVOEvNMnqwnjaFe7Jm7vjFAFLuMqZBpEx9YSfswo4LfuIe6k3+3B3K/EzxJ802EzxedKQMYCcHy6XCNlPLP5ulCgx7rir/L90rvrYY6P6CT5WbNIsQtb0kEGuj0WAx2HtugyBnEgA4BFH2n88OGdfiv9jtQm9tpIMbBYmiDXX0o+CZB2soKb1ZclAoHM20SDiQhwI/2zHbCnz1s3YocD48cls5O4hvaRDEJOkUlXjepT4BOhp630WoCjncwYLMTjkkZiYDNoG+m79SjaGutk21um2FcUlwWDn6sGq4Flo4yVRaG/0eSkOPgL13ADY7VCAJPIXYqBRBk+fr9FbPiWDS5IgyJV4FJq8WslPiNM21gB4K9gSzJV3I5PFgU5jHez/5njNonnTHbHX8vBvSHTFdBc3V7NVd4ZfAlIA22lDgqY7W66EII4jgPbbASIqRqiysWyPt4NZ4A7bduKA/3ZTHYpJUjQVjF+CYjYzULXVknK4wqJbnYKh2G1qK8QO8kRg9ADVedXLMq7o36/lcDhvAx9GGLjUdG+dVyKMPQtYTJEs3RkzxIUaGQmhpGLmvprkeYmaAKKje8SyEkCMbbtrF6PtMq7z+ydA29G21Mt/MsUXotfD/apEdZRB/+evA9ujb/t2+x9b4dudZSHWrJBgvkW1UDA5eJmhCCXyQBVE6UicLH2iY1AEU2eIqWFwl98QIpnNu6+/w+aAJTWsKVBW6J8AkbnOlPIwf8kho0qHRh72vbnVOjsdH+8sjXvA5VZHtdFjROi33ps9oWponWGQGdsmsg9SGRM59qa2thSqIwSVSO9upxTEIISZGlr+qViJviqCdbtiyaf5rKOsqOgDnceWYC1LEcD2oO+VMfArLpwogecfgB1blNxu8o2jESEQfUw9x27enpnaOZZKNo5FiGzzNf/7wwUMUR6hiHd0qQn6AVMmUb3E4gTIM1j28UT8cM/GXNaayUyB7L6qf6usbShxea2wGmQkD/4Kpotp5qGWouxs9t5V00HEV+vNnVmQvf9EA4PFfw71MpUl+0NzJjh0ig/uke/1tJXuG9NR8zgzkTDZwIRJfKgb0viq/YvfZCHftsb8qNc2QtwML3NNphDKHWVspr34p0+KLGR7ACuUmeMdZd4j1pg1IpzxQ+cTICc0gAz0ZGPAw5bix0ING32YVqORvrDuQD6amlwPDCSV5ZnZppsb3BnoLKBATWXIKFWYgd+trOfTLKjs9PJ9g06R3bVPOD+bX0M3fLCjJqC11ILIQ6mJluA9CpGzR7Gw3REruSbGMGVQNCnmamQJA0TwLjZk1wBWjJ6U9gHAmLRrlM2W/UfB8vaQndFLaUoZvFazY1N9Zz/vWr802rG99yBg+N4DQkygP+nrh384fLB+XaJf2qRThpE3DD4fPbfMgeA2FOqD50bQ0KRotkKkTUcdk6fq4V+6VrFlbxlw3Pjaw7a20vnPr91e3MQNZHNaOGUMZWVLZOy+NDD/I6AV2fJi0Kd8YTi9xlE+m8caO0LLEdzZkNqJJe4l6Y6PN4FYwmItR20EXj+I1PUEGpojNa+YMbRCbXEvC7fVrvRrAOBwzZRCbTgs5O7Cl8DZkhwyBzOfzpLSZCGuHCBs7CkMQfBS9f7IuGbgC144Pe65J+YnC8jNxUC7u9cNtn14a2m5vbDF5C9nj+Rrurk2uWFVs2EljXtCNRtVoth5grikVMG2kLf0guVTILmzHWinpp1ZPEPi5S2uqtcatWiuGhiafm2MLsCvLWE9wy/RA5t4hXZ7u9DwD1VMHLpL+zSNnjw1NX0MfX8EAufKXWS89LEBtdvvJTgV80pkJLohSejwbFQGTj/OoFUrElMjJkeXxHQNojgJfBvlVRMpxeCkV1SqMjKHL5Lyzeftq3d5dqK7b5yuSckvL2u5kjU11rjOzLwDTayk+X2TIlqXCQV3e8VhZmqV0lO1edGthxa/lmBK3aUSdNVHASPQ805L3tVIcnr4NDhrHDu781n2oj5sTglVGp43Ht0/z6Fj9JDp3GDLSZhupP0fU1TmQUnA/hZjbtBUqzZWh+9zE8LLTJOy7cnR70OJ5VdP8ONokpm2SyU5VwxgOe0PtYfSDrdUw1QEFfS8OoLtwFtMGpYM0iv0y9EuZUqlKswscQVSMb7ojHLZn9RVVMfoy/cSiQ/6DBjI5Wf7mkexUMjwcyvwN47X+/3PkDD7XgXIpHac4SkE3udy5ig/6qRLwgqs9fxwSnmgBnDaGJWLKk6xvu9UrOfjDBvHyLpuV/Q2lGYa9eOT3Mec9kZxeyQ7lRjhWliJ0SXcBfhoGendlV+letCHCFmUPI48w3pq+HmKmfN3UOPsIQVt3VVSBstyldkJlHQo3qKb/FKtV4UueH3wIB6NgiZT01voa3izmgNQE3Mfi4tP5ZlYMi3rx6WhHzY/yEsUXhP3dWZtFhOLFIhDd0EAa4xSTTWvGHFO9bc08URj+Ata6IZ7v8J2p/WBk6YtyidEjqC6lEBqlKUBxh2rnFpEzoDwZM5DgPMWyelKT8e6r3iaPHuw8MZkw5oGqOXUaczw4oJaWF2dcOuEGTxvP2fdtPnzyjlm7vZEwd2msRk/btDVoN01ewjlMC/hIxiLY/QqzE4j6tcKpYj4G9XxQzo+7Q2w1R0LrX90RYG3H+zHOSCx831ve26y/MUin+7q57qAPDwr4bEjvqhFctW3qcCK2KALmIQP4q+o7evS2go1Yd/d9L/tb3nWj5f+z77tz/NNFMv6U0iZdJO5pJb7Y7obQjpeKbSEA9sGKtsw4bRW4x4alYXJwoEpIV1UuCvzEpKOBi6xwXQMvWXYAh76k76CKx82/Q89PswFYGqT0MfQ3yHXyInmJUWta4uASh3k1+Sryflv3zg4pMC7ytH/dVL1hh41+qBvEki5yuchfpwMfGjk7zHGV8YyennofM0V23XB0HuTG5CfUQn9ccuvZ/7jMH/fB9E75knaJg8uiXD4JHpLRLdJtKTQhiUtgLJJFtQtWpDhwHpZLzPjTqwhifgCdHs54M6lUX9UAY370aKHqeS2OTkQAdM72mWPMgC0KNV1rBiwL00bhENjBC6WiLzm2vvfCh9wUZ5qoKODK0Ntb41DQoMwkm0IXfdEqEvInHS3Zrp5OXUe9Yk4Q9WHs9oV1Aq1lE7iB45dFzdlsMBgy9sOG+Slg4kYkzQDmHEqrcgYz/qINS+eiq+n1bTudNBPXED1nFk8S8M9gtdL/JHv5K+m/BvtTVy9IO/YNk30aSiaOzgq4M9vaIMIMKMDhUV3O22sncarbt5h0lNHrlYk/7RlNe2u2Z+pppeF5B/x3jEKkIVsbIpLmZdCj0PdaTjL6RPWbAyxCi4lF0998/Ja3ClBm2lFaksGhfC2Taz7uYurvrUfuieG5ylQOxiddOBAgllgQ/q8cFVQty4mZAIm5BgdIXDJCzqiM+mJsFLxTE8qNZtS/JOZtVCcE7yoaBG42YZnW1EbRjRbT8mr8vNmmJqe5G82ojjQ55WwZotSnamATcBitAV7mI0+BXcMYGEk3FLuipdu76rpnpJdY+OnfnvslvDQbOmcC/dCAUQwgJWP0HyFqJ/o3k5lQHDR32bqbu09+XwiV2ldbD1NpLD1rqEuWcsG1f6wm3tkGrQkQ4MbM2HEVcXz6cnkOHXl/2hQ8q/AGNicqcz73/EJjwuexUIbDAewq3zEwSHubKZdMtW1B/vSXyvCdq2+roECpEcBHeOtvqwHeem0aa80mEkbIUIOsD/OyYehZ/Wuph9hL54PIs1Z8S6za+AQ/o5yHEG3JTFgMOmNFzbPJ34FvDOiFHhg2Mj94CaVo72dri56qJ2yPnxpn2aeWYma+q1AfHaqhSA6apFNCdL0pYXFoojkqmOAfhb+as7WisxpEGsXFqH5gRUIBGbsG+tETGBlNyYxBEyJvroieZ4Ps06ba1/Ss7aYfqo7gaHjOuoPyf1BWWJakRM4i1LDpCx40gVkaVkTmftvs4+9Tv/GiO3qW6j9jJ1/m3Cvzctq1vRnrg0GEyvFPn2UX2OeExBD0MYwAtl6Egw/CmD5/rCDmTx1N/QlVN0IArveNFQ+Cm8eOl/7kwSEadHrbaL3Mz9vlDfFAyLwIjZnJpRpi9dQFq5gCYHcz82cv/dMmr1RCHf1UVdMMhEBZU1ftm7oeor/+0SMFkQlxb/CmMkxpfIU+bR+GXPnvasTSslAav6P5bQyFoMAB5vUAIEeP3MtRgOQxqUwVGqCBYv1St1Izyh5qU7XVLuraYvvph+Xe/x3TbmBcn8zA/Gk+noOYVlCvWvOUQcc+41Eyag5MleRIOXUppxc5YpncKYN7xRXtwy43a0fRf2wMjqmfnk+ePQGuOZQTl9h0lUNu4kfBMFlEG5p4N+WadjZC4ubVntRd6oC7gNPCZRA3nQqMrUui+ra0wCpdVwOvGec1BEGXxYXzzKM+sGq+EORRPtE8SybZoz7YcP988vbpzyeHk+TbKGUrhGF2IrfaTtbCSU2WzHt7wxMoRi7ao4S2jVtO9fXh++rg/2kw7PCDUJ1D7TEFefawD1U34w+OaQffod/a4XGPAoH+vg8q8yzIlnvFUtvV9dBgML80xoG0xB5AP06bWamgPB0bfc7n5nEyl4eTPMxsV2vjzVZxrJ/4Wt41iDGdzhwmt09jrFwQv3RrsS0RWZQupi5icVOGx6DT1ZTW1SGoYDDmCKTnsW8RTza1CxpgZdCzg5VFj6lmB7p+DhKx5psS8Vj71cFNVc6iWQqamHCC/j+yGLjU/kFN7xygVV55Y+lCH1mrOE6erWr5+lf2mLzEc1JCLfOzCoFzku0okgCupUgfFA4VQRfzx/HzPsHMD1sjzrkJ7UELDIG2vuwRC1Qb6omTDV3yVWu+nHTlTJKDM3PwLTXVyF5ukWp7IZjv2xWUs68gjdnLraXbqsTe81JPM39ey6HTsJJVU52kuPFqWsgNV4fF+OxhMcWXHhTDIWxQiOZuaRE5CEAfnBb6oEmDYgF8rI+oY8SRoDGH4ZT4Nc0HXIJ52pwwHlGUVdPphl7WG5oafG8NXyTbSzQGVcvy/guETl/hg9Y2P2bX7ao90kTzVRkVkRJwtkAmnDHcbP8vwW7fDn7zebnsq7/AT5RXTA7+VW8/nCtQBgKEEtgvswmln7fw9aYVCEzI8gpGyApKBUHCe04vWKzgJpPfuevJ42Fz7/fPJtSNzLPL+wpIpgy1R7oceKw72vjIUb1peRoZFG2I8xZl1GrVt+2J8sgM0ECpQTLAk0buP7cAoMpMs3Nw3Ram6MnL6za7AQ/hiTdMuqXFYaGGh5k7x8o5rm6KI7dXdq2pImN4QETDM+nHyp/h+Rfm18nxnZj7DGNLP0x1xwzfW72c4atV/N6aV77HhdMuO4jCajccoOpL3ksDx7hzMYM2vKviEJm7MPHab+AnSx2veoDwmBDtHpuRj+tyEAxlJIgotgsgmvbNYOwGH9+H1dqXSaJEIziOKcUILmNAr3xDjGtFeURc6VxBr8PZFQErkyKHMdlLEtq2IAIugRyDAUhemvmHHp3P3JS/pLY4HKOjLb9lZEvMFg4p502Oy0wxz9S/Ss+25mE1JQL+B0V/VdshA8VP0wCa52HgIb2TYQYc2aHC1pqUMYCpMoSTG443R9VUNrK5evnKUdpuuXyiufzPGGGuoMRMnuNMIK5RQRVUjksuHT8r4GYp5sSGNEyT09wNGZe6UymCxUZ9TU5zN+ozz4R2kBtflF8qLGQTY2iGgbUjK1/OowxwWEHbzhGQXcWh0EemlTBNNVhAkQQOUCnTL0HClEiggzNDGlHUEzOywUZKbRJAMIdU3+nzkK7TbaO0Tr3N0l0ScDTs0zoTV+XlZTXbaOmCydsejFP55oN5Vt8snQZTpVuYEAm+fbil5XjbfIIAsuCvpRyMx5Fomh6lcxNuExRT+H6StG41Xa90QyYEZwjSGczb5ykYpxvjb0PGGuBiERtZUZHVSeDA3CfONsJkO0SyYyOb90LUATgJSer8mIA4KmyjxcTR5BGkY9qxfiHfUiZ/U0Uw0ZCUIInO6+ubLcJuSx/kb6wtzcyw5v88xI4tQB3yMXDsGGEWhbbhy2q6GviYlUY06VFjH3cFT0170vKJhc+oQmrpwxp0vWzGD9DUzfY1faN5L562bmvsDezw3rhLdZGKbZ0luqIZH2bio0d/e/7ro0fb6xoB2mhgW/11I2vOpGNxL4tptqkpOzIuaoYqG6WXw3IWZ2tczENuzYRKzmEPeqrxP4AcqQm5pXAay8qZ10tdIpzGQGP1lGyq8ZhmFdwFiOj81kJ2wlOACZNrTXn8RNVV2PU0+tKoSogtSq+s9pIY53Ai7C2uhnqP63lxpoFZ9/LL9Som9U29lDVGUZ/D0jKAkNXr5Y0YItNBSBQ1mrxNwtASxYGAVPUKTim9ITgQ6WRuaVveZlgptRLc6J13DHCC6I6+SG3uJuqdUl8NX9ZHwTyJzEgW5Bm+kBfd3QFGy4zK525CC+/vXK3RdTh5os2vhAIsWhim9QBhmr0VmiuzgyhUxJG71gTboqXEOY0YCEiF/F7NFwhNJbkX4J+7mL3ifcx/7ZhFzNUdWoh6K9ymIlqZs5cBByrYlft7kc1kEpAmYhhOQk2YUwMd8WmqHZx8ruqVKmZv6xm8QW8IhXMZNexANoNIAAEbl9+C5OoG0eVXsdQPVuqfUWoSgmu45/Sxdwx9j49DFWvJuqjdm4awG5dViMFpOIiqnwPwshpkG7iY7GJgdmQz/Ygj8RmpfoI2zLmu5trhpByi3GAzXROIo2M9TNyJbGeLikcFhXG1SoZTO+1aIOVOtu20p6pl2rbf4jBO1uoxUdKxQHpge+8rgLDaiT1Jd+WzzfbVjnB+d9rIUPJRo505uOJtItDLKBgUKSr+mD5J2HIs7uRBA+zQnU+bab2dyKDDB5qLj75DGuEx1igsYPk/5Q6yYw5GFoh0KD/so2UK5YOXVU2Ms4CGSfXL0v29qaSYDL4JG7bZNvCMTVsZPGRPrX0920StixgDW86QcEOfWVfAFk381Y1N+q53Z9eg0ApB41hp1xD7oyCC3/09ovm1MWx8yvDNA/Xtd7UzHJHJLshZXQw2t2Y7Udi5wdhMGg32JH+tIaig5onQu8NwVGo+f7UKoyxr3x+a8pkXA+eugT03I60oxQlfnS37zBpbNWD7uqiXLoWj9KWMkVBorlImUKS6xkFJ3YPJ6WbUo8VebKkptBhijDoJwkIVtmweNEdq3WceGwg9BaWupW3xfFdcmPMtfu+K3AJDhtQcYigCEsr3X2tZxT3R3f3JnLVLxVPU7ADxbrNtbwd4OkHzpL9mXpZYVZp5VtxWosdYEqHJPMNKrRPhXDFqmE9x9OnqnUz+UJL+wT/8us2H+7XsBEC/PimXu9y4aWZkxWCEZpFI2uX74qJd6g3wqZclBEyv1nAPgEHZafMTZEGIPOCZwuogl8pyLu4busvIJnlTzZdMzS5DA8JUtV+qT9xIi1exJvgxychvmeNiaZdFa9xn2RbTnetK+A+L/NzQCyquj2RVyDBLOXXC7xbviIEeW4Gfao9YhLS6A7vXXgMSckaJS0rWYD5LdywTusH4qy+x1Ts3G7SkoR+Tz832UD2Mh9GsZYuhv1Y5P73CEnAiQFh6YVJnx43K7M60lDBQ5VfT7+/Rcq83dBZ90ejNPoQX2FhHnzgTGbzOYFk3DsjjOpyJHAByew6ZbQfxgIRhYDKv7nwBesMpFobDwwiRVCPEFB+GcgHfJIirf0MdtnoXOhZMUoEWjEPkHN9iyK6F6m5vZVEFeE2eXzOw04d4FQZRqXg2jB+seSRXhsrvY7wZBdcwELYGw5Vx/ARLB808Jxc7KHEAjSjMj6egLBh2C49kwQEMaG8Y/tG4YWpTrWPWi4wE+7g/UFJ/MHgWQBJkktu7RT8C2xa2BZnkHqN9MaiaI4vr4Ka2CWwNYhyEdAOMn0EgHniIg8Ht0KRtY97eA3+i2wCCoH9Jql204zZOrwyKWwoOMLyByTWG5wYVUxCLhPd895seMYYxYzjLTeAxOIE6xliIgPbgk5KYaPMdD9sKkTYkD74fjuBGHLHmIbHb98rafsws4V0rfBuDxuDOUxNkXbw3/lKgT7c8a4kvKdOPBG/dzOHhL6Mp9HdtSH8a1zSEXs2rbzK3FDKiaUM7mrpn7hIOVtnYKGKWe5u9I01w366+yYY2rXEy4WEMxKzHSe+/uvO7Zlr8+Wwff33JvW/jojivotkvnpQsi94sfRN+weM7fqmwREfxHZ178IBuEIoPIg1iH1BEJFubXJFGjei6Z7bwZ+8sRuf2QDeJnXyooHELY47FKeRmVCj2sBDL99Xtm/obiSVo1Rij/hQDFGKPbOAfaVCclefz1A+ZjlElOjpJk25vEAqm0Uf6Oe1bfeM/kSmh8DvdIoc/tGdYTz3Le2scqGQ5gMWru8h+4uHBiE92sVlXXodAsbK7scdNbo/g5kRD1KjZu1yvVjhKXFZzcIsDskdPlzGp4y4XvXprbqXJUQL5qngmM62KZ2ioCF1zWC6WpbDoxXq1+I9ednGh9hHf+v9GKgDy1ouiF16XpxwmmiShePHs+R8nz15omrcViy49TWYSiybY2aFU7M1x02Nnlo2uAOp2//LpU+RNrtv2el4BbVsBd57KdtY/nSla3Y/StuSg6Ym3LTt719aziesSJlIhPga8k3o5rarqf/1hXdpceBIc8+mnDoTuqvvHvdOltDnxSbbxbq/KmRzjdj1J1sL8adU8vUSp/qmK3/TuP2SGT5bNdYZ+oCUYccP9X79JYTDonqsd96/JIqEm+3AuPLysn/+omuCzDmcaUwGEoFvBVk0R/kxBECJwCek6uGjX0xsIqxeIcPvxmGJa4QeRTFtIpucfjxkxySOTYrHOKiC4Yhkf8YqJksk7QHlfgclBvm4mmqrUAoZ6spoHNkogstK1vqb82GSvJ2GBOZ7BIiw0nD7lIsWsYECiQirk/SDer4b5vIp0Ja2k0dlYK5CXQXWNyrbxMIV42PI4i0s7yUChZP/mUSV+FElMvGqjNSZFkvvB4QjYaIuqWatODyOcGZRPcWLwPUJ/sN+8wFRS7uckJgQgMMVe+2s1iq9gimHKTMe2HIrSt9OzIWH6La7RwLVBo+BQcfNAQ44XtdnI5bqez35WmyI5sspNsDDqLa5NCPvtG2OSZIWGBwQrdjjG5GtmsACpDAnxPCQ49iHAUgijQnmHRlnQYAvG0s0OHIENBtGZhZ+NW+27JB6thiZC0PKC1m6322yXVrftX7ghvfhGMU0GgQkDEFY0l0tMhPZ+//vf/7ofTE8sgeBHL4Zpo0b+51U571N1531tUbqw0SDUmfIWMn+Fc0G4bgxQxLEU7oviI5XOChMcs5JSr3uEsav7G0dxtnY8VNe5ukLLcTxqY0LmoQNJU8W+f2HJuafv5Wn3DH0yD7jZFpTpePweDlNpEchKycZPbZHflVWiEYpN3QSJfuUGPlZ7M5xRiI27eU7o06Bn2F/T0jTB566LuEBwXVGN0OgBYOT7gp4uqMUy+xuSBTDdcFoESMv1nUVggJfKiu6KmpyHdIdTDwYdjpsewClvCWBA+xydyu5iiQydCkzucZn1HqOKU8TgGDRLDYUOUPgDAFW7YChU6hAsNTVr+6kcIgwA/TS5SXOg13u7loNHWkJZQiZn18zUa48NUZzYBYF/X1WMclMwbIndqKUvTRWO6qsrNYcxIzUksKKhUqKaolIKhbt0oMIP8Zp9IAA8ukGVnKPDaxOu29dWiK3+cwnfUuEo1WXab71eBKLwuiFF678TBvZcqK3Vx22Oe809qWezuefpjWZwk0rq8V4r2lauPXanY0Pj1DsfSM/0sZTFM5V7ol78X7j7CQNZQCVz0w3ZdMqS06kx3lL0EJXOE8T3VqcgeA3KaQ9AaYwPLYdozaA9MjfG96cXxDjT+NHYHPPztgMWrwXTkOPPyyf8+rqk9MvrddbGECAY0CINCYKEtABHblCCKXCf0kAfbMGjflh1z9PKIVNr2ij78G4ESwkYhNiZZqdrhmzKi1xebL+92r+EjUW/UesE3utyaYXLxaUGFVY7y6ZVMkU7DmidlT6pwQYMZSEdTfA7WpOXRtQO4/QcevSgMZNJZ/g8Q8MiJ6an4Hh5jyWugWMo4YzROe3oOEATQvgC+h7HYJkaXGZpkZ2IWW4CUQ1WF+Or3lSW0d+UKr4AGZUJfhUiSpiZrPABEdI2MlYarFsF6AkXRaiVEEtHbdZi2B3NhaABpu5XhGem4mx+d3wFuC1he2GEeNwLwwTphkzsNbu9hIvAFBxp2UuNPYZ4A6cdW3E1TMA+M3EEpc4sXmrrfvKlwMNUBarIIXo7nnynrH1aC9JKVeypjm6WuQ6vcMF7BihSyI3w7QdvWLzxnKeD9FAjVdx52YEHshcM0dKrpGAa9TxLB+UAa/19detW3uD9RqOm5ACCCzNk2mzgIyLyYWZbPMgdbaytmLly2yI+E4r6E9UyAbYMSbmm7S41sJgxMvum1e21QwM3gwZC3I37n7cZe+PB6uN4Ils6QYwNFv6ukCJpza3BRCb3q0fetImNxP85TcnDGhJl+WQR1+quJVOlbzuiWxrDWoY8oDICu55c8C00JvD1VitSYmhxa3IoIt2cHCrJ8Mc973yAo0SPAOjiykbPIjTVneNOjpnfZFNYeNiZI8V/gNCL6YnFvEFD9JlsFkS4VWb0td0Z17nu5gq6/c4FvnC4DwjbQQxsBb1UKBRkz48eCYl99Giw9oL1RHLKMxyNjz21ZBSYGm5z0PIOdS63Jc1K9pIYDL97dadh3n7nPpkzujBD3mkmBdiEMEu3dcF4Raty0X5XN1z46qJzGLgFaeZt19JCYdAX58cnn5tNfWNr/dtVCWXia/4Ipw0SL4cjYfxgsKPBtjjCbqjZ8WyrtfEk4xYWIGmIMoafl/lfPZYFglas+8qWVTwWPbZF8+71wdHrs1enB2dHiHv+JAlIMlIAJ1gkbut4Q+Qt/OenizCnwtHCJ1UWZKfFeZCiXsrrFK/kJ2th8l6quMWCDkb3NNUm3WpytqDUVY7rJwr3Lad9jfpjC/BnDe9jqGEem3vg6GOA3mnEAaVxwVTR6FgMFzGByRmYqg94PYN2wT6tVgtmjJJYPo6iWYRgFm7+SEewCJVi5hsTd5vzOCdu3G1SVhto8jLqwqEDbahyUADfCsfRyzZbfJILeHk2iDGuklGac0ekPgvE5LGWCK8Crj7CVzCALn5i5pYkPVj81CVJDjshf5N2HXq8mg7aQ3PD1gr8jFvb1hjbAoU+LJc1IUxwOik0JBHIN4A7lI4Dx0IDrCp0l3MShV+o98amBf47D8tmOBcMxaZo85oyqMhoJ+3KAs8RYdius6tWFnP3b+1lX+DH7mG8zM2rgLfVwb/mL549f74vP/+yHVXRqoW1lhaqG8+VzswL/gL9Ak44Mgkt84MysIX9tdQ3cqaEd2HhF9kNx4C2sZu90EydOvRzuWnnBETTUF+yvdUaE+Q8jTEEIqei01hApSPmEGUhscPpwh/8qe3mM9ahzfz5+nLFam8rmOv2CTw+mwEbQKj9ywqO41drBot3t05tnsy487K5yU6U2kzik7R3ND++7srlDRirOUTFvohCSY34FHp2vFhU2A/uuC3Mr7yHt3gTxuq2JxJQk0jJ4FzRKXsJEyaDQoDqmd/TZPxE7eH/19rV9LZxA9G7f8UeG1QRYqdpmwI62K1RG0ETw04RtLeNtLa3liVhKblRfn3nvZkhubuU20NvspfLJTnD4XA+3qAEoohJLY17boBKusFV41auP6O3zrf8+Llmuv2BURxsk5MbUggz42Jq04dm33sJiKgikGRGNsh0GNxc3qBLhE2Rj6WjKJtim9OrXpsxK8am2HvFttTYzI+cml+ubrDvRm9U9iC1TF6xYvdEctbn6R2g8cTW+OMlR1EYdrQHps7HpkIR4TKsTIhna2W+zZusyXHcsuYAsOTMprvF6S5H+RZ2fTIXerNoP8J4x4FZqPhyo5GP1JoBQEbVZ4WiqAb6P0Ufcpt5dfwWuRBP6+WTYst60CRfZeIbjcnyZa/84NvuywayGX41uSHomFV5Wi/DRE0FP5UmejK7wACD1S22rLle5jxm4V63yo2zpb5ez84YVXyLWqBMXMzRSczCPnzpu5l5YtRlTkMH1ck2eU4UuUWdjsF8T+0T4xPueFfqrLWi12Pp6q44xDekPQNeK2TYBksc7a261pjKxAvaN+4SgD+lAkFu18tWyL6xYmQOF9TUj0p5L00zMUxmaVQkwfdJV/vYzO9Xa1HpZD+IEmH1V4hR8Yjj7XaOJHyR5iLwSl39MGMPdOxkHWBlz3dAia8j18M8eLdrQqmbH2cUirEomXWBpRuWcSHMZqGLt4NJFYdULAlT3I6vkO/02Mq9Luvj1wYcuveNo8XqcB21/kCKSXUqK98brr9X/NBx6UPx3PFPLesOJVVSdPC7VtR+I0z1Df6qPjXNw4viN04OL++bD2/0rEZa6OMGUuS+3YRMA40C0LwiRZGevjp863gmdynbPhrn7wgttTepagW4z8GQUP4QVnOa61bNDn7PCbQDdCKbYzufTjgB0cQh8eziFgjzdLvnflg0j/sQg6TVQvLFZFs6z6fPDP6kPN1YcyKKCC1W55HJ833EphoqDyIsRVabg+3n5XqnJakvVy9/a0Rp2Gc7coLPzK1kCTAg0HCEBq4OuFVvXVFHMuzcjWfTY9Lbk6wfzNaiUOGfi2CxXIg38BKImkg2LbEA3I+4x9EPWeFX1uo6xX4dPsxHa52/9XGATJ6/6TwUogRuuN+52oZxrjWM1bperbu7GqUzOwIFe96GCVjnE7vatbDyrogdVIeHYP3FMoByICy0PLnZ4yI5Yx00poeZ/8sCdVCnkrwZEluCJ6KblOgK1iEVYMzUjaCuTaKCKQ7MDDl5C1RY7UX2NNJ9CTJbWtJIMBG+3apHMVOaxlpUn0Te7JNbXIbtDTYFAcCKanaF3GM5g65q5e1TDSuqmJOMfS0v0+qMKWlKiU69MVK4GWiDa+283aQjua8lKKPygfwB3jeAVgzFfOsxOL68kV11UkAfGueDj4vi5I5pjgidXY1m/tKs+kkqu8MEs1iujXXkItLQV85jPp9CSzwnmmuoolm96K4aoGVNbI6qKmn3WT/TAUmfITpMf1E3PqgTjzZp9s6IDwYvD9nhWeob3Y0Jerskiz+LoFaWdzDanKlaG+KiYPWiZvl/8wexyUJkzzj27ToRvrpr9N5J/SOGUumJ23bZPCbKb25c2oUmP5cP7TCUtDXVOdse1Cd7uW1FgpcYQ4ZIDNQ45+Ldxzjiatj4eHbqscB6EgHUyDD4tv07ughukd8hDl9FoTl+tzwx6YQKidlDgdmTRLTEc78hoLgfRTtW7jPtStOD49aD/QyGbXxxTPB0xtt4JzK1WpQt+cHrBgV2ujzw3kPge1Yg7c0B0JjrjgyhuNCquEMljAeIKvAwJ/NuVl2cvj91hmPSpAbUC9XUYZaLEXPxI6oc1YlW83wp1tFPGTRhm7usmRCcTMWenaMs6Me66t1CL1LxEqZUAJ7M8J4WiRBj/3J6MKNsx5q38aQch9scirSBCBq1pQXVN406kbxDChEnG7WEaBGHdyHVKrDDvLbESaodoyG4OGqZPp4qaTKGGrq4c3f8PGbrCpb6rJHbmm7mf1NtMa8h6EzcPrakTDMnoeOLKlRzvJLHiASbdS3UsoKTxDggI6N4Zn89pCfRFltEcKIoDsPzWImHcfsygI4h/QYVlw25QKiS/DAz3e6ROGwI60PFSwRo0u6KAE3F3P8lL/kdHLG/X7Zb8cB7ZU/Ue9cvLnKECOU/5Ty5rhftLlyuLnZwGQAcNMx4Fn1l4WM+xQLe7+g/YANNKp9UJzhoX784EiIorLpXSDfD8Nkz37j0d7SeWMRP//wv3zYvZ68Ynjo3c1AXdRowVSv7t+ZrnVlVada0o+Mnd/po4Y3WWvTC9KubzB2LDdTPRQ/EA4NEoputHaT9Mi4CSf1ds1GQn5Rci2yS7b7n15U9pY4sVJT2/qgVmrcKgApIfqwWma85Ph2W+MtzfCzW0HbF1rH7oiOaaiJDNT68m1bv19usRNJW9TvbFkEXCfnSCDfmEIWM5veOSepMwFXrOQI5bDY5Cc99hjkRnQh9+J4eqSy+8r4OmhIYZhcsMcrftmsux92c7ZFIg8MdW4MVjn03DXjB1kpmiPw31b3MTz3xS5Jm/PaQQA6FQIcBJMjhCOi8gOWBTh3IeP0ful2ktp5drilLN/VTFv7SS5XPspaQLHswz98ClGj//lgjPmK85LkB/XeAxagE8Wiqb1Nq9pHFZ88salt7Z/H5OZlvdq2/dUd8/gsq6NE/TtDUigFrAQA= - +
    @@ -1396,8 +1396,8 @@ Зарегистрировано в {0} - Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4} - Репликация с главного экземпляра {0}:{2}, порт обмена сообщениями {3}:{1}, Exchange {4} + Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4}, replicating {5} + Репликация с главного экземпляра {0}:{2}, порт обмена сообщениями {3}:{1}, Exchange {4}, репликация {5} Show wind speed data @@ -2616,12 +2616,12 @@ SOG при старте - Distance to start line at race start time - Дистанция до линии старта во время старта гонки + Distance to start line at race start time; distance to nearest line end in case the competitor projects beyond the line''s ends + Дистанция до линии старта во время старта гонки; в случае проецирования участника за концы линии — дистанция до ближайшего конца линии - Distance to start line five seconds before the start - Дистанция до линии старта за пять секунд до старта + Distance to start line five seconds before the start; distance to nearest line end in case the competitor projects beyond the line''s ends + Дистанция до линии старта за пять секунд до старта гонки; в случае проецирования участника за концы линии — дистанция до ближайшего конца линии Speed over ground at race start time @@ -3185,7 +3185,7 @@ Protest starts at - Протест начинается в + Протест начинается в Protest ends at @@ -3849,7 +3849,7 @@ Sailing World Cup Start - Старт Кубка мира по парусному спорту + Старт Кубка мира по парусному спорту Activate configuration @@ -4629,7 +4629,7 @@ Loading wind data... - Загрузка данных о ветре... + Загрузка данных о ветре... No Videos @@ -5877,11 +5877,11 @@ The following competitors cannot be registered to this race : {0} - Регистрация следующих участников на эту гонку невозможна: {0} + Регистрация следующих участников на эту гонку невозможна: {0} {0} has already been assigned to fleet {2} in race {3} and therefore cannot be assigned to fleet {1} within the same race - {0} уже присвоен флоту {2} в гонке {3} и поэтому не может быть присвоен флоту {1} в той же самой гонке + {0} уже присвоен флоту {2} в гонке {3} и поэтому не может быть присвоен флоту {1} в той же самой гонке Add Mark to Regatta @@ -6084,8 +6084,8 @@ https://play.google.com/store/apps/details?id=com.sap.sailing.android.buoy.positioning.app - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png + https://play.google.com/intl/en/badges/images/badge_new.png + https://play.google.com/intl/en/badges/images/badge_new.png http://appstore.com/sapsailinsight @@ -6143,6 +6143,10 @@ There are no events yet. Событий еще нет. + + Please select a competitor import provider... + Выберите поставщика импорта участников... + Please select a result import provider... Выберите поставщика импорта результатов... @@ -6632,8 +6636,8 @@ Работа - © 2011-2016 SAP Sailing Analytics - © SAP Sailing Analytics, 2011–2016. + © 2011-2017 SAP Sailing Analytics + © SAP Sailing Analytics, 2011-2017. SAP Sailing in @@ -6879,6 +6883,54 @@ Incorrect value for the buoy zone radius in hull lengths Неверное значение радиуса зоны буя в длинах корпуса + + Import Competitors + Импорт участников + + + Select competitors to be imported on the left. Selecting a single competitor shows any existing competitors that may represent the same entity on the right. To use an existing one, select it. When done mapping, select all competitors you want to import in the table on the left and press OK. Note that the tables can be sorted by clicking or tapping on the column headers. + Слева выберите участников для импорта. При выборе одного участника справа отображаются все существующие участники, которые могут представлять одну и ту же организацию. Чтобы использовать существующего участника, выберите его. По завершении сопоставления выберите всех участников, которых требуется импортировать, в таблице слева и нажмите кнопку "ОК". Таблица можно сортировать щелчком или касанием заголовков столбцов. + + + Existing Competitors + Существующие участники + + + Competitors to Import + Участники для импорта + + + Has matches + Есть соответствия + + + Filter competitors to import by name, sail number, race or fleet + Отфильтруйте участников для импорта по названию, номеру на парусе, гонке или флоту + + + Error loading competitor import providers: {0} + Ошибка при загрузке поставщиков импорта участников: {0} + + + Error loading competitor import descriptors: {0} + Ошибка при загрузке дескрипторов импорта участников: {0} + + + Could not save competitor registrations: {0} + Не удалось сохранить регистрации участников: {0} + + + Use, e.g., the race+fleet name + Используйте, например, гонку + название флота + + + Version: {0} + Версия: {0} + + + Replicating objects + Репликация объектов +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 58d1d59ce44..16a989ba604 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -344,7 +344,7 @@ courseMiddleLine=Средняя линия курса messagingPortNumber=Номер порта обмена сообщениями (0 по умолчанию) servletPortNumber=Номер порта сервлета registeredAt=Зарегистрировано в {0} -replicatingFromMaster=Репликация с главного экземпляра {0}:{2}, порт обмена сообщениями {3}:{1}, Exchange {4} TODO {5} +replicatingFromMaster=Репликация с главного экземпляра {0}:{2}, порт обмена сообщениями {3}:{1}, Exchange {4}, репликация {5} showWindSpeedSeries=Показать данные о скорости ветра showWindDirectionSeries=Показать данные о направлениях ветра fleet=Флот @@ -649,8 +649,8 @@ distanceToLineFiveSecondsBeforeStart=Дистанция до линии за 5 speedOverGroundAtRaceStart=SOG при старте speedOverGroundFiveSecondsBeforeStart=SOG за 5 с до старта speedOverGroundWhenPassingStart=SOG при старте -distanceToLineAtRaceStartTooltip=Дистанция до линии старта во время старта гонки -distanceToLineFiveSecondsBeforeStartTooltip=Дистанция до линии старта за пять секунд до старта +distanceToLineAtRaceStartTooltip=Дистанция до линии старта во время старта гонки; в случае проецирования участника за концы линии — дистанция до ближайшего конца линии +distanceToLineFiveSecondsBeforeStartTooltip=Дистанция до линии старта за пять секунд до старта гонки; в случае проецирования участника за концы линии — дистанция до ближайшего конца линии speedOverGroundAtRaceStartTooltip=Скорость относительно грунта во время старта гонки speedOverGroundFiveSecondsBeforeStartTooltip=Скорость относительно грунта за пять секунд до старта speedOverGroundWhenPassingStartTooltip=Скорость относительно грунта при прохождении старта участником @@ -1535,6 +1535,7 @@ dragToChangePosition=Позиция изменяется перетаскива moveFix=Переместить замер manage2SailEvent=Событие Manage2Sail noEventsYet=Событий еще нет. +selectCompetitorImportProvider=Выберите поставщика импорта участников... selectResultImportProvider=Выберите поставщика импорта результатов... buildVersion=Версия сборки serverInformation=Информация о сервере @@ -1657,7 +1658,7 @@ seriesHeaderUpcoming=Скоро eventRegattaLeaderboardLastScoreUpdate=Последнее обновление оценок eventRegattaRaceNotTracked=Не отслеживается footerJobs=Работа -footerCopyright=© SAP Sailing Analytics, 2011–2017. +footerCopyright=© SAP Sailing Analytics, 2011-2017. footerLanguage=Язык SAP Sailing footerLegal=Раскрытие юридической информации footerPrivacy=Конфиденциальность @@ -1719,3 +1720,15 @@ filterDeviceMappings=Фильтровать сопоставления устр raceStartAnalysis=Анализ старта гонки buoyZoneRadiusInHullLengths=Радиус зоны буя в длинах корпуса (например, 2 или 3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Неверное значение радиуса зоны буя в длинах корпуса +importCompetitors=Импорт участников +chooseWhichCompetitorsShouldBeImported=Слева выберите участников для импорта. При выборе одного участника справа отображаются все существующие участники, которые могут представлять одну и ту же организацию. Чтобы использовать существующего участника, выберите его. По завершении сопоставления выберите всех участников, которых требуется импортировать, в таблице слева и нажмите кнопку "ОК". Таблица можно сортировать щелчком или касанием заголовков столбцов. +existingCompetitors=Существующие участники +importedCompetitors=Участники для импорта +hasMatches=Есть соответствия +filterImportedCompetitorsByNameSailRaceFleet=Отфильтруйте участников для импорта по названию, номеру на парусе, гонке или флоту +errorLoadingCompetitorImportProviders=Ошибка при загрузке поставщиков импорта участников: {0} +errorLoadingCompetitorImportDescriptors=Ошибка при загрузке дескрипторов импорта участников: {0} +couldNotSaveCompetitorRegistrations=Не удалось сохранить регистрации участников: {0} +searchTagForImportedCompetitorPlaceholder=Используйте, например, гонку + название флота +version=Версия: {0} +replicables=Репликация объектов From 9f680c026cada49db9e2e31515b28a6ceb215e23 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:32:48 +0000 Subject: [PATCH 132/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/FileStorageStringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ru.properties.xlf b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ru.properties.xlf index 06d3cca4f1e..f3a5d73e2b5 100644 --- a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ru.properties.xlf +++ b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA== From 68d6b02c8d7f577c4f828a20a3da1e9b5453024c Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:32:59 +0000 Subject: [PATCH 133/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../ui/client/i18n/XLF/StringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ru.properties.xlf b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ru.properties.xlf index 52245d238ab..06038d7fc62 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ru.properties.xlf +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    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 From d93a831a2c863333c493fcd374c63942ed6b6e6e Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:33:12 +0000 Subject: [PATCH 134/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../controls/filestorage/XLF/StringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ru.properties.xlf b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ru.properties.xlf index 2ee2e51325e..a4d472945a9 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ru.properties.xlf +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA== From 113dddd23050a8f162a1d789630e51df50637f9e Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:33:21 +0000 Subject: [PATCH 135/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/TrackingStringMessages_ru.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ru.properties.xlf b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ru.properties.xlf index dc102932e7b..2cdd485da8c 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ru.properties.xlf +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_ru.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF1RQU7DQAy85xW+cakQ50o5FCSkSEBLk8J5m7iN1c16tXZbIsTf2U1SWnHzzjjjmYkGUx/I7Qt3IjVK7J455NWEwhWGHYdMauPe10/c4DJ8kJBugq14jXsSxbCQ/NUcEOQYEHo+QmtOCNoifD/8wMJ7ICdqrMXmHqoWHSS9YWHH1vI5XRzlgQPUlurDwFpyBzhKoqNsAOlMUN+yi+oMYToPRrIz2po7rDj/HKe4kNGy3AgGyUuN30F8JjOZcU1gam6pxQiNtI2aLmY/oe2HsFVL8hKt5MVuiGdizICmSb40ctAZssBjogZPVCOcSdvhneIbm9b7aw0zEOq87aesW4wlpEiS3Myz7ZH7Cl2DIU8j6DBnxvtSOWAxylT4pRdLDbs7vfaejvaoM/AWjeDl8DxJFCz5pHCtxPupgj/qtpJkYhXTxl/t/ZvpMC8XKyhj6lTBY7I40plErHAl7Vv9vwoTnv0Cs+RzW3sCAAA= From 25568cef857aff7ef21154acb5d8f4f17f22f152 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:33:38 +0000 Subject: [PATCH 136/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/Polars_StringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_zh_CN.properties.xlf b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_zh_CN.properties.xlf index 67bc6dafac7..4455aed7ee5 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/XLF/Polars_StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF2PTQrCQAyF93OKXEH32TiiFBSGunAdOrEObTPQaaHHd/6s4Cbv4yW8JMaPNOs3OTmgSRyU2a0jnqgbWCzUVksdaz+uk+AP1Y37RixvGAEylYwzLVRCIWExw3fN1TwubsMoEFU9ndiWpGdMBBmz2QTt5eUsy4I7QR66M4V15ika8TQZMBVVb67b/j74ALSew+fwAAAA From caa98f9bfc5274542653d9dac40f4d14afc5e722 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:33:47 +0000 Subject: [PATCH 137/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/Sailing_StringMessages_zh_CN.properties.xlf | 2 +- .../stringmessages/XLF/StringMessages_zh_CN.properties.xlf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_zh_CN.properties.xlf b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_zh_CN.properties.xlf index b7349273236..003edbf8858 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sailing.datamining/resources/stringmessages/XLF/Sailing_StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAIVWS28jKRC+8yu4jJQcRopn9qkVKznJ2vHKeci2Ntoj7i53o7TBApys59dvVdEP7Ew8F7rq4wOKetHLHUCpljQKHldgl1A4W4Zr2DgPaU6OroJcMyBuTYjaFrDy+hUaXN0BskPEg96CokHMoVoddqDwK0kQS22a2a2ij3zYb9fgxb+gvaKB2Aljfjv9oKNxVjcmHlQmi3HhnT1sVfsVC6h0jFq1X3Hj9j7A2INWSZQki2un402jQ1AkSRbFpAGIikex0AUoGnCH7Q6iic6rQeQNeK1Ygd4qGjLmEu9R1CtdZUtkAiWieEVdgl877UvygbHVrdtqYxcQvYFX8Dc1aiqjBbboHJnmAznv/I5VENOn5cT8d46GjM9Iwf3utX95Qucg89wCosmWl0xdQNg38UcGy0RLSx43mQd/dFPpNnKgk6EW9kg5b2Xi5P6ferff5Z6WjOSUfJYcTF7MHXN0eyLkF+EkRluLIXemu4DO7ZzcWz6Y92xsuYwebBXrmb0Gvceai4pg2eHSWNnNiOtNvFI3utmSNFJzU9VRauNJ/dKqaw/wDQj5qqZgYwMZ9JO6d3hFHXPwZzXxEOoM+UXh8c5WGfSrusPt5RvaRupvaqobnvi941YtMLpCxPlk40j9Y1yDZsjQY1/U3d57U6AbsI4brPJXWBbUfjpNsiovrrANhfiHHMk3jH28PKbP7BP4Avc+XYcu+3RKpWQ6t4CzlBeO18E1+wgLbV9Up0jSUsCoRb6LFvdNCtUm9j1zHJdRI6NvmdFJRiS2IhZSF36usQ2TSjmWdjomnLbptO3QqxPariBDx3Fi0F+Ur4p02o8RSZBIvfZx0yViUAmh/O2xnrXSxUvOYL2f/dtgiLJZ1vvZJ8D+HQ83xhfNEa2dkO0MWz3F2g2Pfu5CQC7bzZDEpprA4TlydNnUWE35oadToRNDXnyiY+dcU5eDfa40++3EWBPq3DqGZcKz62Cs80uQ+t7ya4hvALaPwNiW7QHfu5K8GLVhkZ//bE+8FLOAz2vxgu/tLMhW7K0Ymg737syg7BVKbX2ItH85JfOZXfdPQefXu1PSE07RVjSkVDz6T2jzru9njI43EXtcIrA8zN8aDwW96dimbQWq12UCqIBuocKeM5hEXhpMIk0868POGaziThDdy4WBVq3MUWfru+Qg+cPCYktP6yqZP5TVqjY+Ht6v4Lh+PVlAfeEN029I2XH5qm3UFbh9+MuWj5u5saA6nsyTN6dK5HLuGuqXVN10yp1uNlibNXCe0WuVCp0tiDXIGgm0jOQN136Dz9n3bfjwuJXZAvrDxlnnKEWQZIzC1aLiHkrd8M8US9xOxf+VN8i0cAoAAA== diff --git a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf index 5d4af88ca94..b6d3c91f7c3 100644 --- a/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sse.datamining/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAD2MQQoCMQxF9znFLHWnB8hicCXSjYMHKBpLsE2hTQdhmLsbpuoieT958MeZig+EYyc4erAX7ICpJbQB59+cLH8JjqXfnXDKTRS3bQ1KpWKCi2St+BKzMdJdWQL+Yha4Um1RJw7CT6aCy2Eddstx3cP/d5absG6GZTAHH6Y6WeOvAAAA From 7a08c20d3a0355fd4b9075a1bc0e61af0814b9e7 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:33:57 +0000 Subject: [PATCH 138/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../stringmessages/XLF/StringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf index 812996cb168..c90179811fc 100644 --- a/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sailing.server/resources/stringmessages/XLF/StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAKVUTW/bMAy9+1cQ2CEbkAVpdwvgQ5YuWIChDZr2sKPs0A1XWTIk2VkQ5L+PkvNhtzZarBfbEh/f4yNlGZHiQt3jk3BO3GU/KlQuNrwJ+/EBSIGpQzDYXx0GoDNAD+Hl9WEQmZA9l4iun+Tz/tvhy5tUEsUaTaKFWZ8YGlsMGrdzmCJqJq02enuPtpTO/iL1/EBOYuw3WTbshmLtXYWmIty+xPgY6GMwQC+svOiAX0AeMFVC7iy90vZNEMdYFDHczaSw1qfMSZHd4HpVJn8wdbHfg0wb8ChIPSz0byMsZEcsfAWFZ0sgKkFSJBKjTzCewJn+VuQ4hKtJ0L9BmxoqHGnVXcB3vd7Ftw3ajiJ4fNxyEAYvoqOGoVWqDc60MeyEhU6emqyt3A6NPg+NIXdaeSH9ATepzgt05LRZMhJt3aCTl9k5GjgKD1kfJwOSFHpaUZ+NYOVC1zuPbsVg4V1y7KJV93+NIW0p9dbeM4de8c5BtLXePFaPBSeQevLH9WRmWv9VHWPdkpRgnTAOrObS3vdTDOF6Ao5y7JYNNuavxXzdDUFRFEb/pVw4lDtgJN9q7MSWyVloobhmBvBn/FuXwTX3CqliKVDaUUZpCHOvjM5hNV3Cirviw+GCcZTaETxocKVRfBtm7awhFDwki1CRJQc7XRooLRrg0jLiaXNZboP+9DxDglJvR5GPL+tw/Oixx0VEeWGIb+FF/Y74WYl0Fy/rd2SFLF1t5qeQUvumDKN/18D20lAGAAA= From 1d83f1f214e6aadb6c6e9a687ab97370abf2318c Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:34:22 +0000 Subject: [PATCH 139/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../StringMessages_zh_CN.properties.xlf | 78 +++++++++++++++---- .../ui/client/StringMessages_zh_CN.properties | 19 ++++- 2 files changed, 81 insertions(+), 16 deletions(-) diff --git a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties.xlf b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties.xlf index 8a94a8fa43f..53ba5bf4660 100644 --- a/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties.xlf +++ b/XLF/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties.xlf @@ -1,12 +1,12 @@ - +
    - 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 - +
    @@ -1396,8 +1396,8 @@ 注册日期{0} - Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4} - 正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制 + Replicating from master {0}:{2}, messaging port {3}:{1}, exchange {4}, replicating {5} + 正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制,正在复制{5} Show wind speed data @@ -2616,12 +2616,12 @@ 起航时的实际速度 - Distance to start line at race start time - 比赛轮次开始时离开起航线的距离 + Distance to start line at race start time; distance to nearest line end in case the competitor projects beyond the line''s ends + 比赛轮次开始时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 - Distance to start line five seconds before the start - 起航前五秒时离开起航线的距离 + Distance to start line five seconds before the start; distance to nearest line end in case the competitor projects beyond the line''s ends + 起航前五秒时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 Speed over ground at race start time @@ -6084,8 +6084,8 @@ https://play.google.com/store/apps/details?id=com.sap.sailing.android.buoy.positioning.app - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png - https://play.google.com/intl/en/badges/images/generic/en-play-badge.png + https://play.google.com/intl/en/badges/images/badge_new.png + https://play.google.com/intl/en/badges/images/badge_new.png http://appstore.com/sapsailinsight @@ -6143,6 +6143,10 @@ There are no events yet. 暂无活动。 + + Please select a competitor import provider... + 请选择参赛队导入提供方... + Please select a result import provider... 请选择结果导入提供方... @@ -6632,8 +6636,8 @@ 招贤纳士 - © 2011-2016 SAP Sailing Analytics - 版权所有 © 2011-2016 SAP Sailing Analytics + © 2011-2017 SAP Sailing Analytics + 版权所有 © 2011-2017 SAP Sailing Analytics SAP Sailing in @@ -6879,6 +6883,54 @@ Incorrect value for the buoy zone radius in hull lengths 船体长度表示的浮标区半径的值不正确 + + Import Competitors + 导入参赛队 + + + Select competitors to be imported on the left. Selecting a single competitor shows any existing competitors that may represent the same entity on the right. To use an existing one, select it. When done mapping, select all competitors you want to import in the table on the left and press OK. Note that the tables can be sorted by clicking or tapping on the column headers. + 在左侧选择待导入的参赛队。选择单个参赛队会在右侧显示代表相同实体的任何现有参赛队。要使用现有参赛队,请选择。完成映射时,在左侧的表中选择待导入的所有参赛队,并按“确定”。请注意,点击或点按列标题即可对表进行排序。 + + + Existing Competitors + 现有参赛队 + + + Competitors to Import + 待导入的参赛队 + + + Has matches + 有比赛 + + + Filter competitors to import by name, sail number, race or fleet + 按名称、帆号、比赛轮次或船队筛选待导入的参赛队 + + + Error loading competitor import providers: {0} + 加载参赛队导入提供方时出错:{0} + + + Error loading competitor import descriptors: {0} + 加载参赛队导入描述符时出错:{0} + + + Could not save competitor registrations: {0} + 无法保存参赛队注册:{0} + + + Use, e.g., the race+fleet name + 例如,使用比赛轮次+船队名称 + + + Version: {0} + 版本:{0} + + + Replicating objects + 正在复制对象 +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties index 67f902c19bf..42bc7fe8fd1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh_CN.properties @@ -344,7 +344,7 @@ courseMiddleLine=场地中线 messagingPortNumber=消息传送端口编号(默认为 0) servletPortNumber=Servlet 端口编号 registeredAt=注册日期{0} -replicatingFromMaster=正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制 TODO {5} +replicatingFromMaster=正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制,正在复制{5} showWindSpeedSeries=显示风速数据 showWindDirectionSeries=显示风向数据 fleet=船队 @@ -649,8 +649,8 @@ distanceToLineFiveSecondsBeforeStart=起航前 5 秒时与起航线的距离 speedOverGroundAtRaceStart=起航时的实际速度 speedOverGroundFiveSecondsBeforeStart=起航前 5 秒时的实际速度 speedOverGroundWhenPassingStart=起航时的实际速度 -distanceToLineAtRaceStartTooltip=比赛轮次开始时离开起航线的距离 -distanceToLineFiveSecondsBeforeStartTooltip=起航前五秒时离开起航线的距离 +distanceToLineAtRaceStartTooltip=比赛轮次开始时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 +distanceToLineFiveSecondsBeforeStartTooltip=起航前五秒时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 speedOverGroundAtRaceStartTooltip=比赛轮次开始时的实际速度 speedOverGroundFiveSecondsBeforeStartTooltip=起航前五秒时的实际速度 speedOverGroundWhenPassingStartTooltip=参赛队越过起航线时的实际速度 @@ -1535,6 +1535,7 @@ dragToChangePosition=拖动更改位置\n右键点击获取菜单以删除 moveFix=移动修复 manage2SailEvent=Manage2Sail 活动 noEventsYet=暂无活动。 +selectCompetitorImportProvider=请选择参赛队导入提供方... selectResultImportProvider=请选择结果导入提供方... buildVersion=内部版本 serverInformation=服务器信息 @@ -1719,3 +1720,15 @@ filterDeviceMappings=筛选设备映射 raceStartAnalysis=比赛轮次开始分析 buoyZoneRadiusInHullLengths=船体长度表示的浮标区半径(例如 2 或 3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=船体长度表示的浮标区半径的值不正确 +importCompetitors=导入参赛队 +chooseWhichCompetitorsShouldBeImported=在左侧选择待导入的参赛队。选择单个参赛队会在右侧显示代表相同实体的任何现有参赛队。要使用现有参赛队,请选择。完成映射时,在左侧的表中选择待导入的所有参赛队,并按“确定”。请注意,点击或点按列标题即可对表进行排序。 +existingCompetitors=现有参赛队 +importedCompetitors=待导入的参赛队 +hasMatches=有比赛 +filterImportedCompetitorsByNameSailRaceFleet=按名称、帆号、比赛轮次或船队筛选待导入的参赛队 +errorLoadingCompetitorImportProviders=加载参赛队导入提供方时出错:{0} +errorLoadingCompetitorImportDescriptors=加载参赛队导入描述符时出错:{0} +couldNotSaveCompetitorRegistrations=无法保存参赛队注册:{0} +searchTagForImportedCompetitorPlaceholder=例如,使用比赛轮次+船队名称 +version=版本:{0} +replicables=正在复制对象 From 235b62dea470cfe82dda74f623267e3faa115752 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:34:35 +0000 Subject: [PATCH 140/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/FileStorageStringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_zh_CN.properties.xlf b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_zh_CN.properties.xlf index 8599337a144..a057d7c44bb 100644 --- a/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sse.filestorage/resources/stringmessages/XLF/FileStorageStringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAJ1SwW7bMAy95yt4bNHBPeTcQ4tiQLGiGNrmAxiZTojSkiHKSb3Dvn2klGTddSdL1OPj4/PT9SNpuHsrKRMMLKSQItyP+Ms+b+sO3vcEmXSWwnFXERBxJGAFhIyxTyNsNk+PMMmsUAydMu84ojQwxd4au5Wu70Mg1ae+DmwXsL4rITwQbAXjB5QEsxL8vu3wqLchU0+xMIoCRy2E/fWF6ActTToZrMCJ0Kr/wfgwhw8qL7ZXpfQDpAFa+UxxtUf1M0q2tgXok7V8A7PAnzNEol5B52HgwDYEJsojq3KKer2SFFBOgvOBg7mdMqj5fvbVFVUDK7S5p4tpHDv4Xt93JsY7qHdohf3Esr9xaNXsWgJG2Nqx+mFILLBFpU2Wv7iXVMhG2ZPPCykW1yuLSzHmEx7GWSsi0+DxuLDyVjwUo7HI4hGxMPhY34g+cZyEKnbPdDAF2wXGNMcaIDz1fV3vax8M2QKlBQuHTnFSZPH8BKumZk+mSTi0f3HxoGsGPzTl1Wc/w+b1GW7gsvhdLRx9JZgnSdibvirlyCL/btgYn88TKme9gV/PqXDtbRf7Mbij1R9TuhdHUgMAAA== From a3bedd59855b67723d3810037bf55a23ef167b97 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:34:47 +0000 Subject: [PATCH 141/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../ui/client/i18n/XLF/StringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_zh_CN.properties.xlf b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_zh_CN.properties.xlf index 68818b0e333..50cc7d36195 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/XLF/StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    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 From 6a3f76044537d1a81ee66413cdea42b81b2121c8 Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:34:59 +0000 Subject: [PATCH 142/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../filestorage/XLF/StringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_zh_CN.properties.xlf b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_zh_CN.properties.xlf index 4d48de6efa0..0d8f099fc49 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/filestorage/XLF/StringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAH1SzU4jMQy+5yn8BIgXyKEa2MuuAFEEZ5O4naiZZOR4WiG0746TtLNod+Hi/2/8eb4UPJLdqjFMU9b4sTmTD/b+p3GYHEU7NGfQe7vx3pAPYm/VmEJ8JL5lzmw3CagGkJ1bmMnDaQyRAEVomiWkPUgGl5OgE5CRoKOv4CESFgI3kjvAW14YEskp86FOJ3IScgJMHoTfAPcY0pVxMReyQ7WNudADZ0d+YRowxnaGEKxFqNUz30eaY6Bity0D7qlp7Ic8TUsKDivhlyBjH7LtRuXzqQsnbZ+PMHpT0L+3aU73yKb0WLcIYIE+YFxeor/L8kRFlNxMLJXKUMuQsv4YbcC8dlaAfua/87rqi/G+v/IPjv5CdDaNvDZX1K+M/itY1N63uCOGiK/xAi3/YC8DF3hR5XZMZVS1mjcJJ7J3aswR40L2uVrjqTgOc30G9uZP3AXryiiTtAv7hbFNDZ+zqkbVqwreg7Xyowk+50RJ1i7sVOn3699mbu9yS1GfoD0/0tIy8wFPN7vhNwMAAA== From 07f656d62d4cd4d661d1e971481ebefa56ca892d Mon Sep 17 00:00:00 2001 From: "service.tip.git" Date: Thu, 12 Jan 2017 14:35:09 +0000 Subject: [PATCH 143/191] Localization delivery: commit by Albert Kwiatkowski, and the user email is albert.kwiatkowski@sap.com. --- .../XLF/TrackingStringMessages_zh_CN.properties.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_zh_CN.properties.xlf b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_zh_CN.properties.xlf index 29f86428c5b..b3e295d9d1b 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_zh_CN.properties.xlf +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/XLF/TrackingStringMessages_zh_CN.properties.xlf @@ -1,6 +1,6 @@ - +
    H4sIAAAAAAAAAF1RQU7DQAy85xW+cakQ50o5FCSkSEBLk8J5m7iN1c16tXZbIsTf2U1SWnHzzjjjmYkGUx/I7Qt3IjVK7J455NWEwhWGHYdMauPe10/c4DJ8kJBugq14jXsSxbCQ/NUcEOQYEHo+QmtOCNoifD/8wMJ7ICdqrMXmHqoWHSS9YWHH1vI5XRzlgQPUlurDwFpyBzhKoqNsAOlMUN+yi+oMYToPRrIz2po7rDj/HKe4kNGy3AgGyUuN30F8JjOZcU1gam6pxQiNtI2aLmY/oe2HsFVL8hKt5MVuiGdizICmSb40ctAZssBjogZPVCOcSdvhneIbm9b7aw0zEOq87aesW4wlpEiS3Myz7ZH7Cl2DIU8j6DBnxvtSOWAxylT4pRdLDbs7vfaejvaoM/AWjeDl8DxJFCz5pHCtxPupgj/qtpJkYhXTxl/t/ZvpMC8XKyhj6lTBY7I40plErHAl7Vv9vwoTnv0Cs+RzW3sCAAA= From fbcc7bface2bede9de70254c9013070c4aafcc21 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 12 Jan 2017 23:12:55 +0100 Subject: [PATCH 144/191] bug 4027: renamed method and allow server-side MediaTrack to be used in MediaLibrary methods as well --- .../sap/sailing/server/impl/MediaLibrary.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java index 55735076fb3..84e5e788b37 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/MediaLibrary.java @@ -129,7 +129,7 @@ class MediaLibrary { void deleteMediaTrack(MediaTrack mediaTrackToBeDeleted) { LockUtil.lockForWrite(lock); try { - MediaTrack deletedMediaTrack = getMediaTrackForClone(mediaTrackToBeDeleted); + MediaTrack deletedMediaTrack = resolveClone(mediaTrackToBeDeleted); mediaTracksByDbId.remove(deletedMediaTrack); updateMapByRace_Remove(deletedMediaTrack); } finally { @@ -140,7 +140,7 @@ class MediaLibrary { void titleChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { mediaTrack.title = changedMediaTrack.title; } @@ -152,7 +152,7 @@ class MediaLibrary { void urlChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { mediaTrack.url = changedMediaTrack.url; } @@ -164,7 +164,7 @@ class MediaLibrary { void mimeTypeChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { mediaTrack.mimeType = changedMediaTrack.mimeType; } @@ -176,7 +176,7 @@ class MediaLibrary { void startTimeChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { mediaTrack.startTime = changedMediaTrack.startTime; } @@ -188,7 +188,7 @@ class MediaLibrary { void durationChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { mediaTrack.duration = changedMediaTrack.duration; } @@ -200,7 +200,7 @@ class MediaLibrary { void assignedRacesChanged(MediaTrack changedMediaTrack) { LockUtil.lockForWrite(lock); try { - MediaTrack mediaTrack = getMediaTrackForClone(changedMediaTrack); + MediaTrack mediaTrack = resolveClone(changedMediaTrack); if (mediaTrack != null) { updateMapByRace_Remove(mediaTrack); //Cannot use updateCache_Update method, because race is changed mediaTrack.assignedRaces.clear(); @@ -214,11 +214,19 @@ class MediaLibrary { } } - private MediaTrack getMediaTrackForClone(MediaTrack mediaTrackClone) { + /** + * A {@link MediaTrack} is used on the server and in the GWT client and travels through + * GWT RPC calls. When received as a parameter it is never identical to any server-side + * {@link MediaTrack} object. This method resolves a clone such as those received as a + * GWT RPC method call parameter to a {@link MediaTrack} object known by the server, + * based on its {@link Object#hashCode()} and {@link Object#equals(Object)} method that + * is based on the {@link MediaTrack#dbId} field.

    + * + * It is also permissible to pass a server-side object to this method in which case it may + * be returned unchanged. + */ + private MediaTrack resolveClone(MediaTrack mediaTrackClone) { MediaTrack mediaTrack = mediaTracksByDbId.get(mediaTrackClone); - if (mediaTrack == mediaTrackClone) { - throw new IllegalArgumentException("Media track and clone must not be identical."); - } return mediaTrack; } @@ -292,7 +300,7 @@ class MediaLibrary { } public MediaTrack lookupMediaTrack(MediaTrack mediaTrack) { - return getMediaTrackForClone(mediaTrack); + return resolveClone(mediaTrack); } } From d7abb6c326ca0c92f373f8243d0395544406ec30 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 13 Jan 2017 09:14:17 +0100 Subject: [PATCH 145/191] fixed AdminConsole release notes (had wrong month) Change-Id: Ifa967e46b5346415919ea0e4208c243099cae71e --- java/com.sap.sailing.www/release_notes_admin.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 07355cda68a..41a41ff04a1 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -23,7 +23,7 @@

    Release Notes - Administration Console

    -

    December 2016

    +

    January 2017

    • Filter boxes now support quoting phrases, such as "Race 2" to make them a single search term. Previously, when entering Race 2 this would match all lines containing Race as well From 9293e94b55cdaa71c1af7032ec0ec131c02a808e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 13 Jan 2017 10:11:24 +0100 Subject: [PATCH 146/191] copied Chinese translations from zh_CN to _zh Change-Id: I3ce4d86b4e57be85e8e9e3d3476cd87d938b5b5e --- .../ui/client/StringMessages_zh.properties | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 67f902c19bf..42bc7fe8fd1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -344,7 +344,7 @@ courseMiddleLine=场地中线 messagingPortNumber=消息传送端口编号(默认为 0) servletPortNumber=Servlet 端口编号 registeredAt=注册日期{0} -replicatingFromMaster=正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制 TODO {5} +replicatingFromMaster=正在从主服务器{0}:{2}、消息传送端口{3}:{1}、交换机{4}复制,正在复制{5} showWindSpeedSeries=显示风速数据 showWindDirectionSeries=显示风向数据 fleet=船队 @@ -649,8 +649,8 @@ distanceToLineFiveSecondsBeforeStart=起航前 5 秒时与起航线的距离 speedOverGroundAtRaceStart=起航时的实际速度 speedOverGroundFiveSecondsBeforeStart=起航前 5 秒时的实际速度 speedOverGroundWhenPassingStart=起航时的实际速度 -distanceToLineAtRaceStartTooltip=比赛轮次开始时离开起航线的距离 -distanceToLineFiveSecondsBeforeStartTooltip=起航前五秒时离开起航线的距离 +distanceToLineAtRaceStartTooltip=比赛轮次开始时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 +distanceToLineFiveSecondsBeforeStartTooltip=起航前五秒时离开起航线的距离;参赛队突破航线终点时与最近航线终点的距离 speedOverGroundAtRaceStartTooltip=比赛轮次开始时的实际速度 speedOverGroundFiveSecondsBeforeStartTooltip=起航前五秒时的实际速度 speedOverGroundWhenPassingStartTooltip=参赛队越过起航线时的实际速度 @@ -1535,6 +1535,7 @@ dragToChangePosition=拖动更改位置\n右键点击获取菜单以删除 moveFix=移动修复 manage2SailEvent=Manage2Sail 活动 noEventsYet=暂无活动。 +selectCompetitorImportProvider=请选择参赛队导入提供方... selectResultImportProvider=请选择结果导入提供方... buildVersion=内部版本 serverInformation=服务器信息 @@ -1719,3 +1720,15 @@ filterDeviceMappings=筛选设备映射 raceStartAnalysis=比赛轮次开始分析 buoyZoneRadiusInHullLengths=船体长度表示的浮标区半径(例如 2 或 3) incorrectValueForRegattaBuoyZoneRadiusInHullLengths=船体长度表示的浮标区半径的值不正确 +importCompetitors=导入参赛队 +chooseWhichCompetitorsShouldBeImported=在左侧选择待导入的参赛队。选择单个参赛队会在右侧显示代表相同实体的任何现有参赛队。要使用现有参赛队,请选择。完成映射时,在左侧的表中选择待导入的所有参赛队,并按“确定”。请注意,点击或点按列标题即可对表进行排序。 +existingCompetitors=现有参赛队 +importedCompetitors=待导入的参赛队 +hasMatches=有比赛 +filterImportedCompetitorsByNameSailRaceFleet=按名称、帆号、比赛轮次或船队筛选待导入的参赛队 +errorLoadingCompetitorImportProviders=加载参赛队导入提供方时出错:{0} +errorLoadingCompetitorImportDescriptors=加载参赛队导入描述符时出错:{0} +couldNotSaveCompetitorRegistrations=无法保存参赛队注册:{0} +searchTagForImportedCompetitorPlaceholder=例如,使用比赛轮次+船队名称 +version=版本:{0} +replicables=正在复制对象 From 623caba398e627394812268d1b46b7030773be58 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Fri, 13 Jan 2017 16:55:32 +0100 Subject: [PATCH 147/191] fixed null pointers, that occur while the map is rotated to windup --- .../sailing/gwt/ui/client/shared/racemap/FixesAndTails.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java index f25dda270c9..285a3fe8e10 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java @@ -301,8 +301,10 @@ public class FixesAndTails { */ private void mergeFixes(CompetitorDTO competitorDTO, List mergeThis, final long timeForPositionTransitionMillis) { List intoThis = fixes.get(competitorDTO); - int indexOfFirstShownFix = firstShownFix.get(competitorDTO).get() == null ? -1 : firstShownFix.get(competitorDTO).get(); - int indexOfLastShownFix = lastShownFix.get(competitorDTO).get() == null ? -1 : lastShownFix.get(competitorDTO).get(); + + int indexOfFirstShownFix = (firstShownFix.get(competitorDTO) == null || firstShownFix.get(competitorDTO).get() == null) ? -1 + : firstShownFix.get(competitorDTO).get(); + int indexOfLastShownFix = (lastShownFix.get(competitorDTO) == null || lastShownFix.get(competitorDTO).get() == null) ? -1 : lastShownFix.get(competitorDTO).get(); final Polyline tail = getTail(competitorDTO); int intoThisIndex = 0; final Comparator fixByTimePointComparator = new Comparator() { From e07c2e6019fd48abb6f3e1c2e0e546b49f1cb63d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 16 Jan 2017 10:13:15 +0100 Subject: [PATCH 148/191] being more consistent with null check for firstShownFix/lastShownFix; avoid redundant calls to get(...) Change-Id: I9093f1f403aeeaf2549b02c742d71060eac3b796 --- .../client/shared/racemap/FixesAndTails.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java index 285a3fe8e10..5d013eb7e7b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/FixesAndTails.java @@ -103,7 +103,8 @@ public class FixesAndTails { } public int getFirstShownFix(CompetitorDTO competitor) { - return firstShownFix.get(competitor).get(); + final Trigger firstShownFixForCompetitor = firstShownFix.get(competitor); + return firstShownFixForCompetitor==null?null:firstShownFixForCompetitor.get(); } /** @@ -301,10 +302,11 @@ public class FixesAndTails { */ private void mergeFixes(CompetitorDTO competitorDTO, List mergeThis, final long timeForPositionTransitionMillis) { List intoThis = fixes.get(competitorDTO); - - int indexOfFirstShownFix = (firstShownFix.get(competitorDTO) == null || firstShownFix.get(competitorDTO).get() == null) ? -1 - : firstShownFix.get(competitorDTO).get(); - int indexOfLastShownFix = (lastShownFix.get(competitorDTO) == null || lastShownFix.get(competitorDTO).get() == null) ? -1 : lastShownFix.get(competitorDTO).get(); + final Trigger firstShownFixForCompetitor = firstShownFix.get(competitorDTO); + int indexOfFirstShownFix = (firstShownFixForCompetitor == null || firstShownFixForCompetitor.get() == null) ? -1 + : firstShownFixForCompetitor.get(); + final Trigger lastShownFixForCompetitor = lastShownFix.get(competitorDTO); + int indexOfLastShownFix = (lastShownFixForCompetitor == null || lastShownFixForCompetitor.get() == null) ? -1 : lastShownFixForCompetitor.get(); final Polyline tail = getTail(competitorDTO); int intoThisIndex = 0; final Comparator fixByTimePointComparator = new Comparator() { @@ -437,7 +439,8 @@ public class FixesAndTails { final Polyline tail = getTail(competitorDTO); int vertexCount = tail.getPath().getLength(); final List fixesForCompetitor = getFixes(competitorDTO); - int indexOfFirstShownFix = firstShownFix.get(competitorDTO).get() == null ? -1 : firstShownFix.get(competitorDTO).get(); + final Trigger firstShownFixForCompetitor = firstShownFix.get(competitorDTO); + int indexOfFirstShownFix = (firstShownFixForCompetitor == null || firstShownFixForCompetitor.get() == null) ? -1 : firstShownFixForCompetitor.get(); // remove fixes before what is now to be the beginning of the polyline: while (indexOfFirstShownFix != -1 && vertexCount > 0 && fixesForCompetitor.get(indexOfFirstShownFix).timepoint.before(from)) { @@ -456,7 +459,8 @@ public class FixesAndTails { vertexCount++; } // now adjust the polyline's tail: remove excess vertices that are after "to" - int indexOfLastShownFix = lastShownFix.get(competitorDTO).get() == null ? -1 : lastShownFix.get(competitorDTO).get(); + final Trigger lastShownFixForCompetitor = lastShownFix.get(competitorDTO); + int indexOfLastShownFix = (lastShownFixForCompetitor == null || lastShownFixForCompetitor.get() == null) ? -1 : lastShownFixForCompetitor.get(); while (indexOfLastShownFix != -1 && vertexCount > 0 && fixesForCompetitor.get(indexOfLastShownFix).timepoint.after(to)) { if (vertexCount-1 == 0 || (indexOfLastShownFix-1 >= 0 && !fixesForCompetitor.get(indexOfLastShownFix-1).timepoint.after(to))) { From 8256ad75d6bdbeecd2db27258b56d28d9fa6d5d5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 16 Jan 2017 11:02:11 +0100 Subject: [PATCH 149/191] adjusted release notes to reflect fix for bug3993 Change-Id: If955f08b8566bad730b0ae14765bd4c3c2c1c013 --- .../sailing/gwt/home/solutions/SailingAnalyticsNotes.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/SailingAnalyticsNotes.html b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/SailingAnalyticsNotes.html index 1f60f4c7fd4..af5ce5c59af 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/SailingAnalyticsNotes.html +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/SailingAnalyticsNotes.html @@ -4,6 +4,12 @@

      What's New - SAP Sailing Analytics

      +
      January 2017
      +
        +
      • An issue with wind-up map rotation which sometimes left the map centered over the African continent has been fixed. +
      • +
      +
      October 2016
      • An issue with live re-calculation of the maximum speed over ground (SOG) values has been fixed. From 93f79322c5c1dfebb42407f8519acc23c7f8c211 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 16 Jan 2017 15:59:22 +0100 Subject: [PATCH 150/191] implementation for bug 3923: tracking times can individually be unset Change-Id: I9c43b4b4ad2f753b371ca75e77a7b9287bf2ff69 --- .../TimePointSpecificationFoundInLogImpl.java | 25 +++++++ .../race/RaceLogEndOfTrackingEvent.java | 3 +- .../race/RaceLogStartOfTrackingEvent.java | 4 +- .../impl/TrackingTimesEventFinder.java | 45 ++++++++++++ .../analyzing/impl/TrackingTimesFinder.java | 36 +++------- .../RaceLogSetTrackingTimesDTO.java | 9 +-- .../adminconsole/SetTrackingTimesDialog.java | 69 +++++++++++++------ ...martphoneTrackingEventManagementPanel.java | 4 -- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- .../gwt/ui/server/SailingServiceImpl.java | 55 +++++++++++++-- 12 files changed, 191 insertions(+), 66 deletions(-) create mode 100755 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesEventFinder.java diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/TimePointSpecificationFoundInLogImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/TimePointSpecificationFoundInLogImpl.java index f14d3650a26..d3306a5d835 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/TimePointSpecificationFoundInLogImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/abstractlog/TimePointSpecificationFoundInLogImpl.java @@ -17,4 +17,29 @@ public class TimePointSpecificationFoundInLogImpl implements TimePointSpecificat public TimePoint getTimePoint() { return timePoint; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((timePoint == null) ? 0 : timePoint.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + TimePointSpecificationFoundInLogImpl other = (TimePointSpecificationFoundInLogImpl) obj; + if (timePoint == null) { + if (other.timePoint != null) + return false; + } else if (!timePoint.equals(other.timePoint)) + return false; + return true; + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEndOfTrackingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEndOfTrackingEvent.java index c3811c991b7..bac8c65d7ec 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEndOfTrackingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEndOfTrackingEvent.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.abstractlog.race; +import com.sap.sailing.domain.abstractlog.Revokable; -public interface RaceLogEndOfTrackingEvent extends RaceLogEvent { +public interface RaceLogEndOfTrackingEvent extends RaceLogEvent, Revokable { } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartOfTrackingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartOfTrackingEvent.java index db3e9cce334..6b73a14a437 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartOfTrackingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogStartOfTrackingEvent.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.abstractlog.race; -public interface RaceLogStartOfTrackingEvent extends RaceLogEvent { +import com.sap.sailing.domain.abstractlog.Revokable; + +public interface RaceLogStartOfTrackingEvent extends RaceLogEvent, Revokable { } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesEventFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesEventFinder.java new file mode 100755 index 00000000000..e0ec736da9d --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesEventFinder.java @@ -0,0 +1,45 @@ +package com.sap.sailing.domain.abstractlog.race.analyzing.impl; + +import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; +import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; +import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; +import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; + +public class TrackingTimesEventFinder extends RaceLogAnalyzer> { + + public TrackingTimesEventFinder(RaceLog raceLog) { + super(raceLog); + } + + @Override + protected Util.Pair performAnalysis() { + boolean startOfTrackingFound = false; + boolean endOfTrackingFound = false; + RaceLogStartOfTrackingEvent start = null; + RaceLogEndOfTrackingEvent end = null; + final RaceLog raceLog = getLog(); + for (RaceLogEvent event : raceLog.getUnrevokedEventsDescending()) { + if (!startOfTrackingFound && event instanceof RaceLogStartOfTrackingEvent) { + start = (RaceLogStartOfTrackingEvent) event; + startOfTrackingFound = true; + } + if (!endOfTrackingFound && event instanceof RaceLogEndOfTrackingEvent) { + end = (RaceLogEndOfTrackingEvent) event; + endOfTrackingFound = true; + } + if (startOfTrackingFound && endOfTrackingFound) { + break; + } + } + final Pair result; + if (startOfTrackingFound || endOfTrackingFound) { + result = new Util.Pair<>(start, end); + } else { + result = null; + } + return result; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesFinder.java index bf5e5c1b6dc..8f260e49ad2 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/TrackingTimesFinder.java @@ -2,7 +2,6 @@ package com.sap.sailing.domain.abstractlog.race.analyzing.impl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; -import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLog; import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLogImpl; @@ -10,38 +9,19 @@ import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; public class TrackingTimesFinder extends RaceLogAnalyzer> { - + private final TrackingTimesEventFinder trackingTimesEventFinder; + public TrackingTimesFinder(RaceLog raceLog) { super(raceLog); + this.trackingTimesEventFinder = new TrackingTimesEventFinder(raceLog); } @Override protected Util.Pair performAnalysis() { - boolean startOfTrackingFound = false; - boolean endOfTrackingFound = false; - TimePointSpecificationFoundInLog start = null; - TimePointSpecificationFoundInLog end = null; - final RaceLog raceLog = getLog(); - for (RaceLogEvent event : raceLog.getUnrevokedEventsDescending()) { - if (!startOfTrackingFound && event instanceof RaceLogStartOfTrackingEvent) { - start = new TimePointSpecificationFoundInLogImpl(event.getLogicalTimePoint()); - startOfTrackingFound = true; - } - if (!endOfTrackingFound && event instanceof RaceLogEndOfTrackingEvent) { - end = new TimePointSpecificationFoundInLogImpl(event.getLogicalTimePoint()); - endOfTrackingFound = true; - } - if (startOfTrackingFound && endOfTrackingFound) { - break; - } - } - final Pair result; - if (startOfTrackingFound || endOfTrackingFound) { - result = new Util.Pair<>(start, end); - } else { - result = null; - } - return result; + Pair preResult = trackingTimesEventFinder.performAnalysis(); + return preResult == null ? null : + new Util.Pair( + preResult.getA()==null?null:new TimePointSpecificationFoundInLogImpl(preResult.getA().getLogicalTimePoint()), + preResult.getB()==null?null:new TimePointSpecificationFoundInLogImpl(preResult.getB().getLogicalTimePoint())); } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogSetTrackingTimesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogSetTrackingTimesDTO.java index ec047b07de0..b2cd1138fe7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogSetTrackingTimesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogSetTrackingTimesDTO.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.adminconsole; import com.google.gwt.user.client.rpc.IsSerializable; +import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLog; import com.sap.sse.common.TimePoint; public class RaceLogSetTrackingTimesDTO implements IsSerializable { @@ -10,8 +11,8 @@ public class RaceLogSetTrackingTimesDTO implements IsSerializable { public String authorName; public Integer authorPriority; public TimePoint logicalTimePoint; - public TimePoint newStartOfTracking; - public TimePoint newEndOfTracking; - public TimePoint currentStartOfTracking; - public TimePoint currentEndOfTracking; + public TimePointSpecificationFoundInLog newStartOfTracking; + public TimePointSpecificationFoundInLog newEndOfTracking; + public TimePointSpecificationFoundInLog currentStartOfTracking; + public TimePointSpecificationFoundInLog currentEndOfTracking; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SetTrackingTimesDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SetTrackingTimesDialog.java index 2e7948d8812..d65abfbc568 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SetTrackingTimesDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SetTrackingTimesDialog.java @@ -10,6 +10,7 @@ import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CaptionPanel; +import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; @@ -20,11 +21,11 @@ import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLog; +import com.sap.sailing.domain.common.abstractlog.TimePointSpecificationFoundInLogImpl; import com.sap.sailing.gwt.ui.client.DataEntryDialogWithBootstrap; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox; -import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; import com.sap.sse.common.impl.MillisecondsTimePoint; @@ -44,12 +45,28 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap result) { - currentStart = result == null || result.getA() == null ? null : result.getA().getTimePoint(); - currentEnd = result == null || result.getB() == null ? null : result.getB().getTimePoint(); - updateDateTimeLabelAndTimeBoxFromDate(currentStart, currentStartLabel, startTimeBox); - updateDateTimeLabelAndTimeBoxFromDate(currentEnd, currentEndLabel, endTimeBox); + currentStart = result == null ? null : result.getA(); + currentEnd = result == null ? null : result.getB(); + updateDateTimeLabelAndTimeBoxFromDate(currentStart, currentStartLabel, startTimeBox, startTimeSetCheckbox); + updateDateTimeLabelAndTimeBoxFromDate(currentEnd, currentEndLabel, endTimeBox, endTimeSetCheckbox); } }); } - private void updateDateTimeLabelAndTimeBoxFromDate(final TimePoint timePoint, final Label label, final BetterDateTimeBox dateTimeBox) { + private void updateDateTimeLabelAndTimeBoxFromDate(final TimePointSpecificationFoundInLog timePoint, final Label label, final BetterDateTimeBox dateTimeBox, CheckBox setCheckBox) { if (timePoint == null) { label.setText(stringMessages.notAvailable()); dateTimeBox.setValue(null); + setCheckBox.setValue(false); } else { - label.setText(dateTimeFormat.format(timePoint.asDate())); - dateTimeBox.setValue(timePoint.asDate()); + label.setText(timePoint.getTimePoint()==null?"null":dateTimeFormat.format(timePoint.getTimePoint().asDate())); + dateTimeBox.setValue(timePoint.getTimePoint() == null ? null : timePoint.getTimePoint().asDate()); + setCheckBox.setValue(true); } } private Widget createInputPanel() { - Grid content = new Grid(4, 3); + Grid content = new Grid(4, 4); Button startNow = new Button(stringMessages.now()); startNow.addClickHandler(new ClickHandler() { @@ -124,16 +143,22 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrapstartTimeSetCheckbox.setValue(true)); // when the start time is manipulated, assume the user wants to really set it startTimeBox.setFormat("dd/mm/yyyy hh:ii:ss"); content.setWidget(0, 0, createLabel(stringMessages.startOfTracking())); content.setWidget(0, 1, startTimeBox); - content.setWidget(0, 2, startNow); + startTimeSetCheckbox = createCheckbox(stringMessages.set()); + content.setWidget(0, 2, startTimeSetCheckbox); + content.setWidget(0, 3, startNow); endTimeBox = createDateTimeBox(null); + endTimeBox.addValueChangeHandler(e->endTimeSetCheckbox.setValue(true)); // when the end time is manipulated, assume the user wants to really set it endTimeBox.setFormat("dd/mm/yyyy hh:ii:ss"); content.setWidget(1, 0, createLabel(stringMessages.endOfTracking())); content.setWidget(1, 1, endTimeBox); - content.setWidget(1, 2, endNow); + endTimeSetCheckbox = createCheckbox(stringMessages.set()); + content.setWidget(1, 2, endTimeSetCheckbox); + content.setWidget(1, 3, endNow); authorNameBox = createTextBox("Shore"); content.setWidget(2, 0, createLabel(stringMessages.authorName())); @@ -173,10 +198,8 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap { private final StringMessages stringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java index 5b5b2e12225..cf217320813 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java @@ -745,11 +745,9 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC private void showSetTrackingTimesDialog(RaceColumnDTO raceColumn, FleetDTO fleet) { new SetTrackingTimesDialog(sailingService, errorReporter, getSelectedLeaderboardName(), raceColumn.getName(), fleet.getName(), stringMessages, new DataEntryDialog.DialogCallback() { - @Override public void ok(RaceLogSetTrackingTimesDTO editedObject) { sailingService.setTrackingTimes(editedObject, new AsyncCallback(){ - @Override public void onFailure(Throwable caught) { errorReporter.reportError("Error while setting tracking times: " + caught.getMessage()); @@ -760,9 +758,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC public void onSuccess(Void result) { refreshTrackingActionButtons(); } - }); - } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 8f198e98cad..ded278b17e6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1762,4 +1762,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String searchTagForImportedCompetitorPlaceholder(); String version(String version); String replicables(); + String set(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index f84faa7e7b0..a2d8b3d743d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1733,4 +1733,5 @@ errorLoadingCompetitorImportDescriptors=Error loading competitor import descript couldNotSaveCompetitorRegistrations=Could not save competitor registrations: {0} searchTagForImportedCompetitorPlaceholder=Use, e.g., the race+fleet name version=Version: {0} -replicables=Replicating objects \ No newline at end of file +replicables=Replicating objects +set=Set \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index fcc8802eb16..f129d29bf8e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1719,4 +1719,5 @@ errorLoadingCompetitorImportDescriptors=Fehler beim Laden der zu importierenden couldNotSaveCompetitorRegistrations=Teilnehmerregistrierung konnte nicht gespeichert werden: {0} searchTagForImportedCompetitorPlaceholder=Z.B. Renn- und Gruppenname version=Version: {0} -replicables=Replizierte Objekte \ No newline at end of file +replicables=Replizierte Objekte +set=Setzen \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index bfbe77086cf..d65a7a8c180 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -62,13 +62,16 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.impl.AllEventsOfTypeFinder; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFixedMarkPassingEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; +import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogSuppressedMarkPassingsEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.AbortingFlagFinder; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.LastPublishedCourseDesignFinder; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.MarkPassingDataFinder; +import com.sap.sailing.domain.abstractlog.race.analyzing.impl.TrackingTimesEventFinder; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.TrackingTimesFinder; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogCourseDesignChangedEventImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEndOfTrackingEventImpl; @@ -5037,15 +5040,55 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S public void setTrackingTimes(RaceLogSetTrackingTimesDTO dto) throws NotFoundException { RaceLog raceLog = getRaceLog(dto.leaderboardName, dto.raceColumnName, dto.fleetName); // the tracking start/end time events are not revoked; updates with null as TimePoint may be added instead + final LogEventAuthorImpl author = new LogEventAuthorImpl(dto.authorName, dto.authorPriority); if (!Util.equalsWithNull(dto.newStartOfTracking, dto.currentStartOfTracking)) { - raceLog.add(new RaceLogStartOfTrackingEventImpl( - dto.newStartOfTracking, new LogEventAuthorImpl(dto.authorName, dto.authorPriority), - raceLog.getCurrentPassId())); + if (dto.newStartOfTracking != null) { + raceLog.add(new RaceLogStartOfTrackingEventImpl(dto.newStartOfTracking.getTimePoint(), + author, raceLog.getCurrentPassId())); + } else { + final Pair trackingTimesEvents = new TrackingTimesEventFinder(raceLog).analyze(); + // we assume to find a valid "set start of tracking time" event that matches the old start of tracking time; + // if the time doesn't match dto.currentStartOfTracking, the revocation is rejected with an exception; + // the result of trying to revoke is returned otherwise, and it may not be the result intended in case + // the author's priority was lower than that of the author of the event that is to be revoked. + if (trackingTimesEvents == null || trackingTimesEvents.getA() == null || + !Util.equalsWithNull(trackingTimesEvents.getA().getLogicalTimePoint(), dto.currentStartOfTracking==null?null:dto.currentStartOfTracking.getTimePoint())) { + throw new NotFoundException("Old start of tracking time in the race log ("+ + (trackingTimesEvents==null||trackingTimesEvents.getA()==null?"unset":trackingTimesEvents.getA().getLogicalTimePoint())+ + ") does not match start of tracking time at transaction start ("+dto.currentStartOfTracking==null?null:dto.currentStartOfTracking.getTimePoint()+")"); + } else { + try { + raceLog.revokeEvent(author, trackingTimesEvents.getA(), "resetting tracking start time"); + } catch (NotRevokableException e) { + logger.log(Level.WARNING, "Internal error: event "+trackingTimesEvents.getA()+" was expected to be revokable", e); + } + } + } } if (!Util.equalsWithNull(dto.newEndOfTracking, dto.currentEndOfTracking)) { - raceLog.add(new RaceLogEndOfTrackingEventImpl( - dto.newEndOfTracking, new LogEventAuthorImpl(dto.authorName, dto.authorPriority), - raceLog.getCurrentPassId())); + if (dto.newEndOfTracking != null) { + raceLog.add(new RaceLogEndOfTrackingEventImpl( + dto.newEndOfTracking.getTimePoint(), author, + raceLog.getCurrentPassId())); + } else { + final Pair trackingTimesEvents = new TrackingTimesEventFinder(raceLog).analyze(); + // we assume to find a valid "set start of tracking time" event that matches the old start of tracking time; + // if the time doesn't match dto.currentStartOfTracking, the revocation is rejected with an exception; + // the result of trying to revoke is returned otherwise, and it may not be the result intended in case + // the author's priority was lower than that of the author of the event that is to be revoked. + if (trackingTimesEvents == null || trackingTimesEvents.getB() == null || + !Util.equalsWithNull(trackingTimesEvents.getB().getLogicalTimePoint(), dto.currentEndOfTracking==null?null:dto.currentEndOfTracking.getTimePoint())) { + throw new NotFoundException("Old end of tracking time in the race log ("+ + (trackingTimesEvents==null||trackingTimesEvents.getB()==null?"unset":trackingTimesEvents.getB().getLogicalTimePoint())+ + ") does not match end of tracking time at transaction start ("+dto.currentEndOfTracking==null?null:dto.currentEndOfTracking.getTimePoint()+")"); + } else { + try { + raceLog.revokeEvent(author, trackingTimesEvents.getB(), "resetting tracking end time"); + } catch (NotRevokableException e) { + logger.log(Level.WARNING, "Internal error: event "+trackingTimesEvents.getB()+" was expected to be revokable", e); + } + } + } } } From cfe49757f964ba0c9cf0ef3e1fd19b0dc1ec18bb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 16 Jan 2017 21:59:39 +0100 Subject: [PATCH 151/191] set connector persistence bundles to autostart=true in .product; only this way will restoring races work without launching the AdminConsole Change-Id: I9aaf22ee13d61db6662467b132d5b6d8e2463c8e --- java/com.sap.sailing.feature.p2build/raceanalysis.product | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.feature.p2build/raceanalysis.product b/java/com.sap.sailing.feature.p2build/raceanalysis.product index dc450a1c4f0..af13da65b55 100755 --- a/java/com.sap.sailing.feature.p2build/raceanalysis.product +++ b/java/com.sap.sailing.feature.p2build/raceanalysis.product @@ -42,8 +42,10 @@ - + + + From 0b35e3c2973af9c9ad532b01b1d19928b509d84c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 09:54:32 +0100 Subject: [PATCH 152/191] adjusted release notes for bug 3923 (tracking times revocation) Change-Id: I0a6a0e7dad79805dda2ebeb1b5e56dfaa79a3296 --- java/com.sap.sailing.www/release_notes_admin.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 41a41ff04a1..01cb71e9261 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -32,6 +32,16 @@ as a search term. In the unlikely case of searching for a double quote you can do that by prefixing the double quote with a backslash character, as in \".
      • +
      • When changing the start/end of tracking times in the "Smartphone Tracking" tab, it is now possible + to "unset" one or both of these time stamps. Next to the date/time entry field these is now a + "Set" checkbox. When the date/time field is modified, the box is automatically checked because + it seems reasonable to assume that the user wants this change to be committed. When committing + an empty date/time field with the "Set" checkbox ticked, the null time stamp which + makes this an open tracking interval is committed and will override any inference that may be + made based on the race's start and finish time. When unchecking the "Set" checkbox, the previously + committed timestamp is revoked (regardless of the contents of the date/time field), allowing for + inference to take place if the regatta has been configured for tracking times inference. +

      December 2016

        From 46aa94b9e10481748b959db0f4ff2391553234f4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 11:20:29 +0100 Subject: [PATCH 153/191] upgraded to TracAPI 3.3.1 Change-Id: I81d0546147744a1c90a6dbf38007d513d7dc3428 --- .../META-INF/MANIFEST.MF | 39 +- java/com.tractrac.clientmodule/README.txt | 32 +- .../javadoc/allclasses-frame.html | 6 +- .../javadoc/allclasses-noframe.html | 6 +- .../model/lib/api/AbstractModelTest.html | 777 ------------------ .../tractrac/model/lib/api/IIdentifiable.html | 6 +- .../com/tractrac/model/lib/api/INamed.html | 6 +- .../tractrac/model/lib/api/ModelLocator.html | 6 +- .../model/lib/api/ModelLocatorTest.html | 430 ---------- .../model/lib/api/ReadParameterFileTest.html | 406 --------- .../api/attachment/AbstractAttachable.html | 6 +- .../lib/api/attachment/AttachmentsTest.html | 316 ------- .../model/lib/api/attachment/IAttachable.html | 6 +- .../lib/api/attachment/IAttachmentKey.html | 6 +- .../api/attachment/IAttachmentManager.html | 6 +- .../class-use/AbstractAttachable.html | 115 --- .../attachment/class-use/AttachmentsTest.html | 115 --- .../api/attachment/class-use/IAttachable.html | 371 --------- .../attachment/class-use/IAttachmentKey.html | 209 ----- .../class-use/IAttachmentManager.html | 175 ---- .../lib/api/attachment/package-frame.html | 6 +- .../lib/api/attachment/package-summary.html | 6 +- .../lib/api/attachment/package-tree.html | 6 +- .../model/lib/api/attachment/package-use.html | 266 ------ .../lib/api/class-use/AbstractModelTest.html | 260 ------ .../lib/api/class-use/IIdentifiable.html | 279 ------- .../model/lib/api/class-use/INamed.html | 252 ------ .../model/lib/api/class-use/ModelLocator.html | 115 --- .../lib/api/class-use/ModelLocatorTest.html | 115 --- .../api/class-use/ReadParameterFileTest.html | 115 --- .../model/lib/api/data/IControlPassing.html | 6 +- .../model/lib/api/data/IControlPassings.html | 6 +- .../model/lib/api/data/IMessageData.html | 6 +- .../model/lib/api/data/IPosition.html | 6 +- .../model/lib/api/data/IPositionFactory.html | 6 +- .../model/lib/api/data/IPositionOffset.html | 6 +- .../model/lib/api/data/IPositionSnapped.html | 6 +- .../model/lib/api/data/IStartStopData.html | 6 +- .../model/lib/api/data/ITimeData.html | 6 +- .../api/data/class-use/IControlPassing.html | 161 ---- .../api/data/class-use/IControlPassings.html | 161 ---- .../lib/api/data/class-use/IMessageData.html | 204 ----- .../lib/api/data/class-use/IPosition.html | 312 ------- .../api/data/class-use/IPositionFactory.html | 175 ---- .../api/data/class-use/IPositionOffset.html | 188 ----- .../api/data/class-use/IPositionSnapped.html | 161 ---- .../api/data/class-use/IStartStopData.html | 174 ---- .../lib/api/data/class-use/ITimeData.html | 190 ----- .../model/lib/api/data/package-frame.html | 6 +- .../model/lib/api/data/package-summary.html | 9 +- .../model/lib/api/data/package-tree.html | 6 +- .../model/lib/api/data/package-use.html | 348 -------- .../model/lib/api/event/AbstractJSONTest.html | 291 ------- .../lib/api/event/CreateModelException.html | 6 +- .../model/lib/api/event/EventType.html | 6 +- .../api/event/EventsFromClubsJSONTest.html | 296 ------- .../lib/api/event/EventsFromJSONTest.html | 296 ------- .../model/lib/api/event/ICompetitor.html | 6 +- .../model/lib/api/event/ICompetitorClass.html | 11 +- .../tractrac/model/lib/api/event/IEvent.html | 11 +- .../model/lib/api/event/IEventFactory.html | 26 +- .../tractrac/model/lib/api/event/IRace.html | 23 +- .../model/lib/api/event/IRaceCompetitor.html | 6 +- .../model/lib/api/event/IRaceSerie.html | 11 +- .../tractrac/model/lib/api/event/ITeam.html | 6 +- .../api/event/RaceCompetitorStatusType.html | 6 +- .../lib/api/event/RaceCompetitorTest.html | 302 ------- .../lib/api/event/RaceLoadingException.html | 6 +- .../model/lib/api/event/RaceSerieTest.html | 284 ------- .../model/lib/api/event/RaceStatusType.html | 6 +- .../lib/api/event/RaceVisibilityType.html | 6 +- .../lib/api/event/RacesFromJSONTest.html | 300 ------- .../model/lib/api/event/SameEventTest.html | 294 ------- .../model/lib/api/event/StartTimeType.html | 6 +- .../lib/api/event/StartTimeTypeTest.html | 524 ------------ .../api/event/class-use/AbstractJSONTest.html | 170 ---- .../event/class-use/CreateModelException.html | 206 ----- .../lib/api/event/class-use/EventType.html | 185 ----- .../class-use/EventsFromClubsJSONTest.html | 115 --- .../event/class-use/EventsFromJSONTest.html | 115 --- .../lib/api/event/class-use/ICompetitor.html | 249 ------ .../api/event/class-use/ICompetitorClass.html | 176 ---- .../model/lib/api/event/class-use/IEvent.html | 252 ------ .../api/event/class-use/IEventFactory.html | 175 ---- .../model/lib/api/event/class-use/IRace.html | 335 -------- .../api/event/class-use/IRaceCompetitor.html | 288 ------- .../lib/api/event/class-use/IRaceSerie.html | 176 ---- .../model/lib/api/event/class-use/ITeam.html | 176 ---- .../event/class-use/RaceCompetitorTest.html | 115 --- .../event/class-use/RaceLoadingException.html | 161 ---- .../api/event/class-use/RaceSerieTest.html | 115 --- .../api/event/class-use/RaceStatusType.html | 191 ----- .../event/class-use/RacesFromJSONTest.html | 115 --- .../api/event/class-use/SameEventTest.html | 115 --- .../api/event/class-use/StartTimeType.html | 180 ---- .../event/class-use/StartTimeTypeTest.html | 115 --- .../model/lib/api/event/package-frame.html | 6 +- .../model/lib/api/event/package-summary.html | 15 +- .../model/lib/api/event/package-tree.html | 12 +- .../model/lib/api/event/package-use.html | 381 --------- .../model/lib/api/metadata/IMetadata.html | 6 +- .../lib/api/metadata/IMetadataContainer.html | 6 +- .../lib/api/metadata/IMetadataFactory.html | 6 +- .../api/metadata/IPropertiesContainer.html | 6 +- .../model/lib/api/metadata/MetadataTest.html | 404 --------- .../lib/api/metadata/class-use/IMetadata.html | 166 ---- .../class-use/IMetadataContainer.html | 224 ----- .../metadata/class-use/IMetadataFactory.html | 175 ---- .../class-use/IPropertiesContainer.html | 259 ------ .../api/metadata/class-use/MetadataTest.html | 115 --- .../model/lib/api/metadata/package-frame.html | 6 +- .../lib/api/metadata/package-summary.html | 9 +- .../model/lib/api/metadata/package-tree.html | 6 +- .../model/lib/api/metadata/package-use.html | 236 ------ .../tractrac/model/lib/api/package-frame.html | 6 +- .../model/lib/api/package-summary.html | 6 +- .../tractrac/model/lib/api/package-tree.html | 6 +- .../tractrac/model/lib/api/package-use.html | 211 ----- .../model/lib/api/route/ControlRouteTest.html | 303 ------- .../model/lib/api/route/IControl.html | 6 +- .../model/lib/api/route/IControlPoint.html | 6 +- .../model/lib/api/route/IControlRoute.html | 11 +- .../model/lib/api/route/IPathRoute.html | 6 +- .../lib/api/route/IPathRouteFactory.html | 6 +- .../model/lib/api/route/IPathSegment.html | 8 +- .../tractrac/model/lib/api/route/IRoute.html | 6 +- .../model/lib/api/route/ISegment.html | 6 +- .../model/lib/api/route/ReadRouteTest.html | 284 ------- .../lib/api/route/ReadTextPathRouteTests.html | 282 ------- .../api/route/class-use/ControlRouteTest.html | 115 --- .../lib/api/route/class-use/IControl.html | 299 ------- .../api/route/class-use/IControlPoint.html | 161 ---- .../api/route/class-use/IControlRoute.html | 161 ---- .../lib/api/route/class-use/IPathRoute.html | 160 ---- .../route/class-use/IPathRouteFactory.html | 175 ---- .../lib/api/route/class-use/IPathSegment.html | 161 ---- .../model/lib/api/route/class-use/IRoute.html | 254 ------ .../lib/api/route/class-use/ISegment.html | 160 ---- .../api/route/class-use/ReadRouteTest.html | 115 --- .../class-use/ReadTextPathRouteTests.html | 115 --- .../model/lib/api/route/package-frame.html | 6 +- .../model/lib/api/route/package-summary.html | 12 +- .../model/lib/api/route/package-tree.html | 6 +- .../model/lib/api/route/package-use.html | 319 ------- .../model/lib/api/spatial/ICoordinate.html | 6 +- .../lib/api/spatial/ICoordinateSequence.html | 13 +- .../model/lib/api/spatial/IGeoCoordinate.html | 6 +- .../api/spatial/class-use/ICoordinate.html | 264 ------ .../class-use/ICoordinateSequence.html | 160 ---- .../api/spatial/class-use/IGeoCoordinate.html | 168 ---- .../model/lib/api/spatial/package-frame.html | 6 +- .../lib/api/spatial/package-summary.html | 12 +- .../model/lib/api/spatial/package-tree.html | 6 +- .../model/lib/api/spatial/package-use.html | 216 ----- .../lib/api/AbstractSubscriptionTest.html | 343 -------- .../lib/api/IEventSubscriber.html | 15 +- .../lib/api/ILocalDataServerFactory.html | 232 ------ .../lib/api/ILocalDataserver.html | 635 -------------- .../subscription/lib/api/IRaceSubscriber.html | 6 +- .../subscription/lib/api/ISubscriber.html | 12 +- .../lib/api/ISubscriberFactory.html | 18 +- .../lib/api/ISubscriberListener.html | 6 +- .../subscription/lib/api/ReadHDRaceTest.html | 309 ------- .../SubscriberInitializationException.html | 6 +- .../lib/api/SubscriptionLocator.html | 6 +- .../lib/api/SubscriptionLocatorTest.html | 302 ------- .../lib/api/SubscriptionTestLocator.html | 282 ------- .../class-use/AbstractSubscriptionTest.html | 232 ------ .../lib/api/class-use/IEventSubscriber.html | 170 ---- .../class-use/ILocalDataServerFactory.html | 160 ---- .../lib/api/class-use/ILocalDataserver.html | 178 ---- .../lib/api/class-use/IRaceSubscriber.html | 188 ----- .../lib/api/class-use/ISubscriber.html | 168 ---- .../lib/api/class-use/ISubscriberFactory.html | 175 ---- .../api/class-use/ISubscriberListener.html | 341 -------- .../lib/api/class-use/ReadHDRaceTest.html | 115 --- .../SubscriberInitializationException.html | 204 ----- .../api/class-use/SubscriptionLocator.html | 115 --- .../class-use/SubscriptionLocatorTest.html | 115 --- .../class-use/SubscriptionTestLocator.html | 115 --- .../api/competitor/CompetitorsEventTest.html | 367 --------- .../api/competitor/ICompetitorsListener.html | 6 +- .../lib/api/competitor/IPositionListener.html | 6 +- .../competitor/IPositionOffsetListener.html | 6 +- .../competitor/IPositionSnappedListener.html | 6 +- .../lib/api/competitor/PositionEventTest.html | 340 -------- .../ReconnectAddingEntriesTest.html | 311 ------- .../class-use/CompetitorsEventTest.html | 115 --- .../class-use/ICompetitorsListener.html | 168 ---- .../class-use/IPositionListener.html | 174 ---- .../class-use/IPositionOffsetListener.html | 175 ---- .../class-use/IPositionSnappedListener.html | 175 ---- .../class-use/PositionEventTest.html | 115 --- .../class-use/ReconnectAddingEntriesTest.html | 115 --- .../lib/api/competitor/package-frame.html | 6 +- .../lib/api/competitor/package-summary.html | 9 +- .../lib/api/competitor/package-tree.html | 6 +- .../lib/api/competitor/package-use.html | 172 ---- .../lib/api/control/ControlsEventTest.html | 367 --------- .../api/control/IControlPassingsListener.html | 6 +- .../IControlPointPositionListener.html | 6 +- .../control/IControlRouteChangeListener.html | 6 +- .../lib/api/control/IControlsListener.html | 6 +- .../control/ReconnectAddingControlsTest.html | 311 ------- .../ReconnectWithStaticControlsTest.html | 311 ------- .../control/StaticControlInSecondRace.html | 313 ------- .../lib/api/control/StaticControlTest.html | 329 -------- .../api/control/StaticRoutesChangesTest.html | 325 -------- .../control/class-use/ControlsEventTest.html | 115 --- .../class-use/IControlPassingsListener.html | 166 ---- .../IControlPointPositionListener.html | 175 ---- .../IControlRouteChangeListener.html | 166 ---- .../control/class-use/IControlsListener.html | 168 ---- .../ReconnectAddingControlsTest.html | 115 --- .../ReconnectWithStaticControlsTest.html | 115 --- .../class-use/StaticControlInSecondRace.html | 115 --- .../control/class-use/StaticControlTest.html | 115 --- .../class-use/StaticRoutesChangesTest.html | 115 --- .../lib/api/control/package-frame.html | 6 +- .../lib/api/control/package-summary.html | 9 +- .../lib/api/control/package-tree.html | 6 +- .../lib/api/control/package-use.html | 171 ---- .../api/event/IConnectionStatusListener.html | 6 +- .../lib/api/event/IEventMessageListener.html | 6 +- .../api/event/ILiveDataEvent.StatusType.html | 6 +- .../lib/api/event/ILiveDataEvent.html | 6 +- .../subscription/lib/api/event/IMessage.html | 6 +- .../lib/api/event/IServerTimeListener.html | 6 +- .../lib/api/event/IStoredDataEvent.Type.html | 6 +- .../lib/api/event/IStoredDataEvent.html | 6 +- .../class-use/IConnectionStatusListener.html | 166 ---- .../class-use/IEventMessageListener.html | 166 ---- .../class-use/ILiveDataEvent.StatusType.html | 173 ---- .../api/event/class-use/ILiveDataEvent.html | 160 ---- .../lib/api/event/class-use/IMessage.html | 115 --- .../event/class-use/IServerTimeListener.html | 166 ---- .../class-use/IStoredDataEvent.Type.html | 173 ---- .../api/event/class-use/IStoredDataEvent.html | 160 ---- .../lib/api/event/package-frame.html | 6 +- .../lib/api/event/package-summary.html | 21 +- .../lib/api/event/package-tree.html | 6 +- .../lib/api/event/package-use.html | 208 ----- .../subscription/lib/api/package-frame.html | 6 +- .../subscription/lib/api/package-summary.html | 6 +- .../subscription/lib/api/package-tree.html | 6 +- .../subscription/lib/api/package-use.html | 304 ------- .../lib/api/race/IRaceCompetitorListener.html | 6 +- .../lib/api/race/IRaceMessageListener.html | 6 +- .../IRaceStartStopTimesChangeListener.html | 6 +- .../lib/api/race/IRacesListener.html | 6 +- .../race/IStartStopTimesChangeListener.html | 6 +- .../lib/api/race/RaceCompetitorTest.html | 330 -------- .../lib/api/race/RacesEventTest.html | 407 --------- .../lib/api/race/RacesListener.html | 441 ---------- .../StaticRaceStartStopTimesChangeTest.html | 325 -------- .../class-use/IRaceCompetitorListener.html | 166 ---- .../race/class-use/IRaceMessageListener.html | 166 ---- .../IRaceStartStopTimesChangeListener.html | 166 ---- .../api/race/class-use/IRacesListener.html | 168 ---- .../IStartStopTimesChangeListener.html | 166 ---- .../race/class-use/RaceCompetitorTest.html | 115 --- .../api/race/class-use/RacesEventTest.html | 115 --- .../lib/api/race/class-use/RacesListener.html | 115 --- .../StaticRaceStartStopTimesChangeTest.html | 115 --- .../lib/api/race/package-frame.html | 6 +- .../lib/api/race/package-summary.html | 16 +- .../lib/api/race/package-tree.html | 6 +- .../lib/api/race/package-use.html | 179 ---- .../lib/api/route/IRoutesListener.html | 6 +- .../api/route/class-use/IRoutesListener.html | 168 ---- .../lib/api/route/package-frame.html | 6 +- .../lib/api/route/package-summary.html | 6 +- .../lib/api/route/package-tree.html | 6 +- .../lib/api/route/package-use.html | 154 ---- .../javadoc/constant-values.html | 6 +- .../javadoc/deprecated-list.html | 6 +- .../javadoc/help-doc.html | 6 +- .../javadoc/index-files/index-1.html | 6 +- .../javadoc/index-files/index-10.html | 13 +- .../javadoc/index-files/index-11.html | 6 +- .../javadoc/index-files/index-12.html | 6 +- .../javadoc/index-files/index-13.html | 6 +- .../javadoc/index-files/index-14.html | 9 +- .../javadoc/index-files/index-15.html | 12 +- .../javadoc/index-files/index-16.html | 6 +- .../javadoc/index-files/index-17.html | 15 +- .../javadoc/index-files/index-18.html | 6 +- .../javadoc/index-files/index-2.html | 6 +- .../javadoc/index-files/index-3.html | 45 +- .../javadoc/index-files/index-4.html | 10 +- .../javadoc/index-files/index-5.html | 9 +- .../javadoc/index-files/index-6.html | 6 +- .../javadoc/index-files/index-7.html | 43 +- .../javadoc/index-files/index-8.html | 6 +- .../javadoc/index-files/index-9.html | 33 +- .../javadoc/index.html | 4 +- .../javadoc/overview-frame.html | 6 +- .../javadoc/overview-summary.html | 33 +- .../javadoc/overview-tree.html | 14 +- .../javadoc/resources/background.gif | Bin 2313 -> 0 bytes .../javadoc/resources/tab.gif | Bin 291 -> 0 bytes .../javadoc/resources/titlebar.gif | Bin 10701 -> 0 bytes .../javadoc/resources/titlebar_end.gif | Bin 849 -> 0 bytes .../javadoc/serialized-form.html | 6 +- .../lib/TracAPI-src.jar | Bin 64088 -> 64131 bytes .../com.tractrac.clientmodule/lib/TracAPI.jar | Bin 798359 -> 798979 bytes java/com.tractrac.clientmodule/pom.xml | 2 +- 307 files changed, 615 insertions(+), 34565 deletions(-) delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocatorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ReadParameterFileTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AttachmentsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AbstractAttachable.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AttachmentsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachable.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentKey.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentManager.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/AbstractModelTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/IIdentifiable.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/INamed.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocator.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocatorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ReadParameterFileTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassing.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassings.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IMessageData.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPosition.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionOffset.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionSnapped.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IStartStopData.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/ITimeData.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/AbstractJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromClubsJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceSerieTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RacesFromJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/SameEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeTypeTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/AbstractJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/CreateModelException.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventType.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromClubsJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitor.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitorClass.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEvent.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEventFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRace.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceCompetitor.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceSerie.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ITeam.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceCompetitorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceLoadingException.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceSerieTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceStatusType.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/MetadataTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadata.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataContainer.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IPropertiesContainer.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/MetadataTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadRouteTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadTextPathRouteTests.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ControlRouteTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControl.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlPoint.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlRoute.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRoute.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRouteFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathSegment.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IRoute.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ISegment.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadRouteTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadTextPathRouteTests.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataServerFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataserver.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ReadHDRaceTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocatorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionTestLocator.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/AbstractSubscriptionTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IEventSubscriber.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataServerFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataserver.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IRaceSubscriber.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriber.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberFactory.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ReadHDRaceTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriberInitializationException.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocator.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocatorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionTestLocator.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/CompetitorsEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/PositionEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ReconnectAddingEntriesTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/CompetitorsEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ICompetitorsListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionOffsetListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionSnappedListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/PositionEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ReconnectAddingEntriesTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ControlsEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectAddingControlsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectWithStaticControlsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlInSecondRace.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticRoutesChangesTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ControlsEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPassingsListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPointPositionListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlRouteChangeListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlsListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectAddingControlsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectWithStaticControlsTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlInSecondRace.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticRoutesChangesTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IConnectionStatusListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IEventMessageListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.StatusType.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IMessage.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IServerTimeListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.Type.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RaceCompetitorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/StaticRaceStartStopTimesChangeTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceCompetitorListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceMessageListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceStartStopTimesChangeListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRacesListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IStartStopTimesChangeListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RaceCompetitorTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesEventTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/StaticRaceStartStopTimesChangeTest.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/class-use/IRoutesListener.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-use.html delete mode 100644 java/com.tractrac.clientmodule/javadoc/resources/background.gif delete mode 100644 java/com.tractrac.clientmodule/javadoc/resources/tab.gif delete mode 100644 java/com.tractrac.clientmodule/javadoc/resources/titlebar.gif delete mode 100644 java/com.tractrac.clientmodule/javadoc/resources/titlebar_end.gif diff --git a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF index 73b357e4426..7a44b192f75 100644 --- a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF +++ b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: TracTrac Client module Bundle-SymbolicName: com.tractrac.clientmodule -Bundle-Version: 3.2.1 +Bundle-Version: 3.3.1 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: ., lib/TracAPI.jar @@ -23,17 +23,24 @@ Export-Package: com.tractrac.asio.lib.api, com.tractrac.dataflow.lib.api.live, com.tractrac.dataflow.lib.api.live.server, com.tractrac.dataflow.lib.api.protocol, + com.tractrac.dataflow.lib.api.statistics, com.tractrac.dataflow.lib.api.stored, com.tractrac.dataflow.lib.api.ws, + com.tractrac.dataflow.lib.impl, + com.tractrac.dataflow.lib.impl.statistics, com.tractrac.dataflow.lib.prov.live.ascii, com.tractrac.dataflow.lib.prov.live.provider, com.tractrac.dataflow.lib.prov.live.server, com.tractrac.dataflow.lib.prov.live.tcp, com.tractrac.dataflow.lib.prov.live.tcp.provider, com.tractrac.dataflow.lib.prov.live.tcp.server, - com.tractrac.dataflow.lib.prov.stored, com.tractrac.dataflow.lib.prov.stored.jdbc, + com.tractrac.dataflow.lib.prov.stored.mtb, + com.tractrac.dataflow.lib.prov.stored.mtb.stream, + com.tractrac.dataflow.lib.prov.stored.mtb.writer, com.tractrac.dataflow.lib.prov.stored.tcp, + com.tractrac.dataflow.lib.prov.stored.tcp.get, + com.tractrac.dataflow.lib.prov.stored.tcp.put, com.tractrac.dataflow.lib.spi, com.tractrac.dataflow.lib.spi.authentication, com.tractrac.model.lib.api, @@ -43,6 +50,14 @@ Export-Package: com.tractrac.asio.lib.api, com.tractrac.model.lib.api.metadata, com.tractrac.model.lib.api.route, com.tractrac.model.lib.api.spatial, + com.tractrac.model.lib.impl, + com.tractrac.model.lib.impl.attachment, + com.tractrac.model.lib.impl.data, + com.tractrac.model.lib.impl.event, + com.tractrac.model.lib.impl.event.json, + com.tractrac.model.lib.impl.metadata, + com.tractrac.model.lib.impl.route, + com.tractrac.model.lib.impl.spatial, com.tractrac.osgi, com.tractrac.subscription.app.tracapi, com.tractrac.subscription.lib.api, @@ -51,6 +66,16 @@ Export-Package: com.tractrac.asio.lib.api, com.tractrac.subscription.lib.api.event, com.tractrac.subscription.lib.api.race, com.tractrac.subscription.lib.api.route, + com.tractrac.subscription.lib.impl, + com.tractrac.subscription.lib.impl.competitor, + com.tractrac.subscription.lib.impl.control, + com.tractrac.subscription.lib.impl.event, + com.tractrac.subscription.lib.impl.gms, + com.tractrac.subscription.lib.impl.io, + com.tractrac.subscription.lib.impl.io.controllers, + com.tractrac.subscription.lib.impl.io.receivers, + com.tractrac.subscription.lib.impl.race, + com.tractrac.subscription.lib.impl.route, com.tractrac.util.lib.api, com.tractrac.util.lib.api.autolog, com.tractrac.util.lib.api.classloader, @@ -63,7 +88,15 @@ Export-Package: com.tractrac.asio.lib.api, com.tractrac.util.lib.api.programparameters, com.tractrac.util.lib.api.search, com.tractrac.util.lib.api.selector, - com.tractrac.util.lib.api.serialize + com.tractrac.util.lib.api.serialize, + com.tractrac.util.lib.impl.autolog, + com.tractrac.util.lib.impl.autolog.file, + com.tractrac.util.lib.impl.autolog.log4j, + com.tractrac.util.lib.impl.autolog.multiple, + com.tractrac.util.lib.impl.autolog.println, + com.tractrac.util.lib.impl.classloader, + com.tractrac.util.lib.impl.http, + com.tractrac.util.lib.impl.programparameters Bundle-ActivationPolicy: lazy Bundle-Vendor: TracTrac Import-Package: org.osgi.framework diff --git a/java/com.tractrac.clientmodule/README.txt b/java/com.tractrac.clientmodule/README.txt index 5c4dec1f1d2..2a8e2e3e233 100755 --- a/java/com.tractrac.clientmodule/README.txt +++ b/java/com.tractrac.clientmodule/README.txt @@ -16,6 +16,32 @@ It contains also some files: - test.sh -> script that compiles the code in the src folder, creates the test.jar library and execute the code of the example. - Manifest.txt -> manifest used to create the test.jar file +******************************************** +************* TracAPI 3.3.1 **************** +******************************************** +This is a final version. It fixes bugs in the implementation and it adds some new features. +These features add methods to the API, but they keep the backward compatibility. +This version provides a new JavaDoc version. + +Release date: 17/01/2017 +Build number: 13262 + +1) Features + + - When a race is in live, the library starts to download stored data from the time when the library connects + allowing to the user show data as fast as the first data stream arrives. Then, the library starts to download + the rest of the old data. (Requested by Jakob Odum, 25/09/2016) + - Adding the method IEventFactory.deleteCache that removes all the previous cached objects (Requested by Andre + Borud, 14/12/2016) + - Changing the synchronization of the UtilLocator.createParamerSet method. It was synchronized at method level + but it is only necessary to synchronize the initialization of the factory and not the usage (Requested by Axel Uhl, + 17/01/2017) + +2) Bugs + + - The ICompetitorClass implementation can contain duplicate entries of different implementations. (Reported by + Juan Salvador Pérez, 16/01/2017) + ******************************************** ************* TracAPI 3.3.0 **************** ******************************************** @@ -23,12 +49,12 @@ This is a final version. It fixes bugs in the implementation and it adds some ne These features add methods to the API breaking the backward compatibility. These changes are: Release date: 21/09/2016 -Build number: 12933 +Build number: 12935 1) Features - - Adding the method IRaceCompetitor.updateRaceCompetitor that is thrown when a race - competitor is updated + - Adding the method IRaceCompetitorListener.updateRaceCompetitor that is thrown when a race + competitor is updated (Requested by Jerome Soussens, 21/09/2016) ******************************************** ************* TracAPI 3.2.2 **************** diff --git a/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html b/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html index d853c5570f3..8df91bfc193 100755 --- a/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/allclasses-frame.html @@ -1,10 +1,10 @@ - + - + All Classes - + diff --git a/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html b/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html index 66a43074021..5141cbb0cce 100755 --- a/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html +++ b/java/com.tractrac.clientmodule/javadoc/allclasses-noframe.html @@ -1,10 +1,10 @@ - + - + All Classes - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html deleted file mode 100644 index df065359a98..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/AbstractModelTest.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - - -AbstractModelTest - - - - - - - - - - - -
        -
        com.tractrac.model.lib.api
        -

        Class AbstractModelTest

        -
        -
        -
          -
        • java.lang.Object
        • -
        • -
            -
          • junit.framework.Assert
          • -
          • -
              -
            • junit.framework.TestCase
            • -
            • -
                -
              • com.tractrac.model.lib.api.AbstractModelTest
              • -
              -
            • -
            -
          • -
          -
        • -
        -
        -
          -
        • -
          -
          All Implemented Interfaces:
          -
          junit.framework.Test
          -
          -
          -
          Direct Known Subclasses:
          -
          AbstractSubscriptionTest
          -
          -
          -
          -
          public abstract class AbstractModelTest
          -extends junit.framework.TestCase
          -

          - Abstract class that can be inherited for the test classes. It has utility - methods to create mock objects that are used by the test classes in order to - create a model of objects for testing -

          -
          Author:
          -
          Jorge Piera Llodrá
          -
          See Also:
          Mock Object
          -
        • -
        -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Summary

            - - - - - - - - -
            Constructors 
            Constructor and Description
            AbstractModelTest() 
            -
          • -
          - - -
        • -
        -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Detail

            - - - -
              -
            • -

              AbstractModelTest

              -
              public AbstractModelTest()
              -
            • -
            -
          • -
          - -
            -
          • - - -

            Method Detail

            - - - -
              -
            • -

              createEvent

              -
              public IEvent createEvent(java.lang.String name)
              -
              Creates an event from a name. This event contains an empty list of races - and an empty list of controls
              -
              Parameters:
              name - the name of the event
              -
              Returns:
              an event
              -
            • -
            - - - -
              -
            • -

              createEvent

              -
              public IEvent createEvent(java.lang.String name,
              -                 java.util.UUID uuid)
              -
              Creates an event from a name. This event contains an empty list of races - and an empty list of controls.
              -
              Parameters:
              name - the name of the event
              uuid - the uuid of the event
              -
              Returns:
              an event
              -
            • -
            - - - -
              -
            • -

              addAttachment

              -
              public void addAttachment(IAttachable attachable,
              -                 IAttachmentKey attachmentKey,
              -                 java.lang.Object object)
              -
              Add an attachment to an attachable object
              -
              Parameters:
              attachable - the attachable object
              attachmentKey - the attachment key
              object - the object to attach
              -
            • -
            - - - -
              -
            • -

              addRacetoEvent

              -
              public IRace addRacetoEvent(IEvent event,
              -                   java.lang.String name)
              -
              Adds a race to an event. The race will contains an empty list of - competitors.
              -
              Parameters:
              event - the event
              name - the name of the race
              -
              Returns:
              the created race
              -
            • -
            - - - -
              -
            • -

              addRacetoEvent

              -
              public IRace addRacetoEvent(IEvent event,
              -                   java.lang.String name,
              -                   java.util.UUID raceId)
              -
              Adds a race to an event. The race will contains an empty list of - competitors.
              -
              Parameters:
              event - the event
              name - the name of the race
              UUID - the uuid of the race
              -
              Returns:
              the created race
              -
            • -
            - - - -
              -
            • -

              addRacetoEvent

              -
              public IRace addRacetoEvent(IEvent event,
              -                   java.lang.String name,
              -                   java.util.UUID raceId,
              -                   long trackingStartTime,
              -                   long trackingEndTime,
              -                   long raceStartTime)
              -
              Adds a race to an event. The race will contains an empty list of - competitors.
              -
              Parameters:
              event - the event
              name - the name of the race
              UUID - the uuid of the race
              trackingStartTime - the tracking start time
              trackingEndTime - the tracking end time
              raceStartTime - the race start time
              -
              Returns:
              the created race
              -
            • -
            - - - -
              -
            • -

              addCompetitorToRace

              -
              public IRaceCompetitor addCompetitorToRace(IRace race,
              -                                  ICompetitor competitor)
              -
              Add a competitor to a race. The competitor will be attached to the first - route
              -
              Parameters:
              race - the race
              competitor - the competitor to add
              -
              Returns:
              a race competitor
              -
            • -
            - - - -
              -
            • -

              addCompetitorToEvent

              -
              public ICompetitor addCompetitorToEvent(IEvent event,
              -                               java.lang.String competitorName)
              -
              Add the competitor the the event
              -
              Parameters:
              event - the event
              competitorName - the competitor name
              -
              Returns:
              the competitor
              -
            • -
            - - - -
              -
            • -

              addCompetitorToEvent

              -
              public ICompetitor addCompetitorToEvent(IEvent event,
              -                               java.lang.String competitorName,
              -                               java.util.UUID competitorId)
              -
              Add the competitor the the event
              -
              Parameters:
              event - the event
              competitorName - the competitor name
              competitorId - the competitor id
              -
              Returns:
              the competitor
              -
            • -
            - - - -
              -
            • -

              createCompetitor

              -
              public ICompetitor createCompetitor(java.lang.String competitorName)
              -
              Create a competitor
              -
              Parameters:
              name - the competitor name
              -
              Returns:
              the competitor
              -
            • -
            - - - -
              -
            • -

              createCompetitor

              -
              public ICompetitor createCompetitor(java.util.UUID uuid,
              -                           java.lang.String competitorName)
              -
              Create a competitor
              -
              Parameters:
              uuid - the identifier
              name - the competitor name
              -
              Returns:
              the competitor
              -
            • -
            - - - -
              -
            • -

              addRaceCompetitorToRace

              -
              public IRaceCompetitor addRaceCompetitorToRace(IRace race,
              -                                      java.lang.String name)
              -
              Adds a competitor to a race
              -
              Parameters:
              race - the race
              name - the name of the competitor
              -
              Returns:
              the created competitor
              -
            • -
            - - - -
              -
            • -

              addControlToEvent

              -
              public IControl addControlToEvent(IEvent event,
              -                         java.lang.String name)
              -
              Adds a control to an event
              -
              Parameters:
              event - the event
              name - the name of the control
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              addControlPointToControl

              -
              public IControlPoint addControlPointToControl(IControl control,
              -                                     double lat,
              -                                     double lon,
              -                                     long timestamp)
              -
              Adds a controlpoint to a control
              -
              Parameters:
              lat - the latitude value of the control point
              lon - the longitude value of the control point
              timestamp - the timestamp of the control point
              -
              Returns:
              the created control point
              -
            • -
            - - - -
              -
            • -

              addControlToEvent

              -
              public IControl addControlToEvent(IEvent event,
              -                         java.lang.String name,
              -                         double lat,
              -                         double lon,
              -                         long timestamp)
              -
              Adds a control to an event with one control point
              -
              Parameters:
              event - the event
              name - the name of the control
              lat - the latitude value of the first control point
              lon - the longitude value of the first control point
              timestamp - the timestamp of the first control point
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              addControlToEvent

              -
              public IControl addControlToEvent(IEvent event,
              -                         java.lang.String name,
              -                         double lat1,
              -                         double lon1,
              -                         long timestamp1,
              -                         double lat2,
              -                         double lon2,
              -                         long timestamp2)
              -
              Adds a control to an event with two control points
              -
              Parameters:
              event - the event
              name - the name of the control
              lat1 - the latitude value of the first control point
              lon1 - the longitude value of the first control point
              timestamp1 - the timestamp of the second first point
              lat2 - the latitude value of the second control point
              lon2 - the longitude value of the second control point
              timestamp2 - the timestamp of the first second point
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              createControl

              -
              public IControl createControl(java.lang.String name)
              -
              Create a control
              -
              Parameters:
              name - the name of the control
              -
              Returns:
              the control
              -
            • -
            - - - -
              -
            • -

              createControlPoint

              -
              public IControlPoint createControlPoint(double lat,
              -                               double lon,
              -                               long timestamp)
              -
              Create a control point
              -
              Parameters:
              lat - the latitude value of the control point
              lon - the longitude value of the control point
              timestamp - the timestamp of the control point
              -
              Returns:
              the control point
              -
            • -
            - - - -
              -
            • -

              addControlToRace

              -
              public IControl addControlToRace(IRace race,
              -                        java.lang.String name)
              -
              Adds a control to the race. This method also adds the control in the event
              -
              Parameters:
              race - the race
              name - the name of the control
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              addControlToRace

              -
              public IControl addControlToRace(IRace race,
              -                        IControl control)
              -
              Adds a control to the race.
              -
              Parameters:
              race - the race
              control - the control
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              addControlToRace

              -
              public IControl addControlToRace(IRace race,
              -                        java.lang.String name,
              -                        double lat,
              -                        double lon,
              -                        long timestamp)
              -
              Adds a control to the race. This method also adds the control in the event
              -
              Parameters:
              race - the race
              name - the name of the control
              lat - the latitude value of the control
              lon - the longitude value of the control
              timestamp - the timestamp of the control
              -
              Returns:
              the created control
              -
            • -
            - - - -
              -
            • -

              addControlRouteToRace

              -
              public IControlRoute addControlRouteToRace(IRace race)
              -
              Add a route to the race
              -
              Parameters:
              race - the race
              -
              Returns:
              the control route
              -
            • -
            - - - -
              -
            • -

              addControlRouteToRace

              -
              public IControlRoute addControlRouteToRace(IRace race,
              -                                  java.lang.String metadata)
              -
              Add a route to the race
              -
              Parameters:
              race - the race
              metadata - the metadata
              -
              Returns:
              the control route
              -
            • -
            -
          • -
          -
        • -
        -
        -
        - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html index 36ddf6a5ed1..9492d492d83 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/IIdentifiable.html @@ -1,10 +1,10 @@ - + - + IIdentifiable - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/INamed.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/INamed.html index b832cfd6702..6468c81199e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/INamed.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/INamed.html @@ -1,10 +1,10 @@ - + - + INamed - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocator.html index a60a6373f19..ae65c92b7f7 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocator.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocator.html @@ -1,10 +1,10 @@ - + - + ModelLocator - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocatorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocatorTest.html deleted file mode 100644 index 64410d4670a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ModelLocatorTest.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - -ModelLocatorTest - - - - - - - - - - - -
        -
        com.tractrac.model.lib.api
        -

        Class ModelLocatorTest

        -
        -
        -
          -
        • java.lang.Object
        • -
        • -
            -
          • junit.framework.Assert
          • -
          • -
              -
            • junit.framework.TestCase
            • -
            • -
                -
              • com.tractrac.model.lib.api.ModelLocatorTest
              • -
              -
            • -
            -
          • -
          -
        • -
        -
        -
          -
        • -
          -
          All Implemented Interfaces:
          -
          junit.framework.Test
          -
          -
          -
          -
          public abstract class ModelLocatorTest
          -extends junit.framework.TestCase
          -

          - This test checks if an implementation of the model library implements all the - mandatory objects -

          -
          Author:
          -
          Jorge Piera Llodrá
          -
        • -
        -
        -
        - -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Detail

            - - - -
              -
            • -

              ModelLocatorTest

              -
              public ModelLocatorTest()
              -
            • -
            -
          • -
          - -
            -
          • - - -

            Method Detail

            - - - -
              -
            • -

              testRegisteredEventFactory

              -
              public void testRegisteredEventFactory()
              -
              Test if there is a IEventFactory registered.
              -
            • -
            - - - -
              -
            • -

              testEventFactorySingleton

              -
              public void testEventFactorySingleton()
              -
              Test if the IEventFactory is a singleton
              -
            • -
            - - - -
              -
            • -

              testRegisteredPathRouteFactory

              -
              public void testRegisteredPathRouteFactory()
              -
              Test if there is a IPathRouteFactory registered.
              -
            • -
            - - - -
              -
            • -

              testPathRouteFactorySingleton

              -
              public void testPathRouteFactorySingleton()
              -
              Test if the IPathRouteFactory is a singleton
              -
            • -
            - - - -
              -
            • -

              testRegisteredAttachmentManager

              -
              public void testRegisteredAttachmentManager()
              -
              Test if there is a IAttachmentManager registered.
              -
            • -
            - - - -
              -
            • -

              testAttachmentManagerSingleton

              -
              public void testAttachmentManagerSingleton()
              -
              Test if the IAttachmentManager is a singleton
              -
            • -
            - - - -
              -
            • -

              testRegisteredPositionFactory

              -
              public void testRegisteredPositionFactory()
              -
              Test if there is a IPositionFactory registered.
              -
            • -
            - - - -
              -
            • -

              testPositionFactorySingleton

              -
              public void testPositionFactorySingleton()
              -
              Test if the IPositionFactory is a singleton
              -
            • -
            - - - -
              -
            • -

              testRegisteredMetadataFactory

              -
              public void testRegisteredMetadataFactory()
              -
              Test if there is a IMetadataFactory registered.
              -
            • -
            - - - -
              -
            • -

              testMetadataFactorySingleton

              -
              public void testMetadataFactorySingleton()
              -
              Test if the IPositionFactory is a singleton
              -
            • -
            -
          • -
          -
        • -
        -
        -
        - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ReadParameterFileTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ReadParameterFileTest.html deleted file mode 100644 index 6b608620f20..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/ReadParameterFileTest.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - - -ReadParameterFileTest - - - - - - - - - - - -
        -
        com.tractrac.model.lib.api
        -

        Class ReadParameterFileTest

        -
        -
        -
          -
        • java.lang.Object
        • -
        • -
            -
          • com.tractrac.model.lib.api.ReadParameterFileTest
          • -
          -
        • -
        -
        -
          -
        • -
          -
          -
          public abstract class ReadParameterFileTest
          -extends java.lang.Object
          -
          Class that tests reading in a Text parameter file and setting up an event
          -
          Author:
          -
          Jesper Grooss
          -
        • -
        -
        -
        - -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Detail

            - - - -
              -
            • -

              ReadParameterFileTest

              -
              public ReadParameterFileTest()
              -
            • -
            -
          • -
          - - -
        • -
        -
        -
        - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AbstractAttachable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AbstractAttachable.html index 0960b5a3182..38aad0e3192 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AbstractAttachable.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AbstractAttachable.html @@ -1,10 +1,10 @@ - + - + AbstractAttachable - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AttachmentsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AttachmentsTest.html deleted file mode 100644 index b90a81c2860..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/AttachmentsTest.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - -AttachmentsTest - - - - - - - - - - - -
        -
        com.tractrac.model.lib.api.attachment
        -

        Class AttachmentsTest

        -
        -
        -
          -
        • java.lang.Object
        • -
        • -
            -
          • junit.framework.Assert
          • -
          • -
              -
            • junit.framework.TestCase
            • -
            • -
                -
              • com.tractrac.model.lib.api.attachment.AttachmentsTest
              • -
              -
            • -
            -
          • -
          -
        • -
        -
        -
          -
        • -
          -
          All Implemented Interfaces:
          -
          junit.framework.Test
          -
          -
          -
          -
          public abstract class AttachmentsTest
          -extends junit.framework.TestCase
          -

          - This test checks the attachments. -

          -
          Author:
          -
          Jorge Piera Llodrá
          -
        • -
        -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Summary

            - - - - - - - - -
            Constructors 
            Constructor and Description
            AttachmentsTest() 
            -
          • -
          - -
            -
          • - - -

            Method Summary

            - - - - - - - - - - - - - - - - - - -
            Methods 
            Modifier and TypeMethod and Description
            voidsetUp() 
            voidtestCreateAttachment() 
            voidtestCreateSeveralAttachments() 
            -
              -
            • - - -

              Methods inherited from class junit.framework.TestCase

              -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
            • -
            -
              -
            • - - -

              Methods inherited from class java.lang.Object

              -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
            • -
            -
          • -
          -
        • -
        -
        -
        -
          -
        • - -
            -
          • - - -

            Constructor Detail

            - - - -
              -
            • -

              AttachmentsTest

              -
              public AttachmentsTest()
              -
            • -
            -
          • -
          - -
            -
          • - - -

            Method Detail

            - - - -
              -
            • -

              setUp

              -
              public void setUp()
              -           throws java.net.URISyntaxException,
              -                  CreateModelException
              -
              -
              Overrides:
              -
              setUp in class junit.framework.TestCase
              -
              Throws:
              -
              java.net.URISyntaxException
              -
              CreateModelException
              -
            • -
            - - - -
              -
            • -

              testCreateAttachment

              -
              public void testCreateAttachment()
              -
            • -
            - - - -
              -
            • -

              testCreateSeveralAttachments

              -
              public void testCreateSeveralAttachments()
              -
            • -
            -
          • -
          -
        • -
        -
        -
        - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachable.html index c31d903f4a5..1ec28d7b4b4 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachable.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachable.html @@ -1,10 +1,10 @@ - + - + IAttachable - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentKey.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentKey.html index 856b46f2907..8ad21a3ab94 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentKey.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentKey.html @@ -1,10 +1,10 @@ - + - + IAttachmentKey - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentManager.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentManager.html index d9e8c1923c7..316b10ffab0 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentManager.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/IAttachmentManager.html @@ -1,10 +1,10 @@ - + - + IAttachmentManager - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AbstractAttachable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AbstractAttachable.html deleted file mode 100644 index 12fd20590f4..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AbstractAttachable.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.attachment.AbstractAttachable - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.attachment.AbstractAttachable

        -
        -
        No usage of com.tractrac.model.lib.api.attachment.AbstractAttachable
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AttachmentsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AttachmentsTest.html deleted file mode 100644 index d71cbd4f3d1..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/AttachmentsTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.attachment.AttachmentsTest - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.attachment.AttachmentsTest

        -
        -
        No usage of com.tractrac.model.lib.api.attachment.AttachmentsTest
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachable.html deleted file mode 100644 index a6f95831bc9..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachable.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.attachment.IAttachable - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.attachment.IAttachable

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentKey.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentKey.html deleted file mode 100644 index 658d90d9f22..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentKey.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.attachment.IAttachmentKey - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.attachment.IAttachmentKey

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentManager.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentManager.html deleted file mode 100644 index f4d9a449eef..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/class-use/IAttachmentManager.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.attachment.IAttachmentManager - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.attachment.IAttachmentManager

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-frame.html index 5763f1fc700..1e18edcce7e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.attachment - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-summary.html index b9860985805..f0daf6f5027 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.attachment - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-tree.html index fd99391795f..f34990ed89e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.attachment Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-use.html deleted file mode 100644 index bf8a5a69be6..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/attachment/package-use.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.attachment - - - - - - - - - - -
        -

        Uses of Package
        com.tractrac.model.lib.api.attachment

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/AbstractModelTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/AbstractModelTest.html deleted file mode 100644 index 939153d59b7..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/AbstractModelTest.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.AbstractModelTest - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.AbstractModelTest

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/IIdentifiable.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/IIdentifiable.html deleted file mode 100644 index 1890a43bcea..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/IIdentifiable.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.IIdentifiable - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.IIdentifiable

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/INamed.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/INamed.html deleted file mode 100644 index 69669d431db..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/INamed.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.INamed - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.INamed

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocator.html deleted file mode 100644 index 82c755681f6..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocator.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.ModelLocator - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.ModelLocator

        -
        -
        No usage of com.tractrac.model.lib.api.ModelLocator
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocatorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocatorTest.html deleted file mode 100644 index 778d0b53d51..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ModelLocatorTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.ModelLocatorTest - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.ModelLocatorTest

        -
        -
        No usage of com.tractrac.model.lib.api.ModelLocatorTest
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ReadParameterFileTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ReadParameterFileTest.html deleted file mode 100644 index 4050ea6b25f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/class-use/ReadParameterFileTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.ReadParameterFileTest - - - - - - - - - - -
        -

        Uses of Class
        com.tractrac.model.lib.api.ReadParameterFileTest

        -
        -
        No usage of com.tractrac.model.lib.api.ReadParameterFileTest
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassing.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassing.html index 080e979c5c7..8545c8b9b44 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassing.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassing.html @@ -1,10 +1,10 @@ - + - + IControlPassing - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassings.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassings.html index 46813ddf38c..18ffb2870fa 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassings.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IControlPassings.html @@ -1,10 +1,10 @@ - + - + IControlPassings - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IMessageData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IMessageData.html index 2e2e80a1b06..f018c64e374 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IMessageData.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IMessageData.html @@ -1,10 +1,10 @@ - + - + IMessageData - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPosition.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPosition.html index 2aca18426b9..7900eecc0c1 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPosition.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPosition.html @@ -1,10 +1,10 @@ - + - + IPosition - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionFactory.html index 72aefcecf3c..71e893e4ed1 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionFactory.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionFactory.html @@ -1,10 +1,10 @@ - + - + IPositionFactory - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionOffset.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionOffset.html index 869bc4a2c09..672add36389 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionOffset.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionOffset.html @@ -1,10 +1,10 @@ - + - + IPositionOffset - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionSnapped.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionSnapped.html index f9da21ab974..b84155cfeb4 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionSnapped.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IPositionSnapped.html @@ -1,10 +1,10 @@ - + - + IPositionSnapped - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IStartStopData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IStartStopData.html index ab5d41d2520..f4fbf377e26 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IStartStopData.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/IStartStopData.html @@ -1,10 +1,10 @@ - + - + IStartStopData - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/ITimeData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/ITimeData.html index ea0baf78535..11e80755e12 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/ITimeData.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/ITimeData.html @@ -1,10 +1,10 @@ - + - + ITimeData - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassing.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassing.html deleted file mode 100644 index 20e8def2a9b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassing.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IControlPassing - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IControlPassing

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassings.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassings.html deleted file mode 100644 index 5a972d34f13..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IControlPassings.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IControlPassings - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IControlPassings

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IMessageData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IMessageData.html deleted file mode 100644 index 9d0cd8ef12c..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IMessageData.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IMessageData - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IMessageData

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPosition.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPosition.html deleted file mode 100644 index 40bac6fc98b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPosition.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IPosition - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IPosition

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionFactory.html deleted file mode 100644 index eebdd0df54f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionFactory.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IPositionFactory - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IPositionFactory

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionOffset.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionOffset.html deleted file mode 100644 index 2e64e56d257..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionOffset.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IPositionOffset - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IPositionOffset

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionSnapped.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionSnapped.html deleted file mode 100644 index 65bfa51ac9f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IPositionSnapped.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IPositionSnapped - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IPositionSnapped

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IStartStopData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IStartStopData.html deleted file mode 100644 index 4faba160b34..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/IStartStopData.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.IStartStopData - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.IStartStopData

        -
        -
        - -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/ITimeData.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/ITimeData.html deleted file mode 100644 index ad50af36d03..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/class-use/ITimeData.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.data.ITimeData - - - - - - - - - - -
        -

        Uses of Interface
        com.tractrac.model.lib.api.data.ITimeData

        -
        -
        -
          -
        • - - - - - - - - - - - - -
          Packages that use ITimeData 
          PackageDescription
          com.tractrac.model.lib.api.data -
          - Contains positions and control passings
          -
          -
        • -
        • -
            -
          • - - -

            Uses of ITimeData in com.tractrac.model.lib.api.data

            - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            Subinterfaces of ITimeData in com.tractrac.model.lib.api.data 
            Modifier and TypeInterface and Description
            interface IControlPassing -
            A control passing is a combination of a time and a control, usually the time where - a competitor passed a control of an control route.
            -
            interface IMessageData -
            - A generic message object that can transfer messages either as text or as - binary large object (blob).
            -
            interface IPosition -
            - A geographical position in latitude-longitude coordinates, recorded at a - certain time.
            -
            interface IPositionOffset -
            A position along the route in the form of an offset, recorded at a certain - time.
            -
            interface IPositionSnapped -
            A snapped position is a position along a line or a route.
            -
            -
          • -
          -
        • -
        -
        - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-frame.html index e45a053a981..eb6a26e0012 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.data - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-summary.html index a228a4e8884..e1840cb3bcc 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.data - + @@ -72,8 +72,7 @@

        Package com.tractrac.model.lib.api.data

        - Contains positions and control passings -
        + Contains positions and control passings

      See: Description

      diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-tree.html index af754771797..e4bd9d9035f 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.data Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-use.html deleted file mode 100644 index 01524c8412e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/data/package-use.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.data - - - - - - - - - - -
      -

      Uses of Package
      com.tractrac.model.lib.api.data

      -
      -
      - -
      - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/AbstractJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/AbstractJSONTest.html deleted file mode 100644 index d69a4fb448f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/AbstractJSONTest.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - -AbstractJSONTest - - - - - - - - - - - -
      -
      com.tractrac.model.lib.api.event
      -

      Class AbstractJSONTest

      -
      -
      -
        -
      • java.lang.Object
      • -
      • -
          -
        • junit.framework.Assert
        • -
        • -
            -
          • junit.framework.TestCase
          • -
          • -
              -
            • com.tractrac.model.lib.api.event.AbstractJSONTest
            • -
            -
          • -
          -
        • -
        -
      • -
      -
      - -
      -
      -
        -
      • - -
          -
        • - - -

          Constructor Summary

          - - - - - - - - -
          Constructors 
          Constructor and Description
          AbstractJSONTest() 
          -
        • -
        - -
          -
        • - - -

          Method Summary

          - - - - - - - - - - -
          Methods 
          Modifier and TypeMethod and Description
          voidsetUp() 
          -
            -
          • - - -

            Methods inherited from class junit.framework.TestCase

            -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
          • -
          -
            -
          • - - -

            Methods inherited from class java.lang.Object

            -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
          • -
          -
        • -
        -
      • -
      -
      -
      -
        -
      • - -
          -
        • - - -

          Constructor Detail

          - - - -
            -
          • -

            AbstractJSONTest

            -
            public AbstractJSONTest()
            -
          • -
          -
        • -
        - -
          -
        • - - -

          Method Detail

          - - - -
            -
          • -

            setUp

            -
            public void setUp()
            -           throws java.io.IOException,
            -                  java.net.URISyntaxException
            -
            -
            Overrides:
            -
            setUp in class junit.framework.TestCase
            -
            Throws:
            -
            java.io.IOException
            -
            java.net.URISyntaxException
            -
          • -
          -
        • -
        -
      • -
      -
      -
      - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/CreateModelException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/CreateModelException.html index cb62a7cff43..018b2a199b9 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/CreateModelException.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/CreateModelException.html @@ -1,10 +1,10 @@ - + - + CreateModelException - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventType.html index d431aeca51e..148f6e9baaf 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventType.html @@ -1,10 +1,10 @@ - + - + EventType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromClubsJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromClubsJSONTest.html deleted file mode 100644 index f0de1bf3c5e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromClubsJSONTest.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - -EventsFromClubsJSONTest - - - - - - - - - - - -
      -
      com.tractrac.model.lib.api.event
      -

      Class EventsFromClubsJSONTest

      -
      -
      - -
      - -
      -
      -
        -
      • - - - -
          -
        • - - -

          Method Summary

          - - - - - - - - - - -
          Methods 
          Modifier and TypeMethod and Description
          voidtestParseEventsFile() 
          - -
            -
          • - - -

            Methods inherited from class junit.framework.TestCase

            -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
          • -
          -
            -
          • - - -

            Methods inherited from class java.lang.Object

            -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
          • -
          -
        • -
        -
      • -
      -
      -
      -
        -
      • - -
          -
        • - - -

          Constructor Detail

          - - - -
            -
          • -

            EventsFromClubsJSONTest

            -
            public EventsFromClubsJSONTest()
            -
          • -
          -
        • -
        - - -
      • -
      -
      -
      - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromJSONTest.html deleted file mode 100644 index c08f85f269b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/EventsFromJSONTest.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - -EventsFromJSONTest - - - - - - - - - - - -
      -
      com.tractrac.model.lib.api.event
      -

      Class EventsFromJSONTest

      -
      -
      - -
      - -
      -
      -
        -
      • - -
          -
        • - - -

          Constructor Summary

          - - - - - - - - -
          Constructors 
          Constructor and Description
          EventsFromJSONTest() 
          -
        • -
        - -
          -
        • - - -

          Method Summary

          - - - - - - - - - - -
          Methods 
          Modifier and TypeMethod and Description
          voidtestParseEventsFile() 
          - -
            -
          • - - -

            Methods inherited from class junit.framework.TestCase

            -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
          • -
          -
            -
          • - - -

            Methods inherited from class java.lang.Object

            -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
          • -
          -
        • -
        -
      • -
      -
      -
      -
        -
      • - -
          -
        • - - -

          Constructor Detail

          - - - -
            -
          • -

            EventsFromJSONTest

            -
            public EventsFromJSONTest()
            -
          • -
          -
        • -
        - - -
      • -
      -
      -
      - - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitor.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitor.html index 9f59efab2ef..ed50af16641 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitor.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitor.html @@ -1,10 +1,10 @@ - + - + ICompetitor - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitorClass.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitorClass.html index 097070eb8c7..16df0eb6e49 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitorClass.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ICompetitorClass.html @@ -1,10 +1,10 @@ - + - + ICompetitorClass - + @@ -144,10 +144,7 @@ extends java.util.List<ICompetitor> getCompetitors()
      - Get a list of competitors in the class - - - This method is thread-safety: it returns a copy of the list.
      + Get a list of competitors in the class
    diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEvent.html index 2d68ffce5e0..e625fcae100 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEvent.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEvent.html @@ -1,10 +1,10 @@ - + - + IEvent - + @@ -242,10 +242,7 @@ extends java.util.List<IRaceSerie> getRaceSeries()
    - Gets the list of race series of this event - - - This method is thread-safety: it returns a copy of the list.
    + Gets the list of race series of this event
diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEventFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEventFactory.html index c5cb6494d91..73057c2537a 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEventFactory.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IEventFactory.html @@ -1,10 +1,10 @@ - + - + IEventFactory - + @@ -18,7 +18,7 @@ catch(err) { } //--> -var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6}; +var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -179,6 +179,12 @@ extends com.tractrac.common.lib.api.service.IServiceProvider
Creates an IRace from a parameters file
+ +void +deleteCache() +
Deletes all the cached objects that has been created
+ + @@ -315,7 +321,7 @@ extends com.tractrac.common.lib.api.service.IServiceProvider -
    +
    • createRace

      IRace createRace(com.tractrac.util.lib.api.programparameters.IParameterSet parameterSet,
      @@ -335,6 +341,16 @@ extends com.tractrac.common.lib.api.service.IServiceProvider

gGq`-FI=+pT1=Z`t5S))m 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�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 z%0A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 diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-logging-1.1.3.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-base/commons-logging-1.1.3.jar deleted file mode 100644 index ab5125407a6a77767330e29a028b97c3ac64ce18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62050 zcmb5V1CTCVkS*HA*S2ljwr$%sPusR_+jgI}?e5d|Y5V@eH*?>MiFs8~*cB_IvZD6R z%Drl(q6{b)0O((qtcC{Re?9s49rQm(IWbisIw^T^2E~7eK>=m{1Jk03QLY970(u7r z0z&<-FgYQ4DRD6sReCw`Sk+sHO-95oe5#+|6^EsUNEFL%)znpG^#$NsKsC9V$}u^4 z2PTg*uJF%?-cY?@dmCZlez%9;?TtQ!Y$Ws?t=~R5igsuO@|;`Olqyd2ttP7pG(sXf zv=LQwS&pbT{~9%kGDW1~#D+0AuRu{q(td@Kj2oV7g4_siYB=KB`5;xki&1+K0N%)-RH^&qS` zzcbxYwM~D+4vaOk?pey?#EghDk|^pl+!wJCH3(=Go27;g+9=~C)QXLiYRA>97w(;d zis)a5NZlsM2r4soAQ`lew1g;GukM+ zNIoR}CY;T@b>=N~%!V*^^MJ4$Q}{@?Rg&E72nWrNEg1eeiQkxeBhAQu!aWrEtJYUE z^d6;i%slfGK^AQ##hX50{MfXWL(82P3<)X~RP~l79;w!dh-@HUTP`t0M zTL%uCX2jNO=~(&B4bi(U&K8^kcaGj)>?9e~Y(|58{J<9HNG@&)-D-s0WXKX=> z77?BX&oS_BCF-WehBN>>^A&IB2S2F_m&bK#iX}?_E&pd};m~+YU;<&BmP3&<9M8++ zBM`!>9m*NVpaKEvB(LdvzJbYF*o6X~zJcC@_>((#Samu+?>-+}+hH354X1sTkB?Q0 z4<0YWMeE#yuQ6m#u5EpTm#{Sj)V{%`U*kXamY1xS?L91id{_tcah6Q}d>C;htFIRs z@a+Yk!l1~3|K8Sfr+8zYnHv;D05k`(i zCYEOZ0}$oE15F(4>>TV}{s#k`|8E0Z2MY@;`~S%$!vERO%FfaDKW_^Kl>W~nCtUqy z^83fC@t^Hq{QS>hFR!2~B_c-e>goDxx)FYe5D{qptM5=856qUMy)06N;{y~7QBpf@ zfav~~4O`Uh3DK%T%l&%5qt)a84r||Af_wSc!Jp zlP8ChH4wH#H2kI~jQV=wOYaRVG4*&?mn&nFy4q+y{hNE6GYWIx*)PU0m5Y4qR>@ti z&-?I4AjNId_3-lTQutHOy|@MP{^@dUkGIp31NJLhqyG8hOLvjo#iYF+dv~(eI}ql! z{?<=Bdh|lNr&mjl?lzsHy4BOeg@V7P9>&Szmyd_b(*d2I-n@#&)YI3_-*ALiIOtbv z`a0EG9=-r)`|lwemIsO~==Nke5^XXbrU5BPGaU+3jmSk;w0h*$Mq}41MD?dtRg*{q z41H979V-saUaWf`qTC8c8MVk6p&GRb;XaVJ)tIf^SNRNVeoN2U6qD+%15E}K1ymY2 z{|4`FoRAHVNq{0W`o#g^AI__om7lV&o*WmNuv}a)+pbn*bax%^-&;f~f_7#kbyAO! z$R^>Cq}QnlWKz)D0a*K53}XYJ`a-q14sZ~7HC6zkS^xpIa@WApe!GdrVAEnt?RgLB zPr>@7(YUkcaHppQ?fF7{8wVoOMAgEWa>hmZx12} z5@~4p@zWmE??_rhF&dsuwKLxBwb|*E=UCa59?IZUt z38~h)!K~gUvZ%h-=cii+D<04jqhUy)qkV`5?suSV(^ME_p+Dkoh9SzqG!%<0e92S( z>_@V?1KOYIxq2u1;Xm`_2wm7pX=q-)p1>DKEi3S7z`Z)xxZu2_SQNmW$E3@v4LZqh#_h~ddkdUgFJf}|pG$t<~8xDh!EfG0*;()e~df-0Kdr8}b6n#nXxa*5mYa9_` z{37tjsJElGLpvMx&YjZ(fjMmguz@nIR)Wbjj8TKFeDk2d(b?I3L6CN5yx6^rG>=n) zC5bL&)~8uhP#a_&+#tJi-ak>}LFHGH9~nj(-+G=HvwCkOd+M>(Tb0K@ReM`dsVp(L z#j9(q;S(TtD44e)iolObl54wQ<=22j+tSF;B8jUL7b+;E3*AyGlh^i$Q$Dc$SC7WI z5LMW>7_jFlbSp}g5K!6gp+_B$GbIyD*V$VDe*V&L#4=I9N_zvVashT6_CP$mo?yE| z3u0Nx-u!5mBt!Qo+DJXJ$2S|+i705IW}Em&zlsMk*fI{S{{A&v(VsrdG}lL8`+%Bi zkYq~;SOvnwI17!nrHp$NNV5m}EyE2= zd;x*MAxI^pt=>e8<_yVEv3iUM&*q`3DJ)%;_zmqYpw4ejlW21+&cKYBDJo=c*Mj4? z?d+<0Y&D*Cx485>KE$(?ut^8{`j$ty(Z=r|NE2{VqK zS~}qQtccx^D#Qu-sxEs!2VsRIzeF7$Kle;g{8P6?3ExRXKac@pVwG_Vj6N?*h-l@Cg7DZf>)A9d#jl zvTs?!Q=FG*)du4Bwz1B1Q$}8KEAc-HpIE#MVk9s2%b@tJN;>o)hK&WjhhP#FuebwB za)zV14z0;K%v`64acG|l$SUAWvZG~*n3O7(;=js5#7T}b7`y`2oZJRb#co426X_A# z0DZ877_~5q4GJ}wfWFLVo>YaflNL7`1n7-8B`8NlNPCvSVhc_DPB1GHTXvA&O1MPD zfj=CL#0p#H^al!rT8Y|3%#wgwb*g7)JM6Q_jy}jMZ;7OZ%F&fnX#X@O@03ElPg(W6*u^w7RHSt20aUTU{Y-Jb=mra zbYL!0qUgNPVTm;6oX?uIHLHP=Y9e{MtPZJo0Ab@1&~I_tXMhw9z{;#N-Yw`6(y9Zz zR1y=R0SiQ>*#bE6gtKQZu$8ar892oj2||-W}>npYtotD>Gkzub*I(Zk-5yOg7*65}YkQ{%oWQ4P?r4HPXJ(prC0hK=Y@dJ!Mdx zEo(IsQ%dDLm>cs}ATi$wok5MJud|`J><(F6OAkUYW0T>vsl27^GDvLzMxfY#p)98e zjhkMY7D}mhTDZOPLq13)9DDKM2}0{pkM5|{yy zpw56cvpT-3oaDVz+ zZ7eZIe3jd%(*n~M`#QIi*_dfVFR^mYQl+G&vQmqecOmM}QfG!VDMI^fnU_>x@>Z1; zT3ii|#e`@nQyjTT=6WTr8wg6cugpwbKlHvnTcaQc1_5_PQCv9Gf8uuJYT*LZ12$}_Qw@Hthe24F_mru6qXOx^pyRGLg}qB>{ily?aHA{8Vm@m14= zc>x^QBUQC6zV)u#KCj&Y0>G#cAcu(PEckj@!n1)?9_}O|VJ{fgvIawJVYW{8=vZ*_ zy(zy2GW&j@xZf~O!bRpGVns?y*jK9d#IGIV8wz;tpwnEPsZjlv4xd=9LDeC4m4<+O zX^fWwlQ)y!Y=4*Sa~QzQrU11q=bs)*^H}HJEw-T(1o{W*!81V@Rb_*6G%S0WM5h`C z^hnOgWCfv381cX8DL;X@jTR0%MP~`b9!*8MFgVqLCkW`&j5_n72+*!hxiQ|1AAiMj z5ZsK8kM8UkyY=_zM`w3`YJZ>PYS#Fn`y15N1>9Kn0sD=dSIAH-gwUw5lgnX=x+r5g zUI59_XGUQY`v4jZr$3IrJ}yCO`n)@Jd%Jb&zP-Peo-XLin!CH=wwN$n)T|hGf%16%Y|%xms^o8XA;# z(H`1)Fku~!P0U#weFa5=%s%4u5(!I8+BxAP-O>%Ef%XONpSgef`Z0RTPeQ_*1x;bg z;e12_b*i^H^W+{JUEE0vdUFjt0d7~Dw=5(n3EO;A1Hi&8x;%+aLm@)OGI7pgkF2LW zPBceNYR7brj>OYzxWr?y-f(ujEX+Hy6kzG|dQlLx4;pcXfxFqtHZRHZ@%(~{Y~S?{ zQxLfZBcj%nIf{?1NwdALkUI;BJx}Bid%y?wXRZfvXdnZFog%=#JP}XLMvS^@@LBbe zR==O%egip#+&Kqh%wgT_=+a8pKwE|e^mIHBqg~Ka@!uqLDJ(s`Hr;JpwhahRzFSFRMKoz<7xFM-kIffGa_|am z2%b)_*WTyNVCd^#1Qs$0zAxS|p%|$(WyRcJLCKkwaA=!EE_Alg5h)R_Ekse} zO4uyfW#;38l8b1>%}^sKMK5*UpX^VFbI$|QCD>w5eDX(+#juO(aR$_DXlQE8^+HJW zGuS&EBpwUw6~I_&14Ve>)ieC5zd3LyndILk8{GTCpr`z_L0z&EE?9wR8WYCh52+MS zp^2Vcr5jivy;?FKRPPXhp%hl#zBkEx)6>_*m#Cr-)oRtItfL1%|&sCcy!pn#*4 zpL5<8Od&EkZi}`wCx~+D(B7$doCNG7K*-_J=L9;lc8J5~8P#U&`o5rzVgm{?!2+56flXamT(fgeVL0aF>_&UgbJpKK)uZMI=|z0d|3bb zLRKv!GZ>oBKg9peWkF4jU6$W-9FhtC3@pcd{gLbky(e$3P0gx649c;D8-c~G-HJnW z6of9IbscwjezTG~yu5kTeZcqu{(q+D|3aX6d^iBQ{$WlE;eddc{})_@kh_tsgT3rO zyoQ-Gy@{=ni%Y4RoGOkQ>bE{2*djFCyfRJ+Tm=<$N=3j*nlP2XCOZgVk-(oKS&G>$ z=|Gme2!G9cyKOv_hR^=`{&mlIZXq@=?`Wu0CY@fd>(TSpG$Smt1Z-z}y4UOF6lPzRT*i(-%N#(&=t({rCupkSh7;Bie)!3)+Kd}lwMq$x31w3sQ8xC6e8Ud4HJWiHg;I?21f_IC_es# zZn^Pdmn_UGZSv~M`jje`%iA~F8Fhudj(i;H%Swi&SSz}_2YZG}^Gc9lRbNW#m77}Q z?6TNubXnu5@%6hfS*vm)OdfJBEwE8yOV|Ydggk@@gxV5oM_!NZ1b3?-%_&@>VN*8m2x=Rap_eRnGz66AssG5Gn3B7xXwI<$)0_0JodLrL*d?I!wJy)#ct!Y^Q}a z7}Go#D}K$LNHrR! zxd}N*QpyuhF04rUr$8E0Bu`FwXo-`|C};=T9p(ysgRaRZYlq6cd_C9PBWwqY6m0C7 zWr@{zcc)aI7btKMEQxN8@tP#|$5&~|g(q-B+``hod?;H1RGv%Cjf^3|lC?f|)~reh zPYywGZ?@wG`_OSW)+oY$9TN-!aX>7O5{SdI=j;V)G@eA>J)(z98>wK=@q%5{`jH2$ zkC-9AsAT_DHl$s9gzL@~?gT=@P7zx>oZ0q^FykFPkU?)9 zp2u@EEYTVUH-kQ=OD@APxnF4OD{F||Aa|JbhsN z?BI5R2P)p~ND!yTjt)sTlig}5EN*R4FA@~9o$P+?$TNsJ^F}J%et4rr6Hm`I+#W}H zVEh@ru~$aqUSChdgkERb2xU2vJc(FeYR6CN7G(kw?Ad54i9Aax%99lDQKn1CmP2Y$ z!bdX8mYnJ$b@?d$5jxRV+AzPB)~YG9q(VZu-eB=`#66nyS7UfdrFqhOPZIna*$z>X z9Z2_9)4yKfO@jX*`;xWoPbl&6kt}K-Kge)}H(AHK(aAgd)Y-Ax?u-NzP>Dq%_6ym= zA?96zCAyG!EhZW|H;4M=7b1W|oUloU1Vu=`se@nN z{PU%cf@FL-ri8R((qo<_b@3w2eVC3)k_4Q@y53Zh`Hxq8N%((dq!G8ElTv&OO5~>x zbB38Lo0q0Yb53QJ?U)dTbL5=94gPy1+?IQ4215b@8YKe)V)$P~LY05vX3hSIg#Q)> zQ?+4yRaY{9`X*#=X8s@#0R=)y4g^e)l8P1x3bOtIPJ{+VMg|4QCuN%&GNV|KBM!9n zwYII)+P61trQ2*>wb@4(hSj*zw6B$-{F4c3)$FT4hen=KNzF}y=W!v=XkN- z3Bf4-u#0k!@UzV4(?ZWq>Iq3#wrAH=+Ql@4sOYlVWo##gn)(p7py$>?qhgz~BAFrf>0-0Lc4YlH26@Rx*>Xk*G}ZkKm(X3p2jl zqk5aEa---iMD7dIajD4{s1r-l)lQ-`e1JlrnVYC3iq zxCvE%*5C(_26QZzW64COaOPCES@e<&EUVon0p&e)f{ned>asTcE9_>d_pBB*jef5e zbl{Hx8<6de-a@Sct>l7hw(d5VWr0Z1uR6V%ZZO;oF#8It+DIr)9ASk38)ATDa=;86 z9LRD;%WH?TxjS5$vN9i%s5^Xwos)isA z7o7xhCO-?xrEygYVsho~;hA7d^&IVu^z+LwPt;%!1_T4T3`Tp*77nVy%{C*d8$l7K(R-S==&$ zTP7$LXN#gNCHN~OA?y-2f>0S%)~+4=qZs7TT{U7|2UliH_QJ>r9t^MKEmi26xkC(@ zai*NCOK;0O#0K*(rV&XkFzvdQ7F{cw&c#*d(zEu(1?G{7D1x9&E{MTJ^Rc$B{t_jq zi(Yur>XH^E_-M09X>2_ZRu6o}ZswbmnS4sZr;bS*p}*;!`G1YAskP+R<1a^s$}l9Qw8Na?ejC}k7T zlHB2+36pgTwr7I*_@c!28yHQr9Sec4Sey^8g?mu{5y zy}8Z;fGrVWAsI>1?7@s)0@aPq_~+r%X1(dRArS&fq*9TICoJ2~N*hXCt=k&f3Jy!_ za>qQkuVTk+y1ERNJ!tD3@rGcK!_}#AP{I*6oD0~pKuliVuKZY*(nCZwJPFw=`Es-m zH@EX_v92zf+qP4jySFhiJr-=H!@#%mIq96?UDl*2ctwBbQdu~*A9gL> zvb<2t-7vvJ_E_b#cBJsYdgSsJKC%y%dj}(aMV{C#*gD&R_@z7h#!@Mya)cl3)2U$j zIav@tuM`|Nbt;7|)b>{%yn%huF*G%d=89FT{kFAhz7BE3ml9fEE~sy8wxD# zxVR78hvsnF0_B#?_qVD7HWw{cW>)_B5%ZC9$6`L$mB*Ej3mnIlW2e|@a=*n?j6R6q zO3iF)#=2?}HPhOsl(o@ZIZkt{3aqiL>Z+sjcLC3td!iTOGWB4;CAi@&+G<}>Y`|de ziD#+15-ls&7D=N?Gy;}yMmQ`#@#YVAF54?5!O|;x@SdCk=A*)6kC4Jbg^<6Le`vaR zg=z#JbOL4G7d=(9c|D@1?zUNw_xU-0enD}C_oiO+sVo)X^#POl0|-q??XG4rc_ zU%b^5nZ8X3II^WejR#{XWd|qPt$c7wi;)n z_1(vr*|z&;sJK(=7y{;}-*>>&bX^PM4WBtD@o$6Ia=q9IRHRl+hrIhrrzFOzSk&0^Ps-tF2( zJziyXB&C<4l>58tTV z$O_L`oc8EzlhqDZ>sJb;nEQoPSq-yun?z(tIAq}ht3KW=)qTyZ9)^_?9rdnnfn3Vz zn@S=Ovjbkt*ivk7r0HZ$Y}rh7%9--81SG^X7r8O<4TL9qwN-vMH!A4+4Hcm zXz_ZPV_|{JG0}D|Qp>!i!j3s91otvKa&WTP*u0VxPq)4fjd(sP`b_OJpQKEkLpeY9 zNEO!g&|Xy%7RWzBmJ_1g@NL>;H=mI%H}ryPgL?NR8H6xyx8OTLDk0O)KqBo?O1QK6 z#lE9e*!3@p>!I;d=cU$DpHlFZ+$UJ>^?ZGKR|)8sXDJ$>q1UQfIrvn*=VKnuB1sf*0UzM4QLQa{PHNh7G5~m^)IKe-NdI z_0I{_x3+O(B4@Jb)oi?XCkPax#P#G4>jY)CETPFLrTDQ6bSeYt3Si-omx$h^!r+&L zxrHTipO|Wt5RLm1c8`K?izAlVGbBoGl#X(rBRrsssT&y47kgdvgFOURZ(V8$2HwBw zo*)~(3v9j!R}nf_{llKZbuYsk{YF~9U1|ibw12=?q$Z-ga+iZJIb@!ql+uHsPx-0) z;f$V`)~X_clz~mYq-yNJ@!lFOfhC4aO2on@_Eg=|%wrVgJyU`-({cxt2&@E`nE1nn z!BGcZ{M^LgGysQLogK3VG=H@+Q26BYhxnnE%2Orzp?oA)A>*5|+;w#)uD zm!t-oy+MZ()&xcU9yWZ95Wyd}D`Nh@5n~NV7TygnuNwWE@nN7 zq~hfV!H)0poObe@29DoCi_c_7NXr{O9JFxUj9(z&7xOam19%Kl2CxD=;;7{dHM;sB?j zXc62m40SF&O2L^088_la)@FsjqY*SXn{*Ns1l|;h9tYk4%p+1`Ls|kF$XiTt3upwL zEGxkohu+ZTDP2>+C!kMZ7L()T;}=t3zgbux%q9yhsN(yCn$LM>${iNi9_w2Yzhkk_ zww6Wr3hm$NKkv*upJ*b+35c8gz{=m5K0hcNQ#B4~1xgtTmI;dUm$1Cy>;@SG&)wef zzmUs!2VOKDb>7)}MfwkD-xbV;8_ZDNdER^8e=XP7OzeLVTSmfhED9__i^`!FSiacC zZ-n68hh5zTl~=q@Q1Smo_uaP>>mT4|lP74FP%~xDEn(Pfp~x zxeA;eV~~Xhv*CfE&c*35{~Tid14YLpk0Zb2Oj}g_BDpj}jzEh^&9k5Dmsz48h1dRw=tZ@Sr zsUD}CJlXF=s_DF8#4Tr>vZ~w6yV?O?$E!`hM%T_E9Dk*Qhq~Haf7B)4v)0~b9G9!8 z>fv$9;cx>$%PmdZo&gJ!t$#Pb;DnskCJr2livGM)7!{1F!gohrt5+{DZ-BO-YG=!F z=?b!V;m@23Yfoz^QZW>?_9WCDiM52L&jT@(n)ssaOpQJg>5CH_A6Kl`moYeE@r@oo zlGPQs=t>EkPE(NbM zlI>hzf`PYp_P%+x;VwvI{J7);$&-a#Z1OL9Z!h>>-V$^qfAq!4{`E)V0{Zg5WWy`? z<%XP!W5uc*L}q!U?z$?coYNVOO0yo6r!;PwDgEcXBz{k%9aQN)iu@px5<+k6Yb?%0 zW|@&izxMBg!XN#z!}nC)eFl#7?>c^%7yI{#zQD{F&IurnB?RAwm(sp-!XG!-<82kr z1>o`Xf#S#MNxrxc&M7E;q<***{XkL#1nkb|d?f2Pcv%(B6#~aGJ$Zj&{mT^rp$(b$ z`oO;~1-|Z^i~VOrz4j0De5C@A_@{$MrBjkWMd6PqDZM5B;3@t1ou2D9M6N!>Qh;(vQ7Q$EQNIDE;V1R{0tpcpLk#4K+5_v)qO&&qC>4XM}#@ zAYB-)j1^Ayo(7(M3^lxs{pUb+9tP^32jC|Kh}P9!aJO2*J-47%^2H(-7{ztC<(0n} z%|MYiqlS8%QtTrNOn1#^NGvL>wixwRSY@NL_rZDkgx{Se@zaohSx8u>2goZ;v3Q0N zA2hc(hPcBVut(q7i+R3KwmQJ%1KpB!3{rR0$JkV2Ew&RHYG3Q94mbX8PxbACqPxE? zNbTdS{d--qg1PptZJAr2eesLQ`W{X(yFP#O7uDvajLMjY=8iAh?$ZjX-7-x<2fW?# z(Ie<|T0zj4$MSF4YwH(@Dz2#l`0vQY`Ra;Py01EoR66dGC07$j@8me9O_#9eyo{nV z6MC`ucD1h0x;PbeU-ON7F7ZB;Gnr33&o3oeGl62qPefK5?k)HXMK&9 zah*kjp%nD+P-}veu?R8lyaF+uoCk-3-|e#fV`*oFORgx=2iXeB@~cwXM*>o6nCYR< zxg}q|Nz%gYF-opD;R13*)!El02I-g_rbS)2#rTGy-bxKsR%#UpXl+^aDy8mflTi=tA0@YcS7aL12EkS z2?Rv=k4lZ{e?h4HL#41v|5s)?Rb9^!M+5D<&d$rs43DSj=<~25GMBoEjxDnV64!-#eEPdbV^ID`h5I`z{Jet$Eqs2IK^MNPoVw$zrMVOWT;JQajs?W+r%VC; zuPO&k!mP}NSt}|Pnm@|LadxQA;b0eXH0eurfp%C^v!yLsbUd}?lAey_sfjWrsv7fu zy97rXTWj(b=FZCo;#S@%?1r1*PI<4_^VwRB8-rE3byMSNQs+?m;oBt2cw#A|%iP9)1Fm#Ksb<_gL)_Ig^^L{)@Yw-jE}{kOeYdb)D;9D| z8gf|01qkVXQM&lbkJziX-BE7~Rk&#$@m%rV}>M^3V<@-NW`M?832iWsXZ8zIa*6AY2aGOv%qzfM@Y1(kQ&=(ro_Q%)>V-@|flXmbzaUi+vsRUIxzlcXRxut)vE@F^Qg zrM$@FrSE}E(nm=pn-iM~7AWD7F#3lu$0zF@(=^jgpX~LaTp{qp1ZP*KZ!y+;osHI= z7u72nxft_TEbzKKlppv5?+$9tkJV!N{XHnZCUNra4Dx?hs5LcvZ|-kfKOf5`dC++3 zjpBGJ6Skql1wNal8p%*UU8>X}hbs?ysP;tOR=rX}c%7-;1MycJ3T@XPvQmP&GmyY$ zmgOx?>+@(#UV@KXkk2TUW{i3phbCE#Z4V)_02*o6@VZmnXg?HfSEDqorCt2>5<6+B<55Cn$Jz#W(t+SPnv zkEs3P3@SWxe&7!p1ToBX7H8T@JcyEaLuLPl%Dx9xA42n19un=g&$KHz%h9U=&?Gbq z?NWnydC>Yt)Vc=xGCIxH65!!GG)$sfu($Gg5ot8#V_e~u=tv726L>;&DJNK1+7%T1KOZlCi%iru~Vb?kHR;8g3@pi?Nce zL~f@6WL#ar=o>gH@@vr#@V#-|io^8nq(U0;sJ0=!)qqHO1YN4|9)IvLnBT=a(-u5< z(ox>SI++u`C4jhioY$_1_H1dsl*CHzjk4eny9yjs4k0d34)rK`L+YiPe=REF#cE*_ zh=P(gB5}V<6?JVv5y}~a;XV=)6z8%%?li$}h$Tdh5Mx_5!R~}1#eX*@p3!vTJ$yB_Nj#B&LA9ASbQTD&1uhEt%I=B7gWm77I|$bi`E$wQTFbO*wGiW zA7L`%UpOJSg(%u+6u3hc^a)qgOD|_s_XARY!kmQh? zu{!gvinh8SxT*pDvx!}!pk{;zXZkBz(ZAPzl|)Um9jxga@8HJ|?mrqNh2K^?H4@bg z_Hd?O7DGQ%*#FVs5dQk;(u!9z>g7s!5`g;2w`sty9`be}y!1!8@L!$D(l5aOo+_Dn zVoUXeln$F*>y5lWx}}rLLV3jKi)_1xRcp9;sVC&!{_>lL~ON0b&H5X+!W<|j$rf_9Xa)#EXEQBvFHVnK#-5$2IeaN9-L(`p4u{_ zd7{P0_KhXfwFiq&d)d2vN`te%)5d6YBO6gC7ztw@F-aw4hZMX5gn0HOVQi`2?BSe^ zj?*Yv0tylUC3lh1h;+b+2w;LCZ|CybuuNA^U6zOBBP-K%%W*0m)!l*fcAe$&W&H?= zG4#1Edkqc;;8QDl0xmday8QYru`+sH)E7ueY zG{0R_^S+5cFdOShKyX=Q6Q)Cmf$XG$a8@8xT7)%$ZRZKTq@c-}uIPXj?OL@Ow?ccp zGOdnmq5gZx<^5mu!aS5a=W*irbgE7yf_N-Iv_8 zUH^03CZ*_hJaBH?kXXa~g?d8=Xz}4~(9oa= zq~{Nitr*7<0)V|;x0ujQRl*uBK)k5W&^4O@k>%=^f7$11_hoVt^~8hq`piy$Z@IJ1 z%;k17ZME(uZ8uh@d#&|OSBD)aieYzsxwo{olCN)mYrD18C7QOg;;k+Ni3JtC_4eud z#S64=KY+vb>YjYwF6l`;bh}Te4r``Rld)=F^BCd1*ao$!x~iROJxk;ZHEHh#0Xw&` za7WxT+QB1$MeMqeAN#0S3Rfq&?W`al|E?{32vmQsq26Ks?m09p%(9RJ5gYRkCD`AR zb02N5_C*Y$*m-sY5g`8S+i=A7>>rufv|jfM_OFGpi`UMK8C?#)8!Xk~UssOc~tv82Q_5bClh zXhH!>;8+Jyd#E`|?YJ^6qV;c3G+BG{>kV!Z8YF2;-g= z{Gfd{qO?(1C|8QgDue?W)zUA&ivNT~m3_#bc#S>s8%-;~M4u=U3ZAE#8JSSFSEnk6;ctwoQ zJ;5L!1u`T>H&Rz^C!TJjy+4ssuaq8H74~Lt(50WvzmkrOn(rV zt99TXv4)X#X|j32~Uu zmmN9@1c>1~!SQFWls7B)OhlZc4sr(#w*{h6aclP~=-pW0MREBDaBvP$?YqhqxoHWk zyj0D#nbd=GXOmiGe9di3oPtPg1#ePwx1vOoGSM<8 zJT&!MqI!LO{3OVg6*^t2h0WF{FM8sw@>Pu&*KsygMJ#{K+v@W@+_qQ;Ipm%6B1T#~ zg4IaP`hG6NO+C?OeiLpvO5Q{@vC=PvaFA!}&`*n%O>K+z)_wcyb2cx^bidZpiQpE* zA)KK3%5J{>wjZJ9H_~uP31!3e$CQh_*N)3p8EY?)wC>)p@H%Zzu<1cs-<@25_%_~; z#&p>(R=jaCeTpIeV70Ype@;GWgtLt{H2EOhQXnMAAF+Mj;wm0TCejDrt{Y{*COR33!1zN7{Qaf|!p9Y3lep1+eqq08Xoi8>hm)J#jj8Y@MI3CkO{9PmR!o1MJ+9+u? z;seB{;9;`D=u=M)8;{&`Qq(t9UT9uNn(HbpmZ)pFFS0R{W`AzDz(3@-a%B&KzKefz zT&IWN3l(O|fY%+27dp8&O3{?tmOO*z-e^0243-qiBuqVfsJ{9HeS=mH5MasqlV5o> zqWTvW-Zt)k#_s>fFMS(fU&al~-1Sc#8h9gzYi(B=Wz?ePbtAUH;vB5c-d<$MSdt2$ z0r2u%v#6Dm=IzW1Q@t!4`J~?EnhfcRkoWV!9vHCi9a0ViDn>puBd0V=Q=r|r(A1g3 z4kuJZ&z#tuwd~rn^C)sch^moUII4M$|3D!w1A(i_zRN@_tLxwO(C0muH+MvcIr=8PS z_g9EJG~r@GxQeobyBLw*vK;X+?`pdgRXJTKLJofGI1Q~eNf>)yH5LoZ zY~mJEX5OLp^$IIIoUNoyuc@s32<`13SvSnxv#Y+ak=(TwEuKiO7VGz)PEHVw;2D?3 z5%)Z%FQVPa4I6ZN&Y{aT^8?H@v%pU~e?pyD-S11Osws=f6(uP=mwx)*-HKMQjcHNK zLE;raymq|zN?^7cg|-?-*V|4ZJK14Z%##U<2u*gXB|gJ7dGq9>W*AqeyFk6uXmn9Z z51W!o+UIsdOm9Aklu5glsZUfQ9{#FWd$>5@FZSl?RZXX+kN&(3>?I(tY5?wpgN@Qd zP=!x+JvXD;{eatzr)mW+vViu`jMB1M)`lYIhpPFD6;#Ol`fjlaN6u>stE;r8Vk&d4 z^poI6BSNBKG4bL5lEs*X2jY|cQ$Ae!k4TX1|8M3-%Jgr!Tdsx@mN8oo#v0&j>InH9jOhvhJ%=gcb#$lp4~5 z>~?l`*7xI@!XcSWTZ3})@obw_k3C@?ItEHW)p48kV~PE`6;_m(4}t{icSqawzWZ>+?O(kcxRA?GA;hZn zr(r*Xsy>=vy}cde&tnmM1mxWZ@IlO%lB9`WVXfX{+dqspw#=yNLw1AvuBFJA!vz#Y z7TlqQn{a$L4u2&tzSgzoudoIT>#4|!(DKI{2^A=CinYUck6=ANIb%ku7(fbxX&s*iHHk%jm_n*?811kHa=&_Ol?ST#q&G~ zRnWenbr(f#Rp;BBkmF*JZE;Q+E&loDW@s9BxNT?Kb^t9DVV z_~mcFH5;1}b)6mYpFGaTj#=ixAc6H6WgGH#kSv@qJ6)>vOw)4OPnj#e@t+i^n7g>b zuYN#-S%iv><52OIGgeI`Ayi=wj9sRq_I`hL zUYB@~Ka*2^znz7%mpZsoIx1!>6Q#B0#GFHI)j67wmRbygBq&>oLY~y+%VPEEMP_V} zH?8@(QrlEJB{2dW1vwu73PIa+5wN|)I6Vj&C1vZNbQO}(yg}Dys8cwT>k7tK~>TG1s@{dtgW8I+luJ0TuUX5n#X!{oL~W}LUnz9`<#Vm&`M zHqsyAfcE)KO<~=19w=vRPOhiQqD@jv&tZ6KLcbrk_Xk;Fr zYXGv6TdB5{yf(QMDn;$w>f(ALGrdr#S7fc6U13U4_4a#2j827JCE-E4vc#N#ySXbk zq+yhO%lWk>6l_PkQPa?DTg6(7jLblthT;ORrLo&$0e>;J62zt~9RmC%g9wC?$HHTd zO9c;Q9*zx7gjiezX^4xgZnqM4qUW9i=Cl2HInx!Jy3<@>xBNr%25%>LDEwd$El0E#M@;ir2U1s$C2S z+1QeMn$MdkiTM`uOWF=`Z6lYAraXP5>7;$Z?_^{UVx0&^kG`GYks!v~OKsX-GMBRFg1l3#Y)PXS3TiN zn}mrX+uby3zJbf{_MfU$u>YQk1hLI`4gZn!1?8AH{?-UnF6J8#QCf{-i#381!8$po z`xe$=QqCk<`;4#0M=tF|7y+=k^-g_?*P+fJIn!Qsq?gKkcMYzC)JoJUf~5dD(mOS- zN|p?3o{)#ewoaxF9Ou613Li!O0CYXT`}K)uy>$h##QsuVQ;roP~6D2sfhNeDI#&8N5XfEO3{#dprpVJW!|bk09H z>7HTVJz?Lyw)6e=W&XkxRNKEAe2=o7%!EG--ic1(MiDJH8Imw0#;lWg>jsrJFlxvi zLYuQ1$5nr2g>_?~S5*VO<_gWh4Pe-Y-7~|w5lN^+3Zfw<1VJ=L28R}_*Mv2smbs^g zZVy2jc$zqq@#0PE&dB1=!_Vt-;+jHg%hgm$O)0Ly3Ox*|S$)D9AW)@)2sKcEg3uKj zR=L|GVYPL0IkpN@K8!780h_T1JI*$}9olz>`+{bj!ER^G>}yP!2Wc@&0ngz~h%Tpj z%QmtMvSa#`Q*6YRGn1)|R~e7gI+R?ZOOY9nJ2xxHpDWNRucCC`)LL$1HN-)vm9x{ku@K$!g_U4Ju($%g`dZ>P#Vu{i`06EX1id+ z&0KcXQ+RMxJ!;;nVw)e%voy{?p+z%8uk6h+^UbSPN<{pM@`+F?tC+5{HWnm6kRaAj zqbm{BJhz0H8ww@A6OMR|Fyf0aC z*cLn7@XwwpbTb?zI`)JHv4WipVyG;Tya$jx8&IwV5O0EJctJ=-bmpy+6_MgF5W;9{ zFd~@`)dA^diX$Q|3qJblanl8-LU_nR@|DAYkQq}S;7anqtH5!lx55Rs8@iz_Dy=@CfrRe>+pq#R@qcf4 zx++kp{f~^MI(@$F09-4^10txTuAm&GOHtHA(@q8&$9?}Mim<*D-S%iRo=w#x3|ZRB zWTefQ;sLa$XbGjj2>g1Fj)~cgYq_bW-FP~u&}+jqt$MolTWgm}u{c^f zj7$(KFSs|Otm|_x|5IDq{1IWcu;0N~E=7RMi#B#Wd%xWM8SB1|Jo2KjB4jr^#c8<_ zcK1qlc)IPHzqaU>7Jovq($ErmQ!kILROGyzd^br-^k$OHC>RwL5JHDj=2x`>wb#G` z8uDERE|6!0*OmV%$3^iKK>)bUG2YJ@gBhr~XBoX91L6g_00=@pz*>qEg+KbKL^Fz3 z5qTsZi713YOStw)MYuUCZy3%X!^|^e;r@-u?$REdKOWCoGTfbWp$%Lsc;j_kYV zSAX!Ed+~l(8%gjt5ad_n_Vd+Dm?!Wx3H&YfcMw;bN@MTw@7)^#WnhY90i{6k(?6GG zMJpx#52w1;4=n^+Ex-L)J0risZ;d&0mpMi~ne_z+b7~F$@-WVwhMLamqdSCU^TRrJ zwd_%No&L4r;5@QQ5T@M)izF*g_ywOd>zKQYsUQqNVOD;nPyU8ucK~5?Sbl~Xp(h;5 zrXEo-uTkXYi|Af17WI%)A8K<`B!j4gB0kzu#Q7UKxA-t-AAR3c!WeDD(se*LCqL!7 zMy~|Dq$REHzBN$7U%{pLNw=E@H94 zNQgG=JpD$P++{0i;U+E~c{!NyY8UFaVhx|&@DDPW+^;i)IM_B~slJ1(P@Jrrt;5}+ zx}>Z(d~9)I$5i9iH~L|+!by1JnCW~rF@5LodTd>j@@u@cgP67&bOCic*0A5@GNj2` zxu)D%rS{SS&=rO&W)+zsK15H@9LjF;Fd2?!;>&4YCeowbiGxti-xPA`ml3zOV#_p3 zMR)}kTB%S$cUDD0P&CF$Jo8ZF1T73UmmP-cA8c98mUI1 zb;&p(Ej@dWzS5gbMJpV4zKTjq1;$Dvn%PNeBH>}s@S9J=8tx>Mu?z~s;nqZ(IPQU9 zq~xCcQs?jEB`eC0Lc!lQT%#u{i5;BUX<5u?JvCnv{-_bH%PW=B-Lv4eDXG-8%DQ2K0>$P3{Ui2-=4x z@!jIHUfJ=2C(OZ`(>U}5g0EdK_Y#2DvKNqe8F%JDk7;Lfayr&(L_tV@G0hm~u* z%*KfWrGAFE31l8iU7-xe13Q?S-*-5XRpy+eah_Z9#aU@a$0W!M53)x8D_t#YI$ z6lkG3qkWm2ay)r9x3WR!TPzz5;`&|SH_Fx;-K}$kMp#`u77nu-afO zGi?)}X<&&*QsIK<3J+L;M-=XBXBM-j4YC~wYHC^i{Th*b9{3o_etF(tG_u6DNeJaj z=B4BipgI#SA-2vd?5_r=>3{caR?*yYdZ(Q3gZxTMMI396q;1M8Lv^_oCMKs)B;FIX zY{K|1^q3~ptC$UP#jmh=ZHN?NdP`}py3x}5KFjF#54aN=Pv?xc5@KpL`7k+kl+KJ& zB&o?_PZs|o1d?C>3hE~1==HKP7pS;XoaLl8-s2>q2*rDrWAbP(z~6jv8SvI|a_U+| zA+@YGCg6>-X&vzn^v0+WNfo3%cJ5m-a|?$;`vRpklV#RPr+*v=Fa~1q27q;^KuZYW zKy3!YVR1458C>C1?QvD?F^8k0iU%3Dzk!arFExaWMAPsGnev*Az}JCz;(`9iMG+lj zK47=iZmS(dpdigTl7ab+vT;W)X;F?zrIe9PP=t2bH=#+d!;oul)1o8G$|CkXoEShB zzc$5#dfT_n#Sa>5p38@x)@I++aq{51W|CIQdBcP22%F_Crk0pXmUQ#{!zl_5Em$bLD5iPa+XKJSc_n%37e}Y!p(&hgip`@rv+x$p- z`4|C|j+B3La-}M+`zlrn~>2#+UE!7k`Vqh1HLH0WZ2g)qbq$?D)l82FEi7mXhP9bm$uT& zS7eNJ+-~jrS0!kx{#=1ia3abf69{eA8VJ$FDchd{9kuCU+Ru{W@>~z@yfJQp%IzN` zdZc~52SMgSLc2#r5PwTVkZ5u3T{uftMM`N1+8(0JIW~(qR2qVr5LejyZVVR|;-~j` zZxx^p+KF?xL{uxIm(htcYza*YrwwP0HNE#w@a{VrVhi%d9fk9Q5JnW$qKT_LL#ys4 z@#}8dVP5)gt>-MOwsN~!xtiGlc_2n+KeMfF33O$I+a_P!HMMNOVeB=SzthkSfojf4 zD@Pi|Gs@2Gt81WK&)QSRpl$bEF133@rJUzv?h+uU&vp%eFcL8M`Eaoki?bPw@HS*K z(!~iE_zo0_-}lU``VRqMFxQwe&FvUn7v-ioUS41x{y`o>*DVMyQeDL~Y8paymr=ba zyBZ6%2V_aE7>9;q*{;PTni5XDF!qH{PvwH(J@o6W^zMi0v_la`?DaIBS42_08Aew- z>DSU>nNUkAleNx5LTgEr+xd!oew@e==U=Hq`Uo+v5K$eUyZ^==$=%N!!YtQKL1m3H zl};kCuy_F{XVBcQUwgnPQ={}?x4HwJ?eY=BY5%ikHWj^jAZRS29n`9xjco1uE%9t9 zUO6+DS*mA!hMkgPg6*nTPnW=^eK{(ZNsHk+=q z@1H_X+#LQl9|zqX5TZjwF`K`s%&*6r`4 z{DtT95(k_3HVEMw2%ncM#S>yja;}-L}Dip-Wq$+weR_8Gq`L6p_l7lC%eEZ!b&@(mh zy^!{;@$1Wv@taZqE5qsoRPSr2`=inONjj76k!|i z577h^2#EbZsMtR#@3*0`i@lSlHL4KWml?+t#l`aCs@6q`T1?{b zMCuz^BvGia>720i4rP)dt0}9p8D(IEfK(sN%P!)r_#g9BBFnjOy34ja`yS`%ueZ+w zN@3oC11#4~D2sr}Ec7zDwCCzYjU-bt-7}%AZeD^6dyD$C z)tk6s?ptD6-vhSqAqCCm5QzmT)bu-X;=Yz~o;~>zJgh;Ol$$g+GeN&*@_^yS0+;92 zED}jNV3p20^Zy9*EW=f9U2*vlzWr6=lo}Q{vkBc)|LRy_bQ5@fgiZwz^`VnN<5>Lm zNY4)z|FbX&T|a`lD!lKe0MHZ*vLXl#*4z z#iYpY0ct+|Td}}R3TE-nJQ}-~*PM4*i#gj7U3u6t>LuwX(Z2MKu!AselL! zJ$c`?LwBCuQjJ}*&%cCnC|IDEkX+6PaXAaNgZ2KH@7P$NXInsF2>FSR)51ezBrHl6 zQ=6d~`*_Bsu+cfps&dQNfniFJxhjlXapkqO_Ok1ABxF&9RBRJf4HJOo(oi6W-Mgz# z{-+_WUP4)HRMNs`aHuF=WT*r?PB!swRWw14q-G?J8Bul-orU%3EVBO?K<#R9A7a?G zgdlE2;z1YTy+BBvp*Y{c+LlsL8Py)6>H2r~Jw5!wXk>)p2`lKEy;tE~J9RHVM2XzF zvXRoy`Y{A2VsTg4Y+a!x=R2i2h*X%Z`!FDF2cg`i=lQ$wft^ymZq<4i!WpH zcuC3BSr@&>VcFRRni7_pvgI7DvB5p&H&+rpvhZUBE|@iOp8C*QwlWPhKdwAR7@Nc^61(^+G1cM|1x>oN>=7i4F&>{9vo9 zEOMU9>!v&$YzLGXX`1k=ccn6(I5LU0OK4*QPLax71rP?- zBFd@P7Ge8Nd7TRbr>;^W70dc}gMyzlfN6(rYxz*t0-RSrZakidOzY|7OWQNuy!*%| zQu?M?sX_%uBAR7i>EUI_j^^z5#3NrRo^ke=RDqIA`D@kn(@KqQVmwCstoOYN2T>py0e$4yIFWmsyPIdH0CAPZxNgEl$YO zCC>-u&X67<_l$`7Por)@EPq%$L~1kO32mo{pKpUb=77sTHI7xME> zHQxe08#B)HJm~MZw%X}YU4k1Ze{Zlkew#dqMf1V^_VH$lp=9b*?$UCvvFhgAzfHB~YUvVhcJ348llfaA0m0~TFCq||7ri`boOh`Hy7*s#q%>ERY7npJghpc zM*lC|m3rF)2)py^)X)u#YYhvgyu1n7VJ6QZ5zgP;jl03nt9g#ht)-XyOsrc5g`X9yzOanx_C}#NYj}^PF-?n^E&j#hkg(BMB=jUAGH$fC#qK2Fd=qIh!1XM<)j& z5V0)NU*lkePd;JQsPAG-0!JbV2}xV>l$u1j($&_l>0b)(JPr;kLg3Az-U!!4mIX)o z@GE_wt#H@=Wu_W@l?jF&Oh+W?CQ4JC>KWOI@d|M6AmqwY)r*Tuwx7;;QW21WqxZjC zHcZR%Dkje+txxQjs=|f4Fgz7gbF!~BZqv!K-2u)?GF@9Hyo%21BrAVr^Nyqj&ACqJ zv;LiKPb^lnH?Zl2e8E{EFwA*nn8jIE)4RRnYHWOh94PNK3V))!_IgAu?Sn1oX$(L- zcvl!Y3wbmWEygL_ZRI&^KAB_b8xouYpfC~Q0#(!5d?6P+;u-+J*25zp-CU4#yA*vb z4jH!)YY%I*8jL{;--^WwU;m?pU>E5F^7@(n82s4h|0heS|3yV$m2tH-GIg>tG`9Y~ z5p~WFi5YbT{cAY&S1K=rapxEva3Tt^{hEU|q{N^4^0N9rSG$=ELa8H9tMj7?zuD96 z{>{3ON~!2@z31w^&y-A1iGqGz4&ig|_g%dNq$6S+h}?bDrN>2ZotM0pVG<57qmOjm z?jP)XN@(RF-Agj(B?9NE0k9d>_9D_zX$YPQLBv&f_r=f&&`->V?ztHG<9-a&jF`I* zhj4r}Cyo0LiZTD*wqok{sYd~RdHU&2q8iCXy@o~Fd)<;vk506NjA(j(Hj948{_Cba z_BP5zxs$Kt{JW2hK2yP2n@?9T5~EY8WbG?N61s7)9{5 z@&IsFSF=;ujU5aNe{2m}kDZ$pEu*%?PM`o_A3G?AZ@IUCq+v&%!;CK&lMp{WYB(Yo z?u?7lVIy8tCn%82St8O(dq15oOV}`7Y2l|{=NucXuMtRR2AjAE2D&q0#}Hi4Qa(h0 z~Vg7~4Rx{dZ6b4nWr6W%$$i4qjW0_XB_R}zRTkQsKiEh|0sLRczaWpb+x0D%+ z{>23={ro)b9@$N@$yyVO5~IB+7O&!}7%?$lbbtoEVt7^5V2a!ZYsZ7OJVH;S>%>}y zNEVKHR%C6Uf~f75xKx%a5fX-Z#>pxu)N81<4S#=nABe3UH)5<~G^a2M<7m$-<0F1t zsdcgAG<7r16mA5ghV@6cziTQP=**Yfpko7!`=Yc+*T@9FhwQ~DP~r7ORLqu zE1YZOdxXnHBq5a{aQK-$&+G4BF7)vWI9^~Jq3rOiMhyGl@HhSB7>MDzvrJK#=qj9J zu71Nycga+YmaWk@)*jfkWiNqYghsJql(j77qO~&b31RBYKi(aFRr{1UdIQ;!c~&pj zdMA3JRq*pZA_Fr3Soj{97C%??n<_cg53K?F*^0fEmz=6vk%60|UqKwdK7_RV(e5dk zp9@v{mcJ_n>tPtx8iO8J0?y;Dn&ai((U?o;#R@6%La1>`iKiY~n_i;|PTK&#tx9}M zkD#~CHGSHvrn#LFu@JkOIm^y*{I_r1f=NSd0#k@hMShc^uzAxRH*kD5sm%BfNk?8< z`8T7OMdk}u{fjbX5RTcYH(DdC+yS5kH~MuLc)CkIz9{W`b#({{@iHmKVQ zd!_2RZ~BP=MB+4858`HHZ43KyGbW~UY%36C^G`>9A%^xGoSq!e+jf|-lHHn{o z9AtfAy3wq(bs9AmZk$tUbNbp-NeI(gx@Vf{?eelJ+o?n0scq;yf+plTX1<>7+xX&6 zTt2o=7*n%VcBP**+7Q)*w|t9a=` zDz8rF2*9d~2cRg-Y+Q5=UbX#7nt4_h7lazZ5~S`g8zfp58JWV`4?{e-Vk+xVG&6#G z_w>UL`Ge&j4j@9u9f2mh#iGmpjUsOxv>N`0e+<{-cV^SRM7~s8Y)LG<#xILk3O?m!)>dY#~>dD`0e+)L{7GG^NyeYc8LA|_i zoA3_0IAl899%mi@YufZlbIg5W^HA5Zu!9YTB60n^*j#M6)lM zg?u0cWi$cK1d|xnnfL;qh>-ZOi2X3^VV699o+Uj8q*)yQb@}MPJ8}1K>K@PeXbS`3 z4kfhbar$;7d5EC<&oxFzBEFK5>-~QVasp zw_AwBaj=CJOaU6FunZ?n8FO3^8hoZwdvp*59{OUsxRBH@V(S`hp`=)!tUJJ##I5Ya zZH~*~Msl1zA2DuCl07rR6yaIt9Muz5ij_Y?OHRu|Pu;+V1>#0Q=@;aG$Jp%wi72ro zKtMqunej?P*ipn;AzWh+S+M7%{@(7>&tKI)t{a*k=b%#yD4id0gzXqo)9= zcYpxm-HAAZPZ=VAw72dpGwL1G0PlJKNUKja@zdGr)REs8-YftbKhI^rg7-8`%V#`B z{($wvGnLveR>1qkIYK*kalVU9}2l&g~ zJ-qZc{UHxfoacPy`ujdCwr3WQrsJzTqJQ>cjlVMwu*K{?7AaX@ehtCPz7)U;I1PAxXpHonzi{AxPoMsL zi;&x|;^6!AMIK+^pnJykBZ&GvEmr^h#s2zDAHQcFV2$512cU9=ngw^FjxZ}Y6+Tj0 z5JUJeUOnYapCD{ucsuQ%71JN~3}$$9wD;GAGpH!%i~sB4!W=QdyWfme6-C^RRS{*_ zetT}z%JBQtsF>mRnbALnVWtRqOk-E(SjCtXv2F$mhZ|8{wALS++`+uDcB)0O1cpdg zMd5vnl6I()dM!+AmwGi!*>;V;QIGAMvY5Coj_nNW=lgKFFRt~Hn84eXjnZJc zh2X$Q(dQCmSe0<^2LJ=SKJ5;pvBdLsa@@+a+Nv#y80?9cj^YY}KIM*~o+*8dCvo<) zUt~rFqsLrOzO+RN9{q%pRZrnOK^ah~^c5N01HYNL@n0*BU@OnlR8^K&fd&?Ua9*@c z5zlF@CxO8*)vYVfk?Jy=1(9&omuodNRd-fHn0nVXTMONg`^zHN*U_!n8EUFEl$$J! zk0RTLE1F_rsg37{F;zKKYBY3JcU)v5N|sa~(H~Q!bC5tmDG+gsqJ#m0F4|0COcuWE zscqc*eZ%8Y>yS01PFW&fQwbKl$S_sW;M&6G#I2vuL0gLn27ln#6FQ$zNu*q&9pipw?}=V*8eg>mr>ieeg_cX&izjVKE-5gWB!vB^^o%ri<)g=yr#{WmCT%qO+g8M!Yz~JEffOwRwWxmT^~=pa|5rL; zM03;J^!=atsSuJL_IA(uybQsKNlpfrvTDA|bR}8YkPlQ%FyfPB1+wJy@O+ufP8^}? zXm(Whx0NuGzV_H=***=@iA;D#oZE2qcVl8Z?HsGZU!sM1O460d8I{SJ|NCZkG(8(c z=82x_6BSb$K%$U4FE38Q*QI5*B~F;<{YBDbo$t&|i${A_Jf^AIh1jR2?G?%7tAw~G za~zZ0^JROPLXvAkB;2=U7-%x!T`EgEo|x;}@>uUN`o!75g#TP|Wf* zN9L3Y>&gGMksh1Ja%)Bb^SDTK##Gmzy3x8Mo2=Qmn&5I_=Wd?HAxF(SBzO~~sDf6O zlVSkEWt-VuhEe;PQ|c|enNo>vxH{aAX7;UZ5~#Idvs}NoB_dr2fR77+lF- zT(MucoWVB(&@l%V3D?E6 zTE{$+#}Pc+BQRWASQ_#pUerf$^+zI;lpIe6%2+qTrE}FAbOx^w;MpTW2-6oBIJf^n zKoHX^tZ!Dmnv)PIi&?d6i+bgIHllYH2GN`mCseKom_l4#*f0v4KKG0b`>4Wu&`R6OLUhnUlsAA7TFeHtiENLS5;Ydg7hawx}cZ!eO5fubV9k%Kuwh9fsFJ)f+ljdVOl z^SjiNPjz3)XmYGyU)i6hw1e?b|zQdwW0_$ioD1Qw`#>)3^) zcBCq>5uPOMXuZ_yjAs*^j;fwWx^s8~x$q*jG?o>LQx?nm6e5ged*#Cs3MHZI>DboD zl;zt4aF z8;;wFll90Hcq3gD^1%Ca7?YaHFFxo*Xn+rD<+6f26ew-W)(#<@gMB3NAfYo)XKGTm zK{Gt#2(?W~2p3*yGLg%zK{(`o6j0TNJ8{bhn1S_~L=QJ)sfakpA<1s6I zcA#gNL zeZ>6`crhcadX+_$u3~*z#WoUVWK_hW-kq)!ROPwVxmr~@srMAYMTGms!jfGeF#|?g z>tIP(tBlTc%uW3HyB3wit3(#Z3)~A&r+LIpBHpflSs47}))#g;P5-2x$#klECUcS6 z-AeCJYsg2ajNKSwHdG?^u}UWS{SIn6`Ceip-n#K|KLdbo9-@AMyoPBoWuJ!o4V5J;jCr_Y2|h{+1~wSI`14sfNij8pZl&!lkdDmoGYfh^J`-! zYx>?!kVheeAzEcz|awKV8<}pi?Cy!K!(rzsLhcHi-=v4 z7)Et%g?3lp3f9G8hA74#s)6{7FeFm8Iz*gg;tb_US7q&|HFc}*M;kGYM0DHuBxH&V z<@3U|J#8`?h+hr_(|-@=+d`UhOpdR$;}mQTCh%km8aj|lGj}EZg+%&n2OkU?<8+gQ zO=G#J6BpWqPD&KWRxc07S*i+tc|E_B@G&03RSlp+d@zO=pHcE}$l1ZYoNLQ9-NS=+ zAD15_wH6QbmhuP;-!@2Xf)cFDQeq5dZPL18nL9lj&1%FemCj*z!GdP-5qJh`W{k zzCT3J4(5*?cF`gtzqGKA8%CjcoFAWO9?DR?MfQ<#Oj~LoC0mH3v&Ojv{^&#M7?ed5 z^|6`GnM2UW&Eb=krhL>-w2P(o8_Q2_$O_sP(>FK<>Jt1gPlX|Lr}m83-@Z`F!0`C! zq9^D7abcD}=NzM$TOh_mjH?}d&LgA$AS9u;Ni>VdTD$#SjGOB@Bqc720f)~H3uiOJ zj0UW<5#KCn91Jtb$GHzn+$FXtwcV!ThO^J^*g<@a)S}E(E|XcJ)a$q0NW8!~mJNya z()@mqTK$IF4I;HNWGAJEJ7$pX>UW<%W-*LOCd-8$(j59>c^E&RwqSnEEVu@@09r|o z3mNOQzL2xe0Ls`Og={7%V_VS5c5rOq%`}e}4JO>zYVU2$MB*ueawa(vg3293DS1^V z;yD_YACH6>rtPIW(ksWi(Hp8EDc;c9Nh6yJIk>e?5IJVHX`K|u-OUyuS$=M!m8w}) zTU(>uX#}c1@|syBloUQCq{V{qAa+FYu}8)ZcEgN}!qp@Pa3qn_`qjT8wZDy4j6b(c z^|!H*&{N%MGANFxgfiZr8_Z%?NA4a~LOkw%xwgElwz5XMK}c%7-AKYXy#ynfn%rj& z14hMcS_Q=dK9nmYTo!Q?$LiS@kz7lbH}>_9nm-A3bTlbte{84;mE7sFNqlxvxm(pE zLdKgngOMVQB#W)yypf)g$p$X+Z6A(5op3bGjqNuY-k}KDTt6Kr0Dqb|=3z*?2!D{e z!4P}lw0MSjSzZbSG2S+wmino;~@E%4EvmgY%l*m2I!UgbVJU(O#HN@u_kemF&<3Z{O>?7Fk75|dIvnC}$Si=Y) z+pttFYbWOVw2-UM-(RKe#1|%JpC2DYjrzHd6R$|+rpnb&J}8+Ad~-6snLLfw<|a>) zonlS6rybv5H?Twv@);?)+P6yTUwm%l)OHtn`4*a%nk^*SB;vbO=~p2!3LmbwpsZ1v z6TgcB?vuoR8wg@$QZSx)U)D*EbZ*_)Z;x)|j7cB0x@s$^5uWP_mF5ld9G1sy^TQ&^8uhPtp5&m~LY}>qN)_NBatR!XF!k5?z(Q5!kJeOo6K3cSk z?o5`6fP|*J;zcogi}UhA{4HcN`*1N_SP2k5c7jT1_g#xfIb>ev!wwdCTQVxbZ+1#8 zL%L4*8=zhZEQFrGXP~{7MHB^*s~xWOrNu9Mac}0P9ru5X#ZNc*SNh8Dpf8|HUAN-m z-*Q@K^07}TY+vT$?=n{3LvwNp?;_&fxO<;a{Hc#U{W~VF?l_PNuTA2qdE-jAL)|vt zsQgJsC%2(=-{AV=cRLOAFU@kP`kF^84U4aiP)I^wfA4YQi^%7-B8z?nTG3cNOcgB8 z5JP(GUiN?P(x^NK>UkhJWjzIZ6Fx|)#t3gh`ob>#EznQ8qk0ek`Q!sd=_w@}08{Fu4b`otC1!4zI3n>FlTGv$Whg zo+>ZGlRm9SWolVBNvXhO9vt4E^M6F#*l&=X_jGDj-94oEa&J+ejnfeb@=Aox7^ zLwNPa7uqMw?f~IQD4abYI~sQw>QDrAkL1sgf^$n$K=;G^Vf&GzAi#VAV~LaDbe^3U zeBAAml3`mNGNyG6Z7~_jI$AXm=g(Ok^!5UnfbI>UV2s&K;eU^j%LRPCgbla`B_ z+C0HdQ1vl5Uyhoo-8Sy5CVoUglX<&v2m?y z9;Wy=OpWF45(k-VIgb!T`T?v_QQ)?nGrP$09LPY3RZOeTu z>!Gq)l04U%@;1D)MY(djVU0P#(w_`x-utr!c-SYQA<}=TS=kp7>86TG61Ke^7M~rG zg}TM$-b9Eukc|9bqyQnT7=fVr7bcYhJ;^KHLSG`P;;|cK*P?QEWY`EX(UKtt_zD?m zl1W$x6gi48Z^MdTB1h&9*8UgtSGc5nD^S*m#rWu=4hfPEz#8f0oAQZHgk=4>Ze>SU z+Uv%35>nbjMs)Qios%q?h9Mn^DGAt8-G%~mS_8V?tZJOX+)pTQ{p$E2IA%2gC8dY; zaDQiyS?iy#{&d+>JUv6d-$1_;HX5`%PU)G`Smv}vow4DT=-;b&V%&t2BbuEqP$Go1 zVIRs(gqfB9<%Z2H>dMc^g`Z-Pmz8HLlxMUsBm1ObD7WwQ3DKSxq6>gwv1Y*RlhVvZfL}(y=m%QwlW_Q>$RzmEOFP^TmVh{91Tu++YS^6) zhh7MU5lLMqArnl)jA}JV$ElkQhC5^f6~X27Om70}D=AwnPD#t;KrvmoWS&@^@$0VF z17*5Y3%-1COhfLYjN~FK!nw?zl&f92Eba_`gNC3PZyiiyo>Z;%_4hK$oTw#Eu^Xfz zy5{mZXx%ZFM%LcpV8y?+`_Y4}Moku8|6U;rE2H|VqqY~3s?ee(iLq4br^6Le<^;AqRc7?&-E+yNyB&@{P@d3HtE{UAe;eq=gSTqd( zx;_QRhcOaxjZiw-vpO}zrXelAjC70`qA8Iv+|)WsCa{g)rxxhr4%RH%@e!(rQt@fu z_oCYqNfqLmM|PZJ?+hR&OLLjdgI%!&1IZK`L6L3E@JdWi5>=M_xf*>HfCr z(ew>(7-T_*2>Vu2CPU23`P)Mb(_12m{kvOkPaIH44rI=bb~(e6W|?a$fp_m)ZHEhx zz!4laV6%-^Q4vJD4iG6W?AXKB%tYbF4@(RopoG2(R@?`Q#*`Nf^gxjs6w+YG4f7JJ zU_cO3>4d}IM?XcY?SI{;Br8}kXz{>rAH=rtt*sY_X>8{%#5aZ_`!Jq#u{ z`%1YxDqZ_bc)Fu>h!O}U=1;!B%yhnLx+^{^s;Vw7N+!CQMU+ojg#J1TY&zFEgXfH6 zc*vHl;c7W$33O4ZHvtJ*-rKm|5-wnicsD|?u*~7LmGIapM?dt)rU)-m0 zki;v&n>rKB=U1wtA$QsCk`XAvW!M21iQ?Tcw8NC##`Nr-5R(%7z2KuT4WtV#Sc3vm z+W_t}u9jXFQXu+=Q>A&av_a(>*tELV#Yu-}N@)!~nJ@FYW{P`}HxX^)S%ZU@XRJ$+ zvx=S@WczRw-RW?AQNq*dkOl{EX#%OXA$B6R#y76keUrtYDBZ?AvRLVPo-&g87EGXw z7%XRZp1Dr)qyT#w-4)Hdz~z9fW93~&&y>CDia{+$Nj=TQB+3=X<_KAT>0`7e#w6B; zW=54J)aJxRr{LC)as*i?(*|OdOuMIYM6+6<1FLw%t(1SUhj&ELD$xeYplTO3k*vK7 zbEMX)-iCRt-o9&i*UtiouawsZnF-iICbcx>!rQawWM!Nx3CRSSxq(*G1mH5?q5V-$hW9V{*>e#30mK#QYZ+KJHmRlMB`@=gbNnt$2fVb{LRLy}W4U(T#t&!@YS1Qi=eVS!AD ztMjmtD(JY4Iz3y)l71Ju0sce5$~uUP7n^{SU1OKj^}y#*C&ZlD^5oCFUV^n5@@M6- z&%zLd)I~<=^An{f`Cy3u{gPUEUu&EyiL%h%fPZbz`H&f*kMn3mp{f(gblfn#v=fXq zCCxDQ4#!5t4?*Zi-J#&l`VP##@7FlbZNMGwYGo&+J#9~L5e&X(ihW(&9pz=EPl)IE zh(?J|?62_^jlVvDv?+{^F?aU7;;%673ehh$ksdMU{aGsb_R7uxf~6Sm#e!CKK5WAO zhqHGK&NPhHHIq&{wr$%+$F^-d>DabyJLxzb^NVfci*2hXd-krG*?X$yoSLfl$NT?T z>%m&L#rUF?aTbr>q@qPc^3s}d zA&&%|k^=I?B20s{9+|ubW^_P@XviXtQ<^sIAGPx#_%r7QnOfApm9zl8GwIuob*diq z6=}vNYPjI*WbltRXlEd(WwSNr00LaXwX@2RO4JlqiHkmgZ6YSJFI96+B>mzs1)lef zDVKCP(8iF>zAR=kR-qpb`j`SeOGLjRRlK+PT_Dw$cog02uFQ;M$y`x?$YMZu{Lvzt z{V8FrUc80goI<>X-CVPHU448Eji>iZIgeM33boDz>ov?d%j5etZ-KUK5v9Q_{LpR~ z=Yd@O+hcxVz_ru2kc4K5cF&~b?4&(!s=9P00%+EfSr^51Z39R}8Zd2H3qeKFUA2w= z@;vDMMQ~Zwze17g&?-y#Ogj98N0pd;B#+MDHn@oDRT_gdk6v7I-Jl$moCE5Q2q%i2 zc(46#(TVz8-xlJ>Bax0Y!w2l@&~$@bOY=<`;BJ~)lgaARdh$RW+HDz6T;_s^rYRxv zp=amf`j8w2y_LCM%^n-P()&6k{xI<1ClH>ptTi ze@I)1N`u@>q2gA1zPn3xUhA@H3HB$K?X}JxKbg-wY@xxr~ zRA(ChF3c-AzGH{4@Pd203AJc=BRo0oo`xM$Ehfz5xgsGTCmm0?)}0e|%^oa8DhOVM zVcK1UmmXh+ky87=bN$`~5A*%`AQ=YZD=Pbyf%S}-QRfGtc6O{-?FU+3^)JX}scskL z(Pp*M4{W7E0tmsQxmifeR|D-KHW9kQ&e>IrodhgL-na@7zUw;(zmR$Ie3f>awl~_FK zjizsmyJ@w)D>DyaK+>94or2k;`-i&88RFQ3oyRcdsY>6@F>cIdywTNFAM-#zNhCaG zCw4uwT+%5&8J%$Lx2L>zqq42k6}mbMt$Fu&em>K^OU|hprmQKbbBV0+i`5;kc?Q2Drja7X_j=cV52M;mp*XCU0wj{;~4a5S3|*(ZL;fnn`Zo!K%%4==RGK>}o~l zuCYpI8aMOTK+tEY7Dl;wucz=qDtF>14KIo}&(8VE;MT0!$hn3g&f$z0QL`~tWojQ+ zEt+&QOGdR^;On}orsQSmx@^Ugxk$G}9TlWN8nEXmx zpyh1R(_Eo*!6^DXJXa?JnbsD_P4T%M31d>3nIN|VT{T4^JMe1AI$3R2`uVD#1g28i zTQf^qlrEJQh?Or{qO5;}DBe0_(@N}xzu-5Dp$`KgU-Vvnu!V1|yc)o2&m}Z5x2h-* zldpQ)AO@|A>ML&`a?eQ19CbpGUxq%wzfY$iTzUL7gWNptr+s}|^fT;<+N(`^-3`Hh z{`(tEfggv=!f)qRzhb<{XQr+bSUa-Iva-O`A$7aR##Whk7Dh4E)K*A6;$k#t;y6ai zVgC9g@jeffFM78=rS%8-CwAz#KIY|uZONh$tY-e||KI0Ztard)|3d=y_Ww`y!}9-< zfN^XrEjDkrY?H_>oTUjw6hSFdp#@pxxklFk#f=q_{@DvDasm0fK&BC& z1ZWL)NV!|u z5PvSg4ZvE3AZdNOn8Jru3GO_%mfJcXqMW4R0Pfw(7{!T5Z>y!Z$)Mu}3OP?yQ=D`F z1_v}x+#`%*@amtkk!H7afKf3EI!Pv$)x^u_D7BK*(2a<3DaE$mNcWDec`sefD7Lz? zQG5&mtcjIR-9J0DXo`#Z-iiek$eUSb-+BHJ9r~3U!l`0>AkOK^=~LM6{Au%NT21$N z6n*z&l&^G}dZ~G#fn?3v`3%@0_?khvM+*BXLw%*@d$BE8;kJN(@GbYWSQai=b8v%$ zm(tt)IJv~HX*5X_z5fF;LE{XbXY{QKp#C&2)P6=7>HuFGgcDqp zyNK`@iBh63za`qTYu89JH0~ff=2FT?aGoCaZwh;@08)2?dr2Li~8VgCd zwLka>tQY5B8KPNJqeRNLPP3Y*>Ko4kN#oGLb0)(__B6`8k>J>ol9G%k}5B_0og48|gAuI|G>{MaqX%qa+Lcp)H+4Rwa9R)h-zp z5T2}*{KO$MUsFv#X#kPx%?{&`VTf!p{S6k{{tQ{oPDj4CE8>P6j<;nk_b=Z9P4~ zn76+uME_8Gf#;_iE1<=4(y?MLWdMr zE_mB5$t{~L^{Tl6ZfKNVnB5B#S%)Y&2%d#bywih_SzRr3!8%!C7x{c>!!x$l&{bS`JZC}Qokil;XT}W-|GTq9}z!-%K@}g8B0&- z;0M!#Boqd{L>ZR((rAoq3E3$JPqpJMsi9zQMNRD5NwF}`4CAJxP9a?utidO3^o2*7 zvIY_LLPHqd1{rmsbB*e~ti`}?WDB`m3F!zKO;jb_2C}ic3(WM82xA3Pdw$^xvyvUi zr={8O$Y^2rGq8t^%w@Bh&&7ZnRg&N0`mWQ|YYuNpk#(hEX43c(xDH6(TOjuzoFunA z$i-Im>sTK}QcRYGZ=*8c@ha%X^I3`KdJsC6P=C+Bkh0rQ{uK7M^5K}xjQ(I>-vj-@ zOT>?cmvT&OThAty$ zm5@^Zv(C1FxsQfVYznq0KED4vvcZ1*7uXke+)npenbjCtmihIz%QXLv`!xUa#nGMr z&L0;-#rOPs7qOI-s1Wa+`s4iMDO)G-l(-hQ@|B%d|Hl6l0Br`h{S{RReTF zSD?Bnt2Nc{?^;c8>Wje0QRVUKO(gss^VPgoSrB&?SNP{63{0Gc-V`Q94-F9>uI?&> z;!mlW21U9&S6Z#1)||omC`EB=yPzFK&WSi}w);g8Q^9eTYo+bDR$U*e?KOFP>@rBV zE~bpxRGx6zPP04OCxo&3faEidoAjh!;R?2F;^TOR8D+8fv?N^CTuAB|60tPF7@CoZ zI*UE}MF>7j)fVvnDy z-gQyMvcB`bJ2G@gvkO+@q=odzl>m0GXnbVme3Csm z8TRGTAExEeAF|=$*cWiBG7qWUbH#VqmHTPe^di$xRm{KKn)4g4pPnafKO`=hi+#$1 zS&ByfoGZAA^-g!(P$X2mpctPR-zWrak}_E`QA(5}9Lgw}V&>yV0}F||xUMz1TAOX6 zOs^^Fi9~CJAB)u%Uo^V}y2Ggl?)9WSRk9PSJ@t{jx+ACi%CBT~d>sm_KW%A8#RXP0 zW488#;`5uP8;uh3)Lu0n#LTO9Ji*JqPCsZhbz23^iww(i=2+||Vt6haa;DUYb*>6r z$4kgA_b3lbVt!jsHtW%x`Au9U9{08wKUd6xdE#v?%puj7GHGDRy86s9{kcfJ)bN${ zI0=gt@Gz6HtXm}KYyUCjP;KZJi=euP&N|0MUo-!z$wO=MR9VB#vNXRQgr21(wwq<- z!p2}+n-55}NFbTZx!NiZB_GuUW=)Y3|2D~9sO8z zvSbe3_dGR4PLoFXaRjj)Slfc*fO5xWP$jSEpM^m=7o)P6pLj!zQaQ}G8MSdD($%pQ z$9qzoc_&|!?3cbTUvun{UUEIOwHn}EuawliLcSqWMN&`E&x+yZ88#r6rvij*Bk;)2 zAT&e}AiI-Dl2CDKIUt@_V)Udk%g83HQs9%?ghOo0phvw4Wf=H}YHcF@g1X3REw^#kR%{2ETgnTK!IwTA2iili?JfUxJ)Mz^kj#0cBIiNBC+#k zDdLsY?MdUUTlST3@gwZ#OK#^oWg3uC{bZ-~+rl%Bz;=K9=SS3MO;VO|Ol*uN%P{1P zVWoX2e0>IVSA@7{?lV|c&(H_WN660)Oe0z|qkkgO8&v*Y+i%*sT*Fm**f?c8h9tO3GFr`bUYf9|BwcDpY>f0|kihQ=Wrk=^;0xo7@(jc&Jkl10Tk3+i2yu_eOyVW` z1l!s`C@%b+xrhE>>=a20ebhRnYk2g6Nah_{3vOeK<$}Np$@7kZ8avv=FT>qQi^wxg zMCr*)>PblogL2>aRn;iGO8~(2@+|n@55g+kmzmFQtbsh3_wv=PayJBJ;?u895g^&$MI&{g?6; ztx7{oqfGeT7hmONj$g!9f}Z9xox}b2TGxE%^K&GhY7c?~KV=SUge)tJj!P2&FJixb zgGUFH!TpPuGD`()1-eVOo$u26*o8R64DsXctZTM9?F_raO*6z>Cm!h`vrfJ+zA!wK z{1J9w-;>%qjxr0oomMRMO&kv>G}T2TgbKT34wuJ~K~K8Od{-WO039^`6x{PYSz0y5 z(pl1r;s(l)b2Rn0M&#dJQq2^B5!l^o;=JBC(_K!4fWq19P$M7T{@h~o!4D_c0SXy- z1QNhCOLs|z6Cd9C;QzTLTDq-w3opRfmu1$i;EW^oYWx%ir>4d>%Os#Kd0JP{uKUrD zEL|(f={{+s;@()$OFZ9m)w-vd?Z=IuI~1sytfW7uw46OWHAK$m=mfgJV182>d#(2o zfR2gSFu>$0Esk5wKu|d3cx!r2VBVdVxm8QLe>NddT3dFTu(+hE;jQdi9jMNaZO%L+ z=QTVqghQZ`+l(mKVQI28q!9M9YFP215D2#-*f;`rtl*Xgl=e%FAc{8QdGL!nWax($ zb0=rowWM=xLR=_kK%C-5J7pvp!gG zH0ee$M|ZY3TwVI{MD~cUKssrCejbJWiVZ~P;feC}TnJi;NPa`&IGU-qQEQO2^4C9^ zHd*IT`DaN6lzht`P#cCW@xt~OoS_}(L9HT-QKV(Kqmzp)Rtm?T8b*0X>^^>2NBCOV zeSY`uXkSH^fD?nwk<~mPWc||z*lKUl7e=Xt1CzenlargNbL$0)*6Iki@%zgG2&(Oj zg*VnjzXsGG8Ysu+s9nyC*`NegZy%RY7u-gb;dqwF&>LKnI{HdYwTJD}Z0k{jJ^LL_ zmFg9puZ>Lx<;6K#q4-xB!@v4JKmHsy%eMxIbc}U5mHLDH_tZ<%!lb(VE+hzlr{Dj6 z>iri&CieeA$c#}q$ypoMvTHlc>DK(&O{Nm2MuWK(CiTs?4Vy~Y%53C?J}^+LrxAEL z3H~=Wk!c52sP1Sqo#}G){ZPE0`g(bM#MR{!uY*CXg^_NvnyRH~b==6}CAjixJO0MV zxDM~T)x2t!z~Kgy3hWC_s-ayB^G!g!_QQsaJN}sz#lmJuv5Ve|G_`$cnWo)shdmKVS06NTXEGpb^>FV<*C!D0du+*_9- z>Ea`lx&5nLsW0A>3t6ZlS+tri!WC^U$FQK7p8zL!dSfP{Dq9|XaLL{wbZ%oV5egn( zJ=`lR%vfQVyV~p+Rp-1otTi5{O29|=>85W)yx6C-9>P_>8IeBe$X)B};>wR|QW$!q zpawn7MV$#C6;37YB=1@9*e))u{Gp$0G_lhXMXJMihHRR><)tr`*`=YId}BaG9l+9xJK7$wNU%%}A&3rY!bl_HN_sC(Y$V($}b>cPZ2D8Y|B&EjW#Si!|)42b(&~+`!^&|2K>3QxjI% zcsaXriNt_)-At?+=Q1}K)=M~@ikl$1=bzE}OWbV0p6F;pRB5KHY}!br6v{a2vz#+g z32Uq6wbEr^t~nfT?v=1ue%OdKkFz)!Yl|}eNpsB^$zAA(v!ks`O+kM{lz7Al9pt;p}YL510)XVG{wwc1>N%!w{#Y&+O1#4nw#RGXcEOpdFgj#N;qdnsVP9mZ)aRy+#R!EJ5xFQs4o?w8CLkX^$W)SRb+mUlwQ~dOvm{D92au5S zxs8u`pNuK}^}aX3?R~A~ec7@y_VITA$op0w;LQTToIeC&A5lS645e1qOjbxo8tdsq zXIf8XPamAUr%t|^<+$Q{uR?p_7wek|LZQ7=Ld)Ef;)ODiu;~ma7bdN!#aqj}ztHONEht_hr zy^}NmPI`*jvPOQ8IzC$JU*8>8noXRIwU-PhLYq0)6ou6sPMnoCTg_2MiQNthn8vfz zT`?zwLu5c$JO+=d-8%ztB?P8&j9-Csu;Ca44mI@8M1*_`tcil-@PQwBqeYkEg;7G+ zCHS9yLLFn^Y2F51)D_+^Q{Ety__u{4P#!_1jW!88tf6U~Bk0rj>Zm>jJxsR;$$D*K zW#>rDE>*vEwEjVGn?*Jc&YNJhXXyZ+kkL&m_2MR15_52rns+C?Z%8gP}|+324j8IYl_!a>w9i=MS-S^wlGVH19!x zawPxAX`#2{0Ijncl4x#YaA#zkbf-}Jel~Pg{=z@tTc6gaSiX9d7?vKXS(qYK4NwFs zk(M|bk+KO#Ci8Myd}cg3N~1QcT+Bw3^MAKPDIgz&8dElOQBZv9M%9vwrv7H*43e zYjvC|Yg>k4YC&yLO6e=mtI%t=T3WpIw9mI6ZO+}NeXpmwGG#&D|M~iV-d=gTb02Ru z<@0jR{5u|V2!@Xu+R1e!7Pta9>;`~A;&UB@%)Nx5qWR226Ye9!_l~jl9QHZbc%&TT zyX>kU_+)wKI|;M;h417o-FQIc^SiFf+>$dB_+|P~1fU!%5tf7l38Im4!8N$>kSAxf}(Zl_8mfl+2bmxIoDZK%@MP z%s8aVJViWh{A+<72<*qkY2^mU>T^y|n@4jaFt1QMi{*(N@QMafz~t7epmB>fpgu*Q z$ffWA_#l|_H5d&`EO-IJl)BW@a{v-Kx@7j3VnoDuUK35R=n6+9EDK5umRiuSVpS4;M zDJS2Cn!gBm&9Ynqn9DUY7h+l(M^iAE=IF3HB~o-{tsWr>$TiyxTqEJjbJ6kO7flfV zkjL6xiN-hXM9o7I3O_ObAP$Fe*(e6q$~TCJvLP>t#&EA!N9Ja&mPT%6trkbhusKyy zFf0HL`8+~JE?ftsoJuMF%mbE6M)q*zbkC7ixPjq&Ug2$l&EL{sVtdo4EkJyB`|-lZ zOALkm9H3TS`AdWSR!eTPEON$b&rNQ#Fp`(uDV^fVT;?s2LSSZdt31-1&54ng?{-(< zs>1-)U={$D^-@I9BkD2~ob|#2iiXJSYA^>F%sN>BkY>HmI9x0FT^x^q%K1zY_r!rf z{W(({C9H(=DpvAO5m@0==VVjo{A*uZX)WfsqJObT|?cjRzEbMsj9$Te#1GZp0+h6<{5x`fewY3>u(buapEqo4N;Xy0#=T;rK!G}@@mBy` z-w%IWg3pZ9o3l2q$aH)hkK)^1RNZTIZ<{UidBpVlB!(aOwgH? ztL(a&&vLUlbyx1__24%cp5Bc`AF<9myd3_TI_Uf9@Tg6dv@a=Z`G)LWbQ#Hx3c_b+ z_NsOIe&uNfh$CT?mEJWo;UW9aUdOV;lYCv>$oHDPm+HrY%6mCe6 z#J|EDvCjpkDNIff3jGYtpES-wZ`)bHg$6tUp5>B+o&7#XUl)Hq6(htfr^g{yn>xD-TbIg~H4PzQq(`2FqqO>^ zYj=MyPe~iC^(g*%u?odKCd_%rf7AngtO`3mysbz#d-<2e)_#+`C8VgEpC1UdW}!BU zX-_G;97!U)%uOxeZRQ{mF1Y95@PMmNwh@)Jl$!=#q@J&Ve|9SO!dJ~#E0T{98M5X)JTxe^ zn5DjJ{>_G%n{E?no~`5+*Y;MYfluAGOoBK4xlaV|&(9D`Nu-JjZ_&zwa`oq;lxfLs z{pbY^$-Fm}PTH;2oA>i5Z8)i$?X4KN9Wi5oJR>W?mWfQd%@qCz0{(yj7GiyITmghI^w`otwrgd@`T5S1%hXcKb{n_H^w&NaiN@d5wri_z^t(Job?|0%njRTR1lrc-e9(jrgODOo{^*;_-ZFx ze4yp#)&do4Lm_7x1-aprwWKuk`sW-LuE}ChH4UI$rBn8DOk6yXoJ^dWZq~inJ-vlC zyo1iU3g!|{bby#&puCCiZVkIflw-f>&<3m|3E2SCso(^)jVg$3IEnnEDe}&)8z9;; zLiIWG~gfB`(AA8GUCR>7V zoyB05s<4rccb0q4Hi_d;wut(GP#Tj5=5~B2!fl4k!#-%^#sasgb4Iz_2!oR%o-+`Q z?qEcfCYh=uYCd z?~(IiomDk-AvgW3rx_-rw})%o7y7*C+nm^1H9QlB4g=77WB>vqFK%Gn&+Cy4XKw*)d)KF5qEc#%a>t#lYeDn%-ZRV^BbnV&0=n6Ok zCw;z`WIpfNM2+xjyJ2)P;$1;OormNNx!_D#W2K&{4Y+w(Zs*AoD}a? zk^lM>O0QG={;B0UTw-9s7A2}t^)mi|I<%}g3M7K*r+K30r{Lc>A6i0WR?&_&=t zgkJ_@WixpU+X49N7%AejK^_-n!f=bWeLP@`7hJy~?B~G?n)q;Xbi%xQdE18Rx`%wCRXUvZtuBtTUXb>(+wSoSt97QGR~`y@2K#4 zxHuy*djgPndx!uq_z`8daPH^ogAvX#Civ`1-rB&49b_WQwZiw{$2%x6R!_TVj10L8M0lKc$6%H>FSi-rs7`ahrqU((Y9Yt%}Z+R8fY3Tb!C%O zjjX>Ax*q-s>tOy%x778Z);E8PH!6oj%UUQ&Im+lR^>n>OxqIES^5YZ1<4Y!m&3ngB z_ee7i<6;;T%PF+57fzXlLrpv2U0a^lU4}47x4@h#z#<@LC$&t9TNINg4Z*|#X+sKXmhQ}SfJRVUcfdpx}S7i$dw? zZ0|+4Z8#f6Eqyxk+7*on4cqG6$W~5nY7M5QA!Rx=_Hf{QcZV_%qpRRumxCK0VtUi; zsZ}q|Kh&HGi*0>{JtyGZBjU3|u8$!oIsQUt77R`{AN&>BEvFk0X^x?P+Wv%?pv& z3Ss5qJUYwvCYpcmNd!+4r8`8FK*W|N%BNA$1x-;Q<+tpE2+j^WvmqJFQtTg=tHdD-oBdt-Te8OYPY>W=9r|Ot$&$EargfR9aTg!d zys>Vf-ockK`9H{7x|tPxnv!d?$r-yBW-1X`6Cmu`$q9myaL$ONjdgopyLfW=y^Klj z(fBt`%YLB|Jq+#z<*V)1fEu^|%UG4hBF(!jykVGcmhUyycO9M8byze2OcaAI=WSP5 zWl|5BH~ih&Ks5=|y@z@&4%P*uCK|MG)jEFr$&@i=xM+N|Xi~a@b`5?` zXB9JnL53op`cy(n8Jyjks#*<;n|tbB+V=`3c{y*uUYS4XXDVf6w(^mH%?q{BNLNa8 zS#4u!WqaYY%0~UL$>zr@iHmo&#=Und@_G z1mXg!cMO>9(Mhb;7?xX?Saw8+d#LFma3S4;I$P4l-SxFpgDph`1r5r1djO3RPr6Y! zL%w`6`M09!=PM|1y;)TI_`|>OI`P4@x?xDgJts)0}k0QJqCfyIUR|jNY_OW5D zkzvmiQl#>WDw;M8Y3KZdl(Mrl*qhlp0UIaty;V54$P}>;#R#OYO=8sag3!0Kyz0Jo z^#`h%C(b~s=5|1*<_XI6?W>%Uj@sw`~hNd!`mBn3&xIt|`xMMhYLh5{Ey>htG85kwn9a>~kRqh*5Ax7n09-nV)jB6>H z)L2h5=SRrdkR7PBq}+2FLyp^M$v|mc4V&{r~D7Yg$ud|-2#tZ;;#C$d2wZt)3%B- z$F4FGJ!m%{>I%@Q`vT%O7fP-vy*@mVorO!g>`jCFqHX4~R8_(X-Mz{l;xP95Dz3Ep zu@+4;%tIqhZG4LuZsi}mZ(xs#`IbaEf9%(jJE_nXuyn6P~bjKw7DyLA@P+otQ_j(-c74#Ffzrl%*@ADr*nIf z?l6oN-4!t4-D(UmS|xtCjZ{r;=y2@Kp85yKjjHwXQd`}6lTtTg-a;nqfgE{wi@NVnZPS&9}hwKpC#4`$x zyLOMk4@yeo2Z2l%W@{J6W;5O5FS-eL3SWzTEU$El`^DwEQ@&UQkS~RO6RWpz<{k>2 zo;x9+4E_UuY|k`A)cfK(EJVLkLg2pE!*3Lnfa{4(U7}IH& zcsVj4E>>~EtnTA^T`74!!s9Nm^@^=xnsl79r$O>?FazV+f`m4kI0!=Gc7zqKnmQgo zRNc+(fJhM?MWBxO!Ak7D2|5~V;96Ic1E8Zlkj`O-lLDi^JHtWViSChNTst8Rb^D=5 z`F<2@LmK(W2?;WV!L7%lQuNWG>|2`jKK_ygpg**rusFguw4jIstw#r}v7*lne=PT- z)r4z#5Kj(4j1E02M#$A8=@h_m_DkCaySAa9-IA>@h1mTM#13bC%>*a}=>4=!2 zM#-rx_JyS;#Q7wm7{PEHkzq5?jF=giLtOHRb7a>;@!w$~42Au5MT;}lu!!XK;b=zH)Om>?`DnfQ%xFW zd)E4v4@2-T!u7#ro#sj9H^FQ+g&WH23Hi=BW#}K|@q)CQNyj_JC#jc5wC*Q_nmYV;|Rnp49znjHaREd-9{|F1z8&sYK#^+SVtVx z;sR+(3<*;ZCeI@>xZ!smW9;+dliI!zTMc3q!R+}V^uaEA!&wh&5Z?U)p&RWmAoqfC zG4j_4WGB#Juk$8F5y<-jiZ_A?{P_X3U3mR`OL#-<2lo%@*H9P!3`((6+2{aYV(gGH zULGlhVI~nG`Sbw1F%3tg)d?m6ToiVj$m9U+kZqU#WItFD2qC5z7nSslP7zu@#>A~w z1BgO|n1?dmu)7$!AC)?AM-=@_rv^i~231~(v{AGci}4KL)1Xg>I%QmHiEIOSWm}i# z&pw@yao7N;15qzYNQ8^h^Sl8JPSl_NnQhX#4E7ir5uHQ&w*hU+4@xt|dpxHq2z^*w zgu_5*XKk1Za)S=x9{g}VI?A2OzVHK^iH4xI9dLUu9Vvu50-kyljYI>u0qvS1becS{ z{QjkbZuF#I1g~2y1yGb@q64VzA{^=q*?N4xSae5d0cr{H?3yxMXtz+yV+lM`n?gLl z`q7pn?N)!~>Hn&2gW{a6phun?eP>r*Ox{Msn8kaFSx2%ZJhW?1FjdD$itt`NS%kb|RJd%&wHaU!SiLHNGHQyVGV+EsinO{!cdw|%I z7oq(DF924ucH_;^nOLde5KC9nzz0t}k+wU4x7D7;s|+#6OnQ#>U=d-wq7|A0wRI{* z*e-5CSKJ5&;J5bxn!!L2tW`wlJS0Sg7H-(X1s6TEU#|-{fWr*Vz6WiIq#zvqg5fdr z_fUWz?O-{frGbyD#BLCSx>(D!Fy}=vF9LUeY?5|3E*nn6DY2(BD`>C|=gfWuDTS0uop0cw9_}hlpc=E`-zIUHMEiatr zfjk_QE*aZ{$O@QfULyQe`9e&GBp4*NM_DiXfufgJx>L&D1tn$o zwIn5osE*~1_m#J;VQRwk41_5@;^}dP!u!k(;~L~;3;#j5GLaux882O`6d@*WQ-S%9 zB>9DN?jNCJWPBljf=mt-Djen~i!adi{&x$x^!m*Y5v}rZ7=t_XpmvMdnWb#uC9@0EnQ88b;C}JBTQn{Zb|H=6!tQIo@WSKb~ge)+H|)S=%}y<^}4P0_xfO;B-(Y zn?ixMI;?cfEqyQ>6jXm*g>q|g*KNIl!a9hyEn4x3v zhB{-|KMIo_FtLgL&e~!aAPj9qf-h@P<%UEPCpTVhr6h^3BOvY8A@A0Sq}38qtRalJ zMlVQiWxUF{x7~%+6jJskWx>q)g8#9lr@{-VmQ*>5&JW6cFQ|CIx?poou_`+Zb}^8NC#fc+li!=r9Utp|qKIkihTXTl?l;|d-)-;(F>8(A<=ZeQ zoPXjxY5ZhmXdX*hnkiPzfo-$0F9SPBu2|1&gY zHm$79->f;*KaLA0Ja9O43u_*9O`mj^hW^P&59s8R-u>k2YPFR0@b%`)WYBn~ovg;m z1c^DihC8*!sb#)X)B6r5;GaeC-P~RfOqTp|ASP>i_;Ee(^(H)i zOAxka`s`MHwO!UJm@TbxJ0~#7gmEh6SlNEU;WBsp;^b{y`i^k!?6Ix+#fI#)LNcT| zz1I3}pVbz*K67ptc-yYvpwJ+g=Zg4uKh?KBN8pN`=bCl>J@yG!{5@dKZ_ct8K(E&P z@K!MQXlDQDmENRH@egWqjb;ZDNUV2ik1WEtkC`wHdUQYnPY!#T+HLod?alugKjx^y;3`tPU_`}T2PzD z=`d~zlAkv8KE5>KcKJnLcnTDOV$n+*%Af;Hw}E zFD+se^tc89?a+u><`lIlwJz$%p^{P+9uoZc3c&oZfNdUjG#IYm=MKhbZzA7_y8V)% z@!bUoy%~rM^GsVvSd3MS*Ba6I>3s1sJ3}s0j@#@HhgC;d;6k?juCRwwIiHy0ogLNw z=E1jysn=z-wPu&gCwC#JqX;$O)K7K&%>3Ce>445XF*XbAafr?DvynROhi9)n;XGci zIrAO%DTU7#OJU=5&TWSMgWJUJ=F4tBFc{nQO5}m%FhDgE>7pPfWJ9OGp!IzXURrGp z%IDyLt#X{Tgl0yVLM>Hm96Fbg(p5RAI0WjBCZF}5?Zlw%Z}@G4QBhs1=AaAT8ZhoSH< z7+IM!3c2_8pfZ#Xio0S|QoJ3*&;%T2PgF>MQ)7Ie5q3L4I`=fEvhQmzT@N2FBd2kp zehCwR*0Bz>Ar}_SdIUcZ6xu0ariTiLAh<9^(LNtU-kaHUO@{2@hp!&q8y6~1e{T|6 zxQlEjK|;l`b=Pp8rdW1yMaUD&XuW~y+9*~RM%{iBag{t4 z=z!_h1`&RZNARdq;_!B~Yw?OvX0FV$Ls}(w72oc-(&Gmn{|5!?gF`B}GoHxJB@4X- zZ=BowSqC1Zr)lkxx0RUPk9P*7r>%n3=YT;!>X=po1d~gRK96@brY%2qwDr2spHJt84WC|` z*1e$WtAamiFF6Nz-sKc+da*fHzdMQ-e+Mw$Er8bVmyWrg2yH`tl$++guvd*c@Xs69 zf#Da=1I178yK?WrH?5x&H-A2fU!p&aUI@Jj^K7n1%$^)}Vcvym>Inzfp9VE;2m#{n zNcPQwfz0p7n-+pJ=yxc}Ew1(8f?_!NLV0F_+f+OD!4fwVU71g65yhn)Jcgh=Hw&s~ zHmbI1yA~C1$_>ItzjJW42{)<+S1UkmQ$Ku2> z?T>ybt8PYV6>Irh$fsnfuU$9NzY`Q091}`BI#;r!K1ntSA{N@$z$%!ycQKO7$Y{r4*%QV|x zGAJ)~Lt5%@=}u=j&D*?eTp$3NZ7Cce3@yk;#u1Nl+=0YTs3x~Q$&7_uVP90RH6ky(1 zwuiYVxr{A2EJe0P+UM4EtaglYp^H^|)UVmn_rpC0bY)C~B8I6a%QfY%^mj(cpHpu9g%{%Vw(=_z^eYN>A>ovG~}Z;^ors0Kc$8Il}xg{Q%Xg zKp!=U?ayS<^#{>O*h$eVs|OImpA!|G{m>;CWlKFL9HSy1lOBHK9C6h_ z^^c_H5wBG`yA+jT$lD1Bg=?m&QA+qc$zvSw{gQinrkBM_RkXIXK&{dzz8FH z=gtbR-4F!I`Wy*M|9wO!XA)*7{q$jUk_`$Z%t zKDa4s#O4ZQOSNJo6>p%kE2VDjRS@oy3=qSWakESx;%{~OApaS@%o-CWA&K9H!KG{SQgOhK~u5k5tX1r0a@&NHOxiW!nEoXI}vp z<@Wr)l(ZlvpwbP}At@mxozk@|-5}lF-Q9>FAt<1*w9+5~A`K!)w}90D<#$!C+^gL0 z|2)sKyFBlFX3or+v*(?2-kB)I?M;O)lLK#u`$Ww3HVrZFYU{R_sNWV~AO?8(<3p_>#`wqRWn6{9=A692|aD#1X?Ze2cgm)DFn*mDOS+n7+? zt!765fZ$}jXEB;QL-fvq@U!g1(+qF4{b{prg5ZF>5rvggw+Pc$XUrwjUdyR2_&Nl> zXWTtyEO#fo(3=~Pt77zy#n%x?Zzc+n;i`$Rqt8&GcqoOO8rT$1du#2{(kN#I9xk(0 zsCnQe7Wc!@Bh3LiyQP>f5R_ko+@A~~OaHJq5+s7X2d7-PeU?ym>6A-j>`oIthX zcHkl3|9;?>Yg&;yC5gM_Gi#bCh#*@3-t-Iy7fg{>7WBPsOHrlyS;9>k?XN) zx%MWqq|;jCw6-^WMrPa4I3>z>KUQD>X?r74e5_(i%e3ZDcX*(OG#vxw@;m0Jv(Nt-7!shNOvo)AAOG_vcI=$oUAfAn|ww+~RCxfa#QWCUe8A^fe6A+#} z+=RQB@ zVXm*H(5N7q_*Idop9R(tcCh){*|v%2Hkuf}&bT?qV+7uq%aeB@eBq9U?tZ)19hOBP z#8DssK1(cCSA?t4M@Jya6Y2{C^(KY--++dzJpX{ihJ;-`Mb<;sL%M4Ie7`P|*Ztb` zruqc=l*b%Dg_n;rV%t%Ivsa9V#3*)4=HNF1{eI-5ASSkea^{3`1fIG8vu~R(a_?;T zkq7E)38xE`(=~`;J0xP3ViC4v(C1y}oRO!n72u5ay|Be;=b1+mXJQoG9V^=c*h2dhp^1 z0UIlI>GX@1tIuN3RQPfEcM*5RML$vM3)EHcvQ77JvGMNgoot1$_u0%ewIupsy|i2% z9eq*xw!)5-+?0`Ea9AU#*{nEIufvTMt0qtX(HHS4bYxoBu0{PIbM6<$*^qCnMj(-O zs!)Hc0KP~BQVzMLrq6N{8>k;1wdRBxa48Fs$9!tVOf6XtXV^|+i0wUAk6AA{MbYIf{> zoo<$4vQZ>1o{Pj>SQ!#}iCD;u^|Ne0f*PGP6!9B-uAmr?bZO5sJY!jXt3 zorkP45P>^K{pd4%3X$jLk@P82{;CqS;bA<@8KbIV@K{Edu0 zn@gA)^-?rb#8T(!rDuAWKC4AF0+u>|r0&1}RQ${dvSM~#7Md!}DD5%W?8%60agB1E zn)X(Z{8L|el$KoK{4;9cv0Mlnd7LDPb-_UHK`Y{>Oq&yCe<>;YU19A}w#9E5)_p0& zjg21S-r}{yIlks9r8BQ?a*<86sRnD3S_Rd%R&aiH*@3&+H>%FH_=!b?oPS;^b6(3> zvR}QRia*fIx^PmShZ27oDt0hGwCPigc1wzKG7dDXk_ps+mI}-mQ6KeEeu07CrOg&S zM5m$wO$q-t2wgnUa&;8jJoeW7yjEAW8W@`FN9y_PMKwYyg&Z#jr__NsV<77dBX(BT z^m(f8Cmyk>7H1p1X>uWEdeo^vEn%J9y_a4z0eN~uY}oYk&@NQfu&%cPTw>@>;L=>e zPq1^C`v&Zly_+-XlcpF&Zmbr#WkB4$WP-uPcsTx*vEAlFpfa@Cz;@i2z$1*n)QVW% zx(eOnx59n0@N!=`R7_?_ADSGL#1S=nq2KolP|0l!3^V*7IZnx&T{U$GJL2LTu4uf7 z-@Hg>8*yG38aqj1pCtaFchanr8^SI7WaIcXu@v{ zJQ+9IRZ(I~E<*dsk;qU+oA4Wa;~SVM~k}%+O>WwNM&Tn%o56n zG~0gZw=&HujRrFMrdFKS(;v%(H~T));u0$DqOPi3^GWy=V1iL^YfOki@71fvs=aelC!`-I4-9L?&iQ?t`-W%b>C6^tNr-Bh9M3b?u8G-g~Vo86}pR{Z)=Kl(Od z(}{6i4VR5+unjn)=KzuEB^mvyr?pIqDSbf;|GjpSlkxnw-a?4S1c(Q5Bp|`SHX;_X zuOY^5FzMJ#W^d+MT!b^DF*<|hXYufRUZ73*q4bff48x=WOTN)Si5a*{fTq?wHHD^jg2Lylq6>Zy<)lTN4_zO z9kn*o{m@pAY|1esh7dZ*cH6Mi{WMZqbtborp^sWVj1?iGcA4n}*Tp~Wo{g+LW^`%7 zY8TE$c&8*5sYKXRo`b)_oe-WL#(-SBKt`%dgwfwfw%I{(19=5W(f~#ZHpZk=JSEVl zBbVHPj37)sH$l83n#J$v+rs+Xe0aD^8xQFtJS2(!y37{XvJR~d0s=T9!ob@hgTb5d z*9=;P#h)W5kjhaBvTI8Sq?nN{Ajg??DP=nZVF72RIOE&RkbK=yW4OOc#quDm#%6&~ zLtSRpVwm)WidG6=>3Wz8f?tt@3{WUpgd|nG^)4W+g-@JgpJPW>dn>7|hdAQth~Flm zq$V8!{~)}(8)-P>I;qmL_vF)A{fk5#(yqd?$68cpSn2 z(Zz|c9)CSH>Za55^s%$J0MYamk?yp1I(ldCUGBO%fri@GwRM3-_IBi z1bGGh`3tdJ5U+8YMFvo6b{6Nc%osh1M{w_f!=z0ybZF^#z{i}DeK%kFjn?b}?aW>O z$*4NcYk55AF7>kITwivTXxG)VJHfXpmn}aO^A%z+(9)l@_9l3JS#xpIe!cxgVatHS zYT!6R-KnCcX5;K=*$&B@Wo_$$DLcHk;;}?Zv(ydzOimIp)o0GiId@i59ux67A?mSs zI6z>}T<0}RhDe4fdeqj3#oT73`lQ3bxoe^ZtU~BU$RGH7<5geJyno26W#pe7QX!6) zyoLxT?5~|^!Wkn*0yj#z6yM_6JTOF)o*Hmnp{BZxoS4ig(Fl3z4FFqYV|)MN65tHXBIgL!BKa;ab3`-ji?La zY$j0X69`k2Ys|8DG8nIYq}SR$Gm{3*@)8?7jdi?_M;fN3MUZ@FS!foQiI5(nt#51xYZZ?l;v;|C0 zWcZr07Q5F-(Uj68j9j9%tk{BdzSt;pJmv{4KIJhj3^R?XNURl$uG8gco~kY)J(?}m zv>S+lk@jYVnxc=ROCC%{L*d!kGTE1=LvO^T)_3PW@Zx*it$}Y#!#R97Io4BY$;62x z+FN_Qkji&BfWU6kYg>e6noJbtWZBN2L9#Y9RWUsk*$$aq&w8xgrm39q0VqW%O+6#o z7FJ*W!N|Ube??O{lV83&7NSrX&OMPbU+fNM+I*%p#e18Nl0<4&TPKyhMpPw{9%x$Dffz6hGg1Rgr1iHz4hx(Q=PbwY2BT)_wG4Kg$-8iy_MaeoXW=6qiP z({?_Www)KbMvax>nHtLTV&4UuNSSu$2}h&=WXvb=)ROn#PKc@ z`tUaXQ_|s#I1Hi%RvT#OgQ0md89o7tttOFLl>(f;;uj&}eqYV3JX^Hl(t-LGM6E1>cz5IxoJ4aZTXw~kW+8Zf>J#tvROh#GRwY|-+rGH+DvoL`#r9EZ)@L$K zvmjHC7es5(w~Zwlid*6Bnf4Apv43xIM7zwuI`W>l1L|~;`z>obxQLeg5m}zSM*pMx zpNO=;lriqn4kMm46h@~mUH3h+VW2b=34xs4KGlSQ3qDpM0=HE<){U-`r=&wIbX3(`yL}^=LQOW(F{H%l zU3}7}{>gyKy?Ep0PB0^>;Bp;v0J8*IYsZLsB@e`ww2u5BYJgJfUg!hYdj-Ym74_1P z#T&e`>NhM2w2&(xNCOIZte>mIk6^l)Qc4DSSz=z%R>Wh5`X?aoqO82YdH7~p5xc5g ztY}>W($f^bEdBBta{d15HzSXpZ$-s~26r5})rc6QMjT(3=8-57I^9r4K0=0Rs;9Df zAq`1 z!NS+uV4S$8I}@T*`eA5X#420#iA$uYe8tS<^9;lg>tLEAXTZ39)-bC#_i776_3`Aj z!DyE8H+Dh@0}@6_pp5&raccy2lH10X5aD({4>(*4&@WiW1pbz@6h%y?RfV_5BE zl5C3f)UfF*o~=$;n!{`S>7c3;5r!DHI_|-es@I>U+V@;e$@XJ?uVJ1y@} zc06FGaJO~>jt#iAbQI*GT<7B>Tv`&#C0SD7-|UtVpr{ju1Xxdrw&r)U;!Y&S%S3lb zgc3-ZNwC0;I4oe5bSNW6M=rgsIAk}>C{4vyVat8o7ao3Ee8&ZR=CN#*bPd&02%Yh< z*GFZdGI<+5aW3!*b=jI+hyd)kt;jLp1NC}lzv^jy+qc37e!6Z-TpO`|7w*k}FbZ`hKtoognR2x5XY7v*GUg8sHWon( z)}E_T+`5y3$KoEJN1!>@rUN!#nY`xcAyV_Puvb+?J?geOdZ0P1tf%Z)nsXP+lj8cQ zcI_JboiVzQx66nC5`9qQ?;+ZJ2L!(`Cl-De-h z)=)CH7rW}y5B-*g5`BkpWu!kX9L04v(tjW~b`=J4{oAZp=%sGzvKr+k-lfqWO{wsQ z$zv!bfura)D0niQQGvN9NO?1b3|Ao`%$+4Kczh*WwO~+AME#(Lc zW@4N+3g=GM9OXc~2pO8W*l5Gd_7qBD!m|&U{Ij{TRT7OBT0QEXPt_N;s@v)8pWKgK z8W|ppT`H3Vrw#P-aq6OK?Q9unrmSD%fM(qBTD+djBee6X2xFIfm}7kVxVheUI4rA) zlG*!3j3qRPt+n^mrGL1Cq%}Vd{?;+gKbg+!YV_M*xr3ttJNp$i&Iu1WvyrH*KmyL6K= z!bhI^lgQwPvUpXl31f1mLnW23f_=_7cR9mG5MONgRe}k=Y1@8G<{gcC zOWSw1HRWb%gRr9{6XBinkkz|lF^ToI+tb)k%x-NQ&*IU^n#+zB80qB9)MlXSW9|=H z;Mj6_tY<{G#!!Dm?2sDHxCgP3ACj`{#%+h?vlG6dw^qh|DEY;eV&dZ=PUf~dYFgSP z?6&y0%*yM;vdFE~0%En9&+-cEjE<{BOga&3wAPWD?!K(>QAY3^lx)=Vlo?L6$Yd zZum8nv;4(vuAAkvCj;aAP)~&^`r=uQH&T*w8kysfVB?p?D=(fUuPc3~<-cXzmNUnZ z0!LeCyW}!niJR@4G8kskYW~^h!*0@xm=AsPx-CQu(~E~vgPcWAo|WEqLpJiOAu#lB zWr!@+LVIIl=98&u)a9)tCPLM3`52nL3LTuTs(NXeTfN=s(lPeTMG=N>Zd-Dr}rk9Wa!S#_B6A9(NZ_G%mZ~SG{zoI2kL8@uC)NU z-p9jq%7Mx(+z+jPOa64Drmq^N?$OYZvs!hZL%Q4oLiasfWSh2LTEioSajFu%*p&Me zGk4{vcM`s;yjRgX)~P|H3EOb^K&_Ej#9Z&SY2>xBnbt}us3AB50liMNmJ80a(5%r` zsvI10A8vAZYwu1k?pfck8;aVj_$qtm`0IQ&g=&RxuB!(+gJ&cBhh#@8-cL&dGLwW# zObMRm*hmAko;dyisWwq>jY8Nqx)ctcDqoGIN@k$ z5p`XPVWDh0I~M4BXnWyxgJIiJsC-HmaXa?*J3FC|?YG~*XWJR9!wP%I`W`DzszL$= zh)u%4;=rK*qW&{Bg8YB~J^zCVS`#{d{~4dSAp5J|>h$4?B|zx;8<27Y=lsg=E#HS4 z`1F%ZMo3mtOjJpkQAX?n0R&3E6u|*D(!MuL(1{Q{5Gb{_JCDO$hWL85 zcM5$QeXt4SkA&F25X${Z_&wh8M}S+u0C@j9z(pwO_gx_Q1*q=NK&F;97Jm~936un= zFnV>H#S=iO1YQ^Y0)eW1_5rk?Mv#?LmJ|_XbZ~aK(CA+P)zx!>mOwa4hv8Q%R{InJ zCiw{<4Uo$!{R83LCQe7zD6fEPbI?H`)}I|Z7eN#l7Ux#{Zj&FX{h^uv>yVJ6zJ;}w zG!S=#*!>mm{JVtb_!BaFRq!`}eO5{k=sf!NqgDIJ5nPS0bj}3=;Qu@LsuN021F(Th z0w|B=2Qu(p?UM~8fW1n10G9pXpJdOn;KwutdAwfPw zlz!09Ny=cK!=o&aW9 zhz`Kx5ul=9c~Cw2pLzUd%xYl@VUGiSkOO=V7^FX2wa=*9)jWQ+wIaj_Vh6DTLk$1j z1=}3=hfsmO_yGKV^$!f~t9kvLpMK|loFdI2S70RR0h8&k!`4*yYWQ>aW0QVtX#lY^ z(+8XX$@Z_jW3eL1KpX|<#rNIO z%cJXZ>ir8Iv=LYH_|@`%OT>Sf&E-tt7i?yu|HuZ=)8F%kU&g(hc=ZBzIq53g@B06d zhV?S^<;0Q~(2%tM3jG_GzMOmT0y-n(ze0b{M0i>1%ZcqSpwqIhg8oyQyUTnorxm;4 z6OelqpYMwQ_d$R8nAipI_0InYO!58D*kze79{{<4j_Uod(7%~LFP~VrfadQ1uh75o z(Dh4O;1|#$@2-Nrtm1#(zyOPs?+p`lb{0AKw>9jKec_As_~mWn^PS1qZe9kv{Qdhr@a{|{Kjz=;3= diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-base/javax.servlet_2.5.0.v201103041518.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-base/javax.servlet_2.5.0.v201103041518.jar deleted file mode 100644 index 681a06870ba6240861ddb1a9936c3c3d3d7f4bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119303 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
B-Itl1jNP36#RVf3 zwG|ck(S6XwAm!v6@+KrC0mcnkwA~L2Ch77QL)^Quba&~F%eg&6J~YtYfA}cPw|k

+ + + +
    +
  • +

    deleteCache

    +
    void deleteCache()
    +
    Deletes all the cached objects that has been created
    +
  • +
diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRace.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRace.html index 2e7fb41583e..3b4255a0047 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRace.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRace.html @@ -1,10 +1,10 @@ - + - + IRace - + @@ -225,10 +225,7 @@ extends java.util.List<IRoute> getRoutes()
- Gets the routes of this race - - - This method is thread-safety: it returns a copy of the list.
+ Gets the routes of this race @@ -246,7 +243,17 @@ extends + START_PHASE: Race start likely at the given race start time. + RUNNING: Post 10 minute gun (Start time therefore confirmed) + FINISHING: racing + FINISHED: race completed + POSTPONED: race postponed, restart unknown + CAN_RESTART: Race abandoned, a restart is possible. + ABANDONED: Race abandoned, no restart today. + NO_RACE: No racing today + CANCELLED: No racing today. + NO_DATA: Due to technical problems, no data available for this race. + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceCompetitor.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceCompetitor.html index 0cdb1012177..fddbffab4bb 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceCompetitor.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceCompetitor.html @@ -1,10 +1,10 @@ - + - + IRaceCompetitor - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceSerie.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceSerie.html index 3deea8d467e..9d97f67f453 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceSerie.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/IRaceSerie.html @@ -1,10 +1,10 @@ - + - + IRaceSerie - + @@ -131,10 +131,7 @@ extends java.util.List<IRace> getRaces()
- Gets the list of races that compose the serie - - - This method is thread-safety: it returns a copy of the list.
+ Gets the list of races that compose the serie diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ITeam.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ITeam.html index 7073b362b5b..3a38b58f20e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ITeam.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/ITeam.html @@ -1,10 +1,10 @@ - + - + ITeam - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorStatusType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorStatusType.html index e906c147cae..3a760eef207 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorStatusType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorStatusType.html @@ -1,10 +1,10 @@ - + - + RaceCompetitorStatusType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorTest.html deleted file mode 100644 index 7444dd2adad..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceCompetitorTest.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - -RaceCompetitorTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.event
-

Class RaceCompetitorTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.event.RaceCompetitorTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class RaceCompetitorTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      RaceCompetitorTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestMetadata() 
      voidtestRouteNotNull() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
- -
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceLoadingException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceLoadingException.html index 4dff0bbc50e..2c0f3bcc518 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceLoadingException.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceLoadingException.html @@ -1,10 +1,10 @@ - + - + RaceLoadingException - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceSerieTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceSerieTest.html deleted file mode 100644 index 1162c09b27e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceSerieTest.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - -RaceSerieTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.event
-

Class RaceSerieTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.event.RaceSerieTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class RaceSerieTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      RaceSerieTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestReadRaceSerie() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RaceSerieTest

        -
        public RaceSerieTest()
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceStatusType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceStatusType.html index 1b5a9141763..e352d88b66b 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceStatusType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceStatusType.html @@ -1,10 +1,10 @@ - + - + RaceStatusType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceVisibilityType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceVisibilityType.html index c6a263652b9..2e041b9dcfa 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceVisibilityType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RaceVisibilityType.html @@ -1,10 +1,10 @@ - + - + RaceVisibilityType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RacesFromJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RacesFromJSONTest.html deleted file mode 100644 index c5ec2e1b938..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/RacesFromJSONTest.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - -RacesFromJSONTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.event
-

Class RacesFromJSONTest

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      RacesFromJSONTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestLoadRace() 
      - -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RacesFromJSONTest

        -
        public RacesFromJSONTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testLoadRace

        -
        public void testLoadRace()
        -                  throws java.net.URISyntaxException,
        -                         CreateModelException,
        -                         java.net.MalformedURLException,
        -                         java.text.ParseException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.net.MalformedURLException
        -
        java.text.ParseException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/SameEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/SameEventTest.html deleted file mode 100644 index 8f086f17607..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/SameEventTest.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - -SameEventTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.event
-

Class SameEventTest

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      SameEventTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestSameEvent() 
      - -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
- -
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeType.html index a09b365ba13..52fbdf78617 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeType.html @@ -1,10 +1,10 @@ - + - + StartTimeType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeTypeTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeTypeTest.html deleted file mode 100644 index d1c77b0a186..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/StartTimeTypeTest.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - - -StartTimeTypeTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.event
-

Class StartTimeTypeTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.event.StartTimeTypeTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class StartTimeTypeTest
    -extends junit.framework.TestCase
    -
    Class used to test the StartTimeType enumerate
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StartTimeTypeTest

        -
        public StartTimeTypeTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testStartTypeNullAndStartTimeTypeNull

        -
        public void testStartTypeNullAndStartTimeTypeNull()
        -                                           throws java.net.URISyntaxException,
        -                                                  CreateModelException,
        -                                                  java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeMassStartAndStartTimeTypeNull

        -
        public void testStartTypeMassStartAndStartTimeTypeNull()
        -                                                throws java.net.URISyntaxException,
        -                                                       CreateModelException,
        -                                                       java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeIdividualAndStartTimeTypeNull

        -
        public void testStartTypeIdividualAndStartTimeTypeNull()
        -                                                throws java.net.URISyntaxException,
        -                                                       CreateModelException,
        -                                                       java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeNullAndStartTimeTypeIndividual

        -
        public void testStartTypeNullAndStartTimeTypeIndividual()
        -                                                 throws java.net.URISyntaxException,
        -                                                        CreateModelException,
        -                                                        java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeNullAndStartTimeTypeFirstMark

        -
        public void testStartTypeNullAndStartTimeTypeFirstMark()
        -                                                throws java.net.URISyntaxException,
        -                                                       CreateModelException,
        -                                                       java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeNullAndStartTimeTypeRace

        -
        public void testStartTypeNullAndStartTimeTypeRace()
        -                                           throws java.net.URISyntaxException,
        -                                                  CreateModelException,
        -                                                  java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeMassStartAndStartTimeTypeIndividual

        -
        public void testStartTypeMassStartAndStartTimeTypeIndividual()
        -                                                      throws java.net.URISyntaxException,
        -                                                             CreateModelException,
        -                                                             java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeMassStartAndStartTimeTypeFirstMark

        -
        public void testStartTypeMassStartAndStartTimeTypeFirstMark()
        -                                                     throws java.net.URISyntaxException,
        -                                                            CreateModelException,
        -                                                            java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeMassStartAndStartTimeTypeRace

        -
        public void testStartTypeMassStartAndStartTimeTypeRace()
        -                                                throws java.net.URISyntaxException,
        -                                                       CreateModelException,
        -                                                       java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeIndividualAndStartTimeTypeIndividual

        -
        public void testStartTypeIndividualAndStartTimeTypeIndividual()
        -                                                       throws java.net.URISyntaxException,
        -                                                              CreateModelException,
        -                                                              java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeIndividualAndStartTimeTypeFirstMark

        -
        public void testStartTypeIndividualAndStartTimeTypeFirstMark()
        -                                                      throws java.net.URISyntaxException,
        -                                                             CreateModelException,
        -                                                             java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      - - - -
        -
      • -

        testStartTypeIndividualAndStartTimeTypeRace

        -
        public void testStartTypeIndividualAndStartTimeTypeRace()
        -                                                 throws java.net.URISyntaxException,
        -                                                        CreateModelException,
        -                                                        java.io.IOException
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
        java.io.IOException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/AbstractJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/AbstractJSONTest.html deleted file mode 100644 index df6bbc2f751..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/AbstractJSONTest.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.AbstractJSONTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.AbstractJSONTest

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/CreateModelException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/CreateModelException.html deleted file mode 100644 index d03bffa20d3..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/CreateModelException.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.CreateModelException - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.CreateModelException

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventType.html deleted file mode 100644 index d102cdab568..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventType.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.EventType - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.EventType

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromClubsJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromClubsJSONTest.html deleted file mode 100644 index a74b832d869..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromClubsJSONTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.EventsFromClubsJSONTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.EventsFromClubsJSONTest

-
-
No usage of com.tractrac.model.lib.api.event.EventsFromClubsJSONTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromJSONTest.html deleted file mode 100644 index bc57f9e3ef0..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/EventsFromJSONTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.EventsFromJSONTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.EventsFromJSONTest

-
-
No usage of com.tractrac.model.lib.api.event.EventsFromJSONTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitor.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitor.html deleted file mode 100644 index 667ea200314..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitor.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.ICompetitor - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.ICompetitor

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitorClass.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitorClass.html deleted file mode 100644 index ed3720b3874..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ICompetitorClass.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.ICompetitorClass - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.ICompetitorClass

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEvent.html deleted file mode 100644 index 5e5c8fe5553..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEvent.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.IEvent - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.IEvent

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEventFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEventFactory.html deleted file mode 100644 index b33d403a9bc..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IEventFactory.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.IEventFactory - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.IEventFactory

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRace.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRace.html deleted file mode 100644 index 893f542bc94..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRace.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.IRace - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.IRace

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceCompetitor.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceCompetitor.html deleted file mode 100644 index 6a39ff960c1..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceCompetitor.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.IRaceCompetitor - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.IRaceCompetitor

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceSerie.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceSerie.html deleted file mode 100644 index 446e911c7ec..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/IRaceSerie.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.IRaceSerie - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.IRaceSerie

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ITeam.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ITeam.html deleted file mode 100644 index d3a2ac6da6e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/ITeam.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.event.ITeam - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.event.ITeam

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceCompetitorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceCompetitorTest.html deleted file mode 100644 index 78d8f864d67..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceCompetitorTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.RaceCompetitorTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.RaceCompetitorTest

-
-
No usage of com.tractrac.model.lib.api.event.RaceCompetitorTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceLoadingException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceLoadingException.html deleted file mode 100644 index 75d271a4466..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceLoadingException.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.RaceLoadingException - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.RaceLoadingException

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceSerieTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceSerieTest.html deleted file mode 100644 index b54611a4ab3..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceSerieTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.RaceSerieTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.RaceSerieTest

-
-
No usage of com.tractrac.model.lib.api.event.RaceSerieTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceStatusType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceStatusType.html deleted file mode 100644 index 8693b5dccd1..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RaceStatusType.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.RaceStatusType - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.RaceStatusType

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html deleted file mode 100644 index 15d50868dd2..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/RacesFromJSONTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.RacesFromJSONTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.RacesFromJSONTest

-
-
No usage of com.tractrac.model.lib.api.event.RacesFromJSONTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html deleted file mode 100644 index 72aa32477b2..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/SameEventTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.SameEventTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.SameEventTest

-
-
No usage of com.tractrac.model.lib.api.event.SameEventTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html deleted file mode 100644 index 98367661e83..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeType.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.StartTimeType - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.StartTimeType

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html deleted file mode 100644 index 2dcff6710db..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/class-use/StartTimeTypeTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.event.StartTimeTypeTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.event.StartTimeTypeTest

-
-
No usage of com.tractrac.model.lib.api.event.StartTimeTypeTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html index 445fd7fa337..fe541bc1b3c 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.event - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-summary.html index c798bce2316..705061a553b 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.event - + @@ -72,8 +72,7 @@

Package com.tractrac.model.lib.api.event

- Events, races and competitors -
+ Events, races and competitors

See: Description

@@ -158,8 +157,7 @@ EventType
- The type of the event, according with the EventManager -
+ The type of the event, according with the EventManager @@ -205,8 +203,7 @@ RaceLoadingException
- This exception is thrown when there is an error loading the race -
+ This exception is thrown when there is an error loading the race diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-tree.html index 71d19fa2f75..d6fd978a7df 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.event Class Hierarchy - + @@ -150,11 +150,11 @@ diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-use.html deleted file mode 100644 index 55a7ac7ecda..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/event/package-use.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.event - - - - - - - - - - -
-

Uses of Package
com.tractrac.model.lib.api.event

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadata.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadata.html index cd12a212dd2..834ff2455a8 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadata.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadata.html @@ -1,10 +1,10 @@ - + - + IMetadata - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataContainer.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataContainer.html index e166e238962..8ba84079035 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataContainer.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataContainer.html @@ -1,10 +1,10 @@ - + - + IMetadataContainer - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataFactory.html index 9a66e9391f6..3c99bf4449a 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataFactory.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IMetadataFactory.html @@ -1,10 +1,10 @@ - + - + IMetadataFactory - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IPropertiesContainer.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IPropertiesContainer.html index 4068fc24951..4d5296f5c4e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IPropertiesContainer.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/IPropertiesContainer.html @@ -1,10 +1,10 @@ - + - + IPropertiesContainer - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/MetadataTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/MetadataTest.html deleted file mode 100644 index 8600be4881e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/MetadataTest.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - -MetadataTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.metadata
-

Class MetadataTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.metadata.MetadataTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class MetadataTest
    -extends junit.framework.TestCase
    -

    - Test the metadata -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      MetadataTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestMetadataForCompetitor() 
      voidtestMetadataForControlPoint() 
      voidtestMetadataForRace() 
      voidtestMetadataForRoute() 
      voidtestMetadataIsEmpty() 
      voidtestMetadataisNull() 
      voidtestMetadataWithBreakLine() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        MetadataTest

        -
        public MetadataTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.MalformedURLException,
        -                  java.net.URISyntaxException,
        -                  CreateModelException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.MalformedURLException
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
      • -
      - - - -
        -
      • -

        testMetadataForRace

        -
        public void testMetadataForRace()
        -                         throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataForCompetitor

        -
        public void testMetadataForCompetitor()
        -                               throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataForRoute

        -
        public void testMetadataForRoute()
        -                          throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataForControlPoint

        -
        public void testMetadataForControlPoint()
        -                                 throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataWithBreakLine

        -
        public void testMetadataWithBreakLine()
        -                               throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataIsEmpty

        -
        public void testMetadataIsEmpty()
        -                         throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      - - - -
        -
      • -

        testMetadataisNull

        -
        public void testMetadataisNull()
        -                        throws java.net.MalformedURLException
        -
        Throws:
        -
        java.net.MalformedURLException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadata.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadata.html deleted file mode 100644 index c240a4c4c99..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadata.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.metadata.IMetadata - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.metadata.IMetadata

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataContainer.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataContainer.html deleted file mode 100644 index 41cad553cca..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataContainer.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.metadata.IMetadataContainer - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.metadata.IMetadataContainer

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataFactory.html deleted file mode 100644 index e5cb7dcd662..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IMetadataFactory.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.metadata.IMetadataFactory - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.metadata.IMetadataFactory

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IPropertiesContainer.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IPropertiesContainer.html deleted file mode 100644 index dd6ef559974..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/IPropertiesContainer.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.metadata.IPropertiesContainer - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.metadata.IPropertiesContainer

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/MetadataTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/MetadataTest.html deleted file mode 100644 index 4397e5a73ce..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/class-use/MetadataTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.metadata.MetadataTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.metadata.MetadataTest

-
-
No usage of com.tractrac.model.lib.api.metadata.MetadataTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-frame.html index d21f2488af6..6cb897f6b81 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.metadata - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-summary.html index 6b92f8e4265..df5d00e3416 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.metadata - + @@ -72,8 +72,7 @@

Package com.tractrac.model.lib.api.metadata

- The metadata functionality -
+ The metadata functionality

See: Description

diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-tree.html index cade2697e58..f0442a55101 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.metadata Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html deleted file mode 100644 index 9639d5c5803..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/metadata/package-use.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.metadata - - - - - - - - - - -
-

Uses of Package
com.tractrac.model.lib.api.metadata

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html index 65a41681494..719bd795d36 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html index c6d281e260a..7ba2e754d9f 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html index 21482c0d2c1..c5132f18a9d 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html deleted file mode 100644 index 717868ade5d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/package-use.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api - - - - - - - - - - -
-

Uses of Package
com.tractrac.model.lib.api

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html deleted file mode 100644 index 5ba597c4ae0..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ControlRouteTest.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - -ControlRouteTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.route
-

Class ControlRouteTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.route.ControlRouteTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ControlRouteTest
    -extends junit.framework.TestCase
    -

    - Reads a route with marks from the parameters file -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      ControlRouteTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestCreateAttachment() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ControlRouteTest

        -
        public ControlRouteTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.URISyntaxException,
        -                  CreateModelException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.URISyntaxException
        -
        CreateModelException
        -
      • -
      - - - -
        -
      • -

        testCreateAttachment

        -
        public void testCreateAttachment()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html index 938aa0569f4..a49c7d91837 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControl.html @@ -1,10 +1,10 @@ - + - + IControl - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlPoint.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlPoint.html index 8c2db02628c..26208c5fb29 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlPoint.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlPoint.html @@ -1,10 +1,10 @@ - + - + IControlPoint - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlRoute.html index f0debcbe64a..008f085d385 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlRoute.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IControlRoute.html @@ -1,10 +1,10 @@ - + - + IControlRoute - + @@ -149,10 +149,7 @@ extends java.util.List<IControl> getControls()
- The list of controls of a route - - - This method is thread-safety: it returns a copy of the list.
+ The list of controls of a route diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRoute.html index 862ad58a4f3..03443c48ed6 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRoute.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRoute.html @@ -1,10 +1,10 @@ - + - + IPathRoute - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRouteFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRouteFactory.html index 3fc8d18956d..fb278a18d87 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRouteFactory.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathRouteFactory.html @@ -1,10 +1,10 @@ - + - + IPathRouteFactory - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathSegment.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathSegment.html index 69e383dae82..ef558c6d6bb 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathSegment.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IPathSegment.html @@ -1,10 +1,10 @@ - + - + IPathSegment - + @@ -147,7 +147,7 @@ var activeTableTab = "activeTableTab"; boolean isReversed()
Flag specifying whether the segment is part of the route in reverse order, - i.e. travelled from end of segment to start of segment.
+ i.e. diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IRoute.html index eb886aa900a..fe9de82bb9d 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IRoute.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/IRoute.html @@ -1,10 +1,10 @@ - + - + IRoute - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ISegment.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ISegment.html index 1e8f8024eea..b4a441d2e62 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ISegment.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ISegment.html @@ -1,10 +1,10 @@ - + - + ISegment - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadRouteTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadRouteTest.html deleted file mode 100644 index cd12b16db39..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadRouteTest.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - -ReadRouteTest - - - - - - - - - - - -
-
com.tractrac.model.lib.api.route
-

Class ReadRouteTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.route.ReadRouteTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReadRouteTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      ReadRouteTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestRouteName() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReadRouteTest

        -
        public ReadRouteTest()
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadTextPathRouteTests.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadTextPathRouteTests.html deleted file mode 100644 index aa06aabb547..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/ReadTextPathRouteTests.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - -ReadTextPathRouteTests - - - - - - - - - - - -
-
com.tractrac.model.lib.api.route
-

Class ReadTextPathRouteTests

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.model.lib.api.route.ReadTextPathRouteTests
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReadTextPathRouteTests
    -extends junit.framework.TestCase
    -

    - Checks the reading of a route path -

    -
    Author:
    -
    Jesper Grooss
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestRouteData() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReadTextPathRouteTests

        -
        public ReadTextPathRouteTests()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testRouteData

        -
        public void testRouteData()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ControlRouteTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ControlRouteTest.html deleted file mode 100644 index 3e34ccf071a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ControlRouteTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.route.ControlRouteTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.route.ControlRouteTest

-
-
No usage of com.tractrac.model.lib.api.route.ControlRouteTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControl.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControl.html deleted file mode 100644 index 82d1c90575e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControl.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IControl - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IControl

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlPoint.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlPoint.html deleted file mode 100644 index 5199a2736e0..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlPoint.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IControlPoint - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IControlPoint

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlRoute.html deleted file mode 100644 index 8504e3fb0f6..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IControlRoute.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IControlRoute - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IControlRoute

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRoute.html deleted file mode 100644 index 0c05e00b374..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRoute.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IPathRoute - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IPathRoute

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRouteFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRouteFactory.html deleted file mode 100644 index 26413a79688..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathRouteFactory.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IPathRouteFactory - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IPathRouteFactory

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathSegment.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathSegment.html deleted file mode 100644 index fba9ec54e5f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IPathSegment.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IPathSegment - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IPathSegment

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IRoute.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IRoute.html deleted file mode 100644 index 7d927656f24..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/IRoute.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.IRoute - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.IRoute

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ISegment.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ISegment.html deleted file mode 100644 index cd44390e8b0..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ISegment.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.route.ISegment - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.route.ISegment

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadRouteTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadRouteTest.html deleted file mode 100644 index f6f14ebed46..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadRouteTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.route.ReadRouteTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.route.ReadRouteTest

-
-
No usage of com.tractrac.model.lib.api.route.ReadRouteTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadTextPathRouteTests.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadTextPathRouteTests.html deleted file mode 100644 index b3e0aec875a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/class-use/ReadTextPathRouteTests.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.model.lib.api.route.ReadTextPathRouteTests - - - - - - - - - - -
-

Uses of Class
com.tractrac.model.lib.api.route.ReadTextPathRouteTests

-
-
No usage of com.tractrac.model.lib.api.route.ReadTextPathRouteTests
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-frame.html index 9ae41eb40f1..7daa3ba8858 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.route - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-summary.html index acfa4778f0c..1774f325c9e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.route - + @@ -72,8 +72,7 @@

Package com.tractrac.model.lib.api.route

- The route configuration: controls, paths and routes -
+ The route configuration: controls, paths and routes

See: Description

@@ -134,8 +133,7 @@ IRoute
- A route can be one of: IControlRoute or IPathRoute. see those - for details.
+ A route can be one of: IControlRoute or IPathRoute. diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-tree.html index b8cf17f5583..3045d7048ec 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.route Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html deleted file mode 100644 index 2c578303a02..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/route/package-use.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.route - - - - - - - - - - -
-

Uses of Package
com.tractrac.model.lib.api.route

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html index 79f4c934f87..8da36066ec6 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinate.html @@ -1,10 +1,10 @@ - + - + ICoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html index 7d0dbc5e534..fc756958d37 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/ICoordinateSequence.html @@ -1,10 +1,10 @@ - + - + ICoordinateSequence - + @@ -131,12 +131,7 @@ var activeTableTab = "activeTableTab"; ICoordinate locateAlong(double mOffset) -
Returns the coordinate at the specified m ordinate value - - - It is required that the coordinates has an m ordiante value and is sorted - in order of strictly increasing m ordinate value -
+
Returns the coordinate at the specified m ordinate value
diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html index 9bcd44115e6..57a63180d86 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/IGeoCoordinate.html @@ -1,10 +1,10 @@ - + - + IGeoCoordinate - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html deleted file mode 100644 index db63a5cfb2b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinate.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.spatial.ICoordinate - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.spatial.ICoordinate

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html deleted file mode 100644 index f56cebdba87..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/ICoordinateSequence.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.spatial.ICoordinateSequence - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.spatial.ICoordinateSequence

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html deleted file mode 100644 index 9f3802bf52b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/class-use/IGeoCoordinate.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.model.lib.api.spatial.IGeoCoordinate - - - - - - - - - - -
-

Uses of Interface
com.tractrac.model.lib.api.spatial.IGeoCoordinate

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html index af3d4c321cd..57e42f10368 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.spatial - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html index 090d277eeb0..f006ca855ed 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.spatial - + @@ -72,8 +72,7 @@

Package com.tractrac.model.lib.api.spatial

- The spatial data -
+ The spatial data

See: Description

@@ -98,8 +97,7 @@ ICoordinateSequence
- A sequence of points connected by straight lines (line segments) -
+ A sequence of points connected by straight lines (line segments) diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html index 3204615e860..3ef90b1897e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.model.lib.api.spatial Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html deleted file mode 100644 index 8dce6802f25..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/model/lib/api/spatial/package-use.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - -Uses of Package com.tractrac.model.lib.api.spatial - - - - - - - - - - -
-

Uses of Package
com.tractrac.model.lib.api.spatial

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html deleted file mode 100644 index 71b09e561ff..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/AbstractSubscriptionTest.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - - -AbstractSubscriptionTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Class AbstractSubscriptionTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        AbstractSubscriptionTest

        -
        public AbstractSubscriptionTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        addDataserverToEvent

        -
        public ILocalDataserver addDataserverToEvent(IEvent event)
        -                                      throws java.io.IOException,
        -                                             java.net.URISyntaxException
        -
        Create a local dataserver that can be used to establish a communication - with the subscription library. It uses both the live and the stored - connections.
        -
        Parameters:
        event - the event
        -
        Returns:
        a local dataserver
        -
        Throws:
        -
        java.io.IOException - if there is an error creating the sockets
        -
        java.net.URISyntaxException - if there is an error creating the URIs
        -
      • -
      - - - -
        -
      • -

        addDataserverToEvent

        -
        public ILocalDataserver addDataserverToEvent(IEvent event,
        -                                    boolean isLive,
        -                                    boolean isStored)
        -                                      throws java.io.IOException,
        -                                             java.net.URISyntaxException
        -
        Create a local dataserver that can be used to establish a communication - with the subscription library.
        -
        Parameters:
        event - the event
        isLive - if the subscription uses the live connection
        isStored - if the subscription uses the stored connection
        -
        Returns:
        a local dataserver
        -
        Throws:
        -
        java.io.IOException - if there is an error creating the sockets
        -
        java.net.URISyntaxException - if there is an error creating the URIs
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html index 8fb1c703b53..018f5e1419e 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IEventSubscriber.html @@ -1,10 +1,10 @@ - + - + IEventSubscriber - + @@ -176,16 +176,14 @@ extends void unsubscribeCompetitors(ICompetitorsListener listener)
- Unsubscribes the competitors subscribers -
+ Unsubscribes the competitors subscribers void unsubscribeControls(IControlsListener listener)
- Unsubscribes the controls subscribers -
+ Unsubscribes the controls subscribers @@ -204,8 +202,7 @@ extends void unsubscribeRaces(IRacesListener listener)
- Unsubscribes the races subscribers -
+ Unsubscribes the races subscribers diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataServerFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataServerFactory.html deleted file mode 100644 index 7230494a345..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataServerFactory.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - -ILocalDataServerFactory - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Interface ILocalDataServerFactory

-
-
-
-
    -
  • -
    -
    -
    public interface ILocalDataServerFactory
    -

    - Factory used to create ILocalDataserver instances. The implementation - of this class has to be registered using the Service Loader pattern. If you want to add a new implementation, you - have to create a new component, create a file - META-INF/services/com.tractrac.subscription.lib.api.ILocalDataServerFactory - and add a line with the name of the ILocalDataServerFactory class. -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
    See Also:
    Service - Loader
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        createLocalDataServer

        -
        ILocalDataserver createLocalDataServer(IEvent event,
        -                                     boolean isLive,
        -                                     boolean isStored)
        -                                       throws java.io.IOException
        -
        Creates and instance of a ILocalDataserver
        -
        Parameters:
        event - the event
        isLive - if the subscription uses the live connection
        isStored - if the subscription uses the stored connection
        -
        Returns:
        a local dataserver
        -
        Throws:
        -
        java.io.IOException - if there is an error creating the dataserver
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataserver.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataserver.html deleted file mode 100644 index ff77d0c7838..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ILocalDataserver.html +++ /dev/null @@ -1,635 +0,0 @@ - - - - - -ILocalDataserver - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Interface ILocalDataserver

-
-
-
-
    -
  • -
    -
    -
    public interface ILocalDataserver
    -

    - This class is a local dataserver. It is possible to add events and connect to - it order to test the implementation of the subscription library. -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidabandonRace(java.util.UUID raceId) -
      Abandon a race from the event
      -
      voidaddCompetitor(java.lang.String name, - java.lang.String shortName, - java.lang.String team, - java.lang.String competitorClass) -
      Add a new competitor to the event
      -
      voidaddLivePosition(ICompetitor competitor, - double lon, - double lat, - long timestamp) -
      Adds a live position to the dataserver.
      -
      voidaddMark(java.lang.String name, - java.lang.String shortName, - double lat, - double lon, - long timestamp) -
      Add a new mark to the event
      -
      voidaddRace(java.lang.String raceName, - long trackingStartTime, - long trackingEndTime, - long raceStartTime, - RaceStatusType status, - java.net.URI parametersFile) -
      Add a new race to the event
      -
      voidaddRaceCompetitor(IRace race, - IRoute route, - ICompetitor competitor) -
      Add a competitor to a race
      -
      voidaddStoredPosition(ICompetitor competitor, - double lon, - double lat, - long timestamp) -
      Adds a stored position to the dataserver.
      -
      voidclose() -
      Closes the connections
      -
      voiddeleteCompetitor(java.util.UUID competitorId) -
      Delete a competitor from the event
      -
      voiddeleteMark(java.util.UUID markId) -
      Delete a mark from the event
      -
      voiddeleteRace(java.util.UUID raceId) -
      Delete a race from the event
      -
      intgetLivePort() -
      Gets the port for the live connection
      -
      intgetStoredPort() -
      Gets the port for the stored connection
      -
      voidreloadRace(java.util.UUID raceId) -
      Reload a race from the event
      -
      voidremoveRaceCompetitor(IRace race, - java.util.UUID competitorId) -
      Delete a race from the race
      -
      voidstart() -
      Create the threads that listen both the stored and live connections
      -
      voidupdateCompetitor(java.util.UUID competitorId, - java.lang.String name, - java.lang.String shortName, - java.lang.String team, - java.lang.String competitorClass) -
      Update a competitor
      -
      voidupdateLiveDelay(int seconds) -
      Update the live delay property
      -
      voidupdateLiveDelay(java.util.UUID raceId, - int seconds) -
      Update the live delay property for a race
      -
      voidupdateMark(java.util.UUID markId, - java.lang.String name, - java.lang.String shortName, - double lat, - double lon, - long timestamp) -
      Add a new mark to the event
      -
      voidupdateRace(java.util.UUID raceId, - java.lang.String raceName, - long trackingStartTime, - long trackingEndTime, - long raceStartTime, - RaceStatusType status, - java.net.URI parametersFile) -
      Update a race
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getStoredPort

        -
        int getStoredPort()
        -
        Gets the port for the stored connection
        -
        Returns:
        the stored port
        -
      • -
      - - - -
        -
      • -

        getLivePort

        -
        int getLivePort()
        -
        Gets the port for the live connection
        -
        Returns:
        the live port
        -
      • -
      - - - -
        -
      • -

        start

        -
        void start()
        -
        Create the threads that listen both the stored and live connections
        -
      • -
      - - - -
        -
      • -

        close

        -
        void close()
        -           throws java.io.IOException
        -
        Closes the connections
        -
        Throws:
        -
        java.io.IOException - if there is an error closing the sockets
        -
      • -
      - - - -
        -
      • -

        addLivePosition

        -
        void addLivePosition(ICompetitor competitor,
        -                   double lon,
        -                   double lat,
        -                   long timestamp)
        -
        Adds a live position to the dataserver. This position will be sent if the - application is subscribed to the competitor positions event using the live - connection.
        -
        Parameters:
        competitor - the competitor
        lon - the longitude
        lat - the latitude
        timestamp - the time stamp when this position is valid
        -
      • -
      - - - -
        -
      • -

        addStoredPosition

        -
        void addStoredPosition(ICompetitor competitor,
        -                     double lon,
        -                     double lat,
        -                     long timestamp)
        -
        Adds a stored position to the dataserver. This position will be sent if the - application is subscribed to the competitor positions event using the - stored connection.
        -
        Parameters:
        competitor - the competitor
        lon - the longitude
        lat - the latitude
        timestamp - the time stamp when this position is valid
        -
      • -
      - - - -
        -
      • -

        addCompetitor

        -
        void addCompetitor(java.lang.String name,
        -                 java.lang.String shortName,
        -                 java.lang.String team,
        -                 java.lang.String competitorClass)
        -
        Add a new competitor to the event
        -
        Parameters:
        name - the name of the competitor
        shortName - the short name of the competitor
        team - the team name
        competitorClass - the competitor class
        -
      • -
      - - - -
        -
      • -

        deleteCompetitor

        -
        void deleteCompetitor(java.util.UUID competitorId)
        -
        Delete a competitor from the event
        -
        Parameters:
        competitorId - the competitor identifier
        -
      • -
      - - - -
        -
      • -

        updateCompetitor

        -
        void updateCompetitor(java.util.UUID competitorId,
        -                    java.lang.String name,
        -                    java.lang.String shortName,
        -                    java.lang.String team,
        -                    java.lang.String competitorClass)
        -
        Update a competitor
        -
        Parameters:
        competitorId - the competitor identifier
        name - the name of the competitor
        shortName - the short name of the competitor
        team - the team name
        competitorClass - the competitor class
        -
      • -
      - - - -
        -
      • -

        addRace

        -
        void addRace(java.lang.String raceName,
        -           long trackingStartTime,
        -           long trackingEndTime,
        -           long raceStartTime,
        -           RaceStatusType status,
        -           java.net.URI parametersFile)
        -
        Add a new race to the event
        -
        Parameters:
        raceName - the race name
        trackingStartTime - the tracking start time
        trackingEndTime - the tracking end time
        raceStartTime - the race start time
        status - the status of the race
        parametersFile - the parameters file
        -
      • -
      - - - -
        -
      • -

        updateRace

        -
        void updateRace(java.util.UUID raceId,
        -              java.lang.String raceName,
        -              long trackingStartTime,
        -              long trackingEndTime,
        -              long raceStartTime,
        -              RaceStatusType status,
        -              java.net.URI parametersFile)
        -
        Update a race
        -
        Parameters:
        raceId - the race identifier
        raceName - the race name
        trackingStartTime - the tracking start time
        trackingEndTime - the tracking end time
        raceStartTime - the race start time
        status - the status of the race
        parametersFile - the parameters file
        -
      • -
      - - - -
        -
      • -

        deleteRace

        -
        void deleteRace(java.util.UUID raceId)
        -
        Delete a race from the event
        -
        Parameters:
        raceId - the race identifier
        -
      • -
      - - - -
        -
      • -

        reloadRace

        -
        void reloadRace(java.util.UUID raceId)
        -
        Reload a race from the event
        -
        Parameters:
        raceId - the race identifier
        -
      • -
      - - - -
        -
      • -

        abandonRace

        -
        void abandonRace(java.util.UUID raceId)
        -
        Abandon a race from the event
        -
        Parameters:
        raceId - the race identifier
        -
      • -
      - - - -
        -
      • -

        addMark

        -
        void addMark(java.lang.String name,
        -           java.lang.String shortName,
        -           double lat,
        -           double lon,
        -           long timestamp)
        -
        Add a new mark to the event
        -
        Parameters:
        name - the name of the mark
        name - the name of the mark
        lat - the latitude value of the mark
        lon - the longitude value of the mark
        timestamp - the timestamp of the mark
        -
      • -
      - - - -
        -
      • -

        updateMark

        -
        void updateMark(java.util.UUID markId,
        -              java.lang.String name,
        -              java.lang.String shortName,
        -              double lat,
        -              double lon,
        -              long timestamp)
        -
        Add a new mark to the event
        -
        Parameters:
        markId - the mark identifier
        name - the name of the mark
        shortName - the short name
        lat - the latitude value of the mark
        lon - the longitude value of the mark
        timestamp - the timestamp of the mark
        -
      • -
      - - - -
        -
      • -

        deleteMark

        -
        void deleteMark(java.util.UUID markId)
        -
        Delete a mark from the event
        -
        Parameters:
        markId - the mark identifier
        -
      • -
      - - - -
        -
      • -

        addRaceCompetitor

        -
        void addRaceCompetitor(IRace race,
        -                     IRoute route,
        -                     ICompetitor competitor)
        -
        Add a competitor to a race
        -
        Parameters:
        race - the race
        route - the route
        competitor - the competitor to add
        -
      • -
      - - - -
        -
      • -

        removeRaceCompetitor

        -
        void removeRaceCompetitor(IRace race,
        -                        java.util.UUID competitorId)
        -
        Delete a race from the race
        -
        Parameters:
        race - the race
        competitorId - the competitor identifier
        -
      • -
      - - - -
        -
      • -

        updateLiveDelay

        -
        void updateLiveDelay(int seconds)
        -
        Update the live delay property
        -
        Parameters:
        the - number of seconds for the new live delay
        -
      • -
      - - - -
        -
      • -

        updateLiveDelay

        -
        void updateLiveDelay(java.util.UUID raceId,
        -                   int seconds)
        -
        Update the live delay property for a race
        -
        Parameters:
        raceId - the race identifier
        the - number of seconds for the new live delay
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IRaceSubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IRaceSubscriber.html index cf9f8bcfcc7..5adacf31c3b 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IRaceSubscriber.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/IRaceSubscriber.html @@ -1,10 +1,10 @@ - + - + IRaceSubscriber - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriber.html index 9abb09d62ef..8044ac3210a 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriber.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriber.html @@ -1,10 +1,10 @@ - + - + ISubscriber - + @@ -148,11 +148,7 @@ var activeTableTab = "activeTableTab"; void subscribeConnectionStatus(IConnectionStatusListener listener) -
Subscribes for connection status - - - The method returns immediately and the positions are subsequently sent to - the given listener, as they are received.
+
Subscribes for connection status
diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberFactory.html index fad6342183f..21f25b99907 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberFactory.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberFactory.html @@ -1,10 +1,10 @@ - + - + ISubscriberFactory - + @@ -143,11 +143,7 @@ extends com.tractrac.common.lib.api.service.IServiceProvider java.net.URI liveUri, java.net.URI storedUri)
- Returns a subscriber for the event - - - It retrieves data using the liveUri and the storedUri parameters - discarding the internal URIs of the event.
+ Returns a subscriber for the event @@ -171,11 +167,7 @@ extends com.tractrac.common.lib.api.service.IServiceProvider createRaceSubscriber(java.net.URI parametersURI)
Returns a subscriber for the race contained in the provided parameters - file - - - It connects with the liveURI (if exists) and with the storedURI contained - in this parameters file.
+ file diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberListener.html index 22ae36d555a..fa0594cd13f 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ISubscriberListener.html @@ -1,10 +1,10 @@ - + - + ISubscriberListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ReadHDRaceTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ReadHDRaceTest.html deleted file mode 100644 index c8218c60b78..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/ReadHDRaceTest.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - -ReadHDRaceTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Class ReadHDRaceTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.ReadHDRaceTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReadHDRaceTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      ReadHDRaceTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestEventData() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReadHDRaceTest

        -
        public ReadHDRaceTest()
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriberInitializationException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriberInitializationException.html index fe767f18608..ce514fc0ae5 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriberInitializationException.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriberInitializationException.html @@ -1,10 +1,10 @@ - + - + SubscriberInitializationException - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocator.html index adf55ddaf6b..0746b17e731 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocator.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocator.html @@ -1,10 +1,10 @@ - + - + SubscriptionLocator - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocatorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocatorTest.html deleted file mode 100644 index 240bc94659a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionLocatorTest.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - -SubscriptionLocatorTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Class SubscriptionLocatorTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.SubscriptionLocatorTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class SubscriptionLocatorTest
    -extends junit.framework.TestCase
    -

    - This test checks if an implementation of the model library implements all the - mandatory objects -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidtestRegisteredSubscriberFactory() -
      Test if there is a ISubscriberFactory registered.
      -
      voidtestSubscriberFactorySingleton() -
      Test if the ISubscriberFactory is a singleton
      -
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        SubscriptionLocatorTest

        -
        public SubscriptionLocatorTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testRegisteredSubscriberFactory

        -
        public void testRegisteredSubscriberFactory()
        -
        Test if there is a ISubscriberFactory registered.
        -
      • -
      - - - -
        -
      • -

        testSubscriberFactorySingleton

        -
        public void testSubscriberFactorySingleton()
        -
        Test if the ISubscriberFactory is a singleton
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionTestLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionTestLocator.html deleted file mode 100644 index 83a48894396..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/SubscriptionTestLocator.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - -SubscriptionTestLocator - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api
-

Class SubscriptionTestLocator

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.tractrac.subscription.lib.api.SubscriptionTestLocator
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class SubscriptionTestLocator
    -extends java.lang.Object
    -

    - This class is a locator used to get the instance of some of the factories - that are used for the creation of the objects. Is the entry point of the - system, and the unique class with statics methods. -

    -

    - The principal object is the ILocalDataserver, that can be created - using the ILocalDataServerFactory singleton. The implementation of - this factory, has to be registered using the Service Loader pattern. -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
    See Also:
    Locator, -Service - Loader
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        SubscriptionTestLocator

        -
        public SubscriptionTestLocator()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getLocalDataserverFactory

        -
        public static ILocalDataServerFactory getLocalDataserverFactory()
        -
        Used to get the instance of the ILocalDataServerFactory class. If - there are more registered instances it returns the first one.
        -
        Returns:
        the instance of the ILocalDataServerFactory object
        -
        Throws:
        -
        a - runtime exception if there are not registered instances.
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/AbstractSubscriptionTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/AbstractSubscriptionTest.html deleted file mode 100644 index 6dd15f8589a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/AbstractSubscriptionTest.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.AbstractSubscriptionTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.AbstractSubscriptionTest

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IEventSubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IEventSubscriber.html deleted file mode 100644 index fe2ef0b8cf3..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IEventSubscriber.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.IEventSubscriber - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.IEventSubscriber

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataServerFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataServerFactory.html deleted file mode 100644 index a4aa73e28d9..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataServerFactory.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.ILocalDataServerFactory - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.ILocalDataServerFactory

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataserver.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataserver.html deleted file mode 100644 index 129a4f07aec..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ILocalDataserver.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.ILocalDataserver - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.ILocalDataserver

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IRaceSubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IRaceSubscriber.html deleted file mode 100644 index 6de54b3a796..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/IRaceSubscriber.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.IRaceSubscriber - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.IRaceSubscriber

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriber.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriber.html deleted file mode 100644 index 0c39210b54d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriber.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.ISubscriber - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.ISubscriber

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberFactory.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberFactory.html deleted file mode 100644 index 03cd1a1c95f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberFactory.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.ISubscriberFactory - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.ISubscriberFactory

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberListener.html deleted file mode 100644 index f087b01aaf9..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ISubscriberListener.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.ISubscriberListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.ISubscriberListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ReadHDRaceTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ReadHDRaceTest.html deleted file mode 100644 index c65d03c2188..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/ReadHDRaceTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.ReadHDRaceTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.ReadHDRaceTest

-
-
No usage of com.tractrac.subscription.lib.api.ReadHDRaceTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriberInitializationException.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriberInitializationException.html deleted file mode 100644 index e8b925f2bed..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriberInitializationException.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.SubscriberInitializationException - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.SubscriberInitializationException

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocator.html deleted file mode 100644 index bcd06e7d34c..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocator.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.SubscriptionLocator - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.SubscriptionLocator

-
-
No usage of com.tractrac.subscription.lib.api.SubscriptionLocator
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocatorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocatorTest.html deleted file mode 100644 index 1029ca01dec..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionLocatorTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.SubscriptionLocatorTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.SubscriptionLocatorTest

-
-
No usage of com.tractrac.subscription.lib.api.SubscriptionLocatorTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionTestLocator.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionTestLocator.html deleted file mode 100644 index 2c9caa22a4d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/class-use/SubscriptionTestLocator.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.SubscriptionTestLocator - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.SubscriptionTestLocator

-
-
No usage of com.tractrac.subscription.lib.api.SubscriptionTestLocator
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/CompetitorsEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/CompetitorsEventTest.html deleted file mode 100644 index b31f32ef753..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/CompetitorsEventTest.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - -CompetitorsEventTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.competitor
-

Class CompetitorsEventTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        CompetitorsEventTest

        -
        public CompetitorsEventTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testAddCompetitor

        -
        public void testAddCompetitor()
        -                       throws java.io.IOException,
        -                              java.net.URISyntaxException,
        -                              java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testRemoveCompetitor

        -
        public void testRemoveCompetitor()
        -                          throws java.io.IOException,
        -                                 java.net.URISyntaxException,
        -                                 java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testUpdateCompetitor

        -
        public void testUpdateCompetitor()
        -                          throws java.io.IOException,
        -                                 java.net.URISyntaxException,
        -                                 java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ICompetitorsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ICompetitorsListener.html index 0bebc51561e..ee1f878cf27 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ICompetitorsListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ICompetitorsListener.html @@ -1,10 +1,10 @@ - + - + ICompetitorsListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionListener.html index 5a9f996f95a..eed71f3eee3 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionListener.html @@ -1,10 +1,10 @@ - + - + IPositionListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionOffsetListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionOffsetListener.html index 017b7ec8437..669274acf3f 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionOffsetListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionOffsetListener.html @@ -1,10 +1,10 @@ - + - + IPositionOffsetListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionSnappedListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionSnappedListener.html index 78c590205cb..597841f58ef 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionSnappedListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/IPositionSnappedListener.html @@ -1,10 +1,10 @@ - + - + IPositionSnappedListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/PositionEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/PositionEventTest.html deleted file mode 100644 index 883c1809bfb..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/PositionEventTest.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - -PositionEventTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.competitor
-

Class PositionEventTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        PositionEventTest

        -
        public PositionEventTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testModel

        -
        public void testModel()
        -
      • -
      - - - -
        -
      • -

        testStoredPositions

        -
        public void testStoredPositions()
        -                         throws java.io.IOException,
        -                                java.net.URISyntaxException,
        -                                java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ReconnectAddingEntriesTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ReconnectAddingEntriesTest.html deleted file mode 100644 index fa63dbd294f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/ReconnectAddingEntriesTest.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - -ReconnectAddingEntriesTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.competitor
-

Class ReconnectAddingEntriesTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReconnectAddingEntriesTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestRemoveAndAddCompetitor() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReconnectAddingEntriesTest

        -
        public ReconnectAddingEntriesTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.MalformedURLException,
        -                  java.io.IOException,
        -                  java.net.URISyntaxException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.MalformedURLException
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/CompetitorsEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/CompetitorsEventTest.html deleted file mode 100644 index 6a48bde0e80..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/CompetitorsEventTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest

-
-
No usage of com.tractrac.subscription.lib.api.competitor.CompetitorsEventTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ICompetitorsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ICompetitorsListener.html deleted file mode 100644 index 77635a0cebc..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ICompetitorsListener.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.competitor.ICompetitorsListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.competitor.ICompetitorsListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionListener.html deleted file mode 100644 index 19a4007734d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionListener.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.competitor.IPositionListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.competitor.IPositionListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionOffsetListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionOffsetListener.html deleted file mode 100644 index d5dbec552de..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionOffsetListener.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.competitor.IPositionOffsetListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.competitor.IPositionOffsetListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionSnappedListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionSnappedListener.html deleted file mode 100644 index a30684e1f0a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/IPositionSnappedListener.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.competitor.IPositionSnappedListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.competitor.IPositionSnappedListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/PositionEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/PositionEventTest.html deleted file mode 100644 index 5007627c951..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/PositionEventTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.competitor.PositionEventTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.competitor.PositionEventTest

-
-
No usage of com.tractrac.subscription.lib.api.competitor.PositionEventTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ReconnectAddingEntriesTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ReconnectAddingEntriesTest.html deleted file mode 100644 index 4e9835feed5..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/class-use/ReconnectAddingEntriesTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest

-
-
No usage of com.tractrac.subscription.lib.api.competitor.ReconnectAddingEntriesTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-frame.html index e44246f097a..167593bf289 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.competitor - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-summary.html index a8458a71635..54d0e00f21c 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.competitor - + @@ -72,8 +72,7 @@

Package com.tractrac.subscription.lib.api.competitor

- Subscriptions related with competitors and positions -
+ Subscriptions related with competitors and positions

See: Description

diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-tree.html index cd8b678e8c5..5f26cdd010b 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.competitor Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-use.html deleted file mode 100644 index ebc26dcc191..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/competitor/package-use.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api.competitor - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api.competitor

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ControlsEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ControlsEventTest.html deleted file mode 100644 index a4365dba0cc..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ControlsEventTest.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - -ControlsEventTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class ControlsEventTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ControlsEventTest

        -
        public ControlsEventTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testAddMark

        -
        public void testAddMark()
        -                 throws java.io.IOException,
        -                        java.net.URISyntaxException,
        -                        java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testRemoveMark

        -
        public void testRemoveMark()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException,
        -                           java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testUpdateMark

        -
        public void testUpdateMark()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException,
        -                           java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPassingsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPassingsListener.html index 6dda17af95e..57e83f85585 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPassingsListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPassingsListener.html @@ -1,10 +1,10 @@ - + - + IControlPassingsListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPointPositionListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPointPositionListener.html index c3c5be5af92..069a9f35849 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPointPositionListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlPointPositionListener.html @@ -1,10 +1,10 @@ - + - + IControlPointPositionListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlRouteChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlRouteChangeListener.html index b75dd5e083c..cbae5c8c37c 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlRouteChangeListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlRouteChangeListener.html @@ -1,10 +1,10 @@ - + - + IControlRouteChangeListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlsListener.html index ab1e94609e7..1fe06f0f40c 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlsListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/IControlsListener.html @@ -1,10 +1,10 @@ - + - + IControlsListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectAddingControlsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectAddingControlsTest.html deleted file mode 100644 index ed4cb76528f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectAddingControlsTest.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - -ReconnectAddingControlsTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class ReconnectAddingControlsTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReconnectAddingControlsTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestChangeControlCompetitor() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReconnectAddingControlsTest

        -
        public ReconnectAddingControlsTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.MalformedURLException,
        -                  java.io.IOException,
        -                  java.net.URISyntaxException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.MalformedURLException
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectWithStaticControlsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectWithStaticControlsTest.html deleted file mode 100644 index 5a856373f81..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/ReconnectWithStaticControlsTest.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - -ReconnectWithStaticControlsTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class ReconnectWithStaticControlsTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class ReconnectWithStaticControlsTest
    -extends junit.framework.TestCase
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestStaticPointChanged() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReconnectWithStaticControlsTest

        -
        public ReconnectWithStaticControlsTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.MalformedURLException,
        -                  java.io.IOException,
        -                  java.net.URISyntaxException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.MalformedURLException
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlInSecondRace.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlInSecondRace.html deleted file mode 100644 index 1f135ce42e3..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlInSecondRace.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - -StaticControlInSecondRace - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class StaticControlInSecondRace

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • junit.framework.Assert
    • -
    • -
        -
      • junit.framework.TestCase
      • -
      • -
          -
        • com.tractrac.subscription.lib.api.control.StaticControlInSecondRace
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class StaticControlInSecondRace
    -extends junit.framework.TestCase
    -
    This test check the values for the static control points when a recond race - is loaded
    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidsetUp() 
      voidtestStaticControlInSecondRace() 
      -
        -
      • - - -

        Methods inherited from class junit.framework.TestCase

        -assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, setName, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StaticControlInSecondRace

        -
        public StaticControlInSecondRace()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -           throws java.net.MalformedURLException,
        -                  java.io.IOException,
        -                  java.net.URISyntaxException
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        Throws:
        -
        java.net.MalformedURLException
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlTest.html deleted file mode 100644 index 3df9ad902a0..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticControlTest.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - -StaticControlTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class StaticControlTest

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    junit.framework.Test
    -
    -
    -
    -
    public abstract class StaticControlTest
    -extends AbstractSubscriptionTest
    -

    - This test checks that the subscription library sends events with the - positions of the static marks -

    -
    Author:
    -
    Jorge Piera Llodrá
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StaticControlTest

        -
        public StaticControlTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testStaticMark

        -
        public void testStaticMark()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticRoutesChangesTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticRoutesChangesTest.html deleted file mode 100644 index fd0a90ae092..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/StaticRoutesChangesTest.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - -StaticRoutesChangesTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.control
-

Class StaticRoutesChangesTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StaticRoutesChangesTest

        -
        public StaticRoutesChangesTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testStaticRoute

        -
        public void testStaticRoute()
        -                     throws java.io.IOException,
        -                            java.net.URISyntaxException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ControlsEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ControlsEventTest.html deleted file mode 100644 index 6ace47e1550..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ControlsEventTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.ControlsEventTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.ControlsEventTest

-
-
No usage of com.tractrac.subscription.lib.api.control.ControlsEventTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPassingsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPassingsListener.html deleted file mode 100644 index 054ff2a43a7..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPassingsListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.control.IControlPassingsListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.control.IControlPassingsListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPointPositionListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPointPositionListener.html deleted file mode 100644 index b1f1b317ec9..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlPointPositionListener.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.control.IControlPointPositionListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.control.IControlPointPositionListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlRouteChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlRouteChangeListener.html deleted file mode 100644 index ab603a24f71..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlRouteChangeListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.control.IControlRouteChangeListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.control.IControlRouteChangeListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlsListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlsListener.html deleted file mode 100644 index 6f6ef36f89b..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/IControlsListener.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.control.IControlsListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.control.IControlsListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectAddingControlsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectAddingControlsTest.html deleted file mode 100644 index d094b2d89a8..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectAddingControlsTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest

-
-
No usage of com.tractrac.subscription.lib.api.control.ReconnectAddingControlsTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectWithStaticControlsTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectWithStaticControlsTest.html deleted file mode 100644 index 8e4ac426920..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/ReconnectWithStaticControlsTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest

-
-
No usage of com.tractrac.subscription.lib.api.control.ReconnectWithStaticControlsTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlInSecondRace.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlInSecondRace.html deleted file mode 100644 index 5f77851381d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlInSecondRace.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.StaticControlInSecondRace - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.StaticControlInSecondRace

-
-
No usage of com.tractrac.subscription.lib.api.control.StaticControlInSecondRace
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlTest.html deleted file mode 100644 index e7c1745b590..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticControlTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.StaticControlTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.StaticControlTest

-
-
No usage of com.tractrac.subscription.lib.api.control.StaticControlTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticRoutesChangesTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticRoutesChangesTest.html deleted file mode 100644 index dfe3726a2bc..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/class-use/StaticRoutesChangesTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest

-
-
No usage of com.tractrac.subscription.lib.api.control.StaticRoutesChangesTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-frame.html index e940acbc5ce..749fbc70473 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.control - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-summary.html index 30337decb43..da1dfb16334 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.control - + @@ -72,8 +72,7 @@

Package com.tractrac.subscription.lib.api.control

- Subscriptions related with the controls and control passings -
+ Subscriptions related with the controls and control passings

See: Description

diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-tree.html index 390546e2420..ea2a323efc3 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.control Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-use.html deleted file mode 100644 index 9cdb9010eaf..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/control/package-use.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api.control - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api.control

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IConnectionStatusListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IConnectionStatusListener.html index c2944291d3a..3ceeebd1458 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IConnectionStatusListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IConnectionStatusListener.html @@ -1,10 +1,10 @@ - + - + IConnectionStatusListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IEventMessageListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IEventMessageListener.html index 1de57ff1e5c..85d7e1f0a26 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IEventMessageListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IEventMessageListener.html @@ -1,10 +1,10 @@ - + - + IEventMessageListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.StatusType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.StatusType.html index 75712f3101a..c34bb834c25 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.StatusType.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.StatusType.html @@ -1,10 +1,10 @@ - + - + ILiveDataEvent.StatusType - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.html index 7df8f6a27bc..5bd6b7b5cbb 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/ILiveDataEvent.html @@ -1,10 +1,10 @@ - + - + ILiveDataEvent - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IMessage.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IMessage.html index 750f0400bbf..3c987828bc5 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IMessage.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IMessage.html @@ -1,10 +1,10 @@ - + - + IMessage - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IServerTimeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IServerTimeListener.html index e840a8bad1f..12f1696a7d7 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IServerTimeListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IServerTimeListener.html @@ -1,10 +1,10 @@ - + - + IServerTimeListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.Type.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.Type.html index 0d142e5b151..bb19e39f599 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.Type.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.Type.html @@ -1,10 +1,10 @@ - + - + IStoredDataEvent.Type - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.html index 0b836f58c84..04424564b3d 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/IStoredDataEvent.html @@ -1,10 +1,10 @@ - + - + IStoredDataEvent - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IConnectionStatusListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IConnectionStatusListener.html deleted file mode 100644 index 7bb3ab7475d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IConnectionStatusListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.IConnectionStatusListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.IConnectionStatusListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IEventMessageListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IEventMessageListener.html deleted file mode 100644 index be886a4e749..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IEventMessageListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.IEventMessageListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.IEventMessageListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.StatusType.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.StatusType.html deleted file mode 100644 index e01ece077ea..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.StatusType.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.event.ILiveDataEvent.StatusType - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.event.ILiveDataEvent.StatusType

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.html deleted file mode 100644 index 167deec9402..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/ILiveDataEvent.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.ILiveDataEvent - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.ILiveDataEvent

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IMessage.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IMessage.html deleted file mode 100644 index 535eda043da..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IMessage.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.IMessage - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.IMessage

-
-
No usage of com.tractrac.subscription.lib.api.event.IMessage
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IServerTimeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IServerTimeListener.html deleted file mode 100644 index 89501cc6100..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IServerTimeListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.IServerTimeListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.IServerTimeListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.Type.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.Type.html deleted file mode 100644 index 252e207cd2e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.Type.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.event.IStoredDataEvent.Type - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.event.IStoredDataEvent.Type

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.html deleted file mode 100644 index f4650340efb..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/class-use/IStoredDataEvent.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.event.IStoredDataEvent - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.event.IStoredDataEvent

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-frame.html index 3be3da25770..a91ed9e5ed3 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.event - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-summary.html index fcb652fa803..d93e85a3452 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.event - + @@ -72,8 +72,7 @@

Package com.tractrac.subscription.lib.api.event

- Subscriptions related with the event and/or the connection -
+ Subscriptions related with the event and/or the connection

See: Description

@@ -106,32 +105,28 @@ ILiveDataEvent
- This event is used to monitorize the status of the live connection -
+ This event is used to monitorize the status of the live connection IMessage
- General message associated to an event -
+ General message associated to an event IServerTimeListener
- Listener used to listen the serever time -
+ Listener used to listen the serever time IStoredDataEvent
- This event is used to monitorize the status of the stored connection -
+ This event is used to monitorize the status of the stored connection diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-tree.html index 142dd7da8fc..449113cd9c9 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.event Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-use.html deleted file mode 100644 index 759e88613c2..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/event/package-use.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api.event - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api.event

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-frame.html index 9913545bfb1..e497de420cd 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-summary.html index fc645a0ddc2..1a5ffc90063 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-tree.html index fcafa02fd67..2d789fc5b6c 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-use.html deleted file mode 100644 index a98dd0d8c3e..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/package-use.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceCompetitorListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceCompetitorListener.html index 22f10e573eb..d434ac786ca 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceCompetitorListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceCompetitorListener.html @@ -1,10 +1,10 @@ - + - + IRaceCompetitorListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceMessageListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceMessageListener.html index 9e41953059a..5c37d63ac20 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceMessageListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceMessageListener.html @@ -1,10 +1,10 @@ - + - + IRaceMessageListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceStartStopTimesChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceStartStopTimesChangeListener.html index fbdcfcab4b8..4fbc1dad2e6 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceStartStopTimesChangeListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRaceStartStopTimesChangeListener.html @@ -1,10 +1,10 @@ - + - + IRaceStartStopTimesChangeListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRacesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRacesListener.html index de71b4749b8..29e60653ad1 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRacesListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IRacesListener.html @@ -1,10 +1,10 @@ - + - + IRacesListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IStartStopTimesChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IStartStopTimesChangeListener.html index ebfdc859bf2..722a7016e8f 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IStartStopTimesChangeListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/IStartStopTimesChangeListener.html @@ -1,10 +1,10 @@ - + - + IStartStopTimesChangeListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RaceCompetitorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RaceCompetitorTest.html deleted file mode 100644 index 0b1d8d2b90d..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RaceCompetitorTest.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - -RaceCompetitorTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.race
-

Class RaceCompetitorTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RaceCompetitorTest

        -
        public RaceCompetitorTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testAddCompetitor

        -
        public void testAddCompetitor()
        -                       throws java.io.IOException,
        -                              java.net.URISyntaxException,
        -                              java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testRemoveCompetitor

        -
        public void testRemoveCompetitor()
        -                          throws java.io.IOException,
        -                                 java.net.URISyntaxException,
        -                                 java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesEventTest.html deleted file mode 100644 index 6d96caaee3a..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesEventTest.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - - -RacesEventTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.race
-

Class RacesEventTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RacesEventTest

        -
        public RacesEventTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testAddRace

        -
        public void testAddRace()
        -                 throws java.io.IOException,
        -                        java.net.URISyntaxException,
        -                        java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testRemoveRace

        -
        public void testRemoveRace()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException,
        -                           java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testUpdateRace

        -
        public void testUpdateRace()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException,
        -                           java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testReloadRace

        -
        public void testReloadRace()
        -                    throws java.io.IOException,
        -                           java.net.URISyntaxException,
        -                           java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      - - - -
        -
      • -

        testAbandonRace

        -
        public void testAbandonRace()
        -                     throws java.io.IOException,
        -                            java.net.URISyntaxException,
        -                            java.lang.InterruptedException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
        java.lang.InterruptedException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesListener.html deleted file mode 100644 index 542cf74c35f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/RacesListener.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - -RacesListener - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.race
-

Class RacesListener

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.tractrac.subscription.lib.api.race.RacesListener
    • -
    -
  • -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      RacesListener(java.util.List<IRace> races) 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidabandonRace(java.util.UUID raceId) -
      It is thrown when the race has been abandoned.
      -
      voidaddRace(IRace race) -
      A new race has been added to the event.
      -
      voiddeleteRace(java.util.UUID raceId) -
      A race has been removed from the event
      -
      IRacegetAbandonedRace() 
      IRacegetInitializedRace() 
      IRacegetReloadedRace() 
      booleanisUpdateReceived() 
      voidreloadRace(java.util.UUID raceId) -
      - The set of positions or control passings have changed and this race needs - to be reloaded.
      -
      voidstartTracking(java.util.UUID raceId) -
      It is thrown when tracking of a race has started.
      -
      voidupdateRace(IRace race) -
      This event is thrown when a race is updated.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RacesListener

        -
        public RacesListener(java.util.List<IRace> races)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        updateRace

        -
        public void updateRace(IRace race)
        -
        Description copied from interface: IRacesListener
        -
        This event is thrown when a race is updated. I means that any of its static - attributes have changed.
        -
        -
        Specified by:
        -
        updateRace in interface IRacesListener
        -
        Parameters:
        race - the race that has been updated.
        -
      • -
      - - - -
        -
      • -

        addRace

        -
        public void addRace(IRace race)
        -
        Description copied from interface: IRacesListener
        -
        A new race has been added to the event.
        -
        -
        Specified by:
        -
        addRace in interface IRacesListener
        -
        Parameters:
        race - the added race
        -
      • -
      - - - -
        -
      • -

        deleteRace

        -
        public void deleteRace(java.util.UUID raceId)
        -
        Description copied from interface: IRacesListener
        -
        A race has been removed from the event
        -
        -
        Specified by:
        -
        deleteRace in interface IRacesListener
        -
        Parameters:
        raceId - the deleted race identifier
        -
      • -
      - - - -
        -
      • -

        reloadRace

        -
        public void reloadRace(java.util.UUID raceId)
        -
        Description copied from interface: IRacesListener
        -

        - The set of positions or control passings have changed and this race needs - to be reloaded. -

        -

        - This event will be always sent after a recalculation. -

        -
        -
        Specified by:
        -
        reloadRace in interface IRacesListener
        -
        Parameters:
        raceId - the identifier of the race that needs to be reloaded
        -
      • -
      - - - -
        -
      • -

        abandonRace

        -
        public void abandonRace(java.util.UUID raceId)
        -
        Description copied from interface: IRacesListener
        -
        It is thrown when the race has been abandoned. It is necessary to abort the - current subscriptions.
        -
        -
        Specified by:
        -
        abandonRace in interface IRacesListener
        -
        Parameters:
        raceId - the identifier of the race that needs to be abandoned
        -
      • -
      - - - -
        -
      • -

        startTracking

        -
        public void startTracking(java.util.UUID raceId)
        -
        Description copied from interface: IRacesListener
        -
        It is thrown when tracking of a race has started. In practice, it means that - the start tracking time and the end tracking time are valid and the - system will attach positions to this race if they arrive between the - tracking interval
        -
        -
        Specified by:
        -
        startTracking in interface IRacesListener
        -
        Parameters:
        raceId - the identifier of the race which tracking has been initialized
        -
      • -
      - - - -
        -
      • -

        isUpdateReceived

        -
        public boolean isUpdateReceived()
        -
      • -
      - - - -
        -
      • -

        getReloadedRace

        -
        public IRace getReloadedRace()
        -
      • -
      - - - -
        -
      • -

        getAbandonedRace

        -
        public IRace getAbandonedRace()
        -
      • -
      - - - -
        -
      • -

        getInitializedRace

        -
        public IRace getInitializedRace()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/StaticRaceStartStopTimesChangeTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/StaticRaceStartStopTimesChangeTest.html deleted file mode 100644 index 218cae82226..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/StaticRaceStartStopTimesChangeTest.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - -StaticRaceStartStopTimesChangeTest - - - - - - - - - - - -
-
com.tractrac.subscription.lib.api.race
-

Class StaticRaceStartStopTimesChangeTest

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StaticRaceStartStopTimesChangeTest

        -
        public StaticRaceStartStopTimesChangeTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public void setUp()
        -
        -
        Overrides:
        -
        setUp in class junit.framework.TestCase
        -
        -
      • -
      - - - -
        -
      • -

        testTrackingTimesChange

        -
        public void testTrackingTimesChange()
        -                             throws java.io.IOException,
        -                                    java.net.URISyntaxException
        -
        Throws:
        -
        java.io.IOException
        -
        java.net.URISyntaxException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceCompetitorListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceCompetitorListener.html deleted file mode 100644 index 4cc962bef24..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceCompetitorListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.race.IRaceCompetitorListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.race.IRaceCompetitorListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceMessageListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceMessageListener.html deleted file mode 100644 index 7dadcb94c57..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceMessageListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.race.IRaceMessageListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.race.IRaceMessageListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceStartStopTimesChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceStartStopTimesChangeListener.html deleted file mode 100644 index 655bd110d41..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRaceStartStopTimesChangeListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.race.IRaceStartStopTimesChangeListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRacesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRacesListener.html deleted file mode 100644 index 94e39c70430..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IRacesListener.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.race.IRacesListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.race.IRacesListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IStartStopTimesChangeListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IStartStopTimesChangeListener.html deleted file mode 100644 index a874475419c..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/IStartStopTimesChangeListener.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.race.IStartStopTimesChangeListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.race.IStartStopTimesChangeListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RaceCompetitorTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RaceCompetitorTest.html deleted file mode 100644 index 9b7951ba9bd..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RaceCompetitorTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.race.RaceCompetitorTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.race.RaceCompetitorTest

-
-
No usage of com.tractrac.subscription.lib.api.race.RaceCompetitorTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesEventTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesEventTest.html deleted file mode 100644 index 32c402045cb..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesEventTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.race.RacesEventTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.race.RacesEventTest

-
-
No usage of com.tractrac.subscription.lib.api.race.RacesEventTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesListener.html deleted file mode 100644 index c38aaf7a30f..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/RacesListener.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.race.RacesListener - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.race.RacesListener

-
-
No usage of com.tractrac.subscription.lib.api.race.RacesListener
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/StaticRaceStartStopTimesChangeTest.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/StaticRaceStartStopTimesChangeTest.html deleted file mode 100644 index 27171aee158..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/class-use/StaticRaceStartStopTimesChangeTest.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Uses of Class com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest - - - - - - - - - - -
-

Uses of Class
com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest

-
-
No usage of com.tractrac.subscription.lib.api.race.StaticRaceStartStopTimesChangeTest
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-frame.html index f2d2353300e..b4f06f1c7ab 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.race - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-summary.html index 7a957abe013..338247d0a12 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.race - + @@ -72,8 +72,7 @@

Package com.tractrac.subscription.lib.api.race

- Subscriptions related with the races -
+ Subscriptions related with the races

See: Description

@@ -91,17 +90,14 @@ IRaceCompetitorListener
- This listener is manages the relationship between competitor and race. used - at a IRaceSubscriber level: it means that it is necessary to be - subscribed to an individual race to receive its events.
+ This listener is manages the relationship between competitor and race. IRaceMessageListener
- General message associated to a race -
+ General message associated to a race diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-tree.html index 27de5104554..d0ce1d03e50 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.race Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-use.html deleted file mode 100644 index 85be3216b7c..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/race/package-use.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api.race - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api.race

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/IRoutesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/IRoutesListener.html index 9ca109dff7d..4808c97a365 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/IRoutesListener.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/IRoutesListener.html @@ -1,10 +1,10 @@ - + - + IRoutesListener - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/class-use/IRoutesListener.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/class-use/IRoutesListener.html deleted file mode 100644 index aab2b4ac9bc..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/class-use/IRoutesListener.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - -Uses of Interface com.tractrac.subscription.lib.api.route.IRoutesListener - - - - - - - - - - -
-

Uses of Interface
com.tractrac.subscription.lib.api.route.IRoutesListener

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-frame.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-frame.html index 754935dbc93..2371b9fc9a0 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-frame.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-frame.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.route - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-summary.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-summary.html index cea15e6801c..7780900e1f4 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-summary.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.route - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-tree.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-tree.html index 9710d3b9dd6..f7464552b65 100755 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-tree.html @@ -1,10 +1,10 @@ - + - + com.tractrac.subscription.lib.api.route Class Hierarchy - + diff --git a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-use.html b/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-use.html deleted file mode 100644 index 35565016368..00000000000 --- a/java/com.tractrac.clientmodule/javadoc/com/tractrac/subscription/lib/api/route/package-use.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - -Uses of Package com.tractrac.subscription.lib.api.route - - - - - - - - - - -
-

Uses of Package
com.tractrac.subscription.lib.api.route

-
-
- -
- - - - - - diff --git a/java/com.tractrac.clientmodule/javadoc/constant-values.html b/java/com.tractrac.clientmodule/javadoc/constant-values.html index b9da47f6e0b..46752f470ce 100755 --- a/java/com.tractrac.clientmodule/javadoc/constant-values.html +++ b/java/com.tractrac.clientmodule/javadoc/constant-values.html @@ -1,10 +1,10 @@ - + - + Constant Field Values - + diff --git a/java/com.tractrac.clientmodule/javadoc/deprecated-list.html b/java/com.tractrac.clientmodule/javadoc/deprecated-list.html index 8bd7171dbf1..c2519792309 100755 --- a/java/com.tractrac.clientmodule/javadoc/deprecated-list.html +++ b/java/com.tractrac.clientmodule/javadoc/deprecated-list.html @@ -1,10 +1,10 @@ - + - + Deprecated List - + diff --git a/java/com.tractrac.clientmodule/javadoc/help-doc.html b/java/com.tractrac.clientmodule/javadoc/help-doc.html index 91a4812ff24..942bb535ecf 100755 --- a/java/com.tractrac.clientmodule/javadoc/help-doc.html +++ b/java/com.tractrac.clientmodule/javadoc/help-doc.html @@ -1,10 +1,10 @@ - + - + API Help - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-1.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-1.html index 69c1d62dfb9..411e94a398f 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-1.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-1.html @@ -1,10 +1,10 @@ - + - + A-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-10.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-10.html index 167bdb32e1b..e98eeb511a4 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-10.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-10.html @@ -1,10 +1,10 @@ - + - + L-Index - + @@ -83,12 +83,7 @@
locateAlong(double) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
-
Returns the coordinate at the specified m ordinate value - - - It is required that the coordinates has an m ordiante value and is sorted - in order of strictly increasing m ordinate value -
+
Returns the coordinate at the specified m ordinate value
A B C D E F G H I L M N O R S T U V  diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-11.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-11.html index 8179882576a..6cc7ac618f8 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-11.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-11.html @@ -1,10 +1,10 @@ - + - + M-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-12.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-12.html index 1a0561d7242..3d919678410 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-12.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-12.html @@ -1,10 +1,10 @@ - + - + N-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-13.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-13.html index 8b81b0e38b1..5cc1fa54ae7 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-13.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-13.html @@ -1,10 +1,10 @@ - + - + O-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html index 839c4708b28..1509009f265 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-14.html @@ -1,10 +1,10 @@ - + - + R-Index - + @@ -80,8 +80,7 @@
RaceLoadingException - Exception in com.tractrac.model.lib.api.event
- This exception is thrown when there is an error loading the race -
+ This exception is thrown when there is an error loading the race
RaceLoadingException(String) - Constructor for exception com.tractrac.model.lib.api.event.RaceLoadingException
 
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-15.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-15.html index 01b6e0a7472..6c055422c47 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-15.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-15.html @@ -1,10 +1,10 @@ - + - + S-Index - + @@ -143,11 +143,7 @@
subscribeConnectionStatus(IConnectionStatusListener) - Method in interface com.tractrac.subscription.lib.api.ISubscriber
-
Subscribes for connection status - - - The method returns immediately and the positions are subsequently sent to - the given listener, as they are received.
+
Subscribes for connection status
subscribeControlPassings(IControlPassingsListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-16.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-16.html index d937ae846fa..db588164a1e 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-16.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-16.html @@ -1,10 +1,10 @@ - + - + T-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-17.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-17.html index d312d292644..a2d1e5021e3 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-17.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-17.html @@ -1,10 +1,10 @@ - + - + U-Index - + @@ -76,8 +76,7 @@
unsubscribeCompetitors(ICompetitorsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
- Unsubscribes the competitors subscribers -
+ Unsubscribes the competitors subscribers
unsubscribeConnectionStatus(IConnectionStatusListener) - Method in interface com.tractrac.subscription.lib.api.ISubscriber
@@ -94,8 +93,7 @@
unsubscribeControls(IControlsListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
- Unsubscribes the controls subscribers -
+ Unsubscribes the controls subscribers
unsubscribeEventMessages(IEventMessageListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
@@ -128,8 +126,7 @@
unsubscribeRaces(IRacesListener) - Method in interface com.tractrac.subscription.lib.api.IEventSubscriber
- Unsubscribes the races subscribers -
+ Unsubscribes the races subscribers
unsubscribeRaceTimesChanges(IRaceStartStopTimesChangeListener) - Method in interface com.tractrac.subscription.lib.api.IRaceSubscriber
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-18.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-18.html index ecf8f983fbd..5cac1989c21 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-18.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-18.html @@ -1,10 +1,10 @@ - + - + V-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-2.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-2.html index b73dd04c042..0c0464b4de4 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-2.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-2.html @@ -1,10 +1,10 @@ - + - + B-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-3.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-3.html index 4ea0250f520..20d49031073 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-3.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-3.html @@ -1,10 +1,10 @@ - + - + C-Index - + @@ -86,32 +86,27 @@
com.tractrac.model.lib.api.data - package com.tractrac.model.lib.api.data
- Contains positions and control passings -
+ Contains positions and control passings
com.tractrac.model.lib.api.event - package com.tractrac.model.lib.api.event
- Events, races and competitors -
+ Events, races and competitors
com.tractrac.model.lib.api.metadata - package com.tractrac.model.lib.api.metadata
- The metadata functionality -
+ The metadata functionality
com.tractrac.model.lib.api.route - package com.tractrac.model.lib.api.route
- The route configuration: controls, paths and routes -
+ The route configuration: controls, paths and routes
com.tractrac.model.lib.api.spatial - package com.tractrac.model.lib.api.spatial
- The spatial data -
+ The spatial data
com.tractrac.subscription.lib.api - package com.tractrac.subscription.lib.api
@@ -121,26 +116,22 @@
com.tractrac.subscription.lib.api.competitor - package com.tractrac.subscription.lib.api.competitor
- Subscriptions related with competitors and positions -
+ Subscriptions related with competitors and positions
com.tractrac.subscription.lib.api.control - package com.tractrac.subscription.lib.api.control
- Subscriptions related with the controls and control passings -
+ Subscriptions related with the controls and control passings
com.tractrac.subscription.lib.api.event - package com.tractrac.subscription.lib.api.event
- Subscriptions related with the event and/or the connection -
+ Subscriptions related with the event and/or the connection
com.tractrac.subscription.lib.api.race - package com.tractrac.subscription.lib.api.race
- Subscriptions related with the races -
+ Subscriptions related with the races
com.tractrac.subscription.lib.api.route - package com.tractrac.subscription.lib.api.route
 
@@ -181,11 +172,7 @@
createEventSubscriber(IEvent, URI, URI) - Method in interface com.tractrac.subscription.lib.api.ISubscriberFactory
- Returns a subscriber for the event - - - It retrieves data using the liveUri and the storedUri parameters - discarding the internal URIs of the event.
+ Returns a subscriber for the event
createMetadata(String) - Method in interface com.tractrac.model.lib.api.metadata.IMetadataFactory
@@ -232,11 +219,7 @@
Returns a subscriber for the race contained in the provided parameters - file - - - It connects with the liveURI (if exists) and with the storedURI contained - in this parameters file.
+ file
createRaceSubscriber(IRace, URI, URI) - Method in interface com.tractrac.subscription.lib.api.ISubscriberFactory
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-4.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-4.html index 5e5e7c442de..271b8131226 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-4.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-4.html @@ -1,10 +1,10 @@ - + - + D-Index - + @@ -73,6 +73,10 @@

D

+
deleteCache() - Method in interface com.tractrac.model.lib.api.event.IEventFactory
+
+
Deletes all the cached objects that has been created
+
deleteCompetitor(UUID) - Method in interface com.tractrac.model.lib.api.event.IEvent
Delete a competitor from the event
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-5.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-5.html index da5d985b1b5..8e0480e209f 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-5.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-5.html @@ -1,10 +1,10 @@ - + - + E-Index - + @@ -76,8 +76,7 @@
EventType - Enum in com.tractrac.model.lib.api.event
- The type of the event, according with the EventManager -
+ The type of the event, according with the EventManager
A B C D E F G H I L M N O R S T U V  diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-6.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-6.html index 02013841f53..28ac25d11b6 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-6.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-6.html @@ -1,10 +1,10 @@ - + - + F-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-7.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-7.html index eb0673e4e1e..880a1e66321 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-7.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-7.html @@ -1,10 +1,10 @@ - + - + G-Index - + @@ -111,10 +111,7 @@
getCompetitors() - Method in interface com.tractrac.model.lib.api.event.ICompetitorClass
- Get a list of competitors in the class - - - This method is thread-safety: it returns a copy of the list.
+ Get a list of competitors in the class
getCompetitors() - Method in interface com.tractrac.model.lib.api.event.IEvent
@@ -142,10 +139,7 @@
getControls() - Method in interface com.tractrac.model.lib.api.route.IControlRoute
- The list of controls of a route - - - This method is thread-safety: it returns a copy of the list.
+ The list of controls of a route
getCoordinate(int) - Method in interface com.tractrac.model.lib.api.spatial.ICoordinateSequence
@@ -421,10 +415,7 @@
getRaces() - Method in interface com.tractrac.model.lib.api.event.IRaceSerie
- Gets the list of races that compose the serie - - - This method is thread-safety: it returns a copy of the list.
+ Gets the list of races that compose the serie
getRaceSerie() - Method in interface com.tractrac.model.lib.api.event.IRace
@@ -433,10 +424,7 @@
getRaceSeries() - Method in interface com.tractrac.model.lib.api.event.IEvent
- Gets the list of race series of this event - - - This method is thread-safety: it returns a copy of the list.
+ Gets the list of race series of this event
getRaceStartTime() - Method in interface com.tractrac.model.lib.api.event.IRace
@@ -459,10 +447,7 @@
getRoutes() - Method in interface com.tractrac.model.lib.api.event.IRace
- Gets the routes of this race - - - This method is thread-safety: it returns a copy of the list.
+ Gets the routes of this race
getSegment() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
@@ -517,7 +502,17 @@ NO_INFOS: No information available for this race yet ESTIMATED: Race start time is estimated SCHEDULED: Race scheduled to start at the given race start time - START_PHASE: Race start likely at the given race start time. + START_PHASE: Race start likely at the given race start time. + RUNNING: Post 10 minute gun (Start time therefore confirmed) + FINISHING: racing + FINISHED: race completed + POSTPONED: race postponed, restart unknown + CAN_RESTART: Race abandoned, a restart is possible. + ABANDONED: Race abandoned, no restart today. + NO_RACE: No racing today + CANCELLED: No racing today. + NO_DATA: Due to technical problems, no data available for this race. +
getStatus() - Method in interface com.tractrac.model.lib.api.event.IRaceCompetitor
diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-8.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-8.html index 544f8c5235a..9d9c818eced 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-8.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-8.html @@ -1,10 +1,10 @@ - + - + H-Index - + diff --git a/java/com.tractrac.clientmodule/javadoc/index-files/index-9.html b/java/com.tractrac.clientmodule/javadoc/index-files/index-9.html index 84a857a9f66..bafdb028614 100755 --- a/java/com.tractrac.clientmodule/javadoc/index-files/index-9.html +++ b/java/com.tractrac.clientmodule/javadoc/index-files/index-9.html @@ -1,10 +1,10 @@ - + - + I-Index - + @@ -161,8 +161,7 @@
ICoordinateSequence - Interface in com.tractrac.model.lib.api.spatial
- A sequence of points connected by straight lines (line segments) -
+ A sequence of points connected by straight lines (line segments)
IEvent - Interface in com.tractrac.model.lib.api.event
@@ -196,8 +195,7 @@
ILiveDataEvent - Interface in com.tractrac.subscription.lib.api.event
- This event is used to monitorize the status of the live connection -
+ This event is used to monitorize the status of the live connection
ILiveDataEvent.StatusType - Enum in com.tractrac.subscription.lib.api.event
@@ -206,8 +204,7 @@
IMessage - Interface in com.tractrac.subscription.lib.api.event
- General message associated to an event -
+ General message associated to an event
IMessageData - Interface in com.tractrac.model.lib.api.data
@@ -298,15 +295,12 @@
IRaceCompetitorListener - Interface in com.tractrac.subscription.lib.api.race
- This listener is manages the relationship between competitor and race. used - at a IRaceSubscriber level: it means that it is necessary to be - subscribed to an individual race to receive its events.
+ This listener is manages the relationship between competitor and race.
IRaceMessageListener - Interface in com.tractrac.subscription.lib.api.race
- General message associated to a race -
+ General message associated to a race
IRaceSerie - Interface in com.tractrac.model.lib.api.event
@@ -332,8 +326,7 @@
IRoute - Interface in com.tractrac.model.lib.api.route
- A route can be one of: IControlRoute or IPathRoute. see those - for details.
+ A route can be one of: IControlRoute or IPathRoute.
IRoutesListener - Interface in com.tractrac.subscription.lib.api.route
@@ -352,8 +345,7 @@
IServerTimeListener - Interface in com.tractrac.subscription.lib.api.event
- Listener used to listen the serever time -
+ Listener used to listen the serever time
isFavourite() - Method in interface com.tractrac.model.lib.api.event.ICompetitor
@@ -376,7 +368,7 @@
isReversed() - Method in interface com.tractrac.model.lib.api.route.IPathSegment
Flag specifying whether the segment is part of the route in reverse order, - i.e. travelled from end of segment to start of segment.
+ i.e.
isRunning() - Method in interface com.tractrac.subscription.lib.api.ISubscriber
@@ -398,8 +390,7 @@
IStoredDataEvent - Interface in com.tractrac.subscription.lib.api.event
- This event is used to monitorize the status of the stored connection -
+ This event is used to monitorize the status of the stored connection
IStoredDataEvent.Type - Enum in com.tractrac.subscription.lib.api.event
diff --git a/java/com.tractrac.clientmodule/javadoc/index.html b/java/com.tractrac.clientmodule/javadoc/index.html index fba26b23575..3b7d8daa7b6 100755 --- a/java/com.tractrac.clientmodule/javadoc/index.html +++ b/java/com.tractrac.clientmodule/javadoc/index.html @@ -1,8 +1,8 @@ - + - + Generated Documentation (Untitled) diff --git a/java/com.tractrac.clientmodule/javadoc/overview-summary.html b/java/com.tractrac.clientmodule/javadoc/overview-summary.html index b514db6fb10..03ee2d20972 100755 --- a/java/com.tractrac.clientmodule/javadoc/overview-summary.html +++ b/java/com.tractrac.clientmodule/javadoc/overview-summary.html @@ -1,10 +1,10 @@ - + - + Overview - + @@ -94,40 +94,35 @@ com.tractrac.model.lib.api.data
- Contains positions and control passings -
+ Contains positions and control passings com.tractrac.model.lib.api.event
- Events, races and competitors -
+ Events, races and competitors com.tractrac.model.lib.api.metadata
- The metadata functionality -
+ The metadata functionality com.tractrac.model.lib.api.route
- The route configuration: controls, paths and routes -
+ The route configuration: controls, paths and routes com.tractrac.model.lib.api.spatial
- The spatial data -
+ The spatial data @@ -141,32 +136,28 @@ com.tractrac.subscription.lib.api.competitor
- Subscriptions related with competitors and positions -
+ Subscriptions related with competitors and positions com.tractrac.subscription.lib.api.control
- Subscriptions related with the controls and control passings -
+ Subscriptions related with the controls and control passings com.tractrac.subscription.lib.api.event
- Subscriptions related with the event and/or the connection -
+ Subscriptions related with the event and/or the connection com.tractrac.subscription.lib.api.race
- Subscriptions related with the races -
+ Subscriptions related with the races diff --git a/java/com.tractrac.clientmodule/javadoc/overview-tree.html b/java/com.tractrac.clientmodule/javadoc/overview-tree.html index 90d5a38aebf..cf649ed17e6 100755 --- a/java/com.tractrac.clientmodule/javadoc/overview-tree.html +++ b/java/com.tractrac.clientmodule/javadoc/overview-tree.html @@ -1,10 +1,10 @@ - + - + Class Hierarchy - + @@ -332,13 +332,13 @@ diff --git a/java/com.tractrac.clientmodule/javadoc/resources/background.gif b/java/com.tractrac.clientmodule/javadoc/resources/background.gif deleted file mode 100644 index f471940fde2f39ef8943a6af9569bcf986b1579b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN diff --git a/java/com.tractrac.clientmodule/javadoc/serialized-form.html b/java/com.tractrac.clientmodule/javadoc/serialized-form.html index 3a47f66744e..475c59885f8 100755 --- a/java/com.tractrac.clientmodule/javadoc/serialized-form.html +++ b/java/com.tractrac.clientmodule/javadoc/serialized-form.html @@ -1,10 +1,10 @@ - + - + Serialized Form - + diff --git a/java/com.tractrac.clientmodule/lib/TracAPI-src.jar b/java/com.tractrac.clientmodule/lib/TracAPI-src.jar index ffaed9cb98207edf1a49c949eddf649fc8560d62..363a0461d573e6c709c4b6527890d55c9f03bc3a 100755 GIT binary patch delta 5660 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 delta 5614 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 diff --git a/java/com.tractrac.clientmodule/lib/TracAPI.jar b/java/com.tractrac.clientmodule/lib/TracAPI.jar index 7775a36cde6b05e5c725adece0b919faf9f7f7c0..6dc7a5362c120ed8997a5746600176b47df815a8 100755 GIT binary patch delta 185154 zcmaI7190U{_bwXSn%JJ$b~3STV`4jdf{DE+wr$(CZQGtCXWnn#d(S!l@7CQ_zuLQ3 zukKy_{HoUTtnSrG8%%+_Oh}3{;1C!fFfcG6mvYR~aY)<{|M`|-0|XJ{F)3jNiS=uD zkXIQx;E%cGK3-WvYZs4pZ|`j0Wn50`2PP67^KIq1)-G_%^e4x+FiWd%_XXK!_oQF6 z&Z?=Wav7&@=sAF5VU@nPiI0>r!{N<;^wQ^ROaa~B5Sy0AEQ8J}X=b1VwRogxRzzHb zMW;(wC7!!Ozcuq30YC>4@R)A1;zfADcPx&Urvl=|sS=JNs?syG zy}O~~TkYr#76AN8%G%Ql%ocg*_e`zCE@TmKJw{k>zSIfGau|VwxcP@Nkdyo=nqm^g zu(o7+vKXP+7@SR@6l0BpEFQxvV{**H203s&;=Y}^xNk7=T3WR6BdX-21Qx$A8l4HP zKPW|+@J4SM;Wy~$Mev7O51~X18-ocSrk~E0%_j`boPQgtF#Bcw{Fc3srzisrbJc_y zD+LMy0ssR6`M*I1&Vw@j2W21(*k8Dl_y=GJfQsOVKzlI!|8yl8CBgn({2w2DAPE`~Fb4JC zNxBCh=zv0K|Hr&QIGTSfqyQcJH4Y3vH$O-djAh_3xvf8`qME62fTv}Au3KBjESfFr z0wTE?70m6HyGNXu-a3Y4)4dTCLTpG#2+>pqoZz|{%_<9tXIxhn;a(n%v8OIMpFvla zpO!AvRUuJsU^T`7eFP@hrEX`I-7i`N*pcJJgXBcEO(xw?_7@jtalqy_8U27m=BCu9 z!<8FvySMGLd~|g5$d(4tQ8jZO=u|L+ z3mZ>zkXBsveOZUAX`;w%4k$8ac$HK_nz2d-{(=vuubcs}a#%=AOiKbGlUT zacUt8vlJ(9bl5q_a{%8P8+_Q#PkxX`JiWlyJRMq*S$QLRqo{n#njN$mb?o>A-QLr9 zseCwc&GF|%5|k;$!Tfw{&1_GnA6|l$)A9}lO}5zavOgZy2>6;ztG|he2ZT!}B=nNp z)L<_M9KcBc9q7YLAt3w3gBy(R1+W+m7nplI5br2AqtV!v#PkcsbbIDAXEbR!HYu$o50&h!cgFxm_yZUJ*! z9(*t8`+{U3-74AkFeiFswJN;mm5?b(6mqqnK(R@|FW}U%x)np;Vz2vaAASrs`?!EQ z$uzN5<6erK=>TkmV7$87og&~dYLR)5+e|&dT7p?m5Vm2Suug$?3pZs!w5`$+da<`= z-E}M%yoqkO)w1NJx;K$l7pEouYy7Vkr2g$KKYJ42MI6YRA!PIsVn^zrCYS;_sD)HV z<~|_?B6wt|67{vIz?m3JaffjjuP6~i0aBPvYLg2edw`AG=NiS{g%8$_l8Ne_+TD_h z8Z&L-2$BjWUgkZlFKh~~L}qEUO$G1`cuIwl!-#U4hAq(DYo~qzTP|g7`ljx590|Ro zcQnz4r|JC0B?oP_=9M)$@#2lXU@FU29nB1u+VHL_U!gAZhS-Ttm`)#!2bL1D1%jlS zce&-NTmhepF3$8NJ3I(rE(86kB&mgkC1|o(385Vf@EqBgTug8QZe$*&3>rU&g}4zL zMD0S+FA@v$Th%?YHmY0bD^a((>wWQKecXb?zxsqrM*NKQXYQC2VkSA!IrBaQl75(t zTl7RGGhs#2ax_W20pTobXt|t)>^SB>1T04D@BveM_0q`}&p7ub#ALMh{I3yj~K z^1@}S5%dGM?#9}68P=8Zvps&Z{%;A(9bh+@3qRKMqKJ++I#x13$2;4ms#!C(C?;2I$XWa5t-}IatN)kPw32V$fr>t7-z^j)q zF{KROEwZj$R;$T;*01^oXD2mxJxQAoYGpDEz9(-WunsemAr3GJJ^c(|&*d(B9|t@k zp*)5nx|^_S?5%nB^*Vh zjF=mbpRmZXLNTx|4zTb%L;piNP(OrH3n4*3Qoj5b?Ob750chmZuBFFSnAkL!s_R*p zn^ev@q7g_hE8AloEuVriGCZ`s@(n!lf8CCY@#*ecR z<5BDDrmCjv{?bweo6k+tRLq7~j@67Ef&4>r&@dN~MrzJ~$j0-}^MBLcKMVvMrr`NY zeN~qP!0Rs*e@W{<^!EcBF-Za$`d?PMR0pF4Mq!iu^#)y|ty{;w1^eqBr}3xnHy+*J zmXZ#{KP{A`mN&RBb-wrn(0}bcT;Tt&9TkW&f>ifJHUj#0J}64D?5 zo!Gv=fHAOD6MFoC#`}K)1}gnm1Qp`Z4{!f3M?g`!BwI&HG{xtzDX-WTjgVHeo+i5TVjsPh9(GZ4FSV_9G|H=v=C><*> zmIVUHU;>pC4Gs@qmuH{|{?}WW;XmGZK$pm|zZOR#sDH-e)qw&DApUh4fhI`G27|}_ zGXo~z#Ti`<|I@||Xxj&6TrXtp4@SFIPoW&!w+MGoO=FAdl`T$}=C)=hRmZ#n^Dqd` zhjNv-39aqdjgwq6bc~SKbsPzZ-wWNkT4R%&yC{~Wy7Jxf-nzTvZw35*pF;#$bEF7u zyY}D~!QMW=V1#0X)rShi4j378h>a!_j_d`%86y;VN|jb8^~|f7d9)%-F}>K}WbXL}5M?3nLZ-v-insRqmFT_vn;OR2~GpZ zNn)9yETM;mT82@12Ym_U1c`?fV^p zh!f46UO&|zuTE;7Pw$AzD>N3T8h;OPOI;~vHjaNgh-SA#lEep5ZWV z1H4W%AU|)$^n_LOYJ-;?tu^skNyQ`NV3l)JCy)#c41!Z2tj%c1BxTyqPa(DI*btx1 zGCV+=N1fxQyQM#CP(?j(5lB?96|2%qea7r}$XCRn+a!bAj`lnppy)=Z$b|!7bR?c- zrvq8GUolSIB75dCB(%vRUxj+5Z_by&?~E!I`1f|PeXx>BOxgyEnN`z^P$sCHB;rNN zrX%p3^z2G6zL*)s_W7;hn1RO?=;pi54@b8SV4XKQrwHH04p20BNoClWSs|`D2#eBR z&M3z4AS&tOR;!63Je7K=^;rWv^!o6Q4Hwlhzp%H51=2EDdBEFSdq7_)`>spp)Gj`; zwZ|Z9K7iv2^nb$@7|ah=xGo8vx^4+(y!H=z{VeXZAe|_vDP+s2;Qq>OYQ8+4gxfk( zx%1UWE8CK2t|Dh*UxVGRrf719c|~ z6JoA%Qgiug3l{Dtz(Q)e+3Sl}I?s>R_Q!yeVh z>ky;r?TY4>VwEJ`4v&MiBxhXbuEoD5SPjoef3p3uG&98guq@z->UK4j~}A~kmfJlRjc)jkqZkWCM0`@WT*doQp>hjD84PFnm}fnXM%iUq8OQoGPBvd<@o~A@FA^Q8LY>;9|Z&=!&rdRy}fZX4`cZ=;udM@VI^~X@R zPHKHoT0t^3$31ZOaNg`9dFs_gnCDi@3PNLIM8rSzHkemmCWziqJIf#oKpj1mspoZr z+eN|*0mGu2o$91~=QQhwH08hG)-rn?1H4PByHuaci>{4EXOwq@O0Kz)jeaWgA}^ct zPuMRQW!O&b02)=w58aDzF-DWy9m5@eMYv=#&T3^Wt%!Fq`E<<6DKnO+vI&F*b6`%+ zv=_jehN-M+4z;8R?{lHw;@chRja=>b5ZF9$TKXW2XYW2g1o$=uGUldtO4;>M;8NPp zSbC-n4)dxSUSYB;nB*AZifc*tiqa<9iV=Pd+KL^L2Ox1Ks*imWR~m&}ZiDA;BbSb$ z9Gud;JEmKduu$R-EFI3McOaJ4Xk+W6k<0m>2~^7HX&v_R%Itx1?@$l8wGe+?3s)?B z9#p+wC+{6dL84`k=-*=ed2@_zJE!}E_c;F^K26^90WXp<^Qtv3JG)E{eFnLTN2Sz* zG(*D_VkZYwOrW8@Rr4e{Q!}3S5v6~jKX_(o*mq|;>nu8PE11qTN)3vMjfwPi27NQ< z3;*DIBpC)6aeB6Eys8L!_U2hz)U>c63wk7engpEf3;v^WAYi**2cSSeR*?Ru%1Qc{ z4`~2fe|Qh$!;ZsruG&^KTd=-($9=Ybqmh=nBGgJ;yBC?BJ~8*6a)k|Eih~>v#oXt1 z!2JRA6V$*#!Xlq(m+Q4R@E_VcTHnYgkt6UJ-e|L!;@)c7;y$wbczs&h0&NfTMn%|@ zMHYDuO{znsGh_~M9zNzGA{m2h)HNNW0Cc`5yJsD1hIe5pV zaKNEitm{|E@`Fd{hx` z{l%t?5@ljNwy9vn;Ud1Jy`4!=R7$taMoG0rS_%tNq|R-?O#${?#)XHGQUfBu86cl| z{mSY#&^k?RQL$>4LLWzw=;%~iPioDv^){HTQ-1~qOi5Sa*hn3}nHrbTz>=OMs57;Y z(`rcQ(M>L5C(|<)Z4dT+4!=k~X{$`I!+=w_4WX@jT(&nkJuC`HZ1lvM=CSJ8Hys7+^o;yl=lE=i^EYJ2JbvqIYiPU1-70_-(91YHM z3q^tZTS?;MLttUWl;VY_v@&4OJM&rYIq9_{T{hk8-Gue*(_WUtYm_gQ2}58O&N4k5!Bj$HqqUoApOFw28MsKI2e z#cqZxp?GJU0zjp=R+8Qz4N#-3P}y@lg2P`k(rs*d-emC8FO2N7E!4pCn-qIW&!Bn1 zWjp{PmR95Hiv%MqRAyQ|f1p!M{>>3<|y7Wm?)Wx?}1P31=L zBgBmXiil>+G+QeIBVAkTc3OweBSMerZg{ffFx^RQG5>6yIwgm48L+3mMQg^pcM05h zYFF<8zt_TnqCr4>yP=h^?8*`V2W=0=R-n8v;Y)X6KVA{W&wXIps8AM*t$fdmA(l`< zM#YX240^1C6Ugm-b_`!+zBf!4kVNN_PUL##or^J%1o=M1ByxdGooyH|FwWu$eay4n z!zU3Nr<}ID0BIAy2%x!Mzsj5X8i?rCLthOViAM2ihg#xD)TA2=(DBp7)4XdCM`1mFJ2L+>c)%)n)L1S}zA)|AYDKcgw|8o&wE|Bef&SB9X`B$kr~ z56uq194)|*5gzTJm7TNVjWzEz?Vb1<{sh0-uz6J+0j(uNGprrTDDX_?v)I*b9Ja-s zBAb@4c5gJ9UN^Pk4R~97J5SmAcs+sp!F#QTJ#h@bC(Or&DCfZy3C=|grHAltG^$Js zCBoDTW288sh`oS~)YlKl`HnBa6Nzft&n!b%XUwIHh{w&$MSHt@tb{qFijQo9B_HIV z+)jiVO@z3^T;rjO5L4P9phb2`#)QV85IpVX=_ z)UM+GHIvb9ORcHc*kRu5wNzP&ShiMzqHAIqSu9vfg!vR}g!D|*pPN1U@M#Y`Y`)at#lPH_^F2!#x zE$jpyLZH6M97<~%F#_tG%_a#OAKsxsWN?!5ytK&80aJaU{9kcQdTNB!_(bKu#@)NZRQdb)s|l+agbYL6 zd1o6gezDHku@Vig+o+go)s!*&$)N#5RWYV*wNitG5txbzNMoY~l^QAaNDPI5B^f$( zwP9t=H#DD7(Vjw}fLB(!8H{Vsq-=j(4!W>?4~fK(@#&(|&X|Xwv(V(KEaMaB?DMi~ zcEIfIP~VitNt0D_Y|zJSf~7~K_mCgB!`1JOz{N6-3r}KekJMmm4`;>I?>pNahfN(~P)}l)Ul-qKvk4jTDwE?4sR3sLeD-d2D@!@#wsgs%I4|&!W6<~q~7Sm`qXRkRn zm2N77pQ?dYi%j891BV;9mjmXAMBAduB|Bt3u@`Jns6VDS-q#_ zu#a)O;>1a1#-bLOCch<_Eb}mC71xK4k)GDF6*$!$M@z}p#V7afd)c=}Pz|dGX%r8Q z+Tf4yuy~*E*MzI@V zLLcz?0Aari3CE;pCESW=DHVwnl!3GNO}~Sn;P?%5O%O$uI+)#$_x?rcfz0QK<}N3} zgnldgCo#QPaaT|oS3_|i2RSIWPPke9SM#wKbPWoN-YTN6TubX6Kj)v?Brkt)sXJkC z0a`;vEahUT7`msZx~aIJ9@_cnegqx(7qHdI23S&4dk`0zU|#07(9S66)pgBfjJjKp zw7&|mr4oowm<2s9$l-}TTaZXqAq+C+c^UA(TSayVc<^|bU_9IqZKM0l>x$T7KBjlv z9C3Yxf4+kqL@|YEaN&z!INBk+tT6Al22{gdpqcV2Om{%n0xjTVUA<&ol`W!7>wyOT zZY<0(d>d4*OUkP-TZlX`#hOLAeO1Q%4^<|?v(zRV+k>k^d!z}dgS3XaOzHfjd23c&>%)0>Rpr=dsau0i;DV<-?E;*ffi6mt0H3Hc z5u?n!=&>P>kTRb2o*+#j6Fa$L; zMqAg9X}ZzI7KL<^!HwGAEwdyc7ex0<)kxr6l124sQxMzF@C`+7#-+XHPO03fUo3*~~(GE9ZD$~gT zA|K-(B&@Zv#Ns$!il69IYFK@cYe&+8_4j(q)0E?F!`wQ#fVJVGhIR-Vk{%!{Tx$uQ z7Hr(+FJ@HsyYJzE8CbFkvs@fs^3ub5OKtWA%iJwAN;2!Qa6NMSeJYA`ozBhzQScx{c-0DJZqFfwFNl4TQdc8}LQy-7GZ{2%pxt*8^un_BO zbo6&m&^mLma*BBk%s2xYfQ6~8vqgsx zz+y_k$X&BGHsj3HT;`}|e&G)kTKie*Lly0$$?~$Y>{-Ibs%%I`+T}1kIJZ14VH6S^ zMw;d@9Tt7{Yd9W^Ak?^<(tsrgoxwA>&F(a~&D|Z__PlMq_8~VUDN8N$O=wDIZQ-7` zXQ7^uXUV}KI050LAi0FN2+RkBg5-;=!sQ77mBb4PC}h?yE93^3Fta6W|C`Q3J=bsD zbMZOUH%4kideBoM(C@fk83iC=?}wk22Y&_lxePx`_bfdJOMBuBq9p_s>8jK?Wg^il ze!*uf!(#hRfU|4DW>ujY>?AU_pG?7`lsP6Wa)-9BtILU3I;>|G7uG}tN#_F{$3YzFfpJZewOcd^+oLdns;>fY~^)(tD`gPYE_g}JS0X#GJp!Vl`1OTQmwRw;uSLZY2u{uFdMx8=v8Jg$RoOG*P8$zk}7C3@Rz$0eTyYA zRoe(CID(4la6V%73e>UKD7E{$*(x`zQ3UlV&qufv z7>?LOeSfjz<;~OSV7FRHfFQLhfMQIk26}zRVEcK7LyZh6uQyT|t$JM21B^iJSB5+7 zuO|&PfoM%kGmU~HQMH7<#v^r^m6poNS^GCWwW5Mk5ev+PjD*smvQmLC2AKy^DQ8JM zGW-gy@`DxbC|8ST#JD%jt8QH$AJP>)v2(lfAy}K7s#RTW+>3g)@E}%dz-zU3CR@A_ zhHY1myB!pskLz49@{}Q&T&G++CCHrR^^1%(Sj|dPLA~3|3mfiN(N)eXM_V_^6H)7y z-~Rb2fQ`7WX`B~yogxP|{FI(X8vMxL{uRFGwc^bi0zW}`3o`E7;-|27IGG?<9{6=9 zc>|CpJt5=BwUHE=5oUEl?5GPZAk#rc*c7ERNxAS7?09K6#9jpg+?3hikGev~xE4s> z$rPV7a<&oNR1fczF|jxcR z`zNO%|1U!Llhfz}rppTw=t!*wE~QH(bzJG~)8$Mn;ueGML4CV)2z`TQXDNTi$5V>O z#zQNvX1(!#LU%o-XZl&VQy7d%(eNByp0cvKU#_RDw9R&X+--)4)n|QhOCE(-27F-W zERo)O1$|)TaFV)^hybFe(@yWZBJn}zPAE2u5wRpu5Q41XN-LJ% zF?`6wjDugrlqRTDS%E4lS`>(HvWzawVZpWGCAgF_S}c%ZiBsmc-*svga$x{dG=r#z zF%-C%?-Pjt<}A!Sv?!{2T~OtI&FRR$XW>EE%Xwaspt#nu+v=9Fnf*|oaFbEA3&d3G*hEy;Desi}ie>Dp9s{q(-3 zb}s2LG0Tc`#_fY$O=LCWr6Bsif}Zz)31{-aufw+igvggSLe9%5*zKVR$DM@P$xpcx z<0KysGE|{bR}kqB}zcd`Yxaa`&!r= z)wjEc7G;LnSMI`h5YeKgX0bu))vfq|rVY<+I0AbQvPxfJVls}TE^`za-W3>Lt#@x7 ziHTnap#Fv~??#D%p*K=eSQ>%FzdLRW>IemiD70F?rV_c$y5qK5I{9&RoH}y3ld0TCbcbkd@sPMM&AcQTZ&#%qQ z{0_qdXz_*b|3Y+y(blxE6-}}={5(SFI1u5=LZ&vU%J>!kBoB(kk0#F zg#XAj3+uobLNc?FWv-&+m8rkoRDm*ojswwi)vuUXmnLUDbEr|(R&V1SeZ&E0H+O^I zRH;++Qqd-FH(zmJhG!qi{M+yv*REol$F-{BfU~G;&Y@)I2M>Hy5HJ<8Y{iuEy|rz( z2JFPfBlw8HIh&7FQpw_Q@ltslP|4K**+w!GZ2Yde!LOH<8a?ZM|3U1FQqVQ0^;10vPw>A%o_};B2N0n>8(ouu5kdU< zp>%Bm1|am&G=z+F+I@r2nC~jv;m6#Z3wX!pBD>z(CIhqR;r72Xl-mY-hV^%?CaH#H zfYSvd!hD9`uI*L`h=KhL5Wh}>_+V)!z1HYX?7rJB?S?n>mIKI6-&DTRyDeOaX}sh6 zD+DOO>Vh*?oHW6f!k-5uLHfb1AD3#V7$UcmUe9gMfeC^OkX>u^7@$9&ZQH~ArhDf0 z?}GhE?B0R`eA~VX=%TuQ>JdbF4%sGheVB@Adp)Akd%v5j{CLpnh?;lYb#joofUNuq_Z#ZL zvWSg?Tbf7^FCrtarxSjD$-4wyPBHZ^;3;{#Bg;zyX)i+z(AAbOR-)6={#%N{pd(?- zx5>$K56~7#oNys=Up#e{Bk~C?da$`{SF!$OEl)4!=EqR-P>&9j#shDI6Tl`(o$#8z z3F#R(g*{EH?{KZTh(eHj#b5^;YzMqDe5sq14RG!Ku?_(JCpF`Wby#$T1_41p{olKb zP=Cu^lZ5}RR3HX=YM=nTRUU9YeSmCKh|tQU74=LA>NctMVsR1WnCvdoL4&jf#Hv4m zhxPmva>h!oCh8u_N(Jebrlav{J$T1(ikLL=jbrzStT}St9fl@#h)nJWT%NgFQAPErG-5;TJ&MH~$!_ck0~!kdbdG zo)*8!ofcz?n5Krf1twXqtT=e44zqUlv;;Hz?#ge#h!|`AiCC}r3=EX7YXh>LYaj*9 zI^bpB$3rxHJQ7B--mY;0jMN?(TY#M*#+$E#eo>syuZ00k5PXFnzi3eKQx+yIYswST zqN7s8$vF9i>`wqT0`%Ldq3|9NtNEG3F!fsTW^==XgG1<|bndIeGZB(7&n&MveP|d` zv$$+d!7U2eU(+Qi@qA_by<_4(K71s;z(itmzvtZQYBLhf{5fM(I-qJeSE{hQ-Z1wX z$H^nF_BLe^{K5*0^*O+jS|Vq5XJMj6Mlc5#Y}y}uj6DO8?JzC8SC&d!gtaZR8b=jP z`wDZ8NOjs*(p43{nxrsw3Zx9dg{{g>V7;w*ZZ8=cQ&I79B<}HI2xM!w8bP(Rrv7^rZZPu2X55jG>#qd#sSyKv&SfuM2LWn&_SV6l5bD zwcWTsfx|&$^NX~MRoiOtyUnL&r*8T@GWL2W0U|%3C8GiMVIu607{9u%$u|DtR#xxj zR@#imt9ozJ7LI*MdQZD4ElgB*`kU~o>=}fp^cjYz?k6;+Pwpgi6^ushHm0mz zalU?l%3bEjl4rcm?2lvk2gO{kSCMv0k#W8J^N{nx%@jJcrA0fCSsiki+Tq~Fz{1hm{zjcGyL?dhkl2WqJ^Y|zg|T6h+-8$ zWLGY1qIK>_I+fNZSK4^nZu>yEmX-C@QhZ|k3k^l-y8GfGZAHD>g@AP@^qM-DceUpH zp_En*QZ^x%f5p9XVT>Ph1Mx6?L^1Id-D|5y#0X;r+e^W_#1_ZvKpphcY)g_|mWY2$ zr~9``Vf?Lor(!sbkRmwud{@-W;X-jhy_kq>n79X7#-=!RoV?ke5`fu#Pl{y+`&fiEIf+~nXxpNq0CkD+psigxBgCF0#x@!_g*JECQiOrI z%~`C`dT&-4O>Y&|Kh;c=qWj)o77ZcrVtbLVQEtA$&h@FD^hp|)7eYu;wUX~*gvHJa zv_VLXPRB;lNWH8`Wh^K>BB2}r5||0hcZlae4RWT%0ei@QXk7Glo zF}K(u!~vCAT1SZKvZr-^I3i}fLGyX?-Dn6^KFtDJtsJcMd9kfwh;6q80O$C*TwYKw z@5=d}XppSYPZlh9Cdvo&DuL&q1or^z+Y8e|jgnT0My74455%6_FW-mJ7RpgV+C8Vu zQMYA&Taw3jWa>+qYgVnEilXJ*fm>$JcMOXKJ(JCH<}H&nLCTOhAlg=SY{0i2v|W@9 zzR9TJJyk>aUcnL4FCKi-00C{2VivyqX$(ASX(wcDWp;jd|h~l&bm5 zv)=-!joczP&(xf{Zz|RrYdv^oL6}!G!ngBIni}*WKH-YjzuMfc}8(d|VD(Bb0qn zADpXo^;&KV&n{YPB1MZN<~r)S#1!VbRffiC_@j2z=T2&_(tI5p;b$;RnWBr5r31t# zpNo2f%;jj$G2(fYUsNXKd8psdOx66V@N2LN2e9RD0GVSwAztv@G<(=MNa{?P>t@C_ zjnrZpyJ}9$xelp0-484gkF>{2aW9=%Y*F$hi82YYNZmN$BGN#%SfHEuV(&ZAx=bh$ z%4cH9IG37cN)&DGgR4i?iQ$Rz_fx<>T#xP;t5y4l>)TQOH`o75^^SU={}v_MdQ$>) zsUOK)E8v^tJ4j4s!rRab47XsiD=ncZZq0b#DJ)nw^m#ySQdv+y$S+$IEIL-Lv= zQ|RzSisP!M^w1{AuZfq5q>B*ZWonVLu)d1V<;%thg^A)Gky}N>tb5||J!F;~-l=P4 zSNWMoU*O`)NOIavyU{7ISS*5p@=H)H(_}ozL#&>sBhWd^xKOTPzCk;=%d9y!DM%w6 z(_1^B;}VIl>OG7$)`^X`T`x&x|)K{~X78i~hj#|xP%MlqLG8*bjomfdrnAiftemM)E&Qpk!3R5mp z`dL1(N7fv>FcP_@lg1&U#d1#+F(uBP@afom(}yrUw({sw=S0)+7OeR|QALsP2wqjKM26q;3m5(e?HIrKJ9TN0`4c0p-|=L=BGcm)xpA zu|0+H=ZztTbb?b0O@S)lp~62nbIP{sMIs`8SIT?bJ_=uqHr;(pd@fI4s*J$A#FYE~ zkn;XcM6k-&fa5pn{0r|lv`&dF3*sMT<#x5Xf6gP3$G8!MQ=6ssU@F{DgG8L|e{+W7 zeY1=}?h+y1-1>m)N!qvXEAEG~!uOXhV`z^d^bsOMN&3*&KKW4(Fjf_nj3|T3A8=hW zTWB_D5aEiB8XWp=SpLQ;@`CM z48nui!P$5&lwC0hVUKS3Mo1Z!C@AT7`%N|6UA!{H?>Fps)i<2c2NRc$SW|f^0YOog zfS7z-!NRV9#z{y>XN+ux~_aT_Eydq2O8Xx9jEqSlVfJD;qb@BB;SwPuFiH5 zvyoDxZE+PH$`T6E)Zt7L=Ch`PT>-*p*Kc8TpRM{P4y+hFy$f3;`lB*@7x^)R3a0)F zpOF7V9KZ>)vjPMN2qEl$MI8SUxW5r6sp}ICEh!`z9uZKWX8TWBn4jII8+u}6epL^g zFZ$hVZ9SZ^inNqT14V)4Dycesn(3UKR4wz$a*yEdHqkXa>oEd(^d#5o0?~oTq`8*J zDvzeXdB;(v_oQ>C^JR~LVd z8?f;v3q5F(zhhh=C)*xMu?thZY)(ofYKoWQbwhcF@t3WJDg9&?;Y8)?D zW2N;51E0}ctI1b;oNr9*g$fN<&kZDsbhEMFN4jrMh*Sc+%2{Xa1;^OU#hKI7e_HC5 z@yL;1SwFnHt^KSu&r4j=Kv+}&{I(dl zLQI2wRRulGb7+H%y>}pnPoyVgL^7r(7yB~*MQn5X25+z40zkH{!JFO|z;Uk9<+s}S zg-eu4>!~KYu;569bffUyc$l0!xYN>xN_@^pt_)5rm$zgYHi=u)ws~A4_XIdjjU|Yv zdkweIo^m|1=6K)Br6+QkldJXBT79+iInOTH#D-ZO;1Ba|aE#>W4a6Yz#JHOE@K;Ba zgqihW@N?wbje*ccxj{VvK=O6P&IU%XJ$B3Np>QMRA(LU}Es%npi(RAtpqDcaC)V>wUXkQ^sH(3Y3z(zF~K!-nR^S>gD)})qWG&1-r$JFF}HSw#Jzre5OnniYdnod%&l)CKp_%Dh(5#Dy31Ur8q(pqt6meF*Dlzig`_|QASs|*T)Asp!z~ym?zcpzdu^n9U3_;$(r}yrRVOg^3-(zYIQT=|J5OPKr)32+vI< zGmL^^FxOkU)VbS_Cok@jOq;tAo71+e;O}Mzs%vVRG3K9mbM)WwhNSM#wHQNh#H4Fb zcqAaV=-hv9WBfU8U)JX2_+=)DVC5Z(W*_zkUmhUsm<}$SqBO#mmu>Jxm!%~J72D>2!49L@cuZX zwtVIab=Exn29XtN&J7ccmn#Kbjn-eJx!}MW>PHuLm>9eUS{}C3Y6&<#kU+t)2~Wtf zYVMo1;A5jj5+(N@CUWZ7Nlxsnb9N`2$X@gq$*#2fkR)guV`{e3I7O=Bg0y2t_$evJ z{H!q^ep1dNJH*S(b5sWzpwsjOV@GYR9$7J{G*fJQmn$A;xyayH)@@yw>@B>&&2)y~ zyb|x5&nqU$_e$vQu>zX|JtnQ_^NmcK0}G!><}Ou_V6uJ@|xZ zH=|{I!^(S!i5wLV%zT$7Oi&@gX!D@%Kh_p)$eV|5_uHl|?gv=Fs$+r%8*bXoOAi*( zh`~4gN=Bzfkg+`-$zw|>!^>|H$6UPI4CO7d8 ziXGY5+RPZmV9{B_z5K}($knG=gk_C5w~8+GbVJcM!9mzAKg#K;YTam(WFxaxsIj}k zG}>;&z298hvIQuXQs3|W^~0+>_Ej)=Iu_XokC#Mufc@61sL?jZ+)B#8DWcJyEB73M z^{QI6NwEHV-x~T=N70fys$EQ+kw?RK)ko~gdluQGGrod3f-`=ZkEK`St&3>ax8hML z?>31+L@DSth|?mk^n!)4m1fB=3*4<=F~oi*SYlw><@y1@Ot6c_tOEuG+CxC1s2np_ z;W1VUlABF}(WZ7}$g_l{@-v0s#TonzdW+|ym3ZZo)*yNzZv2~nt=rBUKmrA zy_u%U=%*5-z7@x`Sm|dgm^!^xnjV#O{6G{QgW+ZY6h8&D) zQ#JAZ=+Ja(;y%SYjYx{X-z@G0@wd{2W_No}HcUG4HH1o64&aG9z|N5PkF2TI6x~Bd zAdpc=C-fu4_01A~oynloe?*&_MgM^o=~F=>Y#$Gh^knn9)vb;7i7Fe>2<4L?eSs$B zj$@-ZAoP#n>O(QgndRU~4 z7(N+@3+EQ7_%YZX{GxNtSc0L)PB@U&amy%CpYTT;2{CzZ{Gy>P_F0Q8v(vR5piO6y>qatQpB2lFq4LI?$ldq{!|p2#fJhDp}D{GU0w?R=3QWjfS-HANU(? zvbBd-*#ATuN0|RoHyKEf|Ee2eNcb;xr|y#fUJ*l${WlE#Q9Xo!0`-l51kdLNK0$`# z{es|#BmPv&ik);S3qm8X&Eksx$ldSgj1utvc6J4#-_u0<>evb1kqjH9@BdrH5!C*6 zQHORmS&ca)f)>EA!@{WH(K712q^j(x)5BZ-z;HGG)k9$bDH$Qvhz4&EOt6BHCU%)+SiPk2XYl=AxCifYeb9*?Kzj3lQ=7dU~JA8@lR z;v(ZlTXPs_)oKXW62Vl7wD}^5uwatik>72XJrx%^sq;=BQ)}Q|&>T zeD)dW6dgJFReLsG^>Z`NJ{4%sMv9%(Dep|_yfNC^cT-k-OL=4MzE1Iozfue=VZ#I9 zq~Vo(N^LkM*RZ#T#s?o=w+E!*juu;T{rG~>j9c1Vu-zE^#GGrW)kolyy(6kG&^v^C zxr^TDr)79eW6jy7TMP54;`6^ad&{^eyDe_mp;H>^?rx+@knWI{?nXjlq#Gn;Xr#L& z29WOV?rtQc%V$*XbIxMl$osrt z#7LVPq-&UjcHxX6Vc%w@ZGxi`cQ(7UHntOAX7oiS)d_;m`ZnPHFFqxLI1l}HUV;&$ zH*0%pZ3;ZsOgNyOD6fKQjE9~~&#&9BjLu!SRiZ4e*2d=+ zr?0#t^|Ljd3U@Xpk1&tT>ie`r?!qLnK5~~6@RkyRw28S0XpBPK2n5LiH3t`Uk#2$e z4YXCQKv)V48(?7F8*IOfu_%q2Rbb%QC?*XHxqpotWgrRAKg@{tk=AmT&JP_1j*YH0 z^Lh>aWju5uN*t7`F#*JF%Q2A6-<#5d3&|BT+hVAo3MnYLYrzHqOjZ>$b!|d;7b@FI z75n*~J@d^FEyhoou043z_-zyv&vLcEDXCFQJl1g6uG<*pbt4J zE3x17irBydMq^RbiWvO-jC%XBhSpbXQAt=`+Wr7js)W&l&EJ7;^oA~|(}Dp%|ZDJQB&zF3;I5rG|#(9FaImz2=t&)ngnFcinB zlDVEyWz_c&k6s8Tu0E+xx1iQ!gbK%XNcLmGjr)EiWR@=~(6ckLqt z*|GXHm0*HKie;wRF*S+O;N_^&S>)HUsGM~y{(+fb#MMDOt8;DeF7>y9mkl727_k{F zXLDjbFxp#iEBrOFl}o(@G%))b5ZTp+bS2c*?k6%PFkA{x{S$J&M>2rj9Mlqm`2c8d z>ui%SPTrPU%*;ttQmIx@b7PV2^>HQ1Q+X{B&DTLL5+LCLZ4uT*)vt?j1OFCVJ}SJG zy4A(Ej8MPPzh%dIwDxEsVJhVb?e|7;KhqOw&#-#Prkn=dk!NY_FW3BG#ruA;^-9npktfj&)H51+&7?6N)ETAD{Q@v<9wu zp7WN$BKGo-D zJNE8;u$}6Y$aNVkN=k=`WCTf=b%DUEU>3}gF5W?gO{&bVr6?-JbnUCuX})gQ3>o;# zllB57wpN?3eR-*KiCSagfX(O%{8X5b}OM!B1OGhL!RP6@J0jn_za>*h`1;Ih+k zNfDx&S=7u+nnmKY?x~CHKsotrr)jI2fm^(7wYa!hBFL(=JX7svxRGCo1o6UI<2}|M zAu>3T95A(I_Og&?442JTlcqPXov_V&@PC|dQk$&d%1>e+)YKGlaGaLpWy+&WlW8Y^ zhh#igum*bsQc-=MQ@ZxzRfLNW#!6KMH4A^?A;Le9Ojr5lC?CU)LaCf3Y9oPVQl6n;mYcOr*QmMxs>+N`kLZ2O zY0~8jZ5~~qWgsTobQ3MUi4AAK2?{Xfi*E7Q(9{vPfv&r7TA2vPq&U;v?}8IjVM!z| z+Kd9}RdAiy8c#APBRgNG3}`drUW!NSF5E?bYw3R-l3Ov-x}cS@vD%c#wLE^guCAk` z-GwJ|cB#2PUb0Z7D=4H3+#i@u#lPPpm7;wtIinal4lQMKr%G{m;mr0Fpt42^v5K6W z)W0F0TuM1w0;AC5pNRz1;v)(MUt=_1k&%;mbNvu|;gv-uJDM&%kxGJ;ubevui%>%N z79olG3sXg9l2mt07z{$hLVEm4HY*?{$NmoICaGQN^zDNZ`sr5y5KD?r6j<~UGgHD} zMztxXQ9hd`zHpE#+~l?5t;a2G+Cxs@R#pRZvW~xeE7@aR8CgwazRt|&Q<*WOIEuv) z*~rwgs05E#bn3J&dU$P|(N7|`$buq`%7C+Px@~kg@bJOWoCenDM`dWjGi*0pcWG<( zv~%AnA1YZcwu+T2fLI3-z<{xLK9+`^W1O!K0}W^#H1oK-kqz42@-sgAo1r{ZeHglh)7&A>iV z%1j=94T*$I$)gXFM|rTBv@8|j&?k@ZLL4k8(m>>t&L6(B2e$ZLhwcwj0sP1l1FZb* z_ua2V4a6=iZdgbWj~1NfCE18C%+=eXAOAQGBBpgvg+SzhJ?ekU0noop7{7P;*zq

EEQj6bM!%idl!@U>x%+!u#fE+y`98u+p-;X4%TPP4V#8)aklIbD_Y|dtMMx{MHET1KKO-s&bv1lr@%$m0 z%#$U2H|NG4g>}t~<0dWomD$5R`@;*7gq0ZArd$)L0QS$rI`+Vxq202k-~}P=(RAPp zx`M#bYy6koxzVXHDgFKy7IE|fCzsam*e#Vz6)M(r2wpO!tR%|{sL70SPo8HIaSFKz zZl=kbAC2cGS5J#N^QQW)c8WO()oJtnSngh?6gVzDKAx!LYk7Z?mF2hG?DfiIUoe|| z=_C?E+Gk)y=N?%tC(&z;XxK5AeLEL8JcKb>yS+?`;uX)6v*6^yhFB4e?2>5V740=d zQnK~dk4hv%$ZT84g`q%fQBJc!{u(BoM++)tWH>+;XqgL^EkU0?TlbC*)t?$c<1e>h ze{B~CK>KKZ*CotZ(55QOKeFec-8uJ*xYoa#(l_Tj#4J;Dtx(NOFJaDQ+nNl#B)}XD z0@bGH;$7nO^fH6pMfD`5rXzy$sqI3k9Wu@HYXJk~$JpPPU@Md{riG)g`h9D2{KX}P z$A!nSxV=hi#OPM~nX|DH!4*`+JsuX9h(hYz9*4WmU&Pn>dUqu3!dUT3j190W)?0L) zi#L0zL`U9Dxxfj{jwo8b<0J)Y_Y5gg$>peWmA*yFPbkU1@!yBe=`G_b=?dk)&VOq_ z?4Vl7tEoFaoSU4B(Iz)^Ylk*;YmWm;Q#5ba75W#w^^u|Y8&561*|W5oco~ul0WU>hURj!jfOevk z-`6eGbJp+ala9LDTwYekwE?L{+6U`|PO;iMREE72q^)*tkOK-sOCU^mV!Id%g7< zUW;_l(&ETPo%@OP>{*5%P-K0S;73bQ6CNA&N-N$C;|ecZG&!meZ{?(DgGZ&_avD_~ zN6&z&GCNsA^60y5&z!_TbLfoil&0jZG<6MJzN9Zms_{Sj3X@Sr0XXqTXpIsz@7)fx z9j*lCh1B>Q8ez=TnhsdXStJy;W6u*I=NV0gc#4-Kf%V70ikYTdAcEujp@ENA^<}S% z=srC)+m7uy-ddZ}FY7YoJ<+Ut6eKK$V{T~SX-sVtPm$_09xa;|Ef&|kOg3S1S&uK5 z(JOOW0SxLgL*w&Ac0zt=|uKXLE`;B;DCR*o2+mI=`K^ zD&!}ooa@VkPk)#f3mS}Sw}^A#zQIGe0vi+FyE|>M2dWJ2E&$(Xd0}ve&74vPvQVUX z5FSk%tf?a`&ht#5mwI7DW|LTPnV`74P-XSZZjc7n^8~z-)W9(*YSpZnrnuZ#(7mWmHPJ{;9&Y-)+r})JK?|j)Bu4$f{ zEpuhwkU7WA0g6a>Gb$G)D)x}Z^?YfJlECUdwb(<>dVQc}Y5>m?!Ay8zYh*Bip!d~X z>%jhUAl;(Xga<*%O~ALHfw@n;Rj^8qPcq&qBFwP+EMHR8KXKtGry$WOjPvKwDV%Y> z7jbg<3WrwtN=3bn!ZrQnfI7+6olU)hZUvO^7QA=DPF(9pI3|L3%LFZ|Z#Io_Gig>V zaHXq++cZgm?@Q1sr#CtAa?^u5@y>~l*CO9dbJrj!fx=+occFMOxNl3HRVF0UPsBSh z1dmF1`gxN}zA%rl>O5@tch^2`#JLI&RvAU!NE^K8p$fL6CbHo=T6D%&ATY0tO*co? z$~rzd$mm{>vy8PkWU{xQ`K2;qx-Z%k_(5;Vj}!YEI7oGg6ZAEm=diFm=Z47Z0?V;h zVOw79Ry!=kCUpPi0lq$7!Vn?!;K~Gr+g3+@v;>&~1@_|f`=H^+z#NWOnG%bR7>5M2 zqs9{1p>Dziyt0`Xy!MTO0&|(&I~)OdOs&C}4-?Gyq42^t^gH(+8Ht!0O0)NS2OrUh zIp>x>0C9-#F?GZ1UEmZpOd=S_NYnjDgd-gH^!Ao0c2?d$?0RslQt3LV{Mv=yA$W&A zA^oL$MJt|Ghp?*!ta6Zu*;7xeqhSs}DAz z6U71bnh$?e1KEeu!A*#FgEr=Ws0PpO4Zowz{^neI??ekUW9)WPE-v)RQU$7Ne93UJ;D_mrr9*Q$ zX>cDo_pwO6{h4W)_~NLC*4MVJN(aU<4aCJ7(3Ey+f&{Voywqim;IF_EMdDGtnhs7WP|G3)$(7!@dzG z8&m58$um2=v}*YFgC>a_FbYd4B3?{+R}(vpMHNo9oN{NT_O%5lo;tI^$1H-YlqyLn zGNX9H(I76>#=XS6cF1-fJWpLoo+3{Z$2cAGJv9W_ms`LlPUin8Wgw!OF|^k$#vDJ% zCrVzj9bA*$ZgD?h5=}_$SNCLV#9@zH%OrA!F+3&Z5+rw)78_=x7Tgp{noV71$aHvH znlT|qZ6{9~%1wPAo{k@1^FittBqQFp!wmLI)$gWlC$Lu{Ew32gY6hQ6k&l3vx5rhQ z=Q7rS2rZF<2!SOB=z(#ixdH{du-NBj+cT*~*RGuTsXpHle^_#Ae2*RpNz0zlpP0Z; z_@Ym0SFWk62}yu?`6jiYjU^z`rh#m?^wh7W$c#0&hF+V=THTNPyjJ`5HEBSPr3TWl z1QH9TifmLOW!L&12Lg05qL57;Z)WV}EJ8LI_&&NCeD_61ech>y%l^X`5q-K>)pte# zUIkUM5=X{fI0DM*RrrJ&w(XiYi>Ec=#~xB*GC^UAIA#X8 z_1X`iyhtl(=T9_n9M%-vT6Di&VmzXZ$nR6bIuv;j&Z;*BxN9`^7Oq%mAyVP!X`KOt zf$FCinIf7_FbSDLF>4|!^Mz1{#ZyrXV#7UUGgtM)4j)Vw@MY&iINqc3rsZu=vd8k4 zfggh&lG<8Apb`}*cVQU!FNXV603?^DW=*%n=XYIx+sp}OeDzxVomcdXLnSdtCj`%qQzkio5ujfkRJWA{ zv%`@^y}iH>pL5mtat*n5H)aIS0+S=>$Yl`?JSBDRAK5KB`139W9rfzdH!rw1WlbFN z&ZdidmS66s*HsB%mz#RqB^NESA3MnxK&|-9E@4m_~AZ_XTsReptWL;|J>A zd9MAs)T)X811^P2MesFP0g4chpiQM)#0U`GOw&%`fE`?zIv^ zE5>6SK&VCo`}GO7cI5kS*7!=kUJJ+YsF1~88;qk0H4 zq$~jnUm!_vrwxcc>%1lV>zhJZmUV&v2}+(s`44&VC(kqJPtwGHY{j4$03mo zlCd{@Pft$2y-J;*Z#Hag{q=$^AP9!vi7}ckU%-gkkxbW~* z1jYNLp?TkaRRH+XMgy4O%B+RUWRQqkL6`YZnszpNP8}Zil9J$lAvgKM>aKi}5qm{=2|LVT@q@QCMPS^B`6l?s?T51J4A6%Us%3N{H;aj#R~Kw04Br;ex< zSH`PONzvoy3mWE`79EAheMRCgBF-{SQZRmr7Qfd?8QeVyOy8yANGd3|R*W(#r(P=+ zb0r`z+SYBJDmd#zQYtA{Fub5=`>(>OpY=q zgHOqT|3*j~xXE?pBc_;cM3G$BnS`<=3n%8N|fm!jz ziZlCcOKtVZ1vFHdJpSpWAe)Y%7iTMbyj?9{?PgzFvy8Do=iZ{J^pR;74Egi^O=|N2 zJ|!Iq`o)Vyh{E=NCqn&uj`RD4if0(Zdp?AJDT9ZA)e!n_Y{8P57%EA#iZ066;VNW>YYp~%4`vV72JxH~v zxLJx2ixO1W=<_(w9W_+7I%`h-1P#>KaC!{9=|C|Dr&Uc)Z%E2#*MpbnvyfpdTw`=~ z5AuEA#=H`m3`Y}4G&2>Ntipo2+}uek^OBrJm)5``kT*-$TXMN9edx|>)*fsi1P|@k zXYl$+c?ZhLUPt=#*0gau1q1VK;1w1xM(C3A2|GtnFs5?t2!B-Oy+V=_Bg@fnKjaIA z9d(LIzNv4O*mp~sS)*RCGxu10b#F(H1sOlFyTyI~0B<4>CA zy;XcY`lb)BrSOLCRD@V1e(hD1Dg-$o-)j77Db2{x$K8^Q*D)MY>z4)|dP3IOVvDMH zR;744i4#hJ@CRq|7D5g#N~HsDtnwFJXukcon>4(0s$bIDhugl}?ex_bSU8Ml8xq25 zkCZ|2pGRG_l0AXGfXoWH?O%O}SZ=8}s>oY(Ijh=Ftx4NU!9?I&X<8qUnRjMZ=B;?O zBS%Rz));5%F;c&qa+L-YEt#nm%j?RM^;n{B)ZX-`7w}x&S?8nSR)5p3K2n_2*%Th& zq3u_+L1WL}%D}XxKIaG%{p-F`W6Md`uO$10k|c(^`ck(LPJoB*+EzJ@K{sDhj}DH*YhM^gd7;Ym8S%6ocqyV+ER zef)AodOx8rj|`5QUgHJX72>PB&BdwuHan<3=~;oc!+f2DAC7)DG=VF9=^brTTf@qa zpQdz5&gN@&bjIu!q_(F`l{JhCVhFAUTgUlu#TG@>d2Sc<-t0L!_f!hG%v^*NblBeJ zMW{ESamiErjaa(?-=Rw6-2^6^&>l22oyaa}S(RF&vqMC+ z!|)O9U_8Ra>}VDJ4fD0@HIhHneg;k;46ak+o3b`Fx}0XYLPCU|g#gCFir6$iWv{(g zT(P9~Xim2WHg7zZzxxNjC>MS>409FQ`|cY`>L!Xw{2&{#f$69AI)aPOB$wqr>w>+K zEcO);WU}rKWy}4d_cHEeH?-KW1sPd} z?N+eRdce1jq*L_N6k;+h;d*8i_OX;@R#iXD3L{=GJ#tb+?1lP-h+eC`sV{r4gsPSU zLrQ_?QKOkrS-~sT6-lbp&uCZ1MKHp)6Q@N!<(jd%Ne48X;&AjgH~o@gGH6*Eb^BTY z>L)MBt$}Qyj^X}qGuXM$KQXE)TY@aF3dD-EY#Tj(8B=WFO zhdx5dc@*WPM^d{Au1wj^YJ&;8QdU0AYxNvmn+3_%W2|=n^q5u(c;8Ff7VB~hg#K;v z)c(N*bMo7n4d#Cplt1nzf4-4KBLqNo1*HyA^mIuWu`{g5U!qO*@T@f48KE+$DiYlR z;5_0~>e{kJ`X16ek+y&ph+<)-@rD|My-J32e&0*rVn%OKbWl>Cipy+ou3DR&Lw;WwT1C?f%_uaN$>cs;&4!c>PbqMcRy+@jwb; zYgB6WFS~rwUC=b|t8aY{q&Rw;g&Vzr7V<9HQ}rHSp<6;x7yGYAd4$==MZGNRI8#0? zhq*?r{{*hvtjE0o!1iT0tF)nD1744a)5n-44Vu6fJ2+*WAxE-^M$JYrRwnF%jDlRC zG=H+%u>QVvR&{*}5fF5XddS`T|B!BUKo%2QBNvyvI9-Tx2ywccWLd6bQvOWg0nKR5 zI=~QoJ z)n6k9tdlLN^VSB$5WQ5@`AOgaOena;DtOy-wbVH5uKyipK$PpK*kESws>rgo*-?l6 z6+Wh1`AP5~%Jt7*&>_eHw?6@PF{y_ps-yHGzg5}+rQIHEVD}gK-!M3IQ zJJ$|RlRKA+sS5a9dYN7cqW&3tZEU5ox#@@j3?wvBk_8;b7l8c@txDs4PGizN>`sJ! zu`Zbv%6r({%1};Mg2Q(v*xI5e*k8tZgR3!I(rxj|k~e6(gejhI^Uq#Nd1tyhDJbsU zn<>=r*I_uNJqdTgX<<8OzXDF|1$jGSp6jui8nT++Qc)=gh=&&@H%zd~C;C!Ug*ZvF zK8pG$va(%A!^qgggiN&zWWnveBuML&)T8jlc9soE>r%&d*1RT>#{KYV>#6;Me_n(y z!H2`2v=fK9fc-1-*SFF$GXq_Qzn{+R)ewIhDC`$6^dN?`|9U)s zZ*D-!Sdi@L;nV1loy)%J@0|-A6yG~hXc9W>CNk|njdspZ1cPw|*)i3UnkCzw*Y!s| z!!XDt-sr31%!t_g}dNxb$`ah)Cy{v*Q6|seMHK9h>YVF4yXU;5`@#msHGJQE|IBc!civ=IW zjlDc%2qOY&tY>rj;QG2E8wdR)@Kjf8uyMQ*RbpEKat#Ibt{iPQhC>;mBui^3dZT=8kEv8|2R)F`Qi=fdZil_$3(cy6szP zh8(RPrJg1mepN`+r#;M~VC?Ujk~L9CSa4_@2HJQ@0!w!CdTMuakDHoIKnIWE+Yhp9 zr-$PBUNaeUp9YNHlYZ>P<8{QDMR7F-`8Dq$Z8rK5?x`-qqb|Ma5yhk*_(^;EPO=`B zq_9mF&Yp6x4by0eoy|{XyIw9J7TrL6{~B+^&ZPx!#I_^=>zDpaweKr3~ zSaOVe0jRO%+;Lq#oVfK+p%CncDhyW?)#4?jOQ;-7Q(iem0OQ*>mLxAU6K7s9&+?^S z>;0ZmIdNKTwYrF^_=#Q&PP&D5(>gzdtU&TSQ#V6j{{zbQ91Ld2KKz6jFa_>Ny%XV% z#L@E?_2l18>mygXL0tF9*uA^LRLxP|x9muqcA6NzA)yVSefJfi!a7t46D5{m zx`b3iN|t)!j1o9@XICkd>fO-{ZY_pZ5`<-KSb=8=vYz=eQ?jzNGD)>h1c3_$o|$cc z;YcHq>1CmXORV3o8qC4^FJ8zt2l0PAMB@RAs=z$2;N4dOuKXftF4G7xe&7xSuG(`L{_s zCJWG$A=aizLLF0K;!QpGG6qs}zW`{8GITN}y`06kYB?!I1eCJk9mUZ}8IeiBn47KA zJ(08&VIGEWWV$JHzi8QhCQCir;_6)c1;lgPTWI5w16kuWl4q^2(maM25y|b*<_}He z+ZR5@vIz7GC7WhiyB6=ucTllrMDmpG({f#bj^h?mX>zf4>8l2Keo!sNO3E0 z>tM?Am*rFIp^k9m&bfV_LIS5Xa}Ryvs%Czp5EHl&U2kq!s=F_z++#-kQC{YP4k(p2 z$}?&8vWMQsLSC=fi3Rkz(nnEptu$T6Eb08U5bfLXD@(88C3MH3v3RO@GD&Le^P*HX znO--jpd#eh#VKZU6;M%Eusb8YidxF+I5So3I8%2EuXtK&4){sF6_G@C6b(-5*LxH& zZr@47wK@cy)Z^&=V+%hiC3GbYxB`=CT;fG#(0icTqsh(Qgi&GJk$nR@NJpup+{41) zgl|m@i%q{z63&-o##5gNm|5fV=U&1>GA3}c6BYNYG*1cZHjD3hCoW&cMs9oCcoB)A zwzv^_KR~}KY&tu#kWOr^kqEA9ue6b_ZuIU(nSee zL8DR+<6f*2;>iS=I;WF%M{ogwI-+idZyO?GyJdpz0a6_}qIvq`b-I9S6ltw*mC7Qb zfv*Cuu4@nFXbx?LeeKFc2LL#28$oELMmM476*``EI^Sy17^W+eryiC6{==zLn$Sz3 z@5ZQ{7e7D!Qu1NSa~LJ_x&E#^ut!;(0Fd^g?vyyf@G_*l631o>BpW}0{hFz$xF9FK zPL!*BEQB4Xxf)=S<^ek=ZIk@D^$mtWFj_iYe!c^RV&6B3=F@>Gb6av?g}f6DtpA1{ z5ruI8aTS&Uxh^)6$fxRAmCpf(fTiXYXAkGoowa+~Iwi|1O+!l@~i|^ z(^tQUwLL8zkQLg1$Qg)zCK1phtm`G^j{4vIoHt%A`@2K^wC@!1+o*!4+edX`$u*~y zDAr^#+3F{EF8Ye}0>1AWD0bt7hwK#iqbRg#23b3`56*uf_&6Ka&awlU;*f_6Ym~ka zccY>lwcf;)2GX2wameOc`xfQkEMI;N!_csy0RZWr<>CBD#v#pqf+{H5a8R`y zK~EXMBpAgY7{N+pRo!M)X=cG%Lc)uVf-M|*k4ml#Q@|K^Xy+O&` zc=-*l_rp@bQ`>y`Tcq70CD14au#B zsFxr~_W&*H=F)5}IgD$8u@*iX-l(aPlRl-=TWI16$K^0-30x85Ysp`~55CFSP@T?I zi#FqG`v4Vusn)5c6m*!Y_xhOP^;6r&0kF(ndNiiUkz0yDzaP~OcL=q8Nz5n;3G>-I zHV?Pcy}d|J;(||D6!o^+3*^*K43*7p@ic>$KZ?Cv-pP)D6gC>ZZP&bG*W9u~`euyD z*qfhSA7o~)6R7u@IP3FDn9t<-j?$Qasz`{2JNe=qR*3PTGS$nUJ(9skz>LZzMM|dV#?`G9+d4CHSGPMyjZpb0F$N&06v4=uzo{&8vXZ6!M%=6i` z58iJ`yhfg9a2iO^H{^;SzP%9_xa^K)M)0dyW_qec#ef@4u>aSp%k?utvB=@0Ig(E=w;>*7MHuMhdWE_#G4eo@7|y}EAV#Lu^4 z*pOWD6v^1VeO%eKq4{-xyZQ@IiIz#t777v=3#sNvi(f}Wblr&IXo_1q2Pz>ph5tl+ z_wKW{*cGms72!L~A~R@4MBAQ0#Mkv?)e&&vPI_@xGQrM7IM5)h!tBIP5sgFTp;;wx zPqu3*;-x!H=8T0+;=Ak4MLRmw?kfy4$8?@QG%c$u=BTx@ymtIQbPvqv7bFS!@QbA9 zSWh!3bMF|GoQ@0sNFZ_-Hv+mBYu9+DlO`7|te;a%^NhZxzV~>X@YheT#tmPR8A(9a zbXqCq|8~V|@*`YL?KPVko#8+uOroLNxN}*a@vU{;9+PQVczl`qpnZcfi}`M!)j~N= zv0^u~mdw@Jl#jX@rPmu4ukhLP*KTuBwHQtK1@jMxO!y9Uf+BiL!>>qP+S+X3p0eLJnkm_oALyxu z@+KmUPa)uJ4%T^fA$xLge-qw=8x_KUw^TA8& zcHfa$%#W63ZAqV!J+LcM=Yp1Lg3UZ&1kCv82W9va@I5-aQavJoh^8BMMC@l;O(q*M z@<|@APUs_rrKh^L?va{@tI~@Fx+T9`uR&u0J40w7K@v!#rR;XoNmqvz!<4rQ5Z|%p zy>B7Re1n(8+x**@IZpcWkC5+$M@ETC&|_Qk78Jp|8b4tRCYW-^;jnF*9`1g}URK`ch%MnlB zEPFIUfFMT!^0y_bRdNwXUaE&Nvo<#}DK>Eq*f*?wXbwcc*CHZGCR_FgJ3IKL%MsIX z3KUZp@~u8$lh&;RRh}qk0`Jk0&?tkCZ;0KTg}cDMFs*M@KSJ%wSRvo_kF@RL4ph=R z60H|Y&*Nq4PJ**0l66CK-#U<|kTeC&X)UOxZ1U7N5#?=>xV}fx@7o|hk_`TCrIcCV z^+E_sFVDgsNHosb9&NqFPI^mqxrLm^n652J2t0-c8!dIpTMqj?$bJ;xJi5q*CR(r5 z+H|!##ISp0U%f+ax%A-A(U})|0j(5t)C2wf>=RJX^xA2)yt{S}?c-BpKz;p?m((^5 zF*A|-XH#c3cEz_u9WQ9OPI*R^UkLUM3X9?SEuM7x02T4Gc$?tt*WfTYenGKM!w{mj zD`H-0cPL_4eH=a1Y5IE`_IFh-e7H|E8P2rxbrvj}+_*z;uZ3*W-Dk?N%tME0+ z>w+x-3%d9xxL5({T&=2oIG%ovfjmKz61Gt;PM?ex;em=}!H;JY_#=TtT-a>H=gGo( zwHmAiAwZ}j7hyLb^mppQS6^}!=doaf!t9&6Cirlmj?iA*2ZWyL?{CWQbC1#Q06$@v zpl9<2+}9j-PA;VFBi`)hrA8-1#(d*PCNGVTt2&$*g)k|Y{)e$D5GcvPrZf6O~Z*_Ok9Tz{@cnLzaD ziUf2_me$yqovYN(o;~9#hs(2a-j#d`v}5V(B9hxk%DhVteF}tTYL&Unx!O4+!#2E^ zWE&S=S^jP!+4uOB^Go^uE1q4#dld(fg(gw~k(NyoqYD0t$(=*0UvLq}3W@i+S;ony z^iuUe@m63U#VVq^_P_*X5}_cPr3M2G!U9_Ce&bS%@ZqbD>P&Wz}LW>Js)h z{Nsf&#YlmwZZB`rd>g;(y{_xzV$#Ynk*$@t-h{qGPuDVqzoKBvi6?*T+=EmLTwAZ> z*J-Jy6MtC9ILs7)N8KIX>P)=HfgYY;A(btQZsTZ7WDERYFQj|4gM7n*r7g#UE z|0gR71nQ0DHUu>XN-&L_a4@KS!!TEX#e?B zy?^lax#3GqD8BffW4iwbIHB_Y3&`>R7dYX+z#MNu(wgoNT*8n4jZG*UZ}&s^FOwBN z#Q#q3H;5xhlpTN?PkQqAE`lLwfq>_LrR6j#j7t)>7se+$77nkN78UVtI> zOwZSU7Wwlr;1x)g6B!*GyafpP&uRZ5pVtE*crJvz1q>ijPGlqy8W-fpn+tNwT8{x2 z&&)z_s~M`<9MPlY!?=#o&C#l?C#vbnoxNE2qa!%SCIn6u8#7CyO-xQ^*r+kAAC)*I-!AjBWU_5P zQ!RDcRyQ`mYq#ur!LJN^`{HE-r7xaByDm)hK4oqgKQKw^nYkLCzhRN?3@dv*uEx7r zgTLvr$jS5r0M3n5Z>SF{I1CqNA_wuFyX+gun*D@%HHKIYi-iiz_w7H|Is(Q}w$ijd z1X~=sTU}_!IXj0{(Mo38?2$A#-_&2e|HzJWnEx`@!&{HQNsD0N$+K~mphU2uR)e~E zM%}I{f7(=X^YESCffuTokf3LtuxgP?K*Itb^*mqqG1JV5wrj)Hu<`0Qq+;zAfzz!u z{i>vQFutQq>u5>9ND*Uph&p(%lx6!>?X$UR`Qmf>@ZNDGUaN@_Ov)1jN4PdEJ26344|f7#7VU5c znzvPwTDWDegTFBMI!?=#Y*Dk`SE{YCchPKqrlhVk6FfH)w{Gxe7@s^~=^e@!%c8g= zOau?@7D{rLm%a`!VO0E@QR+5~k?_+6M}$z?8^;+Y3a9Bf=4%nfHG-y1RsIHExe%0` zm@AU+%Zlw&;Ct8Iaj8Djg}Pv;mPB-i9# zm50MK$N(z%2R3~fDzO&4HXZ-O&7YLm)L+W=K|6z=d_9WG^YXNRn^N(KzhNTXyG@Ry zMDeSq#P(JWWQ(qHyd$nYd&A#D-1*_|(rT;Wt*y`CSD+!vd>_a@Rz+v7Z8tg^YO<7*C+i7qitE9^LvJr;7o$lSN=&%49E{lZcjJ}@L)gCf_v&0xy; zoxl`_u{Ld+nf4AVyP$ODr}|51@8(x)u68zIr#oCB+qpznxKDiBb~2vdt=?rY^G5F- zJ5Zzcjj03m`_G6sj`_REKU^3|ph3YLp@y*eP4_0sPcC^fi8u%brWus>O=nolN&Hee z?CjP3$et_|!qyYjr*L%YKe^Ch#rsnUr;fQi$r)ShJYm9YQl&-oOutqzjy;I7F94k=G!1DW#&Z{O0cotQgEKLKzW=% zrRI+=RA)5%IInS<>nw>MZ{LxKs=qW&6%1b7MqHv4s#g*YyWd8?>I;}-^g1m(>NYt? zCjt2YJ#>N;E;?0rxA6l55qRvv>G_I1{qn0w5FHVQkD%^_(S?F$B|qBUK^25kMq}P-}lFLPRG6=sgiKAt;9l zQ1Q3yH@9F2Ph9^g<{Vi8&3~)^s3!`9$k^b0IzZ6#w8?lOy7iwKwlYCvW3(5M^5FZ<{~<6OP^hTrjLMK=fI_L*%Z_KN1=OBn|pq z54xv^4Ah$ic=bHJKMK#EnqMUV1W+a;G6Hz1`d{kSzX*f=sm20peFF$TPaqZ(qFDUt zt-}COc*t`B10w99WgCTT1{hswe(4RbMf4VqQLttvqX&@o(TY-SfzY~G1 zwg3nz0e}YHOa#RLT>)^iAK>hHPLO(^XU<3C0RrITaDdx$738|-pGp1B#r9{6H5z0} zkZA~@|1bG}5B`TMNN*f4I0}IMyr8Ujko)ncAEf&3ZMe)uvMyD87GifARx^d+ea zeocaW#H;RG*|4&JWXs8Iv)3r!$;u%J`1E+_@IvlJvX{%=ls$;r%KqR6lDOBKzISnA z3E~RRNNmMqQ(v;45q#f&_zCz~&a9zeRvb4?8i;u zHjHeLM%dJwx9>k2{JaN>b$ad%P-Fm`sb;By{ItCt)_jKW>O4alp5aHDV`7Ux*P{gIwsq^P@27h*v+t1m!|JikDi8{|V|AE+=ZETS^kx^q z@+hwOq&5jb0O3f&H__Y)Jmhu zrn4>_HjE&3cx6J*xubK&Od4%6HPE{ zaRxXJ@m>_eq>lz-CDz%?Md4MDmIbyKxdn%s${o_gKR;<9Z5#}T=SBRWhK zrOYXlpw5-q#pN?0`^!H&nUst=*?^+C^A?ZP&i<1;%cP+A73!Vfi9I@tBwIi+E5;9( zA5C$}c(QbBYI+)&NH>uNh$HhpRe>C_TPss?djj#h&dC$NOzD?wPlp&Z8EChz(O+!? z-o8XLd#qmX4^ft$~B@QoG?12`|bU~Jq1XuyW)@AZnflA9F(}M>4q&xcW;pH?$|U^(k&^{(hW+(yG6XO>v`_)_xE@9na+9(N(SC{MI7?LURxQw>R%^ z2;t8X@wgn=*g;_d)n|6yQ2Yf9p2SC^^g zCt7M{3Ho6{E^oHj(H)Eh(37Lh+d;3|Wgp8Q;{jpKHV>o}XG*->4sP^urNYrUIpssTf{D!T$2o1QzB!iFPJcMX&bJto#Y3B0Gw!A_{0cN)>tCK zyaQxg)=eW0TS^IKR_u}15uLp`P2-6W(18tu0C&pkLv^$_xKV2TQt9kdO7sS)(F*}n z6Qej+^X`)jW@oi|L=r#B68sC|okxRmQaEbE&CL9>faC^Z`6>;DQiEpr^Ho#f-H4$=G_}6kVBu3 z_f-X?PS@)h>;}!!rYgg@!Vu=a9jJE9x^mJX55m3Z@oem!t-Wbxa6^@xx#mX0GaY6* z{uINkYTX1vZQij8vaud7H&-t+oL}JnR1Yq1+n`&*(8go(%C1c#Fcq*&47WV9PdW;* z=LNP$mt!n?K&$^S@YFMSjRd%xV`K_wfkinM@M}rFfjNBH2x_{y+<~IJFcw^izf1_y zhrfNr3V7}S4swH8>h0d&BcT+v67tip-k2?Og2HCM6GbZ%PUzfue0!wYrn>$py z+)SA4)N=4`?M(XOO_m=fI1bYi#koVz+IrcdQ;kDmmNyNu_sJXR)B;;JRkLEF;?Ed9 z>7gVD=WQhA(j~QK&{0h>Kg`|1c_#yP_1{k4=SoqC_{LArbwCmB;>-CfQYYV5Ec^hK zvy)!zp08tFTPSanSre4EjEj4xxysH(j?5{8m%}+Stb4#G7V&hloJ~t~7qWco8w*Dj z&o>snpvzaVoo{%KPZK4aQWAcG#I$L4bG{N!IfiD0(Oz!XU^G4c<99cWk(O5TYYPq3 zzxV7E)~{1o_?^KQ>A;HKF15hp9;u+oe!L4VBh#Z;Pg z3q~N&R$|amHs&0at$b3kBuG*;*Zdu&I*y|1cn>mn@|SKqiZzA2ZnL{rb#7J^@KT0K zIcQP-;liB=!(Ss(t-fTt0r|g7wSS>HvCNF`UW%8$#sz-4*a*4UP;UQ{Nzr7?C%CX^ zDC9$>I{(ehvSvWy1woV={hiSKNyIf9awc^SHlLuGk6+%cUy&a1nMu6$v%F>4xL>e2 zo_-qbf-Luf0oW3uHv4dbGT8k%`ovvG8&2(lX3Sg0i)-w@i?dwewLpO{d#zvOFLB3i zTvbZJxf$o|qZ6j(n`0^FLOysSIPdQ>NK*^(Hr`9f>B4&G6ALlMn0xzau#FO|Ba#0w zZ(%eZ3T-GaUr+0MkzKrHS@yEUKRR=BpDPEgR$Y$K7|&d~{NwGLw$Y4IUTd%ymV62` zj9RrKDmIMpvpc#$T4<0r#3E{YIs}e`+V%Hg@#Vdk%(F~pdH6;n?{F1(lx~7Q`=!u zxU`bS_X1suQMC&98bd2Mro?HykcG1uW3j1IS05hlwOInA%V|Qq?l2*KuK&}=^%*Dw z6&C+rHVLB}#3r%znliy?udSC|=tbep!b2`b6~p5QBV~*VElZ%S{n+^d0sd3NJiM#y zh!Wbv$K_k7dnkQI-bU{msC#P0qxihygyY`BU5`V^k<)LtesEjH%F8`kJ2NI=R7sF_&C;j=bf!fk*`O}U z1)DeRaeL5nT!En#r)1n+Bda2dk}3>xKCjg9njAsvl#BzH)EqU8JZ(8Iy07fDn6|3L zt~%D{g?mb>nR5qby{VqPmmjs~F4t|D z_-V$t#W0cM&6Jl#)6mi7*pt_PGz}Yn8bn zvIN1gv&`XO=T@3E_^91vbO)JtP~xgKJMQq>ePn5~C$J3L7KYm5cv1d~_S=rLcI^2c zG&otJK*FU?5UmaY@9|vm6<;3}lNSkyj9XX?tMma1H>;O_BCk1*;uNFvQA zTUmF^PBcBvvRxF~oUeAL@mqm9Ge2cZ^b5Jg#*ufTJz}3iYofms64{iWip>#?6>Df$ zVDcF!8U;>ygmi>`2rC`JXaHxk!tQ)~G}Rme3W<8j$q3h%{W~~G&BZja zyUHj|zZq`mzgCwk5{t#oAZtrzDnM`Pm$*cONn*CNf>-j%`qc?+wyqLplJln?kwCAL zyW-~&k`6uUkJm850-Z!lxKp@->=5(dwir8_cmdpa z7`N(6x!G+!p%Zh@qU9s-%`J0uLP{zL2Wkvs8NQJ zL&!j_x*l=DN9*|LH#$FbU}VPRjq{N0^MUXvE3J(M-BqjrV{+Bo?0S7|5^oS5eUn4ySi=aRiJv|vS6Vww8`@0zIiUbw^7eo9F=00ixX$-CQ#jmp`*bf2>{0Af!nLpeaRgCJ@6_|XI6|4pFRvDB#i z-w^2VU-MGqQ}R;(!<|dNgOziH@aC@n#hpVko;?GZfglcNA6}z?(D;#HK)e!vJq#Wl z2>#}SDHQ;EPj3Y>P6_@IC>B5>0M|!9Qt!7&#NZi4fZ&ttZ^ZqdQUiXZ z7og<-^avT?5TAzMT09o;3n0A$KbHisJjn_P{g*7H3Nh%D6yOgX9v`vG4XRQGz<@06 zpr5$?on3A)Bv$O_# zS{1(npZ_^Ql^e$&C02^aany}r8GPZ^?lZbEvfR-IHy&+-k^b7Mlf*=n_06YLTszU1 zod?jbJButF6}_W)6)PewU(ebz;^(?y0G~6FaL9=<2L|I3hIXz~w|}my%7C{PbN4A; zr9;uDgWPpbq3su^j8?CHkn>iXgI?}DN^_}Z)rr{mOY2T5QpH6%B#Nc`4Yy-gBLzNX zBT!I?{9zbOhbYXd2`l?iZsMept}%I0KW$Nl<7Y@&P@6}b1)fvbukVRJT6Hs6&VUT& zYsML-&C$a(WM4Y-cCqnEU+hDv(t4G$so8derFh+=2|DcKZ~B3CQN@}Lt++!qwjMt` z$T&%E6u+f`hoFt6H%lxrn&^kV)rXJM8}W*?RPqdwb7hnJmF?Zxf#wS`%L zjVh@X3x%i=u-2#1~WB>7LcKO41fK%=gPfT|_M^pD9lsyQDm< zB6m{EVX16dV%20shJ6pYqoQ}tliD=ezih=N%8WrKp0GFsR7|D0czrJTA|PPYi{otn zj63{D_=!?Ox!_O%0*`acDrW(hGb4)ZmBn`2GC!Nj_TV85P|uMslY`Zw&Z+xgY}Tw( zZ;mdZ>xfiu1w1Vh4;Ji{Kk9SopTsv!wmb~0H9>_rZZ61StR>%N(mQTnlZ|TOvjvDI)F;k;shIGG}7^JkXV~X2?$w^(= z+jY2U?(QEHiQ{B89Z6fTmQ%m`QlfG`Tct@*bGPY>^OjvciBOT(q-0ZJNF8%WVYe&n zMu+MV2#&v1aP~if=?X#eIYURsHUjbIGrZ*vi=p`zkKY6@WC|p2L!bbrYl>6*coVFi zH@OtObrJ}Oo^w4`hVd*tx5+*dx+dHl>`RkXzjHt=gtA276V>t;lF$P1zKI=!>6f-x zLynQ?5H@KxN0&{}&pu(Ou{LWCy#iUxzjF?T1Old;MVY_8Vlz%pM1D2R#SVusN=5Mz zMri{(M>ZR-QDj)O%%vUJ<+tN*eT^N^5lt~yT)D;Ja4d>aA!#=x0pGU!O7J)=mlNI% z)FK+@AO>&BF`o1?n*+_ORpd5{+?{ZwQSkJR#YlX*RE&qA__PHT+DFJnB+4&@_^LH( z?guzT)T(C`-3aVdBv5LNl78b*?N_UH6x`xTXD=&o1Lbwdq39Nv&wFj@P_a6S`dG7@8+Y<&oQp3AN>pNC;Tew{1UOj&(XbvU7xz!N4VQGP=jFk zw=~*kJG$h%mzjhyewhMxc#6;H{@ua*qqFq*v)Sd22dEXcj4u=6DQZQ@Kl;pXldVMv z&kzNo$$|p8?AEZf!yW331){z+=C0VK;ddw;=lfUY1iyfCSo}CjC=J}#UMV6S!?B^S zy~y#$ge?WcrtASo8Dn18N@J=sHX${uvgf>m2UI)cn&65OB0yc0tk0poAO(aO^OfOZ zs;}Itbm~p%h%+8{sD0J-nXe(TOlrzYB=Aa)a1n7rGPMnhaJc5%3Pwe$;}Xl42}J?u zu+n1s1eT2!-&{9WXaYSgMTc6VG_^>^=0s~vnnAE;alE4-AUan)F>&O)s8oyf;2Rvy z5^L!o)=EZA!j~;s+DOgDr(DSii>kGx_NIkzHvPkz3jB??84LxiOC&3k8-nvdvLnoh z4a#2~otC^N$HRkI_tlk1!TZLu{c0ePCCg6%u5wQV7&#lzD_}2!2Omtc$j((xak6}o zQ7n4MRJs5^s#O~yFOaB?OUeFVQ3-Fj>47Bry{H4y(g&c3dfW! zuu~4voZkl-sR0324mlicO|=(j;Fz`%0jJcy0ejX5TLS9BC9ONG=E$vs5@jYznWg1B zZ8o2f&{8f`<=&UxMQhZ*ieGlJ{NcNyi z7m<$fdNGL{=F2iWeYA{~G5>=N6Z2b+(yW}Wz+U_k+8W?%M-7{|7z7-~2Y|kBradGv~wsUawzHd9U!P`hw zwul##mkQmNOgtWiG2aJLd%dQ7v)%mL7J+)13q6<#am%DhWu z+lS!}&%{rf@ul{#jbKx3arTc0HVqMLloM9Rf(~tl!Cw6dSCU_^cGnERU$MUlt`+jM zw0$K|fD3eVRxx|qLFlwy)vT3_IYx4>1}Z^qgI*h0$Vp z0um7XxDJHQFYTaUv=`--*coi0D1-gdz37rxx*4B&VPSwgLx1&-Mx8T;T4#Z|2FE1iDak!O5%_P@5twJA*MV%MHh5GiNFy#!6d)GE&F(BD{Y_p|7d#e}OqD zvd$aU5n+Yf-6eppW8M`F&ozlsPR@M0=YpVjHF1c`EMit*v8jM+%wqa_=}`gOz*62JcSzXP8hT{M2% zrC_Tv0LH)fp^wJuaXSD3l-&N;ie0pWZ0i0N;DdJ#0iD>7c5u=dKo!&>2icZkbO5jr z{*woe7zWrsZJNelA-+0)g$ckzdw?gG3W%@}NKX|B4;+UC{o#)e;1Aycd4B}K;}Zam zC(R(v;anhyQYfH(6^Iur+;iwRe|9au6#yU40)9Mo_Is=GpUx0KbE-)A{N*ar%D*G@ zDJxO-03-k@L0C-L4^_1AR%pG?K9w9(Ll^shGhq!1jEPK@{i?r8w3>xo6h|9Pc&nJi zp9-pa0gVMzsWX1pX@O=e)T0_9qJ9D&jmf9TL~;}#$EW(TCjk+53NeGmeRM@TLtD!L zz7XsYxhJYeyN%PwAsq-K;x$RDim&Hb)2e}q?1xip!c&X9WbsD2LXu8?VYE*3)zI|! zw5nP63ThLkp_Se@U|Em%)IOt0nuZejDAww3Hg^5M+^weWw;1K}o)g16rr%0p70{cF z6TYXWU^lcU>Bz=A);s8vs}J1^U-BSzaZfUw=}Ju!M5e1te83B$=0(<>xZaAhKmU1A z{LUsmtayP^q;Kbiiuae*FQcy*Igg(sYug70RMIocVfWA#{J`oSD#*|pfNwFwC3V1> z)|B1%2hQ|c*qJNUV4j`t6xsWisO)OK4q}82>eR0)w@T?W-o*JDI99_;iK5+!)NEc> zVjCi=ob(;&d(lVXiDIZ@?tYU=If#}};J}h!jHVhh&h#1nU z1gap!bNj6acUUi%08TAWkwyc-WiJ7Kt<@>mIsHqqkE z`JM-y2xVQnkA&O)?b z&>oMbS4glJFq?lL?|U$i$dCUh!$FK zIYS5z=m%8(DQOr34F8!|k0K1;0CN9I>Q4i>o@SkF++T|hGDitO<6e*jA$|j}`~==W zJi4_1Y?~qTSP}ez5&Ewn#L0;ZWUm3K&WH|ukMgI|qeB&B!C(d73P96g{!0>t1-j}_ zn_x&w22Z{JZWNTR4ryeJ6#Dp|6+;nR_68dGuS#GHDrk`>Gzud07Hp*gP4=f83^|Ta z_zAA~k5Zs-Nqi0L>Fy{Z)&v>DbhC=v$8Eor{OoFr4;GH>97{@)w zP$+XR`=+4Z3mUZh9bHn;1@wckeXft-Z*^d*soHE2;S|jhi>l9`nSSp)2~?QJfCPWj z%{pbbdU^^X>#G$z>UG^zR31~BIHgxlo! z=bX$R z+T}zKxYz*!zoZ>6e~ry;^z9Buz3%5WUTEemnY=Hu5|;?hmn9!waHj$h?k1w6pP5SX zWxp8^R8H!NqS=Th+Yqg@hua=Pt{};{BcKO-+($0>q@y9S$4aipEJ2gtTZf*X>chA$ zaV}yQ!Q)93MO;39!z5^jYm4O?!2N}9W8v`age&iK#uZ96QJkdf_1TsA_GLcmY)*qI zMgUIpJ2dZ?_HPi~0$WUhp2crOEUdQ^+U_w1v@1j0sQpE5O^6D)s8o6~#!KaR@{3OK zP{Mh;=aO)t9VAa3psQDBLwfgmqF8U$%*&ZeS!L7Z*HqBW+a|7Tl+D|zW6zKdlMs04 zU53pc#Aa#j%pZhj>tu{$I*1%3<8q4c0{AC&`i{R0E9a>>yjybw<^}Iv^E7js%~UyI z2Hmrs&l$T=GmF|14M1_LeF!0>C^~=2ig;j>v2h=)b%)(yW1e}9y~+4jBuq| zdob$x+}}CpaS}afUB}R8MgFrmkNK0$9{r&6Cg+<1V(ZXzH%Y6X9;XKxL5lEaAg$CeX_X9p= zLi)4;0ABv9r+QNW+SA$$X$j}4kw>PZ#>u_6hQW<5g77S zoOmjJd`o|epMx?aA+cgvQjn*zPXLVnF`Ge;)X_h6WF;VM%S0$(4OfMI6=gT_n{;P zN$En4<@FH7RaB2)U#B=S4t>oxi^L5Kc$;e?R*FBP!<~PC@@0X5IfEm2-{? z^%^8N1C0Yhb$lW~K#)nq2pTtmJTRl%-#p0Be999Hfu4Nq>wjpmYDpgamJs8pw$(+$z@E29Cg|aO7dE0(3 z>U$>zH2>8}89-jP4EEX_ZQ4q^;f?l!+_Cd;)OG>I7Xs|9f(;6*e!a`I^Z^y$S`fJa z7!ifUP12(jt7_Oc{!CngK`bR+ScfFz*c;~u91P{^P3)R+=tj;>0?(}hbc_AZW;JS%&d#U+G=HN|1V$HC#)L2Tf@3$jHX;-?C zrXUdb7HaAYvkn=5mg+pmyV6)w>W@Gt{$E*TVYteYrm2}i@yMP(Dyjl{b zSV^==4_6B3euTs4VO;+B_Endo4FDL+Fd>!(UfXPjoIGD&$RyY@^yxS`YM z#uAmt!<52$jm)_IiF?_hMIAT#zTqRHaN8*LoesOf!WRXBRE|Yx&jr##kIw_!GeVF< zYTJ5{uli(yTD=fV-m%A?hIGG{HNA5#!S^@x@N73Rtn*jx>}KaF7W|>|AjCxcCFdInl>j4Nq& zwA&1@?P7b`oY(pg?K+a?zgLvXOL>~^QsFkNL7}|uy~AxlkVKe|3dTJ5K7XZBWof#V z5R|#l+?kMvU@4yoWb=wVa*$E`M6F#|2^x3IwJW6oP$v4<6Aks0jHeZpRJT*5x|vfNM6*07MHn=7;@=Jmdj z^o?>oBp6~hf7v$Y-xeCvXw#72q}&7Bb|2I`kFm~SHd`%l?F(z=iN>7SR|J zSlU`nS1~1aRxdaC8iRo4k}By2H&cB(GWPJ|=Mxj(u^72ede*QRUWR>2+-Mlq&QEiO za+SFVicm(@?nfm&doeN@#|K7e)ak8DbFk6pv?WERxc=xXFNo~3gla_a^K^%p0gTNvJFNt`?DxJ5wC0aXYxkHJ2ao0*f|45Oj5QJm?dS(5- zbilG~>tY1Uw>t1L<%`&mV(qy;^=%Ne$BUB=`juJ97n`huO>%s~3%%f}qCy6H`5GTo zsZ+#V)Uj+|tn3YBU{`GjIp>(LY(={0dHQED&K-h~7`u0`_r?QS#>2cEs5o8@`OI~u zm`sog_@xUnd1ACQW<oUD!`-y)bCjT=06po%F#;N)anhjY`X#aQ4WKr|bS^$@3~&=Zh8W zRHMF_HO8-zBnI{htZ|-te%u%3p;*V&mSu?N(?cQQ_tOvLSA?O#46CRJ0c8w~M4%7$ zGB8u{!3P~whipoPKXmkW!2>9i1DJq%b(#HJ@Av#F02Nz7$T@q3}c_roUHVn`+uKJgH3z4Q)lYMA%9u4R}#gab~Ja^TrA#_LZR0CfasE z^j7Ue1(Yyrm6y|Sb`6mu7g$v^nxB1O$v=HF!6%l%h|$?Tp4fZIen85p%aXpPyxGMz z+pfT^mycgT{kFa6bQ6=>NdSFZ@s=qh)gSxV%lRPef#|pQz=N6t`CCYchuFVw*!g4G zWLLp(fDAmLVL*_NH)cHJC>*d}!%GKW9rHd&H`$a00Y=J-&~_4@=8ZHbOdO?Pd|XUF zX&%b>yAa&qdBc>dVH-1Z$(*06<&p0r$7U`{PZa4ShbFOXt=DVYGs{)AOMQyo5skk{}E@c;W~|M2B1!g?ytZ>md;EmJy~97!8t_xFi># zSevrBj|dr)(ukZA@QxbEH1Ecqvo8!_z07%6(7w?PqVR@wySB%kx>w~`92xbN?MVnI zbx0!MrCK9IxG>UsSA!2^ZIl;&b`kC_D2!H1+Rl)Tvy66<6%w3$7%b|o+(QP~h%vO7 z$tZdiZSCO6XQH+KiJi;LQc6Qm^J~OAHt7!?>g-hh4f#d;jLB6$EtpE8VG@%GRbDkn zZuz&}+O#~&%q9RQUUKb}9`KjQ(2jacvwaOPwG1LyBw(L*_#T1}l(0aEBp-Z!9+EwW zAdSwX5+Kp1!)4g3CYHPDfJ$SQ65rWqtEI)oWf%=}Q*VqwZwEdi=gkPf#H{M7Hn4C# zF1Xh-%OLz|fo=IxA=b2AK6K(+>eeAf&B!+KO+)dgiItUs4ad(Mg6&@57{~b<@@+ADoQbG%7j?z1C^hjN?!37Y4CWta<=_SmP6ykUNK%? zIfT0JdA20M_><|mo@D2`o+cP8vU(+ahH>K%GybWKv3UuhRpeZKdJE15oig3d@ zt(CIhTh)vcU|s{?czTAl(aaX0M_Rh&+iT6(CU~nxuEk>cky*011kMb*3i|-WZcbNf42i zvl*qfGYh+6^jkxck{j&8G9yt~u8P@Bjk7hZiIono5JVWOY7_mul%GoAx@|XVVQ2bD z`Gt0h+jE8#w-h~MQv*C!gI0@k-8`Ecp07pPiTppyP^F>Gx|HgDc<5@aPd_yV;lxy9 z-UYQaw%17`1?6#~kWMt)<;0MP`*C=}jzU1JnkFmT z!tI^6_7}Hf-4gbcwAkG@ph0U}*W5wAn~Z17gi-8@!F_}sjO&VNuTG$G-u6UOzyCqA z#o{}xr<PmHPkxaq6Y)7Aihqu7de~I8b7?e413FM9nxeScZUsGp6&B_ex)gzM$ zes}xHktp21MJCsonekBJn)k`pKd7I9BHjzb%p%bo0BaV8(kGiv?}XRA*ywcTg}g-Im2#I zJy$ptlt68yp99h;_nX|yUs1@!*{3tm*Uxp6`_h-Z*Kc=H<04<7*1}bBs?$|^g6a8D z7_PkDZ@!hrt$A6a&obQi3n^92wSmo!4r^kvbww}TlX8iGSFx51e9w@DqhFwzWSP&F zNW*+hFaC~mddttdGbuHA!D+ORq2RMerY(YKdfEt z%$4Z=0Sn5f%^OBR5{iwximO&e>M?i){ryZ560>~U3ELYXDnX@c7hPAG6Cmdg*I$7x z3u{0nUk2Sq#PT^f!5-WhpQ)>@|{ChdW1TBjp7ggJ$Fn_(GZb9{+csOXqf zdXVct=FKL6%IIH2+;0u&`^2(u86vmM9cH=Go~*iNwVmV@i%IySAjSxs;XlvHRM)+t+CJGxAyHj z*XHWCi!7&w81ndX z9c*YzMh0&-I8mqfTCKUsPA`zpyj-D+Yh(%idH)5+W_!rfXF6@xubAyhHLarK<$i}T z|Gg0EJu6D$n>?t7rf0Lp^m?J{v2`ER*MTA77Dyw25dqRB^3X_}J5%omeVxMnGzS+% zcN7fudo0d4EuGd1T!8LRCES^%D9kzv_qZZ{=urCjB55P^rfwOJ8ksv@IyJ4yV{Im3 zeBRrctas?y?ScRb(jwxCB9>cRFM=uQ-nS!*n1-iDK)`JV2sjv9DhwoToO zP!JR#zgF)NFyweO#(2xKxQ|%5{{9)G4~jD1evQe_#@g7&YW1wlXH!D!>qf6qAj4fXxTSqMPHMo3s-PfzHyCywgm zw+}X?MDPzl1cBH@p3pR zps}CWqDNj0(j+;^(-H|EygCDY^Mp?Q3&w#|2hZ`zY3y(S`8rpWWF1; z-;*wXwS-*MSOfhWR8jsH82U%_243;`lli9keRJ_143@u93S*Q?b8U zG#4{6GaFO5)pCmV7?;t)t*Z)}Y*2CR4M%E zpw%)F_iF@5L@nvpBq{RYB21t>MU(y_0g;4Qna!84<9f#mLzX5;Bz1`*UOgXU=&EBkVe6C?q-^^5{}**}4cd7IBgM7~Z(1j3d3%CQ2?Oqfh+(ag$2 zRnDJzco>TyCiG7I%x#N`%KxrL?wLgvr)FJ%3a#Ha>&%zGy7@r&;q1Kpb33bnQ$*oc zKYNz+`cKPTe259*s-$cei2CY$#fFMdOA(~JhHN&TPL6EbdA$wfuOfo=Dt?IuxiXz` zDOkaFAV_!_Y?S|MJ-&?zMj-YnLB%@&o>`@DoVkUz@b12XrXTJjwoPZ zR#L+R(CK7Sgo4W~2b;?9iq(SIF^Dm|UI0gn-nKtk8Nb%Taeede7v*aDCSN;8T0 zwBF`gyV2b_QKN&0y_vCPv8NL2<R zRm3l=sV;-ycDG87)17QazDZVay>xoMJ3s5KR-*j_6hr|_f*}z$Tv{6oQ=2u&9T!6W zTv+$+rdZs`r;@hfrF7QbGNY>349=io&|&RfYX@)Q$h(mPhvI}p))MRZ#p$Z65j9I_ z?PHWA9q8pAu!b87Fs%!W;{AMidi?xLPS@vWK`1uwYW=Wu3=CLD4Of|t-vqJSBy^QsvHiGkw$gF~q_hem6EVXquyzq19vHh}J zrcz>8=}}an-zCiOkg(KW2^fGjldvW28=4ZE?re4p(TgkR@Gm zKYXiBgReYG#%k8)VnXf=_aNs4=aO%J^B8?a^@Frptz{Qy4b{c>IY;KCjVM%U)jI}lzroJiP z3g1n#TwCBT`O+{!s17VT{sRpS-NwqXMzR@644(Ibg_5jsn+vaj!<+b3om~yWATKbZQb{eD5PboA=RPk3=@$TsF*?WOkn_ z4KL4Dh|bbhrwzaf90z>!&$VyjWX}**UguiGJr$ov;ll55jJrv7lZbS=?42CPzLa8DTCL7bA$IyYuI4BM`Bp`0?l|qHFL(*qu zb!WzJ%YP^j7o#~GhQ?qDVQ$c~%U|>Om%VghNc)V#A8E{0YliWjzof!WHBkKXd@r!S zG0m}JrCHok*SyxjdAj=RL_JL6>vwVBv(?S;LB*Btw}^esa5L#h{zHA$lYu`Vt>Mim z{BlUcBws4kaeq_T$)Y-0Vbpq4%ql^SVToFu zr|Hajk_jd}cN=3(z2*y^H-0=vT}H%xHR-|| zb8+}X1C!$Z9q%c(tk1X@Q${^Hu~xn5mwvpyD_ieff=hL|d+pCnVu~7z$-WJg!Aneq z%~po*7k9~z5-X%qWtVFp$Aq(n{8$+!QKc%0UPNSjp4SI(*B4@953*&6oU9-13~iPM zlUwPr6G2LbJAAJ)+nN^UO4me`;c)C{+k&(>;?!|;ub4Z(Caet3Dd_NkOkW6GS zMg_FXU%Hg*FDv+HK8~0}!jihWASa2_21pW@lTwGmlPHLYXaMSjw3AH;4GmaW(_2HT z8#eZ!!y7CD$&Ez6NtI6a9^SOi`7D=l+>QA##t)dFNpBb*@*XXDC3%ek zN1GUwqQe0NZ~{Wf zSQZIZg1k&F6Ob`t%1}Rj&SR9f?KnN8 zd<>}_n2?hz2&zw7NW5PxWA8o(3g0QzJxKICXar@3>}DeVWX17i(Do%!0@74=Ag&?Y zE_{A}dufYCCwg>*G3crtTa>uOjMlQSV5nb-p{z5oqug_y4fZ&bjP-B+w9e`jTPIrZQDl2PRBgi|GoF~ zp7TEE%UU(YJ*qy{jk@M<&g)oqSjmm0vZf-Rb9LLqS@W0dY$*OJy8NYe_^?+R37}L% znI^L#p>xz@J~=mWG1<^Y?fN3T5ON^g6=usrM4}sAa@aUIHs~g_61qB6h3aAjwUuR# z&0=^@7Qgm;ItYkvZI{RZfs8f`KKD4iIg>O++8UROW;Ip=O6O9tM)x9*NYW%N)f(fO zE+0Rsei-HXt){xKfWdS%!^qV`#ooPOP+`fHb*=2lCas;x1W2 zK7;iDe{@U2N1F^k!QFk%dS1$luB_(m9FfY&Z5RS=E$b%)qO^X@(FXJr zdmJD|y!QU+R%fEx*HRo=6X+}(}Z=T+e~9h@QiJ9c&?O|1f> zSJj&OWE0Tsuo|X+=d)6wL7|gDrn)3OgVpChXg>U*$#HOePmT6?0sJ~H?r4;grYq4O zDY9_L6Mh^-DrHYy!kYOj=bp%K+x9bg`RKdQQR1lO&?;(#)n5-ABFOcWT_+ZR1P z4GHQvu6(rvyD)JSUs+tQhZ+QS#*Hd%MG?7-^How=`!Rx3L!}G1HIo`z?v%^MrJ({* z75Nj7;*B9N%0RYEaQb`t5F=^^CYn({SvFj>>KQ-TFbG`rq!P0 zhQS`shKUiro=qO;nXJoL&ClQ{7MngZRPEZ}&9MQ%wLC^sSWT5wF{v<$cI^u_sC@bp z;}9GNVqs!PLQP_r(;5{PZ5m@L_|{Q8_7jqJ)nake-X@RtA50C z>X?e?J|#)u8mGw^k>h+LXR?&$EDvvL#k%Q5`I%!zlPo$bYkh6zinS;{qfQKGS{Ya~ z%|sg1&S7uhMpm7OdWBrkd;oR3Tx7L#v`v|ks#%GXvTBLctdePomGYzltE_6iS!$VD zQmR!`n(?015S|{t{3N?-W}11KbD)<%e#w;TQK|>*men4{h86I57}VgqDo}C+6d&@^ zN(45UF9K*g0xE=;3&F4aw8qIKHrJh*lL_p0mTw(AE|+ij5zo>Fj*oz{fA0W(9|aZv z?hKS11!Vx?f|7w@-n`cVbHA=&rMVuJe&B}yS$p7tGozrG02Ey72}Q7{cU=`_ zw(y)jVjU6{iQS(m;}O>3F}W6+lCF}Cj@M>bi{#@^ z8xCmXyKVVY@ao<%d2~9qc%q&yJPv5+yEuQTX!=!i^Gn*&%{*r(9dXOJIBso`!)sF@ zI1MTEesg;eYdHw$TDyPOtqVlZ7z?29KWM@7)rjWTk=;XC(deCWrG79bzrrhDDb~7S zaI!64KocsMBA@n3bO3->^^BJUG4zht3V*s@KwLN#QaiSZEAP2g7jYO;!eF;?68CWj zY*dRQmVTq>|E<@?FXF8q2AmxOrB*0bw9nbbeZg$x%9SOea%ZE=@nD5%IQQI5VCv5= zNw#=ih}%z@oy3|xw`hT6Crw#&Alu)vdgAJW5*5*cj^RlN$s7-`o5tdiCq&kP-a!XS zjf3I=l>J+Vj7#Y0JK%#KnL5CwJAJa15BR|Vmg|O3Qa};l3y#=z$3YMaHd_4af>XXB znzLu?-w@NTJ+9L>YZ&WDnop)fe6iZU4E9G*3oXyjF#gSsWpu(x<|X0Rc&C-OVZ-1o2$U+yyFHg)M;%~o#_VeMu+2pRr5c^d1(vc(GwlZ`8d0=s(Nt^BoLm(x;a?{ zFtsoB{DRRh9SZ%nJ%A>7!(B)r@0sX@lO*!TTJ4rotOBeq*);2Obaa&2i1jLO_-AwF zr#V3e5qDYm2!m|=a$zXD8G$`9)_QEd zMxntMPbW*AoZS#@l+tcKGg@t)cz`%M$rC=a;M!J($*QDO%+HfQF)@KLC6Op}jUfR3 z%l|x6H_=s!vUaOy{&wri>{q09o{60XrMUFP`^Ww6kYYzqz&=wuuK0D|nqdY2AX4vk zhCn>EDsG}9$}jBGt);Dd6zXWpp0XNUNlbDfOUINYd3jj4&Ax*pAZnxw+UY6j@j%6J zZSe5^F%>Mj;0q_+clQ`Xu#s77fWZ%~Bi(U%w5s2~!TrOwy6|$@^o{bN1KxgFuY5j> z3{SD#_BJ+OWnCrKG=XGqdsNW|V6~@QH-y=RNscPcxR9`HOh!zYsRhoy@l=O8svnnLLj;8Z7t?Cf~*k%-)6ppko zkkO6#gTd@NpxXfxmW)rXja0ra1haF^N(Pa3f~+($Z#1o zi?a2k#ut_LD;i@_@eD4TNo=_#J3Yv~Qar=m)K*d5e?q|BBVi_ACmya>5**_>B@O!Jq5UcpU~Wh=8LTqhHP8{%zH(?WzvoUjyxVhQg(O&}sLxFR8l_naNS_K2V$xJUn2`CRlQs{^gJ-=+ zAphu(3du1gkP$Am+x=Vd2PtSLKK*JxoPhuTe-{7uiCpOG&)B{>yBhSrknERZ;6Ef@ zw9!{d+1w8_{om*GFSEse5xp-?02m|q6=B?#1^VB({0)jPi_<@+_%DnAqd7DLROdg& ziGLu}uMuouw-YEh(DHv!!hif*{~Boi8esV^3HZeqCewn!0?odI{U^cTzmLWS#zuoN z0IuY|Y*U}~^murX3sQ=Tcd`D3P>^{(y#_Lap%_wu27Q=yo!TdT_f1>6H<~_hr2a3x zkk`49&eA`H;nHSw?9ANk4&DFS9}Q32Z-1XK&V_`yOgRp=H9~Xuo{6Zn`y(4^+}Fbo z3J#h8r|T#y_RI|`3Q=F+|D&Z=<$FM*5Wq>}))Or(G*`z>bu&!(lA?P5CZ+p+(R&!E zT8vx2H`r z2U@#Sp*|X_?mK5PK6dbdfoSSvM?Ek30cUL+Ng^l?{jlt@^K3+!?3$a#+&|DN0`MeD z3O<5AsZdGoR|w+ykc$h2GyXK3o@qvQb_XPJYCWgmmSMN;waOs$1K?fFVh9~*W}J3j zXySV>%R;Tk>Y0LGF=Xzvv3eT(uwfC*=qGl+_dli8oq?H!?CC0tIGV_>)4Q+pOKy#g;_gAEH7R}~y$Ld%8h&Gkcv z5FQV{qx-((iDj?w(pIxCzssSc@Vrc$%~y<-+)DAs-qFj*R?x0qo;Pce>5jp)%Mqv}1MyhJ8X^NXuYb_-$5Fk?K1LGCpSxx{h?swfFS~0vBgb3SMaNO*Jx?!_DT0bVGmTuEqo5gSxZr}SS zWygkyyV~Zk-a1(cU7LeR`dZTR(PpgKw&ns zNO&Cs*2`EjDFLUtb)WB;HHYS&sio5^wmW^{6&5KCd+-SW!Cfv|ktBe2qjWv5?NY0& zqzffa@t~69#I-zI+OE!uaHTb4= zdgT#8Q=!aw+t^6;k~51mviZ9C5G;YpWzXiHtIlZv^>OVKSUj5cBNq7y9vppF2+w@t z3?5+yRlBQ45wC1ZbFjpHoaO`!?mCoyi82=?j??kvFhin7LW$5(xw)L@qasOqndqZZ ziipfj3ei^qiXJdY&MEZeWmNSYhG`7%#eOEhMP#BiDE8z$`LmOk>~H zW(NIAKroUjH^b1qZQMK!JZkHUZ#p`JE;VRx!ZY@;WrJ)CI4+AlY=|Xi5GA4pVNy7Eqj@(1i--I3hfQsNPS z`FD%~WD7ZJ770{%CNZalwOArKlK6<@9Fv}0N$Wu?w5TSZ6{7$CK$413zQGp58Tgyl ziP6>dDU2K#UGOwj_h+fzyF-o9(R;P3O($63Bxv)N#$*_Zr&doWnA6)8C#YzQ;D*LK z*FKC|`@q}bubHs?GtBaA6ahZ<#*8DFCpK>l7KqI<<$D5}ey&Z*ovD7RTif+3~a0L!YlbG zB}Q*)z>CUIcbz^)6$kgqtWr@Hr*_4RxhbXiLS#2rBhMXs(u`EO;E+AMU1Xe&NEUz* ze~0Mr>R#?Aq7|8i_7I@=mCl+IB=9>6FzNek{18Hr_<`Z}wD5}I9yeWtwmkrWBS@g` zUKEN4VUG#PQrv;94!_?q9_Ai?FOEFhHzqmz_$|_-?4Iq5jxYJx`Ui#Hbjkt88&KDG(Ksj|FYk}8F%E*nF*ZK8CcA3IrE?s1aF_1oGaZ5sBO1RnQ2h}*#%VFx zWud_k7*vEc=CavE#j9nC&IqD8gqzTA@h5~*F&{bVZQG1RCRRb2c2~`;S0&);dko@5 z4%0_P9*2g7Eup^64=OLw))-)iT?RM?IL&KYITa^53u0^3&Gg7xSe zLA=t-5GZR?@on9nulZL=s{#vOajM^l;WwoUd`WW?YN?i0 z+*39jMevT~)UcLR|{`$}1>U}oFSy#d;J9qp&D zJvpuWgD&uGnMGHcyvAJXG5B-ATvk)*;b{y`s1N> z&@yWreb(+>^LE9OrATr4nQhvE{$(HpQS)Y%XO$IoG5i!@y4zGm2~K*;ntu`AJKHj{ zHKH8rW1%=U_k>b$DF_K!d(e0@Wp^Hx5H(q_SUN;hL2@^#JiNNc*Z0lHKxaVtM_q zmh-@`Jx>Iv?+FVFU@*2ZbatN9g4WSlZ2bh-xMSHt5x>fzCCU64vHKSGLn1?h2qGRW zFFrjL7MpcqX97RIWuUNDYq^QRcEhSMO|4QDg-EK=vU1Jp@$sdp>+$8G%UAz(t!Uf* zG7}tY6zr*Ud;Dsc`zXtMs`;(^AnQs-;ORcy9#lhG&}p9taPqt{5v!ORX(pviHc4k0 zUYJThiD!8z#VVinJVzI6mV2&CmOnU07iU(=HeR5~ARC5@Q8{x=!g(kSsKtdXWOOxV zu8c(oN;q2z*cFWzP&>~{-AdG#{T?gL`^`{122z%{I9D-iQHcwj? z2U!zYv@6R6Xhl`I>^o`g=JA|xN;@Y-oEF+6)kXDrMu^GU*%VaPIi@RgtVKcG!mM6^ zyTG%zTS7KkESwIRtx-o-En28E1ca5ymT*d7G;be+f7*3S(MJgsI#PNyT0_ zDyCd!SPslEt5vAUK=HLjpWx5dkcxi&O=Q zD^c$Yl<>9hEqnq7J+fcD7XH*Sp=*? z*KDtVzRo1If$LFy(+LgYx}4XcnJ5&rVkIAvk>*Xc+BY} zaZKYb3}F*LRsUEh^^q^~|N4rsR__Ga(3 zVUVys*@ixLqXsOX@ZhZcoVjw$wrJ5nWKv6BR~CPsfeiuodxU5iq9|g7qFE8sis2pL zCLUL8dZEZ-A6~O4#oUU;LXmZj@VeFw7)fCw0=gUcv$N9nfo0Y3=^dGMtg5*unPNa? zy{}8SNY%c(RFY&JD>`VUqg-jhK>F1vE)=_t2A*~U_gZzSoS_QwwT5vpb`mp3|0|Sm zmz?)mw#Qy<4c9%HV$cR8ZI2L&%8rRF{4Spi_e-c$F+8>h#_$4E@`f2A5?aU zi|$N6U+9-diE(VEvuX3@TKwrV=Ge~7Ye+B$G@A7Gy;$qHw?M- zl$zuX#T{kXP2GhLl}cZ`1zHjBNMs>p5$r4G5Q7XoQqP)dj1R|Dbgw)pgVqR;l}%Ak zCeb|e!^Iv;lS8IY2lcOUbV44$tMeuY#f&MQsz$*2HKmg|;oFcV{<>GDCNJQ`O<2eJ zgy1NpFu=xR*Ip=ilDujPJIn(?>nj_U9w4OWep=<1zOC8k(h7X55hBmLcQsn|NNR zYB`KLXgML9*cMqa(}}0yDQ`c6hyv)6zo3qDfps!L1|cU1B6-H&c30Wvm|>xHv)@Y4%{v9uGI3@MYOoA zuU`a1o^|zXOyb^$9I~+(E^l{&~VmwfjvF%2|WCw z^452ea@ob^(0_-Aw1nx9?#4@}$W;mD6OZq}z2wr4o)y&hHZ(+BUq}QNPQYjPM0rMw zd&tP{<3b$)Dm}&qC(=B=sRYX>h;8W(*hzFVN(ZBOYZkv*{E? zz4(r?-AeNTKKq$;o~W65uq(EpmS$C#r!+bHux&&@n7kZza--0#ZB$p)yyi>rM*P!@ z)Ol4}xs}>sx{J~#-%!MU` zr*>G7e#9tElzY&jn7+R@E_(lybj^sMcEQvHKq-x^gqVNTg`!?mRbt8A{q*O>zlb=S z@fBuyT}tCuR$pj0h%rLz1S3w%s>(#Cqc&ACFWgzq#@3kqk5*H?>W(SamzM>2OHs`< z?{i1xDa_QzrpL&w4*W|)ja2D(6hXjL1ajumD0}!_{5~_Wg{<9c;c}4p*g0;mTY5MlH z-G{koe*M6hk=Nh}0eMOGi8tByRjjdeb~Rr^D%KILNfK>IZnw#28jWGS*u}X6aKzW0 zDC6OG`VHxGMJE*p>hu#MveJ{X%Wxy(Cs)&7+UIp6H(VbPqpM4VJ1$BLfpdGyHLdRU z)=q16Wn*h;X=P*Yu?==vS>ChsPVcm*daP{g$4iS-tIf%A2HwxG5*JSO$_)LBuNTqQ z?x6`fpWapn(#!$09BM&gXeH|gaGK;@0|IIIJtaa^sq)q$4z0bcyZ_|M<)uC2W1kD5 zZeY(F%Tz&>8?PaZIUIqAas;*);tx~kI{%@eJ2oB z2qy1EB(;pdbpqXi>WJ;0!9Y$0DT`7MP#_YiKnx@hWoobPG$V*xn2Oi)^5|hM35?)6 zad_y24QAVztOd7^2A3AH$S^i1K3~D|2eNb{j2(?QvFaC7V8mSs5Cg63<;Ye0{{hOk zz;s$Y>sgwR4m$s9e8&^@#;H)H!noJ1`N3LJ zVhSbh!0jz->bQsmP-7(MOWSMY!|H1zu6T60ZX0|BkDb>TW8^%??;VOB>~Ap|-rIM% z1f#L3OGlfc2eBVSDx1y;?ya62+H$(Ap6J_3IQm5w3(Wqx3B}>gRHF``D-dSO4x@Po zVX-i>!cj}y%u=;JBcpE2>FEe+8zQ;Plsw5L$9w&)amUaKFzDRC>1P@EuEK;4@Y?Ea zNECjHgt@|<89=x#3OM1rytps+=zO;eJObMUF~R%@f7k3^F7r60@3I8^kCJrb3~w z@GE#PJvhv2jdaoiTVLg3MjxZsIzt=KrpVb=*ze$iDU#R#( zxSHIhA$2n$Z~G53Ut7sl!Vh zRXo%6O!ipIj1#zh@aD5g3v~)c!2~^UUP$#PfZW8G{`kOe($}PK8pJhV-Gd)#g<{>4 z`FImME{~{h(Mmh+H{Q{3?zheakJ92b-Nve(gE|;}B~$lw6X?WFAr3oqKE^>FfzIRk zDZ(+-#HThO(8S3Ufg0i4!-Q1C$$Q05!svI>H{v$octvD;Z_Knmp0Ga#kdJuuNXrkS z06p8iAEuYriSv`;q6}}?9~-+3 zB9bGX&flE%m8;@w7}h)v^sf~SH^#V6)IQLE3H&-ZccJ~n0qj>)fR(Q5NZuRsVcSw? zWkhtNyL$ZH-o2W)$-0*kOaCOkILw>i0DO{ujIM6{NfG~B@l_s9tuEfQTmM<#Ts|wv zt8WbdNuqB|@m&4H8DbKJnk-Y7Fs*q~TLWs#HcI(Z=6L&t&=M^@4!htpb!y0qXZ#)W zgSWB+JazoFBK{F@9l>_n#+vX5xEW_l|I51mR_-#^Hb?zxogv*XHXaHuSg@V}1gx4# zQ5xIfU{gob&Et?!ItOGR1t=gK@C26OA5HzGBNTJ<+HN}eLw@{+IkP@oPLHIIgGl>g z<^U-nsXn`KERAaBF7O4Xb;$52LuV=gUnen}OBt)?lk?+cFTfm$D`*w80i8hy@Jsl!EJ<{0AuNPJCi?LH_IrE7S%ub&rJIm^?29=Y!U*Ru=w&op_61ejV3;~$_>nnfa`L8oO&7UVz64;zJANl6%^L|)c-GG+Q~IJq)szrVa}7czvcIa+_N7-U=s;99yUt@S|%`akT{G1;C~_8RT2+ zRt2DpA<&d49SqAM1(a_;2od0WPF~htD+d(WID zm=eW|?(6-V454%R zXK<=b6x#Maxu7o}Pt08%^62b?M*U{)Mf_K-5wT%dj`B;=&iu+x`@f3#+q_`(}$IaP%paVxaR<3$mM;22U(%*`=fwN9^iZvl|snCzeHJn|B<^0CrwZ zK7wgxFy*E2p_#PV$=iXvIvb>7e&f>cIAxp6nDGgsVZU7SttOR8$1LN-pHc}iZet2~ z;-ssEZGGp09^@d(HQdvV*h-Y&AXoEC&kDwva3TnMje4CAJf}02@S-Zf@N5(O3b}P& zAaaKex#k@Jrj>l{BUI1PQz89M{UKw3_GH4%S_i*3(fA4-dqgq0fcXg!a`ybI=w-aK~yJ zM~IVB2}{c|6dBhR@9{=Sb^sdI*@=^P#2}LSgvOBhM9PyEAzCf4kLbjFQO_1d&G|YpWhmjRDTb z?c{o3+dGD0Glf~+xW)NdhKm~u3 zLqKHb?eglMidxA(1DpYQ$bek%b}sRJxinJGjzINq*{8zY_V;{xg;^CW=p-lKwkfiR zu5tT#p_(}D^27KKBlU@G@}FsCW`17~HB6&EmL^{jzlS=Y4*75PQgSs$E&U;=Wq*bj zD_5a48LtnI;~yMZ`ZH~zy#};CdYkW@-8x2?;u9SiECh%*;GWg%o;a~1*SzxCj2#3g2l<1==xePj`WL?Q|D|_00>O*`Ix55H9}pM}It<|=%sBbhMrdxm z2gEqNINzDSBS-GgHVvLR^_Gw8)p;+QuNOSLORN>yYT2%>7275Ve&qi~BNFY8Ph(ZX znjWqT&^cFAjNpfPC`0l{_irvA8Q}H!6Kt~)>hAO?z_3-gvq?i?Adj)tfA8J;*Z1xI z7lS~~UceKQ{09>zr=z1YhCqB!Ox@0~lLM^4lz;X}A7!hfHG)8pymPI7?{{?IF6)Lb zuJ${f{Bwr?ba_fh08Q6##I*x#7i-uBk&?DTEbYku%Ys;4gheV9x1k*a$C zpZ)fn4Nw;Fci3gH$GbJi7$b1n9~Z&&4x$O$rw^;do70~H{5D!$zrWP^$CR$7w#7;% zK!w(iS=;sF%UtX{zlK$_W<$|)jxr&T`UGl2WTjY3d-i^3DR8S`8296*E$kY%F=&2b z>kvj8ZQ}fX^H*=5%3Ejdu!f)zn4BoYilYk%AK-$9yq@+S+g07 zXczljVqfXsUbpFV-2@uNAu@KuJi6x*fS$3NwJcP9qFZWGn=|4)&d%8H2Tz%~=xx|Y zDM~91vfH_@AYL`&%XOx>@GA8xUYOOpd9Xb{QGL{L-6{zzfAZ6B`bj*4hBCG@ar!%GaQN(AxI~;yo5I+;mLMOp;ve4GSScY7$=A0BnwS zfB2u@?c<@rMw{N$dX{N|QY`}5p>zZwSkX?IJ$QwSCU20egW);@V7k#yku);lYDxcC zYmlCu*1mA$th2f;qOrGa+XwbLk6|Rv$ypOT9!fyXkgPpewo9Sf=!|l36weK{2JqRc zr~Y2E5*7Mo95hPI^_~%a_}9j-9556n-Y=$8oQq7$&XzCQZ)KBXfGwQ1a4r01!S&l2 z(ij*1=F=%(IR?xoFK7NdJkVvm!QbX)7^muIfd4Do8=By}gCN1owey>h!6}h=rP~Oc z+oIUS4@mP}Xl9bqX3?|if5#8KjBJ(IC%~M2h_ntk>N7XK&hfa>g zM3_jw;7xomV3*u)?=R?nDqv&Rm@Y%KALkyljD_plBO~4v8>oYD26LvS!){ zM%fSHv5mrO{46don1ny8)+Pwm5rka%;Z^SOfal}Vl{kIjuS&iK2w)nxLehkN&AtL* z>nPy8pn;Oa?Q-_S$Sf)ulcYx4(0}*WPe1X^1|KQWJx_()jpsI%&(=cuez+bzQ-!)Q z$pa}lIThTWiXZS+= zfOe5{3)0-*49+kzAfR?pwlvhpl1>8B&pB_&#U*e==$^?26c|9ZQfD)Mf|8=crBvhP z;V&VCy!kk3P%KK#_Di&qk&kfBWZha~Elxe%rkmgn_dAc{LFXrr7F;oiPQHFZCYQ3t9Mj7h7^$IX!^70!Q9#X@=4D$N`4dwf`fW--$;k+5N$Pz8U4|_YFSM_gv~@p zT3Bh+Y@CReMSx569a~+oBOTo>PjaMJ3NK{~-)mS%#NChISp!Y8a%|1GKfB)sa}GhW zeu17uky*K~i`f>`D_04Lo!honTxWpfGqwg&WsbRK4bV!gz+7NZ;j*@^B%aoy_5<-K zD1h62^goSv`ka+nq#yvwZ3ZUBDNJt<S&s_MKC2_sk@*WLTdQ`KcvJw}Oq@nq{PqV<#8Ph*&H@R( zt46d}OYAhG{qIw;iUOXfY^5K11fMuRF6f}VI&`HEaI9>_ASS^#2(A=c_9$2;u%0KoCAgyZ=V)bnVqY9Rd zg(tKSS5Z{dJum&wn4I!vmc--MW1w+gzgpK+V?PEJTcUrU==xFCCqT_B!Cj z5JATD1)yrk#P|&5a$^{A%{?t64Y!q$>w8WiF9B8~N+BKE|GGMY1X~97rd#lDx*}~t zgUs&}F>(iEgLJmA0VwVVDY;1N!PL+R1GEhUDdvZ5{PtTaS_?3NgkBdaIyTY2`v=h{ z28m^y#S*CwAB?xev|{_H!k6mT8BW}|xuG%w!zr1d<>Sxf6}RVC0?lhMr}rTELVUS` z(g8PocKs1tkw9{KyS!hFCo6%RsTTRl;aeP*T5~gpuqtB}Z z<2a+kwI`pWo$q^zfgL7Nv$*2uHG*+2WwJq(_00E$?0aZ<7h#8V~dj1b~p{ zRKv%7DW`D->fo~18nSTCN_Qi3>R|-H+=!|o9WK~aE|*`5&<-rqPZ?3amJ||49KJo2 zrvW&&aOqmLi2<|SWCTyB97NN2D?Kg#%e3fkZ3jzpg$b5(l1?Q*Cd($qg^<)HWC<7P zfW7HQ(NDi76EhLX&S&AqAPX`m^wnb&Y@E;~S&LI|RI#|%4f*F&>AU+_e$N|7KSNa| zSD7f7p=tc&M|b!*96bH%tSs9frSfUAdbj)!ji%cT;#m4cq7~u(ufyH{DTq{gf}sJ_ z(9nE-Yvt09Bm$|h;2FYY%kq$9WZ+US5o%h_<9&Am^i4s!1fD?O6o+_06>Z)?$kR7l zosYf(gSWVO1p&UF-wp6sHBDxV1>U*;IM9dCwq*6gqb0f46euF8ytMt%tmh!V87kx0KA{`5nS!?lp8J-A&% z-2{<#?|GU34M~qeTnjy%s=f!v76@NSYn)@S(H2v5v}xe!Wm;~t8)pw5HNG(%5o7s9 ztu9$lHm-ER)ID2E^IjlL*;8E=!x*L;(=B0=$KdCa5OF6tX?jevm_F@Q^!B1K&sLgX zvBvUpaysr;6GwxVnDZS+a?^#s=$L+ouF@^ube2!nxQnF$QVn}cxa<}Hej?9vjpw^g zg+$luS=WAl$k*oZeJ0u8Is2~< z4#@vE@BE)2@&5xnUyFl*0eilK{imzzKW}S}4J=|Z+?V@B-wqZ6$msG#DF2r?Cw#QxuPr_^5MRfNv-oifR9hHdti%;J`KIIRjwp-&! zl@%Y{-Cb_1^0H1(@VRpU-rrxdzsc?6g2F;zC?h@P5Hh2AwvMe^Q|kP>&nJDxa16{Og2k+*HvhpE%C8HE!T9A`cLHeKK`0?v>$4=s+KFXN~`Jx zG^4NdC#rc^j3oDf*`NnZNhl-$15TR?c;&rMJ697=m5>}tC3-bl(P33P$vILx=#f1~2qUC_5%;ksZnEerKa-=k zY=!r9om+TRTzb&Dl}w`c!!Lxkk-HB%tI!f%S-o~La>;VP3%*BH=m82w;a6=IRX<1) z3jZ|whj*N_z=wDtS^3YxW~?If_@%0wH3T77XpHQX1aUe>Ht#R!!{aC)4=*4Iw?`P0D2+g-@O9&rmA&PI&h;a4$hq~ru= z;c-1~Lcv@aVIZ)CjH%IhN)g$_WBs=JhfZ6Bi>-ObDZ74aqiY)cYL&EGr;oatN{Vnk z`Tcs?ig=hZG#P(-LH7-G1Nj;BmR(SC8s=+f<0?Idkl;ygnz z=U0$)+e5#^UsZDM$>yZ2_d7c<``H(c3$i_lIcFx$2e=!ZLu!=P_poA#kBZ6d*@mwc#7it04#E7Eu4Nwcq@gFNXxJQ3YU=^sy~lt@q#b?t+o5pGeF+0 z;9kQMOM&1x4}TFp5Tq**CVv5;&U76-VtUY#Ks%mq!OY*aL9vFQGswObOAv^jb0<;R z?KJqg!)N#r-EezvD-22$?EbD#iBzZ~bxWFf5C4OhX>ZEgHm8P#;TbU}+mY#vtQy!Plf z(=|WW-xdcD;=Cm?;w)9)Xid4yuv^C#lXm9yzozFl^+*61OkbE|LG7oX^ioO`&Hq1S zon=6r-Ik>j+#Q0uySuwk#N!fAl8Jh`Ln~X3nc<7Bv2*qZj zOvs`)F-o zc}o$j#9BC^<>ssZA5i_)HRN2E)+zY-ycEO{ffW zdbDtt6MnN9vpYLlE+3B~ty^k~r871tfW;}ysCsVa`dzqu#J!(nxmeKCi8}2iLa+NA zj<+8AZhle(_@0LWOnyj)d|i>G;kFPzm_2_>utdY^r@rop12CxKVvNxiSeK}&J^5uX z@v**nIg(k5$n<_sJW%83@9k$tF3$Hv+cc}Zygs2x7MSQ~JKNKSoRqlY*Z*aVsBc=n zsd@FYNDIL*lc;V_3eF#Yu<{8OnJMI&b+Y>E${M@6cIfo=3K+x%Nm{gz`zJAr32tB( z$4AwLK%if!60n!%#o!Qa<=s1{nw*}tc=ioO=|l-(g<=d7g(eWsxk$}5G-_B5n8bnv zq8vt$%JBkOrCtQ|e2?0%xHxI;@GCR!+*+#2ti4_N?b^F!fx#B7?Pyorts;Dk{+w8~ z?`D&+Kh&~)SIip&4*`8%K{6H3$v`y!OE8&AMt9}U5#aCcCkM2i384+0GQ?<-)DZS4 zQG?u4Qp1G}(r(SM@uy_SU%{EeBk_7nI4}==Dvxk$0v)ii&>sRW&eBZMbFRPOHuAo! zUa19sSID`~v(m)pksNZb(>W>0K*sS-KJ#LvSCvz2m#j-1n;5S0619f8W1OcvCrAK7 ztemcVg8}SM$jqu=u|Wz^F@$pd8D?&bjrG~p3|#cggUj?c*<;={v&pf9bIov;U$k5^ z%D>>Y4H~z#vjy)}qX{f~rP`6pX^MP6QXj3M*^miY5~%~fx30~kUmPoPoOXQVL!zS9 z-ZD8Pl{Py@WCBjie#fR|k~%8@l$4)Jg?WVj@Bu8j$=m1|&SMe^(C|ber0*tQB;(he z(s$0pdrvR9MTOsZsDIm6$=4cfe*@Rc=yx9(!G@M+{Hx9}*dB#ie$>zO-S%fu9-hE= zZCd{@6IyTWnb2k$EA`KOB#c*`K|W8=jn<$KH>Kl?8>*@k3=QUGeasubZvbH+LzEd9 z*)u?S5XZM*hwG^_y#6UOXtVqYT=$twP~)0P|9*Rt_PtN%&@pRe#%)Nsmx`7#Zyd_v z`}j^hMePGFWHT>VmbqT2lla!qio8tnIR8D`18dn18lxKQ@X<`zb-#hv6W+cx{ozsq z`7=J?6FW$Vx%39OzmO=UpQ(V<@ULuvXaX=)I;i$nt7(AoRX;u?Ldrb8I0+c!=?UFU z=pog~c-qMs4uYMNtY_v>vRdi5e!u=6zB=tZb4%|XMXpy9QDn1HVJwfeW@V5h50p(# z%(j1`E7-1D^ORE`-|FQsW!^kGlX&FTuB=lKLBEky!tj5efod(#Wjc3G69;c z?3k)brxlr&%+mUB7;+}63H0(#wD=>_5-LtEgCRLv@UksKIzKb8aQi7Qb>$SaleZBL z?v1B&@EG$AI5ZXA0IltuZ^>5#UQt=@NmEAPZ)(40HZv(3 zt~sR3IlIvJ*XS%TgPw2g*zJpp$D_sx%btC46SiALjAaB}1CZkL7=O=6{zl4`Qc6|FO1Ml0T&hvO8kPZhP^5-QC+9eh|R$}Zy& zA8(2FbBQX9^0-}?Ojo`-;uvr)seHqov$X}*Y@I4a-JhnyC$&n_xbwUMo|O@3H!pqr_uoNok}lqUM}(`Adi+^8T29 z7_Vd-t$nZGQxig?MsL{&KRTLG?8fyoHPFv-JP4U4@d-l#za+qQnLgy_Ov4Gy6BQkE zkck^7v|!b;Z_UNQZVO;@Gvk4)x?m#L0|o8SlO-Y@E7~R`a}3Sz=r9Bn!SW-PJ>_QMl#`igz&{-f~x zLec0#D6Q_Lv7vk(#~SXzQ8H?}XT`!OnYxC?_X_^V%O?#&Qab=tdsBo7{cW(_gfaLe z2^Rg8b%Iq|u9g{%DAWQm)r5y9C2eD?1|>9Gezn5pG|VwGO!#tTKHJg}$;Mn$Ya~O~ zX{DW$K4@Czh83-G**Py(l;ScPvjb~&J z#;R#bNw!Y-@}q%CTBa0YR4y`yyl??@V$PPkitfH^u8Qn`1AWYMQrnw<_^+2c;pO-R zEIWix4iPJp$3g34rcZY2gwV(PU#jhy#-PyC?di^*mkAr%)i(JW1%L#Xs8_%K?fo)dBE;MP~r6_xp z8%{w|@J{Ejw$t-e<3S9)8_XB|oRVc*=g_KS`Gcn$CvjzUFeFub&1n9>TUU|EXP7^C zazkNjEwY=GlGz{tGvhX?q!qtp{nyA{)(u|P?%+fW!6-G=m$_jpJFrXT^dcN77?qPy z7d2>@{TU|IKT$vf(wp)i1N9!}MoknFt)KuIFnuyP#pO_zu+sqC&WOkF%KhQa!cpW_ zS}Geb)Czft21B)Lb9Z0!T91*~WlkT5e^JqNonn(7=I`kP(2D&$L7oUWrkK~*kQ{}q zY*DEJe_&WKN8X~ZCVw2Nn2pnhwsn&@{&uWq;+}!eI)>+D#tXQF+S0n<8sPm!ltrH# zfBTjFdD!`gY~lV|u=1~*u@BavjVyK$h=sz#f z1pmRt`+o&Rpd(5c)PJRR;QUKcL;^Zag}?-yYK#I`Ggz;=`oe~RN15k&QoHq<9$V@57Gq$ zzqa-J2$T=ktTT635k9S906HhYyDmM6T!-zCL%Tc*9>FG?SG)}gPb58GGN{`zYFCp# z%DVW3GP?S5(his0`4D7oW01`J9rCZeXAPIU*e>#}$u90B_?RLJYpFn|`sq+0`=zSJ z^~qF9?;!y8%Q_>)QbP(D>&$-$HhKf>fY|vqj8H6E%@l?2nB`@w4h@ z_N21&m0n)4cQ7yALIE9uj%F)snf{9w{-c*f8QO5+JZs+R9S<=Zu66%r-i@w>!7P@J zE(aYZ+i8{UK8Xm?VBpve`yNMyu|ls2u-1B-If4q;ekU2o&Wc;t_sJEJjspA%ATj67 zlCyRhoSE`<*MUy_q)a|!w_z^;H?=+W=)RrTs{BY=LGy!By+e$%VatOK@a4SW*)E1R z{uLBRUbRJwZ4R?e$;9aPX227sRYnW`VIh|c+;lucu?nzn|RUMm- zBf%@N12KY9;tWG6mNO{IjQJrcjXRa)FbXb@JF)adZ3uSh`qE#W7R=Q#TU=UY+9x=e zX-D;UPW?~llqyXBf9AHr4W(51erIZhg95d#^hg ziVOFe(5*|w`={;4N}(DS;M2@-Ao}LB5U^lNk07%cSzhDM5l>Jy6mm1oa!+?&q#>$W zWNp5=;32%3Eu$dhb1mEbVmr-1d5-hT2AY%fqOE2a6$Kuo-5$JHU)3oWgBmEq^yn$-|5^cTj9l%*rug^$p&zM9u) zBKqq9&arm$3C-hS0)Km;+Jl1fz5 zi@^@t!@&(I8r$kvc2oPKltRB9Em=WpUKqY{!tdnzZ`E;ONM_?6pG+5~Qb;CS+bv*} zg=YMGG}mdlbO?o~;)-aD748UvvW};1;#NulqVpilr+V07eRPHa6&leyyQU1fV!!J$ zOa#tIVJ&|^<#I$LCNgnV7}ym#bJsdBG$bEEQ5lm3D<71`Vzn5TLu7bZ`~fkhG|4Zr zd3jxiY>ChEQL9a!`jbSX2ewXO2nN6@I6x&_kvUMhl-yfPj(EaGZZc;6j!gbObftDz zoDky_DL@MD12?v0V7$cw#ivu2kLbq!!h}Gj;u9S=5pC!C3_C=K>PcFZA{9=Z6*Bn8 zC^2)GJAIg@DFDCy7f;hK3XK7?I(03pZ*LQvZ*Ua*?0=M5i;TrNqbGNcgo?RFqLU>U zlf8W9Srt~e{dE1sSru*~-n%|NB{a}5Au3M+iJw;Gxc_J`ps4Eqn#Pa-4&6S4NUSu< zzxF$86PpJ1V$m7$KrF$av;|+wFcT{ePH{V4q|)2FK-#`4V6L7PgqU743YmoMEeU0(fM z{!bxXUn}wt*I;(rDSZC|&|6`lR$q zKM*5pi2At?&j;g5o?_?1R7Hg^FqRZfOV@kq((4-gMr%ar3{nQr9JA`~=@II^R(@6rfj1QT2#bb*4bkY+Et{Q+e_q+z@o6=bX#Aw$U88Dc9EiJe>5y9 z$Q>yHW#r7fQzboGr^P+S>S(_)fRgm1$~bhkCE+XS3)S~#EgL0m)|M1(ICP3tqVRmI zIwkSgSB@m1*LMMVK9E=i5otd|)Oi3vkr9m8j%XaDzQVNiv(T7NJeRykYmT-IrVkil?6DlTZxMS zJMDY#(cdlmei6V+vMOFEK6v2Og4?j)psyW!Md`pu1VRABrYyf1d7BJ`<5imT8!;n^ zIt`qhCj~ZhnBKpj)f!5_`;G+TTuY4G8#wmdK_Dd- zvcftjGNn&puB5JSg)&}XVWVHQOZ$y#Ug$%*U>Hu9Rbwo8^=O3mC)U(B~WO9sojsKGYcWXB!Hj5}wi&*6|4p@b0G%A*VWr|#PPQX^RhZEFvK zGM)vi;T{W-BtDTr*1J+%n1atpy=hNwp4_ML#>8oDyW&q^T+LChAv-=xTLG!ZGDR++ zJjO;>Q#l;Z$cz&oT~4}kR|&`9k$7TAD&;aq`f|-|z*s{*Un9EZd!=2nPjIho%Imqc zx*a3MdbgULkW+TyXU_C_I09a8X2KU@$l(0Q8jsQ35;6@uJgNM3-*H&rUShrL{mFbV zruvu*PjBRP73zjC#6ARZR%N+P4`n{<^>vH}Lro-33}~*dk5rZ)H^3o#`$fC=c)~DVE0zyFyn0OzBN+ zx%N?*KfHO$3(}4~QHd6>5&oQdVoe@n4>%EI56SUn4QUf7?a&YqB~Vyg{fbr^rH&4c zj@kM_5VK1k(e===5X(+>avmy}qsDh0H>R%`*`LIFo*xh`b)6DT<)}Cen=$7Ehio;M zJL}Jzvul(=X*cpoA;aQ+jL4J0-<_4$7u2G=L9)3M$!t6N zIvuOv^_9tTu5uUMmI6*CCEJJ>=ZQ31Z@=OX8m$-&s`0po+evTx*$9C~-i#o%MqMta zy7gT7>`&7Jc$dr`{yddzMbwkUPd1r*gc6k;RJwg<@F}~nlv}upp1brBAaTH}??xtj z9HxGDzl@B13Wcq|6DWCBA;McV3+s*tFPK{W)mnU%CX+BP^lzv1IKF};Y0|@2h2q(u zHvb#GJ6u=;pgqF2p+2?4+9B$b1-rL+vD7h(=#MPrV!|V>X4wEi#U` z-vfu-$~Y}7ck#S^iea>L07X6CLCQmr<6Dt%nw0r|DmKg~5Qjyw1l2nneH910;H1Fv z&M4q_k9&GFrW zrHq&_ed9JUtHB3ro9ufdhC*bjgLKW%@diU(Js0kAn$=ccG_gLT7MSrRgWCO-W&(~STK3uJs!oGnd|8E2iQny zhIUuBmiqyqZOkNB0prr*xIVrJwj{m|&OiQS;FUICePTH=ZyikLntmI30Pj4OY<{Sc z7K$FcDUOKJ*+*7p0j>g#nJp=shAZCJ7Yu#AcYOFhEKH=_Qr!|zq!X{AD0*ej$xV&Q zH0sPQt8gq+!czs{T-L3Yp^{bfUBo_PpdxtSXvEy<6}Cx(0XEr(&W^Z`e4A1TBE>6E zK+TLA%@IV0W$k{I7N25u`zd;X6bsiUw$Y@N5mmM!%&_HN#}>N8J%#6G*Es3s6ZS<@ zM8eg>sPNM1?b628GReGhE^`WKZe-K(>i6m3Ws`73Gv^9bGbV*yzB}3RC(h#^+N<`v zU2pgMKkS`l0X~2GI0Vlv^zo*B;dW-NW-Kq`lpt^jVIsX2v~bqv*E)*3<^egWQ)$~q zE^nF1BiIrFSy^ohyVxmfD~A#%y2RVc>O)hVkbn|;g>TN7VNG~#^hgKwmj?O!P!48r zGkFyTTim>74&yVVIG5LcBbMKziDZZ7+-sdRB?3M703V3K9ToBlD2LZjMPCv}VM*`1 zQJp;($ER$zoIP*XezXbE63xQfkwso(p)Bh@m~6aK zPU#j0Fy=`yJ-ewBKT*eVhV(9XjK*)1F%k2pbT#-R|8B6_VK@7fODS_kLXNl9)O*A1 z>tCW^Mdf@(cOv8m1HL2W_ni6>zyoWZXp>!U00$oWy{a3xw{X`|e^&xheFc7sHn0q> zrvwV5OklNS-d7vJuZ=w~))q}vd@wc%2izmqK}OfSOKCq+X^$$^1ZPf(3%!zOX?|QD z(!65$r!|7&v}%N-27t43(jCeLk~^Ws9B4|G9XDY5HRnLAcZ!T#{M#B;H@Oi~aI`UiFXpDHTC!AOM$#2ql3vsIh)TT*-!Kx1T)EBtD>sIM4^K0e9-wis z_=}xs2xDo>%5Pd32qu$_$vU0cEBMjAy$bJCscPy;-{=qhL7V8#?mix->5W5T^GH0L zvO_|=%T9M-bFFAPubtYWtg3?sPlrVK07{cAQvG&yUe#=Ul+PS!{V343H-oLgsj zk>VwsyUs04Q!%({7zX}{Fy#3#9Dp~#=ZN^^NU%YL3W-HPv{Uw67SCArT<~EUg-*E_ za+^)>3!JAfPBmXhMS6n9>x1IGW^1gMyJLx7-{*3@7sXwFAmoIpAMh3a@6c2asE_ayZL&uk|@fwY203E;Sg`hjnj zPc6{N(3hXNOP#Z8G@`^1)$JRznAWMJ(-j)O{-j^Nqrpzlv5~n4ucFSd_k3TQ)#R>(MH(JdVjHpn}GlX!6I&&!970RGk>e`Ms;&Q6h>FbB$ z=+vblHko1%D9_YeT|z=)86c{Ox`{jZEdzyj$Z$Z2@G_hPzYPX-2o6%#68Ks|3weiN zKK<8;@V~Y{_O(WQ}**LjT!7y7GaBoVU5jRmdD=XYyRc+MTb8rf2*DvlHIlkk2T1Ob4 zr5t|sd5Z4WJLR9y0^l?aA}-lA%YQ%M*-!SkdclFjl-Hl~qBufk9fsY7c=(& zKu9=7m6w7hGA7#N^GPK%YD>2wn#C$YEqasB4}q*nL9*5D5s|88HXfw#wXFG==XMPf zYoDJFq4TBoH_^qJ-(?o)tlR_qGYO+0AG(1<{_;hJ>Hq2-{#)+w|L;zk8=W9%{*Bz5 zg#53#<$q#lX+c0Hh>ibpf&R}QpJB=5pqw}eJb(gc3?gyPCsR0ZOO%*Jgn5ZG)0Wcc zx2bt%rUF9ae3Nx{QaKP_c*at%z+r(9QUyxY>%ZYRIunCpoJNWz5 zmI0BhZ~Y>XrQA`Ibe_S72FfZxrZP{An4~Sar@El(60MlwpPoS@S$l)ktlNt%f4xyQ zx8Bp&d?V6}F?@9gv3#WlXP+3WeU*CIXq$Gvqii0&Yuo>EywzhN9Jm$9P`?6)WTN&| z>6HVsE;m_~9A_iY6^@u$vTM8(?~{hXXaxW_99qB_&RHzDcUrw8KTrjXcu~jBB95Hc z&^!nx!+11;o2J?bj#-VPS2rn|30WgO>&>FEqk=h4(g^dJ!a&;&%v`# z4jeBE`1LqTQebUIilb%i;=Z9WVa2$PZ3~hf7cfzVxi>T>^gg6C9dp3)tGC)V@B^%; z5ACTqO+D*>#b;S5pr6aN@xJ8No}>sHmCriBR9JD@?Mgeh#AqG)VO1tJ^0BP*7PV7O zvPFd0q6a?gpD4#gL2)XIj?z002YpAUCQQ3Y5FQj|$AlSj0NKr#zYLXCenwjq$B4iEq}XTrMK!|E{%zZS1?5=Yo54G1p9Y&9 zt2LWb90^P zt)Buh6~n{$AhrHvBf4Q&kLKdrNlnB4{KdjY#4u6!)kEhLk$ z6z3$XIE^wVq4AP^vsc=Bb60eFvsX6q)}G%Iz}nL&1gy9#glv(hLIGlJ68KhG%gHeF zK;z^D=JQ@49^WCXfi1iEbk z(q9;5X5-lzw13*BxT|WIJgA9D_h(;O*uUp(S3ji#yTyw6N3yDusD$=X`+@yj2faxN z2083>Hd323I+#n{PXLz@sU9JO(7F*97AmWaTZXCHKF#1Bfid>19y=nR;c25pjY6h% zsD0Qm{_|oO^_W5FmGEcpvRC)-8VuZ*4X9ze(H!O^O)LWo%P5O<%1yrfnCdJ=eoGDX zRlOzQJk(c{zOeh=^IKpIT782;N&yT)NgRZGdmIh64Bz@Ie*>5>>!a8HL|2TQN(&tG zB(q^#c|bv%8ELjE>&Q0cx5;(=0MUrMAhnIJsi~eB(zGRi_?Fx(OUIR@Z9AtielVH@ zi~?{pR012dW%8OVq*;$ODFF}2!<{UpV__9<7p5=gx?f);>Qne|T&(LNsD?GS{J4f0shoGW7|mUr zDRziA8DyGwe&Mh=SJk(tIt3RgW<7m$-BFB%zyQ<>hIfJMOhkbC@+_QCM@f=7 z?g;-ZF}`%cBc69Oip9~^U~!c`9#RwKVC7I4u##a;jGRb#hXC)gjKCSyszOy9TH27jF=a*)>9Iipj%}UR9DUJ|^ai>B zB^jj1D*!!7CJ9a!*~Mgjn1(1hB*`w}8RT9G4nsqzROJ#?_l1M@usN&EO)*1ZXoPqBxp&ASpq0rnvr67k%4fCIGyrLRD^3~Z{@=_juC?yTN0HFg;)bFI z9*Wo(eu#K|NzeimJb)+8&FoCUJ*(>FfM)5_*n6L%v4=!YlJ(+5o!Ku&F1gqt^Gte1OCpnP1d_A;s z4+Kc=QV-KD1#6B_RjU+qC~i{yrgGTw*BkgE5Q27x=AD*BF}Z~+&_-F<+t=WO9)BcE zg=4|jsdpg;V&55PK&6_B$~UchVY9zEjzN8M(rHB^a+ zUp;ttyPY+f4;be3glj6?@k8cAOyM+&iOq&Vmqr8|lhu`DbgY=w z1N&Z!YZiHwNJ_zgN#nfhuaWg*QV1;8qAts+%dN|s<7eY%pll)`@RXsS7^>KfMr0;r z5iIbFs?x@5l+HgAIw;Yx;IP86K2!Qj+)zIgc2&)AfL(y%GB>DVS>x|Wp7<{;{h|{I z=~dw^#h}%l@NT$0JT4T4W`YqrE)CWj-Kv`v`~F`_zfDu$emMFCbe^)j3tII-q6lmdhmH_}IMfvlx$7FuU|D6KTI)qu>< z${s-OKoNkc8KeKHmfefKK;+PFTjMl|IzA4zdv%ete+jU}cE^G7sLyosAj0b|W-pN? z#B^u=6ceXte`Tlms0Q09JVdIedpF-^%hM7j1C0cQU$Cu1&6Co{06&W`AN?cxC(fF? zBeX{&$Oq}7zi{DXYoD#aEy%v7pQCwWjhI91oeALacka9OevNYHhTsDKx3B%mUGDf3 z-)Z6&*>5M&RDOoFbQvP?TX?$mi6c`r4qQDI5Xi01jtNZ0SY27j7Ah(kC*?XD_biv; zglSz%8zt&<;9+oR@mAs`5wCOVqb9C#Gk7T;mel|v^tw{Af9Z@0q z{tUVNy*2F6RVUR|*YeBg#%UzO7>5+35KGn~$}h924h9A}E#ZvhH=uSv{a>3~EZFJb zAD^4so&UYLmHijtuLeRM)a?fk-8}QTr1^ir(*GorYC$<* zAEqyR9o>#!3JJx0iL`mi#bM4ONO9OO*4^+i;feWcyAg zz{a{PpV{qYPNpf2d0KOm$D=)A7fc#V6VjCV`JE? ze2FiX6@Z)0S*4;$QCGF7(x?%Lhggi-6&!G3CTfBq1HK~E6Ae)B&b^xV8@#;gIG?=Q z*sl?HqzN@p&f#CI0aCDA?&!FFb4q1R)FZ?)3AqE4i6ReZKHPlZG$Zf0vVjl>+;NZ zxj)>3J~AP=&{MJF=Yo?L^^Mt>Bx;1Cr{;6$naDbM@YgDFOmsVe79u`Fq(r)uv*DZ??%Ut!RbdCCcU$6z~tIO zC~+7GMY6WV0UL)83ux6%^bz~>O%@R^s%&BIiTNwjd&Sy|?%$)Dl7qW*N1+H)w1&jc z4;?oKhy|IQpez)~uYdO(Qr=LfJb}?cX(;%HNl_A-O!R0{W^I**k!DSwzT*rW+Z`u{ z6sxEfNEW1j*Bx<)r{tDJCCE*0IexPe^)M`MKwI>ol!qF|~kmP;D;j4&@{(a&IzZ}w~l=$SpnzpChj zHp{N2f6g3k!jUE}?1qTB{0bLYNd6WCZj&gq)-+NwH^Fj(+|gh52S1>dm`;@H>aUo1 z$;i@LBOs)nXjL6}$$QQnD#8c%bR2yXExTAue{4UYlDRU&P{siC$!yFM-hIj%wzrDu zmKeun>1`cvg(<_h>KHKcnv;cH2(UR&YP$^7)NNj z2f#PrF^wU#Tp)&c$1$}j?E9_Qzi0Vv2b^5=(vxe6zw&D+SkIv$$`%##lG9iz2 z--FjM8Dk&C%+!1KQakf>+qnMi9U(&0oeb_xq#fF@iaSP6H! z7I%yanmjAi$$wO3#&Sjdjn%`w8+4JWo=Iu>0U~gNz{jSVQHj%qUn$cAFg8IT|F*Hx z9kWll*&_j|xIth6c$g7^+eKJ^A}~=OPAs|9shs!fK=eaM6(hE2VT=bVTTiqPLHC%Y zT!}VDv@u5b^~$3rxNHb6QcV6_$MfgRt&Ji1w|&tEQPK9JAOaljPC=QO6tk9(Nuzjh zw#1i%#gOFMi@I+g?YGz$1lw)jbZf7VG#pduG3_4J`@#1CIOfkM9Ki9mIgZ7S4P3GN z8jBl?P)!AokNwPwZ7kqXHThq}sT?TqdqVAuSXA?(haSQ7Nh-@fX%hq)1w5N>Jur&s zGi09;6tAdO1u*4>OxV~mm%gMvfs$oY%&LWbY(HH>kfDYj~leMn-YQ zHq6>#7ms4};t8*CB|3TuItKYSjBqX$1VgIKnX(6XBU~tlY5$l+DmwON5dRq8ci!`v z&NxA1L@#m*IZ$J_HAcXB-}=WHX{)TdX7zb@aQKhA1L!k$$_oHi`3V0@r;)+(%0D+K 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 B=;Z(a delta 184551 zcmaI71CS+Kw=G<@)n#?rHo9!vw(Z(owr$(4F59+UUAF!AIsN_by?gJAmk}Ac_E?Bq zGb6^BbFR4q_83w&84%>9K*7*}prD|Dc&u3^;t)8&{(VZZ02Tz<^z*5p!a|!oC3Jgt zIFc`fFSeHv8s(Gxdiy(%xVN)9Kxp}AJi3I=j4PayLm5e#jS?$+LZJ180yx)Qiz+Hv z90oYrf9-(K&?q-d#>bl&p|O>Iq-lxQ;FH_AS=rX5%t9^eDCNWZ&RM()jzW~9o(HHd zvh_iV^7L&&0bm(SSANEQMZOP>3$uYWE($!F*F;41O;6S3fRoHs)3cO^J#f8#s#|i(;Vr_wT;6E56JKGn!ZauWXRlq7dAl_|J%qQr%6G4hr#;a zYYI^Pix2`X)Hm(c*^mIuUoex$6(fZw{YVs4{)XU83p$Km{kj$>*31dweud{?BA-uq z5P#$#@#8=g*B z$`U(5CWJ?5?J{p% zXModa!dxOh>%) zNSmB_R?O0oK~K*wJuyP$3tv%{k}!!sq{?S|HG>jzRb;1w{4(Rl@Ipk)!xKFZMIrzI zwT$r6Ige1DA78-;M|TDX*n-R;;qxwho41Tr<7Bqh8S&A+R+$(t=a8n!V8KjNUhKO@ zsdT$o>c!Lj;EmJY-q@sIt<(<7lC?Mq{o~-{G`eI_zFA zOey%5S_%ithoB#3BX^o`4rISUxqr2FlU|LOJh!b2x&NH#M8nq*w}86Lx>KvH{QRxq zWNMujybvRY3Da$Z$R3YgHD`LZn9J+Bc{>YSfJeXNtwfC>m`Y+rr+%|KWw!}nSx(@p z&e`Kg4_Ny#5Z(u`0@GNjf+4LzfmFrlSHN)z&iFk@S4t({iR<*|1~NGt?PkJSO7sT1UbGTp@(1cs4V^)ri?c$w#DhH)03kZQsGG3yng*-lmJ^s_hmB7_NL0VeJ0! ze!58+bmUp9@s+$v^4sA*6`D9(m1Eg2FTAR zUj!Utv*4ky;WgF}PpT27F~hc|oT9N(9)o!^pw2e{U`h+8RG9wqC9JEsT9aFhgrRO-4?5@z@ji12SIWa#AI zOfV9GnvTgZ(2o7lNHB~Yf&XwdB$QB$g}W0F5Rm7e`@eGc9{?!9mY7Rl+nLc!MVP1;}5>59eP9DM4o9Kl71uVDSE#-!P3Q z4EcA^^vu75h*J2jVIUJGry(2cNk@VI@-_?>-`@r=x#qu(h79ujzl$dbP#OML`@mPh z(V+d`>;rcX=N#~X3+m7NF7*F0R0&BkN%7%9%GqyYvJ=za7zg%$jfCf(^XUG^9Nz!k zNWc;aaUlQfhxXr>OQrz-=Ld2^HXTHQJl)?dH`vqR{%1F_^m2c9V^2qy@&gnWJmmu% z7CnJR4iOkEfkzGxuzB8f<;+=P=W~S}9r`|IPC`zPr0RD>y9RWBRdoqckMlWyiPI6d7SiXHv(9#*9L4UICssE7EC&6-q8 zdL&~q!BIk(=5Z_We)%^(W1iFl&T%?8M8}R_zXh_7{2|Gv0l|^P+j>uX5Qx(^Gm(_^ zwtF5}^y2C%O!cN)BXF3WOVWj;*2nGnx@rX?O4Gt2!6-TxC>x@DRfnYF(9qeL3NtdB zBa)%_MUkVWX=+OE5wh48w5XHE1q!SsV)Nx?qNt$B3|Ja^s^?@L-}y-mzQ!JC@tBn6 z^UPfCS_4sg0b5&=rC}&T34Vm@WwIOG2X&b3M{*~m1e5Zo2f4Z`WYRP% zIoOI1!6(uc>XPO4RD}ELb|e{GW@8(Fz{R_!o+XSQ_Z(d07enpIkaE9&HH-Fdw~MyEAt4xximEhSqH8srP}%ZX7L#ifG?mUc)Kq{>-ray3*}`%8MQcKNGzlB&`rJx_g9-OBa94j{D3>l75zGlwrTM zl=bI#XT;DfmKgh$kAA2BFsu@+-KeXGvTFlHmduQ+=^$OIusT4vZb?^SGQV+~?3!IP zIYL$T2=n4d?fKI?A*%EAp>6Q0xEm;G2@qC{=x)S+^&B8knGeyLo3Sp<-I`vk`?+F7 z{sC-R{G~wmN-k6tt;%=lYFHdB=JfrEBYoLF9dpfmL#lnM5BI8Ie&1PA^qS%k)X)V8aumD<0Wdp8 zsTzaK(4x-R7!MJUFbc}520KR^zuS(1GlvUC)$IiVvLYAzart)5ArHPor??gMaFFkp zc}@fg#~>X?l)%=5fukP*UkfgF&9S=kjN8<6AIAzg>9RWlw=^>?)xE|^(V)(KwMuPF zyds?b28NPnE_`WJ0D5g)BLG zgcPO$c;mWf&|gs3iydfi(*_?caKqpIY(CEGRa!S0qky=JvhLpEr&V{^8Q@nRK((j1 z{Sjn$yA&1_;>|h52N{Iz0C>gDa0=Sf(Bi=HR=JHlBC#AyyspNcq0b*+SBd7BQvl=? zhc=~GF+ze;!G4YN%88RhD(TxDi_E&jj6rz9>D{;-qHXl%ql!^EQ|x0B$_a!|#D7$_ zCD*j`5gZ7J0^$Frvi~UUKbJ_#6bTq!!nF^40=GLgU``Oq1{6(GWVJ8|y(l+Pkl(O~ zw8&gD7O^VBd7h4BHP*Uk?}@zBuIuJ^2K_`RbG)nb(5%`Q$*=>@k!d@v#TdiN)Rx!d zmXq(18{g&T`@>aDH>f-KcG+?N3){Uu8H*#qI}g zZhLt=V2l;~s&=WpgQ;eR7oFRH$vn8o8WWaB%iuuWCr&TfeI(G}Zp;OoU7fckzek85 z90u3#LZd{!UVGhT?C#OOCwjrwU}@sOf;8T--t;qHqxof13$9JdRYadf z#2T)}+Vq7HLwb4QFl$|OYYNkJG#OSjKG-4W9=yb`y;&(U4mZrE)o`;?bC4!4oKmzI zmL&L;aYj>7KSr+2oO@`c-YQDPiL-)dU_c0q687A-oS31KpLV=)*f^PjL0E(f>b9$g zdDKiSubfu%(i4HA%+uRxb4}c02$nl{nDQE3Vd$3Dr)FP$+Y@#M;tI94d z0o{`rv!zSGiOgwptWD^Ky8f2z#>!=b^bvQpGC|H02M{%Jz1|*lJzb@82W28hYmU{x9PJ&uT%ITUI zlNg;Wk+*=5xmH>vOJb<))pou7u;bg;okw6juE9GaKfWrEL95C}}ZiB$mG08u05v4;8L_K-NT20BaLsSDp2|LKftgN^K2@kG%mwWfE|QBEA9+ZXBmSKb`a)uOAK*Xg2m!&nOetuY$C-XylNW`b zlxg|fuo}&-r<-Iec+`G*gzlD|MYuiUu}r}iW9-g>`QL%{V~M+Pc!U+6SCr2 z(fNHDnQ8q2W?s3q%ye;nvCeRWY$4Y3*2e4!SB*#_%MPV`AuD$w!SB9;-|Lm70|1vs zh;P`db=w1WD;^%;aRV@}i%3!D#eSWOGgv2vzk)BZ4O!1UR(6~Mu}u@V#Mp%6uASH~ zy|78Cx6W>PL>`w6o@Vbct$8U?adz6gIbK2B?Y9%y+6m6TP5 z9FXjGXyQ^yJh(x=c1r!rkZ)QJ+@@-tJWHx`Tk7_lWVl&Ln~J|c|KZfAh>j`6Kb%?$ z``VfxzsL&fR%h16@0-7zg z+DKq4gRM8L3s>Ggw%qVvH@*>AY5}i1d9E#gO7QaXX1&y}{&B!-5nsAiH`BJ?O}o-w zZkM~eKM{5~x?uBQQ__)oO>~EZTKy|%Owt+stcbLSsXIEx#-osI_W-J)U0r1RE~-8S zSPAY*!5D(n#hBFNigZv}PbY+??$Z#Ay^&rfjsn19nN`3{$cr%?I_JAlfUw9 zahfe;usNaE#q6w}8kJYsZp*BegF{|P!6HmYYvCIRi8v)sDc9%f-=!wgIC*o%aFi&k z%nKdUtBQh$@l2Sks{q*9t>f?|`l)62{#7O8^Yd+_p%BG^G=RKp`EMDRR>$*j$%P`Dkkv3RCSbRk5l_QBBFv{ceb#4P{7P{GO zRc05T12PKe=>XbZyS0XM&JNuOri8kt^DM?H3aYTSSnUbRqE*QkaL9U(l444h;#9_Q zRaJgF`$Z9Unxg)5iCzJ97{ir{9nSLv1x5XWN_~EWk=7D@e7jL~d3ypoYWI*7x0~$9 zCv@+hh^w!mftNDbuLFV#NM9^H>Su^;$>UA1b9 zc}k^(Tj(rpBf8UeOU*e8^Mf)PB`mSI)Jbq&y@S`-vd>@WB)Dt2qRUScaaGY0mOm?t zteU4Z>HznO64Q&Gbe(bARV;?v^HX7CU?Z)lu~fc=@kx@w0VJH^UG96Tnu1!O&G!yl zbKxk&H(DnH5X=g6$yv(7I3e0O7JRD%#SK5ckMLSinN_JTz;fbSoRN>c6791{0J3~t zs(A#uO=vCJ3eG0W8nclGF!^sDRMTcFhU&Ci-##jCh$r?#3mN1{ z*4%Cw@_lefuwg>Xqvq#zo{8qSid`>sf(u38V|En2`-xri6)xkGfCa`ZZ9?fIq6we; zf~D#_AvIzWLD~En>uI0*Q$sTD03Bt%^q4UY$Y8eBX+!It^oQ4iOE(As^E32k=ocdh zJ_|stpa1fifRqIB;=?f%+oNbY#G4#V36x)QMuLFop)l9=^#y?z-CrNI|^K* zkE0~VCmI3SB-|VtfGHenTgadT+hkl#N6bg|TR<%aluv-`T>S&SiaohbM`wsx3MypX z+`vuB9MMhLn0{1hMIom#MRitfvoOnrH`9g3nG3%!3$7(FtC965jt2PhN#88*Q4hdJ zZVlH`?^aG2!$Dex&S;r<;ea4Cl5yX*_jOgonc>K`*XxPccpLHBgTS32l!jb*9YWYu zi&56aHRxTpNV8o~jFX6CK)fc4%PN$^p7?D;_)%fzC~SH>|D^NlPb3&5aAGImvch|( zSw(9k_ffWOE^j3e{+VyoA?FQzfX*lk2>#0JscxE(^*d z2*yW^iWYw&mwWjXes zLY$Elmw^m{Xj0<_g*OVA)X%9Qa_;ITo0_T8$)p=56>x}Wl^k8<2Hzv`HxT!fvI%N6 z*g|D=t#4{+cZo6pL;c^Ob6~+H4C|`3K!{}`JPHieVL{vyo0=y49-|WOEJ*;{l{m=; zs_`c)%|GqZq`^FyMMb)oDUR;fij%41$l@9AG%d6$usU25`K-1}VGDJm`dSC$J?<@Y zS>VS_f0b(mn=I)HPpURrs?d{w`@4Lc1?!HYR;nAB7fA2Dbez>&p@F@&p^^-j2av`- z6P&d2CiT$QouOA`2~C0P$^oOXcPc z{~02+r(#$ELc|xo*>*#VUNxLd>+~do@O`YzBlywTs{e#cFy9wO({!mED~Z<+m~_dN z#v+Ngsj8?JI6pt>cn2~m`XXw>FS{k4@l>wc;=*ZT_;uCnM5ak&XlJ}=zsQ`NO? z+it&Py>R;)-up`ZwaU1RsWC+1YOFn=MKeh1O|&nyk$9aHsl$_;cM~h5D+&z8`Hph%H){yUg*(*ECmh_ju9NM2baF z>v|$%7aNJlNNxno3~~oBgYe45Lr!7$5^Jq^l{0T~ttpxe_Bm~tT6+XJf+9QP!&qp% z*A_2aZ`6w_!10#cuFLD#VU7J(sfbFKG z4CTa^7W9v)NfROxxYN7=X&CH5inEW5)HPKez7LwABmmg3;hF|-wzm@WhgC6yQ< z^R^L{UTBtw1#tj?D)W2-J45~vt`D1+g52Lc$?*#9GcmRO=uiN^gRLxx)*6ik>9M8@ zy4Ce*Mkn8+s?#KJ@YoExw;$5$kVR^>1^WoTPn+qraglR;jmY)szl}EhMVH6ayXBq_ z&WZeml}$Fqe_p-gQa%Vb+JMLT(8l?&wz!9DyHgBW$u$6YhkNOWSd2nY^-V$N6^_2+ z0zd2w+n&8E4cZddOW>*sgOZ8!O}5Dfm4W+Q0q0!?=G_&XUqARkp!kydVZ28V$2&+m z<@HP%jLCRI9&G-4=_TGpuye=P5b;?L6R~hB71*|-5G2t8lOS%GoxjnXaI3Ac=TFm0 zUc?o0UgAWJeZp6qgbG`4u0{I+`w#P+Nku{$|4F-_LH`ftsp|&$>pWiD?*5ytP5CEh z9dC)7f&c{z-yoYa1ojuU2L=282O=cI#3BM#H#L%>p(&xEA)pc)Gw4+*Xx9qsWOCVB z!59M5bN7syB_P2sXM9U-nyOT(eOVeUKT6FrmhwqqMJOK%viG-l>|WLG?FWuJ zxzi?1dx>$KWG^>QJi*r(P=z35;WPj| z#8K2TbVJZ`VtnCZMxnc{(Ws0I`fL#J_R^0-TM~q zlj1pHNA^k&IYQ2v(wQBy1iG2=xTyk!SPpCV3ptfjcr5uW$!@c=WJxYEmkSIAYk89x zJ3Fi_R$8pv*wY+MQL?Ry5BM1kJbxRnab}CJ??W?NRrn3iv4M7leC&A|MmTQF4{v_& zbRBwpWw8#UU-dFJwpW|ZK2%>rw19%=Km}9GXk=cJ_ch&cL`>heh+ZJiN=yUr8Mife zyaf>1t(huw+aZwcF4`L`-C9pO#H^qmzEi{=3^$lnW|~bIvzmL2oJOAD7t9Yi{%BYg zkuQshyjQhA&tKz9pJuF!So>u#{6GUy62-V-Uy&7ze7#FZNM2{As3zV&6%p!ZwFxCP%P}r) z5*Q;oJYc2)uaQSi;zM{E_uX|6$jdvm?>-Jo=T+Ru<=UE}%~wipX`v{8b@w`i=9Oo3 zKRa?v65Qn!!w|9w*JD;4?4Z!?_h~s$9*&XtnORqQ1m{(ql{Qyv%2*F*OiPnQ6Du-T zk2#Q`RD-`EoqrpO(WF!jV|2NciRs|lYSgc(Y0S^CU}o2;B&#zZzbdYTwBgLQq9(FU zI>h$0CE^2JzedI5XT7HKHO{jO72g{6B)WeY z?$kW@^pJ?MSa^gt+09r!VWmj~XUH15fKVC*_=+__4eIC&G^-dYdGnkXu%^}7)B*4Ka| z$qQ-k@vBqwE}j_B(+f?#znajzS6B)3`cyAa5KvT+R^%*Km-w0yxObswJ1!ZjXP~SQ zQK1OfSu?pJliFl!a%tl1W%|Z-nLe%e%|IIA%fT#1?;E-$Gk z+L@>}m3u5<`3*6}$cze2yEra$&@P3AK7XKgo0+r-QR4(qSzB#(r>oF*a~9i3Lypo; zBgv(>p0Vdu{f+&5oYvBWX%$@BX_sm^Rq#7X-=WPiVww5r84r)qFQv-oPN^h~c-!eH z_m8Vfi023Ma_Lze=}pai@2(A92W%?YVNAB0BLQxJtNgB`(RJF67CIk7z=zGs)Ta)v z2OLr0i}pHTc2)C-ikQPiWGEfK#PdzC$6;tbJrYtz-d9s2ovi=<3+M z#nK%)hd~yHRrP>^XUsX6bp+OB6n!h`+9t3SO>b+!Tsr}xy$G~PL`;3o2kT6=<9=;4 zFkZVLmurLw@>c-NpWq7SQ{a+_yXNv(`$ymx*H-~}B}YXhxU)2td#R8vuni3z)X(Z6 zp^ad*?s}koUMz`i)RWfG^x0r>;EKS85v8~a zCv|c_qfQ{(8txoSY3I*2Djx6Or`?h#n~@aj8guR_70&_nVPh+y!?Qu;9A6}S{W;10 zjdDd~ScEbViDaOX35~K;k_qo{n8cS+3p;#|#NlJ6%6dfsC`oU>K4EO<*-C#RJ_8dJ z|2n8i29AJGWe=f4m+#ITED3u`BUP+~uU&)ytXP6tH$Bq?Ta@e)ih7H2bADH4b&=_t z2Pf{m_ue7PC(BWy3vVmE(J|);4DnecdnR)-SlzoYiIAh!z}(3I?8ZD?3TEJ zh|!vUPrbmvZW)}#Jhh+96`NH%m~COT^Jml1EXnk5@Jb`HFNHDVn;#v4584aC^Jq`w z0Fnpvpxh+3v$E>`XCAM6RQo2KLusWKjj(d+(39uBkk$YpJ-E=*N2AK>^^VMJwG?4> zyqW$hI=~60m_s(Nu>Jy|n5mUP;wksI^eXcWM zIzGpJCnU$HD@RG2^ihkO|A*Ppn|Ve*AbD!se0_aZr3cT+9Eo42JamH-lGhm`@AT#L zup2&n#{Y8w{GW4Q=#+0Tu*eN)KV3opo(CiA$N<#Pj<9@#bzGBO&`1P@t2Bh* z#zAZiI|c-${gqeI1&Q-j=1ze?;po~kHU$EH&lO5o(M!;W)!oOl*(hc#HLe8*4LR{# z&^MO=6y@aRk3LK>mo|&YM-jd6e6OB#v!BL3&$@FqAg-ZoPg28w^gDxP)t=1+V{uN6 z#w8o6Mgye5G!72j>HK+M961~(ps&0GiN6uMmn808Gedz>W1%_cnh)U z#_g*xUd!z2#GhGl=`P(<(`R+z^Ex(naVrI7F6plF86LEr_Q_CByFKMW z-IuGv4XqVnofU#lwPI=VpQr90K}=>^A~v@L!=J8>W@|{?{#IY4X~~(nL4Z9m)=|SH z!&B41J^RJUJlV)LD7gby=IGXvqe^RzVr#RMhH)2_q}a%1gHgOW6b)x~bi2P~paocK z`IS%Z7RIKqorMYdc7w`^0e3#g7f@jq;}=r5{^Oe~miP`)KKr#29QHF-u=BsJLA9UW zp4uNZu7Q7txQYlOck$NWX>lLwVTBuA53P;Ce9qG5M?0*5@TE`w{CNh!*GB;V4$Tg? zG4O`X#cyPXn=>uJyrrevx5dc~;59fLJj#LRi7)^K^bViLOqt`LE-qmuiJ+oi5;qV$ zqB`{yR*ZTZ85g(8{>E^r0vD2r&fJ( zW3CBU^=G!0GofI#HOL1I5mWR@XjKf*9^qWOhkn#E+>$u_L`B{xDV zUg;S=c1A>toEyIuJBM!ypfejqxd>NT%B`o_;+VZ_R!=Ig;=9srA4V`Sb28m>uJwXbt%&bXAi07&A2Lan2wfT^Nbw4u1 zY|W2H>NHgX;|j!jfXZQmsDfN94231QZ3SY>Vu057FBG0uH;V7BN;lD^G0mjv!dZkE z#Cwj(b607 zR@!~Mht;wT;9^M?rfR)zO>uR&MVwJDSoafrf>;i^-}L&5iPP!yo+g79`j?X^`_XTu zEu_z5&GcK$0EFk*=AWg~fJ$Nh^E3V^GoFt?kb&7KK;%pm)8Qz}p{Cvo=9zj~WeWAQ zvI<{x9M#yanvyd&E8gn;jBqeP=}9dJvIg7Rbr~$ z-9(OZKNju+A3719o=8+N-XZPrws^LopAOVlp$O$QKpfI%0i*7v5D7OOL&V;+*;&~T zm6PZyx2xa8hSo5nw$Du;ikjvrgHPYBp6<3|pz0Om+j_(XFug;*?(e{kzG%-R37@LM zebM)590jGqvKdXJ%mqfO-bDu7_*=Zi^fSttGxFx~3dvjpGY@KAItk4l`r`&)_6~{a zj)(0&z@w5>YYZM1t)bZd2hWDQ8%uLrqq10gFfDbwVj(fU`NrrGF~0LOj){m@!2kdt zF^l;S8C~Ne*++{;&jl%#kQ0L6jEEU_K9(KL%`tQ1)<~=GHoQH)< z68Q+u0!_HpHy%p=15sCq!JfBvP52T45Rq|dU?cm6E_{RVbgAOm*7pP+#4NcAQH_(p zQAEY-tK!L#xUZ|S^!=KEM{+^V{7dyD^P0Mji$Lm_qGqsNC1hMtG2!pAlw0}!Wy>Fb zpyz+O1OHKf>;`HE`Tr&S>?t;2u&976)i)t9!=b(8M)@wHHv8F=xz^6C_JD>^!YCd<5kePm1ZtZbSnF&NL|B3)Fkh)ZizkL zJ`is8oDgmeXnA{U4RWJMt{LHla2r9oiN_kE2(F(S4>88e#>9=JGacqj$wzC9`YJZ< zi%s&8iyF3GlsfcultDR z4~uJgPx&Zk5>bCQ@X^ZQ#dU#V_!4=8AI214AuoWY#%EPben#4q9p3^N`@c75q(w5C zqr58)W3z>2@1oT$QW*q%>St?;;xf-u*xyA3x*!_S=PBB`Kuc)4Ch|8MLqbeA8%63s z?(GrgZ778pnpLKR!f_gqNod)*q}>m%{sMEEaefSaN`AmD4^`yiPw`q~>NNe`KTQA2LNijKDz z{3NlkI6)c-^v2!n)O?BJJrn74VQ8vbb2C{c+;Q1UHdIR2UY*_#5`#sWL*9m)R_2oU zXm_na9<5qOHWOR1L*upF1!`w(*ao;*c|QA+<2A2Ws&9ZGF)_j<7Y~ifVbi;!_~?w* z%cyb=JKuFhrq`SaUZl7@>EJyL4_WN8#8Ic}E!fXUxnG*(BPwl>RrAX+)4E{m=evn< zY`EN$O=Lsy-12Xyjjf{Ol8M+Z$XN1Y~H9^D2fD0h1YmRK7m!bqj zt}%DaIBmdCf%v)0udL$u6$^%0z7*@FT)(9z=Qc1b(#D!dnv9=l8e9;1g@RZCxMkNd z0%6KvLpw3brAAO27=BB$uN2Cf?0qpZP=?HX<^zH(c`$ND;ORGLo0k||)OGkcKtwhq zHWK1+$`~j@%7Fv9AA*Lhz(kDtDm|N-0qp^eK8=77;--E1lNw`?qWK>GJx6kua}+|1 zwlNPRB9JxVYHuEPCpx=$DTL*7CVBp7!UTE#Fiz=!cItPJPJTtb%bdWW#Dx@UgU;@a zZT>K^OCqzNora|NRiT?T`Dj-f5y+y36h*J(y-U=Ur7-7=yOs1iFxL5QGcbY46+vZ6 z<8}a;mc%XW0WIeNp0nv~;|P-=XUpdlSl^(wvjIYzNQdRF!uas~?G20d_k5H17S!JA zD~b#6qnLNN?a7Y$pU=JnYL47Q>OBfqg8N4L zxQB0cNBiw~-Uvna8OHci^9(PcqT|CXqIB|pIyC0l!QQg<@Bz!4y-F$%I zEL>ZP>STJD`oz0Nx8K|69TdFjnB9i6e$X`0(z%AXNhVU}yTa<#jwZ!QZGK~vGNvxL zQsekVXAU$@%UU8d03{@V8}NAIwgS4&SNzVcG-Oh`$lf+Rr}Z)gs%=K`TKkIf8@FJA z@S7b}lh`SlJg=lt0?-n4b4pBpCNN-@k|7MeKt2ga{vhLal6Z+;NlG`5y-SkTBg%Bs z#j?MGW!HD2#UizM_bxEu#cu3wI}ns3b)O&X#m<^!L94JEEUObgi`y@0(C#L|3>Ftf zll~p@pG^DB+gR}k1Q5{X|FiThg(e&v`A@8z&@X}wK%?|WqlqOe0v49U!RZxz_jsi6HeoGG?-gSDg*vbeiHb zyZX4WyJ|4=eLE|m2D>O2Z;AAzX72=PxI}i%yeuP2)6+^0(mqEidYJ+nlFw zu==m}VQFZtmknu!uZC49n&OK*h8hQCH-feI-_coun z;G#jv+bPx}Q|B7wYqml%vs9hP8t-h)OPYP~^YS>r;!K^%=8^oNk`jD03fEQBW02bVWG1mIUenji@9(PSSeJ17MD~VY!D_9hvHO?G0I3I0%wlMp7S)N z(1;BWXOBL3VA)+9CbPD?;x{f--+MEeJuM{D=j`uu&^e@R!&-9c52`@Ath;p`Td@ug zuXreLRWY|PA9A9~UcLs=U8seMQ0XY#HR;ITRp}_+{gcz4vNj$}M2pNeN*y!=jIJdc z6;(PrhH$Ss^OzXp&5y;}P3P6#75iiD8&|j3d<5#NTW2ZUBnP+LM2EYvcKlK7hG2yb zdbX=2d-`VcXCQ)j$$!Q3PvstjaykzDpP~0Ep z6n58u8a959Z1Cco`mv+pE8t<$%em|r`6g@e8oq0>7Ex;@z_#zl(Q_0HiiW0bWv~Mu z7heC8$BS^0iZ+HqN)csJhKQTAVS3U48X3F${3ee;GjWIDrmE?@_)^@e5qXSCV|LY92(3-@z0PzN4j_4%;I(Ni6*=nK z4}#;mz%(~$6EnV7E;%tN^{Onmktgd8R5q}GVovL3 zEvyB3tV~K@8t7am;p6<`kHK#r70Nq}*q}+~R5a!*S8%~IKwqyhKoH^PF-&e_e93P~ znV)4R0ubkjLGm|MpUS4pub50+;t2_DX2Q0z@&*6$UYta|BcA_ezYab@Z+5-|_Qp8P z*WFkB!OTNTY$@{|F1+`RB|4wd0X=GcFN~4KKB6;dT7(8S=#(F}`zrG)b9e<;W0=f{ ze*o4!Rl3OHiQ$O}-$`MDG)F>%y$au{>cFjLoKG9xdl}gbuSTg_;^!OB<-nUnEyxCxc`T&rPM7!{gd`h>4N?9-=4ix6o40HG^)K8MIlLE ztUNY1BQS1XJO(Crg0a65q!%t!5vv_dFEw$^7#0wQp1pN}R$!YvwFDA%6bl#`KT(}h?K*JsqcT7Fw(EJb%@hM6jnUC|ESp31) z*z`4T4j4yhnMXSN82~tHV|2K;yoN_4QFpAveM~6`G3=*(5Jz8W!s%gue+j?zNY%Od zA#|M|Bw!$$LEfVax4(0fsn2Zvu~4qH8E*RvxhmzbGg32ZapZ!eFmBq&Rb_d$*7KZTEchd4DYVi9lljSqp=VMAQPQ0maXYLD3OgaLL`c+R^6@uw{U^4-JqBQc@lmx~JA#U*IBBS|`nCl2 z&`_1%+Wv|~)gm;@y2g+@oQln$GkkI--;g?6p$>kUilU5Rwk&^Q91Wq~5=TJA0s4Z9 zu0W}`F`U|6NPjxvf#j{Td{3rhaLNt3k*_$%??j@raK{GyY9~GXPeEe%6V@W+Ih9|b z{}~nEfEWOV@An-!RrJr>hBwA{aw;4ZeVL>-1=7;h*2T5##+NEvX>K9PH+hK4-QWgg zZxXWG;)mv%SOWBwH}Rf&i-Syk(yT5lPRmjEwPcogiUY6v4HBX1L-+a$aKpuQMgQ&J&7rKKsMLTo%0eRt+ek7s#oO8Am~ zJ|n92lclp3=0(IBec&;3EKx|{mch9Ip4*J3sG4+6CqndHV;^F(%?=3->TIwd#P)8m zA0`H{He3%7H#J;uB}^GLvh|8tkypLt?U^`w0Y!0$@3zkf+Ii;IayJ@65*B5F35iq6 z#%oE!%~F#>oFt(1SH_`$RwXgyG#HSH4~x8=s*mG(-&5Q#OcXp4F?1`769?)-7xpsQ z|EwIkbNAc$^$e@u-YG@MVH`5ax0e-=gW3ZS#5??qLR%l?~?uDQi_Lc1ElN7D}`u;toos_yA3Hw-F9MAY?IXM}XXY1{!}rD$$32^YS}j zMm3k?qVh2618x~_xKmEoa<0jea-|xa=*l@#C%W#f1ZMxHeCVyLCRyxpql$q}g_ZBe zWb4L?mW6jyxkF07M~KZiLJ&2Uo|fUMt8_cwJY|Lh3!32y;D^JuC|-n9sUFX?d1X5` z#<%J1IA8qN?ydpA!XrTZF@>BIUw#%4{_fD@M-U3A3g&H5> zW1p;~dpP&I?W97fj$Cx4T3X^<$nH~A#~wWeGHBulonkCt5`Ml_2&ggE6VBrRA6%Ok zJU=WFO||ZV)c50tB%cEY{mfihx{!E{OndDaTdeHX_Sv-MzlbIfM$98=2M0|Bth`jH;ts z+C_r}cbDMq?oRLk!QI{6rEzz63GVI=!GmjXm!QElT#`3?pZ$INotTr8d)#EUoVqoXS{>sM?m6NmHGgVlq~gVm?i zm!}+oS5Q0Hd88^L>_HwiBg?Rm$v!vV5MJ7=8Wb^@oU2%sn$ar~^qBs8P+e*_l()b_ z$;eFy5!E9A2$4aTb6;2Zi9R`ox2|$Q8!6;fxrqzG1A6+PQR+mABq_kr#eu@MNKL-5 zsG7V_rQ{qHPD7{w+FN#<2*Hg(yW(&jmshM%y7V3bBddeTj>`J`e!d2kr3$lHlSH=J z@(A_-e7?cYW!Lv>eC5=P853NEftpMX&vLu)i0TdwcQZEo_L@>%-mafj+CV*>Oox)O_Zy*;qaDdN@V$VD$~O zmJzLnu&v;4!_B_!PAsWF~Sr|@vJ5) z096kQf+CX#O&f0cqLM!g`1YG+5s1<0Ig{eI6sim65%RUztvwtQ9^LbD7P}a5e?k3t z&LV-<%|B;B>QPqVP?uk5$`s$l3nr9V&9zTd@q`l2YvuTb`}KyTVL)7m2E{@2biySHqFjP7T0vb$ZL7qnMAR{ z1xRxQg{%B-?+Kuumno-+vRsXY$5%Ef(4Mz7d;`We_mVfU4UYUM%=gs@nIEN50jC={ z)=iOsmNifu^I(2+=*|E{??c1Ors-9d3HZh7))BGTsM(#@~5VhB14BBL?fB;UM|5#-~^IvKA!*x>#PWveJa5m zMuAe9&+D9bIBS~XEof15_FOvR#@ASUMxvgb#yQ<5cgdnY-I-cR_`ohkoA8#cMfi9ScP8gbLqAIU>&Q**2|XSoMb&Jf13q1E5b}Hu)Hwq;OH|2g zb~#n|M;^IzxEZ!E8;0~?Ya_VvI(Wr#6Ld{KBmNv^86L$%2@kC=Tami9?`8Q?T`kIO z1Vn-Ok5tm$UkZL;&re{^Wfpzw<==qSmij^@Q>#2?LM2^9$mB#_@lC8N@ZGI`0Hs_O{8^ATDS&cvCUQIPuG~z5=+auEfpU}i zO`0_1QkI%z97A!Ws_du*M%#l3U};fb0{W;mn>2jM^Ucyw9%C{>6&G%EE!>S& z6n7AY@f5FHhx>)RY8TZ5u`%J!&RaIMS12}Z^>lJzHLv|Rp|ttrYipl5xgktipS4Dm zmN9$tS~zPn4$F0pv`DQkH^*aWcJK0>y=f`&lMmUMx=$}YW{BH$*UFg6$-8s9&bmxD?l!eR)QoG6av!-|$jKY@V`mt8$Xw(;YlSa*j(>w?=4Ih)ghaSUb=95lu& zUgEgUO=PI!D}Lk3{Rk%B(T0haRO0GkqVuIIvU`{#a(`ai+u6PM4M8UikD`86E^EDR z?)I&=hJo{xjcmDE`DM>(%C3xeCPH>I6DWH)m|?ReI<0WaBg`5w(p9t17`C!tdcV@_ zAFMhA!N#AJGd;m6$8(gfs4FGD-QNN6?cN_Q^T&7p`Wb{FON}$da+}T{%jY-yDeA_l0X?z;SJ|w#%k5y6k~iJEJyZBr z<Jx+@}i| zZbfRsPq};5ar?KKdKhkT+zR8p(=c$7NveiCLlJM}x`=5#SQ$@*;`U}^_fBZ~qU|;* zvw7@}c13y$zBX9R*!IB*QpVX0)2+G3v&R!+9r9O0k89sXLl4VlJNPfSdmF&-9ON96 z6P};&qI2^JoFA%7cN4NF1l$MdIkpEefB^ZP@jkRC#ypH9F5E95{JPe1xYUxB+daUDcegUN zYFZ5z!K2>@?~DGo1K`MA>FKWILb~L~SjldA$vTj-xT3~g zZ;5Up_)wpSxG%fiM-SPJ0tMGx_t8J5Wz8)d68SyIliDN#yi-c5@1!WwOIR@>&Z&Am z1#TjFgIy6`&Q$1&ZT2olhg!Y1ROk^`NB5#$PnrFknsAwNyG(0B!e0pBk~|eXqa1WC za_o}^N$?HvA#HKBX3yD2UrPDJ+zA_2`H?J)7OafnGtM`&llx+K?Lrcu0vT$ks~*VA zej(jHN4!G(P95P7@w%wKAq0m03n7s5kI%(OfU?5_7!kmsB&CHlB2Q~b{S*wOPXs=QIrc^tQKmVezx6mD?iHJgDC4<3Kj-`ELCD-2%F1MQkFUYR%QJhC*{5L(8A+* zmgYD)@#|r-d;?_lqfS4CP-ee_K;OL*D~%B2DvAuV?>r%Ye|qqW(6ymDt1Ig&yq-23 z$43zcfFnRcU%KL1tDi5Jf2UU71*`8!%yn}n; z+qE3szK=MT+faVANbl{oNR}~;(kEXIo94ywH#mb(KIo}n`c@oq8+V38^z+bjb&G857a-sK&3}TX2=0)|K3@E5T8o^U)@V^> zwSax(jYp}G5*Y{}6pcOTL9c)4dSZ)fNj%+ZqYoOLaso}=IJbA5Zydo5}vytkr1 zV#Cx;6ki0){D8x!#4%!m8H2BWM`&w`l6$1JdQYAUUAPuDL^!gFO^HX!yT=mpjcdgz z8qiZl)`K!R^=LG+N)v9#D?+&f4bpFw;d4(6c3=y*ZYt^XSirR(Y8bnND>qOQN$tZV ziZq}Ny!!Hha)iXZWP&AOjKA+vtoShJBHJH;WP)srbv|d%X`|r@dPvk|(6Tlduqg5H zK1OQZ<>ZU?5tj#9woLxl<7AO&nzW~zGQdcb{u5M*I9%APAr$;~B!?yFEpD6GMV>}$ zST-r?$9T;K?|x)s(^T)6!nT(@vw_5*Ta{yrJ5M(%!cN2qt#fa8tL4HnH}0noryu?wvvfy?L0!_ijVoBcBnTASilgt zwoU@;?G`8~Yj&Tg1%td%iotd?c66sN0|tOVmh6UbgV}ly2A!|KBYO(2ZIggS9Evzl zxNDRDi*vhL)T;PPYQ{d<<45x5b19d&WoamRqeO);ql2~aaU;Xj zUS)rB?F=ero$xrf6IDuvEzC|SZvfUu!l6qTZD){Yo2)eRQ~-^z``EhA?h%N z3}-jogj8y5dryEq_=;uyax2%mBa8R``aXq%xSpty4=nJJ2bs~9i4wFJig)1J_He`7 zFBcap6fWC9q9X4nRj^zEg+_?3uh@oZtdCRWR~nsdE)USp{#&-JUk_#Qpn;gd+JpFk zdt9xUZn1l;+PAj@(~mQOiJrTu;nL=)3QpPOEhMN)r)+QGyff5)r5Lu7ey12P5(ESxQfk0p-zRjk4EzBf zr!evS4)lMIpaRyvK}bF}>_)RS)*`tK3Ue3Ptk%tyFj6!I;S$nr(=!HCQnv9j^|3~8 zC?x$sIiH`9!<_e!&;BgjBtghS(+pl06kO466KgU!Gjo23t#@bNJtwZ-k`9g>z{}I| z`MdSLPN-n}B1j^yZ~fn)_G^)Pxs04LV`BF}HRe0j-ElM=#`F=Zd3P?mAFDb@k?|#Z%8@-&D-QEJtc*Rh3m^bqh6| zS{#hfCHL~}Wr&qB=#MNMyVmCHTJ1*kbmKYMd4yHkO~d6{g@mx6dFt&3?GzBVq}&_~ zq$v>o335VM;Ix+P0tuEvgg~Z%jGj{~7sY`4$M|^Mu;pUfD#uP}oa^=5hBN~-j|5)DJQjld zdj|U-2m;$RB*zd?6-5wzRrQApC!^dHUn#WWlbmPkXKrJi%Za2L0Dy4%_R-)rILXm8 zUR4>PKwAGpbIGvHn&>ud8?)w6~DHA9!+U6PuF1O7}k37gsEULH2d(|ZjAw$8QW-bx?^!FoSCWxh;#1U8bQ ziM@BB>tdFBwzm5_`fL5`=IzMl+Z!0%oMoK9B8{|-M+B~Io~0@NI{#dzV%2E6Qx*;c zixQ;g>W_?4E7R4^`X`+^>XsaSntsBdJbi*&gTRHS!?%RQaj3oN4ENx;WWCTi!X{x< z$f0=EKYAy;$Hdq%0m!*agDT$ z-U@;jo*7?vnd0o;PcLCpV5ABFp;LB#^z`}4dFc-*>rduf_wPI|Ai*0$aEe70B|M>F zuK`O66=X7FglPf#gnh}!+4+ha%BXWx4?(h)Qs9JDb{ovVA$*~8>Q`@IG@@KsH~NTE zIq}((ft=XQ_mbaL#L21SFvhP=3+XOV!1TSUE>O?TQzvO3ON}@@n;>e=@HwPf@d0Bc zp7AJQri5gF4!);A49QJaRm9g!UgfK!ifSd8f4!4N>B}_m+kkq^=#-JZ?MVLy^X}dM zq6_{HJNX7-VEyoS7wA9LzJKhh4-70^{lq7fzXXNI+AM#}?VA{-eks89FFWnqu8`j( zf%T8m9)D4w_B8i@OmThesPDh20_hVr*C7(h=l>EX{yxtiZo%KuAG=3?CL|zh|4~cn zL50OkIVFRHNg!Cr`>!GBxAq5jJ4OaCxLA}3h&Lnq+(|2@E;EO-qo_?wgf&~`*!#P*3M^)#+!7wcWZ z;^~E;s57F)5tfLx$1_ApOpVbq1hv*!xLnpjijP(K{8o3`=P_R<#mw5G$IKdm$CM<; zDoQ(Q;28Pjqd=kf*kP(VrjaZ%95j&~bLX9N(4pJ@xCOjEWBPjE)A|W@tore1CT(TH zbxY==b|-BCN#H5n(wldjIle&M zptqUQtEpC4tvQE(pDn(c?zP(iql0i79Zl=%RbOEC|F-b zD%Qm;GSDr}b6MsMXYGD!)k8n1EF-Z5SoW(p*@D1Wf-Vayr1c(*G3gdHsFSNrA|`|v z$~eDEHJ&8D)gxV^Gv6}7c|Vj^9g>U)x$jzVhlsp)Mz64QoH&VoPDO) zpPo;Fc*O}>ZO7Bn$C-HT@e%na|7@D;1~mDlb&b1BN?aP1al^6+rsVo6Iqn=vp&nzs%6WfNpUZib~uGEtwIx~$s8J7OsmNsa?-E>;7WaO2k<7zzodL<}rt zDG+O~(!W(`I!ldh^Afb1B_-Fd+f4L0bB}ZZTFv3#g0ht)w!ij4v~TY3zW;G5UBj`Ps;_J1lHL4WpnQ#^d=5#;th8(owC@;N6teS5cq5=aO zY9i#(5t#hF#pJTvWKDzng3R8UqVYs#fP5#6wq=A>RIeCcjiA~N#!KC> zPIlIf=`xu3seveC!5r^SjP(?-kmAAPd^rOZDYd35+o)o*Fh3qCrP0oiMDRT~=d|s- zT$uJH6Fg&|5ZO@oQ0Mx z*zSJP96?9b&n6()1@`Mi%@$UQH{9qxE$CiU4$WfEkDh^GxltQ&;4ei%KJO5<$2_^v zRfz&qSBoFM4j8YqP;(raZM6iDCIp1pb8jQPXUy|!b`J*K6wdxw1u`s)8-Pbi!3>&`u5Hi+Gk4+xL(B zR?8awKsFV27{l4aoT>CWufvBQxNF&sMZP@L?&(?q)qCzVI3xPfcj#p(@Z(fGNQP1D$-Q~$M6Ax34Wj68n>$8V5cy`+C zj(JfI@8mPV=MQgz3RD4W=+#>>S?a%&NPh?{-dtr$G#o5Jy>Y?WKaMq78stMl%@p3h zxtJ4vJM=d}$}lo4Qhn36-oNhqw_~oanZo+(kAKrMrx2pR(kIMLcKj1A_z1oE{F*7$ zgqmuIgvg@5F1m;F|4365;b94YPGxI3R3Rjvro`k07&QnXWZ16HI=fzwbZBs2)n-a+ z4ICc!Pe91L}DpYqSp4cv@Ca%{qNs9bGo~{ zA??5-B%QV_K$*0T`))|hZOA2C(1%V1Q^O43kcMzfE0s!tLyYpQYh`%=ug&{vdDR(q zD|L1^8JvzPtvZ(QWp;5L$C)_l$*H&xz#x*g16}WwVq&zLT6JQ0~;yn;%PwgbfAvq-9=K%^yD8pPw(Mg+MnW>5j`Cm#$BoaQJ=?#n#?iCiWH-P zt+KPY{+RrO14OP5!L>Uxh`WW(HdV0F1bYW_P^)!P!c<2}Sc7#@vFxtYVv_C!-x|$u zv<|M}H!sTg&pl7Dxl7YMRtyeDr`SxF-?shIwmMIu-5J*q^*?1l9law9LW?er{mK-4 z)TBwMxIRkB4TpUMnBu7#8#S6llo9GweoOvrzbZo%(uyW)kWB=%Xi^68Vw5Z{OB<&0 zA=wF$XjH~J*&%wMqyC&xcf@|I1J+YGURR359dOCb4qRZ;Y%BFf_PaLL*MKK7QSrlr z1qlBFSIR@!N7z9#S!>}9n|L@J?5HeM-JT|M6d^e?@audarK>a;M3zv7B>z1ZI=5#i z3UBPMP>Hr3mM^FY0kvKCrcOR)#AN2+V#78{`FqeAyuuB73*z>v*;#|WO|piuCh~kd z0rh!9NE1X=JBSI&NUv<)NpGVzrcr?KZQbdg1W1GW+mQ8F!$|8A2^oScQt7a5KOzd+ z1ILKO6^VLHV2K(qA%fdUojQg~Kx6+Rz5e~c zz7v#mrnWj15H`}peV@CALs{Y#tMy)jrxFb3AH*SUj`NEM*t>Te|6Qv64IlaYJQ4tj zZ>2mzxM02xDfc9C_bgwhe%d8Mh}t}1n6h`sdc8L3smzq5`rBys7+;ZF-oY+8QU;<* zQGE_mC=d&;uz!vbFy-}e_x1wyg;%5NaR5;P|HKiCM<6nDfD`3gr(CLCRuu0CgF8c( z-yb}#&s|Ebz=Jv3E~wj6qs)cMIJOOtbjUIhrJxmt`HCJ_9KVOf`(cuo7a}WRmQIZ{ z)nK9HL^eXn;8{4yH4$(q_P&i?xx(0rIJ|>0cBq+2h3RKxG!^shy3QV^ai9L-SWM>A zk@AOeWO8%CNW~vLBQU6TiwvWx>QdZh(k)Xl8mKD|B=*7c`<>^n;_!jz`tQ7ebL%9? zIVa&;z%8Q6CUCX(Jp?aews*Oqx5Kv5=_#O`puL?=+!cJ@iFcTN&%?o)WeSQBdtG+K*`qNGo(hG?uI^#UY+RN-q(d~4FDKkh0pS|<+RqSK7 z+b3UNqT%dqs2FA}5Ir6k!&W-s9ygl^#<&&9REzIN$yxf|Ve=x4W5-;nlW)vJCIoUl z&to&Vzh5=yO1?XNdFz^D`S!Z`KbiOcKz>rD5Mf~xw9Bx7NmW!;v|sp=SWu`CXtWa6 z4ao>w;u-_~fo158QRHSpW`zPyP+)MfCfi0|zP$W|bXtMWsPc%$#k|eLkn)TkvS~Z) zo|Tc4i#fd`2T8!98E}caJ8M5*d-A?p^VHp691`FMx5Ls6ti?3#bHhAmBk?zao!Hib zRgf6dSLl5J7}2!MdY@V-3#q7Nr1K;Fr7xYt=;@`898&T5W5;MwB6UI*enDsy~=yiN!MdaU;LwWcjPpPpk6c%^bPFllaygX>c#9`So`&c2m zd7GFpUn$*YIqIyAeT^YghxHvti>iadE|M|zCf{Qn{)I$0ErZ%->;c|KccDAmntWH3 zp|Ld;D2|I;xB}H6W3fQFxuP7$`Nrk95dQLs+&x?#_C04umV}v9j9=z%ZGG^2=`sx# z9oUXFgXmB09=F_lkFD~t#v9axakdSw5I?)Wb$k-Zx6d!pthkM4)|GC?+&(Z(Ipmt= zAVG5I5baOOx}0kgoc*GsM%!p7cr2~3#if{S2`s~cwl{XcB*Z6^Z&4K=nnbY_RqRGD z?_XP`m!ajM_Jyt_)F;9g>5y3 z+jr2}8EJl~-UeTnucdX*`Wo1iz1$*)A!9jVXRPO{v^r2syHFB7S@2!kYl8Ko%;Ye7 z6EK?FgbOj)v@!7QG~tVsM{xO7Vo&rB4|L9|&O=2eE#vd{^_p=T3`bFIQ#aw{eg7>P z?%N}+bxof-D#q)`?yxS?m(tU!V$Q{QvHuym*lJ8J)V+fIlFwDlMP}DxU zhYC+TJ^d+=;!;&_kiTB4BnTjjP(9Qqg?ZB?rq3)dPwU2V1Rl5Da^P{$*yp`JyFg%30sW{0R9Ke?cHnSFie}_ z2GP_j6te8`(sWO`y#E~%+-kMtBr7t@r=bP{#jv!dH2k+MvaVt3Q1G1;_kiH2Y9m~B zE^Jz9(-Mvg`=D2air;|cop%vR;j{qbjweH5W95nVuy`vmOe+VTrsxXH8wv7DuiTQe zF?@SrM|kwDECN|5A85H-X=g;ZvXekb*deu}Ym{0&dTPJ%H{{of&(N-;#cnv&4hUCM zJ`2x&sM^3EirGi4lEm80FhUZ_^Nym8j$aVDh8tXM9qw)#*h zmU&hn_x#0_yVH9^vPIbsZlVE^%X7lDYwW!JZSTPIS=Al5iOX#*@Ph}Q;r>#}Fr6v8S{U0Muw?$S zEd{h2tdhZy`_PdT^*N(KB7EBY(Tm_IJ5j%MCNM=I?{hZCudFbBr&!wAJ5V$=e9hWI z%FFmJLeF35y1Q7_H8!~_#u4eZ<%z^fEWk7xqUvNmUL!Q{TD}8 zq=#DscD;7L3-M1B)r9=INvy1uP17dS zXPe!%iOYJGfsCm$hFLAD;QIGe7-eKHy41)K#QP|zAvUZWQFfQ}eqNOwud0%7yUn%X z<9ehayG|9dD#IwkS8_*|8n@yu=G|T%fy5wmp!L{LUmxrjvh5?agl)2WUZ;`#0@9l@g|>`Bm$kGrtt= z+s%@mGs6f+XElOBNQE;#_MzN{4x6=<^%hl0-p=UsHh)FVxN15xhHQ3hbG90whhKEk z3dzrh&TwKige{$p8^BnX{b9Ftv=qfxaInEPqh9mjG6vg`+s4;RF&)Z3nirHD?GTRR zyAA53IN-DzD8A0XLcwjL4>|wiB(9L(N!!Td)GJqCX~^2EVh8nP${y0yd9}Zo`|Rq% zm+w9@=#KXI+vl?sU;)jFu3GD$m3<`&?LCGroVV89 ze3YPdQVa$!->g1&d{7xg#oU#UA+_3f=qvPJ1u%ftfR0rqDTw|`KHCip1z6>aK{pGg zb@w(o1Z@(dh#w0lUUJBF%creI#v2ZD^x7_H0}t@$?S(k&uggusd;_FGUpK>cVMXHOHmsPn=U;TD_KY2)p}^Uv>#O3{Q_}**4X!k}*k^@tC$tu@mjE;F{*D#kMA2pr49I$t*Im02$YgNz3g>Z^YJOcf3u;?=zrx3Xr zfAkOTtl(X_lFW}${`PYVm6RxR_7!+TWwmLHb2FGN;8E*y-1O2&qAAPLgzHHi;j&nF z2D-=r4iVc$(}M{M_H%r}3m1GA#Wfxm*bATZPO%=o7s=*j6INQnl4)w-lGo~pY66@X z$*IyEO#4wm2Kr&wQ81Yir5&Gj^+Yn3HPUTP3`>KDLhEY9OAPhn6$)!F)I=n+dB>fQ zV!57dFMq`V8!2Qn#E!KJVm0aXUp%N2;hl_GXQT8t>D^spZqIi}*Dx@T>X6(*-{s7n zzi?)X zvJa-NnwN${t-y{N1lEPG;e0JOXLdL@bpwgR>U3W5k`*lk;bC-xCnUTOA`H0VAPb;9 z{n^5M=xYBY`4**y{TEH|@2(a9`Vn}SVham~_ivkw4HT*#D=Hady?(fTKPE(9M;RKl zZ_E`@;VvpfhJ>Qk=qu4dkW4~*k{w_=X`qo_RC=`QWMAeyV_)`j<^qKAyO?SEqef18 z5%4ueMrHCUyI;xzp5)s_*W}ac#=!&M`Pr}M#TSBi6@z2~{!1Al#3wt(-H4FSc00L< zA-n(&@Rp{`dz4(x2vH8L(;-mAQ4DcEy3_YXH|T)7Wd5qN-9fsfWjd;7kxCb1re!{x~bVqVP+%%%hSt zA09`v$#{ISzJ>ReEX7Dx>Bnjl7qbziRbqy&ME(L?ap&6kayOw;(u#z3B`7el z?PE&@$J7q&IhzwXlu9LuwlGN5BcjPcEtisKDt%T0ruEp8}*0JCuD!RJ-2N%s^MqGc(%lct1Mkz=WCwVFYSiYP@V z52SmG#F_IoEFZyD9QlG0{;53Rd})>#wHtT%*uVFpVkQv;^3C*mRpT4t^^jLo=`P{u)~1HL=09_O%=V(UM!H zH+*xJ(-X%-cHl?OR1WAf@WT+<+vELF{YHR+7=io%oZ#{pHogHO&y!T`0dWWscvu(1 zJ8vh4S)GDF=Geq^&tZ9$)d0&(H!d}C%dpsPF=U+(f)A7hMb#A11}k~8ZpMHG7<;^G z5oZFPkUc#;a_xH9k{>To`DbCo%`^KwqfPgBwsJaDUf8?Fn*iPl18Y0g9f#;Q<`rh# z`o6HVkoQ&&&w!i?|FUKh^zKHWE$HQvzweXfefcP_YE^#XJp@M_haXq-W|rXA5*XSI zWhQJX*GOzx))ab!0G$IDRHMHs$&^gp=<;uWIc!>AECm!jUMMr zlOB42p~Ui&cZu5Oa3p1qoIpdc*=(Tvmabq!GG6*JWRx^~_JY!oC!3aQ-4SpNTeYRCHDudD)Yg*LRjDvgJ1(>+(tu1B*DY;UyuKH^$g(8c z=@{1?5Q;P@;?q_e;HEP@8ALferad+MLW^$c^NWNs{t3A+-jkmz-*gt_2b;s;mrnX? z)bJU#0aUfPV3bE>QJxkZwl5~IGf;K|mLIigN~djplvvKOrPBdQK@!gxQTx`3+X(O* z&8(ZQ671CUDxw~RYM(^3XmZt3KIC#!>p<@HmtywZP%M0&h?*gAO1!ssRfviOll*4& z9=6kkK^KctX}3P_V!J1A`sCXLatcnd@0{T>7s&S}mp-ZIxJ|b+Vw&XXXXP8Cnov;M z?61;f(q^?gv{_#)sHSElX>rHIE@8&LH9&=<5~Zw1tjPvi6B7`c_0tOk?70&0V4;Nw zKYb=da2ym3j4wlFA%!tiDh8U$51x0JcYn8IrOc2l(Z2l9X>+I04S+B5g2 z?vqPdVCXD%L18(lj7-C1(^2}DNdn|^Ate?5;jM{4{x z7!iZspP71bTl!mo-~e~O-u%y#ahr1er%Ctz!d0=dzHOVVr)XYrDY_*W%9kfoSaB*# znJr`r9m+1f!)l0CkDJtH5|2UD-a4~JZJu03Am{X{ubBFDQTt3`&ML31f5UEeZ$0^; zpw>`RNYr5aOD)M2pUX(>>VDR#9VnVZ7MfoPMAwcrQzS+>q?RyUYk}pLW6j%i5|&YX zI(-cfEUdl{U|?9RcB z0QK%AJ?sMe&wH`3Pz3x z3r+A6yuFgh^LKos?x|!7r_FVVA3enFe+X@rVvk(Nn=$>$PxK3+?G|6dE5^xQRJPNo9D1x#d}|_BK*!Uxf`Ycj9$^ zg@M!Q=AGliqOiLMEUOmkTjQBI_;ioBYYn1@BL|I_)+7vz>YFOP`WZ<=NS>X_F;;9I z`N6~^Cyo@m*8xBJkzXI7e=%t(I>5aAK%WvJwKO!}{`2JxGA7Hkd25iY2k{Q^f9LzM zXWrU={q7r?K}+yYh2`I64A1p-k2nDFY-)_!t(2@T$g4hi9M&1wc&td-bdHy}8nTi7h z1@Rx@?|#wEZ^FXAwW>e;qu>5VNtxt@g={va2QB&EBh4TNAftaPVsGs_e=h^MnH3Gx z@~@?cYXzZBVMGH3Z=S#f?fY92`;AHYv*2bjF3`^Z&}?=g1!euK^m}Hrxfn?C-;JAp zj`W=d7P%QC9pu|TlbYXPnEij3)XN6>&y68W0(nbdkiVre(DXt6B65%!L77szC}81J zhCM*4|6Fat*5z9v?zb*3H7r`nS>RuJ%AXVc8Q35PZTjcV{F#rB0}G$PaMu5i=wE7` z|JFGB=dYYdnEzOas1!)^A9<7XTl4OJG=5+I@6WLL!4SmkpSG=U2wZc_7*=H^CU zh+!1Nq%%@Foc^@mxI$Vo1olC_EX%v(_yebNDv*H}F;*LBLf4yAWJ3~WD^>})WLzM1 zft?(nnCKN?_XG)gZb=%+VUOM=c?1+b-*N3&uk&u~YhQf;y=^xNI*&WqFeU`_wAgZN z;8+5^IY+D6+vG(~vLB6>?xx0{jwZ@MsLqBxHS()m;Ii3!q? zd{i*nB6o-IgOF8_vk|3g9L|ITdpk43?K7Y6CTBYr)b`vfE2)nfi!657D#>YZbcePT zHY_QRw~lCT;$)+6zRgcijZ9G4nAW;Xd>L!B#du0q{ycuU?neQ69x?Eh_`=f!1^{}D zo{=LiC}@YC3MOXF`f_UVU!b)Q6e+j7jinMZ3t(E%?;D9jP5@q#nlM;c7? zRgg+{KrJjCPvaFG?1``K$cLFp1x$X}6=93xCbxXrS=^A~g=PQTJQ_pSR%bTARAI#x zT&|-*#^8<}ngtru>S~PVPypT(DcsFLjNTQt2Zwbea5s*H|)`gf4FH zJODkHFki*x@8DClZ3-4vEgYR&>(B8EnN@igzt@6pK?$$FQCyEIRJM0=3uwf{k38dD zhD!UivcNd8h_XGN8th!Kb}ZS%u??E$FKtAPF~(XEdt{EF!L=JY@~(gEsyZw-wmH64 zIqD#r7NxeFeYFh%L8?@0pG^=e%rWe|AI(6Ba zSLlzokEzA5MYfwiiuW$G60pU-jv&HSf7d!Suv$73Z8=-(8DVWfFgM;s>YO`b}NLfDZdq}cARjXEzm5EwFg+XC*eaGHMKG_%T@4tYIuza}%Wf4xtjxPy+$mIHpQac>a0^QE!?1i((OqT%Wi>Ci6b zEQsc}Iu!Et?c72luX$XGH%}Lc**k~|iJgr=Z(Y8E^E`Yt_r7QUPNJx(LKZPq*=fOPWy{>-v(y{FQH-m3W6x}X~1urw^vDj6ija{ixvKdl#fLs{OY7si?m2qHL-sN{1 zet{YT3mp}*N*J-_uU8^r-v{i}Alij>M9|%wSyDyII zM{k&jkgwCL^WWo~7sU0U?8DbT5q0%}9|~{?U6AL8j=j!J+_J$}hIFDrkHR1kT%O?AIhT zPPlL7nS`cPg+V=ItAeR`dcj4f)3&n^uIP+5sgq&**tS=56bX`~;06IbV6NfHiY9

ZTZKYkqA6*o8X!?R;s@!V`fev8_dSp_3%nA;EAXz^C-R-8w%La#T z)*7d=$8~i-zGs+k$l3o1)ZP1Z*T-I(ujXX;LuuP@+AyHetDdb`COb;Mp` zrYsUuT;EzkdhNexp(hxAj z^z5(0%OXU6G0HU1@M{9qXt=ITr<~Ua{)U*Q)PYDgsfW}(B=LIRbMHP6CLg6VEV_rV zaUZzx8q={iLZ0kak3WtV?uYZ4x?n0|)9Mk0P==Rdq=@CA7wlK$ovn!`V6&272}tjG zPP@$4Q`|hG5@v5D%eiseT1LIYSK*_l=?D1wEVl){^t?~Qn&AS4X)pNEDns6P?R^!S zQ>e2_SD*7n5f6?k>7Pr%H|D{u69w^1R5neOxc+s|R?#lSgf$ zxp(D#bc|$EtCn6^{558aAa;M2ecIhBnwu_BF9B{mriJh=sd&&a%YERjV%I5Q7#c8C zJA?f3XoiMV>Z&@{3;Vs77!SUU-1L4N*&Jmrz5Sl!d*;X;W5P^H9OMa7dFFyvl-X+u znip82aV-L>k!zfz4-?||l=a?54rznPb+*$7?ydoLRQ~2l-f?!i4hH~qkY6BZ)wTv@ zo-e~;(q`rwrnDMS{Az|5ytC=E7CoT&h&sYA2JrMPMSyIWg}Mi6sWSD-Uz*8leIxn& zk!o-?*HySIlT7VP%<8RGphs8C&(oBl&(7pE!%E4*b6#j%pK}n|uDYS>QzL#xUBC%y z^u03q;zDB{Y#^oJhh_}j2-RSLQ|RKs>TqIbdiGdhQ}{ona^h#=_GR`&P0`bAdPY;< z@%J^~BYb~-i^$(zl_jpog5SU*Q*ZkW|7V1r@&?8JkH?pg6&AhOWgdj@@ALkKv;Lo> z5GlFruyD;;w;-JVsJvm$|F^~qD=cg?!WIa}|5XE;<4uF)5k%wvW9==Vs_eS9QP~@i z?(Xi8?(S}o?(PnOEg&fkvZXsDB{$t64Fb|gC`d?4BWJ7lJn#2@S+Hs$|nm=PZ6E;#rb3?hiu(OXz3e(OpeL1FR( z@zBWhM_yIb+U!}6tfIz1ZnVV8qPULQN}b|2_6B+4yD(qn85_>ozRHK-VMRGXLfjzg zSM*nLT>!2#pJM)f9Z|%e&(F5UC&q3kPHZl>9)jKAx=rqs1{N7`gz+Ts$y|-xAN($5 z=u9n6t?AUBT_b@~YB;ZnQs~nIMPf>ixjiTQk6Ah~X%90G&RQ5c!(F+q(Nd0N-O(nw zu5)7W{q8$s$jkf~-)H6>|9r#1yQRY$6o+bJdkUYzcfD(<9NfPQxqeSxaixIce#ae~ zdlHZ{EQDmRGZyGGGWA`*@NJ#FT7YEfv31hZ+~k9HBzyPXl)CkS_P5;Rrd*c93` z4m>kuiNtXQm&`MG`$_x{e$o=nMeGE_cT-QCOYJjx@Wx`3XjJB&KRf01WG%EkhZE6g z8aJ}Apc0rZrO=)wt$P1P)Y7WRV2YQl5wWx|d*+NQI@Or_jH`%Td8e`=Gy>ae;-(;p zV+@X3NL5`EgqHe)S0Ib4Zm0-yQV$oFPneJz7Z|ZH70l(jbdMyvMLnFfi^-lxyj&CE zWs&zH*$mY{-=oWAc8pkV^vu4Hzq-^D{;9e3`AU%qxBn4R*hQtj=6hdm%W-;wXAf8b z!wpyhT-j5|HU;VpPRy2Hu~f;h%0m1B9S0imI;X_1}ou3 zkAsj)6zIk1s9gb9g|@-gs^be@N!7uXrnoVqua-1oy8D~(T>DwUI{g~4qiZe|HyurF z`sU)ie$Up%Sv%ubYxX>L61A&x!%i>+>ASEgsI0D99`7d*3xZx%Yl|2DEDglqyywsygotP%=DDg6CefkcMF2U}`u17~YVUw^B~p!W2Lr;n!v4u}jDM%I?s}!ZPJL%= z_JmthsJ)SdAydGC%;yY!Pn>TgXc<;?Pz(<5nbPHWX$sDYkBabVj?UIbd@hB=aLXI) zt*{BwZyhc1K7--Z3d0)M1wovyLijGTo7*7dGu({Em?jbuM!3t_AstS;tep>9R9`(# zSp}WGAO#W$ebvY}dy&1o#ie!ScS&aVQ&-`0Qctsfv`53c98$I9jt9BrW=~zRuQU^v zcr(H-vGgf{nNs0(DGL*RxQ7{fA&P>k6GHX@a~e=<8^ibszrBF!Eajnl%S+;8OrIdo zz4mQF`4hs^%vh6a?_>2HH>`8Xo^{_j)h?$h%oe>;bjXxkrX;!kc*CJI`w8L_j~PC% z`DOV%S;MIjb>|zoOe6c&;U6X~uIq&K^P;}1?DM)gejdg7^z*>#pD$DSj;D$m!zPG& zB?=;+6vM&v!jjB2vE@r>F(KGFBj{p)J~nCRIehPrXpGB8qB3YRkkH7l529!7h4E2T*_&1{RE`R1TZwdZ&`4M-E#oRTgq^>LoG-O@%6=u@gj0GpdrH7 zit(P?e%qCZ!|rPtRz9-X2Z<~cY8XrLm$fDmlUN2dgLuWbR@jBgT%VldT~I6X7~&Nx z0Yk?W_Vq`RD`T$I{jn{TN%N@lR-Lw(&RKy5d>%LU&LBdEW8qL3wpY{%4kDx9)-CuQ zyN%&8FC9e;)24^RcNbSU(^iv>L4zfZ$T*2mPj%Aid>uGJdDeg^q6-*@F>^(e-b>2CX)7}@iBNOa z_C}S5!rOf4!6EZuPI^g2%Ig5m>ojDRkVn$O3U|XX!a<6+Y_(ZY=R)h+0deG<@`#2^ z-ei%SATcS+en?nv82M^jeI91BoDuBLtmaim3O=ex(`mI7DIIuh>(m@qSfJP=4m-#n4UzEV*h z$FLCRoGHooCc=mMiZ7eJCcnuNaoOkixj{dx*4Qh2_X;bjx%~THDwmXGyB``(gpe~L zH@%H&oNH2&?~xeo&L;iYT6&Q`$gWEQl9Dg6XxAfg?nb{2GSh(G+}!d6%yg;dcS&qr zst|!(r*VT{=!kGN27qk7JlC~~5ybp3HTLy-)N-D*D`n*Vy#34a@p6aAZMt5r)>R-1PE(h2xW#X3`hMnkAx9qFQq ziQ!i?Mg;zqU{H3DxK(P#I_{v zlrwz`u+NuoP*2XMWjKAWT|_DUju8h*TYO4^lQqnqPL-bG=hLp+X|Z+B^xo4Sz&j1L z%k*?*8WdAyy@}PGm9``QG1ZS<57*z>pOhYZ!@K5X3{nO%Y*TaS^;bq+KUY>6bAZ=# zR~gHAyKmtVrLX7C73L1o=2=Pp;R8>6CEZ8re(2C#x}g(a-my*#6 zFQ(X7TsBI@g)Qqi3O?gwp1; z6AkK?n|viCO5SU})4pa}v#C~!UwNiczx-+L&}Y>HdOE_RUd#Z^JTru-%;Sln(6vWi z#D@+T^ewXaS1%^|4zJW^YmQcf$Ks9mn&Wr4vvl9ti!>4I+V^pGM5eVJR0;Sj3rz|k zF(>ouJa5s%ORN<8!D1rlQ8Q-O(bi&Ldm7Xzw{2NJyFG4w2)=)|SiX}Qb`~wEL9mzh zb@hCQ$AH1ZLhv56WTuGX;bMsuOUJn8!7ZFq24CA~7fKjFd{4QTk3FGrmgPO!xNL}Y zffpl@&RXB0gH%w-QGe*Q8llr@ZI!}~w*D$>UZcMxzVE~S+W|wtH5^Y^Iq$J(0lJcx zg-lIe!mp~fFemn}0Qg=F@2d(?ESk*yP?HYE& zWj$lfB4=plY&Mx3H0HB&7Q{GAXN;-QY2WtRA6LyQFuW9Lu>BjK@T74 z0;RP@7i7gF{4lIep28uyJ_Fj!AcdQOi}{ADsc_b!lU2=b6xY1up}dxH=v8>Eoqx*I zG-yd_S*{KWntPYJxcl6>+#>(D4$A~j?&_6%R*<=-@uZ7P3Kq|2iTO)F5yVkk%M(#OQj4{S-48uMiE(cRMPe2%^p$bEIiNKEGE0^$tGZ8V z{pF)bnJn8(*aa6N_1n^HsSF zD1sS~)4VB5C`vC%C_J_m+mQv*==h}%Qk6*Hm zbfaz|qMrXIPDNI?e*5bg;nH;!cl8I~m89V}mtQ~+Qw~G=w|ng;%(A}ut_bqy5+3+9 z*S|Bj1H?aY7sbwGjS~8}r*VnMIkyk(vek8-#j#*k@4sQcR(gHcsD$!D02a>^-!%NSuRaw%-#3-)~MV~J&-;r+l=9p8p z+2YrXTE2*9(eUAPV{GVH41!TbSR*$ZVFhO+xhWody_|E+*?O5JL~u20;)2fwJc+vv z4S31(Q_0qyRJ(;xNB>04^bgWxL_|>CcnY=8bcMQ0|IcIQKc_^nsQ}b9nc@-_1+tF{ z!1;6jgMJy0DeW0DB6xuh83R)C0K@xu{Dg88dcV~ygro=N)+gkehG0Q zuf}0;9(kz$N^|flP4O^{-QP6*FhXFc5FJeM3>hBsx(z1o4^5Tg&iq(40e)mO2qh3O z^oK(EH{dfHG(}zo4EbYT9E*=9ZZI?i1+rZWQ~Ku^3<}Nzkocj8Y?m?gue`i`7!Tq zC>!^i-1!KGfqRVoiz|YZVFC;upMNowU<^`ZoD}+_KO|m?8{2OQF1U*X87U>~X!Lib z{)ZSZrR%cqx48cJ9`FlfXb$bVCo*b;5UN$t2e>#DWKTK5j8Xzo(Jaqv0b&- ze2`^W7_2`f*KeF^K90gK&%8e^grpetqq=&?A5M ztDPwnM^C}*#88*Of@7h_41WzhgaZAaVg4)#_iHNPf~#J@JaV|-xLXXP&$IYcf5M*dIX zPy&$&f{_bD^!UpCaw-IO69BLvePn>}N7nZ@{QOG@eklq?kSIg}8-JSgD>WEH6aWYL zNB|glY|gLPzh*Mnlpd;9=A2<_QGVCycTuC^F!XKF*Ik^nW8i z{4;(`kal^1+2b5}ykG(q!XgK-_;*_UDFa0UnFivb0uX-;fEpv{|IP*iHAG1H(~nU5 z0|D@qBr+_x!~z*DO$UJYU%gg^@_*490T18G1Lil@+1H@B`u}2$utLZLPD}*Af%|nH zyC>}z=l?Pehy`Bng31YW|8^U6?&$vM7^uT5JNP{@5E)WN5Bz%zGY1t=9da)Q9RAY* z5a{!x*##tt2Dtb*lYYlyCIQO+=X1I+5aX}bfaU_e*M%yfF*2a}qYye^>|ir0AO%E< z83@4qQ;A=r`=_2$hRA5(r;>kf()hjj{cZp>fCchQ3Ha@COrV8xgUt+~E7hSqaO<(2 z^pe1t$8hMI{BM@T5P4~!(&NxWwf$pAqA}D8;h$?epo{qL{zC$*s{o&Zvy73^A0 z@y87BQU2EPSF$D(;NR8bmnZO_%Kr*TGXbK3?@XYtud&%bmHFN1zoC$ihQOo83j3-6 zryui&Dz*Q}2K>wzs@^ixfK!Nny6Bhk`e!H+!EXN!Tg-rH@ar@N| z`R57Y^R`5y^T*+UIaBsUq|~g?vJM;kdwT1cP3g(zuT=!1Pd9B@-gdTp3os?DPT?C% zrlyZI>@|_^$o;hRRvwSp zntPt+Jj%>Y(89Qwu(%y+Oh#bJJFi^$!CAi~$Jp5DOOe@U?L=an^FuzGpfk?+(D;ZA z+y<7#pU*M6*wdGQAp*BKUt45xsq~D_zkNP<0a|>rX?I%1XeXVXG=e~{H5)PE{(biC zbCF}veqlOholbPwa4Jsp{nzqcj}^>gxADznclItP!=K`NNtG45TKYMr7+za#zKnL6 z7b^R^uk@1*@;0NjpD~A*ztlEoYHr>U=qSdTws&oGT7-~N)=n5F?_xr48|%d;HRjLX zA^^qj`=Qh0dL8Z9Nk@^Po(U?S?|mrL3oAaOe2&442#0^6V~%R|;ybC4O*2h!N>6_} zqUYikqg<%TB<^b;|9&23+%~E*mc8d#%E*EwEc0OpJ59UIvCKp{F>7-i45wuMG4Uv^ zxcz$-l@!<211TQGumKl(&NeFE+uzm(J6l1V-vh@}+HY#aD>}D60d$;1CE0ulXF{xR z;`K=CSCgas+E2cYDC}N7Bmk1EIKkM9jaO?a-)%S5ffzZG_HTxKScd1%StsRxq*_b% zeXVPma4d5dA|*qlxDd$Nj@(4JQl*G(p5hbZaHsTH)Y>~uDMU!G6B$o>jiG%JIb#S? z|CqjmP^=~_#~-vIFiS2#-h1mLbj=9p&D7nG|@lt)=}$+;Fu(^x3PpW^H&-4|7aj=ERb$ zX@$jT-~5KyyZY57$s!9=GF^q_LzH@El*kI@8XMw8J|VtBr>X2gWx$;L5Uoz|ym=m9 zl=BA;3{0BbIn1_G_*(h6=j4<=LXms*t!q;)+F(M7LG9^|Hw`IZH>GC3mfbc)GYjFl6Q07KX?S2Y)#gu;JJUi zDBG|-Rqst+Qm}K9y8`XeSv1QC7W%#97@OgBFQrQ*INV}ld_4nkD0SVCGNQiUZ$PIw z#fRrc$wK<9{xh`&^^;;9R;m!L%M83_X)6*{@wM~o74&&{nk5dgg+{HWJ=zSK$XmNU zoSH%IaKW<(B2AdwXK+6;=ie+m`@z>xL6`ZhvPMBJEaTO2t&=Op`+y_w5pOKkKg^#G zC}!^?^hnnBzm8F_M4L2It0ZZspiJ{hCr@uHCStd^|xC0qCs6r*VG zX`v8aBQP@`*4v)SkQP{%OZ|Cz7uOIOb%C1{0rRXVT>Uf2sT+u z=_1CN^{L5lM&_tmtlPU|1~*5*(rT9YXqnzcs3$;VcQE_9ttBKAMevaQncYsRo=**n z7(?@%ew+HHvcrh)!AF(0y43rq zV;tdB2U;oo*G@w>VJ{O`tpe&RK*nc*Uv2b+EA|9~y?aJJtKSznvNz8qCHkf>dnmI& z+M7Qp47V4T@gksfILqJQX_JH;mO!WXQA>{%&VygTIuF7a-!W;IRXE1=X@S}UX-MvC zii;wMN)N?IB^FN_Sze_Oe1v1^DY~qpP2;#IU&R78XpIfnj;P_wm!@PP>OqWo2D2GNyq@er=N*s}-MO5Y=#y01lUH>#Koxx~p^`+g*hKv4Ucx+fuI6~Z3%v#e zlsc}r4j$&DRcc9o!xY8pH`A)AE*BlK)YItU9DCn__(K~ckNTdp*f;1eU~UtfB|5f& zl3!J*b#a4D z@LloGE7TWI3gFuQTE za)R4iG+Ij~>xb-4y-N0Vf%F8(6QaB@EIJf;q2^V!>2rbZr83G5e|<{^reVxjLSLXB z-yv9g>mNGH6fX}lia&QV2E`x7rF$P3h37vYh+I4;RaDjxdJ^Uw{}4Br)DOFB)K9{8 z^7Xi@u=7U9l_lKSZ|C59f=LWW62b#-wMI0GU z`>Z3W+k7k~l>5<)2g&DqXJ1xC#FlQ8o&3Pn9$s;Cf!Q?1F6xkUJ)|vdX;xX8$y507 z*?{~GvnO$1$`br2!!?@dq&;F~f?Zw*t4+<6eXgdvvA@!8+!5|`0k?XWwjwKHAKhI~w2+?x+q4@pBJp+8>*?SZ2rgOogfo>!CkJdcqi2hN@D?H68ZtRt z3kDWPaB!nYy0BC;^KjB86dX2SrfL(99q$SU>1YgCi!IqT|m2>fxi>s+u+kQ~5|hw!MeGxIbfTVYZQ3A5qmGgU9t$fg74K?!9Y$N7rGoM3!vA z%QM8VpsF!C9&n@}#ZENw-c%uarB2O=+R)gbV0gA|yG|ilxTuuU1 zjYbF&RxS@)?V&QuT~!;uXB{_fHL@S3Ymi=>Lq>P~X05j6RWPO5?8Ezfe9fwP$#4HH zu1TdGr+1{}*oaLR4yYbW{WW$Yai-7b7R<;JI(r&Y+*V?o!ChI0d7x=}2G~6od4s%4PCD-CHESSizgSG}CXhbr zj%_e9r;^h#9OwXg4SZX%fhg!$Y_;c-7E{0<()nf8$qxl>#ycN;2nh0ev!DdJ{cyM= z^yFgZn|R+9MI1U$EP7#zFVbRmyM8<0cl-eQZ_LBV!dl#Qb~Mv3)B;GUvi(EkTOZ&G zc6;y>b6&{X2V97k>;#`ewf4xIYD+7FT!hU`u&`)1g{cwf!)AMLJ-=svJ-=_NMPwda zI*3j=d~N4rmjoWcqPP=fJ=#~Bl87{}k7lSmKunT zh_Me}Vgq^JNt3$9Cf6GZZ7F6%kUIvFdy0T!S zut!GB;^zg8=VSq4D)5#E7TOalB}9+?=@n+SOMSmgii7DO<60e~LFAs+P- zOI<<+o1zjalt`N6WeJn;hjTG@e&-ewFLdp@{yusbB07B$UJR%nW+C z;3f$JM?IC0QKk=gYdjmrm}z-HwwVFNsTOu>#JHo|xI&YoJUtk1r-kR-rpMtaWX zTTELnbFc3FXIsr^6{ZrKJrvSXG4&IHOh+N5_N8v}Ddiq#tj?x>eq#)XS07`9o;Oc@ zGPaHJy!0MRd3{DdTvgI^)`XQ6^Y-qH#s;iT?FtJ@9~jWL&Ymt?HL^ba8YMq`vQ9`4 z)vyP-btg9CU9^mG+A1g*bU8$O^Q@qG;`l;LC6$svCB;fni?W;ocM!z_$s~f~wI0fu zp6c8Zo8mZzBib`58e2P|-W+B;6?1*_c3GBKf%c@iV%l`uC=ztX;`glF2F33{QngkP zLu|g+S)G0(au@b3F5D^GZUnvbm+|>=pTtU?5nHa3J~2sXJk61b- ze;%QX`V{N*HDrTTl3r}tLb#}N+oMd)muaW8I#irZ_6Walz@pzzebe|DosW&VX?$LK z){RU)+~6bKrcj7w+ka2})a)~93RwY+++vtXf%*IsKDQKpDe`cy>=aa6*V)^ufyRed z6_DMfgpi1RLH!p|av)hyzQ`W&Y9xp}MC2&Pl6}hy<0(Ai5ytRkmS0D;8g)*p%LcDZ z`<5Sv{$ZY0yRt^<=Z4&?ZpzfSS}9mQ1|{O`DVXZ(T%ooj}Sbm0aZi6Cjh@k-SJNd#Jl6K?g9T2LZBIceAF2KMjF}!p#OJDFq$?r zPfi5jUkY%#4GMWflT$(@CjiX2|5KM>fZu6C*_^#=0Metvfg-4mk9k6yE(Xp+1|mSh z?*SS}e^PQ=08M}Y1p!+C#~x!=pCb{1Us?nCLAX()NWIT6o*Z4rgy&$NK0yyBla>~_ zdWj?Knpp+wfMpSTbvfAAJ?8ZkDYZ5+Y!}(K66d+Et2JYYZl1EMb`AHzg%2$2T!hXD zJ9(ekE1cxz(F>b|`6LmKz|s`r?JFGGt-DBbwqX0U&c4u5BC)_9*lGfw=-w>+w(Th( zj1Y_ofG#5;(BJ!U*b#fCz8CPeV488R|> z+~yIRhw_YczeNx-TOju%i2avbLInez|6=%1a)}2#|Leo~muvc$FmXdB-v0mKn!p#>a0I_rOhRy( z+uthxr3eVYJ(obrKf?@Nci7X~flnbMS3u6ku7T1hzhuZM9)y4RCgOQDnJcVuw16BOFl*#Krf<^rWM{sg!4`_} zMo(XBO?$z#n%MtVS*lEB1xPv)EG+)`np`;ZGKiUgVm(d0>=zr?Cn zDL_8=Si*x5mCCGp^NoMF;y|QYnF+1KfyiO3j=K-7AyUQLhz}$gX_yL_lhWWJ|$6b)h5_X0i%5}}Nv zt;~KNot-HqJEUL)#LUcIGGYpL`2SSpT^%DW`pm1tMM5BqJ1y8y=CF$?Ia7!7A+~;* z0P6D?$W=i2Wh4VMa9^;n{i+&%>1x(_A;a_O>02ykC4E{H5Tiz|1gJHySGudT$@7uZsuh1%0iM5aYog?<{i^UUrcemtM80s!Y*vBGa>H< zY7_b~JN&V%;A|L)A0k}B3u|Ko{@ze_qsGwv>dp^5Ei8;EpnC&uye34693Rc@fFWA* z0R%WfwQ__0Pby(DiN)C%Q_TQzFBo7`LA(}%drkCJb(95GqHZ)e>vuhju16SCEdh;v@omJK$(e7z^be`ptmZ4(7?;1L$2qV- ziUp4cDa{(2RuK7&mY2rhYT9?l>X-Y7+j`dpYT(X4gX0u*7a#m#mogp4Mp)IXD$8YH z)nM5bs|Tv>Aj>MT?O-5dn%y#RTPxPIR!j0>oaTs8fteG?q}~jTJ=(a{X3^B4oF=ON zRP$yxo38%gDWKo(nWh{o(d}J+Ecr%56#1whj#z$Oy}U@;iI$I-zs? zYY{Q-I4);!L~i{CK4);WB~>u(*8Ejmtkkzsr_UgJ*l78FSH?@s??=Zk2opBk2ajL9 z++I-;$urbY%$%0Cw@wpg++vuivmLNj?I(x&&4LO5klqoBO-4esEy9SM#Y%NfR>cpB zT;JIB-K~(^uwD?|dIEf^%V-c5AR~DxC&DHe@A>F|I8$q=_6-y%<;(gu_I!SJq_XM~Wi55Y0dhz;?4 zvSWG09GLN1ip>|td4EW>cX$`rsM*{b%kmi)>8IJ#(%>>+-f+mqS63Loo`$mWp*LDh z(X-JZcTDnTvnpP;G@*TYpT~=Z%!&#BMO~l+q%A1wz!eH4(%-Jyt1hXY#I_*UZn5h~ zZ>ke_GL{)qd)~D3DN|EpsxTWH^A;zPhh=l15>a5(SyxcZzJs(xVrC$C&=yo zANtqnz*+EvFRZ=2iTiT!0%D@HlQEb~>+V4&Jv->4nirCqyUS)2O?LpGD9GZGYGASk zWn(f#&j_O5e#;D?>r@NU^ymufe3!rJ=#YK2GQQ(2Jrkxkv!G-O>6N1IR()Uz{3(Eg zHZGYF0#1`@NVQcLALVH<5(4%drH6cgPw29N_upw=5G8{2$Zc&MQ@ykZHB!y1>2V}{APyOXuU7iiD}WW9 zl6($KcaWb#s94r9?|SzeWAVows|P~wk$z6}zqY_ou;BOB3&OSyeD`=l`E6MT-M5iK z;yr+mZh*i12>t`1j8lC8CXUd7-Qv7I)rdM z@4EC?A;V*wT$#xZCpyRuRW;?PqK;K%>h_lPAq9<{Au-D39k zBeTVR9_h(>Q=V8eyg%>Vp4crLJ9vWX-}#mz%XQ?Np?jcV&S%UC-|+ULtrvowHTe@h zQlsR2+2T^=d^>U0lAzCH!(v(p&h%RgQiNQtwskIVv)>%dCLUMit-tEK0CB)4>HhxtuQ>%33Z&)$W^ujJg3BpyUBIL%0oxamIMCi!#=?VuyMoUVNjY+y*+s)HrZ26&4LAq$h_s`3z z$(XaF&8 zat>fVAHhwNP`Np3RmBsb5}^!6_jeZyG59(O{z`Q49ih4P7mLZAJjgy9y82_{Lcx_A z6U6DOTesV5sIFBRb+oKs>S{)qcx{s{pAkUohqF%$> zSnV?VsSN1=UAKrT>PHI9;0UgOYnZt|?beM6@86x@*rJXjzs|2P6Y9g89F2fWZ=dfr zJ=Oz)`aWBqqmyx21;LLUatK?mD+mt=mftjgdhh(T6@;5jI!Eep5PPOZ=#x(z%d+32 zEn+!tA(EcSvfrBa`TJW5vsz{^?M6@DH#g>TjpKR&4$g{pvqYnj*elzGy3Lap1H`Ha zJJYhVHH=5o+PXaEQpUES`f@q?CvR+uJy@B$sCRwdLtwM)64Iv93=FmoD0v|72Htvl zqZ(#rc!EMn2?QlUcHQQ!^sybjy zjC)k+bcJqxk*VZs)=ospcPw+7H#+w@F9~i!D=bLSk))W|h{#&+d3$E#4ETCWDLan) zJH5-i?^2#!D5gxmHxe^0H`qPf8hx{$e4`oq z(XzMclZI^db7`$DB5Nxgqme}`>_v7vE1Y20B1org6RYlmQe{U6Q)z9;XFkL00lW=c zB4Sp#xR0Rx6JoS4BE1hj12suxW42kI-~D16!dz|Dm5kRrz4lQW&Ut1@(j~rgQ|&TJ zmtrb`T+<_RO!(riGDl?Tca5WxTqJS!r(eF9ioJE`!i4(7?3-aJ&#TUVRLIBt{P9q9O{OGUz0QXCs*;VJJo%-YGHgneEZdxk<_5U? z!1g#qx3w0oBK@sRi4D-$C4Yvnq&PeJ8exV*a>uw8l##VVkX4V;tAx_W{B2O?eBE17 z0YvfiEeqK6!)j`rmZQkdg=A?J*MeMn8EggC_UIKu9g20TZ|40KLElO&czU$aF?v(x z+#N?kj22b#jT1@U`OvTeWk5E(rJ!iOrT9=@eAwQl!g^QKKL7dgi!%R&Xn3@(Xpa+; zJZlA;dL&gxOkXY`zFyCFnjDCGZsZuP$Fitv^z zc^?da*{;Dsprr*Id8>g{K_CSE$^f7vr6tZnGMO2XHB2a>m2u?-Of93++nykcR^4=y z;_}mH%(sZTyBh*ZPAu${Fv}4c`z!%*Fj6#ZZ884WI8r{@2)KNL;EJso?w(s6LVc%P z`8SEqUm})g{Xm$RGcv;J(&e=>gGkopQRkAS39GSX=6o$u)-!~n)@+KNRmg8rJW~sC zztZFDtknUmCw6d12hnwMc!U!^7h3wB{^quKChD?fpziyMSpU67LwyOD!0MLB7~pXS zC^GWB^DjvAm)a)%6@UWKodkM6T2->I0p}h;n7>w)za!y57)O9xkEjb2sS*5>rI`aV zE_&5-#1}?7guzEFEh)n)nP87DARR&|QeE^1DmGYfUKdcnLM1rZm92-hxe*q!anHF@ zy#)-$*@(BWyUIiH9dQGb`)-kuk|!T^1P2n3Gxo@xaFAYJYebk69$ucU4~5^oj90rl z&Le;0CqL8|%+fbrcRh?H97-LW6(ZynI1;ILs}Tkk>IMpcqQBAeuq?UCTG-eencW$9 z*7$!=HXv$vAMx>%w#QTqP1S0W^d~Ru6eLt78`8DRXz95_Ce)vA1qjCbXLOkgH&&YL z94M^Z4Sz;jU^3USCkc`$_TNe-c?qXZ6jf?-zdU(FNHbQ33sR$PFc9Vr<$I~N-cUn#1}1+uZCu&T$fVU5;4r||c;3`0t# zo%vDN5g%V{tV=ihIyCPkT)dI?!2I&;ysEpC*~~MxbT-6|GrKWkjb9ik z^|cNa_YVY9J>hre?l5byR6^$5PQjiY+~0}@n&_}%Bgv{SiK0xfk6kUA_+2f-dVFJ4e_>Kf!T|#_ZemBc=Cj_$l+}aoini|oE)0E_yA@jFnu9w z_2yVMMuY=F6Z)2cI4S{ zoeiPwg$ziFkvr8k+H7sjb)`0VgdJ50S&|_UCtc5$8qr3g*pmiR;UZG-7EL{&q?Js^ zh&oMt-dDW*qLM4M4`tPL-XEmLlo_2Nw5iF+Y@UZS&@GdClekLj6%5ZiVis5+}(|r)z@pju8(5Bz~3clvo3(LdzBM%wB@f$ z1r)<@*%@O_>|Y=sIi?0`^rPGnh?yhioZB>W=`DZjtqwc!T8f=Bc&Ghc^vumU_f@#j zPsWZUQ@G@(<8NmHz^6%OaoopTMm6TwsUTlpn-tx^?y;@TW}Y|0Rx`R)WhRcqPU|~< z5`8y(WR-%!=Ih|AH+Gkfq+J}xhIbR)M<)d#V(W0EAns%OyG3!x)djoXaJT76T}apP z!O>;|&PVv_z8``=&DU}7wE8j_fB4cqt>5)xvP`d?Xh@HaLiBG+^)0GgT8UnwoB=sl z+2;^0&xmJ^sF>tZMY3+NHCjwp8kFT@aV2 zIgNHkbQ}N0Ta%TEZc=U1p8Yl0ON-Isg88KVIvwk_j8J}x8BN0ub-x4F|FIVQ?P)n-3{_BLt^P~zi(qiPp?~Gwo_-yKeOxz5n-*f zv^7i?L@rG`=nUETphekUHBbzp;mD! z4%3ClEb{&NbFJo@$!6+L3OItU;-v~)$=gj0JUof*JzeI9-`Hu+sNk_8UoVfh#MswRqy3~gAX|>Jx#+zxkwR?uHft&5 zHGiRCGl9AIct45Ccs~XHwQ&?Av^55sME$f62~pK0vSj$yi6bSno!*)(#f=ps{iUuA1ny;ymVwBpq{M=SQK4 zf!-MTPb&#uX<`d|!xfLH89*W-BZsH7h0g;tkG+`#=Vx55J);Gc!V#Ub>-j> zBzJae5?S;Mj5@jldWgsrV-5b%muj{A2NFekb@&9y2PV=N!-21PL&8DvQaI6SPRR|s zG~kkZVq7oXBfOuv-HJFn&dAvhekuKk5sE!3;P2{b z`XR)889TcRxPq#!TzmI(*fj5ig7S_ViAsccbAP$MC3o#MH~+@Y3x3`6!3;S%lk#A3 z68#zDpJ^JE!i#R)U`9|JgT~3e`2qekJMy=5kAjZW>5k+m_^FAkU9)Phj}R~uJG_4Y zBVJFx=m+wUj8y!5oBMJC7PEMs8L4Wc_=VKw6l&UIoDTSG*=mOI`i~O{z=kw6j#A0~ z7J5ltc%4K(J+WO!^g7wuRyTmH7hmkg*q%oFkFwTQ6favk4hnYSiM-wH^|I6=iak5#Rpsb%<}DeZO6}5 z!@iam84viaDlNYtjK@^mFFdeA6Pw;~u)=X@ls=_Gl+$L;Hfq->@$%T&Ei%WzlbdGj zud#~byW$VjD!~UaT6AGq;M3KlI1tU8Bw9`d?9?TIUk|;v*}m6a3(EEUd@*MJvAQR* zu-_+AEuF!gB*griC?4iyVGF1ES^eqN8-cr}RF`Tv!&fq(cx&SD54FVtX(`1Cu%IL5 ziTQ1J6T$4W-m2bfgZ5F58~vfzB0qTdTRC7oCGq&Bb!YQHT+Zq)c&}6`DahyEED>kr zXfHlnOx7l-Bu)48FBh!V)j8~ltt9>iA>RF*NpR0sue;WZ()y;>pV;#B!bsahF}(Op zKJem;gJnVtx(cCHxA85J!-Bktwb$1nSn_)`pS}iley1|A@cRAS5ME`=oQO|s@H`BK zMDLmxKIV~-gNS^H#tRSsAHv=-I?{FP8tzUiww-j?vCWQc+qRwRuw&b{ZQHhOvx9!K z_u0>L-uIkujPF;~xbGTOKkA;>T5GPk=AzKMSnh~x-4Zt4kk-8HS$V4*>frDmTOQq% zrqM2SlsRqtdX+QL*jZrrnfOv0YSybN-)}@a-heYA0$*hHv|V3T^3;G1B5xZ>N6J82 zA6uoO%_rTzy57lPe&1yuvg{2S>< zxO=;eOgP<<46T)|DjFIa5@?H++sL)+g{er8s8$0PB`P+aytkevEav{KKQX3Af!7G} z9(LYcc9^yty&a{$-Uj~ReWw3;w;%xO3Q>do3)XAcbs_m~%9SM@$WQLY9uT#iN4W0q zY5bfF^o@eh->rsy0&Cv!!Qv(C17*aG*(rwYV+;?V4~2lkg)sofhu)5JV-MbQBMBD0 zp#aTFJTmorrj`k~=J49=Hsqh*fnnsPW%@o4LHhfLFl zRsl#@)djn&`rP2V^?bATO(k@5iz5D_kw~7Z!|Y znAbFA_Mb#@CE1mBV!V@uGHd9bVwUN&$bxet4SjV{+uE*?!`iphTqLeqs?7Bz)Tjq$ zps+$sp%SP0ch9(+LK;DeGMc{S^6fP=NrYguGt~B*;AkJJ*vKJjLYO@yO%xrZ61mly z?+)tu=F^b_X`BY2tYCmv1MiSvp5#VUPKQKI8N);=<_7!YS{)uUQjZFn8lN)fV9GRA zxq98jHa8FKS!Bunb2R9*v#IOivqfVpU=t@+lxBwub&8ozb3~D5#-}rrxG1&0GyLO| z+6hfeCcEh@c{$Xw5*Hl~KwBHx_ zvF22>Tg5xlAFPOY(JMNe+(n%TrVDR49+pCUF$!JK3bS^eUw)5fyEb^i1M!* z1YeC$(et!rZfUKZreaE-N?(M`XK%dyAy&-0G0<*GZ3;W%t_ctj#$OpXFY2TyPtL># z^LLz4zG07Z;M#H#1!t|3i=9=j1M+aT*jaC^ZjzlAB#)*pk%hv(jdW+hy#*#XPaJfp zNPzTDCj^_-c+@SVNr`eW@nsdQ-VJpo&1N{AxyxwH!5Z8c8KSZ7&$Zfd3Xd%j1NJ<` zsWR&5@aih80@KK-*6Gc%z(tGX$q^~V;2BRS@1RUXFY3-mlz;5_{hq_S0nWcq%eq@; zB&x}EMN7|Y3;ntbBUG?ttYFAK%D5!=Ty^rNu9^Z3n52lC3$Oc*zHoSRxZM<|%}I)C zvj5QGRvoQCWdA8W+CYvX`JKvof3A;bq0_A0lpCDRzEUTex*5+i-Oj9? zSrH)~R-8E-h7QvtaCYC83JkG+rjqB;ml0*0F(nE?Z3_(P+PSjABKzETmfChKjb%!q^)w;DJt zg5x&a?ZRYQ=8jjuUqn|#+g1rIFjYB|IvA)3x=ksS!=hFxybY_z0A?Xgn&(0fBQh(C zO?uPl*itH@MPvmdT5LsA`1eaMZK_ck3!j}E)!HOAR8CS=UdJS_IYmdXQAH z2#N=BY9R!Z$o(s6W)V~Xw*Z_+^LdqxUSzf_BReCl%Tcyv;J8e-%}X>>F^O&ol;vxF zlJOF#=-0ZWiX~855FVDKjU`YLK+^5|ZW7osC<$`s9R$a6TpsZJuC1iV9GczBuSKpTwu6*B7G@b5m20Lh?kwJ5zs-ud zKsxqZ29MjUJ?C2*O~@7MdZ~rY$?U?tZU-RUX(c9yQ}v9>rq;5?<#%u9v;&~+VBbMf z_5qc1h>KgJOx$NC>~TujS#Pb8LTi%2+4RYDf;rrfH0E>x`Z!yi zSUr$X+;xg7?7z^Fw(gZdWprZu*303)ZVUedq2vqAMwCt~kC3OXe-g_IC;D^UW_-U_EQ>%85CnOiIFT z@DD04{fN1;o8v*0Tac4T2|@?yn#T>4TjY}u*`uxyp^^GPAJ-Q@{doe6Vstaz#@zTl zkxU>8ow+{@d6J~K|>CVLENSW5r5*^YZ1LIbHTp7Ih; z27h%9jCZLuK$vK30mZ;=+@d_J;}b0B3tV{Z8)1vOC{k*xjOv4dh{S2VsA+sk%1SR* zhyvthZ&8nIbVprSt;`9@B96Pp=Ih3Il)ZHPINaI3S&8>>7wd6- z_#HgZa?xgku%F{KIDD+cH26x@tn3Vzp|S#;X|0AuD1W0HWG`jkM(4LSXyv{l$>L{x z#t1Tv+Vw&(;oHBmQWM$`ts#*Db}jqAGNO;?e)la4UMh2cv`prDExFJ*_3<7A8cb>4 zuwFE9UWoT1HLQ{$a7Z*rgQ>Gp5Pe+W4io~(cu6h2b|B;!?e7J6+&feZIC0jM6whJV zOp|%A4re_blWoVxyuQ&ns?**{yQgfWB(-oSz5LKQbUiSx95(im{e0)R3AO89+4p8t ziQ6-)mDNEPwsm#OWyU?+qG?xV*{`80lfwQ%o+vI&XGHq25m%BB+1*wLNNfRltq0m? z#wHN$wT6$wKj|^mezqz7P?WhGNw?xi-9;kzm5E+h+m|}P-Pa{*x_Xe_W0AC?l zGJk^F1mb^tj;dvbz4Kw}cRTeMk|n zRK<;$&yqo(W+w7g_h%VUntVs(+ttqEJ5)(9>w^-)#t-ED+<_eRqXI*e*}}A(J(y(| zsxtwYQ4@bw(N zU|y+wU&bYvO0SAHzLUw6(9mag?EF+b_&j+Dle=Matq`k}7BP?WMf=VoLnCSdqV$bj zUrP1s@u$B2j#EE|GC@A@_gK>Y^Y_+5jk|q`%g=>{NqGOC$@D)0cA?J?OtC}2|0T4; zYsw4*?fDl~`)Q!^54rn!4YCQ=1r+gL^z6S`-^=*VVSGTx|ES*oR&v|LgOW656oX>? z!}9(;oB!9vBz#jC%qF-5(9?eeiJ!(gcuD_r2dPOq2{hy%IUWxlfVBxR6IARU8R!41 z@IHSKqY0`Ev>)+bI=fGYl)okQSV^~z0A!%BwVjjuzZ7=`$`>*y{HQ#F7>)I1hC z98$MfJxEI5D6ofol+yH=3MQ+|Vt&!R`n=qec}_R6a<78jcY4ogR!)=1D4D9Q)}*Z4 z{$Z<3XIdLH)n`*g$pUMLgI(URO&ZlMBW%8Il> zCGh@w!#050Mrw(yb%H2EV6#nQlcN8Izd9+ts{y;G(l_UbPCm_vWKWGn*g zWbRxljR9{^oQCnK>5&(?ithD|swA{l<*7N>ZWDFalbO>=_{4o(S>X4D%4HPg#e*Id zzG_TSRLaN0&yzlZDPHUqBdnFn8Sm<;``JL05EMJ~?lM-;Iz96^)}m#K}2x=sK1U!ip7?Y51~)YjXtPaRiCEo5bBh-W#WGDq74^;xN8mB zkwg!{L4OylYmyTe0~|sXEtOXdSJv{}UlK2s(r+q3QYlv>2hxTMedHyRrsbvBk7wKZ zTz~(o*nYwHX~zCkn0J2~4E~4y_%HQr(lrSHCMo>wf0{aAn% zW&qNEK>N2R(C2NErYdc~=Y;p)-aLN;^z$M+Q1dT;!jD4p&-P#e>9n5!p%!#YJ)Tmw zKu%zz7Ll~PhHox;oY5*gNeX=mYN+b~SLhQArH-8Y%~!Qp74=rv-c$M)b3r&Tu+e&p>@F~rby0EFzW8&78M9HR`- z%}lmTkSCYX06%q)`7?$VL^?Bl{5u$-8ey| zjunSrzYB|Cx{D?Gswqci37!= zFQiOkUAz;I*V(s1(~~hj`Ixp6Ps0y{mMq@T&xdUj6(|=H)vEhkZ0cT^{oOjH5sL}s zbXZA)V48_xOl+-iLA&I{Zo4|*)Q723(hQeb;kO(s)pURW{Zf@-LRLZClft z)lB-~woQ&`q*8GfLH7G*i=o-mW}C8CCr>rLj0Hso@1JfX=CbWSRRxwn@DdP#v>`Ex z4C8*u1w&F)l|cw0?p>7w&d`(M)(VP>{flhIXWlC{3>v60#TkgW$gC5p-$z6OiJ&Ho zA0&&#F~$95npcQoxN0D$4##N!X#Z5s6pa<>B2NiDh%2Eq6f?tYY*;P{PDFJ&@o~phk`nWY5~0I(bGJ+e^%V5Kt6Z zvdeHu!Qvc|2cnUQj`JRMCnmY37Hl+fSZRt_X!R=iku4)@SZGaDAqThW8*&${sE6Ha zd~U7arOCT$7QN(B7&vegn=(RiaYaa)sZMDy_^sm~=4dXS;>>6OM%Z2q{Pr{3FXH;{ zNRm-Ux%06i#`~^E-@GZ6I$tRht8Z>uy5L9sy`(vtshWZ#(p=Hb-xIa=OF=F9}}COUEPi zJO|_?>@4bj0^pO%UP!9zhm=?HwJ|Gkzl1N2FIP}?%c(P$Kj3v@RrA<=Y^`C zXzgBOhzAE$zYaab=8@OT&$Fx8?Um-%QDLP8p&K`al&jy#w3Y&`ilX=47m9tOGIuPe zgB#?`Nt2WM$hf~ip7Q^W`UVwBqXHFb-5M}35jk)q7D)=)1C)DZF7?0Qn6IDAR#Ah0 z2T>Q8``wId>+sz~P8D1N$6}#V%VgQ}Hw(uYyIdL3W_ZHoL^$nE&$c<%Flalgz{^)`m7oXI_4lp3Gw zh>~pB!f%K5ALgpV9aJA9`!TbKu=`1KQ1kW%B!wV?7H!j}^vw2@HT`MU@$;aH(3XSb zXA(9>6DAR2I3Y<7UlnbK#(Vzqxn8>h_Y1g#=M$P6r4v<5@HHwP<#np$h5)cB!E^ zXCZVzCr4w1i5)_C39r{Upv;F7>5`7>4HBNcmkSE+iUr&@$Ne5$qp*hh*Fjy#9#Z7_ z5K%2#S!qqSMfK0TzMh@iP2Er;1(H+BU=iqCZK4@p@RpGY!eRY^{tyMyU!n2LsPV8n z*?C66%~-%Pwtip4Un8w1)eehk!bA{}awfO~2I0^VH0~t=P;LV`HFWpI_D)fV2x|r8 z4Usa2%J};hRdl~t+$}9T&XOnfc`A;kRXjq6!lohcG-+=`T7ty+rlR&@gPVo^?DGi@ zRla_F{VS?j6T|+}{G6Hkf%tz%wf~*V;7roi2OuQ6!@vRyR4f(OL{NFc2x{^8!^M9V zLODyUE`t-Ta+CKE4j|%J!qB*g%{5V1g)oXZ95{2{D+1-X=3J2H%uRoT-sUlOw9R4~ zNO46YYz}SkJgs*;osZJ#zCR%ROe;1Ywro!N(r17R+Dw-gb>Kwd3zE2}*5eOYQDG?$ zoaFMR^90a{Oivl5Vk)1a>s#YNu{5>2{KDoN|4|h^s67n>H{a1F=ei7 z(vBT~_$z1$A1;53fB( z!`_dQo>n%QhN3Cjji{b``sSL{jo`HwGNtT|4I%L>L$QmsXmi{GCg;F-&WPFP=&-&! z>`{8BVS4KTdz%BoFbi%lC&1|=$K1|_-;fm)o|$FDFBA!i8lc(*ty4{KKb?{ZCZ+Md z#Y=YmU}wYj@g2T`_EG-YH?PAVpa%s)2K7vi_AL7|JAGg{7iOFBn z#{^?JQEE#=5cP+z(Z0hCa;NKbJok>G**UcLhxTTSD=-sJft$S-Us{D#uy%&yr8FRZ z6LSO)1ABG|gOsom#pJ*!7it|iPWxI5u;jsF?5AJR*{hIckf%N(dWIk{V^M*-UJxVm z^eip#3V7kqhC~lZoXyvo2zS^c`WdqwF8lO#U+=!~DqL`1mip}c-L=8W-F&9`biW|{ zFZYXoYRu1%k^<`oQY{FV?r1B=i~cN#pl89 zT;Bpz057Hxtguey^`iy!(lsF+0o*R91cgV9)wT#X6QJ57Fewe3S4JPhCZ*XLxQl|$ z$8w_%owWypqFWo&H_Awd=G#;FDu@0as)&IY2EujdRaJs3TfzR27>-gH|05JZI|+@i zxYk7BTh6+(IJzXrNGc99+DH=^xQW)3G6uk;b|AFNrmVZeamU+M3N(H1T=j~e;(8<#(aDD1U*`cfK*yGm1vV+>+xJc`}w1%LzJxJ11 z3}epXdSUlEFd*OV>4FR_T3J&W`>|B%(YQq7R!7n!fqZZ@g!@3_;wMt_stGy>3=f!H zYULIKj1$GhKy^OMY{}?1-S)k8SF5N2L|xP`>(!xn$F^lK;sKhJzL$U z`Kwq5O4llOIBiLTOyAP4l%;5P)~Tlo%NuSk;lC~AHWHnW%w;>+(iF5|L1@t^FsYgh zYD$~>$>N$wi4a~4?N{i8+(c^A4lOCW@fXpqlX%(%bx_Y(oZz^&zNm_+FVgv%xj2^yoYXaZtUq{0m z?NH0m8QHCNq;YpH01r#O*o8FB&4$~Rft-spZr4o#%=y?%UFJEyp6DRcEbCiq)dFJ` zC^#I<307(-lzX07e8cQ414fv%oOsIWi{yS_f#?(Q;l8iv_}f&eKqf4Yn3`(eUvH0= zFm>dRQZ^Sdkmr|uT)sIv^B_l!Tz$#?UW%c-Z4Ba+6)*g5Arc^SYlpaK{6S4Lf1vvd z+QgPz7Rz)V5;WJcSE4Ukjh04Tjf4X^m^I|#iB}40q``y5f92kb)D}$0z_CXJ-J8)$ z8R>RT({0@ZGa9+=0|U7=M=M+%_W7OsQTtm^NwPc{N%$rA*bDjL z&Y~G;?56|ZIgkS1G6il$fy`_^=M>-$L#y=c)I1ZS^vF>$!J=PwwZB9f{FJ*Q!T2RM z_JuJg4gRORRPW*!5qsS4klo_3Lx`Rtq@g(M#@pJUMTBBrgPU1p1|+j~-B?n>Qb)ZhIo7ZQ9Ofj-VsxT1Xx)i;S=k0m{!CO?I;x5 zbBf=lwRy)Qqp;GWyrhJV_sq*MURP-6+=lLZ#|i~Ybms27rMLQCW6Z_m5k2VG) z)2K=QSf9FDpSQoXS8zGMLJJLZ5S_O_cF@&d)!%2^C@Rh-84qLTZh-%Zx`V^!SwG5 zpAHMC9x5WW#u0AD`nH&AG4=NUJcJ!34GL>@NwQPt!}wQX((NW6c=vfqM#21Fi3#MF zzw6|`jVkFOKD~{<5du(v4F4jrDwH>DaD-7m$XseCYt0qo>T?k72vNC!XC(2BB+_a5 z((Us$5_m*@&3f(lTxm8g>z{*zEd*G$`m&Fneo#(NIhmo(p|7VZC8=wgFn?cF;tmzD@)4w6^gihs&O<#-5B(%BUI;gU= zjT-9Q9e}Pq0V!RG<2_wa$K;eQmaUg%ezfYy>Bb1{3}(U(njB({YmmDpr8T5NVqvcw zLAmdXOAq2?5``B~dB0}b8LK(_rKZzeUh~*MJn+Ap9x9f#uOj@a2F7JxFeQl5C$DDO69K08XQoWn!m$GBC}BMm-*?Z2xA= zEr|_oB8{O*C)q-u+>-_^Ltm7m-&T7DG+|Y`AU%Ogm$)>6h9^8n<_~*vF)o3Lu9QJU zy5tVqmAw8~<=9%b4IUPN0t+g*j5s4|ToTek*JTslc7gwW7#_%_X4>3Lwl@wlM|zbu zt|an%0XUusNfF=Otqqg4yEy~y`+3fN?R!9J9k#njz_N+0lyFQ5?XM9JNcKv%RByFlwHncP?KO`yTV=TH4w?6PV^1$TSg66glZDV}duJ$X@!5 zM^_TMHL^XQNWKH_+ij!C%B#x4m&;b7(81dmZeX9$qpolnmgff_%#8`Pw|Y}ptxnsbj;fS5&wTOxH1PxagH`M)!x;W|_4DLUb zEP>3{K2LQzXmA!IgGJL()im>^zJUu6ZYN;001<_2{ z;+Fdli-bYNu4EyguyfnxK~oKCVadpxq3XAI&*|;!y%b*j6wkZgDNge~i|EfAPr{=k`Ke;s1|K`&EUu-8~iUF9w=%ko=pPS^w z04yNb{@gGt2A>O=3qQSP{)2}56hgBmZM(x@0GUYsITH$$tYuO75q%m_E9V8XiReN# z@(o~m(QeSHLBQ%2x&i(%bVi=q+uO|*uBy*8K5RF2P<}K01lb{j&%p3HRXGZ%)ce@A zv=mR1$CRXvDLy_g5PH9&2s2^EP)r5+d&6v`BYVLcqOt1k~PpniCQcrF;9anm1TMR&~qjc}78YsxZGC z4qFa`oOW%*OD3J_5#%w+xV5o$U_-o*8En}+W}(G82ZL0Ila*bOS=fU1((S-$B4UBE zjV4#Uq^`2bdYutsS`syJ6Z>B4EZp!C3@PLN2SjF$`N+}XA~zi#8H#qS@e*oXq5`MP zE$-?*SGok#UUK98@lyLWo00qwsF72Bj-cpwMr{1gIw(Jq!iXZ$fzj#`SdJsvDJi39 zJVpymw8Bh-hvYgiR(t){9BDp&oIF5G%Ci{LhXUuwd7Er{>`@ttth?7=fvFpJY0DQh zZMNN>Z79$G-NG8|b5?6IEKvHlBHn`v^fs*jFD^j`d)U-*8>iVJ)?rKl+|E{ zdII=hb+Y3}O6ff9Y;eYTAgS`5=f{d;s_K|#It;E#VIPuQB-gr(+WxQu?8eBt`EoEF6ly226~3r!c^)7m$dMM zGE;K)?4eUfBR8|)@&aKzw$^IFdzaj>atyIiV00z*%!jY5-a7LYI5fbf0nw%n#2 zL3`LGJU_(ZikR8`WPU^84_cbWSf1SDbT0`ejHQybJh+4T3wd+so7@ne$lLpGpOpUx zdFsG^?E;V|Zus5tWeW+&gy4coX4A)Xp1X`Kj@R9XIMXkMH+Nr+>=j~cQ7KZ`1H@6l zmdOh3M!U^Xz{w!!D;}9by~>7NC63C8j$qT-7y@9(Mw1!rX1dFLudvEB5QB?P@7U29 z1plBvIcAP^Tfi0?q>ikn24jkxxjv&efzko%sh;wS&FoWThT-TYr5VN-GwkLPkzD6% zwP{~c2{s$NtIV5n?ZzUFF`9x zgQQrT!20AiVEP-3>L_y4+E3z0G!gJF>F$OVy;PIsa~QNvN7B}r16dn;K$kGeWCVb% zX=O&Ewhl)aK~6d?EX&dTG`A{C)hm#3!$_*!1GqjIjtT>!`r{Ch1cUeH^1~6+EOsNk z#!A#)p?Tv67qY!1xf0C!?qQo!bbB1&T>BuSz*h%ed_Vu3%h= zkh{o;5>e36X{S*7FmyI_4iYJkhwU=&>yW}O#7?A8RaR}q2lhVqpq zm-H=r!R(V6nYo&e*+Xse#a(uV0g9$tXt~ZSPmMq!ch`j{ zUw+4-uoG-2F6k|QwA3%{3%Tb9#0HonU1e&UBRBP< z_IX3NORi6PFI&dkc~a|t_{Q9*Zui%~${$TKO;SUTdq2GOj@!yeV5wesiXMLTFLey8 z_RGWv8cR)2-69qriy5nc7t>3=800-^)U&nLb4?}@|JR-U{?_E0q z2ARFh?~tG?pw`L#MXS%naA%)+^-xUYE&uAQEQ3>;7N*Uf;eoJ*XN>eh=0^lSw9fYs@vU8GW!IV$Nz6w zTgw1I0W}@hgit?NU8vXO&3A*a1?XsH&Zi)WNFSoB@J30Wwo{IJCs=&cCWM>RfLsq(8MtQenuZ&nOtk( zM$5Kfc-d;A#2j{Mto0)Eu?Eb12;^{S)NcWcKRIWeIbD}}o z2V}AoStL~VcxZRR9lH;>XOV^xbz_3vD)dlXFy8@IlXpxarYDhx?d*rzl|yhXok&J=Gi262V2P8VOud5xkv>walXxU3$^v+3k`#uVFV0Js_ zXSiA`qgj^NL@J4mf2`Igh<9YCGX%*yZ4YkhOmZ#Ocf{#1{JCA~44c)-D@2qNe=j7c zh_iE$2@j0BXz86P*paK3R=rX{JO&#>MnDC5i^Rze6-y?9bW@1&a}Kh0O5BXz85ple z5hIOfY;}UTY=SweE)$|ec1k1NhfwGG65AJAgA?bLGY!}ohU-#YV1@&1JP zDMI^Dsf=q+I)<_&>Gg}CQ1M9eI*@_p^;=^Z?AF7oJ-ojQ>a`=!0bW9-sQT@!T3nO7| z%Js_zpA(+Obs22mNFLXqNCVpiy$Gah;%GRh`}I%+rTZW4P9f5H$a$rR?jv2_C+48- zx*@#avA_C&N1)O7XBr0BYZ(adt3$!Baq9)Yts#cMij4eZ*xK&oi~i1Luuy8U~*HxUz<%-&xa@4rbu2*`iR*}r`P|F@h?Itd5d{ELA9 zTO#uB8y7AB=%mUr01pI}H_tr-4|CIP82}#?+ad9|UG4L`Q~&$e`P7Cu0`+q!gP;9E zJ*;Q?ROiu^qLU<$@`L)L#+)mPhO|4@`i>#^ULBd`e@KUKNxjJruH->OoBxbGjKw{)L#Lvzdz zoFL})dAqQkpI#;q@BXmF!oV?2#)2uDhh$^g7sVk@W6sB1^@k2)rszz%(Zc#tlO9st zwTf`}N-An|Pn*c-+eXVVq@X4dL%Fu#N=S1VX!U&sz%8%);Vca74MP<*W~}fU8bV)z z@DAT$7`(cI@YL=k$dh$LCDvXk2<)#Tuc=S7W&~V+oo_lH$$kDmqJgRV!x9xR-$wn=eznU!xeB~jLPFf3YdR#)qQdqZaSadcDCnybbiw@s9QR* z>mCe!WevzpiRYnX#>a7)TU1qECIQ(fIHX2yO}a%fw#Da2Rk0Yq6O*fzJ2y1h+V0co z9P#ju=VN-U@j8ahhk<99;0;o;5zvA6H@s|4>7A%6Ma?1_G}+`VtW!lf zW2ar2H0Vg5)-3BYG^P|)2M?mJ za6vl2#nS{(yn$bM;@$y?Bk<)!kA%0J0$UIZwpO?kRv^|^$l69{p@>dSdzgsk9qjlk zGTS8LfxqEzhGWOPgys-+us8%!I8ctS}>${4s z3xkC)QbYQgnN@^hC$i%vdi5OBhW9OuU?t8_3&!m@LwQUx*ijA~64B3AIntx{!S02e zgXJUDaY<81RtTcr|1L;vE8E{lKOyAs>8|k~Rb{pdz!JEnh$4>o5d^^K6%l*uaX;H;LAuRk2z>cUl{_mNC%gdHeDa?YT$^l+$o_wpBf7`xEKRBN<+- z1jtQTP05sbV$*#ZzaL+Fs`~Sl-q(T-JX-Qwpgc_ksU38YryePNB$J2TVz&?o4|`GC zU298pHwlmyJ9*as1Q46d5Y0wERxQe7=NDriB(RcLmU!Dz!B;kj)^#;Hlz3LI2B%x8 z?i<@#tUhX^MjB;>SEUo5`Q7S3%r+?cHu9(#q%Tg&RF3Pq62_PYQW>o)u(xi2du7rn z32Rqa9R>E?cnF29Zvky*Yln)~eAd|9(KY2Y5+BHxV4ndRMaYB(%u*_D!~kR%3tqzdnQBm&a1E(T_TNWFl2ye2-JiT4=Ls%_Fdn{EiR zGY&1PO*R$WB*sdfv%00`Rj!Ok7vwgUi^RaaJ*AQ%UOu)QhxJAC{hZj!a!q6PDwwRo zNvoyA9L?v>{Er_dXVbjX$@9z~=k%Tz@P7(x6-q@qbUZcMSc=fW66PPI0gYG8@h0n? zqvq@e`S~>3XOjeQH!}&?F1-F@&X*!HnE3vi&FDlPh!dM>lIR+_KA^Jdv zq=VQ-_#ADQ4cVvHHW&8~iCmYIxQjvE)kAC>cb0pFYRO$*?I|Tk#sY0(<0J;Dt87%B z$mQ;zm8B%kGfe~#Kbknjmk{#^^bSRIe;$Yo>ExWL8?lI8=)4nfh1szB^18tDMPKR# z=w#-m!{1ugyw%S<}977t0B zZ-TFT10V6Enb@3BJqAkrtO;JEyH^2igY=iq$&w}>xWzQ6OV$I^`sSWGVV$dCu8>i9 z4J6YIGDJd_)F%nOXNP0Wj~f>9M*meJ8^`>kYLK8rRvt*S`M~#AQvGukR|wtl6PuR* z4xRrKIlJ=#?m*~@Cr{;ho$2j&0WdVMFy&}Qc3xWjikaw&k-|vc-{(`;5ZmFq)`K?_ zSitzb6*VL@P6H>#5sp{mr?so}4W7EJuJ+e2+kn!IV?n|Y=Fn9fv0cbWmmUcN#384> zW?vL>r=9$d^x3RA9(Mma@X3?G7ZL?bMma`1-yFq_PY;a`{-B*u8Vu?KN6oH9Zq>I+ zDgyONCesD)m1+=DZw6b6Hk$;V(=)dQ`4jhEmB{;`;F5i}NNf|g)G*P8$QhQLa{HXp zU43$H&2?Ce!vMbcEMqf*ggd{Srd>B_x1gz(03*uT!%ONXybT+_3r-kVu0k*Kuy1Po z>W}f)IKXvd`my|J0_RUSo_c;)iGH`75-MT#iU14UQ8+h3#CdNP0L7X-xINo0`!$*h zyMG!9$be$zthn$?GdGJo*MdR~f~GbU|%nx$y4quhawK!^8iHN8mx+ zh#;x9dL3o0O4z8trR*!C6XaHs5!;ap!bMv+lg40N@`|N0xJrDo150gd^~@?u`U`n+ ze5Er{wRcfv{q7=~>|6{Hsr88lQ`Fh+klgMmVI_ku?KnG(lMPDC8$g-5*JPh<|9tDz zXjx6u8iGy3xH4feB!o|D728=|6v#qziHtpsw33VIP2>FF;si3_d4D8Xo#b)Nd%6vRs$2I74zj0JZO+F*Ai-DOvhp6%pIl<1(@(8wxK@A zimIFE8bgi}Q_Vv!woHh5PVb=(Z?4jmBvcH#o3hhG4)w z8hfj~Z&;W$D#M6r|6zv324aPIMexE}_it&)(^+1$#wYIH{wpT_yHEY)i+0jPK0qM} z&KU+C*r2+hh@*`92M>}O3I|dy`^NzJe9%vAIdd2xjZ|p3LK@^$iFd6;Qf)PtJ|8*f z)3o-+sSnWKxl9WssLp@k^AD*hXJ#6}pg`ywd&;`w)4Jm%&ynjT&(kJf*845aPqrI% zL_AEm925+pD+9LMtt}+VHSp8uhZLYH_c`!EC^;~-3 z!AewDg`1`-pZc>5)|zdk*1m&XOVyKv>SJsd?^UfimBQoaD)Jl+zcjvw(`{mYFYE$# z=5wvYg!obuM%O1f3plP;OMt?h#*U;f)>o96s5rykXd8e7-~%o>h8CTcynW^U(hUeQ z@=IDPCu_r$13wkHQm}>lkeO#lvERQytnKAkmP=rU!Qu88Y(B+vY_*lPa%z@1Kfr+$ z0JH`<^F-?W%sB!i)D`arD<_V$)0TkRTldSK6Er2Ot8gs3!$AS=0`!La)C+fbnPm1_ zStvK+jrf#;(r#`F>XPX{44^lSt+r}9ZCf^k^b(Ptav5IC$^Kh`Ryw#%ZG)2%| zA+b%OD31D%3~313t|!M7-D5@D`HV5l9(|jA|(N{$JF>E z>&W)-VWG+x7xhNfe!1t5NQSKOwUCytEJyEjqmkR;U%knuMbSG7B)V7OdCDR(E~v=Y zSfMI5IE+>lD4U>%8l3sC+E!VR?ShqC5bb{K=<|vMeRL>$PtiXSsd!JZUZlr1I&y66 zloAe}#nG-R@l>R@MXslNmk!HLdKtS)zN)Y@VM+UhDnnHLbDmr&;>~w zwji3TDd}x2;1XYj&{Hny>qqk3T1~Jf1Ww&~s5dB0U_gT<=j|h}yV8dWoU<}Lw?kJv z=cc2h(c!V73TRfgTPh?LaivjS-Azbrt3aE&JVrO;+qnp>dv~UnRRe(P7OK$+Q}`0m z)7=b77%HX7e)W`{{_AN=s>@Wo=q#O%V$1tH&cn%%*EEB3bhI?*s(RYmd(_@9y4fns zajDYEAr}W~rO@xb%cv`{KB`Hx?XagzeR}N z^XK#3^%se7)w8%QJ(Q?h*PpbZ!Td{AIuWuZB^Q zY%2g82=9L5eF`qY|3kVlx+mRagovOttRK^1360vNDgSJ6D>f#0#_ah#iZN3YoeAUy z=4{r{!z0r(^C*3@Z421>2c+5$1B!guGI_`^G(7Y>_FxTp1d^yiUOpj`q`j0x7p|zr z?;=VS%t7xoHoTgqIhV%(V$58VZqPLTDro&zpm9>unoHV_@x-l$$hM>8rbrxw*U|$# z+>$vaMCTIAs_)U7G;uY2cv2h`8GY+p|XP}l;xpS28d1=nEMJYN%P3NkS=Z2?5PV%>>&9qO>B14pmO5BFa z?VKHv>fB5A5U$Q7F|!O5(%2NM`A2C5Kqmc`%x}IYT0VM+ni1ZVV$!Hpxk38Y*JA+? zm3Av19CW2}8o5l|GQckq<{GSDqO;Cl>+eyR9Bhz%0fly-jZD-HVmi7Ch(|QyqF}F_ zVErH~>hT0fzOWWvA2i|}O`3vnpx`}fXn$0C-xf((R*oG^Qy;fqn54EZ|zWC5PVw^B8!f+}R0#{=%ggb-79ZWjSDZ5OeKk)UwPvSq)B6MaGX+c4=zr5%>xewg$&~>DBvM&sOKD zdi$$3>057Gkv3%Nuta6;lOlK9!;UM@KUe8boik0q=LEJd!16-V_TcSzh0eDYtq%cO zAjQ;&ga?o&sVipfO7hCK;K_CN)fWStH+pl+@)?4za2piiLw*$)JI3dEO*i{dHvY`k z^46yHAxQh@WB|C+Rq(`z{h_)_khm)fpo2$pXGnsU(3dAfkc$x+(4o#prZeBy4^kS1 z96l=$f9})*ZXUs$2r#$A7fwqvmU^0%a;F>)fTyxT4GkaVoZzSK6r?aq=B?gD!JBE)~w5Xp9{&&vqFYTHv;79(lIaZwy* zMRxHXhDW;3HpjkcRU?m~M-EUwQLh-R$=45pGu=!tgYYY~{`9n}3HNV{<;f87`XdpM zx@>j=w2w%I8mM3uoHoPIchDY}z?7Z|u%?F>5FbCiOpNTJuzCQTyOC1^ee>}mzzk+4 ze-yJ}Ly}sD9f76JuUquaXHMV5B%GD!o1>7EkJB*e|B~_qk|#1l`x0IE3DvK`rdrS7 z_etFL3#+4-$_@&;%rm+}$=a@;hKT@HgKAKLNGfuw^1>de0MDcCt}5P`{kI8<93YrY*Jj)+cME3HSq?iwbYc;A}S4i9lqHkj(H|*VYb-% zNP7Q=ux|{m?BCk#*hVKOwrzK8cWm3{iEZ1qophXZY}>YzPEY=K?#!Kf?}zzzYM zYS&)1ehUv~vDjG5==xeBLlFA+>Z63i%aRjFSLV)Sj3N@+P?YwTO^NhLTQFJ-L7vEc zZ6TikKm!{5)k+CBfY|ktdXv1vc{GmB>^^vIVUYUh1!B{hgVgzxrpJLlxB; z8ip4;vm%h!5-upZ{Rd}Wm>5IN$dDRp%Q^KBjDxt4k1w^V+~fvDF5^1Q=@tU8u0ZE)I)Mg4Un36RgJ(-Vn?#(!W zo@NWpFkqcp+`~!w7{yehn=~=-yJoid@LLa0W;c_eGkGTr3(GBPw#X!XWag*B#zFA_ zkZ8(-iGueFaG5^gi^ac&d*;&2OlFXV>lbc3QF90)Hra3^_Sf`Cb8V~- zyCKoRwCNQRgD5MBUaFI>Qw4&@z@udcD1At3*3w`k* zgmbLDnuPRsbR8{DOg&Z6T65_`t>><3A<2ZRVv*Vv*{+#oh1gHT6$wj(7r6o;EW^&;y{uW|ze*=ytu*q-; zwtsGnto_1S%v=rD#)=*>i)hhAjuB!+ZPdiXvtFfPC7t)X7Bk9v2#QE0#O&xKpuPR? zK#<#GiXr$o9?cSR%TXj*nrWMA5Knw<{=LM@*PX?)RcNdf6sn8um$~9`Ro_YT{|Xnz zT2IZv)r<*1*L3RAhh3qIY=7JUwf8f;wyYs1P4=^Ml^Cy?K9y4k#>?|pd2&{ z!MHa?FS+sivHMfJm2+caclQB!3#YbO3#a(pgJGv6+%92x6!r;jEFP=+$v2&9g>iD( z=$J4h-2BnsS@)Xt4CxfVyWI20ln%U5Uu&DxPT^AbQ(+cNJUd71@wFVdj@Q_;M_^Qy zAz%RTW=|=H?tjdnH&hF5M0gqdj!lI4J(DbH+{ zW8~eXo|(GkqBk=ygadk!L#t<$_HxTp?t`1!i-=Mu94XG9ap)XxDC8S`ONE{X#5}{| zOyN6%YhoVmq~{VllB%^SHV=CzCRMB`J?cKNQ#6;e3AQSy-@EfMH4M_9$8m6Mv2Ko-5Z&3i9+qU@3?>Q%er1sljaTMA{-qR)cIr@UkBF7^G1% zt>WI~j&Z~kJhqOf{y??;b?4_f3F|P)*|ae%e5YpT9PI7}>?J>saP8b3Ls8nUvpMf6 zX^CmkcM=vK=if5%C@^(m#Z2tSw*$k0xsI(JOLroAghc#6`6O3NLB9p#&_qLR1vjbj0 zN_6EyMoi2Y@D@{p^IJhUVrdnCg?Q`|u|ggtUn11NMRHQ5Arkz?#b@F+2JFf#@-$z4 z0@lg%T;GA`#igcVT}_kSYUm0uGzaG4Db7fucbiVjW%M&44L?GJyI)ebC{*Qpq)Ua= zeMZ&P{z{h|%3?d~qMXKJ9Z$!;YD4P&k2miJj!Sbj;7@1DK$3K7FH3+GA=EZs6^ zGL^*FD8bj?=-R%AK|0*HY3P|;R=I^BVq{RY-toJrKj)vnkV1$wX#0a6S-t3fk_~|p ze<*|y%_iZSA>~4sV>djG?6z)=Va%Qq{;2yw!=vZH zZKg$VDcOLv$rd05`CfhB;oQ#cmArZ{(l1?u0@_P8BkeU=67*v)@<)mPe5ahMc*4Dp zf8xbg?!q5ItMF0cV~A7Av&kTw;)IIQMJgKJe4>k}Ow8z#T9N$QO zLb(1wd%dCJE&bFx;msM5uYZ_BL%=M{0iM(;JPyJRRZzH6D)Q9_4YLSDf5+|4kG~Fb zOsT}jG$lU|Cexefcy*MDKy9A8hy6_(N*rvA$sd?|bPGx~-r;?Y9Xv4y#rRu~Eowc) z-b<50m+c8##;}7`oNq``-ocv*XJm|qt7jBfuLE%;wZTE#k!%ER;&#u4)0chd7AXDY zPtXXE4&4Fbvt4kge8>IFiJYn23K4&k{?lVJaM5D99T4uB{8vcz z#suKUCF7a;(s-HOGlNMX8@z$mnjofBf4)ze{Cj;8qCVedFu+or1#eK$Hg?8<%rzK{ ziR?+SYfN>o5jR8QqH!Xcagf~!Rf7VmdgXGn!p@%f-o{L=J?xq>CjjK4&F{EkOXP-Y z;t;Blp|E~a?~x5WwEo_O6&Ow@FfuS%zN=%|=7B|bb)$j5l?~V`3~@s;s^!_39H=he zWoO&qj`F#>iAgfLAh<+|vTF~l-2**hiOe`=6qT?Fao8dD_TAPQxY0cbIyEx1TayQ@ zuH|7xltCr_9<=5j9*Z)fTU`;6yeRbD5FRm@huILPxTW2UWtjVNf|(C=50u;2a)#V4 z6u(8x#yPyXE) zVqohn!gt~J0*DAs6kvGfd|6Uwj+rmowxgM?J(^575PbLKq02W3Aa!H&T?fWjWiRLT z1K_)Ph_<6j89_!}GjWHAL-7`Y$1d}cJweFZ9`Hi%O9BRM<4ySW5U23v1_Wc7=hj~l z2?btAck7>rw7d`KvD^K2oxA|;b*s;cI|FpHltHGJlmrnYpk!86@va-G71Q|k(6vci zxw$uU_dtv%o5Su)7?1$CgR0hP$ATH+;(*{dLTeQ4A(noKbSsXHjS-bQs~j;)VD^MI z_FJB_`4eW#>D4;;USJLm(tesurXx!DlI12IWP>MahHTZ{#ZebVPw17Vd?mdgYN_|4 zb%c3*2UlvJPL{MCO6shLYGLr--~Q)gPvRc1VXIuuSAgU*2I1|Fz!z7f=5S zV?mUv0QP@)`d@tf+<#N@|Hae)`kS=%3Ke|p-!5N1v9=Y0phao4)+PSngja1x1 za9k|$ImLJ_xU~vxAax5k(x{b%*0^oj-2q6dLLoRNaE${YWVZx!su2U_>CBu%g~IWm zA(eLcsrt7yYB>Fo;LZ#6Q@|reIY*L}0d=eaZoR^o5r75WDU`vN<8<+ovAsEX;J!cR zC_2V=>=+N5vzuRXF3qIvecB)aj3w#)XgN5g{;J{o-_CoiE8M+~?^^Y@C#v@8v=}ze zDg!=;Ky1^uGq#Y4js>>mt}TG@W1iWaS*V(<+uy_Ns$IyClUmYOgqb`@ut$82tT+_Y z64yTd%;^#Hsfka0;d#Fhl$18eAMz=TW zIqOs!ZY5_V6L%k%Q-Cv5>UjLMhf@Vyn?%|$S%&;fT{x5ROW?16ZBZCdCs3@u#yxib zbKE1D`k$|F_X8Xo2&rVn@OAqORA53teZIO-Gu9{T{AN5NEsu+v*49uf<1HreDW;)mL1lM-fx$pbuA&nnY8&9yLc4Pd23l4|<{4j9}Ev;6Yi9s+?>XWgO zy2*<9%h{l`(bf4O1n*(3u*+F+!}+5T+e5<7A>tdQU)Rk*_;yL^PG=G@lwW0+H7F}2 z*uR~#4H{Y5HQOiSs>^>cPOux3<{-&+I1h9ZNge^ljtw$Llo8u_L z30v4}D1zV7SA}B51u3~p>t#fb)x&&4Lmee*F{gvZ(8}RCucd3ZHX@8LGWE%W$+1;G zg>wx$k{$m7-9w+n`&Q}L!hCLjTAJR*#%%HI3CpdnMSLibF>`OASja^7EDYp-hN0w(E^0amy!r z(?;rQczS~$f1brML`0-7$DIXPQfe}e>QsvMZ{xQGpbWExElwbq6#ui&UDJ(yGNcLc zW6L&ca%oMlJ(?_I0T+vwad~m503;{RWS>_OuV5*hBSGpBO#Kjzd<#3ZC* zhhTM*7zsEn-XLgEY}ov;k|5p#uJjJSD&tR7RmcR^C^mPWZoi>T+r^^Y%&Xpv zhxQ;DXFwK*>O`?k--|Q0+R4P+^%1r9K3KFLQ{TV*4|nG0ttr0ZDEn)a{XY;Y|B0h1 znXfE@s{)PyT%x9Y`PM9?6-ULO$OzCu&-^J$#Ky#A+`-ek*C6fMY98>GE7Q9S1@sdb zb2l?b57)~xZsc*h+TeQL;4wQsuDurcCZo?D&HA=zMi>ZRV{8wj#?lrN&`{%Mh%7ut z4WPuP#KAIUYzb0RPi7i$on=`(8FfnE)3}@hNUPo1U-#+13I_O)#7w=|Ty9pitEK)G*!r_9EklX4n zh4#_GQgN&amq#ia)UkDrJ}_nrqjU zk`2xzys_ruqx42G=4gL6sBcc&S$7EuoX#=bRG#iz4cCn1a+oOVfUbhk&rz_Y=69;| zxGyyptG#EGNaBglpJC-yGJy4q5vM8#K$?@f%s-~(afHq{Wl)S4cq9y4d$@nE;%$fo zioC)l~~3{+7Cme2tuV0`+?!J z_x6^}l6x}|k}J~-ZV$$(yv%YFBTu#~OBNZ>>#ZB)@a=&%A$!vK#?+TIA>NJ6BRkD5 zGE>PhGKpIk=0D=S^G1~}&HEPdIp%hi_n8k-bIV%cm9OCsdvdVjttF3ZbJs`bnR1;f z>eFG1OPTRp(Rk+SV-X0R!FWZm@_<2(e&Xif?os4qjzsZ$r;KN(pE6M`#szz_Molm? zLV>$<^=Nb};g}a9gK`He;h*(rC_J;T7rbWBE#ZXos@~kPCGg3AMcp8c3}bd5Au1W2 z>DP`|e_>?>2Xm>hEWd}Ep6@70cjsxAx0IHUnx5#m`s!t>muQ86!h3qjWNUtHiFkH*1f;En zzyI>){ZXvdbqn(C+XdJ+r2m<^s8YaC56+TqnhvJfn`{Pv59i;W8w79N)O!{d?Z zFK!B9FuIt{%IM0d;Y5EkdIDB!xb`w>?eC!AfZ&4QFB+qz&R{!L$WM)s{A*yjWp-bA z0#-5@{)q2Hox=S=NhR^s>0wLTUM=YBFoMXujkx1_baK>3N@Z8eI^!N1vqp(P!J#~dTV79u6M2g9{8CF^NjNaOsbpnDNWD$0iWGqxAFRCXnPv&d_ z8&5a&q{V8yqZivyBRu&)5V#Y(OZPAk~!q~X~`l)%8@rmFG-Unf* zdpWYpCoX0)PAmR+8m=4r)2JvB$2)WW&rczSxO(ViOrK_YEks+xIsZTqD2p~sDZ~={ z@qSj}W~0=7eaKe4jXs^r!<@i(`|@UP_g8p}>^z(s`^jn!4vERQzvDn1ezs&yF4~{9 zt+8y=qP>hswRqwzDpCh*lOK&D3;M)03~6A~*!bCuvjdWJOuYOSBTCN?j??!>fRA*g z^7%w{ld>!<`xZ+vVpU!xtYWoENKu3oxpT4Nk(x+VK&d2;#2oHr^DsU77l-6&=5cBz zi)c-ly;m)Z%+q!oRv1XyCjp3_b;JLTShqA|Q`In}L%L;nfR-=~%cIY8vUCCFnZWR@ zf4P_R6wk>277n(pzstk?a+_Iu5noG7Z3T#BJsrcl9DxntEBZ^DcwD7}{X#lDh z#1|_b7b_ranipG=mcD*c6o#?e!8;JMPz)Kk83 z!C2%Rr1vHX9quXLlfzYXNV?r9-ocW``l%QRJuNT=d41GFWa}&4*NU-GxWfZ0N7<%E zSUL*}4qv;uL7&GqZ&o*38!99wK}cil;fB@HdswYoIc)^x!tmGYA=JbLeIRdjCEgw@L2)|;J1)mse7R4+BX3%Yze_c%I=p%9o!q|l{DPbK;@uu|8J zKp|84JTAf=IYxiN)s*EsFYY2nG@Cj|e-FvDe1+KlbqrRUm{4;T^AmpRF4Y-|I(igC z@zMD%-6fabZ|qg;$z7HafX#C@q5Rk6NE-9fW?4_CK?rjyoA;(o3}3n{J^+G^`Eng%CZ&3UL?WOk^g0&8 z{!0I%i0D(##QEIdmn^z-Cf{zJZKkRp-RF;iMRQgA+z^7@5x~`mJnIL#09u=SP$43Z zIix3`zhrwv!`(7T;*6%Dniv6T=lDx_NbhdBmh}UGMC~pyV7Jn}z2^qNAC^P_macSn zoop1?j&X$4wuE8XHCi`%Az97eczp==kpS?A2sGAn%}LN9qR$7!MiDVIHbot!E!^Q_ z=W~{B%v3+V^AaiCXCwrNP}EBfC~Ie#{>>f69&4qFYE#0vLe8wb# z7E4l~BK+;W2YiMfLyS!!MVUDQLqqHBF%c|YzE9P?0%=}iL;mhTATaC|Cv~V5=VMs0 zbw#P6cUA1t;_V1Q%h;`L5=0|UWgn80O{buz7mpU_VOy9J%f3;~vBeWHv&DiD1hNqvhG#RSbfzyFzfkfd z=wg4FaEHPX@lAW6$vct(wKfwXC{u<(osl^yEW4+_lft!^nz1`&1M<^bEoES_1xXf8kSmO!(qRkRS-wQ=nFn!voA4kkZ;o|`je<#0M4Cb*VF zX`i038IVjEu-M3aZwD|x15n{NpG{L)DGpYm4jTg!+#d%#Vz#4!U#7E@E3#Q8;Kpp8 zY=+a(7jXt0T+eqhwc9i0OQ0!uWRb7oC`yw-v=UhRl?7_$9Y6H~EGCb#fWhbGf<;$z zvR*DTXI71_&GUw^8yVV5vcvh|`<3$^85F#zAq0m*X#8TFFT$5rdndI9Z?&=-yfIrz zOf=Hed$|DV_C-%%%mZsrDH%4V2i`aZ??g75cFv!{0nv_ad3nS26XJ}{C_lANLj@p+ z{IA^yG1RXGVIk4RCY>4)%Ug@KhNGN+c&fHglANqV&S0hF3hWh1nG8V3SxV<_@P;fj zJiXs;_sNgRd$*kmg^c7El@4PADS1@4kEGm@TpiNMp@=*%wgxX`cDwj}GJDwlJGqa6 zL`2~Ih@~|N?f&^h`QP00DDX5X6L0dEgAZD}H1g-)_hlwQkld&=N_Xpe(x;H<`S=JD z;v}m1FxaEVsT@CC;Fc7!hvlgV8DfD5d9Li>d|Ng7j(p86#ED0sqV&&9#%+-CrvRZP zQ#Wv_E$KkuC>P`++dJ0Wby5a*(H1;4fe0eL5E0+-@tjsyq9?3**29jb^|yoX>+&S0 z(JSc9OY&dcd2>x?oCA0}ia8ER8go#2CKMB$fZexw57K}S5N%dJY_K#*8@9D$z>hw4 zT#EQeW&2$e+QJdO{TW<1MO=#yt1u%S*0@^UW6ENhAKyOm z+a5Tq5g`L#%ql3DyUr)>S){DJ*b!_M9Zw9gKUkU|!4N2gy@uB7wFR`MLyzgj0RREn&E0Q=*5Xk!@VagOROyvS_jcOXWkCb2mmz1!(Hj(!~k)8tR)i({n7W4 z8(REmGnD<+7(7K@BsBaOf$WP#_?-ym02k!;8s-K!EUV3DL6>c~XF>Ct50eJF^mlOJ zh7G(IbaR4Mh!oRLj<7?NF5f~l9vV*9mqf9eDE&id_wPe6gJj^om?aTH=wZ@SsAdCX zN4+FR1)?({7(*-6N0Oo1;4^_zl57ms_)fB+1U`;dr*pqqPf59c=9w-Zn2>yw)Yq$aaGt@}#UZN@eLcW*a{MWoK))fjb^zM9zm>u*Pl+hAaBGR_0+OaYyI zCqw2Ou;jyxwmUig1^zH0HSTI+!5UydGRVfNfFEu3KS2VUWgOL?JkZ0#@|7G^Hp7Ll z$ZPj+(|$cJdX1#Am7-LDQADUv@>00sOm$%9#{UNR#OFYBj9CS5@4!8*k1)sG5(_u4 z$nAv7hB#|@1myoB2CHAIS{@Bs_MSVS9y|ObM>27=rJ9%ggs-%TDqxg`F?IC-?z|fE zq`2f~Fb%x4i+GSGha4lE(yFEQD+F_Y%EgDl7ydPvo@vE*asvi)XuhVMS73MSwaXw1 z0})(2V+ri3XOwo{s1y38BEsB~%?wbV>C#5kPezjbE#MGMX(#qT239H>&cRJX_jHs+ z9E`sl;oR2wq&IuBfs4Ve=YhNQ=iW}7(Wm)cf@6baE0h{2r_JA!C|wX@s`!*c>RQg zO1wjNZ5Go(xO4Accv1kzXG@axR}-@E-%ZGWn8p7@YU;KZ984;I3^)c5A#)^zFb^i0 z)PF~akV%kng+1Gv++g%#f}1B3%TnuI;k}``xw)Xa_z|Ufm^j!Ze#y{gXwB`N;-U5g z$tTOnEOC=p{r=3C-%HQw>Y4YN@7VVxw{;t&4(um2~|Yix2k;D!5nd*>)~gSUJ~i@IfJojRxA&HbrFtX)jT4PRYe&1ghGOdf`Ikj{DJS^~!PE2Bk+o&g81eX#o`5;wjMwW#LVA_nq zR&A2bE6c#pBO4Ie5pg-D^7$FNGFWM|!Lp_#EF7XWI_d;8r0}e@MbZp`&({WLN=yI= zC$F>BB?ldoYU{Hrhd8i`8fIDRGC zmdP&Cp{$#kW9$(T5-oaFiVzPryzq&tNA7>qe~4L@h260qUVdYvnL+H;PZ#9*CD%S8 zhIkGGBgO%w*(?A(Z^WF|Xy3Ni39UK#4z4QyZYod<6NS+LY?4-@BYQBtE6?Cc&e1k` zLEY&22J(`XI17HI<)DcEp?(zHXiNYhkl!_PUbK-mYtR5>pYqaJxSyT1|9-XfCCTUC zJwAy_8XS_lCyKzZYXVVgp4M9l|CtfOQ=bTGa+(edG|*kHgX?7bfX4$M?&u=e=_~D! zqYe`$^u=X2RK*dr!fq|xIAx)&v={9x++a>wy+F`Ywv`b@OT#h)==U#0iH@>)5Y%p@ zJERdgbtPI8jY4qlvJ}Sf>$90Mi+m|fNcj+Qhq(}b_45FHqbmVhLn{6{)d@MQQRhgR zw?BcrMOuULN2@l!6?7;~xg_WD5r;~g{6e;O_z->#U9)z@rc(7)Y5SJ1P2snHVXF~- zjf4U|{RHOflb7p@*9X9N5?F1h<`dXPLo6r`Sxp7lf>}RcfJa9RfX|3u7B4)`V~H29 z+#YwrIoKSyJxoY7Ss$Q>TpFE_audyv zZcvkPab-meqqR`k@jXCPMOq-}U)m&v8Z`v^ACY9*ANSxZcgh;~f^xbf<4cZA8&bdz zC8pz1F;`<7LGd%H>H4f)iBc9`TDZ=$;5nrRym_6w%MNRz47VARqnrdoDCyb8kK+OM z+-UUh3T*n))4OY?kg|_d0}KrH%tTU4uMl+QFVXj;SvHYJ6&Gi%V_aDJcvHghyD!`b zU!x2E<`F&0JL&f**~nSuUwg)0RHi^jAn$Ipw2s`tg&W1X-8SqBL&m_y?=; z(CbbvSFU&hC^x3eL>d&RU|Y!!4Drddc(?4$N$<{-Nshm#BbJ+C9N8=b*^A2@qux$|%tkro@g%9pn0=_|SOxAds;`U<)E8Nq*c_3a|zvUgjNGEAm9;2d)VjqW938Dz`5ku#JtSbh=(szNJ zl{-R?jkj-=zEZz&a(omjNPUdmqPU))v$WrsPMdDJV z-z^7R90j|>8d}ZOzU9W@V(kJogtdBrz!#o?-hBw&Sx`BvaY6=~MYkz&{C<$X6} zW2#827vRp8gBS?YLd0}502~J^RVg^S-@4h%y;U1#KIrCYPb}hs&q*yy)UZoS*rOM@ zNL65OiD5pJa`MhtBO)jfrHnB`p{aiC4{+|0L_#SLW8_q|hb&@Ol~V%cjV{5bmbxM% zSlpYAsHqXrl;iuN2cJsdmvqETzNyuJN^HJURu&FrQYZ}ba1_-uNqb^vg0I#N<=Q@V zYE2bniDR^4n%vaG1i9}4VNLAUF|1EXQa5u1RUqAPb9+rey926yQg3b}&RAO(i%{eO z*P5%m>woqHPe61@H7*0qAGoPc6`R9zl%vy%Bs>y(a!GQtM*cj20{S6HPaz)ACI7PW zNo@6c&FLGgb;D3O=VwOEOE9Fq&yYlOa@h<@KI~DZUwl?&dcPTo0JBtWgBp&u%hYcC z0{Dxc^j2`&(!=C-lr{clPrcP9ELQWyuBjncm1X{LkY!2_Sfnx?yFX;B8i4ZXsmj7E zOb9wp?Wr0x%QIWG6U)=;>jh$q3Ce(U0}#N?C5ei`uu|$BQF+R?CBh!-BqqPL^#0|O z5d8ezjq?fhPo+BLsqZ)S=&>9O?47OW@aMN_@=DW zfQ7c*0jkrH;*9sH#f-`XK*;@581|W=k@#?>D#z_j$c$k z2-gJ7D7AYPQ8qTzV z-X>{I7pk}8?|dXDD~!?oD5Vcs{B*;_Tb`@qV=t?0s+Y+1C-o6Nh_;vo`@z3?kG)&! zXc!jY4_>p&ja34(Nyb254flj?bR5TzQqU^Mjz5GLE)cki4}>t9Ri-1G_7S|mZP)}y-QiBbA@?FU?s*}sjs2Hk zO)>f@{23K0%FF?Dl=zQWQGMdi?6`$uKE1?FEDo!Bdh!Y7xP@@fqwbV(+y2t%qP2}R-|ZK@+lCcOvyl_ z;?yFjDXLxer8Ft7mpUDi*xM{fY^aMSos%SaY^{q;4Hou_Ha+0+uXurM>riZpAX?}X#GbV;OcSYJtefVwOdU%T4q%)U4d^oysnKZ3RR93;F` z>qWy$$VV@9#ML3#d@Y;Mrz6mZiO4JXv1h~}@^qZmSbrY#cfPT>W%TirpmM;7D(8Q_vf)*w9MOd}nHH^LgdovP}kFc!(~ zS|Pj!I^#R&KBALY}l( zl7NNfIa7p0Y)?XDHp2_gNLq`2nP$2@0qeBKrOXWU284L`w8>6tS%j7*0sLry!F*+A zd{5rCR&7NP|HZ&3t1!DxkgrWedv@r>5l5dNijCchPL3m7iO$LLfG-JY%!pqtFipga zEy!#_PSVJ#a7g_nXuCK|qZ^|l12~akl|zMq&R72fDKSFC1EnTg8}ud>2T zUD@5$*M4YiLA(VT=s`U#R82RIifsKp76YLRREciY2ls+Z!cICGgFgG#gzUR8g z%cPiq`6Kl5CUe^VP?Jf*WeA;)n70&=xUQwbyP>?U$v2zhqMS5ZKy5g=r>p0;FIGoE z$z-TIG$zBN%!Je^OIgV`r9M@AGQr6jtCpX~mRj2M8{O44JbxA>+s9X*IeaLAwi)|Y zTuAqJ^iphs0O6?-k&VX`i&HmqM{P?h(S|Y z7f3Eqg@LLTMR99Du{&7h!d&S%r-6pJ6W)GqVtYOWUO17tKL!IenN_Gl#f}p+`Gl>% zFFm`Vo;<9d$a|5=ABeQN>=aXzY^W2ldqnNq<_3wSd(y?3Ep zD%CXeGL1T1VG&OlFJa>4i1k<_Mtq$AD}YG0>o&acdx}`OK8wvRtEc9yEvu-b#Zq`} zz9T(ic%onB9BK75x04Pv_AMGu@V97+aaMzv_K$&etl1lMV2qVJn4P6NE(PmGFb^BA z-#gm|#Sq@zizIK^uA;Zxz`VQI0N>m*wzulQcYCFQNO#ErilDJXCElP=HgEJ+t2V7+ zACzfJcSI6zX1Qsx{?KT@1JWR_@~iWQ6{4+XXqv_zm6;nX{@PubBN+m--4itTkbC6l ztHO6SProZS;1{^dGmihTNZ#rJnQsC+SuA$OjP;F{Pilp;c>kAJuF=T}6BU0f3I!iM zqrHz%A;XL$1z-Mb;sd(D?n`qE9X>n+sl2`9+Ay98fKPT>;#QP@A$e5|ktsT7=pDdE zq3Io-b8JlrA?d?fL4bCHrS2(MsQgeSrdN^(@CnuhE}W2grYCYl_ekkE%`LNe2J0Rs zK02rV<~B&Foh8hcTcQ2aB89rFZ?^)S1TkP@Dq`Uhg0!D(;w>j@sWMDGJdm%iH^T~= zMHw+D%-h^R>+*d-Idq7Z#96g)`GmBOLs)uanV7q)X146*Pu95@)4pz^^ z9;#(r;O8fEWyMibS~8dTw3WNY!wUE0ftb3F^Z<{$8g#?GZMq}>$jGHdF+A~DD;GkR z;hJz+`mljs+Ap@#xopz;HcA%brgpLI{MPJ;7_n0;{(*ssZi(-fMt~&U_o(!&8C}~9q|F$WS`bd#88jM;jlIxYTzDzjQdoB9 z!@ef|^)%du**gw={SdSGYIdd+qH zdF(DH^s^%m6u~ipSzE=VMSTTzxMcNCjz5*h2 zdnYE2RQUX$%;F7g?jUJiRv>sNx@gV@5pAMj3_4eiAT5DVzS$zOsRwoF&QleBz7Z#2Nj?#b=0eJTiY0EDOCP0f6YHgpm{g|1ms z@ywda?X`@&zzlY3?Ctc#S~OD}*jYX@)FWF~JJ#R+dTY#4n&|>tbS)mN6{`@%-2N7T zD6J<+R#RYocMQU*k+xewc+CjD>gl)30Kv&96S$apTV4r{9U{x2#)b4j)-hk|vO`vVm^eQqdZ4O|;H#K_%y2$s5-b$TF*R!WF93E0?LXJ~!lfo7$Sw&Nztmk_xe z)jN9bklYnR`<7>WRCOM_y+uEW6Nbe2j&YoAKPq=G@SDpnB=@M?QZS)QW8o_XGTcHx zEQJnrlwE^`1eI!N7bZo|;^?pYhNX5_^+OM9DL&uz@YX4k?W@sd?yMI?WnZ3M6WjsZ zF-0v}D0AW%+vva*GAkFXNh{qww@j5E{(#mMTeYZy;(>jvzAJ+b`-s3L>_hFLX-9N` z;JLdA&?`@op@K3@vjba;s=u;|U=m$z%rXVKrJ;Zrr>vqZjH^4)t=(HUIE8meV`Ty$ zsugOs2)!0sPcigWe4bE7oYt@+ACn4Z6@Ek{RL-8g+A_ZYW3{e#eQ+{7ui}~D(4Mw4 z8w4^Rla13RQw^N$GN|EfQi87cq1fB^X^X;ujZA{JdKo-EBAAyji1%ImPNA~~uk&OB zCr#cb$we`kjZkwB>uC#iB)+4w!;T5Bqo=Y?-xBWV_EH7MT|`)wv`7;8l)c z*0I@DO+C|25%kGM-iJEu;C3i!V*bv^4`qzRAJ+CHwQ*974rX8}Y`*lT27&t7>+4*Ymu2%4O<}ev<0# z2~vgTUn-6=$d9E5I%A{Yljx`_u4P z@#mW0Q(;M8;tK*O%j7Z>T%Z2LgHMZV#dGg;;dQek^-WM|vaFCY_1SjtFoigC!F~S0 z&kxpfi_{#}G6D1w2C9=?Sdx#I^}JjLa^Ng%5y)Rsg~2~_{Gtvvt*;BdGU8a)9yR|0 z>g%#fYG(EG`K)^R3-%XBaQo@;&NIssMc+=)G0lq?jfFv4(ld2Ha$q!v05_?5X6EPB zou6suW20o0UtjpF*uyCOf-}*ARZwIWv?yg6=H1b~g3J7UP(D4CNpsGT#;5u~$%dmPwT7 zGvb*P$`@q`I^agMywU~pnqZE?Qt#I-bevnd#i5qYDC!R>!e z&JljA!#4wYpfBP6;vN5wVi@p`KtxPXrRM58B1yCtWUrdLIZrXhS7%mOVUQ!paZ-8JY{K9{|`O{f-U zUT)b|Y}LBIxXK~)bFmBb1iyjck8Q<@CrTNL)vpo4TCyP}Q!I*|FQdL;(5@8-q8h~d zj`V!XL&m?2Koc_YxZ6@l@lh5#ITbk65QL9?ovL;o7^H)Z+)}wAj;$zm6(3&0k`qX~N)1Y+ZDX4 z?I^E{SSWTHB8i89xcaf89&={e6nr{UV;&^b)5y@2RCt;g5pd zRHzEs>?T;Gc{q4NLsO7;jgV|wA?HWgPD?G zW2+VP#_`ymE8k!ow;ak7OynkSK7}0}!G;c1e0q>vZLEJlI8hq)zydMaIB!Id?PXW( zrlK}A9Fz#sDuw>CYI4rn%a(bG%c6WTusjfA3!}OnZzp}rD~jd{SWl%BR7ShefkVrD z1yTjUcEOf7Tz@(}Vv<*H?o0^4ac z%`Ntol-Jw=BJhVf@WNDqI;0YguYFha#qpr-@}x^V`-VB^lOiQoX#G{04UR`R2^V#q zTH~A)^{sYIS6)HYFkLR$C*fow9dMbLnih`7Iq>bom~uR|UNYRYFRS8ngc zW}L455(270$8$&iCuf?eHh!tkOC#SAB8(}D>MXQ z<;Z4lSX7H;BaCRObX=>^7Ad}Hg$po!SzJgx=cN+rR0s%qQdD!cq!aY|DvcO9END><{{!aWynF`0fKD3HW_H0$lTP6Ew!(%;UriT0U?M1X3Pc;{1e_OV>lLchefix^Sg7sNo*Z zm#HA``}Z4Ew@y_1+&d-QMdb@>_T@v=`lM(5jsUCrti`*{a#Ei>?Yk7pTr&|!fS`k$ zh@hMIha^=5L;n6}n&N*44aEebFG1sgH3$D?T!TFap~e5kfQ~_E>A(M7U;@gbr zyD=Ove=;I+^J{zn$G?cBx`^<%)`tyf0GNLDKPlm=JJ7KI32N(be^t7p5V61+yU+`N z8zzeY&^9}-Lcji}$F>a3&d)Y(caCr{f)HHt zC;qz)>}Dk-0PsK4e}?$vQEKr0CTf=DH5I+I6n{JQn|Bs*l_Dz#gr)7> zLEvZ?&NG-tS7WDzvs`@cpHl;;r|w6hHeUj{GKjLHLXs#p$!VLZAs zPF&U`>mw$98oB?nsa~!kupuOz$<3#up`FX&D+GN8qSFSCBz4ZRRVuxSQCjVZsiS)n409JX1-v7Jq{;P%N z1q=Z0e-shl5QB~Hpz)d`&Y<7^TS|Xc-X9^tEi~6ZO^99nS)vHwp?C;Zg2@{|=3n*1 z^Jn5_h<4k5;1qr@{68y+CIJz%SrQ&F`)`f?MsWD!9R{YM=l>4MrSzW_6OTgo{t>0n zL8_yX0Fc3%gn+-MkXU<9oI(uP{adAW0bc zxezow8=eN(xc6sYjA-|1c05@|%^@tdx{9-e;8QXHDJadD@i2u!0@=bYromwIvD)nk zDq1WhEb}hK+;VQ^btl4qms8Y zH7UjZ4(hp|eJ1XiMx;A946phy?=Q~OGsJL*aGHuugOnjs;RB~|#eU%&mD~r?aFuYz z#ZT0&63m1#xA3sYAupo7#7Pe(?SZv>tDnAap8{o*6c;s%)^6Zp-vpAEl9fdP;Q z_ra?x^PEVdNkaNaew;p3j2B}O9_|9LeyK+22oia*%ae~MrwsAnIKJD8oq7eoJtrO~ z#_KeYhd{rlK8+2Al@m{Q#zRxxfmPxl)3#04apZi}@Sa8+i|e?e)oia&bv@M4MiX=C zYF7BQKTTC@*OajVN$80kIvl4yc1<-|OX&3AxxUv`5m3n-3j0BwZf&B24Y_uJ0J#tIKYxCJNhtw_AlS>GcZgU~NZ3fx zl~K`^ND5e)2EpPG0n&KOh#KTN($Amv(brMeNG&swm-2{$@9YzQx?MvsrV>R{8EQ+Y zIFN^7BKG%+3-%87%xMm3aLiqyARWQN#kp{{*+G8dIQ{?r?g2kh0tElr(=s%~p7a0! zuu>YtpZQS%0{^+*-_8r%%?v;VJC#6epBC$%zXJckqWQlCYceqC%>YH1x_=fH_z3mi z>NP`(zx`|Rf0lqJOAtw#%Oqg#{}n^r)xV+SghIw+<^7)yRo}ocHbZ2 z4kGeDjM`|;BQH!1v=@h;OH``~+PYz3O@b>lHu6|dh=tm6q9ui7Op+>riggaSm+Z@A zId?GF{u_LEiuZIz=O6atF8P0Wz0k#ScsVtnc=qKAWeK>QjX9Bc?K!?YpM70_WjGXz z-X3(wYB&f_bH>j1bq6c)Hnn|nCm1dsG>e|uqeIggp#V)#L^(`>8yJX>VvI zZ9+Ounmoi5t`Kd6+TXMirw2KXrF|}8JqAJF|yG?ct4LWE6>2T86 zevDF0o8j2(X)|077=XQV?v)^Q`V!49LR#`JEsMh`E`{`|k3} zq)Zx$H$pNOs$^I(S0hT>;TLWX03icT`NMem6gIVtG&W$cKh{^?x*$(wF2G8KiJ~fB znJ1rr_)cmEpCND}T{D^^Pq7T7$l>%O*a_ zzCnEWXkfXaL;lxufqyEna#EXUFGV8X_rPM7d5FB2;0;@GdH*V+|Afm$lg>JQ@XiHU`})OJLyd{ZeOshXVmxTsuY#c8>%m%e1Iv8`scE^harKWghP4((?vy+XZ4ybJ9X%R{4wf)kb<5xt zG*F^~mP{36%_pXbzx}LXsn#k5LvC%qu9dCC^Kh6Zj)ci+kB096b&r>VN2TI@i$!W( z!!#$7+ogln8W@+;EtvO4gx+Uz4;zH=cjf5iw@P-dl=gJcG?ud^RZ{lk@u?;SX2x?N z@}D)#I(w6cj&coUOqYizJjl2}!1BG+;Jo0RqAd=G6|2bDU7=od z{BkqQMZUnhJR64wI-x#fxkD>#6uCx|E6a~5Qm;cX0+N*UeU2#ifL6P3Chk#h|ANAW z?Nmy6Rs7+IawVE|n)wc}7_6~V5WTS&AFSj$rKtPWU@@SF_Vr8wmG&@NcR{4cUR5r~DuoiluPMIP2jwo|DhH!Ph}JjHOz$8ah>dqx4C z5o*UmA=uGoo#iEp9v2xYSx28N$y$f~B43s=p?`w=dOlOoM-QWhI(7AFn}&}26Clcx zK?d(55sEk7B8^)iPdZ?jl=B1#1mF?~XPuNW-~x0%dY6<@3fhI3`CBI%PdvDU7}M0O_Duf{-l zeuWoQ*G!;Wb3&_?N4z7f@2$x5AXo?r-O4Rf50LqAle_rSH`bu{?!rJp&PEhBfiqB1 zun{3|iEvl22~ivh%`lV*w5sRSH0xcYd`&)zXOeA)33{6(%=)V~)$dx_q>p4Mvd2Qu zJxih&Wo@KA<>syq@b*)I$RpA!x$*vf08Lb`213vgzsaighk;2tvuHoF`&Dfb^o4O4 z?F{M#6Q_y~ghx0g&oi&eeKvUCQf~epe2+zc-_){BX%7*ahV$UXpkP$(z;oV)J?XyX3m z%>U)&*b4-D0DLI)X8GWGtg4dKrbJAdyI%6W@mBR*`BVu8WZV-=r$E9;BImm3@4|d@ zd+BWS>eh@D_0h-s!zWlD@32pwcIO{K56}JkR@}qQ0j`-KS}Z|~w+uIT=X8^?0Jt5O zl zgEAMQr#a!(szZG1bB^c}U=MjMunzAmDXp~2sqZL+o+43X&#T6Z-QmaKDT`5)>iT?L zBDphjvy3S|L+GJ(r#Bkw4;yDf=}mMf(k2Hh^HO$Ryi>^7K^IYML_BpL6$A@)bp74d zI2kEF>t#&hM6}xcDAkZClos30DWo2HXbk#5)kPIT5x%-&$dt`-dBOF__+HV*T!N*_ z)c3L`j(V)BjH1WsM?b6CF|B8y$*n{XdzoIa={L-9wGeY%T3-EzW0w>n4$`CL_^l2S zl%&rg$VznYH9-MWK!Pu-@J#U~;}rS3QrkDos&Uss)J)bfiHa?E-%t7pKR5RPdzhQ|_UhAR`=Z%vHImj~!sMaIu7%8%lNL=qkf zJM?co@>4X<6k;O@=)K3Cp}u=Sn2;0u#;E|ozLx16ZU9jb;>%1Bq#@x(Nx1tL5n4M* z%t3hOc1lDv_8NTRXMZW^yc)ZFb;n*MQ@CL{ZWqxaqf-{q<6oLO=ZDO^!9crc0c#}= zInyuXrjvK#H)>Gtuay}vB}p+ZjZk8IS4%XC)n2iMU7>XWj4Aa-9@5C{J_0IjA!9pj zF}0S}se=}hq7))9x2TiH*FG@($*u}0PY-ZW#baSGaT$Ot0 zQ1Wu48Gz{sam_U^52biNP2dy}>rRxUQs4z-g5}4;uPCIp`xum+uhJ|{(?y*48M9bw z*cs(|7;C7$ya(BYwob)Y6E7cKtD}_+JR$WgvH9pJh{! zInO|0S)Z`f(hUXRL9=qZZ^n@5na+v)Fon}Kf#e{>_okW;W{A2uQN(<(AjTguf!Za% zKDt?l)qdpn+&SRm9ME1*$q=FNMs>_{fmbKM?UBbKwB|~LYr^QT3tM?j(U@voNug^e z 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 Qtl-;M1& diff --git a/java/com.tractrac.clientmodule/pom.xml b/java/com.tractrac.clientmodule/pom.xml index 065ca9396b9..008df388f71 100755 --- a/java/com.tractrac.clientmodule/pom.xml +++ b/java/com.tractrac.clientmodule/pom.xml @@ -8,6 +8,6 @@ 1.0.0-SNAPSHOT com.tractrac.clientmodule - 3.2.1 + 3.3.1 eclipse-plugin From 805d1ea72838a3e7842945a1e50dcac113f7a43b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 11:34:33 +0100 Subject: [PATCH 154/191] first step for bug 4017: map boat canvas rotation through coordinate system Change-Id: Ia7d777ba9aa56079d0ee846640d3c6566b23ac81 --- .../sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java | 2 +- .../sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java index 8645ad390d9..6739e8502e4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java @@ -115,7 +115,7 @@ public class CourseMarkOverlay extends CanvasOverlayV3 { } final Bearing rotation = markVectorGraphics.getRotationInDegrees(coursePositionsDTO); if (rotation != null) { - setCanvasRotation(rotation.getDegrees()); + setCanvasRotation(coordinateSystem.mapDegreeBearing(rotation.getDegrees())); } Point buoyPositionInPx = mapProjection.fromLatLngToDivPixel(coordinateSystem.toLatLng(position)); if (showBuoyZone && isMarkWithBuoyZone(mark) && buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java index 9668f195925..d5484fd4ce0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java @@ -100,7 +100,7 @@ public class BoatMarkVectorGraphics extends AbstractMarkVectorGraphics { @Override public Bearing getRotationInDegrees(CoursePositionsDTO coursePositionsDTO) { - List lineMarkPositions = new ArrayList(); + List lineMarkPositions = new ArrayList<>(); MarkDTO firstMark = null; MarkDTO secondMark = null; for (WaypointDTO currentWaypoint : coursePositionsDTO.course.waypoints) { From 5fd7f35266d7cb91e946d9ba8dbcd5508788155c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 11:52:02 +0100 Subject: [PATCH 155/191] bug 4017: start boat now always drawn as being on starboard side of line Change-Id: I6fd7a066e2e4654341178f85a43aaece96e9e3ba --- .../racemap/BoatMarkVectorGraphics.java | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java index d5484fd4ce0..cbb62fc3539 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java @@ -100,7 +100,6 @@ public class BoatMarkVectorGraphics extends AbstractMarkVectorGraphics { @Override public Bearing getRotationInDegrees(CoursePositionsDTO coursePositionsDTO) { - List lineMarkPositions = new ArrayList<>(); MarkDTO firstMark = null; MarkDTO secondMark = null; for (WaypointDTO currentWaypoint : coursePositionsDTO.course.waypoints) { @@ -109,28 +108,20 @@ public class BoatMarkVectorGraphics extends AbstractMarkVectorGraphics { firstMark = marks.next(); if (marks.hasNext()) { secondMark = marks.next(); - if (markIdAsString.equals(firstMark.getIdAsString()) - || markIdAsString.equals(secondMark.getIdAsString())) { - lineMarkPositions.add(firstMark.position); - lineMarkPositions.add(secondMark.position); - break; + if (markIdAsString.equals(firstMark.getIdAsString())) { + return getLineBearing(firstMark.position, secondMark.position); + } else if (markIdAsString.equals(secondMark.getIdAsString())) { + return getLineBearing(secondMark.position, firstMark.position); } } } } - return getLineBearing(lineMarkPositions); + return null; } - private Bearing getLineBearing(List markPositions) { - Bearing result = null; - if (markPositions.size() > 1) { - Position firstPosition = markPositions.get(0); - Position secondPosition = markPositions.get(1); - if (firstPosition != null) { - result = firstPosition.getBearingGreatCircle(secondPosition); - } - } - return result; + private Bearing getLineBearing(Position boatMarkPosition, Position pinEndPosition) { + // by default, assume the boat is on the starboard side of the line + return boatMarkPosition.getBearingGreatCircle(pinEndPosition); } } From 9bccda43dd4378008ed3163e67bf85a3348f83c5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 18:22:08 +0100 Subject: [PATCH 156/191] bug 4017: start/finish boat orientation now correct Change-Id: Ib837215c653c956a68b74364ebb2cac5ad69957a --- .../sap/sailing/domain/common/LegType.java | 5 +- .../sailing/domain/tracking/LineDetails.java | 2 +- .../sailing/domain/tracking/TrackedLeg.java | 5 +- .../domain/tracking/impl/LineDetailsImpl.java | 10 +- .../domain/tracking/impl/TrackedLegImpl.java | 6 +- .../impl/TrackedLegOfCompetitorImpl.java | 2 +- .../gwt/ui/client/shared/racemap/RaceMap.java | 8 +- .../gwt/ui/server/SailingServiceImpl.java | 16 +-- .../gwt/ui/shared/CoursePositionsDTO.java | 4 +- .../racemap/BoatMarkVectorGraphics.java | 113 ++++++++++++++++-- 10 files changed, 135 insertions(+), 36 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/LegType.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/LegType.java index a2f227c8ab1..478e193eb0f 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/LegType.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/LegType.java @@ -1,3 +1,6 @@ package com.sap.sailing.domain.common; -public enum LegType { UPWIND, DOWNWIND, REACHING } \ No newline at end of file +public enum LegType { UPWIND, DOWNWIND, REACHING; + + public static double UPWIND_DOWNWIND_TOLERANCE_IN_DEG=45.; // TracTrac does 22.5, Marcus Baur suggest 40; Nils Schröder suggests 60 +} \ No newline at end of file diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java index 8f10b68174b..ac829d2eb67 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/LineDetails.java @@ -24,7 +24,7 @@ public interface LineDetails { Distance getLength(); - Bearing getAbsoluteAngleDifferenceToTrueWind(); + Bearing getAngleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind(); NauticalSide getAdvantageousSideWhileApproachingLine(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java index dcd9c41478f..30ec3c702c0 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedLeg.java @@ -13,7 +13,6 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.TargetTimeInfo.LegTargetTimeInfo; import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; import com.sap.sailing.domain.polars.PolarDataService; -import com.sap.sailing.domain.tracking.impl.TrackedLegImpl; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; @@ -27,7 +26,7 @@ public interface TrackedLeg extends Serializable { TrackedRace getTrackedRace(); /** - * Determines whether the current {@link #getLeg() leg} is +/- {@link #UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees + * Determines whether the current {@link #getLeg() leg} is +/- {@link LegType#UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees * collinear with the current wind's bearing. */ boolean isUpOrDownwindLeg(TimePoint at) throws NoWindException; @@ -101,7 +100,7 @@ public interface TrackedLeg extends Serializable { Distance getGreatCircleDistance(TimePoint timePoint, MarkPositionAtTimePointCache markPositionCache); /** - * If the current {@link #getLeg() leg} is +/- {@link TrackedLegImpl#UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees + * If the current {@link #getLeg() leg} is +/- {@link LegType#UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees * collinear with the wind's bearing, pos1 is projected onto the line crossing pos2 in the * wind's bearing, and the distance from the projection to pos2 is returned. Otherwise, it is assumed * that the leg is neither an upwind nor a downwind leg, and hence the along-track distance to mark is diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java index 20da3d93a3d..54630aaf598 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/LineDetailsImpl.java @@ -12,20 +12,20 @@ public class LineDetailsImpl implements LineDetails { private final TimePoint timePoint; private final Waypoint waypoint; private final Distance length; - private final Bearing absoluteAngleDifferenceToTrueWind; + private final Bearing angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind; private final NauticalSide advantageousSidewhileApproachingLine; private final Distance advantage; private final Mark portMarkWhileApproachingLine; private final Mark starboardMarkWhileApproachingLine; public LineDetailsImpl(TimePoint timePoint, Waypoint waypoint, Distance length, - Bearing absoluteAngleDifferenceToTrueWind, NauticalSide advantageousSideWhileApproachingLine, + Bearing angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind, NauticalSide advantageousSideWhileApproachingLine, Distance advantage, Mark portMarkWhileApproachingLine, Mark starboardMarkWhileApproachingLine) { super(); this.timePoint = timePoint; this.waypoint = waypoint; this.length = length; - this.absoluteAngleDifferenceToTrueWind = absoluteAngleDifferenceToTrueWind; + this.angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind = angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind; this.advantageousSidewhileApproachingLine = advantageousSideWhileApproachingLine; this.advantage = advantage; this.portMarkWhileApproachingLine = portMarkWhileApproachingLine; @@ -48,8 +48,8 @@ public class LineDetailsImpl implements LineDetails { } @Override - public Bearing getAbsoluteAngleDifferenceToTrueWind() { - return absoluteAngleDifferenceToTrueWind; + public Bearing getAngleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind() { + return angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind; } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java index a6d5692757c..4c521b26d60 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegImpl.java @@ -60,8 +60,6 @@ public class TrackedLegImpl implements TrackedLeg { private final static Logger logger = Logger.getLogger(TrackedLegImpl.class.getName()); - private final static double UPWIND_DOWNWIND_TOLERANCE_IN_DEG = 45; // TracTrac does 22.5, Marcus Baur suggest 40; Nils Schr�der suggests 60 - private final Leg leg; private final Map trackedLegsOfCompetitors; private TrackedRaceImpl trackedRace; @@ -193,11 +191,11 @@ public class TrackedLegImpl implements TrackedLeg { Bearing legBearing = getLegBearing(at); if (legBearing != null) { double deltaDeg = legBearing.getDifferenceTo(wind.getBearing()).getDegrees(); - if (Math.abs(deltaDeg) < UPWIND_DOWNWIND_TOLERANCE_IN_DEG) { + if (Math.abs(deltaDeg) < LegType.UPWIND_DOWNWIND_TOLERANCE_IN_DEG) { return LegType.DOWNWIND; } else { double deltaDegOpposite = legBearing.getDifferenceTo(wind.getBearing().reverse()).getDegrees(); - if (Math.abs(deltaDegOpposite) < UPWIND_DOWNWIND_TOLERANCE_IN_DEG) { + if (Math.abs(deltaDegOpposite) < LegType.UPWIND_DOWNWIND_TOLERANCE_IN_DEG) { return LegType.UPWIND; } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java index fba23c8af4a..b2258f4d2f8 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedLegOfCompetitorImpl.java @@ -237,7 +237,7 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor { } /** - * If the current {@link #getLeg() leg} is +/- {@link #UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees collinear with the + * If the current {@link #getLeg() leg} is +/- {@link LegType#UPWIND_DOWNWIND_TOLERANCE_IN_DEG} degrees collinear with the * wind's bearing, the competitor's position is projected onto the line crossing mark in the wind's * bearing, and the distance from the projection to the mark is returned. Otherwise, it is assumed that * the leg is neither an upwind nor a downwind leg, and hence the true distance to mark is returned. A diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index bd658050de6..d24b7fa251c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -1529,10 +1529,10 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe final int numberOfFinishWaypointMarks = courseDTO.getFinishMarkPositions() == null ? 0 : courseDTO.getFinishMarkPositions().size(); final Position startLineLeftPosition = numberOfStartWaypointMarks == 0 ? null : courseDTO.getStartMarkPositions().get(0); final Position startLineRightPosition = numberOfStartWaypointMarks < 2 ? null : courseDTO.getStartMarkPositions().get(1); - if (courseDTO.startLineAngleToCombinedWind != null) { + if (courseDTO.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind != null) { startLineAdvantageText.replace(0, startLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage( NumberFormat.getFormat("0.0").format(courseDTO.startLineLengthInMeters), - NumberFormat.getFormat("0.0").format(Math.abs(courseDTO.startLineAngleToCombinedWind)), + NumberFormat.getFormat("0.0").format(Math.abs(courseDTO.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)), courseDTO.startLineAdvantageousSide.name().charAt(0)+courseDTO.startLineAdvantageousSide.name().substring(1).toLowerCase(), NumberFormat.getFormat("0.0").format(courseDTO.startLineAdvantageInMeters))); } else { @@ -1562,10 +1562,10 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe // draw the finish line final Position finishLineLeftPosition = numberOfFinishWaypointMarks == 0 ? null : courseDTO.getFinishMarkPositions().get(0); final Position finishLineRightPosition = numberOfFinishWaypointMarks < 2 ? null : courseDTO.getFinishMarkPositions().get(1); - if (courseDTO.finishLineAngleToCombinedWind != null) { + if (courseDTO.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind != null) { finishLineAdvantageText.replace(0, finishLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage( NumberFormat.getFormat("0.0").format(courseDTO.finishLineLengthInMeters), - NumberFormat.getFormat("0.0").format(Math.abs(courseDTO.finishLineAngleToCombinedWind)), + NumberFormat.getFormat("0.0").format(Math.abs(courseDTO.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)), courseDTO.finishLineAdvantageousSide.name().charAt(0)+courseDTO.finishLineAdvantageousSide.name().substring(1).toLowerCase(), NumberFormat.getFormat("0.0").format(courseDTO.finishLineAdvantageInMeters))); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index d65a7a8c180..38aa9a36f42 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -2050,10 +2050,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S final LineDetails markPositionDTOsAndLineAdvantage = trackedRace.getStartLine(dateAsTimePoint); if (markPositionDTOsAndLineAdvantage != null) { result.startLineLengthInMeters = markPositionDTOsAndLineAdvantage.getLength().getMeters(); - Bearing absoluteAngleDifferenceToTrueWind = markPositionDTOsAndLineAdvantage - .getAbsoluteAngleDifferenceToTrueWind(); - result.startLineAngleToCombinedWind = absoluteAngleDifferenceToTrueWind == null ? null - : absoluteAngleDifferenceToTrueWind.getDegrees(); + Bearing angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind = markPositionDTOsAndLineAdvantage + .getAngleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind(); + result.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind = angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind == null ? null + : angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind.getDegrees(); result.startLineAdvantageousSide = markPositionDTOsAndLineAdvantage .getAdvantageousSideWhileApproachingLine(); Distance advantage = markPositionDTOsAndLineAdvantage.getAdvantage(); @@ -2065,10 +2065,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S final LineDetails markPositionDTOsAndLineAdvantage = trackedRace.getFinishLine(dateAsTimePoint); if (markPositionDTOsAndLineAdvantage != null) { result.finishLineLengthInMeters = markPositionDTOsAndLineAdvantage.getLength().getMeters(); - Bearing absoluteAngleDifferenceToTrueWind = markPositionDTOsAndLineAdvantage - .getAbsoluteAngleDifferenceToTrueWind(); - result.finishLineAngleToCombinedWind = absoluteAngleDifferenceToTrueWind == null ? null - : absoluteAngleDifferenceToTrueWind.getDegrees(); + Bearing angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind = markPositionDTOsAndLineAdvantage + .getAngleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind(); + result.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind = angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind == null ? null + : angleDifferenceFromPortToStarboardWhenApproachingLineToTrueWind.getDegrees(); result.finishLineAdvantageousSide = markPositionDTOsAndLineAdvantage .getAdvantageousSideWhileApproachingLine(); Distance advantage = markPositionDTOsAndLineAdvantage.getAdvantage(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/CoursePositionsDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/CoursePositionsDTO.java index 88da726a389..3014ca6ad5c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/CoursePositionsDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/CoursePositionsDTO.java @@ -21,7 +21,7 @@ public class CoursePositionsDTO implements IsSerializable { * {@link #startLineAdvantageousSide}, {@link #startLineAdvantageInMeters} and {@link #startLineLengthInMeters} are * also both null. */ - public Double startLineAngleToCombinedWind; + public Double startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind; public NauticalSide startLineAdvantageousSide; public Double startLineAdvantageInMeters; public Double startLineLengthInMeters; @@ -31,7 +31,7 @@ public class CoursePositionsDTO implements IsSerializable { * {@link #finishLineAdvantageousSide}, {@link #finishLineAdvantageInMeters} and * {@link #finishLineAdvantageInMeters} are also both null. */ - public Double finishLineAngleToCombinedWind; + public Double finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind; public NauticalSide finishLineAdvantageousSide; public Double finishLineAdvantageInMeters; public Double finishLineLengthInMeters; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java index cbb62fc3539..9bdd4b20ba1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java @@ -1,15 +1,15 @@ package com.sap.sailing.gwt.ui.shared.racemap; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import com.google.gwt.canvas.dom.client.Context2d; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.impl.DegreeBearingImpl; import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sailing.gwt.ui.shared.CoursePositionsDTO; import com.sap.sailing.gwt.ui.shared.MarkDTO; @@ -98,30 +98,129 @@ public class BoatMarkVectorGraphics extends AbstractMarkVectorGraphics { ctx.beginPath(); } + /** + * A boat that acts as a mark which is part of a line needs to be drawn in some orientation. In real life the boat + * would usually be anchoring, therefore displaying the bow to windward. Especially for reaching starts this is, + * however, a somewhat unusual, unfortunate way of displaying the start line / start boat. At least for reaching + * starts we therefore would rather like to rotate the boat such that if it is part of the start line its bow points + * generally towards the next waypoint, with the keel oriented in a right angle to the start line. But downwind + * starts are also possible, and there it may make the most sense to still generally point the bow to windward, keel + * in right angle to start line or, if available, really aligned to the wind. + *

+ * + * The {@link CoursePositionsDTO} object optionally contains wind information for + * {@link CoursePositionsDTO#startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind start} and + * {@link CoursePositionsDTO#finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind finish} line. If these values are available then together + * with the line orientation that we get from its marks' positions we can infer the combined wind direction and + * rotate the boat mark accordingly for an upwind/downwind start/finish. In the absence of wind information we + * default to the algorithm for a reaching start/finish. + *

+ * + * Only for a reaching start/finish we'd like to draw the boat in a right angle to the line with the bow pointing in + * the direction in which the line is being crossed, so generally to the next waypoint for the start line, and away + * from the previous waypoint for the finish line. This can be computed using the cross-track error (XTE) off the + * bearing from the boat mark to the pin end, as follows (this example for the start line): if the next waypoint has + * a positive XTE (bearing "right" of the bearing from start boat to pin end), the start boat is on the starboard + * side of the line and needs to be rotated 90deg clockwise from the bearing to the pin end; in case of a negative + * XTE the start boat happens to be on the unusual port end of the line and needs to be rotated 90deg + * counter-clockwise from the bearing to the pin end. + *

+ */ @Override public Bearing getRotationInDegrees(CoursePositionsDTO coursePositionsDTO) { MarkDTO firstMark = null; MarkDTO secondMark = null; - for (WaypointDTO currentWaypoint : coursePositionsDTO.course.waypoints) { + boolean isStart = true; + boolean isFinish; + Position previousWaypointPosition = null; + final Iterator waypointPosIter = coursePositionsDTO.waypointPositions.iterator(); + Position currentWaypointPosition = waypointPosIter.hasNext() ? waypointPosIter.next() : null; + for (Iterator waypointIter = coursePositionsDTO.course.waypoints.iterator(); waypointIter.hasNext(); ) { + WaypointDTO currentWaypoint = waypointIter.next(); + Position nextWaypointPosition = waypointPosIter.hasNext() ? waypointPosIter.next() : null; + isFinish = !waypointIter.hasNext(); if (currentWaypoint.passingInstructions == PassingInstruction.Line) { Iterator marks = currentWaypoint.controlPoint.getMarks().iterator(); firstMark = marks.next(); if (marks.hasNext()) { secondMark = marks.next(); if (markIdAsString.equals(firstMark.getIdAsString())) { - return getLineBearing(firstMark.position, secondMark.position); + return getLineBearing(firstMark.position, secondMark.position, isStart, + coursePositionsDTO.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, nextWaypointPosition, + isFinish, coursePositionsDTO.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, + previousWaypointPosition, /* boatIsFirstMark */ true); } else if (markIdAsString.equals(secondMark.getIdAsString())) { - return getLineBearing(secondMark.position, firstMark.position); + return getLineBearing(secondMark.position, firstMark.position, isStart, + coursePositionsDTO.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, nextWaypointPosition, + isFinish, coursePositionsDTO.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, + previousWaypointPosition, /* boatIsFirstMark */ false); } } } + isStart = false; + previousWaypointPosition = currentWaypointPosition; + currentWaypointPosition = nextWaypointPosition; } return null; } - private Bearing getLineBearing(Position boatMarkPosition, Position pinEndPosition) { + private Bearing getLineBearing(Position boatMarkPosition, Position pinEndPosition, boolean isStart, + Double startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, Position nextWaypointPosition, boolean isFinish, + Double finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, Position previousWaypointPosition, boolean boatIsFirstMark) { // by default, assume the boat is on the starboard side of the line - return boatMarkPosition.getBearingGreatCircle(pinEndPosition); + final Bearing bearingFromBoatMarkToPinEnd = boatMarkPosition.getBearingGreatCircle(pinEndPosition); + final Bearing result; + if (isStart) { + if (nextWaypointPosition == null) { + result = null; + } else { + if (isReach(startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)) { + result = bearingOrReverseDependingOnXTEToOther(boatMarkPosition, bearingFromBoatMarkToPinEnd, nextWaypointPosition); + } else { + final boolean pinEndOnPortWhenApproachingLine = pinEndPosition.crossTrackError(boatMarkPosition, boatMarkPosition.getBearingGreatCircle(nextWaypointPosition)).compareTo(Distance.NULL) < 0; + result = getWindFrom(startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, + bearingFromBoatMarkToPinEnd, pinEndOnPortWhenApproachingLine).add(new DegreeBearingImpl(-90) /* bow points east with rotation 0deg */); + } + } + } else { + if (previousWaypointPosition == null) { + result = null; + } else { + if (isReach(finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)) { + result = bearingOrReverseDependingOnXTEToOther(pinEndPosition, bearingFromBoatMarkToPinEnd.reverse(), previousWaypointPosition); + } else { + final boolean pinEndOnPortWhenApproachingLine = pinEndPosition.crossTrackError(previousWaypointPosition, previousWaypointPosition.getBearingGreatCircle(boatMarkPosition)).compareTo(Distance.NULL) < 0; + result = getWindFrom(finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, + bearingFromBoatMarkToPinEnd, pinEndOnPortWhenApproachingLine).add(new DegreeBearingImpl(-90) /* bow points east with rotation 0deg */); + } + } + } + return result; + } + + private Bearing getWindFrom(Double lineAngleFromPortToStarboardWhenApproachingLineToCombinedWind, + final Bearing bearingFromBoatMarkToPinEnd, final boolean pinEndOnPortWhenApproachingLine) { + final Bearing windFrom = pinEndOnPortWhenApproachingLine ? + // pin end on port, as usual: + bearingFromBoatMarkToPinEnd.reverse().add(new DegreeBearingImpl(lineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)) : + // start boat on port; that's unusual: + bearingFromBoatMarkToPinEnd.add(new DegreeBearingImpl(lineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)); + return windFrom; + } + + private Bearing bearingOrReverseDependingOnXTEToOther(Position pos, Bearing bearing, Position other) { + final Bearing result; + if (pos.crossTrackError(other, bearing).compareTo(Distance.NULL) > 0) { + result = bearing.reverse(); + } else { + result = bearing; + } + return result; + } + + private boolean isReach(Double lineAngleToCombinedWind) { + return lineAngleToCombinedWind == null || + Math.abs(90-Math.abs(lineAngleToCombinedWind)) > LegType.UPWIND_DOWNWIND_TOLERANCE_IN_DEG; } } From 845e24f8f0550d43700580a52f7c8b1d10e0cb02 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 17 Jan 2017 18:33:37 +0100 Subject: [PATCH 157/191] fixed the highlight/selection display for start/finish boat mark Change-Id: I2b6a2ee0ce30e8d64d2a31684106a298c587a077 --- .../sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java index 9bdd4b20ba1..842e2d1d966 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/racemap/BoatMarkVectorGraphics.java @@ -20,8 +20,8 @@ public class BoatMarkVectorGraphics extends AbstractMarkVectorGraphics { private final static Distance BOAT_MARK_HEIGHT_IN_METERS = new MeterDistance(6.2); private final static Distance BOAT_MARK_WIDTH_IN_METERS = new MeterDistance(3.5); private final static double BOAT_MARK_SELECTION_SCALE = 3.5; - private final static double BOAT_MARK_SELECTION_TRANSLATE_X = -10; - private final static double BOAT_MARK_SELECTION_TRANSLATE_Y = -30; + private final static double BOAT_MARK_SELECTION_TRANSLATE_X = 50; + private final static double BOAT_MARK_SELECTION_TRANSLATE_Y = -130; private final String markIdAsString; public BoatMarkVectorGraphics(MarkType type, String color, String shape, String pattern, String markIdAsString) { From 7c062f643dd3c1d369d452949459e33f2b6dc1df Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 19 Jan 2017 08:15:20 +0100 Subject: [PATCH 158/191] bug4029 Implemented batching for storing fixes during master data import --- .../ImportMasterDataOperation.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 4fc6033d2ad..6a52cdd1380 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -72,6 +72,8 @@ public class ImportMasterDataOperation extends private static final long serialVersionUID = 3131715325307370303L; private static final Logger logger = Logger.getLogger(ImportMasterDataOperation.class.getName()); + + private static final int BATCH_SIZE_FOR_IMPORTING_FIXES = 5000; private final TopLevelMasterData masterData; @@ -406,26 +408,38 @@ public class ImportMasterDataOperation extends SensorFixStore store = toState.getSensorFixStore(); for (Entry> entry : raceLogTrackingFixes.entrySet()) { DeviceIdentifier device = entry.getKey(); + final Collection fixesToAddAsBatch = new ArrayList<>(BATCH_SIZE_FOR_IMPORTING_FIXES); for (Timed fixToAdd : entry.getValue()) { - try { - if (fixToAdd instanceof CompactGPSFixMovingImpl) { - CompactGPSFixMovingImpl gpsFix = (CompactGPSFixMovingImpl) fixToAdd; - fixToAdd = new GPSFixMovingImpl(gpsFix.getPosition(), fixToAdd.getTimePoint(), - ((CompactGPSFixMovingImpl) fixToAdd).getSpeed()); - } else if (fixToAdd instanceof CompactGPSFixImpl) { - CompactGPSFixImpl gpsFix = (CompactGPSFixImpl) fixToAdd; - fixToAdd = new GPSFixImpl(gpsFix.getPosition(), fixToAdd.getTimePoint()); - } - store.storeFix(device, fixToAdd); - } catch (NoCorrespondingServiceRegisteredException e) { - logger.severe("Failed to store race log tracking fix while importing."); - e.printStackTrace(); + if (fixToAdd instanceof CompactGPSFixMovingImpl) { + CompactGPSFixMovingImpl gpsFix = (CompactGPSFixMovingImpl) fixToAdd; + fixToAdd = new GPSFixMovingImpl(gpsFix.getPosition(), fixToAdd.getTimePoint(), + ((CompactGPSFixMovingImpl) fixToAdd).getSpeed()); + } else if (fixToAdd instanceof CompactGPSFixImpl) { + CompactGPSFixImpl gpsFix = (CompactGPSFixImpl) fixToAdd; + fixToAdd = new GPSFixImpl(gpsFix.getPosition(), fixToAdd.getTimePoint()); + } + fixesToAddAsBatch.add(fixToAdd); + if (fixesToAddAsBatch.size() == BATCH_SIZE_FOR_IMPORTING_FIXES) { + storeFixes(store, device, fixesToAddAsBatch); } } + if (!fixesToAddAsBatch.isEmpty()) { + storeFixes(store, device, fixesToAddAsBatch); + } } } } + private void storeFixes(SensorFixStore store, DeviceIdentifier device, final Collection fixesToAddAsBatch) { + try { + store.storeFixes(device, fixesToAddAsBatch); + fixesToAddAsBatch.clear(); + } catch (NoCorrespondingServiceRegisteredException e) { + logger.severe("Failed to store race log tracking fixes while importing."); + e.printStackTrace(); + } + } + private void createRegattas(RacingEventService toState, LeaderboardGroup leaderboardGroup) { Iterable leaderboards = leaderboardGroup.getLeaderboards(); for (Leaderboard leaderboard : leaderboards) { From 94c7e9a3263ecda359758085e15e70f5719ba648 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 19 Jan 2017 08:37:52 +0100 Subject: [PATCH 159/191] bug4029 Implemented progress for sensor fixed during master data import --- .../sap/sailing/domain/common/DataImportSubProgress.java | 6 ++++++ .../sailing/domain/common/i18n/CommonStringMessages.java | 1 + .../sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../ImportMasterDataOperation.java | 9 ++++++++- 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DataImportSubProgress.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DataImportSubProgress.java index 444b97bc7de..7d8801dbdec 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DataImportSubProgress.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DataImportSubProgress.java @@ -58,6 +58,12 @@ public enum DataImportSubProgress { return messages.importWindTracks(); } }, + IMPORT_SENSOR_FIXES { + @Override + public String getMessage(CommonStringMessages messages) { + return messages.importSensorFixes(); + } + }, UPDATE_EVENT_LEADERBOARD_GROUP_LINKS { @Override public String getMessage(CommonStringMessages messages) { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/i18n/CommonStringMessages.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/i18n/CommonStringMessages.java index 932e8e12ae1..4ce29972f79 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/i18n/CommonStringMessages.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/i18n/CommonStringMessages.java @@ -12,6 +12,7 @@ public interface CommonStringMessages { String importWait(); String importLeaderboardGroups(); String importWindTracks(); + String importSensorFixes(); String updateEventLeaderboardGroupLinks(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index a2d8b3d743d..f999351676d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1561,6 +1561,7 @@ importInit=Initializing Import importWait=Waiting for other data import operations to finish importLeaderboardGroups=Importing leaderboard groups importWindTracks=Importing wind tracks +importSensorFixes=Importing sensor fixes updateEventLeaderboardGroupLinks=Updating Event-LeaderboardGroup links strategySimulatorTitle=Strategy Simulator controlSettings=Control settings diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index f129d29bf8e..306298386de 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1547,6 +1547,7 @@ importInit=Import wird initialisiert importWait=Warten, bis andere Datenimport-Vorgänge angeschlossen sind importLeaderboardGroups=Ranglisten-Gruppen werden importiert importWindTracks=Windmessungen werden importiert +importSensorFixes=Sensor-Fixes werden importiert updateEventLeaderboardGroupLinks=Verbindungen zwischen Veranstaltungen und Ranglisten-Gruppen werden aktualisiert strategySimulatorTitle=Strategie-Simulator controlSettings=Einstellungen diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 6a52cdd1380..4398499236e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -125,6 +125,9 @@ public class ImportMasterDataOperation extends progress.setOverAllProgressPct(0.5); progress.setCurrentSubProgressPct(0); createWindTracks(toState); + progress.setCurrentSubProgress(DataImportSubProgress.IMPORT_SENSOR_FIXES); + progress.setOverAllProgressPct(0.8); + progress.setCurrentSubProgressPct(0); importRaceLogTrackingGPSFixes(toState); if (masterData.getDeviceConfigurations() != null) { importDeviceConfigurations(toState); @@ -396,7 +399,7 @@ public class ImportMasterDataOperation extends } i++; progress.setCurrentSubProgressPct((double) i / numOfWindTracks); - progress.setOverAllProgressPct(0.5 + (0.5) * ((double) i / numOfWindTracks)); + progress.setOverAllProgressPct(0.5 + (0.3) * ((double) i / numOfWindTracks)); } } @@ -406,6 +409,8 @@ public class ImportMasterDataOperation extends Map> raceLogTrackingFixes = masterData.getRaceLogTrackingFixes(); if (raceLogTrackingFixes != null) { SensorFixStore store = toState.getSensorFixStore(); + int i = 0; + final int numberOfDevices = raceLogTrackingFixes.size(); for (Entry> entry : raceLogTrackingFixes.entrySet()) { DeviceIdentifier device = entry.getKey(); final Collection fixesToAddAsBatch = new ArrayList<>(BATCH_SIZE_FOR_IMPORTING_FIXES); @@ -426,6 +431,8 @@ public class ImportMasterDataOperation extends if (!fixesToAddAsBatch.isEmpty()) { storeFixes(store, device, fixesToAddAsBatch); } + i++; + progress.setCurrentSubProgressPct(0.8 + (0.2) * ((double) i / numberOfDevices)); } } } From f09ac0dd1b2e03d371e460b39b0f81fb28a44c40 Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Fri, 20 Jan 2017 09:16:43 +0100 Subject: [PATCH 160/191] add release notes --- .../sailing/gwt/home/solutions/RaceCommitteeAppNotes.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/RaceCommitteeAppNotes.html b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/RaceCommitteeAppNotes.html index 5ea4177ec7e..9bba7607dae 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/RaceCommitteeAppNotes.html +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/home/solutions/RaceCommitteeAppNotes.html @@ -4,6 +4,14 @@

What's New - SAP Sailing Race Manager

+
January 2017
+ +
    +
  • Phone only (xhdpi and higher): If the font size (Android display settings) is larger + than default, the summary screen will be use a different layout (two lines instead of + one). This way the layout will not wrap the time or labels.
  • +
+
November 2016
    From c02148aa92c6f20e0108a1abf83f6dc60642dadc Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Mon, 23 Jan 2017 08:46:36 +0100 Subject: [PATCH 161/191] bug 4029 Fixed a copy&paste problem when calculating the import progress of sensor fixes --- .../operationaltransformation/ImportMasterDataOperation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 4398499236e..d861dd49adc 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -432,7 +432,7 @@ public class ImportMasterDataOperation extends storeFixes(store, device, fixesToAddAsBatch); } i++; - progress.setCurrentSubProgressPct(0.8 + (0.2) * ((double) i / numberOfDevices)); + progress.setCurrentSubProgressPct((double) i / numberOfDevices); } } } From 40d0541d1b91533268ea821fbf33fe654ed4ce5f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 12:11:03 +0100 Subject: [PATCH 162/191] added maneuver metrics Change-Id: If128603fa06c8f2f4152a4b2f4a9ae19ace60f71 --- .../stringmessages/Sailing_StringMessages.properties | 2 ++ .../Sailing_StringMessages_de.properties | 2 ++ .../sailing/datamining/data/HasManeuverContext.java | 7 +++++++ .../datamining/impl/data/ManeuverWithContext.java | 11 +++++++++++ 4 files changed, 22 insertions(+) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index c3317d84fd8..6ad873dde77 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -72,6 +72,8 @@ Tack=Tack SpeedBefore=Speed Before Maneuver SpeedAfter=Speed After Maneuver DirectionChange=Direction Change in Degrees +AbsoluteDirectionChange=Absolute Direction Change in Degrees (Positive) +ToSide=To Side (Port / Starboard) ManeuverLoss=Maneuver Loss Waypoint=Waypoint PassingSide=Passing Side diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index 4c6d486e4ca..cb96da080fd 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -72,6 +72,8 @@ Tack=Bug SpeedBefore=Geschwindigkeit bevor dem Manöver SpeedAfter=Geschwindigkeit nach dem Manöver DirectionChange=Richtungsänderung in Grad +AbsoluteDirectionChange=Absolute Richtungsänderung in Grad (positiv) +ToSide=In Richtung (Backbord / Steuerbord) ManeuverLoss=Manöververlust Waypoint=Wegpunkt PassingSide=Passierende Seite diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java index 6ec4fba870f..1a8631c2ec9 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java @@ -2,6 +2,7 @@ package com.sap.sailing.datamining.data; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.ManeuverType; +import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.tracking.Maneuver; @@ -31,6 +32,12 @@ public interface HasManeuverContext { @Statistic(messageKey="DirectionChange", resultDecimals=2, ordinal=2) Double getDirectionChangeInDegrees(); + + @Statistic(messageKey="AbsoluteDirectionChange", resultDecimals=2, ordinal=2) + Double getAbsoluteDirectionChangeInDegrees(); + + @Dimension(messageKey="ToSide") + NauticalSide getToSide(); @Statistic(messageKey="ManeuverLoss", resultDecimals=0, ordinal=3) Distance getManeuverLoss(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java index 5d1b975b27b..7f127ebc462 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java @@ -4,6 +4,7 @@ import com.sap.sailing.datamining.data.HasManeuverContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.ManeuverType; +import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.tracking.Maneuver; @@ -53,6 +54,16 @@ public class ManeuverWithContext implements HasManeuverContext { return getManeuver().getDirectionChangeInDegrees(); } + @Override + public Double getAbsoluteDirectionChangeInDegrees() { + return Math.abs(getManeuver().getDirectionChangeInDegrees()); + } + + @Override + public NauticalSide getToSide() { + return getManeuver().getDirectionChangeInDegrees() >= 0 ? NauticalSide.STARBOARD : NauticalSide.PORT; + } + @Override public Distance getManeuverLoss() { return getManeuver().getManeuverLoss(); From d83c089a3e5c1ecc2e3d900226426ddca42d34ff Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 15:42:53 +0100 Subject: [PATCH 163/191] added DATA_MINING permission and enforce it in DataaMining entry point and service Change-Id: Ie59b89676dfe1317c5fe22c75902bee8e0a91779 --- .../domain/common/security/Permission.java | 1 + .../gwt/ui/datamining/DataMiningEntryPoint.java | 4 +++- .../gwt/ui/server/DataMiningServiceImpl.java | 16 ++++++++++++++++ .../com.sap.sailing.www/release_notes_admin.html | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/Permission.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/Permission.java index d03bfa17191..b0e3272131a 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/Permission.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/Permission.java @@ -37,6 +37,7 @@ public enum Permission implements com.sap.sse.security.shared.Permission { LEADERBOARD, LEADERBOARD_GROUP, TRACKED_RACE, + DATA_MINING, ; // TODO once we can use Java8 here, move this up into a "default" method on the Permission interface diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index 4e88d39267d..5df2c357e44 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -9,6 +9,8 @@ import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.RootLayoutPanel; import com.google.gwt.user.client.ui.SplitLayoutPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.security.Permission; +import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider; import com.sap.sailing.gwt.common.authentication.FixedSailingAuthentication; import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint; import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants; @@ -39,7 +41,6 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { Highcharts.ensureInjectedWithMore(); super.doOnModuleLoad(); session = new UUIDDataMiningSession(UUID.randomUUID()); - EntryPointHelper.registerASyncService((ServiceDefTarget) dataMiningService, RemoteServiceMappingConstants.dataMiningServiceRemotePath); createDataminingPanel(); } @@ -48,6 +49,7 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { SAPHeaderWithAuthentication header = new SAPHeaderWithAuthentication(getStringMessages().sapSailingAnalytics(), getStringMessages().dataMining()); GenericAuthentication genericSailingAuthentication = new FixedSailingAuthentication(getUserService(), header.getAuthenticationMenuView()); AuthorizedContentDecorator authorizedContentDecorator = new GenericAuthorizedContentDecorator(genericSailingAuthentication); + authorizedContentDecorator.setPermissionToCheck(Permission.DATA_MINING, SailingPermissionsForRoleProvider.INSTANCE); authorizedContentDecorator.setContentWidgetFactory(new WidgetFactory() { @Override public Widget get() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/DataMiningServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/DataMiningServiceImpl.java index bcae32e7280..a929e6261d2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/DataMiningServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/DataMiningServiceImpl.java @@ -11,10 +11,13 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import org.apache.shiro.SecurityUtils; import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.google.gwt.user.server.rpc.RemoteServiceServlet; +import com.sap.sailing.domain.common.security.Permission; +import com.sap.sailing.domain.common.security.Permission.Mode; import com.sap.sailing.gwt.ui.datamining.DataMiningService; import com.sap.sailing.server.RacingEventService; import com.sap.sse.common.settings.SerializableSettings; @@ -68,17 +71,20 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public Date getComponentsChangedTimepoint() { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ)); return getDataMiningServer().getComponentsChangedTimepoint(); } @Override public HashSet getAllStatistics(String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ)); Iterable> statistics = getDataMiningServer().getAllStatistics(); return functionsAsDTOs(statistics, localeInfoName); } @Override public HashSet getStatisticsFor(DataRetrieverChainDefinitionDTO retrieverChainDefinition, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, retrieverChainDefinition.getName())); Class retrievedDataType = getDataMiningServer().getDataRetrieverChainDefinitionForDTO(retrieverChainDefinition).getRetrievedDataType(); Iterable> statistics = getDataMiningServer().getStatisticsFor(retrievedDataType); return functionsAsDTOs(statistics, localeInfoName); @@ -86,6 +92,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public HashSet getAggregatorDefinitionsFor(FunctionDTO extractionFunction, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, extractionFunction.getFunctionName())); Class returnType = getReturnType(extractionFunction); @SuppressWarnings("unchecked") Iterable> definitions = @@ -111,6 +118,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public HashSet getDimensionsFor(FunctionDTO statisticToCalculate, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, statisticToCalculate.getFunctionName())); Class baseDataType = getBaseDataType(statisticToCalculate); Iterable> dimensions = getDataMiningServer().getDimensionsFor(baseDataType); return functionsAsDTOs(dimensions, localeInfoName); @@ -123,6 +131,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public HashMap> getDimensionsMappedByLevelFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, dataRetrieverChainDefinitionDTO.getName())); DataRetrieverChainDefinition dataRetrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinitionForDTO(dataRetrieverChainDefinitionDTO); Map, Iterable>> dimensions = getDataMiningServer() .getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); @@ -132,6 +141,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public HashMap> getReducedDimensionsMappedByLevelFor( DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, dataRetrieverChainDefinitionDTO.getName())); DataRetrieverChainDefinition dataRetrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinitionForDTO(dataRetrieverChainDefinitionDTO); Map, Iterable>> reducedDimensions = getDataMiningServer() .getReducedDimensionsMappedByLevelFor(dataRetrieverChainDefinition); @@ -163,12 +173,14 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public ArrayList getDataRetrieverChainDefinitions(String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ)); Iterable> dataRetrieverChainDefinitions = getDataMiningServer().getDataRetrieverChainDefinitions(); return dataRetrieverChainDefinitionsAsDTOs(dataRetrieverChainDefinitions, localeInfoName); } @Override public ArrayList getDataRetrieverChainDefinitionsFor(FunctionDTO statisticToCalculate, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, statisticToCalculate.getFunctionName())); Class baseDataType = getBaseDataType(statisticToCalculate); @SuppressWarnings("unchecked") Iterable> dataRetrieverChainDefinitions = (Iterable>)(Iterable) getDataMiningServer().getDataRetrieverChainDefinitionsByDataType(baseDataType); @@ -192,6 +204,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM public QueryResultDTO> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, DataRetrieverLevelDTO retrieverLevelDTO, HashSet dimensionDTOs, HashMap retrieverSettingsDTO, HashMap>> filterSelectionDTO, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, dataRetrieverChainDefinitionDTO.getName())); DataMiningServer dataMiningServer = getDataMiningServer(); DataRetrieverChainDefinition retrieverChainDefinition = dataMiningServer.getDataRetrieverChainDefinitionForDTO(dataRetrieverChainDefinitionDTO); DataRetrieverLevel retrieverLevel = retrieverChainDefinition.getDataRetrieverLevel(retrieverLevelDTO.getLevel()); @@ -251,6 +264,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public QueryResultDTO runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinitionDTO) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, queryDefinitionDTO.getDataRetrieverChainDefinition().getName())); DataMiningServer dataMiningServer = getDataMiningServer(); StatisticQueryDefinition queryDefinition = dataMiningServer.getQueryDefinitionForDTO(queryDefinitionDTO); Query query = dataMiningServer.createQuery(queryDefinition); @@ -260,6 +274,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public HashSet getPredefinedQueryIdentifiers() { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ)); HashSet predefinedQueryNames = new HashSet(); for (PredefinedQueryIdentifier predefinedQueryName : getDataMiningServer().getPredefinedQueryIdentifiers()) { predefinedQueryNames.add(predefinedQueryName); @@ -269,6 +284,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM @Override public QueryResultDTO runPredefinedQuery(DataMiningSession session, PredefinedQueryIdentifier identifier, String localeInfoName) { + SecurityUtils.getSubject().checkPermission(Permission.DATA_MINING.getStringPermissionForObjects(Mode.READ, identifier.getIdentifier())); DataMiningServer dataMiningServer = getDataMiningServer(); ModifiableStatisticQueryDefinitionDTO queryDefinitionDTO = dataMiningServer.getPredefinedQueryDefinitionDTO(identifier); if (queryDefinitionDTO != null) { diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 01cb71e9261..22a6cbf948c 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -42,6 +42,9 @@ committed timestamp is revoked (regardless of the contents of the date/time field), allowing for inference to take place if the regatta has been configured for tracking times inference. +
  • There is a new permission, DATA_MINING, which is now required in order to use the + /gwt/DataMining.html entry point and the related back-end service. +

December 2016

    From 4aba3149bb083a0e85dc4072d2ec4d11939d83ed Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 15:52:21 +0100 Subject: [PATCH 164/191] added more datamining metrics to Maneuver, including wind speed clusters Change-Id: I3d2bcb514026f360a508eb3c6fa272ab0d18a1bd --- .../sailing/datamining/data/HasGPSFixContext.java | 10 +--------- .../datamining/data/HasManeuverContext.java | 2 +- .../datamining/impl/data/GPSFixWithContext.java | 14 +------------- .../datamining/impl/data/ManeuverWithContext.java | 10 ++++++++++ 4 files changed, 13 insertions(+), 23 deletions(-) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java index 3ef332f9532..70edfa5699d 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java @@ -1,14 +1,9 @@ package com.sap.sailing.datamining.data; -import java.util.Locale; - import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sse.datamining.annotations.Connector; -import com.sap.sse.datamining.annotations.Dimension; -import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; -import com.sap.sse.i18n.ResourceBundleStringMessages; -public interface HasGPSFixContext { +public interface HasGPSFixContext extends HasWind { @Connector(scanForStatistics=false) public HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); @@ -16,7 +11,4 @@ public interface HasGPSFixContext { @Connector(ordinal=1) public GPSFixMoving getGPSFix(); - @Dimension(messageKey="WindStrengthInBeaufort", ordinal=11) - public ClusterDTO getWindStrengthAsBeaufortCluster(Locale locale, ResourceBundleStringMessages stringMessages); - } \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java index 1a8631c2ec9..1fbd2b0b8df 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java @@ -10,7 +10,7 @@ import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -public interface HasManeuverContext { +public interface HasManeuverContext extends HasWind { @Connector(scanForStatistics=false) HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java index 65830923d3e..74eb956a3b7 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java @@ -1,15 +1,9 @@ package com.sap.sailing.datamining.impl.data; -import java.util.Locale; - -import com.sap.sailing.datamining.Activator; import com.sap.sailing.datamining.data.HasGPSFixContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.tracking.GPSFixMoving; -import com.sap.sse.datamining.data.Cluster; -import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; -import com.sap.sse.i18n.ResourceBundleStringMessages; public class GPSFixWithContext implements HasGPSFixContext { @@ -34,13 +28,7 @@ public class GPSFixWithContext implements HasGPSFixContext { } @Override - public ClusterDTO getWindStrengthAsBeaufortCluster(Locale locale, ResourceBundleStringMessages stringMessages) { - Wind wind = getWind(); - Cluster cluster = Activator.getClusterGroups().getWindStrengthInBeaufortClusterGroup().getClusterFor(wind); - return new ClusterDTO(cluster.asLocalizedString(locale, stringMessages)); - } - - private Wind getWind() { + public Wind getWind() { if (wind == null) { wind = getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() .getWind(gpsFix.getPosition(), gpsFix.getTimePoint()); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java index 7f127ebc462..51fc3dacb2c 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java @@ -7,12 +7,14 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.tracking.Maneuver; public class ManeuverWithContext implements HasManeuverContext { private final HasTrackedLegOfCompetitorContext trackedLegOfCompetitor; private final Maneuver maneuver; + private Wind wind; public ManeuverWithContext(HasTrackedLegOfCompetitorContext trackedLegOfCompetitor, Maneuver maneuver) { this.trackedLegOfCompetitor = trackedLegOfCompetitor; @@ -69,4 +71,12 @@ public class ManeuverWithContext implements HasManeuverContext { return getManeuver().getManeuverLoss(); } + @Override + public Wind getWind() { + if (wind == null) { + wind = getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() + .getWind(getManeuver().getPosition(), getManeuver().getTimePoint()); + } + return wind; + } } From c29316a6e4646d4066967f6d7aef98952a13b8a2 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 15:53:16 +0100 Subject: [PATCH 165/191] added missing HasWind interface Change-Id: I2ed381f8bf782575540b1ad8a32c2a30479648e5 --- .../sap/sailing/datamining/data/HasWind.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java new file mode 100755 index 00000000000..62b1a7c8582 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java @@ -0,0 +1,21 @@ +package com.sap.sailing.datamining.data; + +import java.util.Locale; + +import com.sap.sailing.datamining.Activator; +import com.sap.sailing.domain.common.Wind; +import com.sap.sse.datamining.annotations.Dimension; +import com.sap.sse.datamining.data.Cluster; +import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; +import com.sap.sse.i18n.ResourceBundleStringMessages; + +public interface HasWind { + @Dimension(messageKey="WindStrengthInBeaufort", ordinal=11) + default ClusterDTO getWindStrengthAsBeaufortCluster(Locale locale, ResourceBundleStringMessages stringMessages) { + Wind wind = getWind(); + Cluster cluster = Activator.getClusterGroups().getWindStrengthInBeaufortClusterGroup().getClusterFor(wind); + return new ClusterDTO(cluster.asLocalizedString(locale, stringMessages)); + } + + Wind getWind(); +} From 398792c5c56b8804bb60b86e876f68ee8d0fe4c8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 19:07:05 +0100 Subject: [PATCH 166/191] fix for bug 4034: concatenated functions pass through the parameter provider if a later function needs it Change-Id: Ib7114af25ff6772d5450df121585f076fb55e7ed --- .../datamining/factories/QueryFactory.java | 16 +---------- .../sse/datamining/functions/Function.java | 1 + .../ConcatenatingCompoundFunction.java | 10 +++++++ .../functions/MethodWrappingFunction.java | 27 ++++++++++++++++++- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java index fb393e49a8f..04d179bcd2a 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -88,20 +87,7 @@ public class QueryFactory { } private boolean functionNeedsLocalizationParameters(Function function) { - Iterator> parameterTypesIterator = function.getParameters().iterator(); - int parameterCount = 0; - while (parameterTypesIterator.hasNext()) { - parameterCount++; - parameterTypesIterator.next(); - } - if (parameterCount != 2) { - return false; - } - - parameterTypesIterator = function.getParameters().iterator(); - Class firstParameter = parameterTypesIterator.next(); - Class secondParameter = parameterTypesIterator.next(); - return firstParameter.isAssignableFrom(Locale.class) && secondParameter.isAssignableFrom(ResourceBundleStringMessages.class); + return function.needsLocalizationParameters(); } @SuppressWarnings("unchecked") diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java index cc78829b24c..de6b1af29c0 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java @@ -9,6 +9,7 @@ public interface Function { public Class getDeclaringType(); public Iterable> getParameters(); + public boolean needsLocalizationParameters(); public Class getReturnType(); public boolean isDimension(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index 0ed9e6c763b..ae412e24c5c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -87,6 +87,16 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return getFirstFunction().getParameters(); } + @Override + public boolean needsLocalizationParameters() { + for (final Function function : getFunctions()) { + if (function.needsLocalizationParameters()) { + return true; + } + } + return false; + } + /** * @return the return type of the last function. */ diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java index 7b34364e908..25252dac5d5 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java @@ -3,6 +3,7 @@ package com.sap.sse.datamining.impl.functions; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; +import java.util.Iterator; import java.util.Locale; import java.util.logging.Level; @@ -79,6 +80,23 @@ public class MethodWrappingFunction extends AbstractFunction> parameterTypesIterator = getParameters().iterator(); + int parameterCount = 0; + while (parameterTypesIterator.hasNext()) { + parameterCount++; + parameterTypesIterator.next(); + } + if (parameterCount != 2) { + return false; + } + parameterTypesIterator = getParameters().iterator(); + Class firstParameter = parameterTypesIterator.next(); + Class secondParameter = parameterTypesIterator.next(); + return firstParameter.isAssignableFrom(Locale.class) && secondParameter.isAssignableFrom(ResourceBundleStringMessages.class); + } + @Override public ReturnType tryToInvoke(Object instance) { return tryToInvoke(instance, new Object[0]); @@ -86,7 +104,14 @@ public class MethodWrappingFunction extends AbstractFunction Date: Mon, 23 Jan 2017 19:36:32 +0100 Subject: [PATCH 167/191] pass on parameter provider also to subsequent function invocations Change-Id: I697c60a11cfadf8d35c5a2f824911dab365d1ced --- .../impl/functions/ConcatenatingCompoundFunction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index ae412e24c5c..e27ef4a87a4 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -169,7 +169,7 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< Object result = functionsIterator.next().tryToInvoke(instance, parameterProvider); while (functionsIterator.hasNext()) { Function function = functionsIterator.next(); - result = function.tryToInvoke(result); + result = function.tryToInvoke(result, parameterProvider); if (result == null) { return null; } From 0615a2f0331b78e9c5d96ec6a547b4273eb7ed05 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 19:37:11 +0100 Subject: [PATCH 168/191] adjusted datamining tests to changes for bug 4034 Change-Id: Ifd5eed43329a68fd4dd0b778c3cfb445c0e8d956 --- .../impl/functions/TestCompoundFunction.java | 21 ++++++++++++++++++- .../TestMethodWrappingFunctionInvocation.java | 6 ++++-- .../test/data/impl/ContainerElement.java | 2 ++ .../test/data/impl/ContainerElementImpl.java | 5 +++++ .../test/data/impl/DataTypeWithContext.java | 1 - .../data/impl/DataTypeWithContextImpl.java | 1 - 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java index 35942421c61..27ab7bf1347 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java @@ -22,18 +22,28 @@ public class TestCompoundFunction { private Function getContainerElementFunction; private Function getNameFunction; + private Function getStringFromIntFunction; private Function compoundFunction; + private Function compoundFunctionWithSecondTakingSingleIntParameter; @Before public void initializeCompoundFunction() throws ClassCastException, NoSuchMethodException, SecurityException { + { List> functions = new ArrayList<>(); getContainerElementFunction = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(MarkedContainer.class.getMethod("getContainerElement", new Class[0])); functions.add(getContainerElementFunction); getNameFunction = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(ContainerElement.class.getMethod("getName", new Class[0])); functions.add(getNameFunction); - compoundFunction = FunctionTestsUtil.getFunctionFactory().createCompoundFunction(functions); + } + { + List> functions = new ArrayList<>(); + functions.add(getContainerElementFunction); + getStringFromIntFunction = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(ContainerElement.class.getMethod("getStringFromInt", new Class[] { int.class })); + functions.add(getStringFromIntFunction); + compoundFunctionWithSecondTakingSingleIntParameter = FunctionTestsUtil.getFunctionFactory().createCompoundFunction(functions); + } } @Test(expected=IllegalArgumentException.class) @@ -64,4 +74,13 @@ public class TestCompoundFunction { assertThat(result, is(containerElementName)); } + @Test + public void testInvocationWithParametersForSecondFunction() { + String one = "1"; + ContainerElement element = new ContainerElementImpl(one); + MarkedContainer container = new MarkedContainerImpl(element); + String result = compoundFunctionWithSecondTakingSingleIntParameter.tryToInvoke(container, ()->new Object[] { 1 }); + assertThat(result, is(one)); + } + } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java index 067648c2ffd..8bd52f7fa34 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java @@ -40,9 +40,11 @@ public class TestMethodWrappingFunctionInvocation { @Test public void testInvocationWithWrongParameters() { DataTypeWithContext dataEntry = new DataTypeWithContextImpl("Regatta Name", "Race Name", 7); - assertThat(getRegattaName.tryToInvoke(dataEntry, () -> {return new Object[] {"Wrong Parameter"};} ), is(nullValue())); - + // the one parameter is ignored; see bug 4034; in case of concatenated functions, excess parameters are ignored + // and would only be used for those methods that need it; therefore, we receive a valid result here + assertThat(getRegattaName.tryToInvoke(dataEntry, () -> {return new Object[0];} ), is(nullValue())); SimpleClassWithMarkedMethods instance = new SimpleClassWithMarkedMethods(); + // invoking a method that expects an int parameter with no ParameterProvider is expected to return null ("error") assertThat(increment.tryToInvoke(instance), is(nullValue())); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElement.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElement.java index 2d21e951a2c..8edd1dcb612 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElement.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElement.java @@ -7,4 +7,6 @@ public interface ContainerElement { @Dimension(messageKey="Name") public String getName(); + @Dimension(messageKey="StringFromInt") + public String getStringFromInt(int i); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElementImpl.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElementImpl.java index 2e0bfd6a577..53083df5fd9 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElementImpl.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/ContainerElementImpl.java @@ -13,4 +13,9 @@ public class ContainerElementImpl implements ContainerElement { return name; } + @Override + public String getStringFromInt(int i) { + return ""+i; + } + } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContext.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContext.java index 1e8d18b0620..ac301dbe57d 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContext.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContext.java @@ -17,5 +17,4 @@ public interface DataTypeWithContext extends DataTypeInterface { @Dimension(messageKey="legNumber") public int getLegNumber(); - } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContextImpl.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContextImpl.java index bd51122c90f..758f4e11a1a 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContextImpl.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeWithContextImpl.java @@ -37,5 +37,4 @@ public class DataTypeWithContextImpl extends SuperType implements DataTypeWithCo public int getSpeedInKnots() { return 0; } - } From 97274693f2b1c6641113f289a5d2b21b8438b9c2 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 19:39:47 +0100 Subject: [PATCH 169/191] added more wind dimensions and factored this stuff Change-Id: I29494457f81b683282668b79fb98cfb8960dcc3d --- .../datamining/data/HasGPSFixContext.java | 14 ++++- .../datamining/data/HasManeuverContext.java | 8 +-- .../data/HasMarkPassingContext.java | 8 +-- .../HasTrackedLegOfCompetitorContext.java | 3 +- .../sap/sailing/datamining/data/HasWind.java | 16 +++++- .../impl/data/GPSFixWithContext.java | 17 +++--- .../impl/data/ManeuverWithContext.java | 13 ++--- .../impl/data/MarkPassingWithContext.java | 13 ++++- .../TrackedLegOfCompetitorWithContext.java | 52 +++++++++++++++++++ 9 files changed, 111 insertions(+), 33 deletions(-) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java index 70edfa5699d..8a806a2d0f4 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java @@ -1,14 +1,24 @@ package com.sap.sailing.datamining.data; +import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.tracking.GPSFixMoving; +import com.sap.sse.common.TimePoint; import com.sap.sse.datamining.annotations.Connector; public interface HasGPSFixContext extends HasWind { - @Connector(scanForStatistics=false) public HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); @Connector(ordinal=1) public GPSFixMoving getGPSFix(); - + + @Override + default TimePoint getTimePoint() { + return getGPSFix().getTimePoint(); + } + + @Override + default Position getPosition() { + return getGPSFix().getPosition(); + } } \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java index 1fbd2b0b8df..29910f3e2da 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java @@ -5,18 +5,14 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -public interface HasManeuverContext extends HasWind { - +public interface HasManeuverContext extends HasWind, HasManeuver, HasTrackedLegOfCompetitor { @Connector(scanForStatistics=false) HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); - - Maneuver getManeuver(); - + //TODO Clean-Up: // Move Dimensions and Statistics to Maneuver and connect to it @Dimension(messageKey="ManeuverType", ordinal=12) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java index 8712a394a45..333ef40b3cc 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java @@ -4,18 +4,14 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; -import com.sap.sailing.domain.tracking.MarkPassingManeuver; import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -public interface HasMarkPassingContext { - +public interface HasMarkPassingContext extends HasWind, HasManeuver, HasTrackedLegOfCompetitor { @Connector(scanForStatistics=false) HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); - - MarkPassingManeuver getManeuver(); - + //TODO Clean-Up: // Move Dimensions and Statistics to Maneuver/MarkPassingManeuver and connect to it // Find a way to implement HasManeuverContext and HasMarkPassingManeuver with a base class diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java index 4f5cb3a3ea9..02347d87dd3 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java @@ -8,8 +8,7 @@ import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; -public interface HasTrackedLegOfCompetitorContext { - +public interface HasTrackedLegOfCompetitorContext extends HasWind { @Connector(scanForStatistics=false) public HasTrackedLegContext getTrackedLegContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java index 62b1a7c8582..19e0f844b6f 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java @@ -3,13 +3,15 @@ package com.sap.sailing.datamining.data; import java.util.Locale; import com.sap.sailing.datamining.Activator; +import com.sap.sailing.domain.common.Positioned; import com.sap.sailing.domain.common.Wind; +import com.sap.sse.common.Timed; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; import com.sap.sse.i18n.ResourceBundleStringMessages; -public interface HasWind { +public interface HasWind extends HasTrackedLegOfCompetitor, Positioned, Timed { @Dimension(messageKey="WindStrengthInBeaufort", ordinal=11) default ClusterDTO getWindStrengthAsBeaufortCluster(Locale locale, ResourceBundleStringMessages stringMessages) { Wind wind = getWind(); @@ -17,5 +19,15 @@ public interface HasWind { return new ClusterDTO(cluster.asLocalizedString(locale, stringMessages)); } - Wind getWind(); + default Wind getWind() { + if (getWindInternal() == null) { + setWindInternal(getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() + .getWind(getPosition(), getTimePoint())); + } + return getWindInternal(); + } + + Wind getWindInternal(); + + void setWindInternal(Wind wind); } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java index 74eb956a3b7..d68771d9e96 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/GPSFixWithContext.java @@ -6,7 +6,8 @@ import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.tracking.GPSFixMoving; public class GPSFixWithContext implements HasGPSFixContext { - + private static final long serialVersionUID = -4537126043228674949L; + private final HasTrackedLegOfCompetitorContext trackedLegOfCompetitorContext; private final GPSFixMoving gpsFix; @@ -26,14 +27,14 @@ public class GPSFixWithContext implements HasGPSFixContext { public GPSFixMoving getGPSFix() { return gpsFix; } - + @Override - public Wind getWind() { - if (wind == null) { - wind = getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() - .getWind(gpsFix.getPosition(), gpsFix.getTimePoint()); - } + public Wind getWindInternal() { return wind; } - + + @Override + public void setWindInternal(Wind wind) { + this.wind = wind; + } } \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java index 51fc3dacb2c..65d82a7772d 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/ManeuverWithContext.java @@ -11,7 +11,7 @@ import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.tracking.Maneuver; public class ManeuverWithContext implements HasManeuverContext { - + private static final long serialVersionUID = 7717196485074392156L; private final HasTrackedLegOfCompetitorContext trackedLegOfCompetitor; private final Maneuver maneuver; private Wind wind; @@ -72,11 +72,12 @@ public class ManeuverWithContext implements HasManeuverContext { } @Override - public Wind getWind() { - if (wind == null) { - wind = getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() - .getWind(getManeuver().getPosition(), getManeuver().getTimePoint()); - } + public Wind getWindInternal() { return wind; } + + @Override + public void setWindInternal(Wind wind) { + this.wind = wind; + } } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/MarkPassingWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/MarkPassingWithContext.java index 442faad5dc8..090e8a20a1e 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/MarkPassingWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/MarkPassingWithContext.java @@ -7,18 +7,20 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.SpeedWithBearing; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.tracking.MarkPassingManeuver; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.Util; public class MarkPassingWithContext implements HasMarkPassingContext { - + private static final long serialVersionUID = -337042113749307686L; private final HasTrackedLegOfCompetitorContext trackedLegOfCompetitor; private final MarkPassingManeuver maneuver; private Double absoluteRank; private boolean rankHasBeenInitialized; + private Wind wind; public MarkPassingWithContext(HasTrackedLegOfCompetitorContext trackedLegOfCompetitor, MarkPassingManeuver maneuver) { this.trackedLegOfCompetitor = trackedLegOfCompetitor; @@ -84,4 +86,13 @@ public class MarkPassingWithContext implements HasMarkPassingContext { return absoluteRank; } + @Override + public Wind getWindInternal() { + return wind; + } + + @Override + public void setWindInternal(Wind wind) { + this.wind = wind; + } } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java index 09e719dbe9d..80b3f9f67fa 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedLegOfCompetitorWithContext.java @@ -6,7 +6,10 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; @@ -15,6 +18,7 @@ import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; public class TrackedLegOfCompetitorWithContext implements HasTrackedLegOfCompetitorContext { + private static final long serialVersionUID = 5944904146286262768L; private final HasTrackedLegContext trackedLegContext; @@ -25,6 +29,7 @@ public class TrackedLegOfCompetitorWithContext implements HasTrackedLegOfCompeti private boolean isRankAtStartInitialized; private Double rankAtFinish; private boolean isRankAtFinishInitialized; + private Wind wind; public TrackedLegOfCompetitorWithContext(HasTrackedLegContext trackedLegContext, TrackedLegOfCompetitor trackedLegOfCompetitor) { this.trackedLegContext = trackedLegContext; @@ -120,5 +125,52 @@ public class TrackedLegOfCompetitorWithContext implements HasTrackedLegOfCompeti return (finishTime.asMillis() - startTime.asMillis()) / 1000; } + + @Override + public Wind getWindInternal() { + return wind; + } + + @Override + public void setWindInternal(Wind wind) { + this.wind = wind; + } + + @Override + public Position getPosition() { + final TrackedLeg trackedLeg = getTrackedLegContext().getTrackedLeg(); + final TrackedRace trackedRace = trackedLeg.getTrackedRace(); + final TimePoint timepoint = getTimePointBetweenLegStartAndLegFinish(trackedRace); + final Position result; + if (timepoint == null) { + result = null; + } else { + result = trackedLeg.getMiddleOfLeg(timepoint); + } + return result; + } + + private TimePoint getTimePointBetweenLegStartAndLegFinish(final TrackedRace trackedRace) { + final TimePoint competitorLegStartTime = getTrackedLegOfCompetitor().getStartTime(); + final TimePoint competitorLegEndTime = getTrackedLegOfCompetitor().getFinishTime(); + final TimePoint startTime = competitorLegStartTime != null ? competitorLegStartTime : + trackedRace.getStartOfRace() != null ? trackedRace.getStartOfRace() : trackedRace.getStartOfTracking(); + final TimePoint endTime = competitorLegEndTime != null ? competitorLegEndTime : + trackedRace.getEndOfRace() != null ? trackedRace.getEndOfRace() : trackedRace.getEndOfTracking(); + final TimePoint timepoint = endTime == null ? startTime : startTime == null ? null : startTime.plus(startTime.until(endTime).divide(2)); + return timepoint; + } + + @Override + public TimePoint getTimePoint() { + final TrackedLeg trackedLeg = getTrackedLegContext().getTrackedLeg(); + final TrackedRace trackedRace = trackedLeg.getTrackedRace(); + return getTimePointBetweenLegStartAndLegFinish(trackedRace); + } + + @Override + public HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext() { + return this; + } } From 370e0dbd33e336032fdb873426c6a6e918cfbe7e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 19:41:01 +0100 Subject: [PATCH 170/191] aftermath for bug fix for bug 4034: fixed test case Change-Id: If7622431186aaa7dd88c6c144aed7290fb541bfa --- .../impl/functions/TestMethodWrappingFunctionInvocation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java index 8bd52f7fa34..8a1e654293e 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestMethodWrappingFunctionInvocation.java @@ -42,7 +42,7 @@ public class TestMethodWrappingFunctionInvocation { DataTypeWithContext dataEntry = new DataTypeWithContextImpl("Regatta Name", "Race Name", 7); // the one parameter is ignored; see bug 4034; in case of concatenated functions, excess parameters are ignored // and would only be used for those methods that need it; therefore, we receive a valid result here - assertThat(getRegattaName.tryToInvoke(dataEntry, () -> {return new Object[0];} ), is(nullValue())); + assertThat(getRegattaName.tryToInvoke(dataEntry, () -> {return new Object[0];} ), is("Regatta Name")); SimpleClassWithMarkedMethods instance = new SimpleClassWithMarkedMethods(); // invoking a method that expects an int parameter with no ParameterProvider is expected to return null ("error") assertThat(increment.tryToInvoke(instance), is(nullValue())); From 5d1b35c46fc977af2c164d43ae16162cccc39d33 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 22:51:46 +0100 Subject: [PATCH 171/191] added missing data mining interfaces Change-Id: Idb81f0f9d6c533b8928c325e7419335bfaef4eb2 --- .../sailing/datamining/data/HasManeuver.java | 21 +++++++++++++++++++ .../data/HasTrackedLegOfCompetitor.java | 5 +++++ 2 files changed, 26 insertions(+) create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuver.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitor.java diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuver.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuver.java new file mode 100755 index 00000000000..3d0842c61d2 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuver.java @@ -0,0 +1,21 @@ +package com.sap.sailing.datamining.data; + +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.Positioned; +import com.sap.sailing.domain.tracking.Maneuver; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Timed; + +public interface HasManeuver extends Positioned, Timed { + Maneuver getManeuver(); + + @Override + default TimePoint getTimePoint() { + return getManeuver().getTimePoint(); + } + + @Override + default Position getPosition() { + return getManeuver().getPosition(); + } +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitor.java new file mode 100755 index 00000000000..e09b87e5133 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitor.java @@ -0,0 +1,5 @@ +package com.sap.sailing.datamining.data; + +public interface HasTrackedLegOfCompetitor { + HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); +} From 3239f28581a28a87bbef726729edd4c9e2483ffb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 23:54:22 +0100 Subject: [PATCH 172/191] fixing Igtimi redirect URI construction if Window.Location.getProtocol() contains trailing colon Change-Id: I6710b62ffc9592b860621b977f972a9c07eba5fa --- .../com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java | 2 +- .../sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java index 13b8e2ea6cc..95c00a9b009 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/ClientImpl.java @@ -37,7 +37,7 @@ public class ClientImpl implements Client { @Override public String getRedirectUri(String redirectProtocol, String redirectHost, String redirectPort) { - return redirectProtocol+"://"+redirectHost+(redirectPort==null?"":(":"+redirectPort))+ + return redirectProtocol+"://"+redirectHost+(redirectPort==null||redirectPort.isEmpty()?"":(":"+redirectPort))+ (redirectUriPath.startsWith("/")?redirectUriPath:"/"+redirectUriPath); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java index 5b5d93e9063..be1d08f79a2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java @@ -156,7 +156,9 @@ public class IgtimiAccountsPanel extends FlowPanel { } }); add(refreshButton); - final String protocol = Window.Location.getProtocol(); + final String protocol = Window.Location.getProtocol().endsWith(":") ? + Window.Location.getProtocol().substring(0, Window.Location.getProtocol().length()-1) : + Window.Location.getProtocol(); final String hostname = Window.Location.getHostName(); final String port = Window.Location.getPort(); this.sailingService.getIgtimiAuthorizationUrl(protocol, hostname, port, new AsyncCallback() { From 369f7cf9ee46aae6c41590e97aef41b6b144070c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 23 Jan 2017 23:58:57 +0100 Subject: [PATCH 173/191] restrict httpcomponents versions to below 4.3.0 because of an incompatible change in 4.3.0; see bug 4035 Change-Id: I9908daa756f55308c02b47c45f3e159d702bd253 --- .../com.sap.sailing.domain.igtimiadapter/META-INF/MANIFEST.MF | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain.igtimiadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.igtimiadapter/META-INF/MANIFEST.MF index ad8f6ed8179..df6b9e37db7 100644 --- a/java/com.sap.sailing.domain.igtimiadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.igtimiadapter/META-INF/MANIFEST.MF @@ -8,8 +8,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.json.simple;bundle-version="1.1.0", com.sun.jersey;bundle-version="1.17.0", org.objectweb.asm;bundle-version="3.3.1", - org.apache.httpcomponents.httpclient;bundle-version="4.2.5", - org.apache.httpcomponents.httpcore;bundle-version="4.0.0", + org.apache.httpcomponents.httpclient;bundle-version="[4.2.5,4.3.0)", + org.apache.httpcomponents.httpcore;bundle-version="[4.0.0,4.3.0)", com.sap.sailing.domain.common, com.sap.sailing.domain.igtimiadapter.persistence, com.sap.sailing.domain.shared.android, From 1d61c2885cab9f7bad6423df9b86124a9e753eda Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 24 Jan 2017 00:00:03 +0100 Subject: [PATCH 174/191] removed igtimi system properties from launch configs; reverting to default client/redirect URI Change-Id: I03882d5fe2c772316773903b5840377dab69d46a --- .../SailingServer (No Proxy OSX).launch | 4 ++-- java/com.sap.sailing.server/SailingServer (No Proxy).launch | 4 ++-- .../SailingServer (No Proxy, Cached MTB).launch | 4 ++-- .../SailingServer (No Proxy, Remote Debug SAP VM).launch | 6 +++--- .../SailingServer (No Proxy, winddbTest).launch | 4 ++-- java/com.sap.sailing.server/SailingServer (Proxy).launch | 2 +- .../SailingServer (Proxy, winddbTest).launch | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index 41554299eb1..d6d91411db9 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -20,7 +20,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 180aeaf4a9a..d3e913fb096 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -22,7 +22,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index 18d8a97794a..8570e236fc7 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 01e88913426..b91b50932c7 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -16,14 +16,14 @@ - + - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index bdd1bf9f626..58fcdc60e61 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index 4dd423cadad..0f547eb8db5 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -22,7 +22,7 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch index 7c854bbbb77..283b925a72f 100644 --- a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch @@ -20,11 +20,11 @@ - + - + From 7650af5809beed6e632be50c6c7d625624994c82 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 24 Jan 2017 00:49:23 +0100 Subject: [PATCH 175/191] added more upper version constraints for org.apache.httpcomponents.* Change-Id: I2b0e9ecab3449dfe281259ba63d98d69d382c5c8 --- .../META-INF/MANIFEST.MF | 10 +++++----- java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF | 2 +- java/com.sap.sailing.polars/META-INF/MANIFEST.MF | 6 +++--- java/com.sap.sailing.simulator/META-INF/MANIFEST.MF | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF index 74dac9cbc66..fc427842d8f 100644 --- a/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.tractracadapter/META-INF/MANIFEST.MF @@ -23,11 +23,11 @@ Export-Package: com.sap.sailing.domain.tractracadapter, com.sap.sailing.domain.tractracadapter.persistence" Bundle-ActivationPolicy: lazy Import-Package: org.apache.http, - org.apache.http.client, - org.apache.http.client.entity, - org.apache.http.client.methods, - org.apache.http.impl.client, - org.apache.http.message, + org.apache.http.client;version="[4.2.5,4.3.0)", + org.apache.http.client.entity;version="[4.2.5,4.3.0)", + org.apache.http.client.methods;version="[4.2.5,4.3.0)", + org.apache.http.impl.client;version="[4.2.5,4.3.0)", + org.apache.http.message;version="[4.2.5,4.3.0)", org.json.simple, org.json.simple.parser, org.osgi.framework;version="1.7.0" diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index b18857a8cd7..7a0ce43d7c1 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -59,7 +59,7 @@ Bundle-ActivationPolicy: lazy Import-Package: javax.servlet;version="3.1.0", javax.servlet.descriptor;version="3.1.0", javax.servlet.http;version="3.1.0", - org.apache.http.client;version="4.2.5", + org.apache.http.client;version="[4.2.5,4.3.0)", org.json.simple, org.json.simple.parser, org.osgi.framework, diff --git a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF index deed64883ce..dce9c6c27d8 100644 --- a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF @@ -42,9 +42,9 @@ Import-Package: javax.ws.rs;version="1.1.1", javax.ws.rs.core;version="1.1.1", org.apache.http, - org.apache.http.client, - org.apache.http.client.methods;version="4.2.6", - org.apache.http.impl.client;version="4.2.6", + org.apache.http.client;version="[4.2.6,4.3.0)", + org.apache.http.client.methods;version="[4.2.6,4.3.0)", + org.apache.http.impl.client;version="[4.2.6,4.3.0)", org.json.simple, org.json.simple.parser Web-ContextPath: /polars diff --git a/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF b/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF index 6a6c653f9fe..925a1d3f660 100644 --- a/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.simulator/META-INF/MANIFEST.MF @@ -10,7 +10,7 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.domain.tractracadapter, com.sap.sse, com.sap.sse.common, - org.apache.httpcomponents.httpclient;bundle-version="4.2.6", + org.apache.httpcomponents.httpclient;bundle-version="[4.2.6,4.3.0)", org.json.simple;bundle-version="1.1.0" Bundle-ActivationPolicy: lazy Import-Package: org.osgi.framework;version="1.6.0" From 0367df46ebaa691b6432f2e0214548cb6d154f68 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 24 Jan 2017 09:55:25 +0100 Subject: [PATCH 176/191] bug 4029 Extended MasterDataImportTest to ensure that saving batches of fixes works as intended --- .../server/test/MasterDataImportTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java index b526365cf47..aed1d07cf46 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java @@ -296,6 +296,11 @@ public class MasterDataImportTest { new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(90))); sourceService.getSensorFixStore().storeFix(deviceIdentifier, gpsFix); + // test to check that batch-import of fixes works as intended + DeviceIdentifier deviceBatch1 = addDeviceMappingWithFixes(sourceService, regatta, competitor, logTimePoint, logTimePoint3, logTimePoint4, "x", 4999); + DeviceIdentifier deviceBatch2 = addDeviceMappingWithFixes(sourceService, regatta, competitor, logTimePoint, logTimePoint3, logTimePoint4, "y", 5000); + DeviceIdentifier deviceBatch3 = addDeviceMappingWithFixes(sourceService, regatta, competitor, logTimePoint, logTimePoint3, logTimePoint4, "z", 5001); + // Add sensor fix DeviceIdentifier deviceIdentifier2 = new SmartphoneImeiIdentifier("b"); RegattaLogDeviceMappingEvent bravoMappingEvent = new RegattaLogDeviceCompetitorBravoMappingEventImpl( @@ -449,6 +454,11 @@ public class MasterDataImportTest { Assert.assertEquals(1, sensorFixStore.getNumberOfFixes(deviceIdentifier)); verifyFix(gpsFix, sensorFixStore, logTimePoint, logTimePoint3, deviceIdentifier); + // Check that fix counts around the batch size are imported + verifyFixCount(sensorFixStore, deviceBatch1, 4999); + verifyFixCount(sensorFixStore, deviceBatch2, 5000); + verifyFixCount(sensorFixStore, deviceBatch3, 5001); + // Check for import of sensor fix Assert.assertEquals(1, sensorFixStore.getNumberOfFixes(deviceIdentifier2)); verifyFix(doubleVectorFix, sensorFixStore, logTimePoint, logTimePoint3, deviceIdentifier2); @@ -470,6 +480,22 @@ public class MasterDataImportTest { Assert.assertNotNull(registerEventOnTarget2); Assert.assertEquals(registerEvent.getId(), registerEventOnTarget2.getId()); } + + private DeviceIdentifier addDeviceMappingWithFixes(RacingEventService sourceService, Regatta regatta, CompetitorImpl competitor, + TimePoint logTimePoint, TimePoint logTimePoint3, TimePoint logTimePoint4, String imei, int numFixes) { + DeviceIdentifier deviceIdentifier = new SmartphoneImeiIdentifier(imei); + RegattaLogDeviceCompetitorMappingEvent mappingEvent = new RegattaLogDeviceCompetitorMappingEventImpl( + logTimePoint4, logTimePoint4, author, UUID.randomUUID(), competitor, deviceIdentifier, logTimePoint, + logTimePoint3); + regatta.getRegattaLog().add(mappingEvent); + List fixesToSave = new ArrayList<>(numFixes); + for(int i = 1; i <= numFixes; i++) { + fixesToSave.add(new GPSFixMovingImpl(new DegreePosition(54.333, 10.133), logTimePoint.plus(i), + new KnotSpeedWithBearingImpl(10, new DegreeBearingImpl(90)))); + } + sourceService.getSensorFixStore().storeFixes(deviceIdentifier, fixesToSave); + return deviceIdentifier; + } private void verifyFix(Timed expectedFix, SensorFixStore store, TimePoint start, TimePoint end, DeviceIdentifier deviceIdentifier) { List fixes = new ArrayList<>(1); @@ -481,6 +507,14 @@ public class MasterDataImportTest { throw new RuntimeException(e); } } + + private void verifyFixCount(SensorFixStore store, DeviceIdentifier deviceIdentifier, int numFixes) { + try { + assertEquals(numFixes, store.getNumberOfFixes(deviceIdentifier)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } @Test public void testMasterDataImportForScoreCorrections() throws MalformedURLException, IOException, From e156d6597eb08b7cc936abb91879550af4b9eb61 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 24 Jan 2017 09:55:25 +0100 Subject: [PATCH 177/191] bug 4029 Extended MasterDataImportTest to ensure that saving batches of fixes works as intended From 1b719d4f01e062a1c62a1bc98c360870dcfc8342 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 24 Jan 2017 19:10:06 +0100 Subject: [PATCH 178/191] added wind fix retriever and HasWindFixContext Change-Id: Ia9a065706093d5555c59504fe514c69699bf3ef8 --- .../Sailing_StringMessages.properties | 11 ++-- .../Sailing_StringMessages_de.properties | 7 ++- .../com/sap/sailing/datamining/Activator.java | 3 +- .../SailingDataRetrievalChainDefinitions.java | 8 +++ .../datamining/data/HasGPSFixContext.java | 2 +- .../datamining/data/HasManeuverContext.java | 2 +- .../data/HasMarkPassingContext.java | 2 +- .../HasTrackedLegOfCompetitorContext.java | 2 +- .../sap/sailing/datamining/data/HasWind.java | 16 ++---- .../datamining/data/HasWindFixContext.java | 34 ++++++++++++ .../datamining/data/HasWindOnTrackedLeg.java | 17 ++++++ .../components/WindFixRetrievalProcessor.java | 50 +++++++++++++++++ .../impl/data/WindFixWithContext.java | 53 +++++++++++++++++++ .../domain/common/SpeedWithBearing.java | 2 + 14 files changed, 187 insertions(+), 22 deletions(-) create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindOnTrackedLeg.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index 6ad873dde77..acff007f65b 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -20,7 +20,8 @@ CompetitorSearchTag=Competitor Search Tag LeaderboardSailingDomainRetrieverChain=Leaderboards RaceSailingDomainRetrieverChain=Races LegSailingDomainRetrieverChain=Legs -GPSFixSailingDomainRetrieverChain=GPS-Fixes +GPSFixSailingDomainRetrieverChain=GPS Fixes +WindFixSailingDomainRetrieverChain=Wind Fixes MarkPassingSailingDomainRetrieverChain=Mark Passings RaceResultSailingDomainRetrieverChain=Race Results RaceOfCompetitorSailingDomainRetrieverChain=Races of Competitors @@ -30,7 +31,8 @@ Leaderboard=Leaderboard Leg=Leg MarkPassing=Mark Passing LegOfCompetitor=Leg of competitor -GpsFix=GPS-Fix +GpsFix=GPS Fix +WindFix=Wind Fix Maneuver=Maneuver WindStrengthInBeaufort=Wind Strength in Beaufort Bft0=Calm @@ -84,4 +86,7 @@ WindwardDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of RankAfterHalfOfTheFirstLeg=Rank after the half of the first leg AdvantageousEndOfLine=Advantageous End of Line TimeSpentInSeconds=Time Spent in Seconds -MedalRace=Medal Race \ No newline at end of file +MedalRace=Medal Race +WindSourceType=Wind Source Type +windFrom=True Wind Direction (TWD) +windSpeedKnots=True Wind Speed (kts) \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index cb96da080fd..e34276cc197 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -19,6 +19,7 @@ LeaderboardSailingDomainRetrieverChain=Leaderboards RaceSailingDomainRetrieverChain=Rennen LegSailingDomainRetrieverChain=Schenkel GPSFixSailingDomainRetrieverChain=GPS-Fixes +WindFixSailingDomainRetrieverChain=Windmessungen MarkPassingSailingDomainRetrieverChain=Tonnenrundungen RaceResultSailingDomainRetrieverChain=Rennergebnisse RaceOfCompetitorSailingDomainRetrieverChain=Rennen eines Teilnehmers @@ -29,6 +30,7 @@ Leg=Schenkel MarkPassing=Tonnenrundung LegOfCompetitor=Schenkel eines Teilnehmers GpsFix=GPS-Fix +WindFix=Windmessung Maneuver=Manöver Speed=Geschwindigkeit SpeedTenSecondsBefore=Geschwindigkeit 10s vorher @@ -84,4 +86,7 @@ WindwardDistanceToAdvantageousEndOfLine=Windw RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Schenkels AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie TimeSpentInSeconds=Benötigte Zeit in Sekunden -MedalRace=Medaillenrennen \ No newline at end of file +MedalRace=Medaillenrennen +WindSourceType=Art der Windmessung +windFrom=Wind aus Richtung (TWD) +windSpeedKnots=Wahre Windgeschwindigkeit (kn) \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index 183cba04870..938ac5b9ab5 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -17,6 +17,7 @@ import com.sap.sailing.datamining.data.HasRaceResultOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindFixContext; import com.sap.sailing.datamining.impl.components.aggregators.ParallelBoolSumAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceAverageAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMaxAggregationProcessor; @@ -81,6 +82,7 @@ public class Activator extends AbstractDataMiningActivatorWithPredefinedQueries internalClasses.add(HasTrackedLegContext.class); internalClasses.add(HasTrackedLegOfCompetitorContext.class); internalClasses.add(HasGPSFixContext.class); + internalClasses.add(HasWindFixContext.class); internalClasses.add(HasManeuverContext.class); internalClasses.add(HasMarkPassingContext.class); internalClasses.add(HasRaceOfCompetitorContext.class); @@ -133,7 +135,6 @@ public class Activator extends AbstractDataMiningActivatorWithPredefinedQueries if (INSTANCE == null) { INSTANCE = new Activator(); // probably non-OSGi case, as in test execution } - return INSTANCE; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java index d5dedde95c0..5981db7e7b7 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java @@ -12,6 +12,7 @@ import com.sap.sailing.datamining.data.HasRaceResultOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindFixContext; import com.sap.sailing.datamining.impl.components.CompetitorOfRaceInLeaderboardRetrievalProcessor; import com.sap.sailing.datamining.impl.components.GPSFixRetrievalProcessor; import com.sap.sailing.datamining.impl.components.LeaderboardGroupRetrievalProcessor; @@ -22,6 +23,7 @@ import com.sap.sailing.datamining.impl.components.RaceOfCompetitorRetrievalProce import com.sap.sailing.datamining.impl.components.TrackedLegOfCompetitorRetrievalProcessor; import com.sap.sailing.datamining.impl.components.TrackedLegRetrievalProcessor; import com.sap.sailing.datamining.impl.components.TrackedRaceRetrievalProcessor; +import com.sap.sailing.datamining.impl.components.WindFixRetrievalProcessor; import com.sap.sailing.datamining.impl.data.LeaderboardGroupWithContext; import com.sap.sailing.server.RacingEventService; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; @@ -69,6 +71,12 @@ public class SailingDataRetrievalChainDefinitions { HasGPSFixContext.class, "GpsFix"); dataRetrieverChainDefinitions.add(gpsFixRetrieverChainDefinition); + final DataRetrieverChainDefinition windFixRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>( + trackedRaceRetrieverChainDefinition, HasWindFixContext.class, "WindFixSailingDomainRetrieverChain"); + windFixRetrieverChainDefinition.endWith(TrackedRaceRetrievalProcessor.class, WindFixRetrievalProcessor.class, + HasWindFixContext.class, "WindFix"); + dataRetrieverChainDefinitions.add(windFixRetrieverChainDefinition); + final DataRetrieverChainDefinition maneuverRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>( legOfCompetitorRetrieverChainDefinition, HasManeuverContext.class, "ManeuverSailingDomainRetrieverChain"); maneuverRetrieverChainDefinition.endWith(TrackedLegOfCompetitorRetrievalProcessor.class, ManeuverRetrievalProcessor.class, diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java index 8a806a2d0f4..a78a2ec17b9 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasGPSFixContext.java @@ -5,7 +5,7 @@ import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sse.common.TimePoint; import com.sap.sse.datamining.annotations.Connector; -public interface HasGPSFixContext extends HasWind { +public interface HasGPSFixContext extends HasWindOnTrackedLeg { @Connector(scanForStatistics=false) public HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java index 29910f3e2da..1850038c4e1 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasManeuverContext.java @@ -9,7 +9,7 @@ import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -public interface HasManeuverContext extends HasWind, HasManeuver, HasTrackedLegOfCompetitor { +public interface HasManeuverContext extends HasWindOnTrackedLeg, HasManeuver, HasTrackedLegOfCompetitor { @Connector(scanForStatistics=false) HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java index 333ef40b3cc..1c1d1c3fb97 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasMarkPassingContext.java @@ -8,7 +8,7 @@ import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -public interface HasMarkPassingContext extends HasWind, HasManeuver, HasTrackedLegOfCompetitor { +public interface HasMarkPassingContext extends HasWindOnTrackedLeg, HasManeuver, HasTrackedLegOfCompetitor { @Connector(scanForStatistics=false) HasTrackedLegOfCompetitorContext getTrackedLegOfCompetitorContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java index 02347d87dd3..6b76088883c 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java @@ -8,7 +8,7 @@ import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; -public interface HasTrackedLegOfCompetitorContext extends HasWind { +public interface HasTrackedLegOfCompetitorContext extends HasWindOnTrackedLeg { @Connector(scanForStatistics=false) public HasTrackedLegContext getTrackedLegContext(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java index 19e0f844b6f..b7e817bca64 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWind.java @@ -11,23 +11,13 @@ import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; import com.sap.sse.i18n.ResourceBundleStringMessages; -public interface HasWind extends HasTrackedLegOfCompetitor, Positioned, Timed { +public interface HasWind extends Positioned, Timed { + Wind getWind(); + @Dimension(messageKey="WindStrengthInBeaufort", ordinal=11) default ClusterDTO getWindStrengthAsBeaufortCluster(Locale locale, ResourceBundleStringMessages stringMessages) { Wind wind = getWind(); Cluster cluster = Activator.getClusterGroups().getWindStrengthInBeaufortClusterGroup().getClusterFor(wind); return new ClusterDTO(cluster.asLocalizedString(locale, stringMessages)); } - - default Wind getWind() { - if (getWindInternal() == null) { - setWindInternal(getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() - .getWind(getPosition(), getTimePoint())); - } - return getWindInternal(); - } - - Wind getWindInternal(); - - void setWindInternal(Wind wind); } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java new file mode 100755 index 00000000000..1a3050a497c --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java @@ -0,0 +1,34 @@ +package com.sap.sailing.datamining.data; + +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.Wind; +import com.sap.sse.common.TimePoint; +import com.sap.sse.datamining.annotations.Connector; +import com.sap.sse.datamining.annotations.Dimension; +import com.sap.sse.datamining.annotations.Statistic; + +public interface HasWindFixContext extends HasWind { + @Connector(scanForStatistics=false) + public HasTrackedRaceContext getTrackedRaceContext(); + + public Wind getWind(); + + @Statistic(messageKey="windFrom", resultDecimals=1) + double getWindFromDegrees(); + + @Statistic(messageKey="windSpeedKnots", resultDecimals=1) + double getWindSpeedInKnots(); + + @Override + default TimePoint getTimePoint() { + return getWind().getTimePoint(); + } + + @Override + default Position getPosition() { + return getWind().getPosition(); + } + + @Dimension(messageKey="WindSourceType") + String getWindSourceType(); +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindOnTrackedLeg.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindOnTrackedLeg.java new file mode 100755 index 00000000000..bca85948b78 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindOnTrackedLeg.java @@ -0,0 +1,17 @@ +package com.sap.sailing.datamining.data; + +import com.sap.sailing.domain.common.Wind; + +public interface HasWindOnTrackedLeg extends HasTrackedLegOfCompetitor, HasWind { + default Wind getWind() { + if (getWindInternal() == null) { + setWindInternal(getTrackedLegOfCompetitorContext().getTrackedLegContext().getTrackedRaceContext().getTrackedRace() + .getWind(getPosition(), getTimePoint())); + } + return getWindInternal(); + } + + Wind getWindInternal(); + + void setWindInternal(Wind wind); +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java new file mode 100755 index 00000000000..4dc58eeacd8 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java @@ -0,0 +1,50 @@ +package com.sap.sailing.datamining.impl.components; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.datamining.impl.data.WindFixWithContext; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +/** + * Retrieves all wind fixes from a {@link TrackedRace} that are provided by wind sources that are not currently + * {@link TrackedRace#getWindSourcesToExclude() excluded}. + * + * @author Axel Uhl (d043530) + * + */ +public class WindFixRetrievalProcessor extends AbstractRetrievalProcessor { + + public WindFixRetrievalProcessor(ExecutorService executor, Collection> resultReceivers, int retrievalLevel) { + super(HasTrackedRaceContext.class, HasWindFixContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasTrackedRaceContext element) { + Collection windFixesWithContext = new ArrayList<>(); + final TrackedRace trackedRace = element.getTrackedRace(); + for (final WindSource windSource : trackedRace.getWindSources()) { + if (!trackedRace.getWindSourcesToExclude().contains(windSource)) { + final WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource); + windTrack.lockForRead(); + try { + for (final Wind wind : windTrack.getFixes()) { + windFixesWithContext.add(new WindFixWithContext(element, wind, windSource.getType())); + } + } finally { + windTrack.unlockAfterRead(); + } + } + } + return windFixesWithContext; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java new file mode 100755 index 00000000000..3b915481d8a --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java @@ -0,0 +1,53 @@ +package com.sap.sailing.datamining.impl.data; + +import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.WindSourceType; + +public class WindFixWithContext implements HasWindFixContext { + private static final long serialVersionUID = -4537126043228674949L; + + private final HasTrackedRaceContext trackedRaceContext; + + private final WindSourceType windSourceType; + + private final Wind wind; + + public WindFixWithContext(HasTrackedRaceContext trackedRaceContext, Wind wind, WindSourceType windSourceType) { + this.trackedRaceContext = trackedRaceContext; + this.wind = wind; + this.windSourceType = windSourceType; + } + + @Override + public HasTrackedRaceContext getTrackedRaceContext() { + return trackedRaceContext; + } + + @Override + public Wind getWind() { + return wind; + } + + @Override + public double getWindFromDegrees() { + return getWind().getFrom().getDegrees(); + } + + @Override + public double getWindSpeedInKnots() { + return getWind().getKnots(); + } + + @Override + public String getWindSourceType() { + return windSourceType.name(); + } + + @Override + public String toString() { + return "WindFixWithContext [trackedRaceContext=" + trackedRaceContext + ", windSourceType=" + windSourceType + + ", wind=" + wind + "]"; + } +} diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java index afda577f31a..e277d69ffd2 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java @@ -1,10 +1,12 @@ package com.sap.sailing.domain.common; import com.sap.sse.common.TimePoint; +import com.sap.sse.datamining.annotations.Statistic; public interface SpeedWithBearing extends Speed { + @Statistic(messageKey="", resultDecimals=1) Bearing getBearing(); /** From 6451d444c362ea9a916337106b7615beae0521d0 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 24 Jan 2017 23:15:59 +0100 Subject: [PATCH 179/191] added Wind and Competitor and Distinct count Change-Id: I3484c5389a3ac39c7b9a02bb3bcba6f423d1fb54 --- .../data/HasRaceOfCompetitorContext.java | 1 + .../datamining/data/HasWindFixContext.java | 1 + .../stringmessages/StringMessages.properties | 1 + .../StringMessages_de.properties | 1 + .../impl/DataMiningFrameworkActivator.java | 2 + ...DataCountDistinctAggregationProcessor.java | 65 +++++++++++++++++++ 6 files changed, 71 insertions(+) create mode 100755 java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountDistinctAggregationProcessor.java diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java index 97bde57e8e8..3ce44769cd7 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java @@ -16,6 +16,7 @@ public interface HasRaceOfCompetitorContext { public HasTrackedRaceContext getTrackedRaceContext(); @Connector(messageKey="Competitor") + @Statistic(messageKey="") public Competitor getCompetitor(); @Dimension(messageKey="CompetitorSearchTag", ordinal=11) // TODO Clean me: Move Dimension to Competitor when possible diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java index 1a3050a497c..4235fdd3089 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindFixContext.java @@ -11,6 +11,7 @@ public interface HasWindFixContext extends HasWind { @Connector(scanForStatistics=false) public HasTrackedRaceContext getTrackedRaceContext(); + @Statistic(messageKey="") public Wind getWind(); @Statistic(messageKey="windFrom", resultDecimals=1) diff --git a/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties b/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties index 6fce8be037d..3f09729ac71 100644 --- a/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties +++ b/java/com.sap.sse.datamining/resources/stringmessages/StringMessages.properties @@ -4,6 +4,7 @@ Sum=Sum Maximum=Maximum Minimum=Minimum Count=Count +CountDistinct=Count Distinct Meters=m Knots=kn Collecting=Collection diff --git a/java/com.sap.sse.datamining/resources/stringmessages/StringMessages_de.properties b/java/com.sap.sse.datamining/resources/stringmessages/StringMessages_de.properties index fc22da1ea48..81e0c2120ab 100644 --- a/java/com.sap.sse.datamining/resources/stringmessages/StringMessages_de.properties +++ b/java/com.sap.sse.datamining/resources/stringmessages/StringMessages_de.properties @@ -4,6 +4,7 @@ Sum=Summe Maximum=Maximum Minimum=Minimum Count=Anzahl +CountDistinct=Anzahl Verschiedener Meters=m Knots=kn Collecting=Sammlung diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java index 4b7643a1175..af07400a2c2 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningFrameworkActivator.java @@ -26,6 +26,7 @@ import com.sap.sse.datamining.components.management.DataSourceProviderRegistry; import com.sap.sse.datamining.components.management.FunctionRegistry; import com.sap.sse.datamining.components.management.QueryDefinitionDTORegistry; import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedDataCountAggregationProcessor; +import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedDataCountDistinctAggregationProcessor; import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataAverageAggregationProcessor; import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataMaxAggregationProcessor; import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataMedianAggregationProcessor; @@ -80,6 +81,7 @@ public class DataMiningFrameworkActivator implements BundleActivator { private Iterable> getDefaultAggregationProcessors() { Collection> defaultAggregationProcessors = new HashSet<>(); + defaultAggregationProcessors.add(ParallelGroupedDataCountDistinctAggregationProcessor.getDefinition()); defaultAggregationProcessors.add(ParallelGroupedDataCountAggregationProcessor.getDefinition()); defaultAggregationProcessors.add(ParallelGroupedNumberDataAverageAggregationProcessor.getDefinition()); defaultAggregationProcessors.add(ParallelGroupedNumberDataMaxAggregationProcessor.getDefinition()); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountDistinctAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountDistinctAggregationProcessor.java new file mode 100755 index 00000000000..bf8d7ce3d51 --- /dev/null +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountDistinctAggregationProcessor.java @@ -0,0 +1,65 @@ +package com.sap.sse.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sse.common.Util; +import com.sap.sse.datamining.components.AdditionalResultDataBuilder; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.shared.GroupKey; + +/** + * Counts distinct instances; for this, the aggregator needs to keep in memory a {@link Set} of the + * group-keyed objects to match new objects with already existing ones based on their {@link Object#equals(Object)} + * and {@link Object#hashCode()} definitions. + * + * @author Axel Uhl (d043530) + * + */ +public class ParallelGroupedDataCountDistinctAggregationProcessor + extends AbstractParallelGroupedDataAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Object.class, Number.class, "CountDistinct", ParallelGroupedDataCountDistinctAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + private Map> countMap; + + public ParallelGroupedDataCountDistinctAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Count"); + countMap = new HashMap<>(); + } + + @Override + protected void handleElement(GroupedDataEntry element) { + GroupKey key = element.getKey(); + Util.addToValueSet(countMap, key, element.getDataEntry()); + } + + @Override + protected Map getResult() { + final Map result = new HashMap<>(); + for (final Entry> e : countMap.entrySet()) { + result.put(e.getKey(), e.getValue().size()); + } + return result; + } + + @Override + protected void setAdditionalData(AdditionalResultDataBuilder additionalDataBuilder) { + super.setAdditionalData(additionalDataBuilder); + additionalDataBuilder.setResultDecimals(0); + } + +} From 688d37d27c33c2d38d4baa12e7de652cc1ad0f81 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 08:47:17 +0100 Subject: [PATCH 180/191] bug 4037: automatically "upgrade" to replay format during restore if available; still using a kludge for detecting replay format; TracAPI 3.3.2 will offer a reliable API for that later today Change-Id: Ied19e1e787f6f28d2a6e531b9ac1aedf5721ab5b --- .../test/MultipleClassesInRegattaTest.java | 8 +- ...nicodeCharactersInCompetitorNamesTest.java | 2 +- .../TracTracConnectivityParamsHandler.java | 2 +- .../domain/tractracadapter/DomainFactory.java | 37 ++++++--- .../impl/DomainFactoryImpl.java | 14 ++-- ...aceTrackingConnectivityParametersImpl.java | 17 ++++- .../impl/TracTracAdapterImpl.java | 5 +- .../impl/TracTracRaceTrackerImpl.java | 76 +++++++++++++++---- .../RaceTrackingConnectivityParameters.java | 4 +- ...racConnectivityParamsLoadAndStoreTest.java | 2 +- ...BoatCompetitorMetadataReplicationTest.java | 3 +- .../test/TrackRaceReplicationTest.java | 3 +- 12 files changed, 127 insertions(+), 46 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MultipleClassesInRegattaTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MultipleClassesInRegattaTest.java index c634c147beb..21221371915 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MultipleClassesInRegattaTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MultipleClassesInRegattaTest.java @@ -62,7 +62,7 @@ public class MultipleClassesInRegattaTest { false, EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, tracTracUsername, tracTracPassword, TracTracConnectionConstants.ONLINE_STATUS, TracTracConnectionConstants.ONLINE_VISIBILITY, - new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null); + new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null, /* preferReplayIfAvailable */ false); kiwotest2 = domainFactory .createRaceTracker( new URL( @@ -73,7 +73,7 @@ public class MultipleClassesInRegattaTest { false, EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, tracTracUsername, tracTracPassword, TracTracConnectionConstants.ONLINE_STATUS, TracTracConnectionConstants.ONLINE_VISIBILITY, - new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null); + new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null, /* preferReplayIfAvailable */ false); kiwotest3 = domainFactory .createRaceTracker( new URL( @@ -84,7 +84,7 @@ public class MultipleClassesInRegattaTest { false, EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, tracTracUsername, tracTracPassword, TracTracConnectionConstants.ONLINE_STATUS, TracTracConnectionConstants.ONLINE_VISIBILITY, - new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null); + new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null, /* preferReplayIfAvailable */ false); weym470may112014_2 = domainFactory .createRaceTracker( new URL( @@ -95,7 +95,7 @@ public class MultipleClassesInRegattaTest { false, EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, tracTracUsername, tracTracPassword, TracTracConnectionConstants.ONLINE_STATUS, TracTracConnectionConstants.ONLINE_VISIBILITY, - new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null); + new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null, /* preferReplayIfAvailable */ false); assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName()); assertEquals("5O5", kiwotest2.getRegatta().getBoatClass().getName()); diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UnicodeCharactersInCompetitorNamesTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UnicodeCharactersInCompetitorNamesTest.java index 9ec655d660f..0c364121b16 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UnicodeCharactersInCompetitorNamesTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UnicodeCharactersInCompetitorNamesTest.java @@ -70,7 +70,7 @@ public class UnicodeCharactersInCompetitorNamesTest { /* offsetToStartTimeOfSimulatedRace */ null, /* ignoreTracTracMarkPassings*/ false, EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, "tracTest", "tracTest", "", "", - new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null); + new DummyTrackedRegattaRegistry(), mock(RaceLogResolver.class), /* connectivityParams */ null, /* preferReplayIfAvailable */ false); Iterable competitors = fourtyninerYellow_2.getRaceHandle().getRace().getCompetitors(); for (Competitor competitor : competitors) { diff --git a/java/com.sap.sailing.domain.tractracadapter.persistence/src/com/sap/sailing/domain/tractracadapter/persistence/impl/TracTracConnectivityParamsHandler.java b/java/com.sap.sailing.domain.tractracadapter.persistence/src/com/sap/sailing/domain/tractracadapter/persistence/impl/TracTracConnectivityParamsHandler.java index a1183d78cae..07349531071 100644 --- a/java/com.sap.sailing.domain.tractracadapter.persistence/src/com/sap/sailing/domain/tractracadapter/persistence/impl/TracTracConnectivityParamsHandler.java +++ b/java/com.sap.sailing.domain.tractracadapter.persistence/src/com/sap/sailing/domain/tractracadapter/persistence/impl/TracTracConnectivityParamsHandler.java @@ -90,7 +90,7 @@ public class TracTracConnectivityParamsHandler extends AbstractRaceTrackingConne map.get(TRAC_TRAC_PASSWORD)==null?null:map.get(TRAC_TRAC_PASSWORD).toString(), map.get(RACE_STATUS)==null?null:map.get(RACE_STATUS).toString(), map.get(RACE_VISIBILITY)==null?null:map.get(RACE_VISIBILITY).toString(), isTrackWind(map), - isCorrectWindDirectionByMagneticDeclination(map)); + isCorrectWindDirectionByMagneticDeclination(map), /* preferReplayIfAvailable */ true); } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java index d3449b01978..26a0a6edc46 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java @@ -124,13 +124,14 @@ public interface DomainFactory { * respond with the {@link RaceDefinition} when its {@link DomainFactory#getRaceID(IRace)} is called with the * TracTrac {@link IEvent} as argument that is used for its tracking. *

    + * * @param startOfTracking * if null, all stored data from the "beginning of time" will be loaded that the event has * to provide, particularly for the mark positions which are stored per event, not per race; otherwise, * particularly the mark position loading will be constrained to this start time. * @param endOfTracking - * if null, all stored data until the "end of time" will be loaded that the event has - * to provide, particularly for the mark positions which are stored per event, not per race; otherwise, + * if null, all stored data until the "end of time" will be loaded that the event has to + * provide, particularly for the mark positions which are stored per event, not per race; otherwise, * particularly the mark position loading will be constrained to this end time. * @param offsetToStartTimeOfSimulatedRace * if non-null, the {@link Simulator} will be used with this duration as start offset @@ -138,27 +139,40 @@ public interface DomainFactory { * Provides the capability to obtain the {@link WindTrack}s for the different wind sources. A trivial * implementation is {@link EmptyWindStore} which simply provides new, empty tracks. This is always * available but loses track of the wind, e.g., during server restarts. - * @param connectivityParams TODO + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, - String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) + String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, + RaceTrackingConnectivityParametersImpl connectivityParams, boolean preferReplayIfAvailable) throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException; /** * Same as {@link #createRaceTracker(URL, URI, URI, URI, TimePoint, TimePoint, WindStore, TrackedRegattaRegistry)}, * only that a predefined {@link Regatta} is used to hold the resulting races. + * * @param offsetToStartTimeOfSimulatedRace * if non-null, the {@link Simulator} will be used with this duration as start offset - * @param connectivityParams TODO + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, - String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) + String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, + RaceTrackingConnectivityParametersImpl connectivityParams, boolean preferReplayIfAvailable) throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException; @@ -266,13 +280,18 @@ public interface DomainFactory { /** * @param offsetToStartTimeOfSimulatedRace * if non-null, the {@link Simulator} will be used with this duration as start offset - * @param trackWind TODO - * @param correctWindDirectionByMagneticDeclination TODO + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, - String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination); + String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, + boolean preferReplayIfAvailable); /** * Removes all knowledge about tractracRace which includes removing it from the race cache, from the * {@link com.sap.sailing.domain.base.Regatta} and, if a {@link TrackedRace} for the corresponding diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 9cd6990be8f..4a9e65c3548 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -658,12 +658,12 @@ public class DomainFactoryImpl implements DomainFactory { RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, - RaceTrackingConnectivityParametersImpl connectivityParams) throws MalformedURLException, + RaceTrackingConnectivityParametersImpl connectivityParams, boolean preferReplayIfAvailable) throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException { return new TracTracRaceTrackerImpl(this, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, tracTracPassword, raceStatus, - raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams); + raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams, preferReplayIfAvailable); } @Override @@ -672,13 +672,14 @@ public class DomainFactoryImpl implements DomainFactory { Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, - TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) + TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, + boolean preferReplayIfAvailable) throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException { return new TracTracRaceTrackerImpl(regatta, this, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, tracTracPassword, raceStatus, - raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams); + raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams, preferReplayIfAvailable); } @Override @@ -696,10 +697,11 @@ public class DomainFactoryImpl implements DomainFactory { URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, String tracTracUsername, String tracTracPassword, String raceStatus, - String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination) { + String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, boolean preferReplayIfAvailable) { return new RaceTrackingConnectivityParametersImpl(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, - regattaLogStore, this, tracTracUsername, tracTracPassword, raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination); + regattaLogStore, this, tracTracUsername, tracTracPassword, raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination, + preferReplayIfAvailable); } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java index e7fc260f00a..3049a3a8432 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java @@ -18,6 +18,7 @@ import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.tractrac.model.lib.api.event.CreateModelException; +import com.tractrac.model.lib.api.event.IRace; import com.tractrac.subscription.lib.api.SubscriberInitializationException; public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTrackingConnectivityParameters { @@ -39,12 +40,21 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking private final String raceStatus; private final String raceVisibility; private final boolean useInternalMarkPassingAlgorithm; + private final boolean preferReplayIfAvailable; + /** + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. + */ public RaceTrackingConnectivityParametersImpl(URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, DomainFactory domainFactory, String tracTracUsername, String tracTracPassword, String raceStatus, - String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination) { + String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, boolean preferReplayIfAvailable) { super(trackWind, correctWindDirectionByMagneticDeclination); this.paramURL = paramURL; this.liveURI = liveURI; @@ -62,6 +72,7 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking this.raceStatus = raceStatus; this.raceVisibility = raceVisibility; this.useInternalMarkPassingAlgorithm = useInternalMarkPassingAlgorithm; + this.preferReplayIfAvailable = preferReplayIfAvailable; } @Override @@ -76,7 +87,7 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking RaceTracker tracker = domainFactory.createRaceTracker(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, tracTracPassword, raceStatus, - raceVisibility, trackedRegattaRegistry, raceLogResolver, this); + raceVisibility, trackedRegattaRegistry, raceLogResolver, this, preferReplayIfAvailable); return tracker; } @@ -86,7 +97,7 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking RaceTracker tracker = domainFactory.createRaceTracker(regatta, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, tracTracPassword, raceStatus, - raceVisibility, trackedRegattaRegistry, raceLogResolver, this); + raceVisibility, trackedRegattaRegistry, raceLogResolver, this, preferReplayIfAvailable); return tracker; } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java index 552a8325d6e..43a1aac95b6 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracAdapterImpl.java @@ -56,7 +56,8 @@ public class TracTracAdapterImpl implements TracTracAdapter { courseDesignUpdateURI, /* startOfTracking */null, /* endOfTracking */null, delayToLiveInMillis, /* offsetToStartTimeOfSimulatedRace */null, /* ignoreTracTracMarkPassings */ false, - raceLogStore, regattaLogStore, tracTracUsername, tracTracPassword, raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination), + raceLogStore, regattaLogStore, tracTracUsername, tracTracPassword, raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination, + /* preferReplayIfAvailable */ false), timeoutInMilliseconds); } @@ -72,7 +73,7 @@ public class TracTracAdapterImpl implements TracTracAdapter { getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, tracTracUsername, tracTracPassword, - raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination), timeoutInMilliseconds); + raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination, /* preferReplayIfAvailable */ false), timeoutInMilliseconds); } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java index 2656e92091a..159e1879197 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java @@ -252,76 +252,122 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl * available but loses track of the wind, e.g., during server restarts. * @param trackedRegattaRegistry * used to create the {@link TrackedRegatta} for the domain event + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ protected TracTracRaceTrackerImpl(DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, - String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) + String raceStatus, String raceVisibility, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, + boolean preferReplayIfAvailable) throws URISyntaxException, MalformedURLException, FileNotFoundException, CreateModelException, SubscriberInitializationException { this(ModelLocator.getEventFactory().createRace(new URI(paramURL.toString())), domainFactory, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, - tracTracPassword, raceStatus, raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams); + tracTracPassword, raceStatus, raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams, preferReplayIfAvailable); } + /** + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. + */ private TracTracRaceTrackerImpl(IRace tractracRace, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, - TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) throws URISyntaxException, MalformedURLException, + TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, + boolean preferReplayIfAvailable) throws URISyntaxException, MalformedURLException, FileNotFoundException, SubscriberInitializationException { this(tractracRace, /* regatta */ null, domainFactory, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, windStore, tracTracUsername, tracTracPassword, raceStatus, raceVisibility, trackedRegattaRegistry, - raceLogResolver, connectivityParams); + raceLogResolver, connectivityParams, preferReplayIfAvailable); } /** * Use this constructor if the {@link Regatta} in which to arrange the {@link RaceDefinition}s created by this - * tracker is already known up-front, particularly if it has a specific configuration to use. Other constructors - * may create a default {@link Regatta} with only a single default {@link Series} and {@link Fleet} which may not - * always be what you want. + * tracker is already known up-front, particularly if it has a specific configuration to use. Other constructors may + * create a default {@link Regatta} with only a single default {@link Series} and {@link Fleet} which may not always + * be what you want. + * + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ protected TracTracRaceTrackerImpl(Regatta regatta, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean ignoreTracTracMarkPassings, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, - TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) throws URISyntaxException, + TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, + boolean preferReplayIfAvailable) throws URISyntaxException, MalformedURLException, FileNotFoundException, CreateModelException, SubscriberInitializationException { this(ModelLocator.getEventFactory().createRace(new URI(paramURL.toString())), regatta, domainFactory, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, ignoreTracTracMarkPassings, raceLogStore, regattaLogStore, windStore, tracTracUsername, - tracTracPassword, raceStatus, raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams); + tracTracPassword, raceStatus, raceVisibility, trackedRegattaRegistry, raceLogResolver, connectivityParams, preferReplayIfAvailable); + } + + private boolean isReplayRace(IRace tractracRace) { + // TODO bug 4037: change into tractracRace.getConnectionType() == File once TracAPI 3.3.2 is available + return tractracRace.getStoredURI() != null && tractracRace.getStoredURI().toString().toLowerCase().endsWith(".mtb"); } /** - * * @param regatta * if null, then domainFactory.getOrCreateRegatta(tractracEvent) will be used * to obtain a default regatta * @param offsetToStartTimeOfSimulatedRace - * if not null, the connector will adjust the time stamps of all events received such that the - * first mark passing for the first waypoint will be set to "now." It will delay the forwarding of all - * events received such that they seem to be sent in "real-time" + offsetToStartTimeOfSimulatedRace So, more or less the time points - * attached to the events sent to the receivers will again approximate the wall time. + * if not null, the connector will adjust the time stamps of all events received such that + * the first mark passing for the first waypoint will be set to "now." It will delay the forwarding of + * all events received such that they seem to be sent in "real-time" + + * offsetToStartTimeOfSimulatedRace So, more or less the time points attached to the events + * sent to the receivers will again approximate the wall time. + * @param preferReplayIfAvailable + * when a non-{@code null} {@code storedURI} and/or {@code liveURI} are provided and the {@link IRace} + * specifies something different and claims to be in replay mode ({@link IRace#getConnectionType} is + * {@code File}) then if this parameter is {@code true} the race will be loaded from the replay file + * instead of the {@code storedURI}/{@code liveURI} specified. This is particularly useful for restoring + * races if since the last connection the race was migrated to a replay file format. */ private TracTracRaceTrackerImpl(IRace tractracRace, final Regatta regatta, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI, URI tracTracUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, - TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) throws URISyntaxException, MalformedURLException, + TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, + boolean preferReplayIfAvailable) throws URISyntaxException, MalformedURLException, FileNotFoundException, SubscriberInitializationException { super(connectivityParams); this.trackedRegattaRegistry = trackedRegattaRegistry; this.tractracRace = tractracRace; this.tractracEvent = tractracRace.getEvent(); + if (preferReplayIfAvailable && isReplayRace(tractracRace)) { + if (!Util.equalsWithNull(liveURI, tractracRace.getLiveURI()) + || !Util.equalsWithNull(storedURI, tractracRace.getStoredURI())) { + logger.info("Replay format available and preferred for race " + tractracRace.getName() + + "; using storedURI " + tractracRace.getStoredURI() + " instead of " + storedURI + + " and liveURI " + tractracRace.getLiveURI() + " instead of " + liveURI); + liveURI = tractracRace.getLiveURI(); + storedURI = tractracRace.getStoredURI(); + } + } this.id = createID(paramURL, liveURI, storedURI); isLiveTracking = liveURI != null; this.race = null; // no race received yet diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackingConnectivityParameters.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackingConnectivityParameters.java index 34690d54ff4..f93855776b8 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackingConnectivityParameters.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackingConnectivityParameters.java @@ -23,8 +23,8 @@ public interface RaceTrackingConnectivityParameters { /** * Starts a {@link RaceTracker} using the connectivity parameters provided by this object. As no specific * {@link Regatta} is provided, this will first look up a regatta for the race from - * {@link TrackedRegattaRegistry#getRememberedRegattaForRace(java.io.Serializable)} and if not found - * will look up or create a default regatta based on race data such as an event name and the boat class. + * {@link TrackedRegattaRegistry#getRememberedRegattaForRace(java.io.Serializable)} and if not found will look up or + * create a default regatta based on race data such as an event name and the boat class. */ RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore, RaceLogResolver raceLogResolver) throws Exception; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TracTracConnectivityParamsLoadAndStoreTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TracTracConnectivityParamsLoadAndStoreTest.java index c8a664b0def..6dd983458f5 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TracTracConnectivityParamsLoadAndStoreTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TracTracConnectivityParamsLoadAndStoreTest.java @@ -49,7 +49,7 @@ public class TracTracConnectivityParamsLoadAndStoreTest extends AbstractConnecti paramURL, /* live URI */ null, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis, offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, /* raceLogStore */ null, /* regattaLogStore */ null, DomainFactory.INSTANCE, tracTracUsername, tracTracPassword, - raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination); + raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination, /* preferReplayIfAvailable */ false); // store mongoObjectFactory.addConnectivityParametersForRaceToRestore(tracTracParams); // load diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java index 74f94560354..279a13d9c83 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java @@ -71,7 +71,8 @@ public class TrackRaceBoatCompetitorMetadataReplicationTest extends AbstractServ .createTrackingConnectivityParameters(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */ 0l, /* offsetToStartTimeOfSimulatedRace */null, /*ignoreTracTracMarkPassings*/ false, EmptyRaceLogStore.INSTANCE, - EmptyRegattaLogStore.INSTANCE, tracTracUsername, tracTracPassword, "", "", /* trackWind */ false, /* correctWindDirectionByMagneticDeclination */ false); + EmptyRegattaLogStore.INSTANCE, tracTracUsername, tracTracPassword, "", "", /* trackWind */ false, /* correctWindDirectionByMagneticDeclination */ false, + /* preferReplayIfAvailable */ false); } private void startTracking() throws Exception, InterruptedException { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java index c165274a8fa..947ea39cbc0 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java @@ -89,7 +89,8 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest { .createTrackingConnectivityParameters(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */ 0l, /* offsetToStartTimeOfSimulatedRace */null, /*ignoreTracTracMarkPassings*/ false, EmptyRaceLogStore.INSTANCE, - EmptyRegattaLogStore.INSTANCE, tracTracUsername, tracTracPassword, "", "", /* trackWind */ false, /* correctWindDirectionByMagneticDeclination */ false); + EmptyRegattaLogStore.INSTANCE, tracTracUsername, tracTracPassword, "", "", /* trackWind */ false, /* correctWindDirectionByMagneticDeclination */ false, + /* preferReplayIfAvailable */ false); } private void startTracking() throws Exception, InterruptedException { From 0cf07423ebe09fc72f381d028e01f1a21ab884cc Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 10:02:01 +0100 Subject: [PATCH 181/191] bug 3908: in a first step moved update queue from MarkPassingUpdateListener to MarkPassingCalculator Change-Id: I60e77709d3c83322b75878c3df24420e10ba9717 --- .../MarkPassingCalculator.java | 18 ++++++--- .../MarkPassingUpdateListener.java | 37 +++++++++---------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index 68cb1c53595..6d34bcda95c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -9,6 +9,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; import java.util.logging.Level; import java.util.logging.Logger; @@ -51,7 +52,7 @@ public class MarkPassingCalculator { private static final Logger logger = Logger.getLogger(MarkPassingCalculator.class.getName()); private final MarkPassingUpdateListener listener; private final static ExecutorService executor = ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor(); - + private final LinkedBlockingQueue queue; private boolean suspended = false; /** @@ -72,9 +73,11 @@ public class MarkPassingCalculator { public MarkPassingCalculator(DynamicTrackedRace race, boolean doListen, boolean waitForInitialMarkPassingCalculation) { if (doListen) { - listener = new MarkPassingUpdateListener(race); + queue = new LinkedBlockingQueue<>(); + listener = new MarkPassingUpdateListener(race, this); } else { listener = null; + queue = null; // no queue is needed if no change listener is in use } this.race = race; finder = new CandidateFinderImpl(race, executor); @@ -211,13 +214,13 @@ public class MarkPassingCalculator { logger.finer("MPC for "+raceName+" is checking the queue"); List allNewFixInsertions = new ArrayList<>(); try { - allNewFixInsertions.add(listener.getQueue().take()); + allNewFixInsertions.add(queue.take()); } catch (InterruptedException e) { logger.log(Level.SEVERE, "MarkPassingCalculator for "+raceName+" threw exception " + e.getMessage() + " while waiting for new GPSFixes"); } LockUtil.lockForWrite(lock); - listener.getQueue().drainTo(allNewFixInsertions); + queue.drainTo(allNewFixInsertions); logger.fine("MPC for "+raceName+" received "+ allNewFixInsertions.size()+" new updates."); for (StorePositionUpdateStrategy fixInsertion : allNewFixInsertions) { if (listener.isEndMarker(fixInsertion)) { @@ -399,7 +402,7 @@ public class MarkPassingCalculator { public void resume() { logger.finest("Resumed MarkPassingCalculator"); suspended = false; - listener.getQueue().add(new StorePositionUpdateStrategy() { + queue.add(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -410,6 +413,11 @@ public class MarkPassingCalculator { } }); } + + void enqueueUpdate(StorePositionUpdateStrategy update) { + // TODO bug 3908: manage listener thread here; if this is the first update to enter an empty queue, launch the thread; the thread will terminate after picking the last update from the queue + queue.add(update); + } public void stop() { listener.stop(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java index 4c0ccc67f2f..5ad6c2a35be 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java @@ -4,8 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; @@ -31,8 +29,8 @@ import com.sap.sse.common.util.IntHolder; */ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { private static final Logger logger = Logger.getLogger(MarkPassingUpdateListener.class.getName()); - private LinkedBlockingQueue queue; private final String raceName; + private final MarkPassingCalculator markPassingCalculator; private final StorePositionUpdateStrategy endMarker = new StorePositionUpdateStrategy() { @Override @@ -46,20 +44,19 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { /** * Adds itself automatically as a Listener on the race and its course. + * + * @param markPassingCalculator + * the mark passing calculator to send updates to for enqueuing */ - public MarkPassingUpdateListener(DynamicTrackedRace race) { + public MarkPassingUpdateListener(DynamicTrackedRace race, MarkPassingCalculator markPassingCalculator) { + this.markPassingCalculator = markPassingCalculator; raceName = race.getRace().getName(); - queue = new LinkedBlockingQueue<>(); race.addListener(this); } - public BlockingQueue getQueue() { - return queue; - } - @Override public void competitorPositionChanged(final GPSFixMoving fix, final Competitor competitor) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -79,7 +76,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { @Override public void markPositionChanged(final GPSFix fix, final Mark mark, boolean firstInTrack) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -103,12 +100,12 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { public void stop() { logger.info("Stopping " + this + " for race " + raceName); - queue.add(endMarker); + markPassingCalculator.enqueueUpdate(endMarker); } @Override public void waypointAdded(final int zeroBasedIndex, final Waypoint waypointThatGotAdded) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -126,7 +123,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { @Override public void waypointRemoved(final int zeroBasedIndex, final Waypoint waypointThatGotRemoved) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -144,7 +141,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { public void addFixedPassing(final Competitor c, final Integer zeroBasedIndexOfWaypoint, final TimePoint timePointOfFixedPassing) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -159,7 +156,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { } public void removeFixedPassing(final Competitor c, final Integer zeroBasedIndexOfWaypoint) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -174,7 +171,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { } public void addSuppressedPassing(final Competitor c, final Integer zeroBasedIndexOfWaypoint) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -189,7 +186,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { } public void removeSuppressedPassing(final Competitor c) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -204,7 +201,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { @Override public void startOfRaceChanged(TimePoint oldStartOfRace, TimePoint newStartOfRace) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, @@ -223,7 +220,7 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { @Override public void finishedTimeChanged(TimePoint oldFinishedTime, TimePoint newFinishedTime) { - queue.add(new StorePositionUpdateStrategy() { + markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { @Override public void storePositionUpdate(Map> competitorFixes, Map> markFixes, List addedWaypoints, List removedWaypoints, From 9d0d3fdf35cda64d095013e48b78b5b68c734931 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 10:06:01 +0100 Subject: [PATCH 182/191] also moved the end marker to MarkPassingCalculator Change-Id: Ifdac3ad5c4abbfca709ec9b914ff2d6ccdecf34a --- .../MarkPassingCalculator.java | 24 +++++++++++++++++-- .../MarkPassingUpdateListener.java | 23 ------------------ 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index 6d34bcda95c..7ae8b908fb8 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -53,6 +53,21 @@ public class MarkPassingCalculator { private final MarkPassingUpdateListener listener; private final static ExecutorService executor = ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor(); private final LinkedBlockingQueue queue; + + /** + * An "end marker" that can be {@link #enqueueUpdate(StorePositionUpdateStrategy) enqueued} in order to tell the {@link Listen} + * thread to stop. + */ + private final StorePositionUpdateStrategy endMarker = new StorePositionUpdateStrategy() { + @Override + public void storePositionUpdate(Map> competitorFixes, + Map> markFixes, List addedWaypoints, List removedWaypoints, + IntHolder smallestChangedWaypointIndex, List> fixedMarkPassings, + List> removedMarkPassings, + List> suppressedMarkPassings, List unSuppressedMarkPassings, CandidateFinder candidateFinder, CandidateChooser candidateChooser) { + } + }; + private boolean suspended = false; /** @@ -223,7 +238,7 @@ public class MarkPassingCalculator { queue.drainTo(allNewFixInsertions); logger.fine("MPC for "+raceName+" received "+ allNewFixInsertions.size()+" new updates."); for (StorePositionUpdateStrategy fixInsertion : allNewFixInsertions) { - if (listener.isEndMarker(fixInsertion)) { + if (isEndMarker(fixInsertion)) { logger.info("Stopping "+MarkPassingCalculator.this+"'s listener for race "+raceName); finished = true; break; @@ -414,13 +429,18 @@ public class MarkPassingCalculator { }); } + private boolean isEndMarker(StorePositionUpdateStrategy endMarkerCandidate) { + return endMarkerCandidate == endMarker; + } + void enqueueUpdate(StorePositionUpdateStrategy update) { // TODO bug 3908: manage listener thread here; if this is the first update to enter an empty queue, launch the thread; the thread will terminate after picking the last update from the queue queue.add(update); } public void stop() { - listener.stop(); + logger.info("Stopping " + this + " for race " + race.getRace().getName()); + enqueueUpdate(endMarker); } public void recalculateEverything() { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java index 5ad6c2a35be..127eb849f26 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingUpdateListener.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.logging.Logger; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; @@ -28,20 +27,8 @@ import com.sap.sse.common.util.IntHolder; * */ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { - private static final Logger logger = Logger.getLogger(MarkPassingUpdateListener.class.getName()); - private final String raceName; private final MarkPassingCalculator markPassingCalculator; - private final StorePositionUpdateStrategy endMarker = new StorePositionUpdateStrategy() { - @Override - public void storePositionUpdate(Map> competitorFixes, - Map> markFixes, List addedWaypoints, List removedWaypoints, - IntHolder smallestChangedWaypointIndex, List> fixedMarkPassings, - List> removedMarkPassings, - List> suppressedMarkPassings, List unSuppressedMarkPassings, CandidateFinder candidateFinder, CandidateChooser candidateChooser) { - } - }; - /** * Adds itself automatically as a Listener on the race and its course. * @@ -50,7 +37,6 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { */ public MarkPassingUpdateListener(DynamicTrackedRace race, MarkPassingCalculator markPassingCalculator) { this.markPassingCalculator = markPassingCalculator; - raceName = race.getRace().getName(); race.addListener(this); } @@ -94,15 +80,6 @@ public class MarkPassingUpdateListener extends AbstractRaceChangeListener { }); } - public boolean isEndMarker(StorePositionUpdateStrategy endMarkerCandidate) { - return endMarkerCandidate == endMarker; - } - - public void stop() { - logger.info("Stopping " + this + " for race " + raceName); - markPassingCalculator.enqueueUpdate(endMarker); - } - @Override public void waypointAdded(final int zeroBasedIndex, final Waypoint waypointThatGotAdded) { markPassingCalculator.enqueueUpdate(new StorePositionUpdateStrategy() { From c68f745fbf24f95b683337442513dd388f9c84cb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 13:48:17 +0100 Subject: [PATCH 183/191] moved setDaemon call a bit Change-Id: I724b8b876e5ae35a269e672c6fa2195d18723492 --- .../domain/markpassingcalculation/MarkPassingCalculator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index 7ae8b908fb8..23aa4dad37f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -100,6 +100,7 @@ public class MarkPassingCalculator { if (doListen) { listen = new Listen(race.getRace().getName()); listenerThread = new Thread(listen, "MarkPassingCalculator for race " + race.getRace().getName()); + listenerThread.setDaemon(true); } else { listenerThread = null; listen = null; @@ -119,7 +120,6 @@ public class MarkPassingCalculator { logger.log(Level.SEVERE, "Error trying to compute initial set of mark passings for race "+race.getRace().getName(), e); } if (doListen) { - listenerThread.setDaemon(true); listenerThread.start(); synchronized (listenerThread) { listenerThreadStarted = true; From 8ce143fbb86752fc5ea36c1a6de4cd7e460d020d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 16:47:42 +0100 Subject: [PATCH 184/191] started small changes in thread handling in MarkPassingCalculator Change-Id: I0b145d8ceca583bb6d7032087ff645ddba54f216 --- .../MarkPassingCalculator.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index 23aa4dad37f..7d6ddd0c618 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -97,10 +97,9 @@ public class MarkPassingCalculator { this.race = race; finder = new CandidateFinderImpl(race, executor); chooser = new CandidateChooserImpl(race); - if (doListen) { + if (listener != null) { listen = new Listen(race.getRace().getName()); - listenerThread = new Thread(listen, "MarkPassingCalculator for race " + race.getRace().getName()); - listenerThread.setDaemon(true); + listenerThread = createListenerThread(race.getRace().getName()); } else { listenerThread = null; listen = null; @@ -119,7 +118,7 @@ public class MarkPassingCalculator { } catch (Exception e) { logger.log(Level.SEVERE, "Error trying to compute initial set of mark passings for race "+race.getRace().getName(), e); } - if (doListen) { + if (listener != null) { listenerThread.start(); synchronized (listenerThread) { listenerThreadStarted = true; @@ -133,6 +132,12 @@ public class MarkPassingCalculator { t.start(); } } + + private Thread createListenerThread(String raceName) { + final Thread result = new Thread(listen, "MarkPassingCalculator for race " + raceName); + result.setDaemon(true); + return result; + } /** * Waits for the listening thread to terminate. If no listening thread has been requested ({@code listen} constructor From 473ad865300f85756a2c8d814ac3fa9d1a6792c1 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 25 Jan 2017 17:14:16 +0100 Subject: [PATCH 185/191] fixed message keys for speed; added Bearing averager Change-Id: Iae77b6a3c221ae7e84a9d65a1ac11a4c83c1101d --- .../Sailing_StringMessages.properties | 4 +- .../Sailing_StringMessages_de.properties | 4 +- .../com/sap/sailing/datamining/Activator.java | 2 + ...ingAverageDegreesAggregationProcessor.java | 56 +++++++++++++++++++ ...elDistanceAverageAggregationProcessor.java | 3 +- ...rallelDistanceSumAggregationProcessor.java | 1 - .../com/sap/sailing/domain/common/Moving.java | 2 +- .../com/sap/sailing/domain/common/Speed.java | 2 +- .../domain/common/SpeedWithBearing.java | 2 +- 9 files changed, 68 insertions(+), 8 deletions(-) create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelBearingAverageDegreesAggregationProcessor.java diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index acff007f65b..87d4c321553 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -89,4 +89,6 @@ TimeSpentInSeconds=Time Spent in Seconds MedalRace=Medal Race WindSourceType=Wind Source Type windFrom=True Wind Direction (TWD) -windSpeedKnots=True Wind Speed (kts) \ No newline at end of file +windSpeedKnots=True Wind Speed (kts) +speedInKnots=Speed (kts) +bearing=Course over Ground (°T) \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index e34276cc197..d8416b596e0 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -89,4 +89,6 @@ TimeSpentInSeconds=Ben MedalRace=Medaillenrennen WindSourceType=Art der Windmessung windFrom=Wind aus Richtung (TWD) -windSpeedKnots=Wahre Windgeschwindigkeit (kn) \ No newline at end of file +windSpeedKnots=Wahre Windgeschwindigkeit (kn) +speedInKnots=Fahrt (kn) +bearing=Kurs über Grund (°) \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index 938ac5b9ab5..8ab50b71b7c 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -18,6 +18,7 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.datamining.impl.components.aggregators.ParallelBearingAverageDegreesAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelBoolSumAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceAverageAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMaxAggregationProcessor; @@ -114,6 +115,7 @@ public class Activator extends AbstractDataMiningActivatorWithPredefinedQueries aggregators.add(ParallelDistanceMaxAggregationProcessor.getDefinition()); aggregators.add(ParallelDistanceMinAggregationProcessor.getDefinition()); aggregators.add(ParallelDistanceMedianAggregationProcessor.getDefinition()); + aggregators.add(ParallelBearingAverageDegreesAggregationProcessor.getDefinition()); return aggregators; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelBearingAverageDegreesAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelBearingAverageDegreesAggregationProcessor.java new file mode 100755 index 00000000000..9907b3fcc01 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelBearingAverageDegreesAggregationProcessor.java @@ -0,0 +1,56 @@ +package com.sap.sailing.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.BearingCluster; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataStoringAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class ParallelBearingAverageDegreesAggregationProcessor + extends AbstractParallelGroupedDataStoringAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Bearing.class, Double.class, "Average", ParallelBearingAverageDegreesAggregationProcessor.class); + + private final Map results; + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + public ParallelBearingAverageDegreesAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Average"); + results = new HashMap<>(); + } + + @Override + protected void storeElement(GroupedDataEntry element) { + BearingCluster cluster = results.get(element.getKey()); + if (cluster == null) { + cluster = new BearingCluster(); + results.put(element.getKey(), cluster); + } + cluster.add(element.getDataEntry()); + } + + @Override + protected Map aggregateResult() { + Map result = new HashMap<>(); + for (Entry clusterEntry : results.entrySet()) { + GroupKey key = clusterEntry.getKey(); + result.put(key, clusterEntry.getValue().getAverage().getDegrees()); + } + return result; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java index 0f2e531e15d..de4acb69a79 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java @@ -7,7 +7,6 @@ import java.util.Map.Entry; import java.util.concurrent.ExecutorService; import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.impl.MeterDistance; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.impl.components.GroupedDataEntry; @@ -56,7 +55,7 @@ public class ParallelDistanceAverageAggregationProcessor Map sumAggregation = sumAggregationProcessor.getResult(); for (Entry sumAggregationEntry : sumAggregation.entrySet()) { GroupKey key = sumAggregationEntry.getKey(); - result.put(key, new MeterDistance(sumAggregationEntry.getValue().getMeters() / elementAmountPerKey.get(key).doubleValue())); + result.put(key, sumAggregationEntry.getValue().scale(1. / elementAmountPerKey.get(key).doubleValue())); } return result; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java index 336aa6a59de..b5d067050d1 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java @@ -44,5 +44,4 @@ public class ParallelDistanceSumAggregationProcessor extends protected Map getResult() { return results; } - } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Moving.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Moving.java index 40e9627ddbf..5f8c13504dd 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Moving.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Moving.java @@ -3,6 +3,6 @@ package com.sap.sailing.domain.common; import com.sap.sse.datamining.annotations.Connector; public interface Moving { - @Connector(messageKey="Speed") + @Connector(messageKey="") SpeedWithBearing getSpeed(); } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java index 74ead26ede8..69b2dad35e1 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java @@ -67,7 +67,7 @@ public interface Speed extends Comparable, Serializable { } }; - @Statistic(messageKey="", resultDecimals=2) + @Statistic(messageKey="speedInKnots", resultDecimals=2) double getKnots(); double getMetersPerSecond(); diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java index e277d69ffd2..d3de796790d 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/SpeedWithBearing.java @@ -6,7 +6,7 @@ import com.sap.sse.datamining.annotations.Statistic; public interface SpeedWithBearing extends Speed { - @Statistic(messageKey="", resultDecimals=1) + @Statistic(messageKey="bearing", resultDecimals=1) Bearing getBearing(); /** From 38352241d14639e83a6f9dcc1cca4b74199e392d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 26 Jan 2017 00:34:08 +0100 Subject: [PATCH 186/191] stop and re-start mark passing calculator thread as needed (bug 3908) Change-Id: I1d622c230eab2c34f3580194b18948a40d87c745 --- .../MarkPassingCalculator.java | 92 ++++++++++++------- 1 file changed, 60 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java index 7d6ddd0c618..8b76e2442b1 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/MarkPassingCalculator.java @@ -43,6 +43,7 @@ import com.sap.sse.util.ThreadPoolUtil; * signals that the race is over (after {@link #stop()} is called. * * @author Nicolas Klose + * @author Axel Uhl (d043530) * */ public class MarkPassingCalculator { @@ -72,12 +73,17 @@ public class MarkPassingCalculator { /** * If the constructor is called with the {@code listen} parameter set to {@code true}, this field will hold a thread - * when the constructor has terminated normally. The thread may not yet have been started because, depending on the + * when objects were added to the {@link #queue} and are being processed. When the thread has completed processing + * all updates from the {@link #queue} it will terminate and set this field to {@code null}. The decision to create + * and stop the thread goes hand in hand with setting or, respectively, clearing this field while holding this object's + * monitor ({@code synchronized}).

    + * + * The thread may not yet have been started because, depending on the * constructor's {@code waitForInitialMarkPassingCalculation} argument, start-up may be asynchronous, but eventually * it will be started at some point. The {@link #waitUntilStopped} method can be used to wait until the thread has * started and then terminated again. */ - private final Thread listenerThread; + private Thread listenerThread; private final Listen listen; @@ -98,10 +104,8 @@ public class MarkPassingCalculator { finder = new CandidateFinderImpl(race, executor); chooser = new CandidateChooserImpl(race); if (listener != null) { - listen = new Listen(race.getRace().getName()); - listenerThread = createListenerThread(race.getRace().getName()); + listen = new Listen(); } else { - listenerThread = null; listen = null; } Thread t = new Thread(() -> { @@ -119,10 +123,14 @@ public class MarkPassingCalculator { logger.log(Level.SEVERE, "Error trying to compute initial set of mark passings for race "+race.getRace().getName(), e); } if (listener != null) { - listenerThread.start(); - synchronized (listenerThread) { - listenerThreadStarted = true; - listenerThread.notifyAll(); + synchronized (MarkPassingCalculator.this) { + if (listenerThread == null) { + listenerThread = createAndStartListenerThread(); + synchronized (listenerThread) { + listenerThreadStarted = true; + listenerThread.notifyAll(); + } + } } } }, "MarkPassingCalculator for race "+race.getRace().getName()+" initialization"); @@ -133,9 +141,10 @@ public class MarkPassingCalculator { } } - private Thread createListenerThread(String raceName) { - final Thread result = new Thread(listen, "MarkPassingCalculator for race " + raceName); + private Thread createAndStartListenerThread() { + final Thread result = new Thread(listen, "MarkPassingCalculator for race " + race.getRace().getName()); result.setDaemon(true); + result.start(); return result; } @@ -202,8 +211,8 @@ public class MarkPassingCalculator { */ private final NamedReentrantReadWriteLock lock; - public Listen(String raceName) { - this.raceName = raceName; + public Listen() { + this.raceName = race.getRace().getName(); lock = new NamedReentrantReadWriteLock("lock for calculation thread (" + Listen.class.getSimpleName() + ")", /* fair */ false); } @@ -232,27 +241,40 @@ public class MarkPassingCalculator { while (!finished) { try { logger.finer("MPC for "+raceName+" is checking the queue"); - List allNewFixInsertions = new ArrayList<>(); - try { - allNewFixInsertions.add(queue.take()); - } catch (InterruptedException e) { - logger.log(Level.SEVERE, "MarkPassingCalculator for "+raceName+" threw exception " + e.getMessage() - + " while waiting for new GPSFixes"); - } - LockUtil.lockForWrite(lock); - queue.drainTo(allNewFixInsertions); - logger.fine("MPC for "+raceName+" received "+ allNewFixInsertions.size()+" new updates."); - for (StorePositionUpdateStrategy fixInsertion : allNewFixInsertions) { - if (isEndMarker(fixInsertion)) { - logger.info("Stopping "+MarkPassingCalculator.this+"'s listener for race "+raceName); + synchronized (MarkPassingCalculator.this) { + // check if queue is empty while owning the MarkPassingCalculator's monitor; + // if the queue is empty, set listenerThread to null while under the monitor + // and decide to finish the thread; otherwise, take the next object + if (queue.isEmpty()) { finished = true; - break; - } else { - fixInsertion.storePositionUpdate(competitorFixes, markFixes, addedWaypoints, removedWaypoints, - smallestChangedWaypointIndex, fixedMarkPassings, removedFixedMarkPassings, - suppressedMarkPassings, unsuppressedMarkPassings, finder, chooser); + listenerThread = null; } } + LockUtil.lockForWrite(lock); + if (!finished) { + List allNewFixInsertions = new ArrayList<>(); + try { + allNewFixInsertions.add(queue.take()); + } catch (InterruptedException e) { + logger.log(Level.SEVERE, "MarkPassingCalculator for "+raceName+" threw exception " + e.getMessage() + + " while waiting for new GPSFixes"); + } + queue.drainTo(allNewFixInsertions); + logger.fine("MPC for "+raceName+" received "+ allNewFixInsertions.size()+" new updates."); + for (StorePositionUpdateStrategy fixInsertion : allNewFixInsertions) { + if (isEndMarker(fixInsertion)) { + logger.info("Stopping "+MarkPassingCalculator.this+"'s listener for race "+raceName); + finished = true; + break; + } else { + fixInsertion.storePositionUpdate(competitorFixes, markFixes, addedWaypoints, removedWaypoints, + smallestChangedWaypointIndex, fixedMarkPassings, removedFixedMarkPassings, + suppressedMarkPassings, unsuppressedMarkPassings, finder, chooser); + } + } + } + // in suspended mode we've stored the update contents in competitorFixes, markFixes, etc. but + // haven't processed them yet with the CandidateFinder or CandidateChooser. if (!finished && !suspended) { if (smallestChangedWaypointIndex.value != -1) { final Course course = race.getRace().getCourse(); @@ -440,7 +462,13 @@ public class MarkPassingCalculator { void enqueueUpdate(StorePositionUpdateStrategy update) { // TODO bug 3908: manage listener thread here; if this is the first update to enter an empty queue, launch the thread; the thread will terminate after picking the last update from the queue - queue.add(update); + synchronized (this) { + final boolean wasQueueEmpty = queue.isEmpty(); + queue.add(update); + if (wasQueueEmpty && listenerThread == null) { + listenerThread = createAndStartListenerThread(); + } + } } public void stop() { From 8228c48cadd31fc0516b2545aa8830134ab110ee Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 26 Jan 2017 09:23:18 +0100 Subject: [PATCH 187/191] bug 4039: Added a failing test --- .../tracking/RaceTrackerListenersTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/tracking/RaceTrackerListenersTest.java diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/tracking/RaceTrackerListenersTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/tracking/RaceTrackerListenersTest.java new file mode 100644 index 00000000000..fac170ca31b --- /dev/null +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/tracking/RaceTrackerListenersTest.java @@ -0,0 +1,28 @@ +package com.sap.sailing.domain.tracking; + +import java.util.ConcurrentModificationException; + +import org.junit.Test; + +public class RaceTrackerListenersTest { + + /** + * Regression test for bug 4039. Removing a listener while the listener was called resulted in a + * {@link ConcurrentModificationException} if there is another listener in the listeners collection. + */ + @Test + public void testThatListenersCanBeRemovedInListener() { + final RaceTrackerListeners listeners = new RaceTrackerListeners(); + for (int i = 0; i < 2; i++) { + listeners.addListener(new RaceTracker.Listener() { + + @Override + public void onTrackerWillStop(boolean preemptive) { + listeners.removeListener(this); + } + }); + } + listeners.onTrackerWillStop(false); + } + +} From 8488d1eddf121626b1b8f7cc6b8524ece5a20724 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 26 Jan 2017 09:26:58 +0100 Subject: [PATCH 188/191] bug 4039: Fixed ConcurrentModificationException if a listener removes itself while it is called --- .../domain/tracking/RaceTrackerListeners.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackerListeners.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackerListeners.java index f42771c89ec..ff9a95a6d30 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackerListeners.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackerListeners.java @@ -27,9 +27,13 @@ public class RaceTrackerListeners implements RaceTracker.Listener { } @Override - public synchronized void onTrackerWillStop(boolean preemptive) { - isStopped.set(true); - isStoppedPreemptive.set(preemptive); - registeredListeners.forEach(l -> l.onTrackerWillStop(preemptive)); + public void onTrackerWillStop(boolean preemptive) { + Iterable listenersToInform; + synchronized (this) { + isStopped.set(true); + isStoppedPreemptive.set(preemptive); + listenersToInform = new HashSet<>(registeredListeners); + } + listenersToInform.forEach(l -> l.onTrackerWillStop(preemptive)); } } From 4120b83b9cd245c6c70e595eea4a146fa3041822 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 26 Jan 2017 09:46:41 +0100 Subject: [PATCH 189/191] don't trim search keywords to allow for quoted phrases terminated by blank character Change-Id: I8d59a76c8c01b004b791cb3f77a0b580b0562930 --- .../src/com/sap/sse/common/filter/impl/KeywordMatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/filter/impl/KeywordMatcher.java b/java/com.sap.sse.common/src/com/sap/sse/common/filter/impl/KeywordMatcher.java index a17781eb2f8..8016a81b085 100644 --- a/java/com.sap.sse.common/src/com/sap/sse/common/filter/impl/KeywordMatcher.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/filter/impl/KeywordMatcher.java @@ -39,7 +39,7 @@ public abstract class KeywordMatcher { private boolean containsText(T obj, Iterable keywords) { boolean failed = false; for (String word : keywords) { - String textAsUppercase = word.toUpperCase().trim(); + String textAsUppercase = word.toUpperCase(); failed = true; for (String s : getStrings(obj)) { if (s != null && s.toUpperCase().contains(textAsUppercase)) { From 8866211749ca6e9a9d0d3f0a39717fd1012a7bb6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 26 Jan 2017 10:11:33 +0100 Subject: [PATCH 190/191] added release notes entry for changed filter behavior Change-Id: Icb41cbf34a1a9dc0defa912382067572952cf870 --- java/com.sap.sailing.www/release_notes_admin.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 22a6cbf948c..20a2e97afb9 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -45,6 +45,11 @@

  • There is a new permission, DATA_MINING, which is now required in order to use the /gwt/DataMining.html entry point and the related back-end service.
  • +
  • Quoted filtering keywords may now contain leading and/or trailing space characters that are + considered when applying the filter. For example, if you have regatta names "Regatta I - 2017" and + "Regatta II - 2017" and you would like to filter for "Regatta I" then you now may enter the + search term "Regatta I " (with a trailing blank) which then will no longer match "Regatta II - 2017". +
  • December 2016

      From d0435f5d73697cc5414e172825dda08d64320f0d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 26 Jan 2017 13:46:29 +0100 Subject: [PATCH 191/191] added WindTrack step to the WindFix retrieval chain, enabling filtering for wind source and wind source type Change-Id: Id2222dca60e479117e17835368c8f09d9a708ee7 --- .../Sailing_StringMessages.properties | 4 +- .../Sailing_StringMessages_de.properties | 4 +- .../com/sap/sailing/datamining/Activator.java | 2 + .../SailingDataRetrievalChainDefinitions.java | 5 +- .../datamining/data/HasWindTrackContext.java | 18 +++++++ .../components/WindFixRetrievalProcessor.java | 28 ++++------ .../WindTrackRetrievalProcessor.java | 42 +++++++++++++++ .../impl/data/WindFixWithContext.java | 7 ++- .../impl/data/WindTrackWithContext.java | 51 +++++++++++++++++++ 9 files changed, 137 insertions(+), 24 deletions(-) create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindTrackContext.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindTrackRetrievalProcessor.java create mode 100755 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindTrackWithContext.java diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index 87d4c321553..7b21a7c9a2a 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -88,7 +88,9 @@ AdvantageousEndOfLine=Advantageous End of Line TimeSpentInSeconds=Time Spent in Seconds MedalRace=Medal Race WindSourceType=Wind Source Type +WindSourceName=Wind Source Name windFrom=True Wind Direction (TWD) windSpeedKnots=True Wind Speed (kts) speedInKnots=Speed (kts) -bearing=Course over Ground (°T) \ No newline at end of file +bearing=Course over Ground (°T) +WindTrack=Wind Track \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index d8416b596e0..f8f5e12b8b7 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -88,7 +88,9 @@ AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie TimeSpentInSeconds=Benötigte Zeit in Sekunden MedalRace=Medaillenrennen WindSourceType=Art der Windmessung +WindSourceName=Name der Windmessreihe windFrom=Wind aus Richtung (TWD) windSpeedKnots=Wahre Windgeschwindigkeit (kn) speedInKnots=Fahrt (kn) -bearing=Kurs über Grund (°) \ No newline at end of file +bearing=Kurs über Grund (°) +WindTrack=Windmessreihe \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index 8ab50b71b7c..994ab4c6972 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -18,6 +18,7 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.datamining.data.HasWindTrackContext; import com.sap.sailing.datamining.impl.components.aggregators.ParallelBearingAverageDegreesAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelBoolSumAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceAverageAggregationProcessor; @@ -83,6 +84,7 @@ public class Activator extends AbstractDataMiningActivatorWithPredefinedQueries internalClasses.add(HasTrackedLegContext.class); internalClasses.add(HasTrackedLegOfCompetitorContext.class); internalClasses.add(HasGPSFixContext.class); + internalClasses.add(HasWindTrackContext.class); internalClasses.add(HasWindFixContext.class); internalClasses.add(HasManeuverContext.class); internalClasses.add(HasMarkPassingContext.class); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java index 5981db7e7b7..c38c72668be 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/SailingDataRetrievalChainDefinitions.java @@ -13,6 +13,7 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.datamining.data.HasWindTrackContext; import com.sap.sailing.datamining.impl.components.CompetitorOfRaceInLeaderboardRetrievalProcessor; import com.sap.sailing.datamining.impl.components.GPSFixRetrievalProcessor; import com.sap.sailing.datamining.impl.components.LeaderboardGroupRetrievalProcessor; @@ -24,6 +25,7 @@ import com.sap.sailing.datamining.impl.components.TrackedLegOfCompetitorRetrieva import com.sap.sailing.datamining.impl.components.TrackedLegRetrievalProcessor; import com.sap.sailing.datamining.impl.components.TrackedRaceRetrievalProcessor; import com.sap.sailing.datamining.impl.components.WindFixRetrievalProcessor; +import com.sap.sailing.datamining.impl.components.WindTrackRetrievalProcessor; import com.sap.sailing.datamining.impl.data.LeaderboardGroupWithContext; import com.sap.sailing.server.RacingEventService; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; @@ -73,7 +75,8 @@ public class SailingDataRetrievalChainDefinitions { final DataRetrieverChainDefinition windFixRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>( trackedRaceRetrieverChainDefinition, HasWindFixContext.class, "WindFixSailingDomainRetrieverChain"); - windFixRetrieverChainDefinition.endWith(TrackedRaceRetrievalProcessor.class, WindFixRetrievalProcessor.class, + windFixRetrieverChainDefinition.addAfter(TrackedRaceRetrievalProcessor.class, WindTrackRetrievalProcessor.class, HasWindTrackContext.class, "WindTrack"); + windFixRetrieverChainDefinition.endWith(WindTrackRetrievalProcessor.class, WindFixRetrievalProcessor.class, HasWindFixContext.class, "WindFix"); dataRetrieverChainDefinitions.add(windFixRetrieverChainDefinition); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindTrackContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindTrackContext.java new file mode 100755 index 00000000000..4a1a4ad41af --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasWindTrackContext.java @@ -0,0 +1,18 @@ +package com.sap.sailing.datamining.data; + +import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sse.datamining.annotations.Connector; +import com.sap.sse.datamining.annotations.Dimension; + +public interface HasWindTrackContext { + @Connector(scanForStatistics=false) + public HasTrackedRaceContext getTrackedRaceContext(); + + @Dimension(messageKey="WindSourceType") + String getWindSourceType(); + + @Dimension(messageKey="WindSourceName") + String getWindSourceName(); + + WindTrack getWindTrack(); +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java index 4dc58eeacd8..ae337f4561d 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindFixRetrievalProcessor.java @@ -4,11 +4,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.concurrent.ExecutorService; -import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.data.HasWindFixContext; +import com.sap.sailing.datamining.data.HasWindTrackContext; import com.sap.sailing.datamining.impl.data.WindFixWithContext; import com.sap.sailing.domain.common.Wind; -import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sse.datamining.components.Processor; @@ -21,28 +20,23 @@ import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; * @author Axel Uhl (d043530) * */ -public class WindFixRetrievalProcessor extends AbstractRetrievalProcessor { +public class WindFixRetrievalProcessor extends AbstractRetrievalProcessor { public WindFixRetrievalProcessor(ExecutorService executor, Collection> resultReceivers, int retrievalLevel) { - super(HasTrackedRaceContext.class, HasWindFixContext.class, executor, resultReceivers, retrievalLevel); + super(HasWindTrackContext.class, HasWindFixContext.class, executor, resultReceivers, retrievalLevel); } @Override - protected Iterable retrieveData(HasTrackedRaceContext element) { + protected Iterable retrieveData(HasWindTrackContext element) { Collection windFixesWithContext = new ArrayList<>(); - final TrackedRace trackedRace = element.getTrackedRace(); - for (final WindSource windSource : trackedRace.getWindSources()) { - if (!trackedRace.getWindSourcesToExclude().contains(windSource)) { - final WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource); - windTrack.lockForRead(); - try { - for (final Wind wind : windTrack.getFixes()) { - windFixesWithContext.add(new WindFixWithContext(element, wind, windSource.getType())); - } - } finally { - windTrack.unlockAfterRead(); - } + final WindTrack windTrack = element.getWindTrack(); + windTrack.lockForRead(); + try { + for (final Wind wind : windTrack.getFixes()) { + windFixesWithContext.add(new WindFixWithContext(element.getTrackedRaceContext(), wind, element.getWindSourceType())); } + } finally { + windTrack.unlockAfterRead(); } return windFixesWithContext; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindTrackRetrievalProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindTrackRetrievalProcessor.java new file mode 100755 index 00000000000..ef9b8514098 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/WindTrackRetrievalProcessor.java @@ -0,0 +1,42 @@ +package com.sap.sailing.datamining.impl.components; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindTrackContext; +import com.sap.sailing.datamining.impl.data.WindTrackWithContext; +import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +/** + * Retrieves all wind fixes from a {@link TrackedRace} that are provided by wind sources that are not currently + * {@link TrackedRace#getWindSourcesToExclude() excluded}. + * + * @author Axel Uhl (d043530) + * + */ +public class WindTrackRetrievalProcessor extends AbstractRetrievalProcessor { + + public WindTrackRetrievalProcessor(ExecutorService executor, Collection> resultReceivers, int retrievalLevel) { + super(HasTrackedRaceContext.class, HasWindTrackContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasTrackedRaceContext element) { + Collection windTracksWithContext = new ArrayList<>(); + final TrackedRace trackedRace = element.getTrackedRace(); + for (final WindSource windSource : trackedRace.getWindSources()) { + if (!trackedRace.getWindSourcesToExclude().contains(windSource)) { + final WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource); + windTracksWithContext.add(new WindTrackWithContext(element, windTrack, windSource)); + } + } + return windTracksWithContext; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java index 3b915481d8a..2a8f42a3f98 100755 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindFixWithContext.java @@ -3,18 +3,17 @@ package com.sap.sailing.datamining.impl.data; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.data.HasWindFixContext; import com.sap.sailing.domain.common.Wind; -import com.sap.sailing.domain.common.WindSourceType; public class WindFixWithContext implements HasWindFixContext { private static final long serialVersionUID = -4537126043228674949L; private final HasTrackedRaceContext trackedRaceContext; - private final WindSourceType windSourceType; + private final String windSourceType; private final Wind wind; - public WindFixWithContext(HasTrackedRaceContext trackedRaceContext, Wind wind, WindSourceType windSourceType) { + public WindFixWithContext(HasTrackedRaceContext trackedRaceContext, Wind wind, String windSourceType) { this.trackedRaceContext = trackedRaceContext; this.wind = wind; this.windSourceType = windSourceType; @@ -42,7 +41,7 @@ public class WindFixWithContext implements HasWindFixContext { @Override public String getWindSourceType() { - return windSourceType.name(); + return windSourceType; } @Override diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindTrackWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindTrackWithContext.java new file mode 100755 index 00000000000..1c7291c0551 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/WindTrackWithContext.java @@ -0,0 +1,51 @@ +package com.sap.sailing.datamining.impl.data; + +import com.sap.sailing.datamining.data.HasTrackedRaceContext; +import com.sap.sailing.datamining.data.HasWindTrackContext; +import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.tracking.WindTrack; + +public class WindTrackWithContext implements HasWindTrackContext { + + private final HasTrackedRaceContext trackedRaceContext; + + private final String windSourceType; + + private final String windSourceName; + + private final WindTrack windTrack; + + public WindTrackWithContext(HasTrackedRaceContext trackedRaceContext, WindTrack windTrack, WindSource windSource) { + this.trackedRaceContext = trackedRaceContext; + this.windTrack = windTrack; + this.windSourceType = windSource.getType().name(); + this.windSourceName = windSource.getType().name()+(windSource.getId()==null?"":" ("+windSource.getId()+")"); + } + + @Override + public HasTrackedRaceContext getTrackedRaceContext() { + return trackedRaceContext; + } + + @Override + public String getWindSourceType() { + return windSourceType; + } + + @Override + public String toString() { + return "WindTrackWithContext [trackedRaceContext=" + trackedRaceContext + ", windSourceType=" + windSourceType + + ", windSourceName=" + windSourceName + "]"; + } + + @Override + public String getWindSourceName() { + return windSourceName; + } + + @Override + public WindTrack getWindTrack() { + return windTrack; + } + +}