diff --git a/RELEASE.md b/RELEASE.md
index d87617a65..03100789d 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -62,10 +62,10 @@ project has a bom.
$ mvn=$PWD/mvnw
$ for p in ./brave-bom .; do
(cd $p
- $mvn versions:set -DnewVersion=2.17.1-SNAPSHOT -DgenerateBackupPoms=false
+ $mvn versions:set -DnewVersion=5.17.2-SNAPSHOT -DgenerateBackupPoms=false
$mvn -o clean install -DskipTests
$mvn com.mycila:license-maven-plugin:format
- $mvn versions:set -DnewVersion=5.17.0-SNAPSHOT -DgenerateBackupPoms=false)
+ $mvn versions:set -DnewVersion=5.17.1-SNAPSHOT -DgenerateBackupPoms=false)
done
$ git commit -asm"Adjusts copyright headers for this year"
```
diff --git a/brave-bom/pom.xml b/brave-bom/pom.xml
index a2c4d9181..c6b863cc6 100644
--- a/brave-bom/pom.xml
+++ b/brave-bom/pom.xml
@@ -34,8 +34,8 @@
${project.basedir}/..
- 2.25.2
- 2.17.1
+ 2.27.0
+ 2.17.2
diff --git a/brave-tests/pom.xml b/brave-tests/pom.xml
index f684ca21f..3ed5a7dde 100644
--- a/brave-tests/pom.xml
+++ b/brave-tests/pom.xml
@@ -1,7 +1,7 @@
-Xep:EqualsUnsafeCast:OFF
-
-
- java16
@@ -47,13 +44,6 @@
zipkin-reporter-brave
${zipkin-reporter.version}
-
- org.jvnet
- animal-sniffer-annotation
- 1.0
-
- provided
-
@@ -136,7 +126,11 @@
release
- 1.6
+ 1.6
+ 1.6
+
+
diff --git a/brave/src/main/java/brave/internal/Platform.java b/brave/src/main/java/brave/internal/Platform.java
index 0216f7ba6..479a001f7 100644
--- a/brave/src/main/java/brave/internal/Platform.java
+++ b/brave/src/main/java/brave/internal/Platform.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2023 The OpenZipkin Authors
+ * Copyright 2013-2024 The OpenZipkin Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -25,7 +25,6 @@
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
-import org.jvnet.animal_sniffer.IgnoreJRERequirement;
/**
* Access to platform-specific features.
@@ -167,12 +166,12 @@ public Clock clock() {
}
static class Jre9 extends Jre7 {
- @IgnoreJRERequirement @Override public long currentTimeMicroseconds() {
+ @Override public long currentTimeMicroseconds() {
java.time.Instant instant = java.time.Clock.systemUTC().instant();
return (instant.getEpochSecond() * 1000000) + (instant.getNano() / 1000);
}
- @IgnoreJRERequirement @Override public Clock clock() {
+ @Override public Clock clock() {
return new Clock() {
// we could use jdk.internal.misc.VM to do this more efficiently, but it is internal
@Override public long currentTimeMicroseconds() {
@@ -199,19 +198,19 @@ static class Jre7 extends Platform {
return System.nanoTime();
}
- @IgnoreJRERequirement @Override public String getHostString(InetSocketAddress socket) {
+ @Override public String getHostString(InetSocketAddress socket) {
return socket.getHostString();
}
- @IgnoreJRERequirement @Override public long randomLong() {
+ @Override public long randomLong() {
return java.util.concurrent.ThreadLocalRandom.current().nextLong();
}
- @IgnoreJRERequirement @Override public long nextTraceIdHigh() {
+ @Override public long nextTraceIdHigh() {
return nextTraceIdHigh(currentTimeMicroseconds(), java.util.concurrent.ThreadLocalRandom.current().nextInt());
}
- @IgnoreJRERequirement @Override
+ @Override
public AssertionError assertionError(String message, Throwable cause) {
return new AssertionError(message, cause);
}
diff --git a/context/jfr/pom.xml b/context/jfr/pom.xml
index cf3347b2a..872794d82 100644
--- a/context/jfr/pom.xml
+++ b/context/jfr/pom.xml
@@ -1,7 +1,7 @@
brave.context.jfr
+
+ 11
+ 11
+ 11
+
${project.basedir}/../..
-
- 11
-
- java12
-
-
- org.jvnet
- animal-sniffer-annotation
- 1.0
-
- provided
-
-
-
diff --git a/context/jfr/src/main/java/brave/context/jfr/JfrScopeDecorator.java b/context/jfr/src/main/java/brave/context/jfr/JfrScopeDecorator.java
index cdd564fd5..45e65afba 100644
--- a/context/jfr/src/main/java/brave/context/jfr/JfrScopeDecorator.java
+++ b/context/jfr/src/main/java/brave/context/jfr/JfrScopeDecorator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2023 The OpenZipkin Authors
+ * Copyright 2013-2024 The OpenZipkin Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -22,7 +22,6 @@
import jdk.jfr.Description;
import jdk.jfr.Event;
import jdk.jfr.Label;
-import org.jvnet.animal_sniffer.IgnoreJRERequirement;
/**
* Adds {@linkplain Event} properties "traceId", "parentId" and "spanId" when a {@link
@@ -56,7 +55,6 @@ public static ScopeDecorator get() {
@Category("Zipkin")
@Label("Scope")
@Description("Zipkin event representing a span being placed in scope")
- @IgnoreJRERequirement
static final class ScopeEvent extends Event {
@Label("Trace Id") String traceId;
@Label("Parent Id") String parentId;
diff --git a/context/log4j12/pom.xml b/context/log4j12/pom.xml
index c75e10299..2ccee713d 100644
--- a/context/log4j12/pom.xml
+++ b/context/log4j12/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -48,8 +45,10 @@
release
-
- 1.6
+
+ 1.6
+ 1.6
+ 6
diff --git a/context/log4j2/pom.xml b/context/log4j2/pom.xml
index 14afcf0de..db85afa20 100644
--- a/context/log4j2/pom.xml
+++ b/context/log4j2/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -49,7 +47,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/context/pom.xml b/context/pom.xml
index 02a8b3d76..27d796061 100644
--- a/context/pom.xml
+++ b/context/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -68,7 +65,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/context/slf4j/pom.xml b/context/slf4j/pom.xml
index 7e615f02c..37b835e90 100644
--- a/context/slf4j/pom.xml
+++ b/context/slf4j/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -49,7 +46,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/benchmarks/pom.xml b/instrumentation/benchmarks/pom.xml
index f12bb507f..7ac482a00 100644
--- a/instrumentation/benchmarks/pom.xml
+++ b/instrumentation/benchmarks/pom.xml
@@ -1,6 +1,6 @@
- java16
@@ -83,7 +80,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/dubbo/pom.xml b/instrumentation/dubbo/pom.xml
index 6f8d92562..e285dfef5 100644
--- a/instrumentation/dubbo/pom.xml
+++ b/instrumentation/dubbo/pom.xml
@@ -1,6 +1,6 @@
-Xep:MixedMutabilityReturnType:OFF
-
- java16
-
- 3.2.0
+ 3.5.0
@@ -126,7 +123,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/http-tests-jakarta/pom.xml b/instrumentation/http-tests-jakarta/pom.xml
index 8fa94d8df..097b20785 100644
--- a/instrumentation/http-tests-jakarta/pom.xml
+++ b/instrumentation/http-tests-jakarta/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -57,7 +54,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/httpasyncclient/pom.xml b/instrumentation/httpasyncclient/pom.xml
index c582b01b3..5ad098095 100644
--- a/instrumentation/httpasyncclient/pom.xml
+++ b/instrumentation/httpasyncclient/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -61,7 +58,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/httpclient/pom.xml b/instrumentation/httpclient/pom.xml
index 2156673a3..e9fb31e2d 100644
--- a/instrumentation/httpclient/pom.xml
+++ b/instrumentation/httpclient/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -106,8 +103,10 @@
release
-
- 1.6
+
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/httpclient5/pom.xml b/instrumentation/httpclient5/pom.xml
index 4901754af..302c424e7 100644
--- a/instrumentation/httpclient5/pom.xml
+++ b/instrumentation/httpclient5/pom.xml
@@ -1,7 +1,7 @@
5.3
-
-
- java17
@@ -70,7 +67,9 @@
release
- 1.7
+ 1.7
+ 1.7
+ 7
diff --git a/instrumentation/jaxrs2/pom.xml b/instrumentation/jaxrs2/pom.xml
index f623b8472..82959d2fc 100644
--- a/instrumentation/jaxrs2/pom.xml
+++ b/instrumentation/jaxrs2/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -106,7 +103,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/jersey-server/pom.xml b/instrumentation/jersey-server/pom.xml
index 0e1cb1340..a1845ffc5 100644
--- a/instrumentation/jersey-server/pom.xml
+++ b/instrumentation/jersey-server/pom.xml
@@ -1,7 +1,7 @@
@@ -103,4 +100,43 @@
1.1.1
+
+
+
+ release
+
+
+ 1.7
+ 1.7
+ 7
+
+
+
+
+ maven-enforcer-plugin
+ ${maven-enforcer-plugin.version}
+
+
+ enforce-java
+
+ enforce
+
+
+
+
+
+ [11,12)
+
+
+
+
+
+
+
+
+
+
diff --git a/instrumentation/jms-jakarta/pom.xml b/instrumentation/jms-jakarta/pom.xml
index 54997b4d9..1ab203416 100644
--- a/instrumentation/jms-jakarta/pom.xml
+++ b/instrumentation/jms-jakarta/pom.xml
@@ -1,7 +1,7 @@
-Xep:MissingOverride:OFF
-
-
- java16
@@ -115,7 +112,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/jms/src/main/java/brave/jms/TracingMessageProducer.java b/instrumentation/jms/src/main/java/brave/jms/TracingMessageProducer.java
index 895fd41ba..5bb0fc116 100644
--- a/instrumentation/jms/src/main/java/brave/jms/TracingMessageProducer.java
+++ b/instrumentation/jms/src/main/java/brave/jms/TracingMessageProducer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2023 The OpenZipkin Authors
+ * Copyright 2013-2024 The OpenZipkin Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -140,7 +140,7 @@ Span createAndStartProducerSpan(Message message, Destination destination) {
@Override public void send(Message message, int deliveryMode, int priority, long timeToLive)
throws JMSException {
Span span = createAndStartProducerSpan(message, destination(message));
- SpanInScope ws = tracer.withSpanInScope(span); // animal-sniffer mistakes this for AutoCloseable
+ SpanInScope ws = tracer.withSpanInScope(span);
Throwable error = null;
try {
delegate.send(message, deliveryMode, priority, timeToLive);
@@ -192,7 +192,7 @@ abstract void apply(MessageProducer producer, Destination destination, Message m
void send(SendDestination sendDestination, Destination destination, Message message)
throws JMSException {
Span span = createAndStartProducerSpan(message, destination);
- SpanInScope ws = tracer.withSpanInScope(span); // animal-sniffer mistakes this for AutoCloseable
+ SpanInScope ws = tracer.withSpanInScope(span);
Throwable error = null;
try {
sendDestination.apply(delegate, destination, message);
@@ -243,7 +243,7 @@ public void send(Destination destination, Message message, int deliveryMode, int
public void send(Message message, CompletionListener completionListener) throws JMSException {
Destination destination = destination(message);
Span span = createAndStartProducerSpan(message, destination);
- SpanInScope ws = tracer.withSpanInScope(span); // animal-sniffer mistakes this for AutoCloseable
+ SpanInScope ws = tracer.withSpanInScope(span);
Throwable error = null;
try {
delegate.send(message, TracingCompletionListener.create(completionListener, destination, span, current));
@@ -269,7 +269,7 @@ public void send(Message message, CompletionListener completionListener) throws
Destination destination = destination(message);
Span span = createAndStartProducerSpan(message, destination);
completionListener = TracingCompletionListener.create(completionListener, destination, span, current);
- SpanInScope ws = tracer.withSpanInScope(span); // animal-sniffer mistakes this for AutoCloseable
+ SpanInScope ws = tracer.withSpanInScope(span);
Throwable error = null;
try {
delegate.send(message, deliveryMode, priority, timeToLive, completionListener);
diff --git a/instrumentation/kafka-clients/pom.xml b/instrumentation/kafka-clients/pom.xml
index 4314ba71f..2dec621ec 100644
--- a/instrumentation/kafka-clients/pom.xml
+++ b/instrumentation/kafka-clients/pom.xml
@@ -1,7 +1,7 @@
-Xep:MissingOverride:OFF
@@ -97,13 +96,6 @@
MAIN
jar
-
- com.github.charithe
- kafka-junit
- ${old-kafka-junit.version}
- MAIN
- jar
-
diff --git a/instrumentation/kafka-clients/src/test/java/brave/kafka/clients/KafkaExtension.java b/instrumentation/kafka-clients/src/test/java/brave/kafka/clients/KafkaExtension.java
index 33f4587dc..71720cec2 100644
--- a/instrumentation/kafka-clients/src/test/java/brave/kafka/clients/KafkaExtension.java
+++ b/instrumentation/kafka-clients/src/test/java/brave/kafka/clients/KafkaExtension.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2023 The OpenZipkin Authors
+ * Copyright 2013-2024 The OpenZipkin Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -95,7 +95,7 @@ Properties consumerConfig() {
// mostly waiting for https://github.com/testcontainers/testcontainers-java/issues/3537
static final class KafkaContainer extends GenericContainer {
KafkaContainer() {
- super(parse("ghcr.io/openzipkin/zipkin-kafka:2.25.2"));
+ super(parse("ghcr.io/openzipkin/zipkin-kafka:2.27.0"));
if ("true".equals(System.getProperty("docker.skip"))) {
throw new TestAbortedException("${docker.skip} == true");
}
diff --git a/instrumentation/kafka-streams/pom.xml b/instrumentation/kafka-streams/pom.xml
index 6cdfc7b33..e84e07336 100644
--- a/instrumentation/kafka-streams/pom.xml
+++ b/instrumentation/kafka-streams/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -74,7 +71,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/mongodb/pom.xml b/instrumentation/mongodb/pom.xml
index 521364ef8..983d730f0 100644
--- a/instrumentation/mongodb/pom.xml
+++ b/instrumentation/mongodb/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -63,7 +60,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/mysql/pom.xml b/instrumentation/mysql/pom.xml
index 9799b66ab..b1914a82a 100644
--- a/instrumentation/mysql/pom.xml
+++ b/instrumentation/mysql/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -56,7 +53,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/mysql6/pom.xml b/instrumentation/mysql6/pom.xml
index 567056b90..587e7d308 100644
--- a/instrumentation/mysql6/pom.xml
+++ b/instrumentation/mysql6/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -60,7 +57,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/okhttp3/pom.xml b/instrumentation/okhttp3/pom.xml
index 219246fcd..020669c2d 100644
--- a/instrumentation/okhttp3/pom.xml
+++ b/instrumentation/okhttp3/pom.xml
@@ -1,7 +1,7 @@
3.11.0
2.9.0
-
-
- java17
@@ -101,7 +98,9 @@
release
- 1.7
+ 1.7
+ 1.7
+ 7
diff --git a/instrumentation/p6spy/pom.xml b/instrumentation/p6spy/pom.xml
index 4a6d86565..b76b6a7cb 100644
--- a/instrumentation/p6spy/pom.xml
+++ b/instrumentation/p6spy/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -79,7 +76,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/pom.xml b/instrumentation/pom.xml
index d5d7d884c..4ed7eadc6 100644
--- a/instrumentation/pom.xml
+++ b/instrumentation/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -49,7 +46,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/servlet-jakarta/pom.xml b/instrumentation/servlet-jakarta/pom.xml
index 973999b41..75d9bb228 100644
--- a/instrumentation/servlet-jakarta/pom.xml
+++ b/instrumentation/servlet-jakarta/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -107,7 +104,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/sparkjava/pom.xml b/instrumentation/sparkjava/pom.xml
index b52abdef9..c51e47143 100644
--- a/instrumentation/sparkjava/pom.xml
+++ b/instrumentation/sparkjava/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -89,7 +86,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/spring-web/pom.xml b/instrumentation/spring-web/pom.xml
index 5a932d62b..d9b1f0604 100644
--- a/instrumentation/spring-web/pom.xml
+++ b/instrumentation/spring-web/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -127,7 +124,12 @@
release
- 1.6
+ 1.6
+ 1.6
+
+
diff --git a/instrumentation/spring-web/src/main/java/brave/spring/web/TraceContextListenableFuture.java b/instrumentation/spring-web/src/main/java/brave/spring/web/TraceContextListenableFuture.java
index 4e2da1591..95ef1f33a 100644
--- a/instrumentation/spring-web/src/main/java/brave/spring/web/TraceContextListenableFuture.java
+++ b/instrumentation/spring-web/src/main/java/brave/spring/web/TraceContextListenableFuture.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2023 The OpenZipkin Authors
+ * Copyright 2013-2024 The OpenZipkin Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -19,7 +19,6 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
-import org.jvnet.animal_sniffer.IgnoreJRERequirement;
import org.springframework.util.concurrent.FailureCallback;
import org.springframework.util.concurrent.ListenableFuture;
import org.springframework.util.concurrent.ListenableFutureCallback;
@@ -64,7 +63,7 @@ public void addCallback(SuccessCallback super T> successCallback,
// Do not use @Override annotation to avoid compatibility issue version < 5.0
// Only called when in JRE 1.8+
- @IgnoreJRERequirement public CompletableFuture completable() {
+ public CompletableFuture completable() {
return delegate.completable(); // NOTE: trace context is not propagated
}
diff --git a/instrumentation/spring-webmvc/pom.xml b/instrumentation/spring-webmvc/pom.xml
index c49666b1b..dad476c8f 100644
--- a/instrumentation/spring-webmvc/pom.xml
+++ b/instrumentation/spring-webmvc/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -82,7 +79,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6
diff --git a/instrumentation/vertx-web/pom.xml b/instrumentation/vertx-web/pom.xml
index 1bff1b94e..077b1a8fa 100644
--- a/instrumentation/vertx-web/pom.xml
+++ b/instrumentation/vertx-web/pom.xml
@@ -1,7 +1,7 @@
- 1.8
- java18
+ 1.8
+ 1.8
+
+ 8
+
+
+ 11
+ 11
+ 11
- 2.23.0
+ 2.24.1
- 2.25.2
- 2.17.1
+ 2.27.0
+ 2.17.2
1.3.2
@@ -94,7 +102,7 @@
3.15.6.Final
- 11.0.18
+ 11.0.19
5.0.0
3.6.1
@@ -105,7 +113,7 @@
20.12.0
- 2.22.0
+ 2.22.1
4.12.0
4.5.14
@@ -122,23 +130,20 @@
5.10.1
- 3.24.2
+ 3.25.1
5.8.0
- 2.33
-
- 4.2.10
+ 2.41
1.19.3
${skipTests}
- 1.23
1.2.8
4.3
5.1.9
- 3.11.0
+ 3.12.1
3.6.1
3.1.1
@@ -147,12 +152,12 @@
3.4.0
3.1.1
3.6.0
- 3.6.2
+ 3.6.3
3.3.0
3.0.1
3.5.1
3.3.0
- 3.2.2
+ 3.2.3
1.6.13
@@ -259,13 +264,6 @@
-
- org.codehaus.mojo.signature
- ${main.signature.artifact}
- 1.0
- signature
- MAIN
-
com.mycila
license-maven-plugin-git
@@ -294,10 +292,7 @@
${maven-compiler-plugin.version}
true
-
- ${main.java.version}
true
- 8
true
@@ -423,29 +418,6 @@
${maven-help-plugin.version}
-
- org.codehaus.mojo
- animal-sniffer-maven-plugin
- ${animal-sniffer-maven-plugin.version}
-
-
- org.codehaus.mojo.signature
- ${main.signature.artifact}
- 1.0
-
- false
-
-
-
- animal-sniffer
- verify
-
- check
-
-
-
-
-
maven-surefire-plugin
${maven-surefire-plugin.version}
@@ -651,8 +623,6 @@
${maven-compiler-plugin.version}
true
-
- ${main.java.version}
true
true
diff --git a/spring-beans/pom.xml b/spring-beans/pom.xml
index 9427be376..3d1290a24 100644
--- a/spring-beans/pom.xml
+++ b/spring-beans/pom.xml
@@ -1,7 +1,7 @@
- java16
@@ -81,7 +78,9 @@
release
- 1.6
+ 1.6
+ 1.6
+ 6