Compare commits

47 Commits

Author SHA256 Message Date
4f7c8a054f Accepting request 1295615 from Java:packages
4.1.123

OBS-URL: https://build.opensuse.org/request/show/1295615
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=7
2025-07-25 15:04:56 +00:00
f0b9d05854 Accepting request 1284160 from Java:packages
4.1.122

OBS-URL: https://build.opensuse.org/request/show/1284160
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=6
2025-06-10 07:07:34 +00:00
25ecbc201f OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=69 2025-06-09 10:56:36 +00:00
d1f938a48d OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=68 2025-06-06 14:53:51 +00:00
35b7e182f1 Accepting request 1264771 from Java:packages
OBS-URL: https://build.opensuse.org/request/show/1264771
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=5
2025-03-28 08:36:57 +00:00
6ca30ae4fe Fix pom.xml errors that will be fatal with Maven 4
OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=66
2025-03-27 22:03:44 +00:00
d58cd52ce9 Accepting request 1245120 from Java:packages
4.1.118

OBS-URL: https://build.opensuse.org/request/show/1245120
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=4
2025-02-11 20:31:25 +00:00
0deabeaf17 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=64 2025-02-11 14:57:30 +00:00
5dbb81cf38 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=63 2025-02-11 14:54:05 +00:00
8a09310e15 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=62 2025-02-11 14:35:06 +00:00
21911a7780 Accepting request 1228513 from Java:packages
4.1.115, bsc#1233297, CVE-2024-47535

OBS-URL: https://build.opensuse.org/request/show/1228513
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=3
2024-12-05 16:10:13 +00:00
db991669c7 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=60 2024-12-05 12:56:15 +00:00
232b552f66 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=59 2024-12-05 12:54:23 +00:00
0b6723814d OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=58 2024-12-04 18:51:15 +00:00
af4cb47f4d OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=57 2024-12-04 18:41:48 +00:00
ec5430b105 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=56 2024-12-04 18:22:32 +00:00
4659c18a19 Accepting request 1227087 from Java:packages
General cleanup

OBS-URL: https://build.opensuse.org/request/show/1227087
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=2
2024-11-28 21:43:00 +00:00
96a6047fff OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=54 2024-11-27 07:50:07 +00:00
1aa82d8fd1 Accepting request 1219600 from Java:packages
forgot a changelog

OBS-URL: https://build.opensuse.org/request/show/1219600
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/netty?expand=0&rev=1
2024-10-30 16:37:08 +00:00
15b547fef2 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=52 2024-10-30 14:49:59 +00:00
0ff97990aa OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=51 2024-10-09 21:16:46 +00:00
6ce117b8e1 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=50 2024-10-09 18:00:16 +00:00
1f94ae87b5 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=49 2024-10-09 17:35:11 +00:00
80436d6205 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=48 2024-10-09 17:21:40 +00:00
e0fe930ae9 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=47 2024-10-09 10:02:01 +00:00
c27f37778d OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=46 2024-10-09 01:48:03 +00:00
6f2467ee2a OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=45 2024-10-09 01:40:18 +00:00
0eb78f730e Add reproducible.patch to omit the mtime from libnetty-unix-common.a for reproducible builds (boo#1047218)
OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=44
2024-09-25 05:15:52 +00:00
289036440a OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=43 2024-03-27 13:54:53 +00:00
940d181c66 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=42 2024-03-27 12:25:29 +00:00
f49bac8e4f rpm 4.20 compat
OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=41
2024-02-21 10:52:05 +00:00
577e3761d1 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=40 2023-10-18 08:18:50 +00:00
aa2de27173 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=39 2023-10-12 15:25:44 +00:00
c825ca70ec OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=38 2023-09-13 04:57:25 +00:00
c1629c13cd OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=37 2023-06-23 08:59:06 +00:00
408fe9be08 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=36 2023-06-23 08:26:20 +00:00
148651d518 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=35 2023-03-30 18:24:49 +00:00
cb44f595af OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=34 2023-03-30 18:09:44 +00:00
c6a4247286 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=33 2023-03-30 12:04:40 +00:00
ca68b8e54c OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=32 2022-10-14 04:53:55 +00:00
6d77c245ee OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=31 2022-04-20 11:17:40 +00:00
cb3348f0cb OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=30 2022-04-08 21:39:32 +00:00
cd0db357fb OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=29 2022-04-08 15:51:48 +00:00
1ff541e845 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=28 2022-04-08 10:56:05 +00:00
802fd26ba7 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=27 2022-04-08 09:30:01 +00:00
70aae58d40 OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=2 2019-11-13 19:28:36 +00:00
ff6b0ebb2d OBS-URL: https://build.opensuse.org/package/show/Java:packages/netty?expand=0&rev=1 2019-11-13 19:20:55 +00:00
6 changed files with 0 additions and 348 deletions

View File

@@ -1,153 +0,0 @@
From 6cc11ea389160c067b103bd4d0c356bb13442c77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Thu, 30 Mar 2023 13:19:45 +0200
Subject: [PATCH 5/7] Do not use the Graal annotations
---
.../java/io/netty/util/NetUtilSubstitutions.java | 13 -------------
.../util/internal/svm/CleanerJava6Substitution.java | 10 ----------
.../svm/PlatformDependent0Substitution.java | 10 ----------
.../internal/svm/PlatformDependentSubstitution.java | 9 ---------
.../svm/UnsafeRefArrayAccessSubstitution.java | 9 ---------
5 files changed, 51 deletions(-)
diff --git a/common/src/main/java/io/netty/util/NetUtilSubstitutions.java b/common/src/main/java/io/netty/util/NetUtilSubstitutions.java
index 65c7bb94a5..18bfc1664f 100644
--- a/common/src/main/java/io/netty/util/NetUtilSubstitutions.java
+++ b/common/src/main/java/io/netty/util/NetUtilSubstitutions.java
@@ -15,35 +15,22 @@
*/
package io.netty.util;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.InjectAccessors;
-import com.oracle.svm.core.annotate.TargetClass;
-
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Collection;
-@TargetClass(NetUtil.class)
final class NetUtilSubstitutions {
private NetUtilSubstitutions() {
}
- @Alias
- @InjectAccessors(NetUtilLocalhost4Accessor.class)
public static Inet4Address LOCALHOST4;
- @Alias
- @InjectAccessors(NetUtilLocalhost6Accessor.class)
public static Inet6Address LOCALHOST6;
- @Alias
- @InjectAccessors(NetUtilLocalhostAccessor.class)
public static InetAddress LOCALHOST;
- @Alias
- @InjectAccessors(NetUtilNetworkInterfacesAccessor.class)
public static Collection<NetworkInterface> NETWORK_INTERFACES;
private static final class NetUtilLocalhost4Accessor {
diff --git a/common/src/main/java/io/netty/util/internal/svm/CleanerJava6Substitution.java b/common/src/main/java/io/netty/util/internal/svm/CleanerJava6Substitution.java
index aed4777a0d..0fa5a858ab 100644
--- a/common/src/main/java/io/netty/util/internal/svm/CleanerJava6Substitution.java
+++ b/common/src/main/java/io/netty/util/internal/svm/CleanerJava6Substitution.java
@@ -15,19 +15,9 @@
*/
package io.netty.util.internal.svm;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.RecomputeFieldValue;
-import com.oracle.svm.core.annotate.TargetClass;
-
-@TargetClass(className = "io.netty.util.internal.CleanerJava6")
final class CleanerJava6Substitution {
private CleanerJava6Substitution() {
}
- @Alias
- @RecomputeFieldValue(
- kind = RecomputeFieldValue.Kind.FieldOffset,
- declClassName = "java.nio.DirectByteBuffer",
- name = "cleaner")
private static long CLEANER_FIELD_OFFSET;
}
diff --git a/common/src/main/java/io/netty/util/internal/svm/PlatformDependent0Substitution.java b/common/src/main/java/io/netty/util/internal/svm/PlatformDependent0Substitution.java
index 1a06a5518d..3bd61f467a 100644
--- a/common/src/main/java/io/netty/util/internal/svm/PlatformDependent0Substitution.java
+++ b/common/src/main/java/io/netty/util/internal/svm/PlatformDependent0Substitution.java
@@ -15,19 +15,9 @@
*/
package io.netty.util.internal.svm;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.RecomputeFieldValue;
-import com.oracle.svm.core.annotate.TargetClass;
-
-@TargetClass(className = "io.netty.util.internal.PlatformDependent0")
final class PlatformDependent0Substitution {
private PlatformDependent0Substitution() {
}
- @Alias
- @RecomputeFieldValue(
- kind = RecomputeFieldValue.Kind.FieldOffset,
- declClassName = "java.nio.Buffer",
- name = "address")
private static long ADDRESS_FIELD_OFFSET;
}
diff --git a/common/src/main/java/io/netty/util/internal/svm/PlatformDependentSubstitution.java b/common/src/main/java/io/netty/util/internal/svm/PlatformDependentSubstitution.java
index 08932da772..8df7f18218 100644
--- a/common/src/main/java/io/netty/util/internal/svm/PlatformDependentSubstitution.java
+++ b/common/src/main/java/io/netty/util/internal/svm/PlatformDependentSubstitution.java
@@ -15,11 +15,6 @@
*/
package io.netty.util.internal.svm;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.RecomputeFieldValue;
-import com.oracle.svm.core.annotate.TargetClass;
-
-@TargetClass(className = "io.netty.util.internal.PlatformDependent")
final class PlatformDependentSubstitution {
private PlatformDependentSubstitution() {
}
@@ -31,9 +26,5 @@ final class PlatformDependentSubstitution {
* in PlatformDependent happens during image building, the non-recomputed value
* is cached.
*/
- @Alias
- @RecomputeFieldValue(
- kind = RecomputeFieldValue.Kind.ArrayBaseOffset,
- declClass = byte[].class)
private static long BYTE_ARRAY_BASE_OFFSET;
}
diff --git a/common/src/main/java/io/netty/util/internal/svm/UnsafeRefArrayAccessSubstitution.java b/common/src/main/java/io/netty/util/internal/svm/UnsafeRefArrayAccessSubstitution.java
index 08f492f132..f0b10d7cde 100644
--- a/common/src/main/java/io/netty/util/internal/svm/UnsafeRefArrayAccessSubstitution.java
+++ b/common/src/main/java/io/netty/util/internal/svm/UnsafeRefArrayAccessSubstitution.java
@@ -15,18 +15,9 @@
*/
package io.netty.util.internal.svm;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.RecomputeFieldValue;
-import com.oracle.svm.core.annotate.TargetClass;
-
-@TargetClass(className = "io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess")
final class UnsafeRefArrayAccessSubstitution {
private UnsafeRefArrayAccessSubstitution() {
}
- @Alias
- @RecomputeFieldValue(
- kind = RecomputeFieldValue.Kind.ArrayIndexShift,
- declClass = Object[].class)
public static int REF_ELEMENT_SHIFT;
}
--
2.46.1

View File

@@ -1,157 +0,0 @@
From 3d2d165de5adfaf0ab6cf79d48bc27d0546238bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Thu, 30 Mar 2023 13:20:35 +0200
Subject: [PATCH 6/7] Do not use the Jetbrains annotations
---
common/src/main/java/io/netty/util/Recycler.java | 2 --
.../java/io/netty/util/concurrent/AbstractEventExecutor.java | 4 +---
.../java/io/netty/util/concurrent/GlobalEventExecutor.java | 4 +---
.../io/netty/util/concurrent/SingleThreadEventExecutor.java | 5 ++---
.../test/java/io/netty/util/RecyclerFastThreadLocalTest.java | 2 --
common/src/test/java/io/netty/util/RecyclerTest.java | 4 +---
6 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/common/src/main/java/io/netty/util/Recycler.java b/common/src/main/java/io/netty/util/Recycler.java
index c434874bff..3df4f1d772 100644
--- a/common/src/main/java/io/netty/util/Recycler.java
+++ b/common/src/main/java/io/netty/util/Recycler.java
@@ -24,7 +24,6 @@ import io.netty.util.internal.UnstableApi;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
import org.jctools.queues.MessagePassingQueue;
-import org.jetbrains.annotations.VisibleForTesting;
import java.util.ArrayDeque;
import java.util.Queue;
@@ -208,7 +207,6 @@ public abstract class Recycler<T> {
return true;
}
- @VisibleForTesting
final int threadLocalSize() {
LocalPool<T> localPool = threadLocal.getIfExists();
return localPool == null ? 0 : localPool.pooledHandles.size() + localPool.batch.size();
diff --git a/common/src/main/java/io/netty/util/concurrent/AbstractEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/AbstractEventExecutor.java
index 6409578637..e9463935ba 100644
--- a/common/src/main/java/io/netty/util/concurrent/AbstractEventExecutor.java
+++ b/common/src/main/java/io/netty/util/concurrent/AbstractEventExecutor.java
@@ -19,8 +19,6 @@ import io.netty.util.internal.UnstableApi;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
-import org.jetbrains.annotations.Async.Execute;
-
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -169,7 +167,7 @@ public abstract class AbstractEventExecutor extends AbstractExecutorService impl
}
}
- protected static void runTask(@Execute Runnable task) {
+ protected static void runTask(Runnable task) {
task.run();
}
diff --git a/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java
index 4514c023a3..542eecee3f 100644
--- a/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java
+++ b/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java
@@ -21,8 +21,6 @@ import io.netty.util.internal.ThreadExecutorMap;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
-import org.jetbrains.annotations.Async.Schedule;
-
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Queue;
@@ -221,7 +219,7 @@ public final class GlobalEventExecutor extends AbstractScheduledEventExecutor im
execute0(task);
}
- private void execute0(@Schedule Runnable task) {
+ private void execute0(Runnable task) {
addTask(ObjectUtil.checkNotNull(task, "task"));
if (!inEventLoop()) {
startThread();
diff --git a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java
index b93b7cd377..7838cb7787 100644
--- a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java
+++ b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java
@@ -21,7 +21,6 @@ import io.netty.util.internal.SystemPropertyUtil;
import io.netty.util.internal.ThreadExecutorMap;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
-import org.jetbrains.annotations.Async.Schedule;
import java.lang.Thread.State;
import java.util.ArrayList;
@@ -822,12 +821,12 @@ public abstract class SingleThreadEventExecutor extends AbstractScheduledEventEx
lazyExecute0(task);
}
- private void execute0(@Schedule Runnable task) {
+ private void execute0(Runnable task) {
ObjectUtil.checkNotNull(task, "task");
execute(task, wakesUpForTask(task));
}
- private void lazyExecute0(@Schedule Runnable task) {
+ private void lazyExecute0(Runnable task) {
execute(ObjectUtil.checkNotNull(task, "task"), false);
}
diff --git a/common/src/test/java/io/netty/util/RecyclerFastThreadLocalTest.java b/common/src/test/java/io/netty/util/RecyclerFastThreadLocalTest.java
index 7c8d4da113..1dfaffc7da 100644
--- a/common/src/test/java/io/netty/util/RecyclerFastThreadLocalTest.java
+++ b/common/src/test/java/io/netty/util/RecyclerFastThreadLocalTest.java
@@ -16,7 +16,6 @@
package io.netty.util;
import io.netty.util.concurrent.FastThreadLocalThread;
-import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -29,7 +28,6 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
@ExtendWith(RunInFastThreadLocalThreadExtension.class)
public class RecyclerFastThreadLocalTest extends RecyclerTest {
- @NotNull
@Override
protected Thread newThread(Runnable runnable) {
return new FastThreadLocalThread(runnable);
diff --git a/common/src/test/java/io/netty/util/RecyclerTest.java b/common/src/test/java/io/netty/util/RecyclerTest.java
index 49359ff962..1ee4c6bd5c 100644
--- a/common/src/test/java/io/netty/util/RecyclerTest.java
+++ b/common/src/test/java/io/netty/util/RecyclerTest.java
@@ -15,7 +15,6 @@
*/
package io.netty.util;
-import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.api.function.Executable;
@@ -55,7 +54,6 @@ public class RecyclerTest {
};
}
- @NotNull
protected Thread newThread(Runnable runnable) {
return new Thread(runnable);
}
@@ -341,7 +339,7 @@ public class RecyclerTest {
ExecutorService single = Executors.newSingleThreadExecutor(new ThreadFactory() {
@Override
- public Thread newThread(@NotNull Runnable r) {
+ public Thread newThread(Runnable r) {
return RecyclerTest.this.newThread(r);
}
});
--
2.46.1

View File

@@ -1,29 +0,0 @@
From b34ce776e1331f91e67dabd69dd31e17fd0efd22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Thu, 30 Mar 2023 13:21:56 +0200
Subject: [PATCH 7/7] Do not require the tcnative native library
---
handler/pom.xml | 6 ------
1 file changed, 6 deletions(-)
diff --git a/handler/pom.xml b/handler/pom.xml
index 35bdbf9272..57165fd4fe 100644
--- a/handler/pom.xml
+++ b/handler/pom.xml
@@ -70,12 +70,6 @@
<artifactId>netty-tcnative-classes</artifactId>
<optional>true</optional>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>${tcnative.artifactId}</artifactId>
- <classifier>${tcnative.classifier}</classifier>
- <optional>true</optional>
- </dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
--
2.46.1

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6de44a2d06a6f86d54a117a84b887a55d61812b8020a9256cdee4610d96f9975
size 3176566

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5b999b9d8305275089421cd27e58be84b97ff299375dd6a1b952bec44aa08a80
size 3179909

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:641391ffdfce591392603eec9f396ded2d9eaf22c63eac5d8a28799fa17300a2
size 3193348