diff --git a/KCNet-ImGui-Test.vcxproj b/KCNet-ImGui-Test.vcxproj
index 8d89030..27922b9 100644
--- a/KCNet-ImGui-Test.vcxproj
+++ b/KCNet-ImGui-Test.vcxproj
@@ -180,7 +180,10 @@
_DEBUG;_CONSOLE;_OPENGL;%(PreprocessorDefinitions)
true
stdcpplatest
- lib\imgui\;lib\imgui\backends;include\;%(AdditionalIncludeDirectories)
+ lib\imgui\;lib\imgui\backends;include\;.\src;%(AdditionalIncludeDirectories)
+ stdc17
+ AssemblyCode
+ $(SolutionDir)asm\
Console
@@ -207,7 +210,7 @@
- lib\imgui\;lib\imgui\backends;.\src;%(AdditionalIncludeDirectories)
+ lib\imgui\;lib\imgui\backends;.\src;.\src\test;.\src\util\;%(AdditionalIncludeDirectories)
_DIRECTX9
@@ -222,9 +225,9 @@
+
-
@@ -233,6 +236,7 @@
+
@@ -247,6 +251,7 @@
+
diff --git a/KCNet-ImGui-Test.vcxproj.filters b/KCNet-ImGui-Test.vcxproj.filters
index f6b42a1..500e40d 100644
--- a/KCNet-ImGui-Test.vcxproj.filters
+++ b/KCNet-ImGui-Test.vcxproj.filters
@@ -13,9 +13,6 @@
src\lib\ImGui
-
- src\lib\ImGui
-
src\lib\ImGui
@@ -61,6 +58,12 @@
src\menus
+
+ src\lib\ImGui
+
+
+ src\menus
+
@@ -132,6 +135,9 @@
src\menus
+
+ src\menus
+
diff --git a/imgui.ini b/imgui.ini
index 708e032..81911c5 100644
--- a/imgui.ini
+++ b/imgui.ini
@@ -4,7 +4,7 @@ Size=400,400
Collapsed=1
[Window][Dear ImGui Demo]
-Pos=638,72
+Pos=656,58
Size=550,681
[Window][Hello, world!]
@@ -16,7 +16,7 @@ Pos=10,55
Size=517,436
[Window][Example: Console]
-Pos=91,56
+Pos=89,56
Size=520,600
[Window][Example: Documents]
@@ -36,8 +36,32 @@ IsChild=1
Size=200,100
[Window][KCNet ImGui]
-Pos=113,150
-Size=505,566
+Pos=126,147
+Size=487,408
+
+[Window][About Dear ImGui]
+Pos=39,68
+Size=570,126
+
+[Window][Example: Custom rendering]
+Pos=124,129
+Size=531,414
+
+[Window][Example: Log]
+Pos=60,60
+Size=500,400
+
+[Window][Example: Property editor]
+Pos=60,60
+Size=430,450
+
+[Window][Example: Simple layout]
+Pos=60,60
+Size=500,440
+
+[Window][Example: Simple layout/left pane_AED60EF8]
+IsChild=1
+Size=150,386
[Table][0x64418101,3]
RefScale=13
@@ -112,3 +136,7 @@ Column 0 Width=86
Column 1 Width=86
Column 2 Width=86
+[Table][0xD181190E,2]
+Column 0 Weight=1.0000
+Column 1 Weight=1.0000
+
diff --git a/include/httplib.h b/include/httplib.h
new file mode 100644
index 0000000..d92b439
--- /dev/null
+++ b/include/httplib.h
@@ -0,0 +1,10271 @@
+//
+// httplib.h
+//
+// Copyright (c) 2024 Yuji Hirose. All rights reserved.
+// MIT License
+//
+
+// https://github.com/yhirose/cpp-httplib/blob/master/httplib.h
+
+#ifndef CPPHTTPLIB_HTTPLIB_H
+#define CPPHTTPLIB_HTTPLIB_H
+
+#define CPPHTTPLIB_VERSION "0.18.3"
+
+/*
+ * Configuration
+ */
+
+#ifndef CPPHTTPLIB_KEEPALIVE_TIMEOUT_SECOND
+#define CPPHTTPLIB_KEEPALIVE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_KEEPALIVE_TIMEOUT_CHECK_INTERVAL_USECOND
+#define CPPHTTPLIB_KEEPALIVE_TIMEOUT_CHECK_INTERVAL_USECOND 10000
+#endif
+
+#ifndef CPPHTTPLIB_KEEPALIVE_MAX_COUNT
+#define CPPHTTPLIB_KEEPALIVE_MAX_COUNT 100
+#endif
+
+#ifndef CPPHTTPLIB_CONNECTION_TIMEOUT_SECOND
+#define CPPHTTPLIB_CONNECTION_TIMEOUT_SECOND 300
+#endif
+
+#ifndef CPPHTTPLIB_CONNECTION_TIMEOUT_USECOND
+#define CPPHTTPLIB_CONNECTION_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_READ_TIMEOUT_SECOND
+#define CPPHTTPLIB_SERVER_READ_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_READ_TIMEOUT_USECOND
+#define CPPHTTPLIB_SERVER_READ_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_WRITE_TIMEOUT_SECOND
+#define CPPHTTPLIB_SERVER_WRITE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_SERVER_WRITE_TIMEOUT_USECOND
+#define CPPHTTPLIB_SERVER_WRITE_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_READ_TIMEOUT_SECOND
+#define CPPHTTPLIB_CLIENT_READ_TIMEOUT_SECOND 300
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_READ_TIMEOUT_USECOND
+#define CPPHTTPLIB_CLIENT_READ_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_SECOND
+#define CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_SECOND 5
+#endif
+
+#ifndef CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_USECOND
+#define CPPHTTPLIB_CLIENT_WRITE_TIMEOUT_USECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_IDLE_INTERVAL_SECOND
+#define CPPHTTPLIB_IDLE_INTERVAL_SECOND 0
+#endif
+
+#ifndef CPPHTTPLIB_IDLE_INTERVAL_USECOND
+#ifdef _WIN32
+#define CPPHTTPLIB_IDLE_INTERVAL_USECOND 10000
+#else
+#define CPPHTTPLIB_IDLE_INTERVAL_USECOND 0
+#endif
+#endif
+
+#ifndef CPPHTTPLIB_REQUEST_URI_MAX_LENGTH
+#define CPPHTTPLIB_REQUEST_URI_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_HEADER_MAX_LENGTH
+#define CPPHTTPLIB_HEADER_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_REDIRECT_MAX_COUNT
+#define CPPHTTPLIB_REDIRECT_MAX_COUNT 20
+#endif
+
+#ifndef CPPHTTPLIB_MULTIPART_FORM_DATA_FILE_MAX_COUNT
+#define CPPHTTPLIB_MULTIPART_FORM_DATA_FILE_MAX_COUNT 1024
+#endif
+
+#ifndef CPPHTTPLIB_PAYLOAD_MAX_LENGTH
+#define CPPHTTPLIB_PAYLOAD_MAX_LENGTH ((std::numeric_limits::max)())
+#endif
+
+#ifndef CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH
+#define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 8192
+#endif
+
+#ifndef CPPHTTPLIB_RANGE_MAX_COUNT
+#define CPPHTTPLIB_RANGE_MAX_COUNT 1024
+#endif
+
+#ifndef CPPHTTPLIB_TCP_NODELAY
+#define CPPHTTPLIB_TCP_NODELAY false
+#endif
+
+#ifndef CPPHTTPLIB_IPV6_V6ONLY
+#define CPPHTTPLIB_IPV6_V6ONLY false
+#endif
+
+#ifndef CPPHTTPLIB_RECV_BUFSIZ
+#define CPPHTTPLIB_RECV_BUFSIZ size_t(16384u)
+#endif
+
+#ifndef CPPHTTPLIB_COMPRESSION_BUFSIZ
+#define CPPHTTPLIB_COMPRESSION_BUFSIZ size_t(16384u)
+#endif
+
+#ifndef CPPHTTPLIB_THREAD_POOL_COUNT
+#define CPPHTTPLIB_THREAD_POOL_COUNT \
+ ((std::max)(8u, std::thread::hardware_concurrency() > 0 \
+ ? std::thread::hardware_concurrency() - 1 \
+ : 0))
+#endif
+
+#ifndef CPPHTTPLIB_RECV_FLAGS
+#define CPPHTTPLIB_RECV_FLAGS 0
+#endif
+
+#ifndef CPPHTTPLIB_SEND_FLAGS
+#define CPPHTTPLIB_SEND_FLAGS 0
+#endif
+
+#ifndef CPPHTTPLIB_LISTEN_BACKLOG
+#define CPPHTTPLIB_LISTEN_BACKLOG 5
+#endif
+
+/*
+ * Headers
+ */
+
+#ifdef _WIN32
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS
+#endif //_CRT_SECURE_NO_WARNINGS
+
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE
+#endif //_CRT_NONSTDC_NO_DEPRECATE
+
+#if defined(_MSC_VER)
+#if _MSC_VER < 1900
+#error Sorry, Visual Studio versions prior to 2015 are not supported
+#endif
+
+#pragma comment(lib, "ws2_32.lib")
+
+#ifdef _WIN64
+using ssize_t = __int64;
+#else
+using ssize_t = long;
+#endif
+#endif // _MSC_VER
+
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & S_IFREG) == S_IFREG)
+#endif // S_ISREG
+
+#ifndef S_ISDIR
+#define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
+#endif // S_ISDIR
+
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif // NOMINMAX
+
+#include
+#include
+#include
+
+#ifndef WSA_FLAG_NO_HANDLE_INHERIT
+#define WSA_FLAG_NO_HANDLE_INHERIT 0x80
+#endif
+
+using socket_t = SOCKET;
+#ifdef CPPHTTPLIB_USE_POLL
+#define poll(fds, nfds, timeout) WSAPoll(fds, nfds, timeout)
+#endif
+
+#else // not _WIN32
+
+#include
+#if !defined(_AIX) && !defined(__MVS__)
+#include
+#endif
+#ifdef __MVS__
+#include
+#ifndef NI_MAXHOST
+#define NI_MAXHOST 1025
+#endif
+#endif
+#include
+#include
+#include
+#ifdef __linux__
+#include
+#endif
+#include
+#ifdef CPPHTTPLIB_USE_POLL
+#include
+#endif
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+using socket_t = int;
+#ifndef INVALID_SOCKET
+#define INVALID_SOCKET (-1)
+#endif
+#endif //_WIN32
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include