helloadhavan/github_issues huggingface dataset:
Repository: facebook/react
Pull request: [ESLint] Update README links to react.dev

Update ESLint plugin README to redirect to https://react.dev for more details (instead of legacy docs)


Changed files:
filename: packages/eslint-plugin-react-hooks/README.md
patch: @@ -1,8 +1,8 @@
 # `eslint-plugin-react-hooks`
 
-This ESLint plugin enforces the [Rules of Hooks](https://reactjs.org/docs/hooks-rules.html).
+This ESLint plugin enforces the [Rules of Hooks](https://react.dev/reference/rules/rules-of-hooks).
 
-It is a part of the [Hooks API](https://reactjs.org/docs/hooks-intro.html) for React.
+It is a part of the [Hooks API](https://react.dev/reference/react/hooks) for React.
 
 ## Installation
 
@@ -68,7 +68,7 @@ We suggest to use this option **very sparingly, if at all**. Generally saying, w
 
 ## Valid and Invalid Examples
 
-Please refer to the [Rules of Hooks](https://reactjs.org/docs/hooks-rules.html) documentation and the [Hooks FAQ](https://reactjs.org/docs/hooks-faq.html#what-exactly-do-the-lint-rules-enforce) to learn more about this rule.
+Please refer to the [Rules of Hooks](https://react.dev/reference/rules/rules-of-hooks) documentation to learn more about this rule.
 
 ## License
Repository: electron/electron
Pull request: fix: `NativeWindowViews::GetRestoredState()` can return wrong state when maximized

Backport of #46450

See that PR for details.


Notes: Fixed a bug that could cause some maximized windows on Linux to report an incorrect window state.

Changed files:
filename: shell/browser/native_window_views.cc
patch: @@ -1833,7 +1833,7 @@ ui::mojom::WindowShowState NativeWindowViews::GetRestoredState() {
       return ui::mojom::WindowShowState::kMaximized;
     }
 #else
-    return ui::mojom::WindowShowState::kMinimized;
+    return ui::mojom::WindowShowState::kMaximized;
 #endif
   }
Repository: huggingface/transformers
Pull request: No more `natten`

# What does this PR do?

This is required by `nat` (already depreciated) and `dinat`.

We have to pin it to a very old version to avoid `natten2dav` issue, but now we get 

> ImportError: cannot import name '_device_t' from 'torch.cuda' (/usr/local/lib/python3.10/dist-packages/torch/cuda/__init__.py)

with torch 2.8, which fails the job of `tests/utils` where `from transformers import *` is used.

Let's simply remove this natten from docker CI image (and no tests for `dinat` for which I think reasonable).

Changed files:
filename: docker/transformers-all-latest-gpu/Dockerfile
patch: @@ -55,11 +55,6 @@ RUN python3 -m pip install --no-cache-dir quanto
 # (`deformable_detr`, `rwkv`, `mra`)
 RUN python3 -m pip uninstall -y ninja
 
-# For `dinat` model
-# The `XXX` part in `torchXXX` needs to match `PYTORCH` (to some extent)
-# pin `0.17.4` otherwise `cannot import name 'natten2dav' from 'natten.functional'`
-RUN python3 -m pip install --no-cache-dir natten==0.17.4+torch250cu121 -f https://shi-labs.com/natten/wheels
-
 # For `nougat` tokenizer
 RUN python3 -m pip install --no-cache-dir python-Levenshtein
Repository: ollama/ollama
Pull request: add dockerfile for building linux binaries


Changed files:
filename: .dockerignore
patch: @@ -1,5 +1,7 @@
 .vscode
 ollama
 app
+dist
+scripts
 llm/llama.cpp/ggml
 llm/llama.cpp/gguf

filename: Dockerfile.build
patch: @@ -0,0 +1,29 @@
+ARG VERSION=0.0.0
+
+# centos7 amd64 dependencies
+FROM --platform=linux/amd64 nvidia/cuda:11.8.0-devel-centos7 AS base-amd64
+RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl && \
+    yum update -y && \
+    yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236 wget
+RUN wget "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh" -O cmake-installer.sh && chmod +x cmake-installer.sh && ./cmake-installer.sh --skip-license --prefix=/usr/local
+ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
+
+# centos8 arm64 dependencies
+FROM --platform=linux/arm64 nvidia/cuda:11.4.3-devel-centos8 AS base-arm64
+RUN sed -i -e 's/mirrorlist/#mirrorlist/g' -e 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
+RUN yum install -y git cmake
+
+FROM base-${TARGETARCH}
+ARG TARGETARCH
+
+# install go
+ADD https://dl.google.com/go/go1.21.1.linux-$TARGETARCH.tar.gz /tmp/go1.21.1.tar.gz
+RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go1.21.1.tar.gz
+
+# build the final binary
+WORKDIR /go/src/github.com/jmorganca/ollama
+COPY . .
+ENV GOARCH=$TARGETARCH
+
+RUN /usr/local/go/bin/go generate ./... && \
+    /usr/local/go/bin/go build -ldflags "-X=github.com/jmorganca/ollama/version.Version=$VERSION -X=github.com/jmorganca/ollama/server.mode=release" .

filename: scripts/build_linux.sh
patch: @@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -e
+
+mkdir -p dist
+
+for ARCH in arm64 amd64; do
+    docker buildx build --platform=linux/$ARCH -f Dockerfile.build . -t builder:$ARCH --load
+    docker create --platform linux/$ARCH --name builder builder:$ARCH
+    docker cp builder:/go/src/github.com/jmorganca/ollama/ollama ./dist/ollama-linux-$ARCH
+    docker rm builder
+done
Repository: nodejs/node
Pull request: buffer: use Utf8LengthV2() instead of Utf8Length()

`Utf8Length()` is deprecated and was replaced during the V8 update (0e68481bf82), but 084a91291e5 introduced a new occurrence.

Refs: https://github.com/nodejs/node/pull/58070
Refs: https://github.com/nodejs/node/pull/58048

<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: src/node_buffer.cc
patch: @@ -742,7 +742,7 @@ uint32_t FastByteLengthUtf8(
   Local<String> sourceStr = sourceValue.As<String>();
 
   if (!sourceStr->IsExternalOneByte()) {
-    return sourceStr->Utf8Length(isolate);
+    return sourceStr->Utf8LengthV2(isolate);
   }
   auto source = sourceStr->GetExternalOneByteStringResource();
   // For short inputs, the function call overhead to simdutf is maybe
Repository: ollama/ollama
Pull request: fix ipv6 parse ip

`net.ParseIP` for IPv6 doesn't expect `[]` so trim it

Changed files:
filename: cmd/cmd.go
patch: @@ -650,7 +650,7 @@ func RunServer(cmd *cobra.Command, _ []string) error {
 	host, port, err := net.SplitHostPort(os.Getenv("OLLAMA_HOST"))
 	if err != nil {
 		host, port = "127.0.0.1", "11434"
-		if ip := net.ParseIP(os.Getenv("OLLAMA_HOST")); ip != nil {
+		if ip := net.ParseIP(strings.Trim(os.Getenv("OLLAMA_HOST"), "[]")); ip != nil {
 			host = ip.String()
 		}
 	}
Repository: nodejs/node
Pull request: node-api: use WriteOneByteV2 in napi_get_value_string_latin1

Replace usage of deprecated `WriteOneByte` with `WriteOneByteV2`.

Changed files:
filename: src/js_native_api_v8.cc
patch: @@ -2441,21 +2441,21 @@ napi_status NAPI_CDECL napi_get_value_string_latin1(
 
   v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value);
   RETURN_STATUS_IF_FALSE(env, val->IsString(), napi_string_expected);
+  v8::Local<v8::String> str = val.As<v8::String>();
 
   if (!buf) {
     CHECK_ARG(env, result);
-    *result = val.As<v8::String>()->Length();
+    *result = str->Length();
   } else if (bufsize != 0) {
-    int copied =
-        val.As<v8::String>()->WriteOneByte(env->isolate,
-                                           reinterpret_cast<uint8_t*>(buf),
-                                           0,
-                                           bufsize - 1,
-                                           v8::String::NO_NULL_TERMINATION);
-
-    buf[copied] = '\0';
+    uint32_t length = static_cast<uint32_t>(
+        std::min(bufsize - 1, static_cast<size_t>(str->Length())));
+    str->WriteOneByteV2(env->isolate,
+                        0,
+                        length,
+                        reinterpret_cast<uint8_t*>(buf),
+                        v8::String::WriteFlags::kNullTerminate);
     if (result != nullptr) {
-      *result = copied;
+      *result = length;
     }
   } else if (result != nullptr) {
     *result = 0;
@@ -2479,12 +2479,12 @@ napi_status NAPI_CDECL napi_get_value_string_utf8(
 
   v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value);
   RETURN_STATUS_IF_FALSE(env, val->IsString(), napi_string_expected);
+  v8::Local<v8::String> str = val.As<v8::String>();
 
   if (!buf) {
     CHECK_ARG(env, result);
-    *result = val.As<v8::String>()->Utf8LengthV2(env->isolate);
+    *result = str->Utf8LengthV2(env->isolate);
   } else if (bufsize != 0) {
-    auto str = val.As<v8::String>();
     size_t copied =
         str->WriteUtf8V2(env->isolate,
                          buf,
Repository: vercel/next.js
Pull request: [turbopack] Remove a debug assertions in client references endpoint

Remove a debug assertion code in the `GlobalBuildInformation` implementation that was validating client references for endpoints.  This was inserted as a sanity check that two traversals were doing the same thing, but this is overkill and can be trigged accidentally by an eventual consistency condition.  Just drop them.

If an application is edited during this computation it is possible that the module graph that GlobalBuildInformation has access to is different than the set of references that `find_server_entries` will identified, this transient condition could trigger the panic.

Closes PACK-5271

Changed files:
filename: crates/next-api/src/module_graph.rs
patch: @@ -730,27 +730,7 @@ impl GlobalBuildInformation {
             let result = if let [graph] = &self.client_references[..] {
                 // Just a single graph, no need to merge results  This also naturally aggregates
                 // server components and server utilities in the correct order
-                let result = graph.get_client_references_for_endpoint(entry);
-                #[cfg(debug_assertions)]
-                {
-                    let result = result.await?;
-                    if has_layout_segments {
-                        use rustc_hash::FxHashSet;
-
-                        let ServerEntries {
-                            server_utils,
-                            server_component_entries,
-                        } = &*find_server_entries(entry, include_traced).await?;
-                        // order of server utils doesn't matter, so just ensure that they match
-                        assert_eq!(
-                            FxHashSet::from_iter(result.server_utils.iter()),
-                            FxHashSet::from_iter(server_utils.iter())
-                        );
-                        // The order of server_components does matter, enforce it is identical
-                        assert_eq!(&result.server_component_entries, server_component_entries);
-                    }
-                }
-                result
+                graph.get_client_references_for_endpoint(entry)
             } else {
                 let results = self
                     .client_references
Repository: ollama/ollama
Pull request: ubuntu cuda drivers

Add automatic cuda driver install to our install script.

Changed files:
filename: scripts/install.sh
patch: @@ -42,10 +42,11 @@ check_sudo() {
 }
 
 install_cuda_drivers() {
-    local os_name
+    local os_name os_version
     if [ -f "/etc/os-release" ]; then
         . /etc/os-release
         os_name=$ID
+        os_version=$VERSION_ID
     else
         echo "Unable to detect operating system. Skipping CUDA installation."
         return 1
@@ -63,7 +64,24 @@ install_cuda_drivers() {
             $SUDO_CMD dkms status | awk -F: '/added/ { print $1 }' | xargs -n1 $SUDO_CMD dkms install
             $SUDO_CMD modprobe nvidia
             ;;
-        RedHatEnterprise*|Kylin|Fedora|SLES|openSUSE*|Microsoft|Ubuntu|Debian)
+        ubuntu)
+            case $os_version in
+                20.04)
+                    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
+                ;;
+                22.04)
+                    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
+                ;;
+                *)
+                    echo "Skipping automatic CUDA installation, not supported for Ubuntu ($os_version)."
+                    return
+                ;;
+            esac
+            $SUDO_CMD dpkg -i cuda-keyring_1.1-1_all.deb
+            $SUDO_CMD apt-get update
+            $SUDO_CMD apt-get -y install cuda-drivers
+            ;;
+        RedHatEnterprise*|Kylin|Fedora|SLES|openSUSE*|Microsoft|Debian)
             echo "NVIDIA CUDA drivers may not be installed, you can install them from: https://developer.nvidia.com/cuda-downloads"
             ;;
         *)
Repository: ollama/ollama
Pull request: close llm on interrupt


Changed files:
filename: server/routes.go
patch: @@ -570,6 +570,9 @@ func Serve(ln net.Listener, allowOrigins []string) error {
 	signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
 	go func() {
 		<-signals
+		if loaded.llm != nil {
+			loaded.llm.Close()
+		}
 		os.RemoveAll(workDir)
 		os.Exit(0)
 	}()
Repository: ggml-org/llama.cpp
Pull request: Manually link -lbsd to resolve flock symbol on AIX

`llama-imatrix` and `llama-run` were failing to link because they couldn't find flock().  This is why we're adding `-lbsd`. AIX's flock() function comes from libbsd.a

Changed files:
filename: tools/imatrix/CMakeLists.txt
patch: @@ -6,3 +6,8 @@ target_compile_features(${TARGET} PRIVATE cxx_std_17)
 if(LLAMA_TOOLS_INSTALL)
     install(TARGETS ${TARGET} RUNTIME)
 endif()
+
+if (CMAKE_SYSTEM_NAME MATCHES "AIX")
+    # AIX's flock() function comes from libbsd.a
+    target_link_libraries(${TARGET} PRIVATE -lbsd)
+endif()

filename: tools/run/CMakeLists.txt
patch: @@ -13,5 +13,11 @@ endif ()
 if(LLAMA_TOOLS_INSTALL)
     install(TARGETS ${TARGET} RUNTIME)
 endif()
+
+if (CMAKE_SYSTEM_NAME MATCHES "AIX")
+    # AIX's flock() function comes from libbsd.a
+    target_link_libraries(${TARGET} PRIVATE -lbsd)
+endif()
+
 target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT} ${LLAMA_RUN_EXTRA_LIBS})
 target_compile_features(${TARGET} PRIVATE cxx_std_17)
Repository: denoland/deno
Pull request: fix(types): specify `ArrayBuffer` as a backing buffer type for `Response.body` and `Response.bytes`

This patch updates the `Response` interface type declarations to correctly specify `ArrayBuffer` as the backing buffer type for the `encode()` method, aligning with the spec and addressing the change introduced in TypeScript 5.7 about making `ArrayVBufferLike` a default buffer type behind `Uint8Array`.

In fact, [TypeScript's dom.d.ts got a similar change](https://github.com/microsoft/TypeScript-DOM-lib-generator/blob/fad434be5961529bee396efab03cce2a1bc333e2/baselines/dom.generated.d.ts#L4563-L4580), and now it looks like:

```ts
interface Body {
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */
    readonly body: ReadableStream<Uint8Array<ArrayBuffer>> | null;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */
    readonly bodyUsed: boolean;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */
    arrayBuffer(): Promise<ArrayBuffer>;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */
    blob(): Promise<Blob>;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes) */
    bytes(): Promise<Uint8Array<ArrayBuffer>>;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */
    formData(): Promise<FormData>;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */
    json(): Promise<any>;
    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */
    text(): Promise<string>;
}
```

### Refs

- microsoft/TypeScript-DOM-lib-generator#1944
- #30434

Changed files:
filename: cli/tsc/dts/lib.deno_fetch.d.ts
patch: @@ -45,7 +45,7 @@ declare var FormData: {
 /** @category Fetch */
 interface Body {
   /** A simple getter used to expose a `ReadableStream` of the body contents. */
-  readonly body: ReadableStream<Uint8Array> | null;
+  readonly body: ReadableStream<Uint8Array<ArrayBuffer>> | null;
   /** Stores a `Boolean` that declares whether the body has been used in a
    * response yet.
    */
@@ -61,7 +61,7 @@ interface Body {
   /** Takes a `Response` stream and reads it to completion. It returns a promise
    * that resolves with a `Uint8Array`.
    */
-  bytes(): Promise<Uint8Array>;
+  bytes(): Promise<Uint8Array<ArrayBuffer>>;
   /** Takes a `Response` stream and reads it to completion. It returns a promise
    * that resolves with a `FormData` object.
    */
Repository: vercel/next.js
Pull request: Turbopack: use bail instead of panic

This behaves more gracefully due to eventual consistency

Closes PACK-5275

Changed files:
filename: turbopack/crates/turbopack-core/src/resolve/mod.rs
patch: @@ -2693,7 +2693,7 @@ async fn resolve_into_package(
                 };
 
                 let Some(path) = path.as_constant_string() else {
-                    todo!("pattern into an exports field is not implemented yet");
+                    bail!("pattern into an exports field is not implemented yet");
                 };
 
                 let path = if path == "/" {
Repository: facebook/react
Pull request: Mock modules in tests using `Module`

## Summary

Fixes a type validation error introduced in newer versions of Node.js when calling `Module.prototype._compile` in our unit tests. (I tried but have yet to pinpoint the precise change in Node.js that introduced this vaildation.)

The specific error that currently occurs when running unit tests with Node.js v18.16.1:

```
TypeError: The "mod" argument must be an instance of Module. Received an instance of Object

      80 |
      81 |     if (useServer) {
    > 82 |       originalCompile.apply(this, arguments);
         |                       ^
      83 |
      84 |       const moduleId: string = (url.pathToFileURL(filename).href: any);
      85 |
```

This fixes the type validation error by mocking modules using `new Module()` instead of plain objects.

## How did you test this change?

Ran the unit tests successfully:

```
$ node --version
v18.16.1

$ yarn test
```

Changed files:
filename: packages/react-server-dom-turbopack/src/__tests__/utils/TurbopackMock.js
patch: @@ -55,7 +55,7 @@ exports.clientModuleError = function clientModuleError(moduleError) {
     chunks: [],
     name: '*',
   };
-  const mod = {exports: {}};
+  const mod = new Module();
   nodeCompile.call(mod, '"use client"', idx);
   return mod.exports;
 };
@@ -107,7 +107,7 @@ exports.clientExports = function clientExports(moduleExports, chunkUrl) {
       name: 's',
     };
   }
-  const mod = {exports: {}};
+  const mod = new Module();
   nodeCompile.call(mod, '"use client"', idx);
   return mod.exports;
 };
@@ -142,7 +142,8 @@ exports.serverExports = function serverExports(moduleExports) {
       name: 's',
     };
   }
-  const mod = {exports: moduleExports};
+  const mod = new Module();
+  mod.exports = moduleExports;
   nodeCompile.call(mod, '"use server"', idx);
   return mod.exports;
 };

filename: packages/react-server-dom-webpack/src/__tests__/utils/WebpackMock.js
patch: @@ -55,7 +55,7 @@ exports.clientModuleError = function clientModuleError(moduleError) {
     chunks: [],
     name: '*',
   };
-  const mod = {exports: {}};
+  const mod = new Module();
   nodeCompile.call(mod, '"use client"', idx);
   return mod.exports;
 };
@@ -111,7 +111,7 @@ exports.clientExports = function clientExports(
       name: 's',
     };
   }
-  const mod = {exports: {}};
+  const mod = new Module();
   nodeCompile.call(mod, '"use client"', idx);
   return mod.exports;
 };
@@ -146,7 +146,8 @@ exports.serverExports = function serverExports(moduleExports) {
       name: 's',
     };
   }
-  const mod = {exports: moduleExports};
+  const mod = new Module();
+  mod.exports = moduleExports;
   nodeCompile.call(mod, '"use server"', idx);
   return mod.exports;
 };
Repository: ollama/ollama
Pull request: fix HEAD request

HEAD request should respond like their GET counterparts except without a response body.

The previous implementation didn't quite satisfy this since it doesn't attach a response body so the content length is zero while the GET request responded with `Ollama is running`, content length 17.

Despite having a response body, gin will omit it in the actual response:

```
$ http HEAD :11434/
HTTP/1.1 200 OK
Content-Length: 17
Content-Type: text/plain; charset=utf-8
Date: Thu, 21 Sep 2023 23:41:08 GMT




$ http GET :11434/
HTTP/1.1 200 OK
Content-Length: 17
Content-Type: text/plain; charset=utf-8
Date: Thu, 21 Sep 2023 23:41:11 GMT

Ollama is running



```

Changed files:
filename: server/routes.go
patch: @@ -543,23 +543,23 @@ func Serve(ln net.Listener, allowOrigins []string) error {
 		},
 	)
 
-	r.GET("/", func(c *gin.Context) {
-		c.String(http.StatusOK, "Ollama is running")
-	})
-	r.HEAD("/", func(c *gin.Context) {
-		c.Status(http.StatusOK)
-	})
-
 	r.POST("/api/pull", PullModelHandler)
 	r.POST("/api/generate", GenerateHandler)
 	r.POST("/api/embeddings", EmbeddingHandler)
 	r.POST("/api/create", CreateModelHandler)
 	r.POST("/api/push", PushModelHandler)
 	r.POST("/api/copy", CopyModelHandler)
-	r.GET("/api/tags", ListModelsHandler)
 	r.DELETE("/api/delete", DeleteModelHandler)
 	r.POST("/api/show", ShowModelHandler)
 
+	for _, method := range []string{http.MethodGet, http.MethodHead} {
+		r.Handle(method, "/", func(c *gin.Context) {
+			c.String(http.StatusOK, "Ollama is running")
+		})
+
+		r.Handle(method, "/api/tags", ListModelsHandler)
+	}
+
 	log.Printf("Listening on %s", ln.Addr())
 	s := &http.Server{
 		Handler: r,