From 55631feedac6ead52525d373211d22f4ca56de3a Mon Sep 17 00:00:00 2001 From: mirchd Date: Thu, 31 Oct 2019 20:17:48 +0800 Subject: [PATCH] libwebsocket versin 1.3 change: 1. add arm64-v8a 2. add cmake android toolchain --- CMakeLists.txt | 30 +- README.build | 225 +++ README.coding | 267 ++++ README.test-apps | 272 ++++ android/android.toolchain.cmake | 199 ++- android/build_arm64-v8a/lib/libwebsockets.a | Bin 0 -> 155098 bytes android/build_arm64-v8a/lib/libwebsockets.so | Bin 0 -> 76552 bytes .../lib/libwebsockets.so.4.0.0 | Bin 0 -> 76552 bytes android/build_arm64-v8a/lws_config.h | 174 +++ android/build_armeabi-v7a/lib/libwebsockets.a | Bin 0 -> 136958 bytes .../build_armeabi-v7a/lib/libwebsockets.so | Bin 0 -> 109472 bytes .../lib/libwebsockets.so.4.0.0 | Bin 0 -> 109472 bytes android/build_armeabi-v7a/lws_config.h | 174 +++ android/build_armeabi/lib/libwebsockets.a | Bin 0 -> 137378 bytes android/build_armeabi/lib/libwebsockets.so | Bin 0 -> 113688 bytes .../build_armeabi/lib/libwebsockets.so.4.0.0 | Bin 0 -> 113688 bytes android/build_armeabi/lws_config.h | 174 +++ android/build_x86/lib/libwebsockets.a | Bin 0 -> 142994 bytes android/build_x86/lib/libwebsockets.so | Bin 0 -> 85876 bytes android/build_x86/lib/libwebsockets.so.4.0.0 | Bin 0 -> 85876 bytes android/build_x86/lws_config.h | 174 +++ android/dist/armv5/include/libwebsockets.h | 1207 +++++++++++++++++ .../LibwebsocketsTargets-noconfig.cmake | 31 + .../libwebsockets/LibwebsocketsTargets.cmake | 93 ++ android/dist/armv5/lib/libwebsockets.a | Bin 0 -> 137378 bytes android/dist/armv5/lib/libwebsockets.so | Bin 0 -> 113688 bytes android/dist/armv5/lib/libwebsockets.so.4.0.0 | Bin 0 -> 113688 bytes android/dist/armv7a/include/libwebsockets.h | 1207 +++++++++++++++++ .../LibwebsocketsTargets-noconfig.cmake | 31 + .../libwebsockets/LibwebsocketsTargets.cmake | 93 ++ android/dist/armv7a/lib/libwebsockets.a | Bin 0 -> 136958 bytes android/dist/armv7a/lib/libwebsockets.so | Bin 0 -> 109472 bytes .../dist/armv7a/lib/libwebsockets.so.4.0.0 | Bin 0 -> 109472 bytes android/dist/armv8a/include/libwebsockets.h | 1207 +++++++++++++++++ .../LibwebsocketsTargets-noconfig.cmake | 31 + .../libwebsockets/LibwebsocketsTargets.cmake | 93 ++ android/dist/armv8a/lib/libwebsockets.a | Bin 0 -> 155098 bytes android/dist/armv8a/lib/libwebsockets.so | Bin 0 -> 76552 bytes .../dist/armv8a/lib/libwebsockets.so.4.0.0 | Bin 0 -> 76552 bytes android/dist/x86/include/libwebsockets.h | 1207 +++++++++++++++++ .../LibwebsocketsTargets-noconfig.cmake | 31 + .../libwebsockets/LibwebsocketsTargets.cmake | 93 ++ android/dist/x86/lib/libwebsockets.a | Bin 0 -> 142994 bytes android/dist/x86/lib/libwebsockets.so | Bin 0 -> 85876 bytes android/dist/x86/lib/libwebsockets.so.4.0.0 | Bin 0 -> 85876 bytes android/scripts/cmake_android_armeabi.sh | 10 +- lib/base64-decode.c | 96 +- lib/client-handshake.c | 42 +- lib/client-parser.c | 58 +- lib/client.c | 60 +- lib/context.c | 78 +- lib/daemonize.c | 7 +- lib/extension-deflate-frame.c | 46 +- lib/extension.c | 5 +- lib/getifaddrs.c | 34 +- lib/handshake.c | 183 +-- lib/lextable.h | 1098 +++++---------- lib/libev.c | 6 +- lib/libwebsockets.c | 326 ++--- lib/libwebsockets.h | 254 +--- lib/lws-plat-unix.c | 92 +- lib/lws-plat-win.c | 85 +- lib/minilex.c | 45 +- lib/output.c | 55 +- lib/parsers.c | 261 ++-- lib/pollfd.c | 68 +- lib/private-libwebsockets.h | 381 +----- lib/server-handshake.c | 21 +- lib/server.c | 720 +++------- lib/service.c | 191 +-- lib/sha-1.c | 4 +- lib/ssl-http2.c | 96 +- lib/ssl.c | 191 +-- libwebsockets.spec | 8 +- 74 files changed, 8212 insertions(+), 3322 deletions(-) create mode 100644 README.build create mode 100644 README.coding create mode 100644 README.test-apps create mode 100644 android/build_arm64-v8a/lib/libwebsockets.a create mode 100644 android/build_arm64-v8a/lib/libwebsockets.so create mode 100644 android/build_arm64-v8a/lib/libwebsockets.so.4.0.0 create mode 100644 android/build_arm64-v8a/lws_config.h create mode 100644 android/build_armeabi-v7a/lib/libwebsockets.a create mode 100644 android/build_armeabi-v7a/lib/libwebsockets.so create mode 100644 android/build_armeabi-v7a/lib/libwebsockets.so.4.0.0 create mode 100644 android/build_armeabi-v7a/lws_config.h create mode 100644 android/build_armeabi/lib/libwebsockets.a create mode 100644 android/build_armeabi/lib/libwebsockets.so create mode 100644 android/build_armeabi/lib/libwebsockets.so.4.0.0 create mode 100644 android/build_armeabi/lws_config.h create mode 100644 android/build_x86/lib/libwebsockets.a create mode 100644 android/build_x86/lib/libwebsockets.so create mode 100644 android/build_x86/lib/libwebsockets.so.4.0.0 create mode 100644 android/build_x86/lws_config.h create mode 100644 android/dist/armv5/include/libwebsockets.h create mode 100644 android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake create mode 100644 android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake create mode 100644 android/dist/armv5/lib/libwebsockets.a create mode 100644 android/dist/armv5/lib/libwebsockets.so create mode 100644 android/dist/armv5/lib/libwebsockets.so.4.0.0 create mode 100644 android/dist/armv7a/include/libwebsockets.h create mode 100644 android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake create mode 100644 android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake create mode 100644 android/dist/armv7a/lib/libwebsockets.a create mode 100644 android/dist/armv7a/lib/libwebsockets.so create mode 100644 android/dist/armv7a/lib/libwebsockets.so.4.0.0 create mode 100644 android/dist/armv8a/include/libwebsockets.h create mode 100644 android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake create mode 100644 android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake create mode 100644 android/dist/armv8a/lib/libwebsockets.a create mode 100644 android/dist/armv8a/lib/libwebsockets.so create mode 100644 android/dist/armv8a/lib/libwebsockets.so.4.0.0 create mode 100644 android/dist/x86/include/libwebsockets.h create mode 100644 android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake create mode 100644 android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake create mode 100644 android/dist/x86/lib/libwebsockets.a create mode 100644 android/dist/x86/lib/libwebsockets.so create mode 100644 android/dist/x86/lib/libwebsockets.so.4.0.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f8e76c675..ff9a24e046 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,15 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.6) -project(libwebsockets C) +project(libwebsockets) set(PACKAGE "libwebsockets") set(CPACK_PACKAGE_NAME "${PACKAGE}") set(CPACK_PACKAGE_VERSION_MAJOR "1") -set(CPACK_PACKAGE_VERSION_MINOR "4") +set(CPACK_PACKAGE_VERSION_MINOR "3") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") set(CPACK_PACKAGE_VENDOR "andy@warmcat.com") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}") -set(SOVERSION "5") +set(SOVERSION "4.0.0") set(CPACK_SOURCE_GENERATOR "TGZ") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") set(VERSION "${CPACK_PACKAGE_VERSION}") @@ -52,7 +52,7 @@ option(LWS_WITHOUT_EXTENSIONS "Don't compile with extensions" OFF) option(LWS_WITH_LATENCY "Build latency measuring code into the library" OFF) option(LWS_WITHOUT_DAEMONIZE "Don't build the daemonization api" OFF) option(LWS_WITH_LIBEV "Compile with support for libev" OFF) -option(LWS_IPV6 "Compile with support for ipv6" OFF) +option(LWS_IPV6 "Compile with support for ipv6" ON) option(LWS_WITH_HTTP2 "Compile with support for http2" OFF) # Allow the user to override installation directories. @@ -260,11 +260,11 @@ include_directories("${PROJECT_SOURCE_DIR}/lib") # Some IDEs use this for nicer file structure. set(HDR_PRIVATE lib/private-libwebsockets.h + "${PROJECT_BINARY_DIR}/lws_config.h" ) set(HDR_PUBLIC "${PROJECT_SOURCE_DIR}/lib/libwebsockets.h" - "${PROJECT_BINARY_DIR}/lws_config.h" ) set(SOURCES @@ -277,7 +277,6 @@ set(SOURCES lib/parsers.c lib/context.c lib/sha-1.c - lib/alloc.c ) if (NOT LWS_WITHOUT_CLIENT) @@ -296,8 +295,6 @@ endif() if (LWS_WITH_HTTP2) list(APPEND SOURCES - lib/http2.c - lib/hpack.c lib/ssl-http2.c ) endif() @@ -361,15 +358,10 @@ endif(UNIX) if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - include (CheckCCompilerFlag) - CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY) - if (HAVE_VISIBILITY) - set(VISIBILITY_FLAG -fvisibility=hidden) - endif() if (UNIX) - set( CMAKE_C_FLAGS "-Wall -Werror -O3 ${VISIBILITY_FLAG} ${CMAKE_C_FLAGS}" ) + set( CMAKE_C_FLAGS "-Wall -Werror -O4 -fvisibility=hidden ${CMAKE_C_FLAGS}" ) else(UNIX) - set( CMAKE_C_FLAGS "-Wall -O3 ${VISIBILITY_FLAG} ${CMAKE_C_FLAGS}" ) + set( CMAKE_C_FLAGS "-Wall -O4 -fvisibility=hidden ${CMAKE_C_FLAGS}" ) endif(UNIX) endif () @@ -499,14 +491,8 @@ if (LWS_WITH_SSL) list(APPEND LIB_LIST "${LWS_CYASSL_LIB}") else() - if (OPENSSL_ROOT_DIR) - set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include") - set(OPENSSL_LIBRARIES "${OPENSSL_ROOT_DIR}/lib/libssl.so" "${OPENSSL_ROOT_DIR}/lib/libcrypto.so") - else(OPENSSL_ROOT_DIR) - # TODO: Add support for STATIC also. find_package(OpenSSL REQUIRED) - endif(OPENSSL_ROOT_DIR) message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}") message("OpenSSL libraries: ${OPENSSL_LIBRARIES}") diff --git a/README.build b/README.build new file mode 100644 index 0000000000..4620661d7a --- /dev/null +++ b/README.build @@ -0,0 +1,225 @@ +Introduction to CMake +--------------------- + +CMake is a multi-platform build tool that can generate build files for many +different target platforms. See more info at http://www.cmake.org + +CMake also allows/recommends you to do "out of source"-builds, that is, +the build files are separated from your sources, so there is no need to +create elaborate clean scripts to get a clean source tree, instead you +simply remove your build directory. + +Libwebsockets has been tested to build successfully on the following platforms +with SSL support (both OpenSSL/CyaSSL): + +- Windows +- Linux (x86 and ARM) +- OSX +- NetBSD + +Building the library and test apps +---------------------------------- + +The project settings used by CMake to generate the platform specific build +files is called CMakeLists.txt. CMake then uses one of its "Generators" to +output a Visual Studio project or Make file for instance. To see a list of +the available generators for your platform, simply run the "cmake" command. + +Note that by default OpenSSL will be linked, if you don't want SSL support +see below on how to toggle compile options. + +Building on Unix: +----------------- + +1. Install CMake 2.6 or greater: http://cmake.org/cmake/resources/software.html + (Most Unix distributions comes with a packaged version also) + +2. Install OpenSSL. + +3. Generate the build files (default is Make files): + + cd /path/to/src + mkdir build + cd build + cmake .. + + (NOTE: The build/ directory can have any name and be located anywhere + on your filesystem, and that the argument ".." given to cmake is simply + the source directory of libwebsockets containing the CMakeLists.txt + project file. All examples in this file assumes you use "..") + + NOTE2 + A common option you may want to give is to set the install path, same + as --prefix= with autotools. It defaults to /usr/local. + You can do this by, eg + + cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr + + NOTE3 + On machines that want libraries in lib64, you can also add the + following to the cmake line + + -DLIB_SUFFIX=64 + + NOTE4 + If you are building against a non-distro OpenSSL (eg, in order to get + access to ALPN support only in newer OpenSSL versions) the nice way to + express that in one cmake command is eg, + + -DOPENSSL_ROOT_DIR=/usr/local/ssl + +4. Finally you can build using the generated Makefile: + + make + + +Quirk of cmake +-------------- + +When changing cmake options, for some reason the only way to get it to see the +changes sometimes is delete the contents of your build directory and do the +cmake from scratch. + + +Building on Windows (Visual Studio) +----------------------------------- +1. Install CMake 2.6 or greater: http://cmake.org/cmake/resources/software.html + +2. Install OpenSSL binaries. http://www.openssl.org/related/binaries.html + (Preferably in the default location to make it easier for CMake to find them) + +3. Generate the Visual studio project by opening the Visual Studio cmd prompt: + + cd + md build + cd build + cmake -G "Visual Studio 10" .. + + (NOTE: There is also a cmake-gui available on Windows if you prefer that) + +4. Now you should have a generated Visual Studio Solution in your + /build directory, which can be used to build. + +Setting compile options +----------------------- + +To set compile time flags you can either use one of the CMake gui applications +or do it via command line. + +Command line +------------ +To list avaialable options (ommit the H if you don't want the help text): + + cmake -LH .. + +Then to set an option and build (for example turn off SSL support): + + cmake -DLWS_WITH_SSL=0 .. +or + cmake -DLWS_WITH_SSL:BOOL=OFF .. + +Unix GUI +-------- +If you have a curses enabled build you simply type: +(not all packages include this, my debian install does not for example). + + ccmake + +Windows GUI +----------- +On windows CMake comes with a gui application: + Start -> Programs -> CMake -> CMake (cmake-gui) + +CyaSSL replacement for OpenSSL +------------------------------ +CyaSSL is a lightweight SSL library targeted at embedded system: +http://www.yassl.com/yaSSL/Products-cyassl.html + +It contains a OpenSSL compatability layer which makes it possible to pretty +much link to it instead of OpenSSL, giving a much smaller footprint. + +NOTE: cyassl needs to be compiled using the --enable-opensslextra flag for +this to work. + +Compiling libwebsockets with CyaSSL +----------------------------------- + +cmake .. -DLWS_USE_CYASSL=1 \ + -DLWS_CYASSL_INCLUDE_DIRS=/path/to/cyassl \ + -DLWS_CYASSL_LIB=/path/to/cyassl/cyassl.a .. + +NOTE: On windows use the .lib file extension for LWS_CYASSL_LIB instead. + +Cross compiling +--------------- +To enable cross compiling libwebsockets using CMake you need to create +a "Toolchain file" that you supply to CMake when generating your build files. +CMake will then use the cross compilers and build paths specified in this file +to look for dependencies and such. + +Libwebsockets includes an example toolchain file cross-arm-linux-gnueabihf.cmake +you can use as a starting point. + +The commandline to configure for cross with this would look like + +cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr \ + -DCMAKE_TOOLCHAIN_FILE=../cross-arm-linux-gnueabihf.cmake \ + -DWITHOUT_EXTENSIONS=1 -DWITH_SSL=0 + +The example shows how to build with no external cross lib dependencies, you +need to proide the cross libraries otherwise. + +NOTE: start from an EMPTY build directory if you had a non-cross build in there + before the settings will be cached and your changes ignored. + +Additional information on cross compilation with CMake: + http://www.vtk.org/Wiki/CMake_Cross_Compiling + + +Memory efficiency +----------------- + +Embedded server-only configuration without extensions (ie, no compression +on websocket connections), but with full v13 websocket features and http +server, built on ARM Cortex-A9: + +Update at 8dac94d (2013-02-18) + +./configure --without-client --without-extensions --disable-debug --without-daemonize + +Context Creation, 1024 fd limit[2]: 16720 (includes 12 bytes per fd) +Per-connection [3]: 72 bytes, +1328 during headers + +.text .rodata .data .bss +11512 2784 288 4 + +This shows the impact of the major configuration with/without options at +13ba5bbc633ea962d46d using Ubuntu ARM on a PandaBoard ES. + +These are accounting for static allocations from the library elf, there are +additional dynamic allocations via malloc. These are a bit old now but give +the right idea for relative "expense" of features. + +Static allocations, ARM9 + .text .rodata .data .bss + All (no without) 35024 9940 336 4104 + without client 25684 7144 336 4104 + without client, exts 21652 6288 288 4104 + without client, exts, debug[1] 19756 3768 288 4104 + without server 30304 8160 336 4104 + without server, exts 25382 7204 288 4104 + without server, exts, debug[1] 23712 4256 288 4104 + +[1] --disable-debug only removes messages below lwsl_notice. Since that is +the default logging level the impact is not noticable, error, warn and notice +logs are all still there. + +[2] 1024 fd per process is the default limit (set by ulimit) in at least Fedora +and Ubuntu. You can make significant savings tailoring this to actual expected +peak fds, ie, at a limit of 20, context creation allocation reduces to 4432 + +240 = 4672) + +[3] known header content is freed after connection establishment + + + diff --git a/README.coding b/README.coding new file mode 100644 index 0000000000..333011caed --- /dev/null +++ b/README.coding @@ -0,0 +1,267 @@ +Daemonization +------------- + +There's a helper api lws_daemonize built by default that does everything you +need to daemonize well, including creating a lock file. If you're making +what's basically a daemon, just call this early in your init to fork to a +headless background process and exit the starting process. + +Notice stdout, stderr, stdin are all redirected to /dev/null to enforce your +daemon is headless, so you'll need to sort out alternative logging, by, eg, +syslog. + + +Maximum number of connections +----------------------------- + +The maximum number of connections the library can deal with is decided when +it starts by querying the OS to find out how many file descriptors it is +allowed to open (1024 on Fedora for example). It then allocates arrays that +allow up to that many connections, minus whatever other file descriptors are +in use by the user code. + +If you want to restrict that allocation, or increase it, you can use ulimit or +similar to change the avaiable number of file descriptors, and when restarted +libwebsockets will adapt accordingly. + + +Libwebsockets is singlethreaded +------------------------------- + +Directly performing websocket actions from other threads is not allowed. +Aside from the internal data being inconsistent in forked() processes, +the scope of a wsi (struct websocket) can end at any time during service +with the socket closing and the wsi freed. + +Websocket write activities should only take place in the +"LWS_CALLBACK_SERVER_WRITEABLE" callback as described below. + +Only live connections appear in the user callbacks, so this removes any +possibility of trying to used closed and freed wsis. + +If you need to service other socket or file descriptors as well as the +websocket ones, you can combine them together with the websocket ones +in one poll loop, see "External Polling Loop support" below, and +still do it all in one thread / process context. + + +Only send data when socket writeable +------------------------------------ + +You should only send data on a websocket connection from the user callback +"LWS_CALLBACK_SERVER_WRITEABLE" (or "LWS_CALLBACK_CLIENT_WRITEABLE" for +clients). + +If you want to send something, do not just send it but request a callback +when the socket is writeable using + + - libwebsocket_callback_on_writable(context, wsi) for a specific wsi, or + - libwebsocket_callback_on_writable_all_protocol(protocol) for all connections +using that protocol to get a callback when next writeable. + +Usually you will get called back immediately next time around the service +loop, but if your peer is slow or temporarily inactive the callback will be +delayed accordingly. Generating what to write and sending it should be done +in the ...WRITEABLE callback. + +See the test server code for an example of how to do this. + + +Do not rely on only your own WRITEABLE requests appearing +--------------------------------------------------------- + +Libwebsockets may generate additional LWS_CALLBACK_CLIENT_WRITEABLE events +if it met network conditions where it had to buffer your send data internally. + +So your code for LWS_CALLBACK_CLIENT_WRITEABLE needs to own the decision +about what to send, it can't assume that just because the writeable callback +came it really is time to send something. + +It's quite possible you get an 'extra' writeable callback at any time and +just need to return 0 and wait for the expected callback later. + + +Closing connections from the user side +-------------------------------------- + +When you want to close a connection, you do it by returning -1 from a +callback for that connection. + +You can provoke a callback by calling libwebsocket_callback_on_writable on +the wsi, then notice in the callback you want to close it and just return -1. +But usually, the decision to close is made in a callback already and returning +-1 is simple. + +If the socket knows the connection is dead, because the peer closed or there +was an affirmitive network error like a FIN coming, then libwebsockets will +take care of closing the connection automatically. + +If you have a silently dead connection, it's possible to enter a state where +the send pipe on the connection is choked but no ack will ever come, so the +dead connection will never become writeable. To cover that, you can use TCP +keepalives (see later in this document) + + +Fragmented messages +------------------- + +To support fragmented messages you need to check for the final +frame of a message with libwebsocket_is_final_fragment. This +check can be combined with libwebsockets_remaining_packet_payload +to gather the whole contents of a message, eg: + + case LWS_CALLBACK_RECEIVE: + { + Client * const client = (Client *)user; + const size_t remaining = libwebsockets_remaining_packet_payload(wsi); + + if (!remaining && libwebsocket_is_final_fragment(wsi)) { + if (client->HasFragments()) { + client->AppendMessageFragment(in, len, 0); + in = (void *)client->GetMessage(); + len = client->GetMessageLength(); + } + + client->ProcessMessage((char *)in, len, wsi); + client->ResetMessage(); + } else + client->AppendMessageFragment(in, len, remaining); + } + break; + +The test app llibwebsockets-test-fraggle sources also show how to +deal with fragmented messages. + + +Debug Logging +------------- + +Also using lws_set_log_level api you may provide a custom callback to actually +emit the log string. By default, this points to an internal emit function +that sends to stderr. Setting it to NULL leaves it as it is instead. + +A helper function lwsl_emit_syslog() is exported from the library to simplify +logging to syslog. You still need to use setlogmask, openlog and closelog +in your user code. + +The logging apis are made available for user code. + +lwsl_err(...) +lwsl_warn(...) +lwsl_notice(...) +lwsl_info(...) +lwsl_debug(...) + +The difference between notice and info is that notice will be logged by default +whereas info is ignored by default. + + +External Polling Loop support +----------------------------- + +libwebsockets maintains an internal poll() array for all of its +sockets, but you can instead integrate the sockets into an +external polling array. That's needed if libwebsockets will +cooperate with an existing poll array maintained by another +server. + +Four callbacks LWS_CALLBACK_ADD_POLL_FD, LWS_CALLBACK_DEL_POLL_FD, +LWS_CALLBACK_SET_MODE_POLL_FD and LWS_CALLBACK_CLEAR_MODE_POLL_FD +appear in the callback for protocol 0 and allow interface code to +manage socket descriptors in other poll loops. + +You can pass all pollfds that need service to libwebsocket_service_fd(), even +if the socket or file does not belong to libwebsockets it is safe. + +If libwebsocket handled it, it zeros the pollfd revents field before returning. +So you can let libwebsockets try and if pollfd->revents is nonzero on return, +you know it needs handling by your code. + + +Using with in c++ apps +---------------------- + +The library is ready for use by C++ apps. You can get started quickly by +copying the test server + +$ cp test-server/test-server.c test.cpp + +and building it in C++ like this + +$ g++ -DINSTALL_DATADIR=\"/usr/share\" -ocpptest test.cpp -lwebsockets + +INSTALL_DATADIR is only needed because the test server uses it as shipped, if +you remove the references to it in your app you don't need to define it on +the g++ line either. + + +Availability of header information +---------------------------------- + +From v1.2 of the library onwards, the HTTP header content is free()d as soon +as the websocket connection is established. For websocket servers, you can +copy interesting headers by handling LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION +callback, for clients there's a new callback just for this purpose +LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH. + + +TCP Keepalive +------------- + +It is possible for a connection which is not being used to send to die +silently somewhere between the peer and the side not sending. In this case +by default TCP will just not report anything and you will never get any more +incoming data or sign the link is dead until you try to send. + +To deal with getting a notification of that situation, you can choose to +enable TCP keepalives on all libwebsockets sockets, when you create the +context. + +To enable keepalive, set the ka_time member of the context creation parameter +struct to a nonzero value (in seconds) at context creation time. You should +also fill ka_probes and ka_interval in that case. + +With keepalive enabled, the TCP layer will send control packets that should +stimulate a response from the peer without affecting link traffic. If the +response is not coming, the socket will announce an error at poll() forcing +a close. + +Note that BSDs don't support keepalive time / probes / inteveral per-socket +like Linux does. On those systems you can enable keepalive by a nonzero +value in ka_time, but the systemwide kernel settings for the time / probes/ +interval are used, regardless of what nonzero value is in ka_time. + +Optimizing SSL connections +-------------------------- + +There's a member ssl_cipher_list in the lws_context_creation_info struct +which allows the user code to restrict the possible cipher selection at +context-creation time. + +You might want to look into that to stop the ssl peers selecting a ciher which +is too computationally expensive. To use it, point it to a string like + +"RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" + +if left NULL, then the "DEFAULT" set of ciphers are all possible to select. + + +Async nature of client connections +---------------------------------- + +When you call libwebsocket_client_connect(..) and get a wsi back, it does not +mean your connection is active. It just mean it started trying to connect. + +Your client connection is actually active only when you receive +LWS_CALLBACK_CLIENT_ESTABLISHED for it. + +There's a 5 second timeout for the connection, and it may give up or die for +other reasons, if any of that happens you'll get a +LWS_CALLBACK_CLIENT_CONNECTION_ERROR callback on protocol 0 instead for the +wsi. + +After attempting the connection and getting back a non-NULL wsi you should +loop calling libwebsocket_service() until one of the above callbacks occurs. + +As usual, see test-client.c for example code. + diff --git a/README.test-apps b/README.test-apps new file mode 100644 index 0000000000..f8fb0503ca --- /dev/null +++ b/README.test-apps @@ -0,0 +1,272 @@ +Testing server with a browser +----------------------------- + +If you run libwebsockets-test-server and point your browser +(eg, Chrome) to + + http://127.0.0.1:7681 + +It will fetch a script in the form of test.html, and then run the +script in there on the browser to open a websocket connection. +Incrementing numbers should appear in the browser display. + +By default the test server logs to both stderr and syslog, you can control +what is logged using -d , see later. + + +Running test server as a Daemon +------------------------------- + +You can use the -D option on the test server to have it fork into the +background and return immediately. In this daemonized mode all stderr is +disabled and logging goes only to syslog, eg, /var/log/messages or similar. + +The server maintains a lockfile at /tmp/.lwsts-lock that contains the pid +of the master process, and deletes this file when the master process +terminates. + +To stop the daemon, do + + kill `cat /tmp/.lwsts-lock` + +If it finds a stale lock (the pid mentioned in the file does not exist +any more) it will delete the lock and create a new one during startup. + +If the lock is valid, the daemon will exit with a note on stderr that +it was already running.s + + +Using SSL on the server side +---------------------------- + +To test it using SSL/WSS, just run the test server with + +$ libwebsockets-test-server --ssl + +and use the URL + + https://127.0.0.1:7681 + +The connection will be entirely encrypted using some generated +certificates that your browser will not accept, since they are +not signed by any real Certificate Authority. Just accept the +certificates in the browser and the connection will proceed +in first https and then websocket wss, acting exactly the +same. + +test-server.c is all that is needed to use libwebsockets for +serving both the script html over http and websockets. + + +Testing websocket client support +-------------------------------- + +If you run the test server as described above, you can also +connect to it using the test client as well as a browser. + +$ libwebsockets-test-client localhost + +will by default connect to the test server on localhost:7681 +and print the dumb increment number from the server at the +same time as drawing random circles in the mirror protocol; +if you connect to the test server using a browser at the +same time you will be able to see the circles being drawn. + + +Testing simple echo +------------------- + +You can test against echo.websockets.org as a sanity test like +this (the client connects to port 80 by default): + +$ libwebsockets-test-echo --client echo.websocket.org + +This echo test is of limited use though because it doesn't +negotiate any protocol. You can run the same test app as a +local server, by default on localhost:7681 + +$ libwebsockets-test-echo + +and do the echo test against the local echo server + +$ libwebsockets-test-echo --client localhost --port 7681 + +If you add the --ssl switch to both the client and server, you can also test +with an encrypted link. + + +Testing SSL on the client side +------------------------------ + +To test SSL/WSS client action, just run the client test with + +$ libwebsockets-test-client localhost --ssl + +By default the client test applet is set to accept selfsigned +certificates used by the test server, this is indicated by the +use_ssl var being set to 2. Set it to 1 to reject any server +certificate that it doesn't have a trusted CA cert for. + + +Using the websocket ping utility +-------------------------------- + +libwebsockets-test-ping connects as a client to a remote +websocket server using 04 protocol and pings it like the +normal unix ping utility. + +$ libwebsockets-test-ping localhost +handshake OK for protocol lws-mirror-protocol +Websocket PING localhost.localdomain (127.0.0.1) 64 bytes of data. +64 bytes from localhost: req=1 time=0.1ms +64 bytes from localhost: req=2 time=0.1ms +64 bytes from localhost: req=3 time=0.1ms +64 bytes from localhost: req=4 time=0.2ms +64 bytes from localhost: req=5 time=0.1ms +64 bytes from localhost: req=6 time=0.2ms +64 bytes from localhost: req=7 time=0.2ms +64 bytes from localhost: req=8 time=0.1ms +^C +--- localhost.localdomain websocket ping statistics --- +8 packets transmitted, 8 received, 0% packet loss, time 7458ms +rtt min/avg/max = 0.110/0.185/0.218 ms +$ + +By default it sends 64 byte payload packets using the 04 +PING packet opcode type. You can change the payload size +using the -s= flag, up to a maximum of 125 mandated by the +04 standard. + +Using the lws-mirror protocol that is provided by the test +server, libwebsockets-test-ping can also use larger payload +sizes up to 4096 is BINARY packets; lws-mirror will copy +them back to the client and they appear as a PONG. Use the +-m flag to select this operation. + +The default interval between pings is 1s, you can use the -i= +flag to set this, including fractions like -i=0.01 for 10ms +interval. + +Before you can even use the PING opcode that is part of the +standard, you must complete a handshake with a specified +protocol. By default lws-mirror-protocol is used which is +supported by the test server. But if you are using it on +another server, you can specify the protcol to handshake with +by --protocol=protocolname + + +Fraggle test app +---------------- + +By default it runs in server mode + +$ libwebsockets-test-fraggle +libwebsockets test fraggle +(C) Copyright 2010-2011 Andy Green licensed under LGPL2.1 + Compiled with SSL support, not using it + Listening on port 7681 +server sees client connect +accepted v06 connection +Spamming 360 random fragments +Spamming session over, len = 371913. sum = 0x2D3C0AE +Spamming 895 random fragments +Spamming session over, len = 875970. sum = 0x6A74DA1 +... + +You need to run a second session in client mode, you have to +give the -c switch and the server address at least: + +$ libwebsockets-test-fraggle -c localhost +libwebsockets test fraggle +(C) Copyright 2010-2011 Andy Green licensed under LGPL2.1 + Client mode +Connecting to localhost:7681 +denied deflate-stream extension +handshake OK for protocol fraggle-protocol +client connects to server +EOM received 371913 correctly from 360 fragments +EOM received 875970 correctly from 895 fragments +EOM received 247140 correctly from 258 fragments +EOM received 695451 correctly from 692 fragments +... + +The fraggle test sends a random number up to 1024 fragmented websocket frames +each of a random size between 1 and 2001 bytes in a single message, then sends +a checksum and starts sending a new randomly sized and fragmented message. + +The fraggle test client receives the same message fragments and computes the +same checksum using websocket framing to see when the message has ended. It +then accepts the server checksum message and compares that to its checksum. + + +proxy support +------------- + +The http_proxy environment variable is respected by the client +connection code for both ws:// and wss://. It doesn't support +authentication. + +You use it like this + +export http_proxy=myproxy.com:3128 +libwebsockets-test-client someserver.com + + +debug logging +------------- + +By default logging of severity "notice", "warn" or "err" is enabled to stderr. + +Again by default other logging is comiled in but disabled from printing. + +If you want to eliminate the debug logging below notice in severity, use the +--disable-debug configure option to have it removed from the code by the +preprocesser. + +If you want to see more detailed debug logs, you can control a bitfield to +select which logs types may print using the lws_set_log_level() api, in the +test apps you can use -d to control this. The types of logging +available are (OR together the numbers to select multiple) + + 1 ERR + 2 WARN + 4 NOTICE + 8 INFO + 16 DEBUG + 32 PARSER + 64 HEADER + 128 EXTENSION + 256 CLIENT + 512 LATENCY + + +Websocket version supported +--------------------------- + +The final IETF standard is supported for both client and server, protocol +version 13. + + +Latency Tracking +---------------- + +Since libwebsockets runs using poll() and a single threaded approach, any +unexpected latency coming from system calls would be bad news. There's now +a latency tracking scheme that can be built in with --with-latency at +configure-time, logging the time taken for system calls to complete and if +the whole action did complete that time or was deferred. + +You can see the detailed data by enabling logging level 512 (eg, -d 519 on +the test server to see that and the usual logs), however even without that +the "worst" latency is kept and reported to the logs with NOTICE severity +when the context is destroyed. + +Some care is needed interpreting them, if the action completed the first figure +(in us) is the time taken for the whole action, which may have retried through +the poll loop many times and will depend on network roundtrip times. High +figures here don't indicate a problem. The figure in us reported after "lat" +in the logging is the time taken by this particular attempt. High figures +here may indicate a problem, or if you system is loaded with another app at +that time, such as the browser, it may simply indicate the OS gave preferential +treatment to the other app during that call. + diff --git a/android/android.toolchain.cmake b/android/android.toolchain.cmake index e9a3c01d5e..588e695f47 100644 --- a/android/android.toolchain.cmake +++ b/android/android.toolchain.cmake @@ -1,5 +1,5 @@ # Copyright (c) 2010-2011, Ethan Rublee -# Copyright (c) 2011-2013, Andrey Kamaev +# Copyright (c) 2011-2014, Andrey Kamaev # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -12,9 +12,9 @@ # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # -# 3. The name of the copyright holders may be used to endorse or promote -# products derived from this software without specific prior written -# permission. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -29,7 +29,7 @@ # POSSIBILITY OF SUCH DAMAGE. # ------------------------------------------------------------------------------ -# Android CMake toolchain file, for use with the Android NDK r5-r8 +# Android CMake toolchain file, for use with the Android NDK r5-r9 # Requires cmake 2.6.3 or newer (2.8.5 or newer is recommended). # See home page: https://github.com/taka-no-me/android-cmake # @@ -85,13 +85,18 @@ # "armeabi-v7a with VFPV3" - same as armeabi-v7a, but # sets VFPV3 as floating-point unit (has 32 registers instead of 16). # "armeabi-v6 with VFP" - tuned for ARMv6 processors having VFP. +# "arm64-v8a" - matches to the NDK ABI with the same name. +# See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation. # "x86" - matches to the NDK ABI with the same name. # See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation. -# "mips" - matches to the NDK ABI with the same name -# (It is not tested on real devices by the authos of this toolchain) +# "x86_64" - matches to the NDK ABI with the same name. +# See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation. +# "mips" - matches to the NDK ABI with the same name. +# See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation. +# "mips64" - matches to the NDK ABI with the same name. # See ${ANDROID_NDK}/docs/CPU-ARCH-ABIS.html for the documentation. # -# ANDROID_NATIVE_API_LEVEL=android-8 - level of Android API compile for. +# ANDROID_NATIVE_API_LEVEL=android-21 - level of Android API compile for. # Option is read-only when standalone toolchain is used. # # ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.6 - the name of compiler @@ -182,13 +187,13 @@ # ANDROID and BUILD_ANDROID will be set to true, you may test any of these # variables to make necessary Android-specific configuration changes. # -# Also ARMEABI or ARMEABI_V7A or X86 or MIPS will be set true, mutually +# Also ARMEABI or ARMEABI_V7A or ARM64_V8A or X86 or X86_64 or MIPS or MIPS64 will be set true, mutually # exclusive. NEON option will be set true if VFP is set to NEON. # # LIBRARY_OUTPUT_PATH_ROOT should be set in cache to determine where Android # libraries will be installed. # Default is ${CMAKE_SOURCE_DIR}, and the android libs will always be -# under the ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME} +# under the ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_OUTPUT_ABI_NAME} # (depending on the target ABI). This is convenient for Android packaging. # # Change Log: @@ -292,6 +297,21 @@ # - April 2013 # [+] support non-release NDK layouts (from Linaro git and Android git) # [~] automatically detect if explicit link to crtbegin_*.o is needed +# - June 2013 +# [~] fixed stl include path for standalone toolchain made by NDK >= r8c +# - July 2013 +# [+] updated for NDK r9 +# - November 2013 +# [+] updated for NDK r9b +# - December 2013 +# [+] updated for NDK r9c +# - January 2014 +# [~] fix copying of shared STL +# - April 2014 +# [+] updated for NDK r9d +# - July 2014 +# [+] updated for NDK r10 +# [+] arm64_v8a, x86_64, mips64 toolchain support (experimental) # ------------------------------------------------------------------------------ cmake_minimum_required( VERSION 2.6.3 ) @@ -318,7 +338,7 @@ set( CMAKE_SYSTEM_VERSION 1 ) # rpath makes low sence for Android set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." ) -set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" ) +set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r10 -r9d -r9c -r9b -r9 -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" ) if(NOT DEFINED ANDROID_NDK_SEARCH_PATHS) if( CMAKE_HOST_WIN32 ) file( TO_CMAKE_PATH "$ENV{PROGRAMFILES}" ANDROID_NDK_SEARCH_PATHS ) @@ -333,12 +353,18 @@ if(NOT DEFINED ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH) endif() set( ANDROID_SUPPORTED_ABIS_arm "armeabi-v7a;armeabi;armeabi-v7a with NEON;armeabi-v7a with VFPV3;armeabi-v6 with VFP" ) +set( ANDROID_SUPPORTED_ABIS_arm64 "arm64-v8a" ) set( ANDROID_SUPPORTED_ABIS_x86 "x86" ) +set( ANDROID_SUPPORTED_ABIS_x86_64 "x86_64" ) set( ANDROID_SUPPORTED_ABIS_mipsel "mips" ) +set( ANDROID_SUPPORTED_ABIS_mips64el "mips64" ) set( ANDROID_DEFAULT_NDK_API_LEVEL 8 ) set( ANDROID_DEFAULT_NDK_API_LEVEL_x86 9 ) set( ANDROID_DEFAULT_NDK_API_LEVEL_mips 9 ) +set( ANDROID_DEFAULT_NDK_API_LEVEL_arm64 "21" ) +set( ANDROID_DEFAULT_NDK_API_LEVEL_x86_64 "21" ) +set( ANDROID_DEFAULT_NDK_API_LEVEL_mips64 "21" ) macro( __LIST_FILTER listvar regex ) @@ -464,7 +490,7 @@ endif() # detect current host platform -if( NOT DEFINED ANDROID_NDK_HOST_X64 AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") +if( NOT DEFINED ANDROID_NDK_HOST_X64 AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64" OR CMAKE_HOST_APPLE) ) set( ANDROID_NDK_HOST_X64 1 CACHE BOOL "Try to use 64-bit compiler toolchain" ) mark_as_advanced( ANDROID_NDK_HOST_X64 ) endif() @@ -613,11 +639,13 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN ) message( FATAL_ERROR "Could not determine machine name of your toolchain. Probably your Android standalone toolchain is broken." ) endif() if( __availableToolchainMachines MATCHES i686 ) - set( __availableToolchainArchs "x86" ) - elseif( __availableToolchainMachines MATCHES arm ) - set( __availableToolchainArchs "arm" ) + set( __availableToolchainArchs "x86" ) + elseif( __availableToolchainMachines MATCHES x86_64 ) + set( __availableToolchainArchs "x86_64" ) + elseif( __availableToolchainMachines MATCHES arm ) + set( __availableToolchainArchs "arm" ) elseif( __availableToolchainMachines MATCHES mipsel ) - set( __availableToolchainArchs "mipsel" ) + set( __availableToolchainArchs "mipsel" ) endif() execute_process( COMMAND "${ANDROID_STANDALONE_TOOLCHAIN}/bin/${__availableToolchainMachines}-gcc${TOOL_OS_SUFFIX}" -dumpversion OUTPUT_VARIABLE __availableToolchainCompilerVersions OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -642,10 +670,16 @@ macro( __GLOB_NDK_TOOLCHAINS __availableToolchainsVar __availableToolchainsLst _ string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9x]+)?$" __version "${__gcc_toolchain}" ) if( __machine MATCHES i686 ) set( __arch "x86" ) + elseif( __machine MATCHES x86_64 ) + set( __arch "x86_64" ) elseif( __machine MATCHES arm ) set( __arch "arm" ) + elseif( __machine MATCHES aarch64 ) + set( __arch "arm64" ) elseif( __machine MATCHES mipsel ) set( __arch "mipsel" ) + elseif( __machine MATCHES mips64el ) + set( __arch "mips64el" ) endif() list( APPEND __availableToolchainMachines "${__machine}" ) list( APPEND __availableToolchainArchs "${__arch}" ) @@ -682,6 +716,7 @@ if( BUILD_WITH_ANDROID_NDK ) endif() __LIST_FILTER( __availableToolchainsLst "^[.]" ) __LIST_FILTER( __availableToolchainsLst "llvm" ) + __LIST_FILTER( __availableToolchainsLst "renderscript" ) __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH}" ) if( NOT __availableToolchains AND NOT ANDROID_NDK_TOOLCHAINS_SUBPATH STREQUAL ANDROID_NDK_TOOLCHAINS_SUBPATH2 ) __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH2}" ) @@ -713,7 +748,7 @@ __INIT_VARIABLE( ANDROID_ABI OBSOLETE_ARM_TARGET OBSOLETE_ARM_TARGETS VALUES ${A # verify that target ABI is supported list( FIND ANDROID_SUPPORTED_ABIS "${ANDROID_ABI}" __androidAbiIdx ) if( __androidAbiIdx EQUAL -1 ) - string( REPLACE ";" "\", \"", PRINTABLE_ANDROID_SUPPORTED_ABIS "${ANDROID_SUPPORTED_ABIS}" ) + string( REPLACE ";" "\", \"" PRINTABLE_ANDROID_SUPPORTED_ABIS "${ANDROID_SUPPORTED_ABIS}" ) message( FATAL_ERROR "Specified ANDROID_ABI = \"${ANDROID_ABI}\" is not supported by this cmake toolchain or your NDK/toolchain. Supported values are: \"${PRINTABLE_ANDROID_SUPPORTED_ABIS}\" " ) @@ -728,6 +763,13 @@ if( ANDROID_ABI STREQUAL "x86" ) set( ANDROID_ARCH_FULLNAME "x86" ) set( ANDROID_LLVM_TRIPLE "i686-none-linux-android" ) set( CMAKE_SYSTEM_PROCESSOR "i686" ) +elseif( ANDROID_ABI STREQUAL "x86_64" ) + set( X86_64 true ) + set( ANDROID_NDK_ABI_NAME "x86_64" ) + set( ANDROID_ARCH_NAME "x86_64" ) + set( ANDROID_ARCH_FULLNAME "x86_64" ) + set( ANDROID_LLVM_TRIPLE "x86_64-none-linux-android" ) + set( CMAKE_SYSTEM_PROCESSOR "x86_64" ) elseif( ANDROID_ABI STREQUAL "mips" ) set( MIPS true ) set( ANDROID_NDK_ABI_NAME "mips" ) @@ -735,6 +777,13 @@ elseif( ANDROID_ABI STREQUAL "mips" ) set( ANDROID_ARCH_FULLNAME "mipsel" ) set( ANDROID_LLVM_TRIPLE "mipsel-none-linux-android" ) set( CMAKE_SYSTEM_PROCESSOR "mips" ) +elseif( ANDROID_ABI STREQUAL "mips64" ) + set( MIPS64 true ) + set( ANDROID_NDK_ABI_NAME "mips64" ) + set( ANDROID_ARCH_NAME "mips64" ) + set( ANDROID_ARCH_FULLNAME "mips64el" ) + set( ANDROID_LLVM_TRIPLE "mips64el-none-linux-android" ) + set( CMAKE_SYSTEM_PROCESSOR "mips64" ) elseif( ANDROID_ABI STREQUAL "armeabi" ) set( ARMEABI true ) set( ANDROID_NDK_ABI_NAME "armeabi" ) @@ -775,10 +824,25 @@ elseif( ANDROID_ABI STREQUAL "armeabi-v7a with NEON" ) set( CMAKE_SYSTEM_PROCESSOR "armv7-a" ) set( VFPV3 true ) set( NEON true ) +elseif( ANDROID_ABI STREQUAL "arm64-v8a" ) + set( ARM64_V8A true ) + set( ANDROID_NDK_ABI_NAME "arm64-v8a" ) + set( ANDROID_ARCH_NAME "arm64" ) + set( ANDROID_ARCH_FULLNAME "arm64" ) + set( ANDROID_LLVM_TRIPLE "armv8-none-linux-androideabi" ) + set( CMAKE_SYSTEM_PROCESSOR "aarch64" ) + set( VFPV3 true ) + set( NEON true ) else() message( SEND_ERROR "Unknown ANDROID_ABI=\"${ANDROID_ABI}\" is specified." ) endif() +if( X86_64 ) + set( ANDROID_NDK_OUTPUT_ABI_NAME "x86-64" ) +else() + set( ANDROID_NDK_OUTPUT_ABI_NAME ${ANDROID_NDK_ABI_NAME} ) +endif() + if( CMAKE_BINARY_DIR AND EXISTS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" ) # really dirty hack # it is not possible to change CMAKE_SYSTEM_PROCESSOR after the first run... @@ -970,7 +1034,11 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN ) set( ANDROID_SYSROOT "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot" ) if( NOT ANDROID_STL STREQUAL "none" ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/include/c++/${ANDROID_COMPILER_VERSION}" ) + set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/include/c++/${ANDROID_COMPILER_VERSION}" ) + if( NOT EXISTS "${ANDROID_STL_INCLUDE_DIRS}" ) + # old location ( pre r8c ) + set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/include/c++/${ANDROID_COMPILER_VERSION}" ) + endif() if( ARMEABI_V7A AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}/bits" ) list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}" ) elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/thumb/bits" ) @@ -986,7 +1054,11 @@ if( BUILD_WITH_STANDALONE_TOOLCHAIN ) elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libstdc++.a" ) set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb" ) elseif( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libstdc++.a" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib" ) + if ( X86_64 ) + set (__libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib64" ) + else() + set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib" ) + endif() endif() if( __libstl ) set( __libsupcxx "${__libstl}/libsupc++.a" ) @@ -1125,15 +1197,7 @@ endif() # case of shared STL linkage if( ANDROID_STL MATCHES "shared" AND DEFINED __libstl ) string( REPLACE "_static.a" "_shared.so" __libstl "${__libstl}" ) - if( NOT _CMAKE_IN_TRY_COMPILE AND __libstl MATCHES "[.]so$" ) - get_filename_component( __libstlname "${__libstl}" NAME ) - execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${__libstl}" "${LIBRARY_OUTPUT_PATH}/${__libstlname}" RESULT_VARIABLE __fileCopyProcess ) - if( NOT __fileCopyProcess EQUAL 0 OR NOT EXISTS "${LIBRARY_OUTPUT_PATH}/${__libstlname}") - message( SEND_ERROR "Failed copying of ${__libstl} to the ${LIBRARY_OUTPUT_PATH}/${__libstlname}" ) - endif() - unset( __fileCopyProcess ) - unset( __libstlname ) - endif() + # TODO: check if .so file exists before the renaming endif() @@ -1200,7 +1264,11 @@ if( ANDROID_COMPILER_IS_CLANG ) set( CMAKE_C_COMPILER_ID Clang) endif() set( CMAKE_C_PLATFORM_ID Linux ) -set( CMAKE_C_SIZEOF_DATA_PTR 4 ) +if( ARM64_V8A OR X86_64 OR MIPS64 ) + set( CMAKE_C_SIZEOF_DATA_PTR 8 ) +else() + set( CMAKE_C_SIZEOF_DATA_PTR 4 ) +endif() set( CMAKE_C_HAS_ISYSROOT 1 ) set( CMAKE_C_COMPILER_ABI ELF ) CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU ) @@ -1208,7 +1276,11 @@ if( ANDROID_COMPILER_IS_CLANG ) set( CMAKE_CXX_COMPILER_ID Clang) endif() set( CMAKE_CXX_PLATFORM_ID Linux ) -set( CMAKE_CXX_SIZEOF_DATA_PTR 4 ) +if( ARM64_V8A OR X86_64 OR MIPS64 ) + set( CMAKE_CXX_SIZEOF_DATA_PTR 8 ) +else() + set( CMAKE_CXX_SIZEOF_DATA_PTR 4 ) +endif() set( CMAKE_CXX_HAS_ISYSROOT 1 ) set( CMAKE_CXX_COMPILER_ABI ELF ) set( CMAKE_CXX_SOURCE_FILE_EXTENSIONS cc cp cxx cpp CPP c++ C ) @@ -1265,7 +1337,7 @@ if( ARMEABI OR ARMEABI_V7A ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" ) endif() endif() -elseif( X86 ) +elseif( X86 OR X86_64 ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" ) if( NOT ANDROID_COMPILER_IS_CLANG ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" ) @@ -1274,7 +1346,7 @@ elseif( X86 ) endif() set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer -fstrict-aliasing" ) set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer -fno-strict-aliasing" ) -elseif( MIPS ) +elseif( MIPS OR MIPS64 ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fpic -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0" ) set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer" ) set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer" ) @@ -1311,6 +1383,8 @@ elseif( ARMEABI_V6 ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv6 -mfloat-abi=softfp -mfpu=vfp" ) # vfp == vfpv2 elseif( ARMEABI ) set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv5te -mtune=xscale -msoft-float" ) +elseif( ARM64_V8A ) + set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv8-a" ) endif() if( ANDROID_STL MATCHES "gnustl" AND (EXISTS "${__libstl}" OR EXISTS "${__libsupcxx}") ) @@ -1387,10 +1461,10 @@ if( ANDROID_NO_UNDEFINED ) if( MIPS ) # there is some sysroot-related problem in mips linker... if( NOT ANDROID_SYSROOT MATCHES "[ ;\"]" ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} --sysroot=${ANDROID_SYSROOT} -Wl,--no-undefined -Wl,-rpath-link,${ANDROID_SYSROOT}/usr/lib" ) + set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined -Wl,-rpath-link,${ANDROID_SYSROOT}/usr/lib" ) endif() else() - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} --sysroot=${ANDROID_SYSROOT} -Wl,--no-undefined" ) + set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined" ) endif() endif() @@ -1459,8 +1533,6 @@ set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE}" CACHE INTERNAL "An set( ANDROID_CXX_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG}" CACHE INTERNAL "Android specific c/c++ Debug flags" ) set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS}" CACHE INTERNAL "Android specific c/c++ linker flags" ) - - # finish flags set( CMAKE_CXX_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" ) set( CMAKE_C_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_C_FLAGS}" ) @@ -1500,7 +1572,8 @@ endif() # global includes and link directories include_directories( SYSTEM "${ANDROID_SYSROOT}/usr/include" ${ANDROID_STL_INCLUDE_DIRS} ) -link_directories( "${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_ABI_NAME}" ) +get_filename_component(__android_install_path "${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_ABI_NAME}" ABSOLUTE) # avoid CMP0015 policy warning +link_directories( "${__android_install_path}" ) # detect if need link crtbegin_so.o explicitly if( NOT DEFINED ANDROID_EXPLICIT_CRT_LINK ) @@ -1545,13 +1618,25 @@ set( CMAKE_INSTALL_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/user" CACHE STRING "path fo if(NOT _CMAKE_IN_TRY_COMPILE) if( EXISTS "${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt" ) - set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for applications" ) + set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_OUTPUT_ABI_NAME}" CACHE PATH "Output directory for applications" ) else() set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin" CACHE PATH "Output directory for applications" ) endif() - set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}" CACHE PATH "path for android libs" ) + set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_OUTPUT_ABI_NAME}" CACHE PATH "path for android libs" ) endif() +# copy shaed stl library to build directory +if( NOT _CMAKE_IN_TRY_COMPILE AND __libstl MATCHES "[.]so$" ) + get_filename_component( __libstlname "${__libstl}" NAME ) + execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${__libstl}" "${LIBRARY_OUTPUT_PATH}/${__libstlname}" RESULT_VARIABLE __fileCopyProcess ) + if( NOT __fileCopyProcess EQUAL 0 OR NOT EXISTS "${LIBRARY_OUTPUT_PATH}/${__libstlname}") + message( SEND_ERROR "Failed copying of ${__libstl} to the ${LIBRARY_OUTPUT_PATH}/${__libstlname}" ) + endif() + unset( __fileCopyProcess ) + unset( __libstlname ) +endif() + + # set these global flags for cmake client scripts to change behavior set( ANDROID True ) set( BUILD_ANDROID True ) @@ -1560,9 +1645,11 @@ set( BUILD_ANDROID True ) set( CMAKE_FIND_ROOT_PATH "${ANDROID_TOOLCHAIN_ROOT}/bin" "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}" "${ANDROID_SYSROOT}" "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/share" ) # only search for libraries and includes in the ndk toolchain -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +# Disabled by adrianmn +# it messes up java detection - required for APK build +#set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) +#set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) +#set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) # macro to find packages on the host OS @@ -1614,10 +1701,16 @@ macro( ANDROID_GET_ABI_RAWNAME TOOLCHAIN_FLAG VAR ) set( ${VAR} "armeabi" ) elseif( "${TOOLCHAIN_FLAG}" STREQUAL "ARMEABI_V7A" ) set( ${VAR} "armeabi-v7a" ) + elseif( "${TOOLCHAIN_FLAG}" STREQUAL "ARM64_V8A" ) + set( ${VAR} "arm64-v8a" ) elseif( "${TOOLCHAIN_FLAG}" STREQUAL "X86" ) set( ${VAR} "x86" ) + elseif( "${TOOLCHAIN_FLAG}" STREQUAL "X86_64" ) + set( ${VAR} "x86_64" ) elseif( "${TOOLCHAIN_FLAG}" STREQUAL "MIPS" ) set( ${VAR} "mips" ) + elseif( "${TOOLCHAIN_FLAG}" STREQUAL "MIPS64" ) + set( ${VAR} "mips64" ) else() set( ${VAR} "unknown" ) endif() @@ -1660,6 +1753,19 @@ if( NOT PROJECT_NAME STREQUAL "CMAKE_TRY_COMPILE" ) endif() +# force cmake to produce / instead of \ in build commands for Ninja generator +if( CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_HOST_WIN32 ) + # it is a bad hack after all + # CMake generates Ninja makefiles with UNIX paths only if it thinks that we are going to build with MinGW + set( CMAKE_COMPILER_IS_MINGW TRUE ) # tell CMake that we are MinGW + set( CMAKE_CROSSCOMPILING TRUE ) # stop recursion + enable_language( C ) + enable_language( CXX ) + # unset( CMAKE_COMPILER_IS_MINGW ) # can't unset because CMake does not convert back-slashes in response files without it + unset( MINGW ) +endif() + + # set some obsolete variables for backward compatibility set( ANDROID_SET_OBSOLETE_VARIABLES ON CACHE BOOL "Define obsolete Andrid-specific cmake variables" ) mark_as_advanced( ANDROID_SET_OBSOLETE_VARIABLES ) @@ -1671,7 +1777,7 @@ endif() # Variables controlling behavior or set by cmake toolchain: -# ANDROID_ABI : "armeabi-v7a" (default), "armeabi", "armeabi-v7a with NEON", "armeabi-v7a with VFPV3", "armeabi-v6 with VFP", "x86", "mips" +# ANDROID_ABI : "armeabi-v7a" (default), "armeabi", "armeabi-v7a with NEON", "armeabi-v7a with VFPV3", "armeabi-v6 with VFP", "arm64-v8a", "x86", "x86_64", "mips", "mips64" # ANDROID_NATIVE_API_LEVEL : 3,4,5,8,9,14 (depends on NDK version) # ANDROID_STL : gnustl_static/gnustl_shared/stlport_static/stlport_shared/gabi++_static/gabi++_shared/system_re/system/none # ANDROID_FORBID_SYGWIN : ON/OFF @@ -1705,16 +1811,19 @@ endif() # ARMEABI : TRUE for arm v6 and older devices # ARMEABI_V6 : TRUE for arm v6 # ARMEABI_V7A : TRUE for arm v7a +# ARM64_V8A : TRUE for arm64 v8a # NEON : TRUE if NEON unit is enabled # VFPV3 : TRUE if VFP version 3 is enabled # X86 : TRUE if configured for x86 +# X86_64 : TRUE if configured for x86_64 # MIPS : TRUE if configured for mips +# MIPS64 : TRUE if configured for mips64 # BUILD_ANDROID : always TRUE # BUILD_WITH_ANDROID_NDK : TRUE if NDK is used # BUILD_WITH_STANDALONE_TOOLCHAIN : TRUE if standalone toolchain is used # ANDROID_NDK_HOST_SYSTEM_NAME : "windows", "linux-x86" or "darwin-x86" depending on host platform # ANDROID_NDK_ABI_NAME : "armeabi", "armeabi-v7a", "x86" or "mips" depending on ANDROID_ABI -# ANDROID_NDK_RELEASE : one of r5, r5b, r5c, r6, r6b, r7, r7b, r7c, r8, r8b, r8c, r8d, r8e; set only for NDK +# ANDROID_NDK_RELEASE : one of r5, r5b, r5c, r6, r6b, r7, r7b, r7c, r8, r8b, r8c, r8d, r8e, r9, r9b, r9c, r9d, r10; set only for NDK # ANDROID_ARCH_NAME : "arm" or "x86" or "mips" depending on ANDROID_ABI # ANDROID_SYSROOT : path to the compiler sysroot # TOOL_OS_SUFFIX : "" or ".exe" depending on host platform @@ -1743,4 +1852,4 @@ endif() # ANDROID_NDK_SEARCH_PATHS # ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH # ANDROID_SUPPORTED_ABIS_${ARCH} -# ANDROID_SUPPORTED_NDK_VERSIONS +# ANDROID_SUPPORTED_NDK_VERSIONS \ No newline at end of file diff --git a/android/build_arm64-v8a/lib/libwebsockets.a b/android/build_arm64-v8a/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..b37212d780b5806709356c407d5b8c4d33d4ae31 GIT binary patch literal 155098 zcmeFa4}4VBnLd7ICO`;?Ap}81auYx?A_4|TSXU+iG*qhmiI#2M&P$WNZwF_+BpSy)Eaor`L?b2;`w^eJ|UE2l_#o{VORMLw1KF_)5ojG%J zN3HFC_V?M(_rm1f`<(Z@?|a_!_ug~fa|>^Xwbazzm~)+zeoUV^d&bP^GfQWbI?gm5 zWdC)X8M9~4aAQPslu}WphMiR^f4ovo@OSr%J*t%b+xQ%`s>VK$!{abj43fR9tIj#co+p|Ii{$a-N_IKusDv;q9%>IH3j{l+xPC1+UExAJl zm)y~CcWb12R!Jn@SkqJ+kF+LQ>Kj+8hWhHeNN+FZ4_> zEs=)!x;XMEb%iiv&&9VbT6Ej(RS{5ljYG54*Tf|&BQUXhloYY8^z?YoOoCc%-?hp~1^MStOboBX_sdCt}qN zNN##zGKI#X@Ys~4zb@WZyLNT6YbxB=#G1)V*N;eJQ>3*OMxz<6Fba&@f%UDeYY`=u zUM96-=~^*6P|hNCi9|CBCFG>aB&wR0TpMSl)k0YiYGRO8huVrlWs=F9tHoVY0)@IE z-ncSRr^yM{G&Q4G7>d^V)y{!wr+*BR>$fa(a3;_ZeE&W>l>Qb!kAQP`K+SIqZY7?tc$k{s6M(@u*Ip3qseOW z$aPf~8r51Cn+|EU?nOgWQ?q-8TDP_#p_WyaPj?fI8VlN0@kmWWy)NIdgnJo5L5#OF zx3EQGwzTL9p@}`|TN!VRw=g42L{=O_m*QqxH7WP$rBTbK@{RGDL}W%9f8lCEKP)T) z^TZo#^2xQ%5C($IvAL;_mDGSXb%jP%ttts--P ztaiw*R>(t*Ok;pr(pVF3&{jk1Kyv9v*0<`0lkpp3u3Zg<0LkXRsX2iL6sievZA(*g zB-Y%FcD#NaD#uE;o)U=Sm4F^@9k6h=q%1S>SWCltB)cBXyTnNkOO`5cFcgg^%bYF~ zE6{qPennbiDQ2b}Gr62>!;->k;|+1}k-p7t$ZS(Yn&U0?O||tkDbAjDPSk5^rsZLW z6lHxQ$|_nAIY>y68e~yK-%^T}eZA!`x!x-ragFi_^7h8|&L#C}{!+ z(dM~Un!Xuph`7orLM#JGOR|ZVX81&mCVmo9fMT+(uu7t$8DqwRc#3b?MOW)t7GV zDJcE&4+~18AyxI=;p3M@E>dg0JND+{;P+OPZtg88Ed-C(^22{Vxc;@$FP$kUy$?F< z462g3S!zvC^^~di`>W<=t2KkO!e!*4b;u5vQHR3eYKa=II_`o_-~V-gl~V0_J)y`; ze+s_efc{B-7y4%&4-Mbjm8C`&Al^TJ&|ei%s;oCOsF?JmJ=Whp#sQy`NauUFR@th9 zX?~X1ILa&L&0lcS&6Nv3b<3hp-+J5PB}Xmi%cdcqz-PqK; zrlmEpcHP}=>%TB<`i$#KX3m;jT6WEK+SK-+o9E4&<4nH!*4wXkN~V?}FQ=DGE1fah znT#&51+5oK>eZmnHE{x8SgNwx#s@ARUZAnD1|KJxJhgTGY79x#R1_)qTqjp-lGW7O zSR$sTR--AH3jVRFM5nUB9QbfDwWW#FQ{6`vHMOQ`wH~TZZEQ-!r$XmzTN4;s7)J3r z4xI3O@L>nl%u>JX_oE5G@isfo49&olr?;epf$>P@lY49BpbJdFiKQ~^-X{M}Hbr%sL6~2Jq=ZSm|1>bl_tuc8 zN$6sP*@v_vg58M=l8PL`pEB{U6u_Jftm6=3Z5Pat=+jGnpbzaA4CdAUsEI$>W{PV` zzrbs8;b*_)#(rWa+K;tO;tS4p!JGGhk_Np`-=zL{lf`?l?xfygz&aBFeJT3af%2)7 zpZqfhEJ3(^c;%-LP8{bW#|mYo7%}jO=6u|-!YQkP2y11+>SDAY7dAYz=R!zzyuB>2 z=bg_5_q-EQdv_J6KIcqN+1sJO-U3IhSr|}N(0QAKKDAJ(4n*%%xPE(CIpS38xv=56 z-Ryfw!*HiES{g%l=WKDdDpl}O7_=LMf%Va|sw_OHeQ7i=SVr38p-?gDRaX1b$1YcW zKo?rEs{1W(z zUE%I?;CG4I{Cr8a+E@K(xI6Z>aCbxnR_z_4s&*EH`<}&^qWX?-U(GJnJpp5-$6$v- z6)r13a%E`@^wq&|AI3N%@vgL+{N@i2_w7&xr@wPgc>8_14}R^S$~xVPF;EnI=PI=- zs#I0yVD+O{Aphp9aNj=#)V^?jxQ}|*%nA2x4zw?=g}h!h_oa=H`D#cN_nhyaNm=Ak z0Nnx@-vp3Grt3JyFidL{dSt2g=gEV-c7e}HjMFf#>Qms~WAO{W+dq>!aO^`JhP>au z|8-msKHFbHK0|>0)`{2$&4`e+UT9otR3*|5Uxcp~7 z#UQPGn8H}>6OGC2H)s0Qu#CqBBn=}lccg})-t?)Zzmt)g+phmljMdmyx~;mtNc-bA zR&)C_Zx8H7^BYUK^j4#0N$?w!x%4?1#&B*Kv{>j%zp>ybgxF&^U4DQ~!q1hVqbC1M z&4AC#fUnGeE31<*V&Np>UepN8sl#;@g<&|$A{!9{VZ|?-G&Qd-t;>rzSIw)7yacP13_Q= z|Ik!+u`~M(w#E`)aMm3^RqG7+HH6!TSARdy@eaSqRwO?$FB5Z3w5sBj;j9WHEmNk2D?Mm*x`{fZaj2OfRC z`s%IE5BlT3I(s(ck#T$XQ%h@{4xq-@^9pYyWhh&{ak2N z@y}JkswZKO$1%>v7<}YogTsCI)qU$gYmw@Rwbh>Aq}09%D%`hGU2@t1-HzbkRey!? zK3avP@8LPf`+UVQ|98P-LMfk-M&o&4Ofkp(9Pd-^8R#kcQKxgztqadlJIAQLw?n~V z+G6LJaNnk2pllbOcb4^BzjgbS2-A7tKEtWS;cli=bp<=z^d8*v8u;|0oUr^H3k4xJ zRD1$*UkMG`donb5Z!hFu*luuGy>)t^fkN;ZrJ<+fFz7Y!a{pFBAUyTZPhgJLU?|ODnM}Z36RnF_s;EoEO z=MChj9boh{tn{nQWXD~N?hj&B1PSa!e4(WIs&svXNqx!n$ zWp|ty)SlNh0oPZlzE>}9&wK21s{4t1RmV3Xs(atPfsWl*&ENBlf(3i<{Dty7Xm7x2 zf4 iPa9;GsRV>%onK%Fs4$LwPJdhOi3QAq=~CWnb9PolHN=5X%jpvssSbLmnLp zseL7Q_TEvX)^rUA}159eHX^FX~xQUAVjGQZ;kJ8$D&SO9Shx$Eqb2ZR7JQ z#;H+<3suQR)bpMqRfXqb=s0TcA(W*P;Jbf9K-awjl*wyHxzF<|H}yO%WsT+T!iIm+ zc}ZE-qZEg7o$2M#4d0a$?%q5`mFz_MrmPA)FX}P|oX@UZml!$Lb9(?bN`H>OL_fzf zUORN%afw>P_XN>lc#eKET!vQ^OVl{EjP2L=a)3b=>dHQa=hj}-pZ4*o@cNOk6XH8K zN8juzV;suDOB?yh8t(2@=Vzm=>Nc%6Pt7F8@b-~v=6C+CGWqP@ z8*+K<3bil&2GS#SIf^tYrZJn(@@iic&-v{*$3DQj2$emXyl8K4o&e9+_JvN8){nBc zw)KtSz9{&U@5UQdAM{P#FU9>-l;v}HN5Jr@=r`_C-H)QJ*_k2VV`sFD^gD}V(B(MV zs)Iq*_gIe7c3>I&elGfnH~XtthIW0>U-DnzXY04Q}P8@#U)?Qr|^)CFZ3ZF*?$cVSQ3GK#W6J@P>3R9WTX4wQ?{sOMQ~de_SX zZNV_cQ<%q#ZdTo5+wUU(#J;;Ak2V%rFMMFifYmOY19oA<-wtRq&!HVYhp0)Bxh<=ufnlV|ToyWNYreJ|?PF_gbu*9STtyUi_s(P8Ijhmj9E(GMR-TYUm; zHg%0&r1sI)Y}*UbRvd>-i1#WrlNhgqW7Ur~jpw+-y=S`65AS{Ui+EQCIh!DlX?iu3 zrFo{;(SOzL>i&7IZXuLEuWs#w&(H44QyrUNn+p6Wlka4sL#SK0?>O3wcY~K~?S)K+ z{rqe}X&2iI>KRn~vhYswPe6B{qdHdNK9C#cyUZo*7m)vY{*|_I(3c#;yr>>WT)rO?DDclmyF6OU*a#Wv{ezp1<9Ihpd!4|1F8REIxm?=qd@0gI|!N)Kz<5+N` z84K=0Ua?QviE&(o84EgX)#uyM{sxh65sU?UF=p8j4C%3;*!{wWXSJ+C>VouI&`#z%w5pZvY$m>XwYq<>#QzAEMQ35J_%f7S_2 z=Se5ho%cRulHNfW=?z`pyIL354lJiKpRftCW}+Wse~NjYeV1VD`V!92r`Ve|>dkUQ zp3ymIU(g303tdvo{)5=tkWm6YesOJ`Fz(fP$nieMWMQScV{ZS(=Mr~(3Won(hyDJF zGCnt{VeOnr(@JXp(3#Xa$5E47C$$pC%1vidGhTUfF<}Dl!#}fZVPsiVdDVi*O^a?{ zR=M!jn{j*F(gpJ)%NE=^KT@&aCfr2kExK*lf}B)*ti8j^C%ilV4Wlc0=gviw4%b7G zDURg27iV2O(FDEp%fcMBfJ@}KZpdkgH#fB;TAdYGSPaEcSVJ64}yJSf#6-%WzWk zO4hR8!E!l03*>N#Itmh244Rk=ma_R$>NDj_Z{_*c+o~4MTcFg!TW`9J_wyH2+{-liiVeBPpk3vR7aY7uJMt@HlicQ%(aAB_vB^IB9X@_xhcE=30d-o1fG#yxtuW`0@cr4NjKaLiXP zS>@%`=#{qAOQ96=tCBo%)bUUG2T z^|U|%Qj;W6 zvwSic4~zEPh5P>W_|56N^xhdeH>Tg5zDw^NJqx|`GAYR} z{Xm=)Aw7$fqUDuKpB#py1%|M0+IzV4198%YlB+LMv0QrT`BJz`@2-fjQI~!o?$UE6 zD*bTj2jZj(=~*j3dd_AIJVI%+@@}}xpFR7)BZO5C-ovFIh?6elv(mz)&-b#?_aSx3 z0NkY?h?6jsoS92SbLo@4P%1#vUzT>y8<&0{&ae<(I(rY7ejx7BkN1)r{sVEB-Wfpe zT4o^5mmL9>!WUaHL#oKSb1z*!1966i)PxN51M#as8L;T>nikS4UeZ~)awnyO<}Rej zE&XumC;OBX>dBGJz$2u*Gu=u}2bsMlM~}mSRp94Wn)!_2hw~xA53kLDHvrF5srF6m z^CgX^+OaO&^Wa2LUUIZ-#_PZikk#+73L0y1e-JE2Iym+6O&O2maR?=>IJP z{>uz_e+K-rpuau^8E}rr{q$dw0sl+}{H_dm3-COvlj%`{h?W z1AZ6z1XJyHr{VME4D{PF;9n&lm1@sL<2}Gf28#?=Yt^GYz;2ydBkT4&L&?-wF?l81 z21FvQH>nly+H6d$P`>V`ttQYGC9b@`{RRURnZATK{h26T>i^$%8Ccia=xdz}`we`g z-=_WOh-U)#LDTYr*M5^phs_Uj!lx6Ycv+^LFq4j=$rp#NAE>+rbYEnq=ZAKgSCI(b z!8SIf1^GUrA^YSNp_Z>5XjAV8vGlmH22T4p!~I?1jU4w8;EO^&_0%`6Xi9%+NW#V% zIL3p*eU+#;mjJ5Y38(2Z;4v_*@ciamG(bpAU5kn(n(EW#41D5S%_qtlCI=6DI^F3H zeW}MdU5A@ZO`eVZr8HTq@h-+(j{?pyhqOWM2IpE)8^6!seE((hk#>x0KRHn*$K&RL z_#6Ro{(-rs+^a48sJW(G8-K&1r#^C=GZ&(#;P0CY%Kbe7ah4X7_*@Hj$8A`*3Ve!% zPczq7cyQ5^d^q-!qt{%J&r|_%7X3MHv2p1a$Y-HNzs2Ii^gd%0R z!_z)ZO+0+@Zkpc>Oa=P z7r89--!_8_|D)#q9&;A{f{Pq4e=btsLEN@KC(Q-_w0o)l3O~}{YT@#3mAHO!Z^F)7 zd=^{u^D&;_L3*42od&0NC2))`#VD|my&-_93V+bev;E^Qt@g5Q&Y&lU@} z^W|X+x6}2_4EQq{@S_%Pmrp!ICGBSC*EoYqy2iR>YNEl#K7voN_}KO-@$fld>|E;M zBlry&_{bVw(Pz2Qr`f|t@U{$mwisOabQyg(p5r0u61+15pC5SmNIiVf!$A88j79zKG%W#H59;WO6gv&F+l@cT3H*=ON) zJ$)_%e$?QSj}Ms~=ry?Hqu{Std~7?sVc~Xr=y1LZhwwk*-m1w47yg1zF*wVc&0pFg z;#GzRPqpTn`0W?gn z_3Cf;v!6{;V=X`U@*w@^+)Mpe<}8WdY2mdQ=%wHE@_E?Mi+!Fl_W7p4#Xf@D{iZ$c zdd8A#*RSU+{0}WXf8dcT{oIQlxq=_H_}Jy)jD_2BrJgapwp^?u(ubt?A#~kpT+^>e{S`e0m%8KCQ|hVkIc3r-^;Gx>-frn* z+pW^VrL7<&b%%1}hK48MFLE8D|9yr= zUkLvI==mH`Y4prC0fH|!xbP8txxvSJ=%WUAJh+T|CVTK^Loek-_{+FQ%Aw%xhCb}! zv(4a=Uqb(o!40`0K3i^Z9%rt-`-CjE@YLJwRDVJGp%$NqE&9~kYNd`?_(c}|%NCw` z`>fO%3m<9G=R+P3%C&tcWqd?@v`eD@-eA#lPDKuR4j}!d0^;0h(O+)i(oT~83JYIk z>J#w-3vaXVLJOC1KItb|_)&{~l7-8-o%B~(_-}j3w1K5Hli_jO8RAQS82*U(9SHYJf7_LAL`f&p&$LK- z1m6$LFZ~Us91Fe6ZD9Ie$`D`HK7CaD_cO$o=W%IAGs$N^;HSUT&ySKnH$(h=CjHV6 zWs=Wvrk{KncYKumKg|&Th>@Q~=GNgYKVL?;U;b}1`QK*ZGXHb&6MZEAcV&<-&(SjP zCn|X5KaxRywrS)Ro6d&v^L*t0D1&_Ij7p6iGRf!o*)RReWzb+6Cd$wEk$)kB{L*2r z#5xgd&ffHMeC;cr4I7S1_oOJFt0BDhpM>;*#env&%gDdS#Fvv-zJvIF^1FZyWHiP_aGu#+$ zCL-mJ!_O=K@eJ~BFoPShpJAhIE!RAAzSqzG+1I;NQTL?tpR8*iZihCcelMeZBYRGU&g& z#El{Lr~VUs^uGv(qkNOyZY2EeG4i`Sh86jY!-L~8UVHnQ=tvzrV8x2Wlk+4K-=$9d z{gR2FLfk8fC-@u_A7)59wwU;nGw3hGGZF5W|INmJPZ@!<-(>tG{bE;&@rcl@pJHQ) zW4|IQmK@aWEx(R2-E8=|sKF{!T!~V0+$KZ#3CG@F<5A!^n=VE^e z1>aKo+C8i8z3dqL7+-}iC*#6Du$VrZ={|wq(SC2Dm+CWn!5N=D#-k2r;puyuO9soTaPlE9li#{BBV;if4icdHTg8e?R=fhHoeRaOtb3DwlNkt;*8- z2EJDl+VktyL3>VJuP*cvKQZaT$gz`7y*}z84}MZBhgJ8qn9=I zMN?Ujbw$fg?Co+0b#QK}T7&gYC?})f*Lw-}@VHdhxw#js^&gc+`o|s%U9Rcf`1#3w z7yE2YTRpi~S#FGaXJAn|zn=OW;{uu>^Z723H+B-(Qu0&3b^j z<>b=hH?W_;cHFbvPeA!mC>?U5aEndGbj~j=6n6xZoTjJ z?>qF@*t=z~yZ2=5UE`B)wL7#gb@(~XFSj%meE7IiIj?J{WlnAO3S}hWvAL=s|xz zcTIM;nT(`;g~e&DUx^L-wa+HDs?=UDIS^dT!5htuC1 z)(tnlnhw9el4PR2V_g=vH}cyg+%?m6nI*qTwa&U$WRSQ48U_QPv z<9w!kVHF&P9eC%`Q*@d86&+`p{wfjOj3=+C{e8G;!s9fC@U+EOh9$lNF-Kbj&Zm;V z+7|cwBaZuRAc5h_>wdq+isIC+)d`vAxSvjeT`0*tmMvT4%!}zyz&LR8j63PcQ1i_G zpLf^A8FN0Nemi+w>WAy0;B@1rooA8zp@ zIgbv7zuo-p*_}fk82sR%uVw|qUXQ^$bAB?<;})m=J8RvfyX%oszIEkv+nYz{y4%v7 z>uyPRuCsY+U%`Eb-$NX%!(TG+NZz9(wc}uJ=fyYwMb6iTJ}~0Ji@rMip0!w3$XE3SlDSU*!9EcP4^SN^QyMI$$+^di> z59C&W%YPtF5%>7&v^$a&7CoKB?8;9Dt;Mf9S)Uf=NB#V^K+; zUEek>y@gC8(W9DyzPxEP($J#mbXWO9gAe(flINRMOq}~^EaM<;*tv_Vtxvjf43PYy zo85Hl&9L2d@HTAovDHBl)JNEyxi*0B!sVzl7hb&6!tFWVA6U5b`GjPyk9;mQG(1hg zJrCl12Q3E&y*#+afOFQYS3G2{nQI$tJZ$L6$DUJ;TDYwz%Rdj{@7`f8y1|9N;B6Kk zo4?FO3Lml8{T@DoZ_B_(-USMuEk^JG4({K7zlPflsf8&osm5 z4G$l|&t%{;#l-WLpQyn_&r{~U&YZ>mf;Sl4o4@TAZm$`bZ{hZufvAN$=9;H=bM4h< zi^0A695A>yT~dCCr#zbQ0A|^z(8T3Q@`dz87A`Mtz3I)x!#@w=c6wzk7WKD#`4U4< z{cU`=!6m&4;XLr-Q6G|C!R8G6xE@Ov`wxzFIj=PAQS))EUJ!MA1LBT1w$gPHc$5a%0taLvyk_fr3r_J_Ec z9@n_kcjES1tckeiLEL||?1ulQe`!;)PK_{K4q^8+;IC05i5KFEm?>sSJe<5rzwpMV zt+Mg^r17UCE_r6sU&i$y(TB-Cxz+wp#KK9$y=Wfko;f$pgX_~sM_qZyn1k!9{p8evuFXW{Ez{_ge=jgU`EMBcGX6Jgv@E&i`HT4Z$q$>kKiOZM z@+sRZeKEJ0El_* zf560_=7}KsOME{6`PnaO3>P(ov>)?Q;)`8bO}urNQBIjx24g+)J-5EPGrnxk(qovj zII^Ge%4ahD!Li39&~vNYZ)hi{jz4Vc&M`aA$Dcd?p*3&_Ypud~1{st5 zc2^emcpa3FeO|G5yUZaU{5{ppclnQ9uex`rL96!9R^6Pl<9`2t_pIvpXUw~81pd#M z9|{dUPghs$*N=Tat@(l|_Ue5F^APvy?@VD&b9|?ZbGm~uf6Mp(+#k3a^Ip8ZZz<-0 z5Wfa=kG9`?hw84uTvc2Jx7OAb9oV1Ecl(&*17FgTFZmzGp1EGWwH6Ke zR~y-1f^5d2Y=!j6+?D+eGR|EV>Up0*d>!MN<8=4AXL?B|-yp-j?ip#pV;kxRms4-U zbw@eAVOD{24SwV=d+vvj4`Tm`$P3KbEjeiH&itV5A4h)dhy6pjs(T*3(;7m)?NFgr z-$Z^)!W=2(P&dg3%HcN@D95&21?=$(=J>sKd+-j(HS>qndF?t+YO%j8=D><;kIp(z zJ~7~=DLnH>FEIbwk$17Wod?R>V&`X7sqO>|LdC^PBEa-Qg@XGj8PtWlDa019?ID zAC?ym^2p7LENx%jd-II@PcuFIu7RXU_JpQx_-#ImF(|RbUXFcbbH-qMt(Ad3`)a;y{SYz>o8ePozH-V1dQhVYCHR?M#YW)*8 ztL`H37F%`Q9PZwUbrqQZUWEn>bF$oPncsJF=P4Cz{=m{D-J^qQ<{xX@yWfkWEYenk zmz{29*_89t7dE(S6&M$Ji8TcIdk>?Iok00}1wY2cw{dkHI*2*%UVN9AG%Opk9wO)| zgAB9t&X&XSk2zGxalaA4I>3GPxuzk8`BvJS@i{--Gg!@Bfin6k+MFnC%eIKNmv7H8 z511#c#wn`?He)-%d?KAq z!~L;kZOJFyle!RX#wI*w7nwb&Sx#k7YP-D2zSL+-b@}1G)Z7ai`JFz;=(}MCsZxje z5InZRm2DT3AA{FKRZUIKYJB(HS%JM}C+jU|HE!lOSJZOmw4U3}HaT_mE9->jy1J&- z@#|LCW50;n>#$qkN_^q?I{Rg4>$TITUVklilK|cIv#(uI-x6QZ)OP(e5?v=fyxy<* z+8g=4)4B2Y9Sqnq>pO@0`TjmP#w9tXU8iWBo10p3og*nu)7z^wh`3qw$Kf-H8!=lu zEi;}Aa9$Z3N8(G1W*Rsp9Q<3b;qJP4#IiSMsWA)O>S{Rf6}D(@&cDT6>te8wG2j*y zWXxyEHy9VlHyAghPmkW5K0R8QehU_1{N(+cey^G0IZt?g@k4pKYptIGA0GN0nVAE| zcD@yy1O95(L!kwn2wt0-TQwW|-r>#xV@6d^q`G7J_gz-*do`mE_R-bfnViRseZP>d z5Q>$OF?T!TTJy%qJztll$N7Z&t!6I1_GIaY6cT$@cED_h9caJc_iYD$6XFO~Z*b4g zL{m*uLvq?S5?Q=-K~>csL~gqM)_GOf>p2pcI+Y3b}F zy+1+O@8H9otPcMZbH{GO=cX_YH~rowk8*PJ~{bwA_3Cb@>m(85Z)HJ9g=l z%_Yf_hu{92F6HnfjeQZa_PG<>eGfKpZZ{VM0gJv!BH-*dr|j}E4~!P=)tXNVx8Fbd z%{9AxD1G1&GP_CIAuhdn(PRZ+ECBsec)Hv?i_*Px`3%HAr}?Dt)D`VuUhr7lTt1_H zLP*c2?}0}s&2!TYPvB(Ft?T{)*q`C&XPt*K;0H3`hk@I3;xY&J(+u<%G<~Yv%G}At zsHlGWT$ur{0G?-+bD3+Y%|QRhnm$#Y+o6X(l0%Y-ZE9jIcK^!I_W1^|&GQdH|gR7%O5fS3Ob9zHTolQ|*bBlu!N@8whH z;Zte^H(0pcrZihP^=~)yQr|?b@VUp(6Sw)aTe!_f=D?}vM8lgWJ74U%_r-=r?0LrA zFE?k=M{vn6;x?aJL+`cEH!a+L&nxddMeYv`o#RQD;FAsR<=1(STl`r*g0iT9Mbae%3o@*Faxb)3ny=I9Cc6nxt%h+^8W~! zpZuzj8&TSE!)Ac|HU#*kKbr5x*li**y_D^h|21HK@{gE=b{abvHUs28fB--F*{q~E zN=bA=l(f<@pH{wrsJXa#=p_TpW&gKX5v?pxpj#C0)N`X_v+tn2puafFTL^`GsN%u znDPJ2#P`~%$Hc$VBVY8EGwY{Z+oZ2bLTwP&URr!B+SmT4O#G-Pf|u=Xg!`4B<)-|! z8Tl+fEYcER$`zX#Q&kP6d#W^#;NSMh_uTsGt~s!<;wUu*p6e>h*y-2Lm{G#1Sm)!<#ZJDKDRGamKFM6{KJ6RH`KD7>4PH&(T?B8V zPb7R8`3=_&g}DfsAEe(T!aMJo&24AfpNCDhornJ``oL}3YUQJhi(kjn&jvcmLaKv4 zk3)eM239=U8@dd0MPrNeH-@*ri!=Sr$ZOfN&ek2F{L`E#I|l#0g$1hW_+5$8{qS$3 zk0ZW2*+IJ2!_L-&6>7~+_zVWXFA86|Xi#;(h;Nwg2n9~pBVO-avCXRhMrp;8+ziTpXZ_9 zGY0e*yY%H2J#jz&SCf9!K>o!2_}4q2A2X0YaX!#PzhqxdAFO$AtAb;Y1 z{D+c$!a)AS{rK-05BjSH@+a=c|7y}-Gmt-VKmOml0`%7n|3cDVKaf9hKmMc@`I*wbIWob{lsG>ozg zU(;m;D9aA$hXOwg`XbPlW1bClv<$y(@a-%sWPQcl<#E(C)*05Tp_i$uEy0zKp2uAJ zc+7DH;J3>9VAq8suk}||pgv+Om#@Q7{$p0zsXWzRg}Kqa)u6$%yGw&IUvAOt2F+%K zqb+d5QO0c^lkx3o^4J9$Joo1JLU(+_c<*R6`WDt@)c214gGX;|4UXO#El~$Hs!^v8 z;oHAEI1&4Q0h(gXnP85zAI(Q{L;ZiVas~2jN2; z%~c)Wgl}mqSCvJk;67h{k#Shj8AH!@Yxh2jS;%@8EtM z?k6Ig_Y-kH7Wb18{x<31nvQxMMkDY(bp0nup)KZ~?L*T`__It_Z3sE*;lVkMx- z22H8zxc`^9FU38+dmOz1?Go;zVWj5W`2MDZqkh{wDv!B5_}%!&ga&om=CKdYV zus49b2uxI^sDouwLCd-o1jc$*jC=ZbUrrwE(=7k%Q&-)zTGoPaJ%RYwU)b;i^IheG zd$=bBeW$seLt#w~>mt^16t}~lpYz}sHXPElowPgYzHsuA>VU$<70gQ%D01WMF;TxYF_tX4qRWe9O`SmW~x|!Kio=}g6wpD;cmx+ z$-W;l9^jrI)M@8cs*gHVUd4SJ8*Hi7x za%OXn2A$W?fqP#tPfh@P#jG)jA`P2^W4^DjUqh@q+|6sIXCe0`!G0ywbr<#{VcB{x zc*!m6s#Uk((W$DBVc}tFANAh2LUk9aFLOxitkzAL-eLZAt zOwT+0Gy70Jbb8=VKL%qk?&D$WPQBf4f~Rzk(cZ8@p}J&P46?DR|CT6Z_hPM%q*>xo ze)O!Hhhgl!Fi^KKzI&Z8&90CA=;9wir}tpHU*b&uVXKU@?q7m?e(Rih#63m)bYK|w z4q%vL;_E$0pdWP9Ye+Ee*W=B=i1f8>b{wXMyx6u~*zok8+FZ4S^-`~~LYSwupDzQkn_mL{5N{au$B^SlG^W02Y4pegh@MaVZ(QIz3v~O*7TwrYCEDoD93di zW$o|O6?rd>SIgF6pAFRY=ikBFsN;~uZ@Qltf$!a;Z@Btm)DO_!j(su;Ljio#9_y&o z6*IUuPL2MKyIUt%)-S>uD0HQ_96VfjdMEa0aLe=9;=;CZdHm-4QKXsq2RX&v*QmY& zpF`d|?j9w*V|HA|G!Ihau8)KER2KC8MYwD~>PSHe`Y7c6jy$!dD^FEnUzF#W-gBYL zijR#@d2`X{U5$Msd~A~U_d3topJ%$Le}x*W)4+W2wwq!v@+a?V?D@g|66LaLGxRtX z3V#1-@Y8Jr+Nxdi*fw0E>wDMx{j+yogY{LPLpz6Y0rqF8io$NpJElRkU7i<3x|k-W z=NN4D1Mpf0nwNqmAFv08$hquX|GtC4f>jqm_MX9N$%0X;V_|6M*4m;*wkCL4UIcC2OL?0vJNRzkmsopV)tSSI(9u}?mw!tk`jR5pan`EB(lGj} zZzJ9v$cu8sW&N7Px`FFAiKFc*AKAY2G;v%P;`$V>V{;CzFT|cLWy92uitfoCwLeF7 zT!Qcb!iz$xta?uQ`l2DKjBBut_3wE8U@&mH68Ybmr$#>ZLFEh7L**CD@alrKpk=pX zjKw<5_RE=Hd0yJE0^}q2V?sIAdASbuVt#%Dv~xzOA1Ua(8rPl0YUJ(@nqNRWe#>8e zQ1`+&K8U`6mqjz!|2^@+@)rt2!L5&fu=oY)vFBH9FU(q1RO-MES3~w>$i50=x+^h` zn}o63M2y!aV2m~s<1+GQ`D7j_^y`Jl2j&IKA#sOxGxsRlc^83RY{D_jsNCS+j=S^{ ztXDped`4zlf%gvEF2xUX1l#z$EPWxLnYngwEZP=6`+gQbmRrheM_Zjh`&%*udr{pK z?yLS3`T!L?y$NM4iu$?nEXHeC`v>REeO&LyeW$p`6x+LJkx#PM6m|C2A@1#SVZ#yK z?!1FNU!t42E^##Xd_kRc+Y0P~wfA(ss@jBoxT>K?#jpEk#-KwKy0HK4McW~|_WWw# zo+!-QUg$%9u+@j^umb&L4f>n!sL<9Y=BmD*t3ju?pbdE!ecH3Z(AH;xA5@{!r!WrC z^&08hb;9lQ-IcF<%wSy_K&V^K$&K z0qOpG*#8-{4L=W#JKc+VhIgkWY%|)?|Nk2O730$8$IvdjeZRZ5m3{x=;J9Sp&ujMm zYy)@AHhuqWx9|UY@bX(Wuvd1+>L6{m#ZM!!jm_a_=iMUU?@pu2|~({!{(4x*(5s{yO51Lpf%j zOM4u~`F-fY{mz(2Vd`k|hGeea@_C*OPAiZ)Ztgq7>JE$xCWHF>8#>DIyvsXK6+!HW${MMpfP^;6sOtTBwE%s z*2EI=T4(Cisbu-vtre9wkSTv2Y%1g?p}uiltfAgriHQwu5>C9WIbK7_)E4Tv2}fs5On{zWh_^J!zCdX!GxP`SoLC|e zU)_vMWjWChS*?O%jXHDVPE&J@bDbmW{zP4s+CPZ}#4Q~y*cJ%8E!D=?)z`$akCN!X z5_28U>(;syykCK}z;Uc9Ze8W9j5o$xVu^Z~IklWNZT}`)aqid9g4MHii9|C#&fXA@ zfYr*?@kX~~nthw9v5**>9VPd8f{mQJ>zc6R6Qekju_8F3^HKd4YiTiX)pJ5jPZj4{ z%187B9vS=S80-yH@zuPCMh>bRK4{^vd0!v#@I^Omzoc{Y1Nje*`itDJT^u?T7`zZ0 z|GfA@`Aa`8Pwo<=*Rz6+gI_a#Jm&LH`H0*{f{zBUe)Xmtv*q; zh{;`ZYnUP`Z80(6GSj}rfnb4ZO`c(`WIPW3q6qi;E-DlLpR|@ z$)GGVc6UY+&i8<&%;#eaKpooykK{gjv9@u}Lqq=}`)fmP-aex9q6daQIPB|#A0G7C zH161Z$q4wIcjqM|BKT(+0^G!W;{BHzB6ab$+O_zqqrJ)&)vPtcHXR>Arfa5b=i#AC zweEI+y-G^QPOhJ|E0bI0(-gEKX0B>UX1?pz%BIgq63FUaw2Z8yYHDLsB0lxzTW`O% zH4&>>Wkkp8Sc~z^(~Jj;*8f|ZEB$w}8BVj;f9Kj<3i4Zn>uO@Jnn|hjo2;GXRHMCi z)?OVPN?T>-^3Sw(mZAThYh<}@%l_uMZuf!B!jEb29(XqK#cu{~f5Tk2^T28{(AQ~t znYmR;xB0;SI0OAxGT?tsKEYJ^(d|C4t_<{tGT`6Mfd5Md{KX9TyBTm42H3|;V1q{X zs~82`&(2da;0rXLRQc3>2>5X=q#vJ68E}3p!H<4d20S?_ZazMpv7yAkE7emZm-Hq- zFa06?MN7P9-GF_c(s~LG4O8DJPJ0sg$aS`Qi>TBGeEG5Aw4TG)pCq-?IE~irfYKgC z^djF_O%1loOylc*J=u&CZ6+Vm8IduQ8fmU?j$`w$rd9D;^L-TI2CmDj#Km z2g{XNuA%Q8{TFYrJa~!0x%SWAhbC-r;Ui_G(u3pOi#`^6aH-iGNAVE3g5T-FNnH3x zJ-G01H#qgQ_Zixq0YAdA6%Ntg(RbK?$l#)n;4d58Yln$u&5`giY}6Ek3m?H{jgps- z;6PG8xh~hzdu_f>A zwYcmH<#^c8i=Jc6{p02=_7Qxa!M%FE=;0%4*IxGU5&V@5d=#H&aFD;Pr|fqndY*F0 zl}se zxa>FPEhje^o}&L5!$-zZqQBskhThBPISZGzh0tQdPxy~D`YkuO@E80}gM0bkW8o8x zES@BNq_^9FW+R7kQ==C6#9H>T@j9y=wwB1LGX@v^D@}YE{|Me@@b?Y9q)X`W(4`N- zg+9yR-t;E-9fJPMUn!Tl9zKHSXW%3Ko9HR+oAe8UOM5cbRWn(hrG1!YaM54*NINgM z@G14s3!kvTncnNnHBVbCTx1b?#=@tYYo4Ut_VPJrXe3>|k}n1qJq73Zn1|Q?!!6uy z_oN*nyfb>miq5E4Ij~Gx6w!1ZP7>Y1BTwKk23MR_(Ti0`y*+GNpJT@QHy@E zrKi*v(%b2kc8|F2+j79-GsEI@)WYp{KFg|KHZI?6_sU)DsduN0jOCvCCHS2g_;-5v z)EPbxd-w?ccm_VZJ$$4+|E7i8?fFv{Znx+A3@-UDe4epzn@^90+kEW(5$%4#JN}gR z(L4SW{6)i`_P6upWrIt(m2&@zM<2o8$iPR&hxEZ2WR;VIxh8Igv>Fk65FcvMziiRl zzC4pb$Ak3lyA1cf-NG?}{yRJVxBK|Wdl)g8=~m=cKQ|ByClU9e-Eq&-4vxhw>9Soo z`F?*P?wK`%4KAlnQwZh@V9s9o3?~*g;c^;V3v6mCxq}Klw+Ed?|m1jda^` ziw%$b<+mC6ZHAKaDcdWb{QcxN8^WHTVPH<)^lu05m;N(Gex<30l+U+QUip6m%uoI_ zQ>oU}d-yS0oZ)fL#!yW_hUgF7_<8irWxE$Xw@#S95UfQ^c@6Es6CjNO(1kqpk zMG@|2|A)*&!!|=md;carK3yh*nmqD7x4wBtk-5gvSA6ZTt_RD02j)NfBu^Frfp4LC zIkej&&~vLWC5?I4)})iqM}4br`plUnC0JD8{02TgZ89i_USTSSzlC^vbz#H7J%#We z;F`zK4dK4ptnm6BDwn@OEeu5AutZ5-^7w$@_;c-S=FaLCAe z3+peq{#oyZH%zZ9E_S%in^U$pqYQ2<$GVTgBdw)}f~B+PVm*E~)(Igi@>@r!krGDy zP@r`7P^>@Wo^^%rC8$6=tX~-!!}_}Lk!Wf8kyz;{HELM2C@}2pVO(c>Sg)fh9E&xM zh_e%XTS3owVaO|>FF@Xo&)T$DpHpn#qgLkq*T6LF4gV9@P-1QEjS6eK)ZTWiBgRYd zj=ACB`GR}Yo`QP-y;Dek!*5rC!ulk&_c5&Nri@($ z;XZuRuebo;F8dVh`1p-j#{?Z7!zp2c`xiJ_Zuq%YkIMEX%l!(z?wmAH_)*@ zh`lD>sn!cF*j$wB0oV}}A8~7Y3bBSgcg-ZoLnBcYN4}M-p0Z7-Gy05grO{@|HUH3W zg4QpzwJ zZ9x(0W@MjQ^F6)vAhn)P_Qm6#pOjUIa?fu%I?JouVrVX%-Og5pZ{abF-(yr}T_y9F zX_U2z!iRK1!}WBeJGdF&14Vgw8|#lZ=T(%wjl2!uTWu`Aw0Qu(LfEAI*Zn2*i@~!^ z)wixwGu!_Z>z3gc<2djsn5Ms7w({4) z270o5QvUWoRo$B_xbENmHXgCAh399te+B%p{(2$&tEiXu6M}sX&O)6BcJKqNg`TLY zsCy836G5J1feG>?y#C(7<+==s?sKs>>aNjPyNEIoKzUF|-)NKvJpYw2KI1U0&~s}5 zX)Poj^1mH&3*fU6gYOXa4PXr(^^1;HGdF#J@1?@;i+0|e7c48pr++tnpvpRs$Fwu^ z1DN*L)aeW!THiH3)o!By+7?525!$iCXcy_n^kvvDf_Cl@()ks%pTu5Ao5%Xz1D_1G zrxK^Af9|Xbw2P$Q1fMdti&4rm?PBkxz;0Bdwg&_2U%2%A>>7ksBaA#xz0t4f16Fxx zMObT5uo&y^bh&u@3N>>xY!gN~=$)fx#;{I)6VlmpxUw&rr}nju$CT#L*0%P+f%Wuj zQSk55^suFZ{lZGE--P%M?h8=Y+sm-5CQEHCLS8vI2T`{roH(%p*n9wnx_vMBY(ied z@GVvc`m~Qn83la|`BjAW^f=0FIo4Q)@nb#;UXAvZykpQIigN(GG=Jz&fb!Cg@)?A# zMJN*v)@}w+E(0hR3VBL8yI(Crxu_s5bR28)Seg2!>mKV8%4PsQQ=3e=puM<`*|u|% zwitB>Yh`1gB^_mY>nqDWw3|FYd#~5Owi5%NKz4Zjv9tX%17pKwJ8@Ra!(~z4(;l#Ep~)BI zN#36$u9UALlqZGq;-G9rP^L6)>V{+04b}(H>GB`^4eErnTY-mESv&27^w3r>LWhlm z;p2jKL)XXraG7)5T|*uQovrT*(&o7S9UJGMJYo!L*Yn=q{{74!=99FM0n{({2eBdW z*MjX>7Fa%ZfY-qXA@_OL#_h=8PXp6Bz;^0qt_~cZ**Yu$O*QONgfTz`t{vEvdBJw3 z3+wN%$351&7oQ}rii)yuPpYgP!T3Qnj9Z4XH)<}*-emoa-$3yW$lj0kstIwJ<_9W* zWz^?t@<5&{j8V$xhszFS7{{=T22q|j{{p@XOgr+3V+xEYs@S)La#ac1jFD(N(3cc$ zJqA0l-H<$C8#JIVfn2VA-}$A0+drZ&%!a=EKOa~^ec^XoOr2?i@O`QNk~HBvdGDr^ z{#i@|%YM1hD+(W_Fls=|IbvKu46zmFDtO5H_)C}1AA>mnvS5a48P1ga`pWh^tH;qF6UY|j3w$(-W<35 zFM*D3eM34t_FKZfSn~kwVDyWO!}?WGccd)x49YF~O@)2ZKNb)02W?6ZvmW!dB zNLv#^y51>3yMTQ8*@gZwmKNyx5A0vdv!{vMhx1*qJjfuUx6?qt(H(jVNb{ zyMkr06~VHr(KdI1pYZ${c(z+I{sZ?h@GU?cpEL zr|g?lI=gdx>g*Vf{HiPl1?RZ^oJo~s7QtT+GRSK` z=`I^c7q!ws|B}Qd18Kq*4gJ-l$m{48@Y_WiH;u`j6{DX_r5ag?b}ELv$v;w5N_|z9 z`cV}6M}uk~^EWUY_HW0&<>Ht2-^5c4HU zTcE6MLV4-DOyxOh{PjD26<9+*$uRnw9UlbN6k^;TgI7BfE5 zxY^Fvb~j%any}9CZ7)!de3WOj(@V8n#KpS@9k+9Qb27Zg3NJ%=0{yVJTsT%aokkkJ zGGWnNMH;^{VbO4G$8>a#uS@FEW$AJW!kITZPvECmXvSQ$@n0egdFR`vRHIz!IN&95 zSoUHlKML&&^E_tS9hND!5rqaU&I90}Rv&$1}-zGE<(7VU5G-a`mrxasE^FW89xq@2NK-egiV`^auR+XZ`Xo57>@= z{HesZHuO6wT$^L%B-MPCYMQ3%ZcsG~RBKeN-Jve}mWusC)n5^)eK^pvBanUaT$fT! zLsZKxf$X<&9cae&CY62e^|#)9yGsQTl=vHkpr=&`*Rg8?*^NU~Q&^u8bHU&QNuO3( zCr>>2-pS){zjfmD$#YMxx>Pk!R<(20x=Ph_tBNmEu{%{`Ol6%0*|*NUb>gizo>oK7ymt23D<_{;*{{F$IyeqJd+b$+&G`y8MH+tc?Auz*MQ7c> z5$DgHe3Q`IPpgYhoH%&~l(}!cc>>W#o;&mZ{mozhO_$268KTy1QQ0R>B2jpwkbQ2> z5OwX%m}D9C_LC>xdh^`bx88X2?8#rgbMozTPo6pn*=NBm|J5f~4^fTzD*LThUVruV zldnAa_UoGO=(pZH`Q(2cJ9pyL)9RA=5Y+&VZ=L|ro3A~s#vFU|wReua2JvH$z4l+n zo>rHhICWBlJgqJ}cj~RPum9?pYpcsozYfB2C*M5xWCQFw9AB_ojUk(#ao=3rpAOgRDsN(lj`9+R}+up zBM=SstLt5VD{{FFUUf|?oYnZOLCg9ar9Ms9tGe12c!kAQ;V}HeE3nNvx-4fxaC!DJ$)m%jo zN3l7Z@CCO|XrByZ=eAQfsw$<@OT~n=dttDFXaYL!F`;mzGYnvPDYqWRb z%?qk>ly$%Owq*d!Vd1we=HBep06NUUtjE#ful-dUKlEKH-sN<)4YnTWZJ{ zABkOth>>}>eR}bt1yu`d4(s6DS<8%QMUGmIiCiz;(iUl5o$~c-g-@ij4ih}|!jn&B zRL{Dec>?Fom5DlM_1e~iQyq8cQRt@g*4q~?a=6YKew8a$#9NFjr)q7kZ)l*`3qE)0W^%~$UjEAF+f70ULmWq#{T>P|7IG5nZV;X)(^p#SN^IV?%?npVm z5u(4z@pAu}c_hOKQ4Sh3nG4)-K3VzpP zdsb)YrgX7L%!}neeo3qld_Dc%O<$+s$+ZGJCgUe_sEhExZOJL8j8&9j(v^?k7ft+Z zTqloD=4cuf=^9yHhY>y140%oL1*Y0QAQF_+ zQr9&2w@0e$8)Gd{rX}7GGaA_}b!+F((ge9ItvF~RHB4ehSWIwHhCRV_Kx~4OiI68 zoCMtd&WY}CfngHem;U!PeX9J|;hx85@blyUdEoZZ@Rw( z_7;AAeAwUn;hB6s`O?FWei86It9**ZTY--Zrpnuoaj%c$q9;0WTHP$a{lZSNp=qUR z@bt5ZriP}w<1N}T)4!87PL;mBtbn>}MTer@F4KEY_N_ve-l6(*m9a!qy{7i|lxehX zA4sN1Oy*Coe3(lmBB$I~)0i9Q&yUx&iZ!+Q?=jgh3i(llYscK*XU?NN_!fg-4t%n? z=ILQ`Eqo;CadRPj1mA5gynLj@5-%2FoY@ZWAb&?+xqsxE{N z;I=*-7t68OTu6Gu=HBK{dkTK13HPRVqJ`VOMGY2yow?@e6>}|e+s*wO<}7v={EWf9 za`gZRVZuk!gEeyc5I%z2J}-8@mm2=$WA|3J{cXI;qNjZh7&3k}d@~JZvAvA_4}teG=_-*}f;FZ!`3^ z?}?2c#X=+=-u#j^+@jAzhR^$kUhFKm?L%klGcC*IFMJ&LHo1?#@Dcn5L+{mRvBACe zZ?ov_a&n(X?op%v{T3hELGW!BA6x&2EIzDX(!M-w@v-p(7CreNz>i0dMQ`J>*4dk0 zWhx1AyS^MTH)79T%^kk&1{Zq@{-VXlPFI_Gq!B)ju}{0fg^%F(8QiPq`yM`}hEJC9 zXT(2?Y#Qr8eGzqd=F%B;UoCC416Yg_$)T|pXT8scu596VGkd%gM7C`^bvef z20jxF0n;^3h;f#(M?N+lH8ix(EQ|he3!iP_;#)0tTO4!)516y)Dflx6_uBsl1{Xf3 z%>9cVK7t?3zy}X~`ta%>^|S-ohOW-j4hY_0aIc=yzKK0$Y;=#shxQb_(<8UX=xw)G zMW7eFD}&spEL_GOOsL&nl@Tz;Ll~?bJWA9)bQ!`@Dco#41CUb_;eXQ=RJG`e?J4C zEKfT;*_5~8p7vbu+zjpcI1isn!)Kz0kKmIt@G0@|8EevYgNKjc;S7AFt)OqINxIJW zMf$JnbDC|gd6Mxb=}i-*L!}=kKHQ@Jfw?B0dP@Kh_dJN_x|jNIzJ=RwvF2O2Jj*b` zLl!>P;`2=lx8KIdc!Y9|JChablVARC_nF=2F^y?nlIRp%5ep{~_dnIdgta0CV=ruK?~R|HzeY1Y163c;#0E^OJwTl%qPAP4cf-{vRU5 zPyX_&+$d2Klj)~yul&ux{Ny`9H)4rKm89F{im7u z)Sqt+z54G5=BNL8BVXbhHd>Zk^ZWvSe(|L}9c%JI;&}DP$`xPzPZ|B~{AWAl)t}|e zPkz`4lJ}RH1&&E{cK-p4Wj|1W#*0$){i<_)iNPJj>)Aqj|=$_b)ksu++=!!>vXJIYp4C*B3{b8wNtIO zl2KmX|9`FLIcJ@ny}h*ke*I>C-_Gx3?fqZRdY)%p_S$=|^{n;qokP=W|33~`polE% zsUNX{`Hz77z-6fJOgWJParDW{O%mr*@e9i5XJ?rF15*%zL-%HKSFWt|oS`*?!hCr1 zw6*6aalGG}=gJwCm8APHYo7bOx=dN&Da@GIme_+!yFT>T4gUZaF3t~xT~loRC>iVD zCj%S98qoa)w%#Q;zvWwXgGjgI3&pAaM@@7hZ$3FJW!v%di8doW9u6 z*>(*U?8Vh49QKjVkhUq2rQP=meVQCbe$2e*zY0BGgjIIMw{qid9v)vPUI{=NxQ=lJQAUTO8(h<#@~NhSyv_kcRy?{4kWq1)DGqYueZrAmfWg@N1Qb^`hPf(MI~WAfHXe zW-y+F4fti_`j>yJaIp39!oikPO#jC6SpUX7rmA^btiNdj{P2K3{Zw%+&Aspq)dK7b zSWigZ?rSON)pDWSL_G7%eXnicE5VNIC%~5#+9cPn@;V)NYqk%KH~X{LaEGNPU~K~Q zJS?vs z_SZm$ft@pbT~N0b9aq4HI`hn5fTl+70qQ;C^QoJ0-|Tz!<zpAN{s4Rq6|U7$9H=QXWcxw_@N6^)%M=$E4i ztcVPGb+H%fS8_Y`b10)_j7mgLH| zBz!d_TdmWG7IGdEPgfZ&D?4dIMgmOfwqBR)T-V;dwxbJY|fN7cZ!7SX5oVU}=5B(kmA)zI;jj zg88|m$?8v6Us6vC*ZNC7x#03E>m@3=^iP)7FZg7`lIqLmU;fF4i!NETU~zSQ-CWqe zcG5mL=x-t`|1*m&se!fZWtTP7TzSz&3zi5!*mgSm%vatUpF%ZeMl_4PxRQX($;i=_rFr zXTqr!GsFZ^Y&SzUJ+H(%!D+v*I|%!2@c$(nNmkMy!xqvFCFtGcnu`7pvxRi@IU6yh z9fy;cXFDmMXf`^`M$+*a6JbLq102d+!o-jf3ui~*`%}>S5$|xY)yj=r*n1LK1Ag}F zNO)?1M`S2|Qw08S1pZtE{^JPzZQ#Y(FHgDmft8>S3Dfh;2>kpA{L%;IUXF0Py&mOJ8t}AK4 z8xg$Fw6?;R0M?1DZL<=>4dQ^dwvncxYkhmGC2U{a2-7)vP_;I8tX`jeTv=BNR5ys==2yrHwTi(ESFvaMVi zQZ+1Zakl?(!vGC612!s~%T5C=+te1(=7OuY8XDXAuCVetyi;D?+DQ?uZP$^uc}0h@ zriZu_+`;?7?{)ZyNIjv(m#B&y_x#zg@QTn9i?)dxk6@qiFlr|`Ow8#l@ z8Q!zVP7hb!gnsJbC(Aj5BOdP0QN0y`zw6=NP*8S_3m3Bce5T-<2le#z(R1Q{-<`D7 z#&F=mpBtMZxR$fh={t~?r{Y>}l>t7L!Y5dse4pZ>{8RSI7!4H{IJ-7UZ~ z^?6Eg<-<7-9#6XT{;YM{Pos&jF!J1^6hwNN}ZpU9Q!}N#!c8 zbE=f`)V4(V zC|)1IXKR4Z{gR)X1Xn(a?}*^@pojbUeJ;SiUHGf*tnyb}_ibmn$@H$x*IOQczdc0R z&WpfhiBdwlS z1^9PM{k8=7EAHFC`TV;AeDprt5a6TuR>6bq`6dtd%g48wc=!l8XVC89VutF){_dxIS7X)WzEB;nlnaLZmuk%7WjG@y z%{z;yvS;}x!SuXG_)h%0rk{?q!iXgqIv)-vJ!Z4+kCnNjg!Z4*-7gDGW|Ng*%e%<)9x2V*m)w-9^Aao%y*Sk5aN z%qzzBzTF((JGd&b_nkA$;5Rl*TzaI|4F1iAu}cdupZUOs!len!Gk^Wv?q}ntqz3oB z+x~3vnAG6jcUL?+ZbEAC{&&;Qo_Km{@D^OZe6bnaf$LviY6iaoJ}+Hv26uwb8%xdL zZQyhG(`N8i@cGrBn!($_XH3Rab%O4Mt){92bfdSKs%t?vs>f8V1zph&Q?&+sM`G{K z)!SZ~x>x3z!An3l>?TunDbl}kVolXTq<<$-Q&op_r#@h+E<(C@Ce>734Elnn zuqV~!HC3l#pYwu4rs|zjYpPzpw5DoUpQ$=^zo~jUIX1Dh-;{+I(fiUO?=W+opjJtO?cW=o$?&wU&nsk zqhnPseW|7@kwmy1;S_{_j&Lf%EeOv=xC{FHDb6c!eh1{eg>*AxRWEziw;N=&S(xFA+Ft}s@0;@DW#2@_*gqfd)fjjW4R6})Sz#+1ge&v>kAR4P_g zG(T1qUlgl4{I4}t@ifBkA#6eT9fT_oK7nvG!k-~*NBEPPs`0R^z#fDBC55T}U&02V zcyy|N+}KqAYuKMO-W99*Rie23@Q*;>4f8RSmle zayLMyWU3#}_R^8v%?FMoPAGphabo!|6Qjz1l^9+AT4F@`lncJJovM_W|3A-+egWieGJ^>5Ui0w>JZ8#`VbV)&s-3TMo>JUJ2-QPHfo1 zb7BSfB^I9Z`M)T+Bx(Ae$DA&8`$ZyN{_{j(`B_Lit?RBO--V2W;IZ(8)RznSD>J=M zg8xE; z#6}fe2HpPM6c!EdUVZ>&zHqAFP0()@em6n4Rifue z(eb;n_(JM9tb6r=g6>rZKDnsB<6P*tYW0?qoQ|UxE{qi}q<(8+C)o147rM<$#oo9t zRy1k~^ke(kYDSD&P`J57%ZueVX+wPPRx=)YmySYN_CEwa42c5M|4giSR7s)fFN}>F zRXiHuSkpi0#@OCTH^%WxU=RBg`pRnbl{M%qYtdJx2GOTxZM|MPF;lE|UbO4NH_*OV zrn+i!Y3j=;yK!;)B`7t;wdnI=nOIdd_SP*!-1x%GGY`dM-`jY)dE=k4A7e6u{mUnt zAH-mfkcne|Ti7CO+FXsjHnC5A5_`@=U-HR34&Mvp3x2%bv>7}{nVCuO-26H09geh& zXB=r5|JX>0zb-t!x=`Xf!s8zsF7a*Q@zuj5{+jUk#}X31JUqS{J{_$7P2usou{Dvk zTk-7HXx~FyGvaDzrZzt;x7Tnl``3p8*Uts64+gFu30yxIxV{(HtTXPz8mu$QwR@CL zFvT~c{IxDw@2vALAgyAb$GQ5)pwEQ2o7v`Kdw-jV?_*m!3i}}1w48+Yve}r2@yb;C zv-tR5oP)k_EAsh7eEj!fiSgUFg7=&8g70OZ(?(PB3$}yKo||u{ehY`kGJewfDxrO2UYm!`zk!bL z*X~~|b?trv^6{*+`<2Dv?S3=#+=O;tgLYqoc3)%L{p9U6XxA~cX#GgHX- zCTaJKXB=r5-!w+zrQHYP50933Y4^eSCfrw+zqI>c{9)WzHeT9&Fun=*m5rBnAB;bY z`^v^kyAQ@UVH*;y6VzK(U))q>iVzM*I2>US!Z^Y)2v0{?jPMkM6A(^7cnZQ|gr_5% zhHx^%a)f6gJPTnt!pR7yA^Zfw83^YhoQ-fc!np`%Ap8Wv%MjKeT!`=@gcl)Ph_D9X zW!N`3YpeEzZ6~TX>+(C^y~FFj4_wn$%ctiay8bn7t^Dilf$NR9{$1`xwnOewtM}qE zoFBVk|K79HTbG=5?JY~RU*F#x>wR+99ZUY{um5sM;uCi+;eEOb&xl=kM(n~fV%LoY z_zko7?);M;>KMfP^w*9&(DBv5f9O~+d{0O1=MHq-+id!Oi~Ho!1~WK_`}%8tYWm;C zJ^s}O(_er-|GulaM|$R&dsdnLiMU75=MA~nd5`mcFG=L?^D^A~yw7>R2k-Sw-o1Xo z``qhVzI|(}s}7-^^{qmPcGh<_LbS8KW`t;GeH#&?o%P*-5bdn*dW2|aeVqu=&icND z5bdmQJ3_RxzCTBZcGkBAA=+8rE`(@jeRm*4JL|g*A=+8r%?Q!X`u-Ln+F9S%5u%;- zeGMVnS>HVf(asJfPRiOavR@j+^Z3{ePuVtSKA@cu>N`7+9{b!9Q_y{S?9|bdtns0K zb6zzJMAc&kVwc=JamPuwOt^LYZKXR)zEXVqxI4xsE{-{~pcj5r{ck_6{z)}HS}z1S z$4Pk9#qm$}uEQRGHQZC~mU#Trc{WKkML(o*kysX)nMksOiE%u@f7RJN_w06ix5anH zxc6RDRIa@y+?0=A}q1AE~qju=%`e;@u}%1F8u-#((mb(pyVz zE8aQoD`Vr!vI2kXlx1QZAI8SXZrFye;OPyWU9IiDL6ZgB8(W58Fp3*W*wNa#ZgrPW zyR@!)`X9hT$rZ;R!$!#sp%l0>_5P2>xxbH_ZI2S4$Qw;{pyR_vJM>88c|UdWjvilV zAx9$5E2>ZLQU#NQ*)BOs8DI${2-}y zg5zpTaSndP@mx9Bdk+|w&4kgEI77WO8=^Hl@n8eAr;p z=EGjwRu6#Y8y1ijZ<{%}W%uXc*uOXAV|0#@HVC=gqfe3hob*0^Zv+kletQJzpNznt zi@;xw!2P*LU!Sq;yKn^aHPyp?`U@lQ7RSc&;e%a|o8%;zue68z<=GXX|G5!zqx8|a z&7fR=uF}uf>InY+9HviyQw06}9`5IBz{7n$x-Udf&nLa|@yqiy5BK@J>*1wx&LCa@|Etd(or~$AtCjVvWvL8Uae+2bk zjL0zg6(ufJg(RkYvJA?<23VN<9wF5JU)T)Ee=8!w z3Iy}NAwqseZq7PM$NZCJQ2tH8n13xNoZ91DdGwy8fP|#wq2Vpwxs8y2ONKtWZH%T< z+I=`7Cf%08W|^c<1rn(KN_Zbm!pi@kbfhq;%vrUA}Jq=JX9GAKv`#&h(?bV)}e0slivD0T&&6@Ec*Tp_vnH4Yh zdCE+{%2%KR5gz^S8Rl@kwW-OLcR2CHKunTJVJ3Yz9^h~5F$Esv3%`==3U<&36XgZ*uMWZ8+EeIf$Bs6MZ$_&N&S#zO@=m_0 zH}n0X=$s0v%R^YNok3f(bW%QGz@;c;-5Ww2x+@Fn;-mE>JW8Wj=pBri;2_roq@bt-jHz* zcq4y1Zay-Bg>)ex5sBDLCbtU0le=^ zseX*v%`~yIPN!a}UmTxF-`ih99NY3N(6TJp7wkg2He4f(zV@4Z6k%Mg^RVfC81WBd zj{%lVqwRAiU{1odW9I*6q`MIOVysuMy*>^fM|ux{e|ZvfK%}95WvG8`>yLo0{~gzd zXdKs%Yy5ukp`>w&e?xHcV)@Zu(`M+$ewBSH`%(6(>?bcmzG@(s{irgC|hR6 zCDHcS2B}j9{e9nPv;Usjf?nob%ctq7Pan7k^?uLCT-|eRdl}^1gStPAa4UXHZ_5q$ z=N{A})2D!Iey@@IE5`PxWpg#+2I8Ba!J6xG?yvu+dYM~L;IPoa;$ z4Ehv~MH9==Hz3lpt#b`N<+7dEqV2Gavwc6j*?e=;yT|LXr^QLw(_-)~NsDdpw2rzGOEJT+d^os76+H$1TSCETlgZ#i;-IaY_hDUNdE zbG|;7`r^K6Sr#+t#}siuE^X>2d~cYee4J|z8182>o3E2fye^GjDM_PU$Sr2L^F6zrRiUO8s)k+eF%J*&zF&} z1j@1r^AoNg#JdH`q}8O>w_Y=)ySXq`1zU|O=CcNN3#4JXKD;B5j^)F=5DUx0Zp6{I zHTzN0Zj$FbOrQ4i{KKS=p*+e^7L!M(_Qpq>y=NAt2B%cOU+aog)v!V{SWscs$5vo2 z0x}=MeF5h>y_EaVaP*D17a9>l&mN4E^zhkn8rmQ1WP9I^n_hfdmNwxz!sih4qR*Fm z3e5gy;Owh-@1tEq=kfdWIrAd!kIC4Vg7*ubX%U1 z?5i^Cr+9W#$2i`NS)Q9wj;L!qk3M_!&JkuDLZ7I-86- zDntDs?fMw%h&cUg<0Hl9d-8C+`{3ES2RhyRQjES#pP7hs55YcyeaK_>^~+PD(F3f-$N7eJp`Zi|7@p^{O^<}t)BcwV!y)g zq&G2tm|51`-H30cEm5H+SzSUeAC=L0g(3Yt~8ooQJ zkLtD&{>-U6X~K9|x!yZ^7>zHd@6F>6+ce4CGZ$%!ccNXSQ09|R<}vu5-hbTmrhYwQ zb{c+)C+&wnTlhwGW#GQ&v<#AOzy=9rkizqC&+!!cO}>x2c8q6I-nS0ZSlP&DnY2x% z_sXewowQ%}DN6TV`NDJ7wh8i1qO6!k>ks{8c_aAM!UmA>oJ&p#4fVNIWNA8Ls+001 z5Bh9noB^Ln=fdAT@*AY{X^4myh`CQ=2hiPWxT6I-g>dd%rB5o;8 zO3dlz&EtP&GG-yJut%8nTj$*AiC4NJ;%#e_)wQ(?7T4P=dwu1SONz|&is_7Yi)~$6 zxJPWk#LTMJxyh@suSyeK%GK4^FHT~f2CnNmTXjnln=ZREiM?`s7hk*td#*S^b`ftR z-z(d%?tr^5b+agYrI6J+7el>kv)hc&ccAF+@m<;0)c^-!opY_K>Ksz`?g*s=)9m&i zt51S4bk%YtA>POAwmB#^&bM_AbatUf%&{iOK6a zvwN{%cNXjbv?jZs4PvkFTM{>sra737ltmd*~!v zJ37{8D=4@B4i?|HxLWGKjfu)?!Ny0~1`^y?2o6G7ZoFa7pFVB+30feF;ret<<6P{N zbY62KD)oe-S_bFg=Aw^CKf-3LZf$25cfe5wa;MJCZAAnQ**winO8f~$OIw@I`*ds5 zQoCKzd6%}XpPM8@<#Tz*O6(IgH_3f{=AM6kRzQ9-)N*zY9+xsdeu3_HfSaD&ov%#f z`?}VywRV4~GdmrgpYBu6qbM@gA_|?^Ib&Akg6fN^XPvj8YWmFcX3m*keO}e9+UoOa zXI0l!%&)DSRWlu3q}`GM8&5$qY%_#y31sJ^arGsa!7C}c(yos6Xck3g!ICAHFTr)Abq#87MzkP^aQi(eJ0lfZk(^Oc zk%R=7&XVSBRFrG4SGTscc3@A3WUh&FD=Bv$XZbol^ohh)$~)gVK2`BcZMX6M8HOgj zFFWCd6i!>g%JsupIU)B!W0&0oi+f*v^78o$P%cXsEcq1n>RPg3@uEMGl-$NkDH?db z=#mAO)i>xSTnm=fFSu+eT-{ot1-1HkGZE<)FSu;Jbx(_Jx-OZIUA`J>>n>R|AHqJM zUDa4uy~ekx;{2b^r98-Z&!?xei@G(I&Uf0$t(tVtC2Lc)O!yw<1YPx*p7>pp?=FKA z(VCl+J0=aQn=tH>@wK;|w)4~lx14_KN4|2(?I+(c@y?T)iiTe@yiWFSa)w$z{Ylo` z3ZHJyM;ci#!%H@8pyGE;z58q!Y*i1dJFWIB$=fH@-h9@MGZ)-4<<>K9o4m8^j??e_ zNc?3nrOI-I46)(5(rpd(qZg`w{BPAi`Dry`taDbg8thNQOAn8BeAGi$>aN1OM=%Sw z6x^DiUDw6=CR#V<7s+M$mlx$xybWbV{NZ*$N z8=g#`R`~}p88fWXKZebiyZzZ{haO@3TDhsxpap|Vr>nxvK`P+UESX%@==4wLuZ;QYmh`=9>z`qlL|7!&Pd<6dgMBx8B z0)Ha{KN^8^Fj${KAjuvT5%|Y|7sqq$);B?8?{h<+yf)KeOTx-#(z%e)4}<` z%-FE`*<-l}J!QM?zCPgoV)Uc!InB2FY^`ZG>P3`$Y2gw9+;H2E;H=~A{O!H+ zvV^_K)^)TtSbv?Ja9)ia%6xV3W!2ENa!u>nbubZa?c#H9ZF^T9&3ipPeO_*NN%x^- z)oYqPv!S((9>-yq-GLWV(}^9z+Paq8ZNXrI$|A!@Y>1app#G+6);^Wg@(K`mJa@D< zU*|>z@Lazd`=YH~y?QyeMni&5xFT(CY`5Oet@qJ}wzUNFa+p&9ySR~xE4n9|S zD1XIoasQe;+i=U)Y2A>2l8Ch@7iFS}v~(uKFncmf++wNzNIl zt!R+HzM~UQdi3Ywnup45cb9fTo2M#Q@k*g5pE99kp!-|}<)%IQq(|Q_xXL{!aovKe zT*di(;t`a)HNZ#9QEkSRkK!DBRz7|`-WlN2iVZ;G_7H zf-_$}pXWT>ZznGcuH~ln@tWYOr{b@Be0=`zdboez72tWsL;34|V50?B{)+py?LPl0 zLeG5p{Lc;WKPr064DeT6_uC4V&wP)+Up~t`yv$|A{!a(wJ}B3#CDeQ=-tF=6^OXtk z$%u??0X~ZJ{eVYM{~ZB7QyrPPGr&jjz6d`1J=`ycM?8G8@MiE+5BK|xMbiIK&oeyw zdcn0lESB`k0=SmTRf21IDt%V~S9;xtD_B0K$)^T!zaB62aKBz?aLI%8Q{1Wj@9#^+ zZxua~!`xYre}&+h-=`%(rQn(`#V_>u`1;g&xNk>XAK-sT%2RFCmA~RG9v`27dw>t- zqU_NvxbjhaYXqO0f_y}u9YH>Vt8IL+zU~e187unSAK;_-1A+(n_`Vj;ma=D{z7|RE zKW9_&=}+9R_r-#1JyuBjTPC=ckK!vlK7Ki8JY4TZ>eCb8zgYP14DeU{PLGez|K0$f z6;jR*1o$X^AcD`+0Y2@b&kF%QiXV#LbHBX&X}L`meI68C%T4hEf(PqyAi(EoX%7bj zd=!5!g3qAZAC4=)r^foaavM|3w}?*~9AvS3Wzn+&p?eUppgk?dMd_KH+nJ zfWPAY`)p$?|$dv2R)L4YdLpIIqUm^=1cK&JwATEDgu0V3LpI*R6dGd7{O>2-k3niWa%b!*jDW zZqWv#NS~V>F(xVZDe>@GLt*$K1CG&VMcN%pgNDtnfH5=_s& zu@JxCH9enIehM&I9vN6V!hfurT>=3E{GU zz`&)sJwpEL@)4l#l`KED^Pv1^BIGZUMy}tjAhSnM{=WbX%l{F1nb7;6@_9c6<^LL3 zSp7XR77;ika2NO=l+X7CruW}nNc^-Utd!?FF&-+PX?UC==_}l2_J5%?u(Ps=JJEC+ zo-64CWM-N+&_INyQ@C2v2itFjq}TTnrC0s+`a+}+EC2RNN0AmnmOuMxO|R+^3*P%o zazHx!O9KiAE<@{%=?i7>S>JQU1EUdlP(IsanEZ4S5jga@?XFy1>p8>oFQ`oV$NQ~C zublPa_d!0W4-v>qQ7HZw+`ec%)6iFOdRldV-^8hN(o1UAn}UIVBVFIm z&3e*Nj;>)QU3%oy*|cY8+SC-R8^RjGYS`QFzQ=$c*E_+7@u#s)6>B;kJ>Lu_M;)Eh zf^=KWsm1qV4^gg3+g%&$WqPhF=o@QI<#sULr2AvnCUH&qnm^K|k*@))J?5II-N>8z zdPQTKwH5hlM4nnf^Z1Ran<+P8wk`QW`)HfLLzC#2wiIjAGE2Dbg8W`Y$TgD0v+G~r zXZF|)-?wX5D1&jNS6hSns17N9}!d<7oU&u=SOhh_%dTqx`U5V)sjC{q84Xy>aYg+<>)*sqv=1VJg-z zV|`2<>*UIkSWCwr)_6_E8ZYX`ye5Bhd^YuqQ@`S=bC}PRtaag98RWRXY&6TjtuYuF zZ)QCX8m?{HY|Fsm%x^VtEhF+Q0M8V7KDu$_-YtpDGvxay_Qrl2YjN-WI@Z@>4Rqfb zvGt8urR;j9r_?ehc>eso1sXgxopTXJFl?#nEOm|8X2c9d7-HLHjCWy9Ezj&k{$zcul{* z##{5G^_^FzX!qFfu>3Ev7DMj`)-(P3`gQI2V@)7yP@Cq$GV?}fiG{ai_7k*@lpB|k6|5Ty!@UyX7E1~ z1^eE?`ryIDaI8Ncv2TB;)0=%c_Cejh8+E(wbhC8Va5Md$IjKRe(=Hsh3EQD%iYILt zwl}ue^go6&%U{b~fc4zN@f(3(A$}wAE8070nHelRg8iDYzV#mX8n<;i!pv&6>kUh6 z-^ud1PWr|))Nt-S(vtAH< zlckqE8nBPXD_C3U)@H*GH|pRe$bA`pzFWCoA8FY}e`)XG{J!4av&gTu_jf+ZwUTJ( zC@1<9=XyTw5yCb-hDdNMGIu{ZIozA11Z$&f zEPp=@c$PAa-!8dt#PKK0502ds+k31Q>m0F1!u@BY`i~^APxnbqAH2Nme-mXCt4s~< z#vTQ+cT-g*m1eNaOqvmU7wbi9%@5wR`$Jdn1uwflH)OrHkx-E_w4aA*JXUkSIkGMd zsW_qNO4u%+*9fy@tn|n;qB^0-u8#0AwR*}LAI*gi<`ygo%Pq~JzeQpz+m^4*Ta%z` zg*3tP#x*NfV|h_-jSEsHS760SvaNAVt6S`nUE$*UlwRB3+Ll`xkz4D)wK-e{UkNYc)_!g|tk857%>pjGNj4!))Hg8+L@@m-7VI>e$h3y!b`*eZ& znVaOoELxbaR;`QPo4#cwEZD4n@wTkuzsH)04bV^D>3cZPQ9b5R?5@-9J{1cBs&77J z$H^DpHsO|ux1JQgTowiVNS7GIuMc{lz7jsF^ITFdl*Ir)a*GeDM_m!5u=8^}A(qEj ze#}&lX}@dC-6v4|ZG}5WTy*p39iwh3x^?7NhTlHyj)Hi7(NAiB_^{X~{(xWy2%3<7X1mTzDYM;;6@Qz;KOKM%f~KyF3#T?Kb1sz-k$S$%W-lcOh9 zRC7z*YS?annEhqFH4MJ(q!=S+Z_B*31kr>akc^g*t!*u>+`HDTK7bMBfBCfq{PrCB zfoFjGzRzucioD(#L4QvK z{tprOtCoN6eqnpEhwI$V%Py44SUp$h@HcnxdIAjn+Z2-#g7b`i2$ z?HZKAwQ_XG&6Tg}%$o((=$25oHn=69&V9Gd?gz4~&nwWt<1G95vCYBtt8VVrp9|69 zFy2o-&Sx|@of$sqNl#UP*09m>hXe{5O;fuJK$vxch3k1yd}8m(}#3C-gQA%AH|Kt2g_}u zhfkEW3^?Y?gY+l6Q~RI&5)a~h*66Xp!~ODC`KqUu&;3FlEVl zZH7AOTr&0a=O!1)AUJW~2FRZS_HAdoJbFLB`#n6Vg@Ev&hnIQy5fAt4_bm_i>(`(A zWV_8s{{6X6ANS`z{c@|5fp6w_vZv2Yf@{5`h5ru0wO$n8>GART-|yjPc>E6vuKW*4 z+|z<9f5o5k`1t&NpS@E&{@9<(9?X}ItBnqEzrK7Mnln89K3I<_0saRh;@kj##b%WS zem}tXTOQPNiaWLc?~T9@3ajgj zdtUhbwNGHarh5Dp589^ODKx}Kc=R0PM>Ngvnna4OH_<`IH@$&;E<@XW-`_l|raCe;TLhnTE&T9(3G(|vkzx-DLn1P{iiA@^TF(+K{%Ve65GZt0S-bJCC#uR}FsFYh#X%{(}{lKSKN z2WjY?`Oo9~)7ZP2wjq5$&y;=gEo`*{7oQ10nN<&sC=QS8<1$)}ISChXnX zFw4!yG)_6tCJ?V6N@DCSKLJJYIDWpZJZ) z6ZY}E_RvYY_}IOm5qaxFzBFO-kg0k6%c!2hN>{elMU&EEKUyvmG${l&YnYh$N? z56ZsGe5AMxbzb%n%&TH9l4Y|E>34i~;?hGN&mFKqv318hP8gcUl$W<|(ws7sChgIz z1r5t(Gh|ZlCde(#l-l;OLgH%txB(Z(Ju#WC$&c%Eai2llTPIb{*>QT^vq_0(eyI0S zNw?$l_Gc-t)RgWU01e|vb7?ldI~#w_&yd!y zvrX79b^v*y{-+}DEu3=?`QKvSPygO|4DzGyo#dFKb9R3$)xQq+$~?|pzjD0354IJP z4wh9mp{-YA-{9(3j_?23WOMDSnEy{>UZeMd{=Sc8`nl(E8RVOv z9iR0P=JVI+N8noo&(iuP-oq>(@BZff$9ZkuM_Z7t4EHz6Z-=zI;xzVse?|5VHz?~e zl@NlR*uk<#+UPiC+98Uog^mx8{5V~;Ov*k$Ku$} zm3*{+89;mneH#0OvNuke^W2Y*&m0N4%p+|`8VXX^zWDs{`hQm4y*z_|@q>b6@85Ej z%d+Mk&3i?EUnlDSBT19W*R}XAi)V`Oh={)h_{HY+XXcF&?a&0m{a%%7Ww%suAo z$k^#-ow?CmXur2k!RW#%X5n%D`vg4PEd~vbb#1HK)?SZE?e^AY>|Thy^VYT{&#aiC zv&T)dFG#Lkp2Th|S9h&Qu33jU@}}10=UO|~x|e~=u3WT8_w2)#F?NfUrgh7)#ifhy zY~_r(-J|U6P7to`Y)v*cugboOxB*vCv~~)a5J6({&dUfOKB=#NcYE?BjC(nH?VM{=Zg2qledC$3X9a7dJ#Rjdy z!KM8@=Dhj7sP9lm_^$2kfye#txDVc<{5|mgkaNIp#~_`k4I5U^r}#ro<=S_oKgK?B z?v+qpD5VW*@Zslj{jXccrPKyPal&Ey#5ww+h`HHp^K{JRf7l!{AAJ7YtZh%grsK!= z_TVuWKp6g~5jfWwgwe~5exBVisN+2++(LG!3ZL+4Z0=?0@kK!9VK7RS^@Nj=@ z=zhVK|I@<%LBW;3;sYKZpa0Vy?$7bO5a55m@IMsbulUOzAD_RDO|yJ_{R?D_L-iN- zX0+g{zv4PJ9jwP>kPqbW&@t#NAHj7DI>@Ibz$b0Fz;-L3kK*lu2l?ojujXr_$lV&? zqqslj>zCWkfIcbFr!T-q@p~imc`(3dndoyMz(?^%BKYW-l;$fb`n(X}qxerF_{h+P z9g7qa;q?0j|J}zT^|_*@B)6MhMvg^hWGqO>ayX8}w1tvV--E8eHJe6Y$i__Nz#)$L zF3A25%I`!B)6d9KxRZ8C-y`i#qgB4bn-RhD3MJ4`2+z`M2{oOD+kxx3PkNRL^1%?= zKEa0MU((kF(g)ezfq0flDnNHY#-FsDS^j*x(DaJ)*%3CD)-Htm0(^sc<#kYZCQ0() zgX54SfHkAtKOiWdWMT5vP~!$N@s6PU^XF83sIk217gWrdVN-nYvAo4zBS=|YQrI(~ z!VDxDp6Bn_4ga_o-BO2kM;ff*bR^0KPj2`Vamkr zaA_XhTLWJ{Ok*y*qMvDw-SC*TKPNxp1uM9=#mr3N`;+OJ?j?*Dmf^aunSM(O%I}?L z);BLs_1|-R%RYWM_%kDv8SYs`($n8KQ8$%E zWmojidv{W$@OYySV_zuq9_mmg-|MOi$IK36e1g7v4k3P&WYj4A9(6`K9S_ty==r%yS{?{Tc(c?tYp#_!wsE`J5#fSJcUmv1Ug_0#8P2H)&k zmW;FIwF@C_|1pMIp22v>s^O-7E9mHJbeAbv^*31K1G|`>Z^1v!!|*?a_RrUEJ9aq= z^rTHeXZTdT0>5z^;{~gVu#R9eWTbEW{LR(IY(Hc4!1^yfB7K1CXEuN8ivEoz zzUndffTW)xmfaz&L9u-Cfx|UQEGzOQMj6WcQlv463y$NGK8P_b?&^Nxlg6Ta6T3dc zwFJj*aAUuAEe~Xq4&ymP#)cuMILMQA0DYIRZT$x83%DN5Ty+Ix#P-5R7JMMa%CW$p zHx0jb9B+pIB&=bGmv2Ry$r#(AtiEAK=WNFHeV@IepK?)esIyYkS-ku{@E}d5;OLzD zmgnO42o3otO*#RZrX0=VAvCG@(K%-demF7A>hTz^DOdUMd=s#^*<|(m4c0$s8EaXw ze2KF>6w`a`%~9}W$8xC0nnA1?OG~|_<7QU+Gx=Bs{zBix{jBYud1W0jB+mBEHAjq3 zL8i8SpH9~#dGR}5#rTu&Cz$t!DMRzz4cnWgM_H5iL-!c?K`YrOa_o8>o^yONZrikLYfRtgjVZE>4fH&A zgVV?Lqpq*a)uZc6)1Q&>6KLO3XOMw@==*Td59vegmm*h=8b zj%Cd}&GZ z`Z;}KV=-5Qb-6W9m2EG>czJBB>2E+gV?DUKc+{4ysl1{;jeA9(XEEWOIevULWe|T6 zI^n#OdbqUT%03_5x@4yh+ha0@@p3+!khbrm@KK9(U)ny8-SAyoRxFEmk!Qyf|8elW zg6~HBZst2bL;dmfu(q*{i)ZXm16`Y7lwr+!j9j+2A`*xCh!HyLti^g@$q`N?9SnA_ zUfGgc(uC`E{&jABkuwywB8spU9G-g4UniSUgHMjmu4Br%^MMI2)*@vGTk}>Z`Oc4i zkFm+IkgxBA`i@OZ#~~C;0!!h?VZqPfhu4zc4l`z@u(u69V``k-JJGR*05smh@KuL+Ij zV>PeQvGCZ+usY|5M8{y`sr*6Mntb0PwYbDupxhFmytPL)-WAyMMXFuojrQcx#mX%O zwG`P|^h2&8l1$h9kSmOA&MS~s_igIIx#rO>k%})W%BGoL^sFn`+EI%@rtjQOyEGMd z4ZnMsO;fNVG5?nMt+6Zf^LKH6{_6Z3OaYIII2lQuitn0Qx}GUm{A`UBHp^P=CbX?E z?P^KOyyWYDv8eC9@i0$qj|*KHExxPh?vZvaR>Az63wMmTW%#Yb(!rHr>AYoMZhTMo zt<~>+>h-$tR=wEv3gn|h+OTb(kXNg1Z-JMu3ZX4@D%yKuzF>94s>k%j?kc^z#1?Y# zj&YY#Q>jlxqmwgTLa#b7*@s%+)rGOsX?C}GEcEN_m|><_q;uuf?69nVnboZw{<2dB^jOx=V1+cVSi8!u^~!U3!=3CK=qs+Z zjSB_*)c#tC=Ek<>*43W78lTDPhSoJJvFu@e=jydr=dpkSvMRzZMTm$SvSPy5LRqwQ ztZi>-Y;SMC8jtJXw(aWH{PIw`m2FUEd5c@95Ke-^Wbrq&Hg>FDk3wDvFG1NFvijyz zw6tP2W$pSsiR_a*7wPCn=K$|4%%_o~=Sb4fBh06fqvsP~=#j{q6>#y6zIZ4xkVMFgoug-M z4m}ciD{ox9qxV;A%St4&& zY8T=7eAJ`LohI^jWA^E%h1>zu(|!Ww7|2;7`{j^}`Z!LD~{xv%#EO55P@H6`Q-Ym z9#L#X1pV3w{JIEyqvfCL-<}r!w?)u%y+v4lF}8yI=K8%B;S;r<_{j)9Pe}^c&`7{`}gmGhvjP^0{@QXlj~RY4dZ`VJlB8Li3V>(@Oj(P=lW086Jz+H z`p}%@JieTtx2|nvx3gXGzo>%WQd3$??#(pxYYJ<+tz)v~EsgLL=6&tteNS=V$gX!D z@+HMjCmR#^hVog#@mJo5le3KR*Rbb*Jjpi{GnV(^l*d!w@$tRpuW6SAL%yakqQx%< zdR<%I+}0&Jqa+)`zNy@J7>C6$3`Rd{ZqayFqrmr-9dP3(gDVMg)lVYt^9q&I*0|ar zXkF9ZwI0lQjz#oxhCOnc*T9Z1iiv($WwlTld7oX@0CLEhdQ|hug9&@5H{>isO7`}$f=o5vh|?!zm0 z##>D9UD}lJ8Lfwp&r=X#O3q1N?csVK(?H(GwTCDDe2;#LoRo* z`7BUkg!%?fK71F_L*k0*sdk+2~Iwj$T@>Ua!%YY|F=BcFNX@y@gV&|cWVEujZKh$N@$2L^5|P4a9>ZK{(%Vk zrz7w~9{x!=XP{3~>T|h=`}MA6&S-5*!ThRj#INx9)XTZn%QCsv{A#@`zCz+z?|wP2 z7Cb1o%fo%S8w6Lmb#lE`LY1qyU(UWZAC92tEZKpJ8&&V62>zkB?6jocer9&KXSc@K1Yq zg@yZM|phoej-jgEj{%9 zBJM3G%$758H-_L+JS7Qc_pPfAlaLt1_Cr8N_?vH-V z^zic>iT$tposj-~5AXKqr+fJCd&)9}C^J03C>6NYOVavB87_#4dfBK{_ALJ-n4V?G z_WHY~XFo-rQTi7k&Od_JpFm_-dcALg^ucTP)nV!DM5y+EszWe6`vPJqC6KUC8udiE zW}P#SdT%Sf9$1+C4U$g#3%Sf2_b1kcUzq%4hhub zw4`JGb968$KMvtx@>2wH@c!_Rp!{Qq43mFQk(xGYk zDEU`K$nTMdR}%3&SpF063+DeXBIMsB75y|5dq=STSwCUr|6tN3dR@{|{zUwO@@XqV z6@&fnRl{7u78hjy2jzb)LVjPFOY(xGq+2H$sDqqtC^Z!o~`X3ejwf(XEoQ0q2!+Vj(kqG(fvoPj@{HaqM zf0aY|Q}GMRkD;Gq`vsf40sMvoH`D)SuVEx?_6XOC~8(o2(zc%LL_*1Qrkh1mA!15my?B49d4l z-?_oSwB~7R&rjy|#i>jtE0R3i|LGMKvuDmsCTCYvIw1MM*V1HINOGiXn8Kc*c$#8= zmnPT(Cm$)acJwA^_svIr4}R94f!c4Y%{F~!44z>IOAn>0upi#cQt-GQ>uLsJ$9)uQ z7`Vov1a{Zlp99@^Y2V>g)$>^EG09A@J|ohwv8Fxy{Rm%5Oe}YH-e%tjyZ!{eDaNM; zUrn5}uM@V@hp-l9SKO@Hu_trNz_H`AAO8OA?R#MRjdJW^T7x|+%AjYB^<89k44z@_ z)wAm`=mX-|4bGMt>o>|7pSAn;;`}_8JW^+UGTD5tD%ktbFth(^$h;ciU?Q>aZLGUM zK4G_R_T7SfBmd8!U6giiHs4HP{R?T2n@PX;_Yu2JnHMWuwHNDKUWP3=ZS7&p4}Urn z_q~)jsr(iA;dmA0@So6Y$8eWduB|zObo;PwW#Yfi-5wvIc|B=JUeU_)^6C6(xV$1R zXWx!|`f=(5We|BoGwpc?K2Mlet>6Dd-rhl7a!thU3(Vj|@Y=J=^#2d|d#S>@f?H6Z z<5BP2o8)HH(QgyuZ9Q+1dj45Fv8o8=u-w*j>Ar0Ux1epgdLF*-JGP!rvh_S1WvBK0 zDC+rPsplQ2=gm^jTF2y}^(_8DLh|qYiR`{0H8{_l@{0_HTeo13pyuvVi??83pgpTn z{WUSJwJF`lwP0xDJC4HeV<*}qedGBIetdw(yTFZt90*!iz3 zG7ISVz;4EJ_L-e$t7{J|B5>Q4WOpNh(S8}bZB8t5FBH3e039thS!srI6zS28;jAt= zf;`!@z6+bJfR)?B#F04D+al9_-u10bt5$ZM*V4M2GnePt4NPF0oqq|5`9~6!_+H2R z#ScmQ2U=^O@3dnfK);XWacSqIQX=?ehSg)#E<9@#ep|uL#8=|Wi+(J2_i)f5t~qLc zO#d73!T}c?&X{{KSnxr@<2C-v@vEkh`FvWLJBGK%R;Uk=7d&?#Lw$X;gN@Y<;d3lw z&yNUQhb*|GfbK-po5(fc{z3qY2NUS;c^COfE?0^|L<&Eh(|Z!A@D9VCvxZ@M*wK zJg}{9UeO?Xg9NOM!)dd+G<2=U8lFI!m7SgIS{phVueXxi?dO>`H@2-m<(u0}GSmS<8Cn#Ja|Yt~?2Br^>QjasK&eA$)fVM@MvmFU*GqCsw7)=22VCiTbI zH^SC3kPe?~l>t1s>IZnSu=UTnV#>}wX+)Y3Ns8^AA2?)M|`mm+Y^ z$rQ(P^=11(&`ttAE}oN+2F4==Jcl~W{?B$AxxI|uqmRp(U44)qjwU(bU6pQm6iJX( z%k^dC6xxC1MOagxAx36-y;Qb`UE9{ccaFv;tkNKp@cu6^ZCDQ{S#ed!K;W_RTqIAJ=bc&bj6+J9G6$KK>l1ws7+C@g0&xoGblI^u%)aJdg3zdW|8?G&T$$&w0)A^ zw+T2R1jOC5$pM_B;6eOEclrnU|6hIXc{)mgMU#7SxnfDVAZx23m);Z6A?G4sAChvH z+5bs-#MB8wI|D}eKO z*#+7El;s~=a1kbdXGs1jJ1C$1QJDNi1aZ9Pg6#jG{J%v^nEXQ_^7*zAlz#+Rn0)o! zW53O^(w!{t((YLvCV#5jWL)#WgXPb<49XvY_%QkEL*_{)_Kslw&zAHY+w~9KCvU(9 zajx=3E%Px+9~j~_J<>U)Bho888|lOH-!s-xXnN+KkjmHgzg*;NJ9Vir_AK(xQb0o0 zTSKlL(Q}`4LhyzTq*q$boicrJ{CuLM-x*-8`fGZwMG4FQ>yrN-A!Pnb@zeC0e?DV^ zWzQrJ%0u9<1M&lxp}I4DN*)$!b3}OL3KG*R6PpZmA$f-h_C;j$}f26tV>y+aE2?V4f+AB$y* zccqOT|KBy$3?|07Jx5-_7;LHxW2vWLzY~mmUjKN^?y<_kzZO?MnXRe86#PY7 zzJKY)ebayK!i^m$-|Or?D*HBm4(B)G2fZvU^2;!&17#SDrRvzJ?xmD5*pueX<1_cz zd5_GJjEVJEn^aYqIb}w*F;%_LJ9ATN5VJfzdkQoCw++O4?;$Pr58t#QHTXR0W()jS zZ|*kznfdTl(1S5=+-6N*PW3-tY-Tmxi2b;rclFVY&o*C#y>+1Lyj1FqQl#%PrQa(o zG4*B3+&DMOFLNUH=J_1>WBi+YbTKb2NWW#F=_Ri%Cb7NwA~RTTN-ypDGWSh7X1z$AJr@1+W@qielchEr|MFJ`;njL3(doscI-*Ekv1 zW6a>mEDvCev*my>@-f&p@^u(5_M=hL%G!(r-pNq`|An#J4wrH)LPh1v%U= zC|eF=&2;QlRsMC{e=L(*x1KMBNfk21=jF3%xu3-U_+ zccV>Uf0ONL>?g!5%7i>OP;xen#je2SY_^X5G9S&%7yBEa95{fNX-mgZacdt!U0 z9P;=((CM>EL&TXkj?cuJk~fa??@uIjSNz|^#Af=m8PhI6C?E5eV3!N}HDA}!hV9rr z|K(o%j4*=FVH5#-%VW&9t7BbrSJuz@`$v8T@P|GJXIl8qSa0_qg zl6FlQc0#hVAkZea{gR7c*_L$s+$UE+?bR!>y@;K-$>qmQo!EWlmn=)RtZaeq)>kR# zUd~*tJM8DlldR_SO|C^I0uqGC<6r-t{G;Y{%ryTkM?94Hv@B(A&+a=HbPvnh8IN0&=M=7%8kn4|9`1HU3-u39O^7gJ* zeJ=touiH6Aa8@6IH$~tpBk+z0e0>DYvF$K@{vrZrpBYAfX9Rw41pYt-ZnAez{_Jnw z$aR(`YA{y1O!nq88vMQ;S8HtlmvfMf8>?AXyJAtS?P?dmy|mo2Je4j}A*C|t)SKH` zusAMsfgQv2TU$zSj_LXMRUW3zIZaE?h*Zk?sV`X9lmzmF#cC!bQGWpJ+G%16f(W(ux+6vqpsJ;=vjx0Cj8yjx}u zO-FhkZ;znA$;0_ws|R2Fd617jLwLPYaMiz^AP&5<*+cbLT*q>QV^tdx1SMffNk6(|61Xn&UIC0kglc%b` z;_BNWsQ(HXFbL}3P^?39kBYlejv;Re!}7 zd3^kGSQg+jRrsU>d=&Tn8vA_u0(|uTQC}0PkK*cUB3N#Z1o#w+K2HYpQT!>vgM41| zaKGFNWGqX|ZKv?}eMhh#P<*V=2l<~C;B!FuOc7l3tGMqw!Y{YV0H3t*Nd@>QK40*l zK8rlu?+4U>G3h4?Zw6W>oP&_0UhMCF%C-)cL*95&5iCjTA7!{879595`9$7%F#Xwx zW83&$(@#fQ@(jM2rGW8h4-{7LUEy5Nu<51n^N*yA;XN(sIUhtiZO2+Sd~Q;{bWb>Q z$Agk?ssa*9GtZ)YuVMNbS;U>FuZ>Kgz*N4%J0*QZApJ6VxStikHJygLC4GR*+~~g? zc#)b;p>Ik0VE!|bUY|=!ulnotH*peH{;$hRg_bkRpZB?@SDa+Qwgbq#F7gL>;T=K! zc^%Z9=V$zLH8iw_~*KZ5elpFU%b8`E|F-){`~g4r`awEZ_+ zw`Gr%J5Q{&QgbSH~Qod(T@k4$5)gWL>(l5yg_+mc$s#r04qzQ~et+ zG}m%W@>cAn-iUFM48|AB3U;0H{Ff8Gn=1|WQQy4eR*W}hFdlge#vGxJ9skRmfH5wN zJ>H7(8H^iWdJD#Z9vz;tzCVYIeICMC*hn*r@;J`Zh&1blr+Q=HokqGwjH^8ic^sQr zhq1QM@wL%r`d^K5<7+8|jTm1uNZ(Y%Fm~xJ;F$rh&5$z*ehxX_8`Ohi+SETCF?MT^ z|6m$COYGP<-izL2Y`k<|aBMt-Jd1Gi2r(CYeFzanB@-T^{CmWxV`*0UE|5uf_iayb)uF zX_P%_4}+F*l>d(bnVRMR@JlXv^UVw2eDf6Z=9_>&_!wB!7+2Jo7V#ltShzPlJa4S& z_ZbUHBOlsF*>~gISWu0Q1z`*6=c;p?S~tAsN8<4Y_x%;FH?v6gD>GYasWjUlxHkN8oJ{`1KL^7b5VRBk+(h8rLj8=pcc1=svem5kw;YY*k4_|ynK7Y6vW3m@(=$wT=l zUKhcq#l!t?NZr##_2m7^qdUM~@eLjyzuf-+Z%$Wk(tO+n{!hn`Sg^-W0pp?ls=FFG z%MkU=dB1c5`ppsb%}Kj(%9mN7RFCY%{SK$U@h(>_=f6(tlYQR zx2-=TJd=8=>)_XHCVc&g4EjRqj31p%ISJ^w$KnWKD|L^28@((xQOwI8*z1(RCgL7^ zFX72LXa)*;nU>!`3{kZ`--7=u(sCUoX|bji-<*iUdQ{rZ;JdZ_E%Ax93u|JzUK7ul z`rlUv@+FU5@d?&`iRbwBK+k^X59&bHAC#^k6?-r1qssazgS`va&c=`*mKS-@9*S|F zgpJ9!YGb`MvCK2fhsM+Am&*RpXfuoHnGR{-a}Co+vJSV8^*M$rU<9oP9Xo^jCs8Rdm<>1Q&+m*)fC zd7pQ#b*OnEuVnGjInBi4J4_SjdBG0+@t zirco*2Oo_)5XW@HcRXGIzmu-aQt*#fjl3TEzujGLY?W6Te|tgbpp;SyV#2apR<=%& z6+vkX>MbBnGh+joR6{~9ZAl4t1^Z`0Mz+g>3A%k~)ADBuq#OG{2_G<4Cke(nYeJL{ z$fB7_q(owtEHQJLh9Zi;-#O27?{iPzcQU(V$xd?bIq&a%&Uv2qdCxiT`SYA}uqJsF z>#-@r=)=(@^HqL5^HMbM(pq0Ge%=;ccoFBAO@Kay=OQg-*L?5S#$R%IpLvn@d2Suw z?P;XR>(huoT;cM+dlo*2m!+7uhh3S7hQ5csJgRW!36$yl)n~nZ-N0(3*M_ptCS~C| z=$LlO<$IJR;RW8vS13c28P7{zq#M5%dgw^$e|Qh{V}|}z0zGA6nv{#rM7g4vGEEs- zH{jj{)tjvos6(a`>P_=goGz624ak;}x`T8kj(HzE3$yq>3{BM6#nnb`Wiz_`kJDrnyovSy!{&ODc;hvm~$S>J^o7F+T3(;3@h zyHDF9?POj&N3Llwg_F(vvgh@4zx(^=D{L<|Rp!f1R-Ky9gTw|ahvprrI6C*(oa6VUo-D4z zet*WyeBRnFy9(H)&TXB$a_w=)fpHmjA;020uhNscY-TQux9JGlj-H;CEFIhTW_vrM zmD63+jQS+{AjZih&U-j@A6h59c?)a0ME-a z6(_~}u?BjTW2L#(T@?Oil&mWAu&4J@6$lYngI}4Uw-U##jrQqOm5k45dU0!`c`t5F z_UD1K+=cFo02ZX)zAIf6P=oq+!~0e?LKzn*~qH35G!0sngf zek%e0PXay*6;_-csuS>~33zP+UY~%kOu(Z;HC{Z!B={hdeg*1qXhfm&orw+U*Xuh}>ZudM*eDq`SNKbmO3qo=wqCoSoR!yA#9QIP$PZF8q-s{_KpY zpP7<|k~_qLA0M{Oc$!8I=YELUq1X({Ngr%OMSbo_4;=B)gD7pCXz)-%Ctr9HNLw!& zPf@ma&#q{v7bu&{c0UpA&Gz+l;LR4l+Z;>PHUn{ew;ZGV7y)tUOF4IcfTsly(`gVq zT(i#llaA>x@Im+AC}Hl~YVnNVOyAmnZA_ql%+TvNDIsm+gy}aMdaH+4!9)2~&QSh) zk>`F%lipSd^SR8BOkq#^P|lp8_w!C3=oNe|(n(90-aZLaPFc3;ki6g=%eMGo!5f2g z`UR()wGyUx+~CU$enP@w{(0Hpt;^zeq^V_K4l!t8$b(bVSyiP&*uN&Oz zc|!0|&uXV#x|#FzV^`)55#N8IY) zqrQCE@;g&*g!)_}IMb=u$nf<&g!x>{FX?T5ZkD(qz0K#Y11EH?;)l;=^ZCbxh927q zbfo`;54!)ngv0mPFF55XmoU8{gIoO^7o6#@kT5;X&wP(Ioim31lZM{rPm7Nw(2pB@ zrAgA00 zRQKOt=r!;02FnRup?t~pI`IqTORhJH&-7RMsP6x9!Nc;~EV!n>SFX1PcwVks#8^E1QSh)H(>ZCukyTscy#@NJc?uR*||_ZCk$@+o-?@R zJ1V&H{i*OB6I}J6__#@@){Ef&FB{zQy=HLB_om>=_ptDNOK|0@_&X*Y%lD4KE#C@` zt-(=0mT#5d%6Gz1VUkX8<*WEo!NdGhCwQ12RtO%xmo)}oCOqji8r;gS=g5Te>$;Fo zo~@FOK37KcxlM3=F2&mg59QApd90p$4Q}PvJtiopm0#zwL;0VVbX3lAkyF>NsGN$Q zFnrerAFxdzwv7}J?&@aYCW?CUDp0|m_tuGzLFmI?5NDi84e(_xO+(doO=Hs#lV zlO!DReHj>?w(tDa)Dh;d;6@z(PU-Xyr+iHECy$Un^J^UcDpT7-v;`o=> z_$Un$ll;j$?J@Y*L`qbtP8{h!2F%!~1diKP;7etHh`NtMJqKn*W(iL)|gTm=Ip)g>j+$ybfh2 zIo3@$*CLHwW(V>N`I9V;|1BCN!L11x2A3Ril(TxhkG(d>{4Lw@K3R?;rRzm%LX=c zzMpm)|42ongRnX2x&6#*M`n4uiZPsJkeLCyrH_r+(w?HU?qa@iuG(j?T(V{^Hfz=Y9m6kXIf|4M4s(H$Xnr!!^-tZ~KAgJlmS$ z{zHq;ej$n`_lw;|dNyQA<*)Mk#fwF}7?wg&UDX9}=aE1O1s{}OC5Dl(I)ifCj9 zusrx3Oyw_ZuZnOML)mkrBhLqFe4GcCM3X(ho`p@&-KV3GyHA&m+^vo#vraD`b$S_J zoEf>f*z0=Y_TA5Luca5UZ$I^ro#FMQx{&?;3+riUyW;oD_j;h7euDS~`?4)%BhJ2P zMl{+AS@}F!?3puxeeauO51j1c;JP}v#vU=2z8B8}`x)$cm3mS5iwy*kFt50=tbJm_dY{B@raqB#M(`5SVJXojObsjE10b@Uo-GPwsSnsMMOgcQ>~}M+ zHs>_od_GMfaFgeA^&dxBmV~ctkd-w z4_OdlDINuXhrulApGAI)F|6?wr!63{kbFXbVI>q_y5kh?~K7U*vFsToc rmyW?fWh8zmf1KypAPtfsS`o*(kpF)H-sL5( literal 0 HcmV?d00001 diff --git a/android/build_arm64-v8a/lib/libwebsockets.so b/android/build_arm64-v8a/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..5d9359c8169140f54cc415498576a7173235aa19 GIT binary patch literal 76552 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 literal 0 HcmV?d00001 diff --git a/android/build_arm64-v8a/lib/libwebsockets.so.4.0.0 b/android/build_arm64-v8a/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..5d9359c8169140f54cc415498576a7173235aa19 GIT binary patch literal 76552 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 literal 0 HcmV?d00001 diff --git a/android/build_arm64-v8a/lws_config.h b/android/build_arm64-v8a/lws_config.h new file mode 100644 index 0000000000..f4df814eed --- /dev/null +++ b/android/build_arm64-v8a/lws_config.h @@ -0,0 +1,174 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +#ifndef WIN32 +#define _DEBUG +#endif + +/* Define to 1 to use CyaSSL as a replacement for OpenSSL. + * LWS_OPENSSL_SUPPORT needs to be set also for this to work. */ +/* #undef USE_CYASSL */ + +/* The Libwebsocket version */ +#define LWS_LIBRARY_VERSION "1.3" + +/* The current git commit hash that we're building from */ +/* #undef LWS_BUILD_HASH */ + +/* Build with OpenSSL support */ +/* #undef LWS_OPENSSL_SUPPORT */ + +/* The client should load and trust CA root certs it finds in the OS */ +#define LWS_SSL_CLIENT_USE_OS_CA_CERTS + +/* Sets the path where the client certs should be installed. */ +#define LWS_OPENSSL_CLIENT_CERTS "../share" + +/* Turn off websocket extensions */ +/* #undef LWS_NO_EXTENSIONS */ + +/* Enable libev io loop */ +/* #undef LWS_USE_LIBEV */ + +/* Build with support for ipv6 */ +#define LWS_USE_IPV6 + +/* Build with support for HTTP2 */ +/* #undef LWS_USE_HTTP2 */ + +/* Turn on latency measuring code */ +/* #undef LWS_LATENCY */ + +/* Don't build the daemonizeation api */ +/* #undef LWS_NO_DAEMONIZE */ + +/* Build without server support */ +#define LWS_NO_SERVER + +/* Build without client support */ +/* #undef LWS_NO_CLIENT */ + +/* If we should compile with MinGW support */ +/* #undef LWS_MINGW_SUPPORT */ + +/* Use the BSD getifaddrs that comes with libwebsocket, for uclibc support */ +#define LWS_BUILTIN_GETIFADDRS + +/* Define to 1 if you have the `bzero' function. */ +/* #undef HAVE_BZERO */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#define HAVE_FORK + +/* Define to 1 if you have the `getenv’ function. */ +#define HAVE_GETENV + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IN6ADDR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef HAVE_LIBSSL */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#define HAVE_VFORK + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if `fork' works. */ +#define HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#define HAVE_WORKING_VFORK + +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR // We're not using libtool + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Version number of package */ +#define VERSION + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to 1 if we have getifaddrs */ +/* #undef HAVE_GETIFADDRS */ + +/* Define as `fork' if `vfork' does not work. */ +/* #undef vfork */ + +/* Define if the inline keyword doesn't exist. */ +/* #undef inline */ diff --git a/android/build_armeabi-v7a/lib/libwebsockets.a b/android/build_armeabi-v7a/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..3abf13370430ba0209aa5335d362456c4f5fe32e GIT binary patch literal 136958 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

j-_18fzcb{Q0W$oc09x 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 literal 0 HcmV?d00001 diff --git a/android/build_armeabi-v7a/lib/libwebsockets.so b/android/build_armeabi-v7a/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..7628871f95dda076fe7cec1ea0f012a15009e07d GIT binary patch literal 109472 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

GlZ0tCgB`9Nn~ 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 literal 0 HcmV?d00001 diff --git a/android/build_armeabi-v7a/lib/libwebsockets.so.4.0.0 b/android/build_armeabi-v7a/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..7628871f95dda076fe7cec1ea0f012a15009e07d GIT binary patch literal 109472 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

GlZ0tCgB`9Nn~ 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 literal 0 HcmV?d00001 diff --git a/android/build_armeabi-v7a/lws_config.h b/android/build_armeabi-v7a/lws_config.h new file mode 100644 index 0000000000..77ad3bf163 --- /dev/null +++ b/android/build_armeabi-v7a/lws_config.h @@ -0,0 +1,174 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +#ifndef WIN32 +#define _DEBUG +#endif + +/* Define to 1 to use CyaSSL as a replacement for OpenSSL. + * LWS_OPENSSL_SUPPORT needs to be set also for this to work. */ +/* #undef USE_CYASSL */ + +/* The Libwebsocket version */ +#define LWS_LIBRARY_VERSION "1.3" + +/* The current git commit hash that we're building from */ +/* #undef LWS_BUILD_HASH */ + +/* Build with OpenSSL support */ +/* #undef LWS_OPENSSL_SUPPORT */ + +/* The client should load and trust CA root certs it finds in the OS */ +#define LWS_SSL_CLIENT_USE_OS_CA_CERTS + +/* Sets the path where the client certs should be installed. */ +#define LWS_OPENSSL_CLIENT_CERTS "../share" + +/* Turn off websocket extensions */ +/* #undef LWS_NO_EXTENSIONS */ + +/* Enable libev io loop */ +/* #undef LWS_USE_LIBEV */ + +/* Build with support for ipv6 */ +#define LWS_USE_IPV6 + +/* Build with support for HTTP2 */ +/* #undef LWS_USE_HTTP2 */ + +/* Turn on latency measuring code */ +/* #undef LWS_LATENCY */ + +/* Don't build the daemonizeation api */ +/* #undef LWS_NO_DAEMONIZE */ + +/* Build without server support */ +#define LWS_NO_SERVER + +/* Build without client support */ +/* #undef LWS_NO_CLIENT */ + +/* If we should compile with MinGW support */ +/* #undef LWS_MINGW_SUPPORT */ + +/* Use the BSD getifaddrs that comes with libwebsocket, for uclibc support */ +#define LWS_BUILTIN_GETIFADDRS + +/* Define to 1 if you have the `bzero' function. */ +#define HAVE_BZERO + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#define HAVE_FORK + +/* Define to 1 if you have the `getenv’ function. */ +#define HAVE_GETENV + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IN6ADDR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef HAVE_LIBSSL */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#define HAVE_VFORK + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if `fork' works. */ +#define HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#define HAVE_WORKING_VFORK + +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR // We're not using libtool + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Version number of package */ +#define VERSION + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to 1 if we have getifaddrs */ +/* #undef HAVE_GETIFADDRS */ + +/* Define as `fork' if `vfork' does not work. */ +/* #undef vfork */ + +/* Define if the inline keyword doesn't exist. */ +/* #undef inline */ diff --git a/android/build_armeabi/lib/libwebsockets.a b/android/build_armeabi/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..68105c81431e997d2c0d895b838825de1a0b7397 GIT binary patch literal 137378 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 U7W95p)_9gS@M0dq&l}J0f0(c;3jhEB literal 0 HcmV?d00001 diff --git a/android/build_armeabi/lib/libwebsockets.so b/android/build_armeabi/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..b967cc346142fd01de4c84ee5143584cc353f963 GIT binary patch literal 113688 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 lTZ`-UxEEam^p3z_+k{{W*dQJMe% literal 0 HcmV?d00001 diff --git a/android/build_armeabi/lib/libwebsockets.so.4.0.0 b/android/build_armeabi/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..b967cc346142fd01de4c84ee5143584cc353f963 GIT binary patch literal 113688 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 lTZ`-UxEEam^p3z_+k{{W*dQJMe% literal 0 HcmV?d00001 diff --git a/android/build_armeabi/lws_config.h b/android/build_armeabi/lws_config.h new file mode 100644 index 0000000000..77ad3bf163 --- /dev/null +++ b/android/build_armeabi/lws_config.h @@ -0,0 +1,174 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +#ifndef WIN32 +#define _DEBUG +#endif + +/* Define to 1 to use CyaSSL as a replacement for OpenSSL. + * LWS_OPENSSL_SUPPORT needs to be set also for this to work. */ +/* #undef USE_CYASSL */ + +/* The Libwebsocket version */ +#define LWS_LIBRARY_VERSION "1.3" + +/* The current git commit hash that we're building from */ +/* #undef LWS_BUILD_HASH */ + +/* Build with OpenSSL support */ +/* #undef LWS_OPENSSL_SUPPORT */ + +/* The client should load and trust CA root certs it finds in the OS */ +#define LWS_SSL_CLIENT_USE_OS_CA_CERTS + +/* Sets the path where the client certs should be installed. */ +#define LWS_OPENSSL_CLIENT_CERTS "../share" + +/* Turn off websocket extensions */ +/* #undef LWS_NO_EXTENSIONS */ + +/* Enable libev io loop */ +/* #undef LWS_USE_LIBEV */ + +/* Build with support for ipv6 */ +#define LWS_USE_IPV6 + +/* Build with support for HTTP2 */ +/* #undef LWS_USE_HTTP2 */ + +/* Turn on latency measuring code */ +/* #undef LWS_LATENCY */ + +/* Don't build the daemonizeation api */ +/* #undef LWS_NO_DAEMONIZE */ + +/* Build without server support */ +#define LWS_NO_SERVER + +/* Build without client support */ +/* #undef LWS_NO_CLIENT */ + +/* If we should compile with MinGW support */ +/* #undef LWS_MINGW_SUPPORT */ + +/* Use the BSD getifaddrs that comes with libwebsocket, for uclibc support */ +#define LWS_BUILTIN_GETIFADDRS + +/* Define to 1 if you have the `bzero' function. */ +#define HAVE_BZERO + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#define HAVE_FORK + +/* Define to 1 if you have the `getenv’ function. */ +#define HAVE_GETENV + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IN6ADDR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef HAVE_LIBSSL */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#define HAVE_VFORK + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if `fork' works. */ +#define HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#define HAVE_WORKING_VFORK + +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR // We're not using libtool + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Version number of package */ +#define VERSION + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to 1 if we have getifaddrs */ +/* #undef HAVE_GETIFADDRS */ + +/* Define as `fork' if `vfork' does not work. */ +/* #undef vfork */ + +/* Define if the inline keyword doesn't exist. */ +/* #undef inline */ diff --git a/android/build_x86/lib/libwebsockets.a b/android/build_x86/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..737b4f64b6a27ef48669b13e0496acc8c477c5d2 GIT binary patch literal 142994 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 header file. */ +#define HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#define HAVE_FORK + +/* Define to 1 if you have the `getenv’ function. */ +#define HAVE_GETENV + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IN6ADDR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H + +/* Define to 1 if you have the `ssl' library (-lssl). */ +/* #undef HAVE_LIBSSL */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#define HAVE_VFORK + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if `fork' works. */ +#define HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#define HAVE_WORKING_VFORK + +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR // We're not using libtool + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Version number of package */ +#define VERSION + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to 1 if we have getifaddrs */ +/* #undef HAVE_GETIFADDRS */ + +/* Define as `fork' if `vfork' does not work. */ +/* #undef vfork */ + +/* Define if the inline keyword doesn't exist. */ +/* #undef inline */ diff --git a/android/dist/armv5/include/libwebsockets.h b/android/dist/armv5/include/libwebsockets.h new file mode 100644 index 0000000000..0bb67f57bc --- /dev/null +++ b/android/dist/armv5/include/libwebsockets.h @@ -0,0 +1,1207 @@ +/* + * libwebsockets - small server side websockets and web server implementation + * + * Copyright (C) 2010-2013 Andy Green + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation: + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C +#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C + +#ifdef __cplusplus +extern "C" { +#include +#endif + +#ifdef CMAKE_BUILD +#include "lws_config.h" +#endif + +#if defined(WIN32) || defined(_WIN32) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#include + +#define strcasecmp stricmp +#define getdtablesize() 30000 + +#define LWS_VISIBLE + +#ifdef LWS_DLL +#ifdef LWS_INTERNAL +#define LWS_EXTERN extern __declspec(dllexport) +#else +#define LWS_EXTERN extern __declspec(dllimport) +#endif +#else +#define LWS_EXTERN +#endif + +#else // NOT WIN32 + +#include +#include + +#if defined(__GNUC__) +#define LWS_VISIBLE __attribute__((visibility("default"))) +#else +#define LWS_VISIBLE +#endif + +#endif + +#ifdef LWS_USE_LIBEV +#include +#endif /* LWS_USE_LIBEV */ + +#include + +#ifndef LWS_EXTERN +#define LWS_EXTERN extern +#endif + +#ifdef _WIN32 +#define random rand +#else +#include +#include +#endif + +#define CONTEXT_PORT_NO_LISTEN -1 +#define MAX_MUX_RECURSION 2 + +enum lws_log_levels { + LLL_ERR = 1 << 0, + LLL_WARN = 1 << 1, + LLL_NOTICE = 1 << 2, + LLL_INFO = 1 << 3, + LLL_DEBUG = 1 << 4, + LLL_PARSER = 1 << 5, + LLL_HEADER = 1 << 6, + LLL_EXT = 1 << 7, + LLL_CLIENT = 1 << 8, + LLL_LATENCY = 1 << 9, + + LLL_COUNT = 10 /* set to count of valid flags */ +}; + +LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); + +/* notice, warn and log are always compiled in */ +#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) +#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) +#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) +/* + * weaker logging can be deselected at configure time using --disable-debug + * that gets rid of the overhead of checking while keeping _warn and _err + * active + */ +#ifdef _DEBUG + +#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) +#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) +#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) +#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) +#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) +#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) +#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) +LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); + +#else /* no debug */ + +#define lwsl_info(...) +#define lwsl_debug(...) +#define lwsl_parser(...) +#define lwsl_header(...) +#define lwsl_ext(...) +#define lwsl_client(...) +#define lwsl_latency(...) +#define lwsl_hexdump(a, b) + +#endif + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +/* api change list for user code to test against */ + +#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG + + +enum libwebsocket_context_options { + LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2, + LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = 4, + LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT = 8, + LWS_SERVER_OPTION_LIBEV = 16, + LWS_SERVER_OPTION_DISABLE_IPV6 = 32, + LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = 64, +}; + +enum libwebsocket_callback_reasons { + LWS_CALLBACK_ESTABLISHED, + LWS_CALLBACK_CLIENT_CONNECTION_ERROR, + LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, + LWS_CALLBACK_CLIENT_ESTABLISHED, + LWS_CALLBACK_CLOSED, + LWS_CALLBACK_CLOSED_HTTP, + LWS_CALLBACK_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE_PONG, + LWS_CALLBACK_CLIENT_WRITEABLE, + LWS_CALLBACK_SERVER_WRITEABLE, + LWS_CALLBACK_HTTP, + LWS_CALLBACK_HTTP_BODY, + LWS_CALLBACK_HTTP_BODY_COMPLETION, + LWS_CALLBACK_HTTP_FILE_COMPLETION, + LWS_CALLBACK_HTTP_WRITEABLE, + LWS_CALLBACK_FILTER_NETWORK_CONNECTION, + LWS_CALLBACK_FILTER_HTTP_CONNECTION, + LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, + LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION, + LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, + LWS_CALLBACK_CONFIRM_EXTENSION_OKAY, + LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED, + LWS_CALLBACK_PROTOCOL_INIT, + LWS_CALLBACK_PROTOCOL_DESTROY, + LWS_CALLBACK_WSI_CREATE, /* always protocol[0] */ + LWS_CALLBACK_WSI_DESTROY, /* always protocol[0] */ + LWS_CALLBACK_GET_THREAD_ID, + + /* external poll() management support */ + LWS_CALLBACK_ADD_POLL_FD, + LWS_CALLBACK_DEL_POLL_FD, + LWS_CALLBACK_CHANGE_MODE_POLL_FD, + LWS_CALLBACK_LOCK_POLL, + LWS_CALLBACK_UNLOCK_POLL, + + LWS_CALLBACK_USER = 1000, /* user code can use any including / above */ +}; + +// argument structure for all external poll related calls +// passed in via 'in' +struct libwebsocket_pollargs { + int fd; // applicable file descriptor + int events; // the new event mask + int prev_events; // the previous event mask +}; + +#ifdef _WIN32 +struct libwebsocket_pollfd { + SOCKET fd; + SHORT events; + SHORT revents; +}; +#else +#define libwebsocket_pollfd pollfd +#endif + +enum libwebsocket_extension_callback_reasons { + LWS_EXT_CALLBACK_SERVER_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_SERVER_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONSTRUCT, + LWS_EXT_CALLBACK_CHECK_OK_TO_REALLY_CLOSE, + LWS_EXT_CALLBACK_CHECK_OK_TO_PROPOSE_EXTENSION, + LWS_EXT_CALLBACK_DESTROY, + LWS_EXT_CALLBACK_DESTROY_ANY_WSI_CLOSING, + LWS_EXT_CALLBACK_ANY_WSI_ESTABLISHED, + LWS_EXT_CALLBACK_PACKET_RX_PREPARSE, + LWS_EXT_CALLBACK_PACKET_TX_PRESEND, + LWS_EXT_CALLBACK_PACKET_TX_DO_SEND, + LWS_EXT_CALLBACK_HANDSHAKE_REPLY_TX, + LWS_EXT_CALLBACK_FLUSH_PENDING_TX, + LWS_EXT_CALLBACK_EXTENDED_PAYLOAD_RX, + LWS_EXT_CALLBACK_CAN_PROXY_CLIENT_CONNECTION, + LWS_EXT_CALLBACK_1HZ, + LWS_EXT_CALLBACK_REQUEST_ON_WRITEABLE, + LWS_EXT_CALLBACK_IS_WRITEABLE, + LWS_EXT_CALLBACK_PAYLOAD_TX, + LWS_EXT_CALLBACK_PAYLOAD_RX, +}; + +enum libwebsocket_write_protocol { + LWS_WRITE_TEXT, + LWS_WRITE_BINARY, + LWS_WRITE_CONTINUATION, + LWS_WRITE_HTTP, + + /* special 04+ opcodes */ + + LWS_WRITE_CLOSE, + LWS_WRITE_PING, + LWS_WRITE_PONG, + + /* flags */ + + LWS_WRITE_NO_FIN = 0x40, + /* + * client packet payload goes out on wire unmunged + * only useful for security tests since normal servers cannot + * decode the content if used + */ + LWS_WRITE_CLIENT_IGNORE_XOR_MASK = 0x80 +}; + +/* + * you need these to look at headers that have been parsed if using the + * LWS_CALLBACK_FILTER_CONNECTION callback. If a header from the enum + * list below is absent, .token = NULL and token_len = 0. Otherwise .token + * points to .token_len chars containing that header content. + */ + +struct lws_tokens { + char *token; + int token_len; +}; + +enum lws_token_indexes { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_HOST, + WSI_TOKEN_CONNECTION, + WSI_TOKEN_KEY1, + WSI_TOKEN_KEY2, + WSI_TOKEN_PROTOCOL, + WSI_TOKEN_UPGRADE, + WSI_TOKEN_ORIGIN, + WSI_TOKEN_DRAFT, + WSI_TOKEN_CHALLENGE, + + /* new for 04 */ + WSI_TOKEN_KEY, + WSI_TOKEN_VERSION, + WSI_TOKEN_SWORIGIN, + + /* new for 05 */ + WSI_TOKEN_EXTENSIONS, + + /* client receives these */ + WSI_TOKEN_ACCEPT, + WSI_TOKEN_NONCE, + WSI_TOKEN_HTTP, + + /* http-related */ + WSI_TOKEN_HTTP_ACCEPT, + WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, + WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, + WSI_TOKEN_HTTP_IF_NONE_MATCH, + WSI_TOKEN_HTTP_ACCEPT_ENCODING, + WSI_TOKEN_HTTP_ACCEPT_LANGUAGE, + WSI_TOKEN_HTTP_PRAGMA, + WSI_TOKEN_HTTP_CACHE_CONTROL, + WSI_TOKEN_HTTP_AUTHORIZATION, + WSI_TOKEN_HTTP_COOKIE, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + WSI_TOKEN_HTTP_CONTENT_TYPE, + WSI_TOKEN_HTTP_DATE, + WSI_TOKEN_HTTP_RANGE, + WSI_TOKEN_HTTP_REFERER, + WSI_TOKEN_HTTP_URI_ARGS, + + + WSI_TOKEN_MUXURL, + + /* use token storage to stash these */ + + _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, + _WSI_TOKEN_CLIENT_PEER_ADDRESS, + _WSI_TOKEN_CLIENT_URI, + _WSI_TOKEN_CLIENT_HOST, + _WSI_TOKEN_CLIENT_ORIGIN, + + /* always last real token index*/ + WSI_TOKEN_COUNT, + /* parser state additions */ + WSI_TOKEN_NAME_PART, + WSI_TOKEN_SKIPPING, + WSI_TOKEN_SKIPPING_SAW_CR, + WSI_PARSING_COMPLETE, + WSI_INIT_TOKEN_MUXURL, +}; + +struct lws_token_limits { + unsigned short token_limit[WSI_TOKEN_COUNT]; +}; + +/* + * From RFC 6455 + 1000 + + 1000 indicates a normal closure, meaning that the purpose for + which the connection was established has been fulfilled. + + 1001 + + 1001 indicates that an endpoint is "going away", such as a server + going down or a browser having navigated away from a page. + + 1002 + + 1002 indicates that an endpoint is terminating the connection due + to a protocol error. + + 1003 + + 1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g., an + endpoint that understands only text data MAY send this if it + receives a binary message). + + 1004 + + Reserved. The specific meaning might be defined in the future. + + 1005 + + 1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that no status + code was actually present. + + 1006 + + 1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed abnormally, e.g., without sending or + receiving a Close control frame. + + 1007 + + 1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). + + 1008 + + 1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. This + is a generic status code that can be returned when there is no + other more suitable status code (e.g., 1003 or 1009) or if there + is a need to hide specific details about the policy. + + 1009 + + 1009 indicates that an endpoint is terminating the connection + because it has received a message that is too big for it to + process. + + 1010 + + 1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake. The list of extensions that + are needed SHOULD appear in the /reason/ part of the Close frame. + Note that this status code is not used by the server, because it + can fail the WebSocket handshake instead. + + 1011 + + 1011 indicates that a server is terminating the connection because + it encountered an unexpected condition that prevented it from + fulfilling the request. + + 1015 + + 1015 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed due to a failure to perform a TLS handshake + (e.g., the server certificate can't be verified). +*/ + +enum lws_close_status { + LWS_CLOSE_STATUS_NOSTATUS = 0, + LWS_CLOSE_STATUS_NORMAL = 1000, + LWS_CLOSE_STATUS_GOINGAWAY = 1001, + LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002, + LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003, + LWS_CLOSE_STATUS_RESERVED = 1004, + LWS_CLOSE_STATUS_NO_STATUS = 1005, + LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006, + LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007, + LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008, + LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009, + LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010, + LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, + LWS_CLOSE_STATUS_TLS_FAILURE = 1015, +}; + +enum http_status { + HTTP_STATUS_OK = 200, + HTTP_STATUS_NO_CONTENT = 204, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_UNAUTHORIZED, + HTTP_STATUS_PAYMENT_REQUIRED, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_METHOD_NOT_ALLOWED, + HTTP_STATUS_NOT_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQUIRED, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_LENGTH_REQUIRED, + HTTP_STATUS_PRECONDITION_FAILED, + HTTP_STATUS_REQ_ENTITY_TOO_LARGE, + HTTP_STATUS_REQ_URI_TOO_LONG, + HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, + HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, + HTTP_STATUS_EXPECTATION_FAILED, + + HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, + HTTP_STATUS_NOT_IMPLEMENTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAILABLE, + HTTP_STATUS_GATEWAY_TIMEOUT, + HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, +}; + +struct libwebsocket; +struct libwebsocket_context; +/* needed even with extensions disabled for create context */ +struct libwebsocket_extension; + +/** + * callback_function() - User server actions + * @context: Websockets context + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * This callback is the way the user controls what is served. All the + * protocol detail is hidden and handled by the library. + * + * For each connection / session there is user data allocated that is + * pointed to by "user". You set the size of this user data area when + * the library is initialized with libwebsocket_create_server. + * + * You get an opportunity to initialize user data when called back with + * LWS_CALLBACK_ESTABLISHED reason. + * + * LWS_CALLBACK_ESTABLISHED: after the server completes a handshake with + * an incoming client + * + * LWS_CALLBACK_CLIENT_CONNECTION_ERROR: the request client connection has + * been unable to complete a handshake with the remote server + * + * LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: this is the last chance for the + * client user code to examine the http headers + * and decide to reject the connection. If the + * content in the headers is interesting to the + * client (url, etc) it needs to copy it out at + * this point since it will be destroyed before + * the CLIENT_ESTABLISHED call + * + * LWS_CALLBACK_CLIENT_ESTABLISHED: after your client connection completed + * a handshake with the remote server + * + * LWS_CALLBACK_CLOSED: when the websocket session ends + * + * LWS_CALLBACK_CLOSED_HTTP: when a HTTP (non-websocket) session ends + * + * LWS_CALLBACK_RECEIVE: data has appeared for this server endpoint from a + * remote client, it can be found at *in and is + * len bytes long + * + * LWS_CALLBACK_CLIENT_RECEIVE_PONG: if you elected to see PONG packets, + * they appear with this callback reason. PONG + * packets only exist in 04+ protocol + * + * LWS_CALLBACK_CLIENT_RECEIVE: data has appeared from the server for the + * client connection, it can be found at *in and + * is len bytes long + * + * LWS_CALLBACK_HTTP: an http request has come from a client that is not + * asking to upgrade the connection to a websocket + * one. This is a chance to serve http content, + * for example, to send a script to the client + * which will then open the websockets connection. + * @in points to the URI path requested and + * libwebsockets_serve_http_file() makes it very + * simple to send back a file to the client. + * Normally after sending the file you are done + * with the http connection, since the rest of the + * activity will come by websockets from the script + * that was delivered by http, so you will want to + * return 1; to close and free up the connection. + * That's important because it uses a slot in the + * total number of client connections allowed set + * by MAX_CLIENTS. + * + * LWS_CALLBACK_HTTP_BODY: the next @len bytes data from the http + * request body HTTP connection is now available in @in. + * + * LWS_CALLBACK_HTTP_BODY_COMPLETION: the expected amount of http request + * body has been delivered + * + * LWS_CALLBACK_HTTP_WRITEABLE: you can write more down the http protocol + * link now. + * + * LWS_CALLBACK_HTTP_FILE_COMPLETION: a file requested to be send down + * http link has completed. + * + * LWS_CALLBACK_CLIENT_WRITEABLE: + * LWS_CALLBACK_SERVER_WRITEABLE: If you call + * libwebsocket_callback_on_writable() on a connection, you will + * get one of these callbacks coming when the connection socket + * is able to accept another write packet without blocking. + * If it already was able to take another packet without blocking, + * you'll get this callback at the next call to the service loop + * function. Notice that CLIENTs get LWS_CALLBACK_CLIENT_WRITEABLE + * and servers get LWS_CALLBACK_SERVER_WRITEABLE. + * + * LWS_CALLBACK_FILTER_NETWORK_CONNECTION: called when a client connects to + * the server at network level; the connection is accepted but then + * passed to this callback to decide whether to hang up immediately + * or not, based on the client IP. @in contains the connection + * socket's descriptor. Since the client connection information is + * not available yet, @wsi still pointing to the main server socket. + * Return non-zero to terminate the connection before sending or + * receiving anything. Because this happens immediately after the + * network connection from the client, there's no websocket protocol + * selected yet so this callback is issued only to protocol 0. + * + * LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED: A new client just had + * been connected, accepted, and instantiated into the pool. This + * callback allows setting any relevant property to it. Because this + * happens immediately after the instantiation of a new client, + * there's no websocket protocol selected yet so this callback is + * issued only to protocol 0. Only @wsi is defined, pointing to the + * new client, and the return value is ignored. + * + * LWS_CALLBACK_FILTER_HTTP_CONNECTION: called when the request has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the URI, eg, "/" + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the http + * connection to proceed or to kill the connection. + * + * LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION: called when the handshake has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the requested protocol name + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the handshake + * to proceed or to kill the connection. + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to perform extra SSL_CTX_load_verify_locations() or similar + * calls to direct OpenSSL where to find certificates the client + * can use to confirm the remote server identity. @user is the + * OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to load extra certifcates into the server which allow it to + * verify the validity of certificates returned by clients. @user + * is the server's OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION: if the + * libwebsockets context was created with the option + * LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, then this + * callback is generated during OpenSSL verification of the cert + * sent from the client. It is sent to protocol[0] callback as + * no protocol has been negotiated on the connection yet. + * Notice that the libwebsockets context and wsi are both NULL + * during this callback. See + * http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html + * to understand more detail about the OpenSSL callback that + * generates this libwebsockets callback and the meanings of the + * arguments passed. In this callback, @user is the x509_ctx, + * @in is the ssl pointer and @len is preverify_ok + * Notice that this callback maintains libwebsocket return + * conventions, return 0 to mean the cert is OK or 1 to fail it. + * This also means that if you don't handle this callback then + * the default callback action of returning 0 allows the client + * certificates. + * + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER: this callback happens + * when a client handshake is being compiled. @user is NULL, + * @in is a char **, it's pointing to a char * which holds the + * next location in the header buffer where you can add + * headers, and @len is the remaining space in the header buffer, + * which is typically some hundreds of bytes. So, to add a canned + * cookie, your handler code might look similar to: + * + * char **p = (char **)in; + * + * if (len < 100) + * return 1; + * + * *p += sprintf(*p, "Cookie: a=b\x0d\x0a"); + * + * return 0; + * + * Notice if you add anything, you just have to take care about + * the CRLF on the line you added. Obviously this callback is + * optional, if you don't handle it everything is fine. + * + * Notice the callback is coming to protocols[0] all the time, + * because there is no specific protocol handshook yet. + * + * LWS_CALLBACK_CONFIRM_EXTENSION_OKAY: When the server handshake code + * sees that it does support a requested extension, before + * accepting the extension by additing to the list sent back to + * the client it gives this callback just to check that it's okay + * to use that extension. It calls back to the requested protocol + * and with @in being the extension name, @len is 0 and @user is + * valid. Note though at this time the ESTABLISHED callback hasn't + * happened yet so if you initialize @user content there, @user + * content during this callback might not be useful for anything. + * Notice this callback comes to protocols[0]. + * + * LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED: When a client + * connection is being prepared to start a handshake to a server, + * each supported extension is checked with protocols[0] callback + * with this reason, giving the user code a chance to suppress the + * claim to support that extension by returning non-zero. If + * unhandled, by default 0 will be returned and the extension + * support included in the header to the server. Notice this + * callback comes to protocols[0]. + * + * LWS_CALLBACK_PROTOCOL_INIT: One-time call per protocol so it can + * do initial setup / allocations etc + * + * LWS_CALLBACK_PROTOCOL_DESTROY: One-time call per protocol indicating + * this protocol won't get used at all after this callback, the + * context is getting destroyed. Take the opportunity to + * deallocate everything that was allocated by the protocol. + * + * LWS_CALLBACK_WSI_CREATE: outermost (earliest) wsi create notification + * + * LWS_CALLBACK_WSI_DESTROY: outermost (latest) wsi destroy notification + * + * The next five reasons are optional and only need taking care of if you + * will be integrating libwebsockets sockets into an external polling + * array. + * + * For these calls, @in points to a struct libwebsocket_pollargs that + * contains @fd, @events and @prev_events members + * + * LWS_CALLBACK_ADD_POLL_FD: libwebsocket deals with its poll() loop + * internally, but in the case you are integrating with another + * server you will need to have libwebsocket sockets share a + * polling array with the other server. This and the other + * POLL_FD related callbacks let you put your specialized + * poll array interface code in the callback for protocol 0, the + * first protocol you support, usually the HTTP protocol in the + * serving case. + * This callback happens when a socket needs to be + * added to the polling loop: @in points to a struct + * libwebsocket_pollargs; the @fd member of the struct is the file + * descriptor, and @events contains the active events. + * + * If you are using the internal polling loop (the "service" + * callback), you can just ignore these callbacks. + * + * LWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor + * needs to be removed from an external polling array. @in is + * again the struct libwebsocket_pollargs containing the @fd member + * to be removed. If you are using the internal polling + * loop, you can just ignore it. + * + * LWS_CALLBACK_CHANGE_MODE_POLL_FD: This callback happens when + * libwebsockets wants to modify the events for a connectiion. + * @in is the struct libwebsocket_pollargs with the @fd to change. + * The new event mask is in @events member and the old mask is in + * the @prev_events member. + * If you are using the internal polling loop, you can just ignore + * it. + * + * LWS_CALLBACK_LOCK_POLL: + * LWS_CALLBACK_UNLOCK_POLL: These allow the external poll changes driven + * by libwebsockets to participate in an external thread locking + * scheme around the changes, so the whole thing is threadsafe. + */ +LWS_VISIBLE LWS_EXTERN int callback(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +typedef int (callback_function)(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +#ifndef LWS_NO_EXTENSIONS +/** + * extension_callback_function() - Hooks to allow extensions to operate + * @context: Websockets context + * @ext: This extension + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * Each extension that is active on a particular connection receives + * callbacks during the connection lifetime to allow the extension to + * operate on websocket data and manage itself. + * + * Libwebsockets takes care of allocating and freeing "user" memory for + * each active extension on each connection. That is what is pointed to + * by the @user parameter. + * + * LWS_EXT_CALLBACK_CONSTRUCT: called when the server has decided to + * select this extension from the list provided by the client, + * just before the server will send back the handshake accepting + * the connection with this extension active. This gives the + * extension a chance to initialize its connection context found + * in @user. + * + * LWS_EXT_CALLBACK_CLIENT_CONSTRUCT: same as LWS_EXT_CALLBACK_CONSTRUCT + * but called when client is instantiating this extension. Some + * extensions will work the same on client and server side and then + * you can just merge handlers for both CONSTRUCTS. + * + * LWS_EXT_CALLBACK_DESTROY: called when the connection the extension was + * being used on is about to be closed and deallocated. It's the + * last chance for the extension to deallocate anything it has + * allocated in the user data (pointed to by @user) before the + * user data is deleted. This same callback is used whether you + * are in client or server instantiation context. + * + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE: when this extension was active on + * a connection, and a packet of data arrived at the connection, + * it is passed to this callback to give the extension a chance to + * change the data, eg, decompress it. @user is pointing to the + * extension's private connection context data, @in is pointing + * to an lws_tokens struct, it consists of a char * pointer called + * token, and an int called token_len. At entry, these are + * set to point to the received buffer and set to the content + * length. If the extension will grow the content, it should use + * a new buffer allocated in its private user context data and + * set the pointed-to lws_tokens members to point to its buffer. + * + * LWS_EXT_CALLBACK_PACKET_TX_PRESEND: this works the same way as + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE above, except it gives the + * extension a chance to change websocket data just before it will + * be sent out. Using the same lws_token pointer scheme in @in, + * the extension can change the buffer and the length to be + * transmitted how it likes. Again if it wants to grow the + * buffer safely, it should copy the data into its own buffer and + * set the lws_tokens token pointer to it. + */ +LWS_VISIBLE LWS_EXTERN int extension_callback(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); + +typedef int (extension_callback_function)(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); +#endif + +/** + * struct libwebsocket_protocols - List of protocols and handlers server + * supports. + * @name: Protocol name that must match the one given in the client + * Javascript new WebSocket(url, 'protocol') name + * @callback: The service callback used for this protocol. It allows the + * service action for an entire protocol to be encapsulated in + * the protocol-specific callback + * @per_session_data_size: Each new connection using this protocol gets + * this much memory allocated on connection establishment and + * freed on connection takedown. A pointer to this per-connection + * allocation is passed into the callback in the 'user' parameter + * @rx_buffer_size: if you want atomic frames delivered to the callback, you + * should set this to the size of the biggest legal frame that + * you support. If the frame size is exceeded, there is no + * error, but the buffer will spill to the user callback when + * full, which you can detect by using + * libwebsockets_remaining_packet_payload(). Notice that you + * just talk about frame size here, the LWS_SEND_BUFFER_PRE_PADDING + * and post-padding are automatically also allocated on top. + * @no_buffer_all_partial_tx: Leave at zero if you want the library to take + * care of all partial tx for you. It's useful if you only have + * small tx packets and the chance of any truncated send is small + * enough any additional malloc / buffering overhead is less + * painful than writing the code to deal with partial sends. For + * protocols where you stream big blocks, set to nonzero and use + * the return value from libwebsocket_write() to manage how much + * got send yourself. + * @owning_server: the server init call fills in this opaque pointer when + * registering this protocol with the server. + * @protocol_index: which protocol we are starting from zero + * + * This structure represents one protocol supported by the server. An + * array of these structures is passed to libwebsocket_create_server() + * allows as many protocols as you like to be handled by one server. + */ + +struct libwebsocket_protocols { + const char *name; + callback_function *callback; + size_t per_session_data_size; + size_t rx_buffer_size; + int no_buffer_all_partial_tx; + + /* + * below are filled in on server init and can be left uninitialized, + * no need for user to use them directly either + */ + + struct libwebsocket_context *owning_server; + int protocol_index; +}; + +#ifndef LWS_NO_EXTENSIONS +/** + * struct libwebsocket_extension - An extension we know how to cope with + * + * @name: Formal extension name, eg, "deflate-stream" + * @callback: Service callback + * @per_session_data_size: Libwebsockets will auto-malloc this much + * memory for the use of the extension, a pointer + * to it comes in the @user callback parameter + * @per_context_private_data: Optional storage for this extension that + * is per-context, so it can track stuff across + * all sessions, etc, if it wants + */ + +struct libwebsocket_extension { + const char *name; + extension_callback_function *callback; + size_t per_session_data_size; + void *per_context_private_data; +}; +#endif + +/** + * struct lws_context_creation_info: parameters to create context with + * + * @port: Port to listen on... you can use 0 to suppress listening on + * any port, that's what you want if you are not running a + * websocket server at all but just using it as a client + * @iface: NULL to bind the listen socket to all interfaces, or the + * interface name, eg, "eth2" + * @protocols: Array of structures listing supported protocols and a protocol- + * specific callback for each one. The list is ended with an + * entry that has a NULL callback pointer. + * It's not const because we write the owning_server member + * @extensions: NULL or array of libwebsocket_extension structs listing the + * extensions this context supports. If you configured with + * --without-extensions, you should give NULL here. + * @token_limits: NULL or struct lws_token_limits pointer which is initialized + * with a token length limit for each possible WSI_TOKEN_*** + * @ssl_cert_filepath: If libwebsockets was compiled to use ssl, and you want + * to listen using SSL, set to the filepath to fetch the + * server cert from, otherwise NULL for unencrypted + * @ssl_private_key_filepath: filepath to private key if wanting SSL mode, + * else ignored + * @ssl_ca_filepath: CA certificate filepath or NULL + * @ssl_cipher_list: List of valid ciphers to use (eg, + * "RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" + * or you can leave it as NULL to get "DEFAULT" + * @gid: group id to change to after setting listen socket, or -1. + * @uid: user id to change to after setting listen socket, or -1. + * @options: 0, or LWS_SERVER_OPTION_DEFEAT_CLIENT_MASK + * @user: optional user pointer that can be recovered via the context + * pointer using libwebsocket_context_user + * @ka_time: 0 for no keepalive, otherwise apply this keepalive timeout to + * all libwebsocket sockets, client or server + * @ka_probes: if ka_time was nonzero, after the timeout expires how many + * times to try to get a response from the peer before giving up + * and killing the connection + * @ka_interval: if ka_time was nonzero, how long to wait before each ka_probes + * attempt + */ + +struct lws_context_creation_info { + int port; + const char *iface; + struct libwebsocket_protocols *protocols; + struct libwebsocket_extension *extensions; + struct lws_token_limits *token_limits; + const char *ssl_cert_filepath; + const char *ssl_private_key_filepath; + const char *ssl_ca_filepath; + const char *ssl_cipher_list; + const char *http_proxy_address; + unsigned int http_proxy_port; + int gid; + int uid; + unsigned int options; + void *user; + int ka_time; + int ka_probes; + int ka_interval; + +}; + +LWS_VISIBLE LWS_EXTERN +void lws_set_log_level(int level, + void (*log_emit_function)(int level, const char *line)); + +LWS_VISIBLE LWS_EXTERN void +lwsl_emit_syslog(int level, const char *line); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket_context * +libwebsocket_create_context(struct lws_context_creation_info *info); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_set_proxy(struct libwebsocket_context *context, const char *proxy); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_context_destroy(struct libwebsocket_context *context); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service(struct libwebsocket_context *context, int timeout_ms); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_cancel_service(struct libwebsocket_context *context); + +#ifdef LWS_USE_LIBEV +LWS_VISIBLE LWS_EXTERN int +libwebsocket_initloop( + struct libwebsocket_context *context, struct ev_loop *loop); + +LWS_VISIBLE void +libwebsocket_sigint_cb( + struct ev_loop *loop, struct ev_signal *watcher, int revents); +#endif /* LWS_USE_LIBEV */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service_fd(struct libwebsocket_context *context, + struct libwebsocket_pollfd *pollfd); + +LWS_VISIBLE LWS_EXTERN void * +libwebsocket_context_user(struct libwebsocket_context *context); + +enum pending_timeout { + NO_PENDING_TIMEOUT = 0, + PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE, + PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE, + PENDING_TIMEOUT_ESTABLISH_WITH_SERVER, + PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE, + PENDING_TIMEOUT_AWAITING_PING, + PENDING_TIMEOUT_CLOSE_ACK, + PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE, + PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE, + PENDING_TIMEOUT_SSL_ACCEPT, + PENDING_TIMEOUT_HTTP_CONTENT, + PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND, +}; + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_set_timeout(struct libwebsocket *wsi, + enum pending_timeout reason, int secs); + +/* + * IMPORTANT NOTICE! + * + * When sending with websocket protocol (LWS_WRITE_TEXT or LWS_WRITE_BINARY) + * the send buffer has to have LWS_SEND_BUFFER_PRE_PADDING bytes valid BEFORE + * buf, and LWS_SEND_BUFFER_POST_PADDING bytes valid AFTER (buf + len). + * + * This allows us to add protocol info before and after the data, and send as + * one packet on the network without payload copying, for maximum efficiency. + * + * So for example you need this kind of code to use libwebsocket_write with a + * 128-byte payload + * + * char buf[LWS_SEND_BUFFER_PRE_PADDING + 128 + LWS_SEND_BUFFER_POST_PADDING]; + * + * // fill your part of the buffer... for example here it's all zeros + * memset(&buf[LWS_SEND_BUFFER_PRE_PADDING], 0, 128); + * + * libwebsocket_write(wsi, &buf[LWS_SEND_BUFFER_PRE_PADDING], 128, + * LWS_WRITE_TEXT); + * + * When sending LWS_WRITE_HTTP, there is no protocol addition and you can just + * use the whole buffer without taking care of the above. + */ + +/* + * this is the frame nonce plus two header plus 8 length + * there's an additional two for mux extension per mux nesting level + * 2 byte prepend on close will already fit because control frames cannot use + * the big length style + */ + +#define LWS_SEND_BUFFER_PRE_PADDING (4 + 10 + (2 * MAX_MUX_RECURSION)) +#define LWS_SEND_BUFFER_POST_PADDING 4 + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, size_t len, + enum libwebsocket_write_protocol protocol); + +/* helper for case where buffer may be const */ +#define libwebsocket_write_http(wsi, buf, len) \ + libwebsocket_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file(struct libwebsocket_context *context, + struct libwebsocket *wsi, const char *file, + const char *content_type, const char *other_headers); +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int libwebsockets_return_http_status( + struct libwebsocket_context *context, + struct libwebsocket *wsi, unsigned int code, + const char *html_body); + +LWS_VISIBLE LWS_EXTERN const struct libwebsocket_protocols * +libwebsockets_get_protocol(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_all_protocol( + const struct libwebsocket_protocols *protocol, int reason); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_get_socket_fd(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_is_final_fragment(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char +libwebsocket_get_reserved_bits(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_rx_flow_control(struct libwebsocket *wsi, int enable); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_rx_flow_allow_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN size_t +libwebsockets_remaining_packet_payload(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect_extended(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one, + void *userdata); + +LWS_VISIBLE LWS_EXTERN const char * +libwebsocket_canonical_hostname(struct libwebsocket_context *context); + + +LWS_VISIBLE LWS_EXTERN void +libwebsockets_get_peer_addresses(struct libwebsocket_context *context, + struct libwebsocket *wsi, int fd, char *name, int name_len, + char *rip, int rip_len); + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_get_random(struct libwebsocket_context *context, + void *buf, int len); + +LWS_VISIBLE LWS_EXTERN int +lws_daemonize(const char *_lock_path); + +LWS_VISIBLE LWS_EXTERN int +lws_send_pipe_choked(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +lws_frame_is_binary(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char * +libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_encode_string(const char *in, int in_len, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_decode_string(const char *in, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN const char * +lws_get_library_version(void); + +/* access to headers... only valid while headers valid */ + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_total_length(struct libwebsocket *wsi, enum lws_token_indexes h); + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_copy(struct libwebsocket *wsi, char *dest, int len, + enum lws_token_indexes h); + +/* + * Note: this is not normally needed as a user api. It's provided in case it is + * useful when integrating with other app poll loop service code. + */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_read(struct libwebsocket_context *context, + struct libwebsocket *wsi, + unsigned char *buf, size_t len); + +#ifndef LWS_NO_EXTENSIONS +LWS_VISIBLE LWS_EXTERN struct libwebsocket_extension *libwebsocket_get_internal_extensions(); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake b/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake new file mode 100644 index 0000000000..ece070d53d --- /dev/null +++ b/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake @@ -0,0 +1,31 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "websockets" for configuration "" +set_property(TARGET websockets APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-8/arch-arm/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets "${_IMPORT_PREFIX}/lib/libwebsockets.a" ) + +# Import target "websockets_shared" for configuration "" +set_property(TARGET websockets_shared APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets_shared PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-8/arch-arm/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" + IMPORTED_SONAME_NOCONFIG "libwebsockets.so.4.0.0" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets_shared ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets_shared "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake b/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake new file mode 100644 index 0000000000..848b03ccc2 --- /dev/null +++ b/android/dist/armv5/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake @@ -0,0 +1,93 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget websockets websockets_shared) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target websockets +add_library(websockets STATIC IMPORTED) + +# Create imported target websockets_shared +add_library(websockets_shared SHARED IMPORTED) + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/LibwebsocketsTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/android/dist/armv5/lib/libwebsockets.a b/android/dist/armv5/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..68105c81431e997d2c0d895b838825de1a0b7397 GIT binary patch literal 137378 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 U7W95p)_9gS@M0dq&l}J0f0(c;3jhEB literal 0 HcmV?d00001 diff --git a/android/dist/armv5/lib/libwebsockets.so b/android/dist/armv5/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..b967cc346142fd01de4c84ee5143584cc353f963 GIT binary patch literal 113688 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 lTZ`-UxEEam^p3z_+k{{W*dQJMe% literal 0 HcmV?d00001 diff --git a/android/dist/armv5/lib/libwebsockets.so.4.0.0 b/android/dist/armv5/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..b967cc346142fd01de4c84ee5143584cc353f963 GIT binary patch literal 113688 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 lTZ`-UxEEam^p3z_+k{{W*dQJMe% literal 0 HcmV?d00001 diff --git a/android/dist/armv7a/include/libwebsockets.h b/android/dist/armv7a/include/libwebsockets.h new file mode 100644 index 0000000000..0bb67f57bc --- /dev/null +++ b/android/dist/armv7a/include/libwebsockets.h @@ -0,0 +1,1207 @@ +/* + * libwebsockets - small server side websockets and web server implementation + * + * Copyright (C) 2010-2013 Andy Green + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation: + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C +#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C + +#ifdef __cplusplus +extern "C" { +#include +#endif + +#ifdef CMAKE_BUILD +#include "lws_config.h" +#endif + +#if defined(WIN32) || defined(_WIN32) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#include + +#define strcasecmp stricmp +#define getdtablesize() 30000 + +#define LWS_VISIBLE + +#ifdef LWS_DLL +#ifdef LWS_INTERNAL +#define LWS_EXTERN extern __declspec(dllexport) +#else +#define LWS_EXTERN extern __declspec(dllimport) +#endif +#else +#define LWS_EXTERN +#endif + +#else // NOT WIN32 + +#include +#include + +#if defined(__GNUC__) +#define LWS_VISIBLE __attribute__((visibility("default"))) +#else +#define LWS_VISIBLE +#endif + +#endif + +#ifdef LWS_USE_LIBEV +#include +#endif /* LWS_USE_LIBEV */ + +#include + +#ifndef LWS_EXTERN +#define LWS_EXTERN extern +#endif + +#ifdef _WIN32 +#define random rand +#else +#include +#include +#endif + +#define CONTEXT_PORT_NO_LISTEN -1 +#define MAX_MUX_RECURSION 2 + +enum lws_log_levels { + LLL_ERR = 1 << 0, + LLL_WARN = 1 << 1, + LLL_NOTICE = 1 << 2, + LLL_INFO = 1 << 3, + LLL_DEBUG = 1 << 4, + LLL_PARSER = 1 << 5, + LLL_HEADER = 1 << 6, + LLL_EXT = 1 << 7, + LLL_CLIENT = 1 << 8, + LLL_LATENCY = 1 << 9, + + LLL_COUNT = 10 /* set to count of valid flags */ +}; + +LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); + +/* notice, warn and log are always compiled in */ +#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) +#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) +#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) +/* + * weaker logging can be deselected at configure time using --disable-debug + * that gets rid of the overhead of checking while keeping _warn and _err + * active + */ +#ifdef _DEBUG + +#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) +#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) +#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) +#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) +#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) +#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) +#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) +LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); + +#else /* no debug */ + +#define lwsl_info(...) +#define lwsl_debug(...) +#define lwsl_parser(...) +#define lwsl_header(...) +#define lwsl_ext(...) +#define lwsl_client(...) +#define lwsl_latency(...) +#define lwsl_hexdump(a, b) + +#endif + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +/* api change list for user code to test against */ + +#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG + + +enum libwebsocket_context_options { + LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2, + LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = 4, + LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT = 8, + LWS_SERVER_OPTION_LIBEV = 16, + LWS_SERVER_OPTION_DISABLE_IPV6 = 32, + LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = 64, +}; + +enum libwebsocket_callback_reasons { + LWS_CALLBACK_ESTABLISHED, + LWS_CALLBACK_CLIENT_CONNECTION_ERROR, + LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, + LWS_CALLBACK_CLIENT_ESTABLISHED, + LWS_CALLBACK_CLOSED, + LWS_CALLBACK_CLOSED_HTTP, + LWS_CALLBACK_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE_PONG, + LWS_CALLBACK_CLIENT_WRITEABLE, + LWS_CALLBACK_SERVER_WRITEABLE, + LWS_CALLBACK_HTTP, + LWS_CALLBACK_HTTP_BODY, + LWS_CALLBACK_HTTP_BODY_COMPLETION, + LWS_CALLBACK_HTTP_FILE_COMPLETION, + LWS_CALLBACK_HTTP_WRITEABLE, + LWS_CALLBACK_FILTER_NETWORK_CONNECTION, + LWS_CALLBACK_FILTER_HTTP_CONNECTION, + LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, + LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION, + LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, + LWS_CALLBACK_CONFIRM_EXTENSION_OKAY, + LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED, + LWS_CALLBACK_PROTOCOL_INIT, + LWS_CALLBACK_PROTOCOL_DESTROY, + LWS_CALLBACK_WSI_CREATE, /* always protocol[0] */ + LWS_CALLBACK_WSI_DESTROY, /* always protocol[0] */ + LWS_CALLBACK_GET_THREAD_ID, + + /* external poll() management support */ + LWS_CALLBACK_ADD_POLL_FD, + LWS_CALLBACK_DEL_POLL_FD, + LWS_CALLBACK_CHANGE_MODE_POLL_FD, + LWS_CALLBACK_LOCK_POLL, + LWS_CALLBACK_UNLOCK_POLL, + + LWS_CALLBACK_USER = 1000, /* user code can use any including / above */ +}; + +// argument structure for all external poll related calls +// passed in via 'in' +struct libwebsocket_pollargs { + int fd; // applicable file descriptor + int events; // the new event mask + int prev_events; // the previous event mask +}; + +#ifdef _WIN32 +struct libwebsocket_pollfd { + SOCKET fd; + SHORT events; + SHORT revents; +}; +#else +#define libwebsocket_pollfd pollfd +#endif + +enum libwebsocket_extension_callback_reasons { + LWS_EXT_CALLBACK_SERVER_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_SERVER_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONSTRUCT, + LWS_EXT_CALLBACK_CHECK_OK_TO_REALLY_CLOSE, + LWS_EXT_CALLBACK_CHECK_OK_TO_PROPOSE_EXTENSION, + LWS_EXT_CALLBACK_DESTROY, + LWS_EXT_CALLBACK_DESTROY_ANY_WSI_CLOSING, + LWS_EXT_CALLBACK_ANY_WSI_ESTABLISHED, + LWS_EXT_CALLBACK_PACKET_RX_PREPARSE, + LWS_EXT_CALLBACK_PACKET_TX_PRESEND, + LWS_EXT_CALLBACK_PACKET_TX_DO_SEND, + LWS_EXT_CALLBACK_HANDSHAKE_REPLY_TX, + LWS_EXT_CALLBACK_FLUSH_PENDING_TX, + LWS_EXT_CALLBACK_EXTENDED_PAYLOAD_RX, + LWS_EXT_CALLBACK_CAN_PROXY_CLIENT_CONNECTION, + LWS_EXT_CALLBACK_1HZ, + LWS_EXT_CALLBACK_REQUEST_ON_WRITEABLE, + LWS_EXT_CALLBACK_IS_WRITEABLE, + LWS_EXT_CALLBACK_PAYLOAD_TX, + LWS_EXT_CALLBACK_PAYLOAD_RX, +}; + +enum libwebsocket_write_protocol { + LWS_WRITE_TEXT, + LWS_WRITE_BINARY, + LWS_WRITE_CONTINUATION, + LWS_WRITE_HTTP, + + /* special 04+ opcodes */ + + LWS_WRITE_CLOSE, + LWS_WRITE_PING, + LWS_WRITE_PONG, + + /* flags */ + + LWS_WRITE_NO_FIN = 0x40, + /* + * client packet payload goes out on wire unmunged + * only useful for security tests since normal servers cannot + * decode the content if used + */ + LWS_WRITE_CLIENT_IGNORE_XOR_MASK = 0x80 +}; + +/* + * you need these to look at headers that have been parsed if using the + * LWS_CALLBACK_FILTER_CONNECTION callback. If a header from the enum + * list below is absent, .token = NULL and token_len = 0. Otherwise .token + * points to .token_len chars containing that header content. + */ + +struct lws_tokens { + char *token; + int token_len; +}; + +enum lws_token_indexes { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_HOST, + WSI_TOKEN_CONNECTION, + WSI_TOKEN_KEY1, + WSI_TOKEN_KEY2, + WSI_TOKEN_PROTOCOL, + WSI_TOKEN_UPGRADE, + WSI_TOKEN_ORIGIN, + WSI_TOKEN_DRAFT, + WSI_TOKEN_CHALLENGE, + + /* new for 04 */ + WSI_TOKEN_KEY, + WSI_TOKEN_VERSION, + WSI_TOKEN_SWORIGIN, + + /* new for 05 */ + WSI_TOKEN_EXTENSIONS, + + /* client receives these */ + WSI_TOKEN_ACCEPT, + WSI_TOKEN_NONCE, + WSI_TOKEN_HTTP, + + /* http-related */ + WSI_TOKEN_HTTP_ACCEPT, + WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, + WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, + WSI_TOKEN_HTTP_IF_NONE_MATCH, + WSI_TOKEN_HTTP_ACCEPT_ENCODING, + WSI_TOKEN_HTTP_ACCEPT_LANGUAGE, + WSI_TOKEN_HTTP_PRAGMA, + WSI_TOKEN_HTTP_CACHE_CONTROL, + WSI_TOKEN_HTTP_AUTHORIZATION, + WSI_TOKEN_HTTP_COOKIE, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + WSI_TOKEN_HTTP_CONTENT_TYPE, + WSI_TOKEN_HTTP_DATE, + WSI_TOKEN_HTTP_RANGE, + WSI_TOKEN_HTTP_REFERER, + WSI_TOKEN_HTTP_URI_ARGS, + + + WSI_TOKEN_MUXURL, + + /* use token storage to stash these */ + + _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, + _WSI_TOKEN_CLIENT_PEER_ADDRESS, + _WSI_TOKEN_CLIENT_URI, + _WSI_TOKEN_CLIENT_HOST, + _WSI_TOKEN_CLIENT_ORIGIN, + + /* always last real token index*/ + WSI_TOKEN_COUNT, + /* parser state additions */ + WSI_TOKEN_NAME_PART, + WSI_TOKEN_SKIPPING, + WSI_TOKEN_SKIPPING_SAW_CR, + WSI_PARSING_COMPLETE, + WSI_INIT_TOKEN_MUXURL, +}; + +struct lws_token_limits { + unsigned short token_limit[WSI_TOKEN_COUNT]; +}; + +/* + * From RFC 6455 + 1000 + + 1000 indicates a normal closure, meaning that the purpose for + which the connection was established has been fulfilled. + + 1001 + + 1001 indicates that an endpoint is "going away", such as a server + going down or a browser having navigated away from a page. + + 1002 + + 1002 indicates that an endpoint is terminating the connection due + to a protocol error. + + 1003 + + 1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g., an + endpoint that understands only text data MAY send this if it + receives a binary message). + + 1004 + + Reserved. The specific meaning might be defined in the future. + + 1005 + + 1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that no status + code was actually present. + + 1006 + + 1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed abnormally, e.g., without sending or + receiving a Close control frame. + + 1007 + + 1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). + + 1008 + + 1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. This + is a generic status code that can be returned when there is no + other more suitable status code (e.g., 1003 or 1009) or if there + is a need to hide specific details about the policy. + + 1009 + + 1009 indicates that an endpoint is terminating the connection + because it has received a message that is too big for it to + process. + + 1010 + + 1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake. The list of extensions that + are needed SHOULD appear in the /reason/ part of the Close frame. + Note that this status code is not used by the server, because it + can fail the WebSocket handshake instead. + + 1011 + + 1011 indicates that a server is terminating the connection because + it encountered an unexpected condition that prevented it from + fulfilling the request. + + 1015 + + 1015 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed due to a failure to perform a TLS handshake + (e.g., the server certificate can't be verified). +*/ + +enum lws_close_status { + LWS_CLOSE_STATUS_NOSTATUS = 0, + LWS_CLOSE_STATUS_NORMAL = 1000, + LWS_CLOSE_STATUS_GOINGAWAY = 1001, + LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002, + LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003, + LWS_CLOSE_STATUS_RESERVED = 1004, + LWS_CLOSE_STATUS_NO_STATUS = 1005, + LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006, + LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007, + LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008, + LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009, + LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010, + LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, + LWS_CLOSE_STATUS_TLS_FAILURE = 1015, +}; + +enum http_status { + HTTP_STATUS_OK = 200, + HTTP_STATUS_NO_CONTENT = 204, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_UNAUTHORIZED, + HTTP_STATUS_PAYMENT_REQUIRED, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_METHOD_NOT_ALLOWED, + HTTP_STATUS_NOT_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQUIRED, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_LENGTH_REQUIRED, + HTTP_STATUS_PRECONDITION_FAILED, + HTTP_STATUS_REQ_ENTITY_TOO_LARGE, + HTTP_STATUS_REQ_URI_TOO_LONG, + HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, + HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, + HTTP_STATUS_EXPECTATION_FAILED, + + HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, + HTTP_STATUS_NOT_IMPLEMENTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAILABLE, + HTTP_STATUS_GATEWAY_TIMEOUT, + HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, +}; + +struct libwebsocket; +struct libwebsocket_context; +/* needed even with extensions disabled for create context */ +struct libwebsocket_extension; + +/** + * callback_function() - User server actions + * @context: Websockets context + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * This callback is the way the user controls what is served. All the + * protocol detail is hidden and handled by the library. + * + * For each connection / session there is user data allocated that is + * pointed to by "user". You set the size of this user data area when + * the library is initialized with libwebsocket_create_server. + * + * You get an opportunity to initialize user data when called back with + * LWS_CALLBACK_ESTABLISHED reason. + * + * LWS_CALLBACK_ESTABLISHED: after the server completes a handshake with + * an incoming client + * + * LWS_CALLBACK_CLIENT_CONNECTION_ERROR: the request client connection has + * been unable to complete a handshake with the remote server + * + * LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: this is the last chance for the + * client user code to examine the http headers + * and decide to reject the connection. If the + * content in the headers is interesting to the + * client (url, etc) it needs to copy it out at + * this point since it will be destroyed before + * the CLIENT_ESTABLISHED call + * + * LWS_CALLBACK_CLIENT_ESTABLISHED: after your client connection completed + * a handshake with the remote server + * + * LWS_CALLBACK_CLOSED: when the websocket session ends + * + * LWS_CALLBACK_CLOSED_HTTP: when a HTTP (non-websocket) session ends + * + * LWS_CALLBACK_RECEIVE: data has appeared for this server endpoint from a + * remote client, it can be found at *in and is + * len bytes long + * + * LWS_CALLBACK_CLIENT_RECEIVE_PONG: if you elected to see PONG packets, + * they appear with this callback reason. PONG + * packets only exist in 04+ protocol + * + * LWS_CALLBACK_CLIENT_RECEIVE: data has appeared from the server for the + * client connection, it can be found at *in and + * is len bytes long + * + * LWS_CALLBACK_HTTP: an http request has come from a client that is not + * asking to upgrade the connection to a websocket + * one. This is a chance to serve http content, + * for example, to send a script to the client + * which will then open the websockets connection. + * @in points to the URI path requested and + * libwebsockets_serve_http_file() makes it very + * simple to send back a file to the client. + * Normally after sending the file you are done + * with the http connection, since the rest of the + * activity will come by websockets from the script + * that was delivered by http, so you will want to + * return 1; to close and free up the connection. + * That's important because it uses a slot in the + * total number of client connections allowed set + * by MAX_CLIENTS. + * + * LWS_CALLBACK_HTTP_BODY: the next @len bytes data from the http + * request body HTTP connection is now available in @in. + * + * LWS_CALLBACK_HTTP_BODY_COMPLETION: the expected amount of http request + * body has been delivered + * + * LWS_CALLBACK_HTTP_WRITEABLE: you can write more down the http protocol + * link now. + * + * LWS_CALLBACK_HTTP_FILE_COMPLETION: a file requested to be send down + * http link has completed. + * + * LWS_CALLBACK_CLIENT_WRITEABLE: + * LWS_CALLBACK_SERVER_WRITEABLE: If you call + * libwebsocket_callback_on_writable() on a connection, you will + * get one of these callbacks coming when the connection socket + * is able to accept another write packet without blocking. + * If it already was able to take another packet without blocking, + * you'll get this callback at the next call to the service loop + * function. Notice that CLIENTs get LWS_CALLBACK_CLIENT_WRITEABLE + * and servers get LWS_CALLBACK_SERVER_WRITEABLE. + * + * LWS_CALLBACK_FILTER_NETWORK_CONNECTION: called when a client connects to + * the server at network level; the connection is accepted but then + * passed to this callback to decide whether to hang up immediately + * or not, based on the client IP. @in contains the connection + * socket's descriptor. Since the client connection information is + * not available yet, @wsi still pointing to the main server socket. + * Return non-zero to terminate the connection before sending or + * receiving anything. Because this happens immediately after the + * network connection from the client, there's no websocket protocol + * selected yet so this callback is issued only to protocol 0. + * + * LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED: A new client just had + * been connected, accepted, and instantiated into the pool. This + * callback allows setting any relevant property to it. Because this + * happens immediately after the instantiation of a new client, + * there's no websocket protocol selected yet so this callback is + * issued only to protocol 0. Only @wsi is defined, pointing to the + * new client, and the return value is ignored. + * + * LWS_CALLBACK_FILTER_HTTP_CONNECTION: called when the request has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the URI, eg, "/" + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the http + * connection to proceed or to kill the connection. + * + * LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION: called when the handshake has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the requested protocol name + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the handshake + * to proceed or to kill the connection. + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to perform extra SSL_CTX_load_verify_locations() or similar + * calls to direct OpenSSL where to find certificates the client + * can use to confirm the remote server identity. @user is the + * OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to load extra certifcates into the server which allow it to + * verify the validity of certificates returned by clients. @user + * is the server's OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION: if the + * libwebsockets context was created with the option + * LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, then this + * callback is generated during OpenSSL verification of the cert + * sent from the client. It is sent to protocol[0] callback as + * no protocol has been negotiated on the connection yet. + * Notice that the libwebsockets context and wsi are both NULL + * during this callback. See + * http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html + * to understand more detail about the OpenSSL callback that + * generates this libwebsockets callback and the meanings of the + * arguments passed. In this callback, @user is the x509_ctx, + * @in is the ssl pointer and @len is preverify_ok + * Notice that this callback maintains libwebsocket return + * conventions, return 0 to mean the cert is OK or 1 to fail it. + * This also means that if you don't handle this callback then + * the default callback action of returning 0 allows the client + * certificates. + * + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER: this callback happens + * when a client handshake is being compiled. @user is NULL, + * @in is a char **, it's pointing to a char * which holds the + * next location in the header buffer where you can add + * headers, and @len is the remaining space in the header buffer, + * which is typically some hundreds of bytes. So, to add a canned + * cookie, your handler code might look similar to: + * + * char **p = (char **)in; + * + * if (len < 100) + * return 1; + * + * *p += sprintf(*p, "Cookie: a=b\x0d\x0a"); + * + * return 0; + * + * Notice if you add anything, you just have to take care about + * the CRLF on the line you added. Obviously this callback is + * optional, if you don't handle it everything is fine. + * + * Notice the callback is coming to protocols[0] all the time, + * because there is no specific protocol handshook yet. + * + * LWS_CALLBACK_CONFIRM_EXTENSION_OKAY: When the server handshake code + * sees that it does support a requested extension, before + * accepting the extension by additing to the list sent back to + * the client it gives this callback just to check that it's okay + * to use that extension. It calls back to the requested protocol + * and with @in being the extension name, @len is 0 and @user is + * valid. Note though at this time the ESTABLISHED callback hasn't + * happened yet so if you initialize @user content there, @user + * content during this callback might not be useful for anything. + * Notice this callback comes to protocols[0]. + * + * LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED: When a client + * connection is being prepared to start a handshake to a server, + * each supported extension is checked with protocols[0] callback + * with this reason, giving the user code a chance to suppress the + * claim to support that extension by returning non-zero. If + * unhandled, by default 0 will be returned and the extension + * support included in the header to the server. Notice this + * callback comes to protocols[0]. + * + * LWS_CALLBACK_PROTOCOL_INIT: One-time call per protocol so it can + * do initial setup / allocations etc + * + * LWS_CALLBACK_PROTOCOL_DESTROY: One-time call per protocol indicating + * this protocol won't get used at all after this callback, the + * context is getting destroyed. Take the opportunity to + * deallocate everything that was allocated by the protocol. + * + * LWS_CALLBACK_WSI_CREATE: outermost (earliest) wsi create notification + * + * LWS_CALLBACK_WSI_DESTROY: outermost (latest) wsi destroy notification + * + * The next five reasons are optional and only need taking care of if you + * will be integrating libwebsockets sockets into an external polling + * array. + * + * For these calls, @in points to a struct libwebsocket_pollargs that + * contains @fd, @events and @prev_events members + * + * LWS_CALLBACK_ADD_POLL_FD: libwebsocket deals with its poll() loop + * internally, but in the case you are integrating with another + * server you will need to have libwebsocket sockets share a + * polling array with the other server. This and the other + * POLL_FD related callbacks let you put your specialized + * poll array interface code in the callback for protocol 0, the + * first protocol you support, usually the HTTP protocol in the + * serving case. + * This callback happens when a socket needs to be + * added to the polling loop: @in points to a struct + * libwebsocket_pollargs; the @fd member of the struct is the file + * descriptor, and @events contains the active events. + * + * If you are using the internal polling loop (the "service" + * callback), you can just ignore these callbacks. + * + * LWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor + * needs to be removed from an external polling array. @in is + * again the struct libwebsocket_pollargs containing the @fd member + * to be removed. If you are using the internal polling + * loop, you can just ignore it. + * + * LWS_CALLBACK_CHANGE_MODE_POLL_FD: This callback happens when + * libwebsockets wants to modify the events for a connectiion. + * @in is the struct libwebsocket_pollargs with the @fd to change. + * The new event mask is in @events member and the old mask is in + * the @prev_events member. + * If you are using the internal polling loop, you can just ignore + * it. + * + * LWS_CALLBACK_LOCK_POLL: + * LWS_CALLBACK_UNLOCK_POLL: These allow the external poll changes driven + * by libwebsockets to participate in an external thread locking + * scheme around the changes, so the whole thing is threadsafe. + */ +LWS_VISIBLE LWS_EXTERN int callback(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +typedef int (callback_function)(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +#ifndef LWS_NO_EXTENSIONS +/** + * extension_callback_function() - Hooks to allow extensions to operate + * @context: Websockets context + * @ext: This extension + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * Each extension that is active on a particular connection receives + * callbacks during the connection lifetime to allow the extension to + * operate on websocket data and manage itself. + * + * Libwebsockets takes care of allocating and freeing "user" memory for + * each active extension on each connection. That is what is pointed to + * by the @user parameter. + * + * LWS_EXT_CALLBACK_CONSTRUCT: called when the server has decided to + * select this extension from the list provided by the client, + * just before the server will send back the handshake accepting + * the connection with this extension active. This gives the + * extension a chance to initialize its connection context found + * in @user. + * + * LWS_EXT_CALLBACK_CLIENT_CONSTRUCT: same as LWS_EXT_CALLBACK_CONSTRUCT + * but called when client is instantiating this extension. Some + * extensions will work the same on client and server side and then + * you can just merge handlers for both CONSTRUCTS. + * + * LWS_EXT_CALLBACK_DESTROY: called when the connection the extension was + * being used on is about to be closed and deallocated. It's the + * last chance for the extension to deallocate anything it has + * allocated in the user data (pointed to by @user) before the + * user data is deleted. This same callback is used whether you + * are in client or server instantiation context. + * + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE: when this extension was active on + * a connection, and a packet of data arrived at the connection, + * it is passed to this callback to give the extension a chance to + * change the data, eg, decompress it. @user is pointing to the + * extension's private connection context data, @in is pointing + * to an lws_tokens struct, it consists of a char * pointer called + * token, and an int called token_len. At entry, these are + * set to point to the received buffer and set to the content + * length. If the extension will grow the content, it should use + * a new buffer allocated in its private user context data and + * set the pointed-to lws_tokens members to point to its buffer. + * + * LWS_EXT_CALLBACK_PACKET_TX_PRESEND: this works the same way as + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE above, except it gives the + * extension a chance to change websocket data just before it will + * be sent out. Using the same lws_token pointer scheme in @in, + * the extension can change the buffer and the length to be + * transmitted how it likes. Again if it wants to grow the + * buffer safely, it should copy the data into its own buffer and + * set the lws_tokens token pointer to it. + */ +LWS_VISIBLE LWS_EXTERN int extension_callback(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); + +typedef int (extension_callback_function)(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); +#endif + +/** + * struct libwebsocket_protocols - List of protocols and handlers server + * supports. + * @name: Protocol name that must match the one given in the client + * Javascript new WebSocket(url, 'protocol') name + * @callback: The service callback used for this protocol. It allows the + * service action for an entire protocol to be encapsulated in + * the protocol-specific callback + * @per_session_data_size: Each new connection using this protocol gets + * this much memory allocated on connection establishment and + * freed on connection takedown. A pointer to this per-connection + * allocation is passed into the callback in the 'user' parameter + * @rx_buffer_size: if you want atomic frames delivered to the callback, you + * should set this to the size of the biggest legal frame that + * you support. If the frame size is exceeded, there is no + * error, but the buffer will spill to the user callback when + * full, which you can detect by using + * libwebsockets_remaining_packet_payload(). Notice that you + * just talk about frame size here, the LWS_SEND_BUFFER_PRE_PADDING + * and post-padding are automatically also allocated on top. + * @no_buffer_all_partial_tx: Leave at zero if you want the library to take + * care of all partial tx for you. It's useful if you only have + * small tx packets and the chance of any truncated send is small + * enough any additional malloc / buffering overhead is less + * painful than writing the code to deal with partial sends. For + * protocols where you stream big blocks, set to nonzero and use + * the return value from libwebsocket_write() to manage how much + * got send yourself. + * @owning_server: the server init call fills in this opaque pointer when + * registering this protocol with the server. + * @protocol_index: which protocol we are starting from zero + * + * This structure represents one protocol supported by the server. An + * array of these structures is passed to libwebsocket_create_server() + * allows as many protocols as you like to be handled by one server. + */ + +struct libwebsocket_protocols { + const char *name; + callback_function *callback; + size_t per_session_data_size; + size_t rx_buffer_size; + int no_buffer_all_partial_tx; + + /* + * below are filled in on server init and can be left uninitialized, + * no need for user to use them directly either + */ + + struct libwebsocket_context *owning_server; + int protocol_index; +}; + +#ifndef LWS_NO_EXTENSIONS +/** + * struct libwebsocket_extension - An extension we know how to cope with + * + * @name: Formal extension name, eg, "deflate-stream" + * @callback: Service callback + * @per_session_data_size: Libwebsockets will auto-malloc this much + * memory for the use of the extension, a pointer + * to it comes in the @user callback parameter + * @per_context_private_data: Optional storage for this extension that + * is per-context, so it can track stuff across + * all sessions, etc, if it wants + */ + +struct libwebsocket_extension { + const char *name; + extension_callback_function *callback; + size_t per_session_data_size; + void *per_context_private_data; +}; +#endif + +/** + * struct lws_context_creation_info: parameters to create context with + * + * @port: Port to listen on... you can use 0 to suppress listening on + * any port, that's what you want if you are not running a + * websocket server at all but just using it as a client + * @iface: NULL to bind the listen socket to all interfaces, or the + * interface name, eg, "eth2" + * @protocols: Array of structures listing supported protocols and a protocol- + * specific callback for each one. The list is ended with an + * entry that has a NULL callback pointer. + * It's not const because we write the owning_server member + * @extensions: NULL or array of libwebsocket_extension structs listing the + * extensions this context supports. If you configured with + * --without-extensions, you should give NULL here. + * @token_limits: NULL or struct lws_token_limits pointer which is initialized + * with a token length limit for each possible WSI_TOKEN_*** + * @ssl_cert_filepath: If libwebsockets was compiled to use ssl, and you want + * to listen using SSL, set to the filepath to fetch the + * server cert from, otherwise NULL for unencrypted + * @ssl_private_key_filepath: filepath to private key if wanting SSL mode, + * else ignored + * @ssl_ca_filepath: CA certificate filepath or NULL + * @ssl_cipher_list: List of valid ciphers to use (eg, + * "RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" + * or you can leave it as NULL to get "DEFAULT" + * @gid: group id to change to after setting listen socket, or -1. + * @uid: user id to change to after setting listen socket, or -1. + * @options: 0, or LWS_SERVER_OPTION_DEFEAT_CLIENT_MASK + * @user: optional user pointer that can be recovered via the context + * pointer using libwebsocket_context_user + * @ka_time: 0 for no keepalive, otherwise apply this keepalive timeout to + * all libwebsocket sockets, client or server + * @ka_probes: if ka_time was nonzero, after the timeout expires how many + * times to try to get a response from the peer before giving up + * and killing the connection + * @ka_interval: if ka_time was nonzero, how long to wait before each ka_probes + * attempt + */ + +struct lws_context_creation_info { + int port; + const char *iface; + struct libwebsocket_protocols *protocols; + struct libwebsocket_extension *extensions; + struct lws_token_limits *token_limits; + const char *ssl_cert_filepath; + const char *ssl_private_key_filepath; + const char *ssl_ca_filepath; + const char *ssl_cipher_list; + const char *http_proxy_address; + unsigned int http_proxy_port; + int gid; + int uid; + unsigned int options; + void *user; + int ka_time; + int ka_probes; + int ka_interval; + +}; + +LWS_VISIBLE LWS_EXTERN +void lws_set_log_level(int level, + void (*log_emit_function)(int level, const char *line)); + +LWS_VISIBLE LWS_EXTERN void +lwsl_emit_syslog(int level, const char *line); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket_context * +libwebsocket_create_context(struct lws_context_creation_info *info); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_set_proxy(struct libwebsocket_context *context, const char *proxy); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_context_destroy(struct libwebsocket_context *context); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service(struct libwebsocket_context *context, int timeout_ms); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_cancel_service(struct libwebsocket_context *context); + +#ifdef LWS_USE_LIBEV +LWS_VISIBLE LWS_EXTERN int +libwebsocket_initloop( + struct libwebsocket_context *context, struct ev_loop *loop); + +LWS_VISIBLE void +libwebsocket_sigint_cb( + struct ev_loop *loop, struct ev_signal *watcher, int revents); +#endif /* LWS_USE_LIBEV */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service_fd(struct libwebsocket_context *context, + struct libwebsocket_pollfd *pollfd); + +LWS_VISIBLE LWS_EXTERN void * +libwebsocket_context_user(struct libwebsocket_context *context); + +enum pending_timeout { + NO_PENDING_TIMEOUT = 0, + PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE, + PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE, + PENDING_TIMEOUT_ESTABLISH_WITH_SERVER, + PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE, + PENDING_TIMEOUT_AWAITING_PING, + PENDING_TIMEOUT_CLOSE_ACK, + PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE, + PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE, + PENDING_TIMEOUT_SSL_ACCEPT, + PENDING_TIMEOUT_HTTP_CONTENT, + PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND, +}; + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_set_timeout(struct libwebsocket *wsi, + enum pending_timeout reason, int secs); + +/* + * IMPORTANT NOTICE! + * + * When sending with websocket protocol (LWS_WRITE_TEXT or LWS_WRITE_BINARY) + * the send buffer has to have LWS_SEND_BUFFER_PRE_PADDING bytes valid BEFORE + * buf, and LWS_SEND_BUFFER_POST_PADDING bytes valid AFTER (buf + len). + * + * This allows us to add protocol info before and after the data, and send as + * one packet on the network without payload copying, for maximum efficiency. + * + * So for example you need this kind of code to use libwebsocket_write with a + * 128-byte payload + * + * char buf[LWS_SEND_BUFFER_PRE_PADDING + 128 + LWS_SEND_BUFFER_POST_PADDING]; + * + * // fill your part of the buffer... for example here it's all zeros + * memset(&buf[LWS_SEND_BUFFER_PRE_PADDING], 0, 128); + * + * libwebsocket_write(wsi, &buf[LWS_SEND_BUFFER_PRE_PADDING], 128, + * LWS_WRITE_TEXT); + * + * When sending LWS_WRITE_HTTP, there is no protocol addition and you can just + * use the whole buffer without taking care of the above. + */ + +/* + * this is the frame nonce plus two header plus 8 length + * there's an additional two for mux extension per mux nesting level + * 2 byte prepend on close will already fit because control frames cannot use + * the big length style + */ + +#define LWS_SEND_BUFFER_PRE_PADDING (4 + 10 + (2 * MAX_MUX_RECURSION)) +#define LWS_SEND_BUFFER_POST_PADDING 4 + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, size_t len, + enum libwebsocket_write_protocol protocol); + +/* helper for case where buffer may be const */ +#define libwebsocket_write_http(wsi, buf, len) \ + libwebsocket_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file(struct libwebsocket_context *context, + struct libwebsocket *wsi, const char *file, + const char *content_type, const char *other_headers); +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int libwebsockets_return_http_status( + struct libwebsocket_context *context, + struct libwebsocket *wsi, unsigned int code, + const char *html_body); + +LWS_VISIBLE LWS_EXTERN const struct libwebsocket_protocols * +libwebsockets_get_protocol(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_all_protocol( + const struct libwebsocket_protocols *protocol, int reason); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_get_socket_fd(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_is_final_fragment(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char +libwebsocket_get_reserved_bits(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_rx_flow_control(struct libwebsocket *wsi, int enable); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_rx_flow_allow_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN size_t +libwebsockets_remaining_packet_payload(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect_extended(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one, + void *userdata); + +LWS_VISIBLE LWS_EXTERN const char * +libwebsocket_canonical_hostname(struct libwebsocket_context *context); + + +LWS_VISIBLE LWS_EXTERN void +libwebsockets_get_peer_addresses(struct libwebsocket_context *context, + struct libwebsocket *wsi, int fd, char *name, int name_len, + char *rip, int rip_len); + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_get_random(struct libwebsocket_context *context, + void *buf, int len); + +LWS_VISIBLE LWS_EXTERN int +lws_daemonize(const char *_lock_path); + +LWS_VISIBLE LWS_EXTERN int +lws_send_pipe_choked(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +lws_frame_is_binary(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char * +libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_encode_string(const char *in, int in_len, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_decode_string(const char *in, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN const char * +lws_get_library_version(void); + +/* access to headers... only valid while headers valid */ + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_total_length(struct libwebsocket *wsi, enum lws_token_indexes h); + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_copy(struct libwebsocket *wsi, char *dest, int len, + enum lws_token_indexes h); + +/* + * Note: this is not normally needed as a user api. It's provided in case it is + * useful when integrating with other app poll loop service code. + */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_read(struct libwebsocket_context *context, + struct libwebsocket *wsi, + unsigned char *buf, size_t len); + +#ifndef LWS_NO_EXTENSIONS +LWS_VISIBLE LWS_EXTERN struct libwebsocket_extension *libwebsocket_get_internal_extensions(); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake b/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake new file mode 100644 index 0000000000..ece070d53d --- /dev/null +++ b/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake @@ -0,0 +1,31 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "websockets" for configuration "" +set_property(TARGET websockets APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-8/arch-arm/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets "${_IMPORT_PREFIX}/lib/libwebsockets.a" ) + +# Import target "websockets_shared" for configuration "" +set_property(TARGET websockets_shared APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets_shared PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-8/arch-arm/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" + IMPORTED_SONAME_NOCONFIG "libwebsockets.so.4.0.0" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets_shared ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets_shared "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake b/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake new file mode 100644 index 0000000000..848b03ccc2 --- /dev/null +++ b/android/dist/armv7a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake @@ -0,0 +1,93 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget websockets websockets_shared) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target websockets +add_library(websockets STATIC IMPORTED) + +# Create imported target websockets_shared +add_library(websockets_shared SHARED IMPORTED) + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/LibwebsocketsTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/android/dist/armv7a/lib/libwebsockets.a b/android/dist/armv7a/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..3abf13370430ba0209aa5335d362456c4f5fe32e GIT binary patch literal 136958 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

j-_18fzcb{Q0W$oc09x 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 literal 0 HcmV?d00001 diff --git a/android/dist/armv7a/lib/libwebsockets.so b/android/dist/armv7a/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..7628871f95dda076fe7cec1ea0f012a15009e07d GIT binary patch literal 109472 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

GlZ0tCgB`9Nn~ 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 literal 0 HcmV?d00001 diff --git a/android/dist/armv7a/lib/libwebsockets.so.4.0.0 b/android/dist/armv7a/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..7628871f95dda076fe7cec1ea0f012a15009e07d GIT binary patch literal 109472 zcma%^4R}=5wfE0_B_RYDAZU!K9u$=->VUMRigi@9*wQ*cRIF$wBmq)GGA0qx+B%S+ zs6->6B8AJ?+SYo#ZK_;rebEkrmfF~&(AIiQoez#+u$8vj(tEAEzyFzY!eMIrIM1`Q z_u8LpueJ8tYp=7<$!(X+y42_M8SXD&Of+0*Dw)f^YeS)_hG~>hHlDbIe3iMuZa}pl zc?toQ0lQ%=u!73S9_pW@{k!!Y!%zqb3Kz=f{lPHi{i6`J(r^bsaB%(hz3^(+Gu!7nu%%Qz^{6`s3!R`O-j+;9=o0gotpt<$z zmgd&$o7(?rsH5gMhGNhj`U(C7Vb{b0jmALPbATV;YLGGv!CxQ_o^BX%#uYpt_>Hre zuT$PcJQG+vQ295ASM~9SpWu6m8z&h?jL8a4slfSZ{6}4YSg_O7&K=F)|0ZlX(=aNC z)&5t+Y2Z~3{AXhKr}lp%+zLJ}{$m)o+XGJlPJ7@l0q+EM`)>i><0-!z*!`*h`+>JO z^f`%99tZBc#4wVS3BO+!)!$tNzflC|fVW<57*#M_?cXmd{|E5QPceo={}YJapYS;y zxavO&@}lSgu-~^fTuoqWW3XXYtKV|S=1W;BH)dij>zkL z;9lyx{BKkHSx3t62Hp}qLf;f{<$A-I0bkVLkARoapXrSM3b6YV{r(4dJ>^=@s{en$ zyMTw}lY)(mKhr5c3-~?cDel160@q$@7#Rouuc{;Gr~cc37lZFA(&~S8QTcsE@Ot2h zp85U=c+XtJ_yD}r{G;;1R&?Pxw{>cP>0a?}@-k zV3!`31Fr&>o)SKbfY$@hbm-j;{LVLz(DU2C2Z1Lz^|t|M7C}SsQu_h5r@YoF|2wez z6Fz|w`rClcBdz+!1J|&g-2OfT+(@}g-&$bzr}ozr!3&DuB}MSfMeyxKa1ZdjhoFx$ z-|qugZUhGh{z*~&=ZfGLi{RbBlkQ=TPWyL(t5|#qaMye*OWoNBHjME_@To=cB;dWs zPsC||eo^_1BKQkM@a!UZUJ-n45xk%XUQz_#Tm*L&!K;ekdx2kL{Y4%8zg1NJXc7Db za1?oP=DlT@ef1a{fs^xxB_^q z#~wHt*!`VE;ymCP=|YaizY=(=2W|td^}uU^8$Iw3fZy@JKL>Vy!uMCeW*QoiR{vSx zPK+i^OYlM9TY(>O;EHnUKLyPk_*CHOz?}|!E^r^P>A+V5?*c}=?EbzAya%|-fmZ;( z13ce>*8nGed<6a$@FC!xPWexO-JeO~uk9y!Fu(6H6Pwm$Od+GT&a3$sLe(*vO{08tePx&8;;17W3 zd&;XYG`#Q>;H0PgvLg68;72^=?L}}m@H;OY(Ps|=PeNW@ef0z2>A)_(e+fJf*p&|p zIPQTz0G{ykBlU-kpsoi#rU*8Hz4eW{x`t)-bqkwY>sy*{X>!2&&ZcF}okq(|9d!#n zJ+-c>wV|!Csjj25y}5M}RqC7S7c|%1*m_fQYhztQB2kxUj~Fe@3vOy!(9za#eN$&$ zdsBU*QK$ATZHtaB>Y%u@c}Y{-jh#ojYH4gd9Bev8vEots#u*RnLc4J|JF)=_o zoVc#8O(AY=UTLeZ9-U~s& zJCBC?*0$DWI;vaT*3sEoU(~dtPHl&}KB{SRM}ew!3)|}#Eoo|noZg<*u)PVKmo_!l zEokoSFqU?-4o&hSC_MS-_Cu3vYpuJfy}7e~K}(adu)V3t=vaJXXJgw(G0X~~kdrA=z37R{{-+msgN7Tl~(3k?!CAIY_QrW^2SE8<@Jvbu#WZ8z14zwPkt zDC)U|aF!}Z@%N~D5;oYg>}Cz!u(;i*?`&%}mZ({S@TJ_Aa@9jp>sp$YHZc@a?Px-_ z6U~XHx`xGV*Ebc(h4|Lo&{QXRap~gbC7Rls+Zvl23MFmGUQ09Q{#Lhg2O{23pAf_B zbyC;bR!82^6LdQJr{0fbG`CV`NN`ysZ4A(%B?ar+JEt6}+1S+5)XDNKEX{@OZAx~&j{?I&c#ES4Q&i68PV8Oq@yKGb*y2WHTCVq__Q}Isc&vY8P+AxFOsqPn_JpY zd1|Va4f^dgt6SRC-qGCFdKA{SL`!2eHZfpZVLW?fxvH$GzP;t#8=H^l7|c7h1lwDh(X>ZuDIdwGvvo;_o$q2~7lCtAtEN*ZvwLoAZ%fqG+gm{M zQaG@vpf#FWm)g{na%k$5J9kPXnH*0tL2rbgk(v0dAMeK@Rv8p?|tj?ZZBP$)!*c;Ts#`>ELtqP-{ zHes&2Io;f$eGPw}qJ<5uoh_Q@qUJ_LHxfy67;Oo(;)0IGx{l^W?5_q9%BW#UeaH2N ztwj@^$j0@}jKG))nn`|ax~i!y(#FD$&ic+mbzA8kH3i90LD3)|YSH*T~iC0>)$ zu(+|At-HO+CIGXpZx9oWg#|j+x74>UF%tFc*oKq{s<^qWK_u*KZ@e*K)HOBMch;lH z7IdJ8JL}sq6r>tl!$ZbG1ZYv~jdeFVmIG?01;sm5r`fL4Uf;|Zg_{3Vks6K7=TLg% zQ0gPL-6>AH{)Lx{mX*78FiCCEy+G-@<-RX z>Pugm_b>WY(Zxpnf;Q;HzHOt?AY9s;7O@{Vh=0DR^WsY{Eb3h3xnx;GlfA}{F1xg? zy`ibG(D>*Qrg|fGP=TsW?}fa&w)VO?Z20YMHw}$@aoduFwx6Ml8TM}E8P)0H$~klE zKys*_;JJcrK0B2zLfv+@qXo#8-MXM@QFAK`xv9QYf@9}(-pr=Gq`tFZvD5a(0_&QV zH8tF5TR&;u4lHhKom)@?PFu2PVYA#=zo=<0{A*s=+%Usd8Ar+m&uMD8s9p--NOmn+ zekj{H$h5RzeGMs>mJVr=mX5{k1?^DZu^82Hj<)by&g!s@<|R(t;KYqBPGaZ))Ir8s zQ_qT=72%x9anC+aKTM3P(D*OH_Xzr3On88x=P*e^JK=P~4+-wCjl?X%vu+0Q90G1! z`?rk0=Q`;f#6NM;xKRv_=0m^Fky=N1bSQ_jFln8Y^=l#EDlxt-!1;Z_O%OjvC?PaD zc`4#4gp&yk1pRPb+P|;yw};SN0FD22;*W}MAk#;9lJEp!HenS(za|2YQ;hEm;J306 z*?%u_()T-Y+KCm_dD35W(qAXWwPCC!+(x*Fu#g~M%oc+8#}V81F)Qy%!Vd^%5OBTQ zzyHTyo!N0!+rE}#h;g&pzYhL>hajJe`&&Wc5yDLb+yl1%W)v~59%D0M2?4jIVG{Hk zTZruEE=uC!vVXX4jJpWkggXgQf`01@(NTZTItnt3lYp0d@@^#kUBY%J@25_TyVcl8 zxZ8mjII*HD2wenRI`%Wg$A~}bcRQKYgc#u}!qWu(o*_&o3@5xm_&7h0OZMYb|5$a7 z`&hN)V>9aj~N`AtD%boaCCqCYZz0vs&FwT=X znlvsT;{w8Io_ses$xZx=_*(MkJ7u-Rml3|~z!y5PqH743I`Bj%R&o=6$h2aFJE|A~nxU9QHdFC+?DvZ6(4UIq_}CRUu;(joL>?43 zAzO-B2#tzaaElc;vzIGofh82Ps5%w5@a$Xh5}q+AMzE8L+t^POvw&79z5(5?n2oGg zaVK_zViwtY#W%4(C|+h5DaAL#XT`T*TPXe-d#7R+ai8L^!+*u!fd7h<@L%zA_^)^c z{8!us{}p$`f5j`|zvA2Bzv4UKzv5N!U-6yrU-4b=U-8}WU-4@AuXru|SG*qnEB+7o zulOvzb+i}&V6ytF#E>+f4FH@(x7PJ7Z%d(wTL z^rN11%9CF2N%wlvt32tXC%w#*PI%IbJ?Xe7J8K|?&6AFJ(i1&t)03|9 zq{E(cnI~;{(uWQmq2WPKdcP-~@uXk#q<4AJJ3Z;NC;hZ1-RDU^>Pe?O>Ghs;uP43A zlTLcl%RK3XC%xE{j(gJcJn5JxJ=2qpdeYN8>4+yi(UUek=_*e;>`9k-(uOB}=x-kS zd(!(o>5M1+nkT)>liuk`r#viqJ|mg)B~n=E6e63V?g@7w*<0EaDyR0`3A1?Qk_QiKuY?0-{#UI;c370?uoWd98N{wXZ^}~ms zK||&b-tp{y_2cig`?beYpM!@FSNp>EZ?x75y;No9TE zRQ|8f$?wenr=;KbHoEn~GvD?_Q`zvYFXeWPc|~-|24bmfh1p}33BNzx+soE6$Rq|! z2*U{z32aM)#}L@A2HCm>IqMAi8TWKEl{X_hEa4C{cUW7e?#S*Rz1cF26f_VX_hydu z8C+pXWd&D+dvfoNF%Gax=F9BkMk*iP)ss88{Mr2h%2iKw-g4?Nhw_c|7p6b;6{N2c z>IC7R!PqAQi(Y?Ve(}sY%Sed7#^5}2odvzKZ2RTD*d;kmL3zo^eDdc-)1mzeSL$iiTNI71vH{ylMs7#%QJLd+T;EG2%8xQzHW#KVa95T{1qyAg3Wi{Yl0iuw_hR z{s|lt(E=WfOFun1@mO^JF0=@;o+iY1SRu13Gtum})NdmB?EXncVGirzkLD7g4*XJixtlFSdr+n`)ee7P9N7AyJ%zB{ai;{{f#uve0y1B zGj-2=I}o`ybCKjPvKBcFqbH5(i;xHPQvp7zf9bD!a%HieoaRtDev?(fc)l8R7Pth{ zJ=Rj@GKu~q!`dsLloFCiYn3%}uc% zzEy@EnnK<%;!h9{@zsfM01bT_rQ*9N#vrOKe9dF5&7X;c(U^2 zecDsz4u_Tjbv)~!^lQ(+-55Yf3-IL`|#ld6UArth$w4b z{e73QuLv1K`4#3STdw+T+>r6`CX4%s2c##p=3gX#OXU%LoT5+PUAN~R@#KAzJXc5G z6f_Qmm}4+f*e4dy{=~>0D-gLjhrY{mY}z3GBV0-}CbU%=o|Ts-KA%%t_UEw=QSZ&k zd$RUEK>2NyPi0Ka>o&&o(xMDnT;7r3u#7*BmxB)Z42|Bnr69OK89FSasw_=Cd- zR32hY{QdCZm$deUyAeU|;rlRX-0Af7EPYKfgljC%{`d^?n*THH1#>*9R@t8%cr$SA zw)M9BNO#+PnuR`t#GerF9Nq2Ce;9a`IrA4SW;kPs7AJ$F-x!<6=&62{F~oP9m!E%j z|1Uo{JUD6WX7+FR3@=2JbD>EMdG5aXX%A1vz!R4rGo3N~jImX?Gyj?B_eM|tQ%-&( z`BRkzG7dPC)n%3~MUd&`7yPfq*@r+chQLKUHgU=k(}4ns@PXeGM3jC!J_aMhZ}M#yiVznPx? z{~vG=TxP?cspN}BhS_V&!WPQrQT7GOYKqGKi?T0KRz|+xDCmqw$vca@L+rC|-nYq{ zPM+_sBsvzECI}Dlz?Esq)kMZP^x@$_SC-J(c(JZ^)m7FCk3m zC3F(r*oaSouxkUFmpDzl_nY_|h@U2;Nv|SIB}54cl+Y}~LH3x((e3E;Jo|ih2YZ*n zo@d0jTQ!q=v3&b$<@F&_?4}MR)74zg3efs%$Gywi1?2z>_o>N z@2m&hIOXra2l2X;`H6>lrycssUQapT(r|aK#Ej-tFRSu&K}MlTwg&l-t&*l+?P+C% z|Dn#~+5^~=g@WSqJwC;j6U8*hF96R_F4}UcT-+iE9|L8D*rY%z<%o7=G0kF+*nj6L!CFN zv(%|`FY%0`I=`ikY`i5-o!f~gczCAdnL1OEyC5?5IR39ygw=#v!Zc(q5y9?> z1hj8vM?f!Z&g@kBF`@-~Nit;b0nG0i`qP;wp}m%KDLf2}iEP`K&{>V~rosOR{mPcJ z?a8q0$=P{qwbzU|{EecYjQjU@k6&Zkkba+R$XH(cgaJ=wLn`evYP0X5mt^DlkQHp$ z17-9DUpZgQ&L2x1jZqaxSAeg}TlN1r=pa5n7=6Jym$nz%^ocPp{YKM!F9M#<{7RUY z&6f!B>RTyU$gg02l6j4*^Pg)=S~~p5cc43H8=<#m6tJoRYd-a z*?HNLJdwlZ+&qqS*a&xxQ`=6As}_RJQ2r!5FquoVVBgh9-}FKU@Tr7WCmv@U_yoN5 zp=#7KJICv2ITmk)_H;3u6S+#CFb_Npt}%}A4v zULOYSW@I>H!VA$dh+WVA8_?P;kAPpMpsU{39wlAHIZpi^e{7+@7uZh|(AkxB*>K{S zTURu9)3ZGMP=AsYw@hot?cJrX%LDkS?>`a_Ue0-!eQ<*K z6JZiwo?ysjOfL96|D#qC;$r;qVH{JiL};)Xz*0z=UJEDlg6)y2XnK#SnH7+R#`tm zrZu+^d>m$`vj08WIG{7WEqA>=FVr*VHNZ2mnPsDesAEJPviHgH@O`S2FP-}d$$`_C z0Vu}vcNnHqEhzPrIFWmf2ODYH>r=0ad4WG7lLP!kNe4gh5Uo)&(&*rZn_S;hB&o`XR?G^LYOdv zaHy9whr-{CGX`y+VienkGmQ4Z3hYPO5|db?zBsgnCz?w*&R%D5u7sB8%g1CVolh*e zz;1nJ8vO9xwG!JvM|H{eS@VJAWFM3%v$vUIOC$-K|ru{A0h?I*rGvHMS+@s_1&nEFPGC$b| zHg4kAwg=%C@(4XeNAX5JORaa8o@MBH>G4SK{nql)U73J!-~Kx%cV(pK0!Ei@Q>gua zz@IXBDceNn&7ipsTHJ4~_VuzC&CMIWHTxpHNh?slVqYY@(n4qB+j-C)OE@q`du$t* z=+XQVJ}$qO!3XI>&E-|rrqXVi<}Tl>=BW9q|DicKej?!{d^m5Et6Vx(}g@Bc46Vn!2}O1IuO+Un=8k?e!E%_F7fQyl=zpIr(Xg%mbFMFO{v`_K+pN z?yBYYWGal)3hN_9-;5*Nf~g)`u54L#aNJ_PmaWY`Wakf0KX0GaL+RDocJrrisU2rc z>(=z)x5m?cOL}Ma)-?I_Bi~1%pZ~CZ&9Y6ywoNgIGYvYBw(_@2j-%R>!?7IuYW4Kl zvXQRPnE{@Vj)^9Yzm0XKcEQ-uJkk2H>5lzTJHCLc5$0SNp)Rr3`w8G@KkvYP!3HYV zxc65Y2lU*e#?fn4tQqlAGI^bspY+>u559!&KyUi-(KgH($WQ;iXev9F^>(&12W)}r z2>6Px%=4K7FH`w-*e24g*sEh{9|-GwWuW7THNMgs-`0T+4(HqYK4aH;uLmCo;}4zh z(vqF|qSNa}965;=o$o&489_j6)H&Ztzv>(#+WlN-Jo>|?9JKA4g)8Em6lIpv6Gfw7k%Vk zlq{6>rLwpG4P3B0jaYXEVr{7Gqbzl2rYv5VqwuxuR`d0}zWD9ATc}?`eLWWer?v3B zYZPZd(%bE|jvoWNp;~z*^sjoH`CgJN8s=I{aKK!-7oS6J6gV_|( z?(96zr61r~q+OR7&C49k?bbWgHRv~>x}JW0k>!QDk>yU^ZPs4ZrQhJk==Xn|enTIl z-`!5XB_E^Tmz;h}KSsaLJN=e@jDCOO^gHZh^!p>H-|~;qFKW`J@9>Y&Z_4Sn;$!st zpwsV&kI^q`+UDEHkJ0b#PQRm)9(jl$I|lNAY!k1s*GFWVm85PNvg68)5lP?gGm|R_ zYg89_WjVUZ2tRKfV*k~ewf(Z(E6{p2(8&|9afc&|!M>iACCSusBf4qjarp51sc+Y% z-tp9Fan5&Ihv>Y#e8_>wN_~OBzZpq)-&%>q(_n$ zHoN?z!rMdt$(;SnmoWylw**N4lr%al|E!aTe#$e(Ap1-HX(z9gG-C|P4tmnb8%Da1 zbUE=4oV?+rHAV&T_no{Eq`ym=`yly8l!u-);iEtDJUVNebvt>2;W_#*ZLI)KvRBM^ z!c5{Bgq?Tde_l5mUzQ@y*hy6Dk9m+H8@>4zVaNv_1SU#ds;E9YEVlF}G=*ro0XI%Anj8oqS z9)jnAhn|<~ETy|H;Of)8jxW;Jt|_~;|Jl#1b;gQ<$93dO|6js>tUYD~{Ki(zg&1!J z`+g|NeiD!6Rxk(ftJc1&`Zqgsst9kg@q@nybcVg0{&c=QTm8mU*{D;$B#|0Di}oeh z6{NGWgXNzI5X)B^<{XbKj2=&&H&|1;+aNhGVgADyMAb5<$kEElEjA=RTF+fHLY`xX96 z?Vs-boT=EwYOC`WW8O7g_HqQfI!ioZ9xh={J9+-=;`@|6CeL^ry^NgX zeay?BN@c%9-CZZ`%7$oc)LeYLV)f9`PaaXI`{<>h^a=L;d^H4wiPALEtzCCJ$D zzOIa9HWXf!vF)-*SAMvOPac2p>thSPfgJV`Zz5z3V^Ns8A@rAT^W^QN)Csw`7@QyR zNui_h|Ask7>pT$IXpOy~E&J^$*vlvF*q1QV)^ud<1o^zdX9V?672jg`h9cmXCV=0Y zN`J=XF!! zhi{ECOL#V?`+_t5thupC{M>!u7{ zgpWKs-k~cx=o$G$wI2QWX`$^ne=;@txG6i1g|_3ifSdMYm;ax3WDdX4;Ba^@KTOh0 z<)g+i+%Zh~z79>$Id}OJcjShLyI5a~pu?hEsc74~bDuxFbKm!9L*4ue+TjZw^pRdp zT6gctN#8}9`-y|YNZ(0%AL+hR@%uB+vffl+6@Fplp?uDS@9p!OGp)XoJz0O>@*HJ( z%JTl?O!kPK*6-AJ*){nIyjB+kpKl;n!bLdwjYYXYcu~&ADYA3l854Lu3XX=kbDyto z=RVC(`b%exm~r1;J^!p^?;3_*(@66iG(tcZ*7oiQ-2yI;vo_&N_EFAKrcux*I?oNV zpU7XPb*nY|mi8Ccv+S61aJo%6W&RnbAb5@huTbxzTnXi+5$b@8^sPZYUt7!hh=(x; zKe6y1rg(ZPt9EBhV=kFZ+&$d6&pWS~jGIOm>}QqlXA=q&D@ZR)LLY2Bhj}DY*{9cn zbF^@d(%I>8@`v?uFYd|0d8&%M6nVq@3O*kB9oGT7=Pt?ews2wXB9qn8m~^mxXUUfP zTJ)@ZHlrysv<{e;?ji(@HRQ*n_XC_`%V(t574FW_zjUt7cq2sv_;DMw6kR7dy6CdH zJ92v7FW+zo-d+73v}UjUPh`API54L4IX=asaKKh97rys9_;Po$yx+OoA)ejLIM`Bp z9+j=Z7j1aPoT~jI%$VF$n_%Ks!dDnT{zL4AKJ97D5xuZMcWIr@6x#O2JR&GMu@HX0F|kaO{Q&tltoQ|A;+DcEe@RPIg0x zx)q+eT>=H`-xq9!c=+Wh#jHlZ<^0!`aEJs zEcVzDi-+upAOGcu9l>QmXjrf#K2QI`UHq5rpuMdO+G)RiOZA|y=pF)B-GSYT&rWvE zLVU$LnS=N&dZ}H2J}!0q+GjzRn9c7iv$8E>^v9YmH^K`uJ~Ne z+(;JocCT$v34XF^M5}^rusGw|24zWXgCuu(p^fZZH=XImH#X9yVQ0$&wmLu zglQbs`Uvv~TY%^B+_CYtLSE%JxF7KKf^9z2?6saqznb+8pU<-tqr5NjYWBIkyRu!- zt_%C8@0{H{i<(Q&E6TI;73BH2yZ!{ex#}_7E!vM`UC77eqwQ$gg=rV=J9+nL_Q5fI zCvP7uyM7Wl$FK|B{p4HVta+(S&)wbpjpU04%6|kr69oCbjA$x*Zi$hPIWlCx|C!jM z>~;8o<@ZJZ8O=Mmu}dVbBpLHQFHeYFT6Sv zjJ#s&kzwL1bqh3FotenFZ3_3jpEh63O3(PYhYxS7^-MkhPKxb&^9f`XyxC{70p^44 zk!6p=R*bR6Q(5-z$7bUH4@Oro)*gGTF^r{gq=&j_6NLWHP1#L9D>ApAxSTWZ^4!VL z#BDbb|57<^pAKu^3cz9a9%qOstaoL%q_VSj0EG2KD%CBZ+*v&-lF zoO6h8AC+X^EZn=*d2VK=*Xm3EJ}WusOaC&fKKe4dvvW9iPX=GYmG+y2jaQ_{2#BcG91kWc24>B?@I1GpY~mtGOpQsI#HV`wz5tIP&L} z%fEW^7vGAlO*jNCeDEX|hIa7MA5Ue^WR2(@2-#meLmK=v;ZuaEgmVZ}2++v3&p6u+ zqOS(eB*<1fgTNvi{3Jnko9sDk)WK5-*fN7B6HX$GCzynP_w2Wda%^w=or@8~=qdYM z3Qh(>xjJjmd;){sy3MBi}?%9i*h=D;1u0(3VUb}Ie(Eo zVP2x!3X#@cG9O&-bNu4}V4o=1BHR^*UyL#6Cvc@{@DL$DdeU)6=Dd{oEH!@k)))VL z_&^o;A57STJaG<%WqG@K_^quIcG%BCWE1aa4(q6E z*NgAwv!++(dDecHADbju<>1a55uPQDUG`o%!{*(U`C;HH{QJM0z9*gs)-~+Q|2R#-*Zi2>cTQ~Wj&9U%BIyGq`cj&?{%B6dS zCwIoMDcQ5YX@#l$=h>gup+B_0&CPECC+SUFPQm$!2z!`+8*NkESuVosWb_3*VE@WW z{-+*$L>B&nz8wLrKf`#FSSxBD!-iG8u&3VJ)GMdnP0;F$qIzeO&zdeji+Ck?X`RRx zs%6a$H|OMh+_}>j2C;aJJXT)-EV|r6yC+QP#5wufXsh`?7u<71*A>=PmOCS-Yu(9i z(pn{13rZaEOxbQ!JvNQk6V+wn@ z<|Da#6dDxI{XOS-j355{!n-YGT=Jd?Ojwb*1brNYzp{f(XUwM<^91@!k2}JHHT0|Z zVWbPB2VVK`@CGx29>BlBU3}dO-k^S@3wB@|Yi~mre8-3VDE%&8iT3Y93-RI=#(?JV zagSANc3aQUxALnU-aG_+7Gvq11N=1`eDF$h6u)%8MKW+Yd0T@!vaT!`kxX9ivx(MQ zSQp~st=fxC$?KdvHfZ%Rj_fWay_fe9T$}DI%+JMB`yX@3Ywy!qdxEuAeNw-@M*eC2 zX|GKm*;k)?-dSJXy%w3a`R~b_f<5HQ#Hplfv8_Z4@E!C)2lfnGUxXYR=r7#6o(8_y zT(-@0mIq%y^|58jM-oe?uve8YGwisUZ06yx`sL3cQ~HvVqOpEY^M3Ry6lOtbnk3? zO#5sxq^AmJ3;2+&MNj#d?^(hJ8|{g(^zspT9NH^9I$3LvcM%3Jba?O?^P)8e%~TgW zxDOtz+2r7%F$;247*96Dcz9>;3Fr##0Utf@i)`KR?jN#?)JFS9^_W+zv*Ek^zTD&c zSbY@ZAw7bx>#l$)-W7Dt!^}r|MYNV)Sqbd-ls^Q#%X3zm4WHLb4m^3Y$aD3Ed{bJV zt}ecWvR}}L{8Gx7yhJ_qb&t!dFVFtQW7N8h*4$6W@!`|F3l$2)C&(HS{CyVre&KXGR;taix2snjvTh5Lo> z9T4&CZzBpmuv6rx;r&Nv%(2+tcKsUe5*ShE&Iqx_KAv{EGvd~luh`DF`_g#2&ta4= zcvrrnBk*;=syBvuitTqMqddcUmwhQ*=o`7p2I&742QPf2kGbzwCZS<)CB8uJUg_BY zIwU&>pV+dgo2_N&_&}uaZmjMv$VVueKJll+2jY~)xl=4yG#8y8Cx0q;f0d{ASboC3 z5v88WzeAb!47dKnz>|ROJ@1S{9~;T5aq>dot9B2PSK;L8{bl8?A@2k9yxO|;ddPc+ zymwAMvX2U=ixwX`r%H1aEws4X=PLr^K5)W8BcgTrnoYC=9KVVIpywZvsP6`(d#pL&Uy)d6-QnYYij5<(k<`B0ZEXbq();iWBMU*NEJ%JY`NK@=Ag@01 z8816SG~m6Qxy(&I0-ckFBO_bzQ%+!x>m%Jc(Qq2`!;8do#x?sJx2?oi+qJ)${;&V$Xae%i3-sW~G{d6Ri)Ts~-Zpp3Tj zZs7haa#o7}w1)ntu7HXN5@PUDTG&AjaW+y?|F%_Wk`R@3)A_qB3XVBXtSXDXws zt*XrG!kw^$?qn6-bDxL(QD(wB?5KJ0scUjWCNLR)i)0&{jB{wU0Umm{>=edV|LW6T z+a|s^#xk5WM7e$6%6?wMI|i$HUZQy&V4t3WUJl}Gya}4Zikoo#$w@nNOQi z`lT#Cfw`;w|IogX_PWEU{3^3MS2Y=5Gi7@y(=+>{@B$|v^M75uL`P_CYpkbj`?>Ib z_yVT+;$H;<+_j1;>rIe`8;PET=f8Z z0{g%u!a??g3B_+d!dBk2G!?f25h}>t}$RuGY6~-V*^$+I$(V^JYZeWH(-4(HDI0JJ77&u4p_`uvJXS!}?XOutj; z_lnE_=Yj$29O{0muiv_cx}Q$k`^G zn+5zXqFxjA8>x3O^=DA;dg_0bdYAS=!xZPC-hS({WWV)=M8EaLc)v9(R-j*N?|`)= z$$ZUzYpFS4E$$nz+EN2N-|M$#hx@IY=%shjRw6TCRkFvE6Oew)f_~X0y0W&MCJ*;2hhCP`rjqBZQ z-a7=R5gDG>CYIa%YaDwFlRU=ojb;qaPeWtivoI6)SrfriWB3_c<2-!ENE;3%PR(RC zL5sv`nctmtDRaHk9>0`%jwCeQp!K>UV`g|BkSx#(-B|6<2rqnc;H9+aIfP#fT$11y z3*|;7%Sf-{I}a<_1DD(Qm4SnB49$iY!Y_Fr_X@x-c1p%So;>2x?rkSpaGb1UaM)9A{n?=tg}9J@m1XYXLA za=tn-%v}!ohVYH5KlST3yEAHkq|Y7J)!OfPo^t~A-EjkvZpNL%xZABbXK(D8a<%`2 z>d;>G)R(uP3!Hvx{!KqqoPLh~H~pOA^i%zB`my(D@Hy_^^fTP)r|RGIGcEaSRS=#| zYwVA>#mF7lbmwx`GQYy z${z+6??NWBZp%h@W}bM*SgPkYSK53N{YN`(T;4CIZH1G^oecX1#2vcp-h;e$nmz{GG$g^B>lX$S<7`${(COGJna>F3rC@>dX0OsxHefXI)ab*uID1z)`^m5f`&W9vI+i}m`Ub2~DfUiq9@#r!9YfxTr1qQv zYixYL8WS6^MrW{D!uXA#>9{cam^pwic84`Qy~8>_LfbTL4BgFOo%a!^_%2T`-;GG_ zuu2mlRiwG=6y9NtGIwzIYKK)#f5*{Z75$7Re+>C!$?w!!=lupf zJ9~5TE_BDmIX&OdGZ<4knE+kw_Zfr40RnWj?=>03hvBc*qM!RuzF2BBXVuZ@iLvO) z>M-S{oX>gA!gF_?Ux2sH>^$E@C#+$g%0P+{aP>V$x|I`kEe zdQbOu;mH{n*G%~?o=pT8M>cz0_;FVF6!@#IeEeTiUGAD(FC2~EfG_u=p>YUUe!tar zn-?sf@xER5cVse2pEjN8v&ZQZe%XD3TYjO_XAOSzkLvTLkLWYv>2sOW=V)-KQNC&0 z6!skMW6s}39?FXH?+=ul4G5_nW* zvWA?wAlKDpk=OT4Lhji!#`?J1#(lW*NwgKMeX;+wl%}t-{|AlVG{)ukQ?7iad535y zEgocCo{U>bmRTkJOnNTW8f@w=!3bog}}BXu`*LZ29^&^XaB-C;}azfy;}* zxki3G{Y(R=%PzPhr!l2db%#qf#i&Rs|08Goh|hRt#wnYvr;VQ6v_8&fl*uQddsh+i zr_xUFqy+EYN;jL>AEx~2bMi?u8ZynE5YNKO+tWXM%VZ5sGUkutz*wxn^lkh~-pibHSwH}Vzg9+Ae=xZsi(U3M~VnK{m?N$LAf zh4<%fqiy-a-I>BUM7A2fqh9(o?y|nX7`IR!Ox{I4cf#pMXO19!>K>%gi@t)+?5*hh zarV1*`u>${`x^B7tI%bt=r7vSmq}W92)+eaJbb{BLtFmnSNyD^ zp9rmy+q}uX$~~yuB=Rbtfn>}_IzfJg^DVGrB3)ySF?@l5!Co0j`NWS8=}WZI9jYer zCDxPs0DqJ8Lbv%T8}H9DzP?EY@1YChioVEhDeyRr1^x64WGC&kuElrF_YB(cym(MF zd5`#U$|aMkqde8I*FW`SX9{QS!>g!gzavL^HD&I1vqU4&O0*NL0*vp{Yhq-RH6P!; zY`M?z?9cU`pGP{B2I4)$ezyh&?8$8ALOeK#~;Y?oO)>7PmtDnkeo_JdDpfYe6#N$i|+FnS5C6% z$U{6k(es!R>Uibrb;|xknd>hTZQXXeDI270BaBN~j|2AtV~O zKc_&t#mSpSTuVsBxf8emUs*lv331>@h*uNVsf;*Q$J3#+R z4Q;SJpld;AS0Y!^{bstydX{ej>bsmHxVJEk`p9ZlcZEfZN@J5X5&E5g44o>uGH4Us zWL?93(pvodk`MTl)mk_KIW^Optmxjt_qxsKJ*@rJ8Pi~_G`@@kc&ZHVE$T{>h#x3Jqs&UW2Ml_>6)_IJt=LFvIKitoK z&5OBr01m_b+G zeeaj|(U5JmS3S+yApZkLKe@Et&NynTJAb0D>Q11|`}TcE-eJpZ3aKCEx&8c+vZsss z`H}j`&`;)`jG5`NHa-tcAG_haMqg|`!L=Y8{EJ9Oe~#5r2+ z&SUSaqK$B`-L}CxR_inp&j|m+pXw6JL?x`=D?nh76 znBpt%62^6((!QT&^~L+)UB5kkUFPK>**lxLXx&SeE0MXNnaUo^J$n1Ds`8Md`mEqDiP z@C|g>YlMx2UcxMb{%KG@`fVp+{%rIm@k}ms?3r&EQQ}9g;h8o0tAP(X_dVa7{7SY$ z=fQX?d)aNtTnT4b-S5*G_G0Ah0z!y@U&g+(`8nb!p^0!k;VJGBRK>>Tdg0F`gYQ;g z^J?vfBD|j?njt$p!+T~w>q_f?^6VGwIep5eXDoLE?L<@d`Rp0YU+EyU6g?hrp7-5F zonhi7WwI59Qy!xHM2CLVmz-y@VeEap6ZsFBi)@=vZ8q_YP45$2O1_Wy^Yo{0X}ag- zDV}~b?ret-72+Ld=k@yTH1mLT<>HTe*cqJk{?1Y}@Dv&YhmJ_ln9Si^64{=pHNJZr=l|-C^GY6JLhI2b=cr;it5h?sVzl zwx>LccjG_>V@c-48{zVrQ(ykF_axgD1sq?s@yO&KB|k&HY%3$O#$ID;_Y&o@vv)dc zNO>=i=N(V>q;S!hSa(M5C$8PcJh-#1`+qtMdFu-ocTK9lA35#spq<`rbY}!O1q|?MnLWT16z3^Bn z8{>>=MEN!Z>(Zsso%CB(&l!d}o&q0aBTCLM)ZJw6fta+J#`EZ^WOwe#$VQvq$a40w zQRr&uP{T7<-C@wPS0j+!TAwlRQEF;`XND{gUGembY#`n2c+v!dEj$OWwae}vR&|oOm0ZDx^Bf;KT;iR71goEUk*_6ygFpn^w5GOPewoZ7NeL#EpY;d?gG?95q z|A?-OobLy|3|=~e4kJ(V@;f;HihRM<=+u7h`PJO8j{Cm%+dMTB$HLP!?BS^_cfQNT zw~|CE`^4mz_1*cwC*CT|`@4*%Z;Wa#HqF4bZ}iJqeWP1+F`#e3r@)y#++*?V{TcDu zG-~wSRX?`x*cua>hI_(q(x-H#Y>5@>pMJjz&rSy3itcpf5@*hkTuLUTBPE}D&i`He zzM}ZSeaj4Uc@g*%g;lP}zKehpIZZRAO`E@RHhckx~4=t7P00Btn?PcrUI z;_<}x{Dc={xNVRVn+8p)j~@X!$_u9x`A!Nv;@OmZIow-|yqw*P4XANnfv0?H-_~`U z*X-}ENe64(W%LuoCaGf_>I_Cr*+`lE4C3j8i}<$e#RPjz0tbz?)(itb6m|7YTr)1; z6tS}&CIIt&S!)uZ55N8e)T^cMKIv(jmhh3WzrwgXDBDQBtz#T~YRT8#Nou%I~IpH9B^g6K+N4 z_Riy;AK~$<*fFleW+E&mEF(-HZxykE&WgHA7GTY34Nk)j?G(N-^hP|Dji&g{4!oF7 z{*2yD*378RLOs@NjBE7S_mRqVUq~|Y8}fWcXTCG~?lGeMh-fOHJ6V$=cUzpB+4ne0 zMt^}FemA_i+nNyh1^Vt6Jo7ZFhr|0;`z~WFj~&LE`lhWPl&>`xGE>edx5brz8u?qDeAYVZ=PRr=^fP^_T<5GUPWg#;`PFv0^q0yfQ2w}6 z&f2T?oxaL`-&1=Bb{gNmT4RmYyfVxOIoa!cCy#acy6q2e*3m2ILG_32Xv_Sgz`84@ zyc3~;`yTmBj``+ZG&%0%$gXjmWyhWzNsp^SkLepyvct94zruGoBx8~(-EWZn{d089 z2Exw>FA`oL>>&IXVJkuJK_SL`Q@rqhXue9!)uF)-!p(#rp@wh@0iF+jjWCs~zI5ObD4#%faV$bv}bWwaZGG`;s48U&MCYTHdo)I5#M+w zy4L;{yYy%&{RH$bBlZRFQdjGlZ_*eoyaJp>0`rXS5cq}qY1@eX>7?kbo!qR(^Zx_~gZ{~%2tr4EQP>p!gZ9VCf+3$=ybO}`z${u&h^o+snD^yu1 z`wnHI@7yBViT9#aH@H`N+C4=56OfG&@ccW_ZdAmVyB64IT%3D&taN!SKiW+1n-57(;!Ip8P!D;Z9r4texA) z`xfKQH~8iT&zlb$;oLL8W%MCgxPkV*N^}IUWY(SU_2loBO#*GSuAgHMQo4zJ?OSfW zdSKz`NA8!&=MmmxNj?IGkLRk(@oDg#3+CgMmsofgXSwm2G2E9((7rTo>;1g!uUQ%V z$>^b(>2=mIVcE~}JEZbs@Zm{6=sEi`=ey7MVAr_+&w)DIeUZ?s;(>dnoQ3cDv-Gd` ztxa&(b7av(|DQoPYF?|Dm+sRC8AIbLe++m(qx+8bJTrNHf8aFwc>{X`{g*ETU!CRD zUO3;RK8$tNEczM4v;5ikrjg-6@7c1|9mg|e( zpIA842M=!A>*IeeP2_(r{Wy=k=;#d}bkzFt_B$!f_e-Ir`t~u#Q`n@EQ+?xN3+X+K zC;jo1F~D|_8XGiBf6SLDmG8hFhc-fzWDE>YzBDvBK6h|r>}t4 zhlh@7>;bpGgJ0JFak-(RocTl-*{+QFACjJJ2LVgHj}`x{w2 z2humPz%g*H=J{2gS4J71wZnYyJ@P&P@}qBJ8c}Qk1?QfF&Ncep|8(E&$lm?dgWx&+ zLehy??vwO2S!X};wZEK%{j)Q<*&3DL?3=tdQ_7zC1MF3mO>pY*p2is6`GBk0WAyD_ z&H&wfyY;WU(Bc8HFD0J)i)#cx!N4VBe;5zQ_G2c0)Xd**~LO#Y={{6Wyb1GRScTje#NgQ?e8-A zqN(i6$=pAOw-qt@53rwDlc#_~Fj3H9>vR~no&&C$KeoyN^-iW7(5XN{-w(eV%ROpyQW#@wEYZPzzBvRmTYvxeDamBqWQL-v?4Y^*!9 zKilVY$&0?>p?PDw+Is)@j4v5d*#yd1zqSvgggnioB$mql+Ed3okN2s*$X#}V^dEko zymWx-N)HS$u5^K9)X#fbqC+q;-g=#U-Frgk*yHZD@qnq^HCS-xrd( zsBfM1Me5BUzKnPxvFLkgj=OezBTw&H8AVHIG=j*x6`S37O&ojWUXA!b2c$Qy)z+N-eThw%a4KPyc1)8Lqh-OrINbk#MtrGWoi6h z*q>$iXypGYOWy$>VN6sL*HcmigM0igEgbq zTV{AP?{3nsaYs(iG^Ys%&YNQ*KeNUXgopmWnEIBi*xzhrY}fzB{XX;@d^W*@I=`om zM*Gm_W=d-`NNSj87j(ij2QKfaSrwra*2k#^sY9A4wW2tP5_(-{Ut@ofx zkk=95cQtUt-uKWgk(GR>w)8Enhck$p#W;tcdy>4n{y zNy3>nN${2&7WBp%>+iOHar8I;^DbmKdYyD?CVS;e$(%cf`4?`qBB_GB;}a+krX^?d zwJ((idYKP%(SB&e3CvM@S2((k^|CT|yj$PgnDgOJ)VHJ9yZF|s>K49{tvLk4$PaUn zUN3xGn*B*&2qEi1+rs#9a1#9$w(DF;d)Bf*-3Uqnr8| zJIXx=@Yb_G`_5~)aKB2=FKc3ZY@V^7*gRuz%7&O*RWIMJ^72XVIl?D>R}wxw7EJ$m zh)+7pRb(FgXFetWnNKC~={@))9;uy|Pxm@=o1it$-BR7((sRn;-0ev4UAq&VZ`x`9 zhwiq2xm3QtlddbxqNH-he-cuwi!) zY6-Fz#+^ zUt=!n-v^yn5v#v3VZJSFuE^-!%mD4f|DU~gfv>8%^2hf%=O(#%5E2q3Am{-S2$083 zc!(4wKms8NaPt78Qj?I}JR~I7sI$5b;vLY zbR3v-7_b!`5PJNT4*vl?;_QI^yp-?UMUh|jt2EdSc_ZJ#wGH~H?sEXn0q==57~2oQ zm%DrV%ManZXV3%f%0xI8?>%6S)xQSeWIS_W=aqn|cpTt?KI@0jH{U&;i+d<)ZyUZ1 ze*J(Qc&NKAcs3Fj zb?p`%LqCO##A&h8?nN4Sh;rke4ErMO^?8gB^o{l$ZZ7iDVB5^wjdF1#oBMn8V19?7 zo^ZATI+@64TS6a$X$aqo@N__%KkB9(yluflK93-8uIL!}A>eVW^KBmPzlaCFRR`Ne z*(`L9vDy#*1-=!LgFYzmJ!9HIilgQypK z%pEvm>frAYWB*LGJ(iT?wjfO2bKRCrnn9bSPQ%=5`>(k`8SV>*8_8t@S_kU4-%+m%l3KCq08-0rY`hm>b^^ z!}|r)J@1=hp7SW%fHuH(_{nc*<2wh=12Vk>vSPlCZvb+y$KOXCaonK}{|p>2XhMd; z2=Dg3H27Mtm%r&uxwd1Dw0-Dy)XU$v(JUL8V)4~ReOvs7fgX9j8hONPLLOy@{SI<} zfqlsz2i;>Il6}f>twldtJRtaeH}t2qz&~k?37Yj@cZ^lf&B!~7Jb^lF8ws=ODI*V{ zM|r3ZzLP{5@q;l#uS2#D)J^;2U1)qyM4q*fP7=~Nw;|6T%Kq3lxDd1&FXG`nD{mh1 zI3CzK7?OSjcVK7(0`vgcR@@h9hhIOMi#sWJjx5Hzsd&;5b^{)BaXo_jc#Cj{572Kt z$FIS?K8ywLgXc1r`VN%(&0;s!vLfmf(j%cu&eaEggL}C-u{l~xa(`pvCmd^4=oxc2FGRK z9u@qX5DyQ1i}bOkkK>v==i#AwjJrFB<`QC#Rt$LXQ1{S5=qn8V+5vsX9J0PUAnqI5 zEAAag0uFWgGr&h6Z%od80}lb8^Aq|BwhQl%#v`9&E`2QZOgrm98pbU-r=eYo%7=%> zGR@yPG)Cri4!HpH!9zZ1a_&W6d@&Ed|Fvqn2;hc^nm*gNJ%>2&C&aAA-Ju+uhar3d zkmn>FfDZ6$;5WuO_dQn5_Dp}5zwb;QpG4WC)oOjDL6@9&wSq_bRF0u_$QPK8J2CF? zw}mh-k@tnJX1bs2uAcru@WuD@>*0%7?mfgcuOIi4FnB8_YK_!`jxoX z$UeX|NO`HU4ayY{9f!H0Q=}InPRR93z7@v%iGz6vZ^R?%<$zDzAGinO!`T z(phTZqyZ-ia!|K1Ohdn!k2{Vd!M6ci{w6B#I`Y0Ne~Xv*Fh2)8%93jJ5tepU{W0KQOT3)Up=&IBHz4<^kE0JdLU@XS{FFTj`Lh25 zPG=dEO(hhaLkj`BQ0_STE_Fw}#T-(46PEvQ0*B?l4>*qHP@XhdJ`0d%?d2EMO}*(T z^Y6(286K8@5zvMHOdjd`jga>F;4Ou-4>&n6wj%WPq(5J{kPLWg0sQ)f3m47<3iyQM zfKI>zfG6=(etO|T84jua@F8x%Sx7qpxCKuyHc<}aDaX?}U#-__;6IWe+dHU}HW+?L z*`Evc#=Gmdca8IP%n#9*D1$h(O@=eU8-4Np=rg#BFrXKpzhgebyYyjbe*=4`9XZ&q z#qZX<4%+Phl>1?n8#UG`=ct@Z(uNbz7gBR@pTT|K&>qr7A3cM$==UT~op|rCRKC0P zUB;nrmU#(b*3%2fu)sUU90zOIH?V$-$>|y78D^TFV?Mr%j_;Gholehn-8T@|gLgk5 zQ$E7Hw^{_qdjxJk-XAC<4q!Rp8k{YScjGs(A!AOb{GH+<^tHh#H)QO^`9EYni264(ND|)1NyIxg zW*^?O5u@c^l<33$U)&C?U+_DvCTN)t%e7M~<{fc4+httCx`(nQGEO?I6XVhZerp$V zsxa^*a_%0A>?6dy3TcG$w=4nW*%)A)m7XXe?hG(Z%#`z3dvA(&!(@A*{US}=ZLr#E zJmh)>?KR&0*bwjk5hlY9h%4Wt!d$KhvW6j^%eDf(-A-(?Jt)I>wmClG{b48f@8(I} zs5u5KJ!%f(iPoHh@odE7LgE>SCxyhPBQD%r`{Awy!&q;I<;ZX4jzb-%xZc8A-f&>7 z;o1i_XJEYpQ|#mWLZ{_^WM%rhSKtn+qYrlwj=?s>E2lX2>fn`gxHF)ugBIUI)j?ZS z!p6O@3wKZdEqHe!>Cj_C4{1hU=j@cehw#q0Zm#ab@6X_Qz3;4fRDKgumPHx*Z|HD}|0I9E=ROQ%BE5;w zmF8bKpo1>QQ_+hxUMKFs<$R&_AxrMnk`ANhM`at?&|V+VFfJCN@&$h#Jipc99=>J0FB06zNwXmGB^@-c_-O&{=k z^i|A_4&glp6A=9l=bCa2{66Nrk4v3ke~h+-{WH)CGee5fZ8GPqohy#7Z0S7!n-SXY!)7z2GG|Epsa{rX) z4Ce~fLppN59s5wUC$z;l9pQY8duWF!m%Ian?*kKJ9m2C!q>np>wQ#zX=CsmA$Kri3 zD~iNJVX2l>(g+w1!-W<9KN(;;2h4bx!>r(w?Jb2 z&>!ka>ckz)9=!L7_jEq`&2r42;MaTa8`!+{KHjs(xAyj*V%~80IO6x7;=TucMLyaX z=grXnO@mQAJqeLL&_BkhxSo3wa`3)I4D^)`-^M#uS7B{JAD4(WEO--b19>pVg`Hr{ zVD|J=4l^76wz3Cj=(sZoSw*k}wzWM)kE^%uU!P^YPn`-1no-a_$%_u!4vQb!67+_93DV~Tcqo;8QJ#l}Rw7LMS_55fhR$P5 z)`9zE;F0@-syK#oZ`ZbuFc-!! zH~Zwz5dUVg`h)?MJ$60cm=`)xCb@3n_Z-Zh3>j6s z`tZ9t__inZYAe4KrnwRZo`;P%g(>H)$Flm~;k=c5Av}-V2OW?u?>6&{&e8L5n6q-1 z{>`3W#P{a>BHmHCYn0aeBlw^%^wDpvhi=sGBH_0nv9GAP4i6g0i&ppVCZoM)YCTZ{ z8om*9PfiEgzf9iqMqit!Bb<-=_Cgl!8DLB@&<3L%IlBg^<7niujeh^#C#e;0O%AWoobKU@Yn7_go$~y^Be1DzuW*zVC?0dea{|hL~cX-ON z{*HsrFmJ$IW!J!sXsamDqD`_tvc4~}KFlk5KF0cR7CD#+xye80ykU5kS$Flso7i7S zGoK2(9emh$X3m#}lBJHyaOYNxOGP{I3<~wh@#t~LM*aorWEt$$$vrvLJ@`4$f$sT@ zywj?E$_Mp@hj~sd<-)dGl={X|*`Vgy0rw!k?;BNq2r~6z-0Fc%iJSUy3 z!gn0dMlOuMoMWc-?8Mp+Z3eyLeG%;2@OP{`@Li}~eN`99{3p<*?AXib=NxGw>P6oN zP1q&MtGh0k2UYI+rUUj2UyHee%BQWuW`1=RG+|Rx?|46A;2urA_l3TUa|X)9d0dZy zGxjLzoArGc^~NG>>;4VIb4_*ci#WR3{mw5GZ-eY_9AnVm0&V*o^7vjQ+Z}c~m<)MS zD|ZIY(q=7!#|NJ}_@z7o5Oy;7XYA$5-y@zE2!_U^KqnHOhE(=NQ<+Ks@kq$7q~hkT@{c z+!^*Y(7?B(p{tU?Zqh-1ay!P(oC|M9RCe@X-iYtktR8#>eRw4A-1&R>NV9@9`T5=vTPw%ioDk z7=(^MlYaL5gU4L{lh}^~PC37EFYCwJAMW8s&J&_=$D|*8y%(2L2VL+ESJ@!ifoBi6 z$9~^HM@~=wUGdxcq)owA4efz3hPI7*9Q6rw$nSEJ7Hl{w4zew}`o4i(RXE2mdnU%2 zJu|mY+}2l}xd`_Z@H-1}4<`+!!I_Y0QhiT<3)(8&)zKG+v<&JOa|X_}N!JNIxU>8xt5DAGC4YBG z|LnlGzSkgaF7(#1kiV}29!>CQ{*&a9e6cSq0?w7FFV31z$bJp_oVSyH9Q6$P6{KHz zpM3XN(xpCOlUf|cO(PL{vg}aXCGC*EdwCwZfDOv=wgBZJ^J&gOpcvRS)=#qD)q}97 z2c4BYdm7Moap1d_{T#Z3{YkySCf>UrY19|y(DHYRsKdMQ4Jt3v7jt~Y`$e>Q1cwWWx z?|Az0{H{;Z(6;q{s_nt^1fCaqKb3Q+Z9PcC^8}t3dSsgDgREC$y@a-if!tiHCcr1= z^x>VBW0;e3-f|h7d4C1YivJ47b>G0m{|d*vZ{YrmaGbcGOTWf(G13atSMXcrk+@gx zfc-h}4Lk?t^YT477v_0e1y(#xyKjy<}`e=<^{bVPiDC+qX!H(WlC@rz^q#~ddj69=`*o`hGSi%!r)pBy&=^!fXgxR)9w_2}oF8qh)g zBTa|o`xkhRo^hED`jUUp{~gk~*6Bfc_}Ov7?8CeM&?&xA=oE2-rIXa0!!UK6cS7cA z+xboM)4jmI7WglKFV2zZo4CFcrh5SMx~Q{pqXvEmer-9LQRbV#<(!0c?E2Y0k|(sy zv*3kv)`E`i=UHwX_Glj)+KM|R^eu5teB)ZEI|~uecRBE&lhfNWac=_UH9`PS7%KDo$QeHa{T@jX$K$=&KRO1m`6ErhD=)e)b0EY&(nvH zKO3}O3z2s&Xd0KHsZZI_&-Qse1UDVH)D7PUIqMoVfc+h*8?1{5Q^CV|@W47C=eUvJ zfpl#iqEfdHJ_~wBK#y%idB$4u(6(Ts*u&m2py3Vyc{ZkO@2AiHA@J)_5AjEQhWzA} zb0yY)4E3)e{$+H4x%1$6*k?c!^SW^p!4Jm-d4~hOoPD?meOyCb^lAJ)wvPVpFfnI` zZ@@bVLk9Xx4Awdk_!h|stb?M#lf8E3{ljp?^Ra)y-{WE&^Rf3xGlIY8qwVN(VsFdN zyZ;3CNPu%MAoo9wL- zGS6%oi17Ad9XmL{vZNC(*7Q4bxW9jk7VhTvZ{->jzN=>k{Pqsa_wV6dy{np=weii( z@g~+?+{;N?(5#JKfVgXi9$s197jA-9Pf!0&IhNuq+0S~*G|azD?aJCZlbZ2jWJ!qWu|D^vI9;d&oFS7FoeNO))fKT^n{ztGz zeR=?U>V08xU++6FfQLtu-;ylTFt477^Zkh@#80xc%GKyIpbz=pLwo8uo%kLrXQYiD1WYjU3v_e7t4KM-?P$XTMD z=iW4RR%!Wa=x(mm9em-+W-VbQbd}Qq-4zeUUEQq3UyXR&HeDC6o17}pr2XIlkF%r> zZ?JT@`cfTMuI?kQ=6yY&!>Pk`SVrFy^>i%9 zLaPHh({jqVuPDcy52&w7$c_38?-QJpzsGR2tZy~+^*Z!|Jn(-W``@OkWWYSMcEF|g zEX*=`isNJa3$sS4G0@J7AJwxkE}^H`HGbQ|I9=s+R$SQH+xwjVU?t#w!=G4vVe7LC zV*P7snBMEJB;1cpB*J}~KgOfd6D54wpJT<#0NW?wY>@HiBK^JV0H2xeAK!Fg>(kB` z{EdLUz5D#fnpOF;gwKZiAG!_jd8hx(29({54MkK5zQZd_&cnx{vYk{=?6xay9!I&+ym( zGvQo+<;#H2=>9XW06sg(zvcT(claxR0JtyAe}wQEhu=I3i24XchwgV<@iHsE*NX4A z;%BUQ;!jWxa=U-3=#>2%>Fo6%mvFzo{g|S67?AW2Nx0YlCL!8&?tiHCGQd-&5PmBz z;nU;%FIn+ZgwGlN#^Zo!uee_Tg73sPS$?m-op67IfB##I_xcYI?vM1J=?8p1$?rX> z^mPJI!=x={=)%?x)RzcIeRlw|+(U%V>weeUD&9``wC?x4!}wnR2?=}sXC>U{FFJK$ z>+>z&^f$h%@Clz;FxT%qt>WV)+~?nI#gpEnJ{>Gz&NI^-)m ztMY3ApIxB)U;0S#UH-93?*$~CV^;hqA?#z#A5{87fW6o>=>j|e*bDfQ1rJ(~`kebm z@DKTOK2`J=E?S(Mw`6JlvVy{*hYeYU}D7Ze7>7zNy)J zTT832ZNtX)O`Ba=*)wO&o^#FIYiDFawW6W5wXLD4&P=H>*KYE8T1{WG>8)yM^|VBZ z#)h>UJ!@N=tJisa6)m2sntA4`ruwR;nnq8J+3KtEd7?yhV{WhV%}a63s`3C|y=j zTDGt(uVP8js?z*rE0!XWiez21Kf>sI`oY3_IVa>IunAGpjaMHTYPrs(PKoldQ}$ zhm-Rn*WtMRn@TH2Ip1QkK$$eiX)CfnZ5vFr(w)wlU-nm0C?Es!Wh5)I_Z zdV(2s9-r6aX=$oj4+&FRCEpEAu-PVGvlo2Mn^%i}^91nfn_GQrH&xZtv{;xaZ5j6e z7ukDzMQvmAM(WAe(%hKpYESW|fstuZf;Lj&ZE0@bWHxy`HL}mF^_W#Pt@CIOvVPMo z^I_vDZA@6%<};gX&Gnx3%`KbE+U6G7W6U;mG#E)$HSI00q(t1Xuw(_$#fp_>%NFMe zv24YXm5k@+En2k{(7mvvG!GM^{Je#^gn8v|L0#E?b_L zOMY)yxU3A0!9)+Gg_L?)Wp6E&9*gcIwYKIuG#MW5ELm%7*g_37#b&d< zp|0M}&#Z4=@5x->&{ADrlL?!xYpGhF8LEiZ^sJ1T>DBeH1JBHB(rX)9Jhjd3GhIZ= z^fos(*4AWHOaGdFJ%R#~t{0`fC~w z8!ylqTGz1$qc5&3F*mj-uZu>ee%T||DQ_h0RvK=p<{;{E|u|Y`;Bl2O$@nR50t>hG}Lzg+K z36ihfM7dJgwdvVH`r|PCz_2Xa?=SY*Ce>*II8X~G6n5RxlSrq7dVS3pHly$xNVc-b z+&r@_;D6S`V>DNTH(BpyPfN4i-$G5eg3W}^;`4ddd(n9GK{AP?)`6iW*^nNy*;{R9 zn&<_-=IUltjDJC2Mkbo~{!)>f@hG%9GGZj6` zC)>=^UQN%p!DH4#1`H@1vn*m(N=gH4qgoDDjScG?R6WDSB-Ff|)z#OuKnqoMa3%0O z=0*>O_$E5gMss6>uRaYSolf|GGLh;*Q{!4Fb@h0XM%IEvXzAubXDfml%uyJ#R(DiiOMbDlnv#+1Y3h)nMy6R@a#6A=L?$Lk5*W295+QN- z%2FiYUr5?YcNxaX(x|^mP8JUGSz5Tv?dC{hNpZQniqeHQR4gvBP*|2@HRr91S1xxK z<(1{xr8mG4!LQe}vsellrzso%NW`nV5R8 zXGDn=tBQ)$j6w}4fjOm|gmREnbE8%d+*x&F1BYcf5L>fKX_T0bc(4o@maXQMQlF}; zfrCIn+x@CGY4KEhV2N@#;)24YsbDC8@v)4x z)A2OdcudT^fS~L`mR*7Q0~~{#szNGn)uzT~^j$ewnFx%;j>$S%pJ>#k{NWltvpT!m+Y+1lpi)XkK$Y%Gf` zV#qg(ZYZr-zOcMPO#&;5@>Za3In4~_xl2}-tz5jas8nT{rS81N6`UECmQ|Fla=TZS zl;!1Gc?+$HR0U^Nm{?iV%+ec6%kq|2lq_74yK;HOl4V7C?uBLf^I*rV?8^Z@ZYo-~ z2v)vgMa803OP1u7Smn`9A@kk9Qc}66cIAW2QXd8fs7W?cO%>+HXiQsJQ(L2&4_ubMt;Rq-%8_0c zmy^*T*Afw8DDmmwu%p2BKFkqQn~gAhOu>}nr5Q-yM^V*G#PZ0&32t?>cay}cuJ=^0 zqXP|6mUd&0pY)+@8u~-b)qPb>aAR@@;i3YlGdK_UjCQE1uJ(8_b8E#s3J%;}3BqFG zvDOFrCUUrxmup&BzU0%Qy?i*DvU{v~WH(>PN!~E#O3JM@k<4ErC;Mtn>oZGN zg2K8viL07tHZ`YLSD}GML@g#rx5lH;43Uq?8+$qnT0II2AA7eAB?J6o(@piQ5mBX{ z>hv2tYt{NGz0k9Xs~RClV`WPN#;18EreMB1r2er1)Yj63o|3n4>B40zFsnhjuVoXO6?<`V zoi=O%2Ma(^wJK$^2&<7?X12=((X28OO*vbn1#Qfl%EQ40OiOOp$oZ0_H+*dfL$tb- zU1cdJ_iBUZGX+HL>^rS;vy}#_e4(U&8JoqPDhGXzvCCKH=0OM81zMd~Qc;rUF1it= zLUSvKDffaZ?14S7O(aR=EtZqx&nV-@{;Hg|V%T4n%N^Lo`OAuO;TuBtgO$woHey9K zcp!Hm4Xehcm)$j7BcfKpjipyXudw(~8Zdroh@olrKw()&MfN=GtJPrWvNoTvhsStB zQ*Cpg?QEZCBi2@}Z)k*@436n2WpeA!s4K8O2zZ~;iiL~ImaWc1{aCI9MjSa)vDc9hNU1rXMYJZTF=$UUmdouU zHUZ})t*Wn48JJrEHF%Dt+7@jf_p75sdpZW#bq&6BoQ*X?#&o$r#Gdc)DAt4788cCz zmChv~`=uI$taV99UiQVAo6(uLw8ylI2OqMZsx(hDvg^r7f~Lj3rV-^GwHSk z_USB}p)*sPQz@-!P(Y0bE(?OZF<91#QGkULHXxWEvxdCruu9daiTmSVO!|x2?*^lP{o`ZM}<2j1w zIG#Q{r|=xY#X|cZ+iCBgg}`Mi@d*Bm0d(PxP9k8u_0;2z%_xMA;7P#a#DjbF%~t@j zE%R|X1b3W793Hmy5xnHa4!jnSHjs8DzXyvwXT%A!EjZ7DivVMhUI>T_y2Ae_d|wxk z_26!n*o`zhg&*$oZiPhyFd147vW_ z^LNn!^-4cblO{x6ittVq%`QE)gITH95fWRP8Ulxv`!DoLz zH1N>}gYONUdv@Je;Y}4a3&e(e(Y!)^tdKRNWWaK8J_yPz2PVgK8xHtHVqfS92VKa$mq_)ulWoS&Zp_|DBKf-$C_B{qOv?|79_D@YIl9$;)Egxl^9D_bw2}550fx*+%F$25Nc#opT^N;SXn#aaI30{Jpv=LSV3VzE7g&+e04? zefYAN$Ob-ze)|NzF~TtZC0!I(sUd%tE?zv(OkKKS)iiTf##}KhdM$PgvSzvFW?zHT zwiZu|r_oc@>XGAl3`pQpC>J!LZHbK;A^jGq?(UVJl@|5)8?p2mK|EdJ(Z8hPId0)C zicQ)P-VwIbvCFtizh9I7hxu_YC^{GCUrdj2+|3n5z)u2XS;lJ+{~F+;SXW2nPUo(O zyTW&e-R-!?_yTItSH!}lNZyF+{3iBW0LdHU<%r|A9zYo-(629P`x2%)#GQ=MNToijzoiK9aHCbhV=9wR0JViOF zzcsNAyRNj?)O=x4taAr#%}$?>bg&Hk;pyc_r`#8(S6-A(*+OMyd&PnIdf;`!hL@lp zI(J6w3co9Cx8rW(9@MQLiZ!L3TwE?6<<7s3^0Hj&j;KqmUu*<@UEpm$p=*DP9U(OQ zLj;eO*_zo@vo0MMYZ|NTahoZ#wWT^!o@-`iWMtM=SMy1qm2oYv_%Nz=gfgpI)?@C3 zt4j?TrEso}0x#QtUC9V(Q{%X!!4{@xQgTM24`6U_-9Ov$4Ll!BcNFZ?MVj z7H0D{G*vgY)p-7zVi@FV8`?8lH?_7jH~TW%T3Z68v7+3Foy>Gt3GN|53&A+fI@jaa zHUkwwLsmvcJ=bEFBGt1?w>9C2s|G00DFSGD6~;VX=SXI}W@w{bnXW8{ZXCU%U}k1| zwkI>YZb#j%^+iT|ff1Fl+-N8;VhfDu0*7XNMXycxWkbVq7ts6e*lt8>#>R{cBRV6^ zRa9S;nV#w1mbtusWmb{U9a`S38FQ9rPDgHL+N|l>w;C}8Og4NOModNxgW(zBu1uty zzVq>fbd+}06=l^G)fLudraKJdv8@?nT(gbM8Ae=2))>?{yCBJUSj%Yac4bv(EthpH z2N^xQHoU}$%rM$B(p_l`Y|P-_D+`SJj2XX#47WBKqcdDaLx#&$6zPyJd z^kV#RfP~>KFyd<=XCj_4)8@>W)>M>s!Y%o%4PUWyMpkxVah)-uHZg1ZtTb0i#w@Uw z?MidG)<1C%vDT6r2o zwWB|Na>q)ldIZx)XJiznXYPQo-_Z-kWf^T5B@hcLL)!?QBUT~bXQhkA+j9d84@ESyvLdR>hc-cvbKWo<-0PoS^Kn^(`L?0FU%^+caHOyf;yuW634K-BfKEI5Y022;brbZnq5@Jlf*^Nt!edHg@_yR z1;(wlh1rGmb+cElpo+8==rfsF>6w{@Pp)v~7ZqmSnmG$vzqN3AA#BCiT#!kunGFqv zvt~}ab$Mn(mJwCUSUrj$OSgN%$}HoBJ8Rk1#ulKN`F||9n_N)%U1OJ4t79>%y(-=E zKV(Eu4kS1tn1|pUUevTqSOr+7HZo^t&J6sAMhX2lGc>}mOpt$!j11>Q^`AZpLhPbv z7tj8^hqeEvvliZ#bn6DtXSv&YI$L^7&ZmrHLL1#sU)a5Td1j%}Ci}B)oEI5c2Vrl& z6SWD(!*^yBtjvPxXBC}zYhC8I>$7LL)`192sWvte8;u2EB;pkCynK4ti>al&zY;j?}B+&l^6!5dY^;!!vha z#LjT-*qNSr_hsZSIe1Ws|8;%49uDa@OX>e1j^*O1rW2cQ#*S!CHStf{;s1}dC$sh= z!)pJwlpTNMT3qcca6bIEP8dU`_nG$W{%>$fnD3?I+_$Ygo%7A+2Arj=ZQxpA!!_wu z)(S#k`@~#WYG!9-V_D%6n*SBaJQr6E?RNYne8KIl|YJgu&6POR5Fnq z*g4X=m_{~avKv`s!$lklq1ebGQh<$_%(U4^#YCJU{$(~I9V{cy&9t#(g+-znkbgwX z4#c%_M2Zgl!QMAE)*a$4q&l=uh*1Rv{{#=G|HrW_--1NF1>5_M$u3|Sj)+FACmfD2 zT%r*Ahs;P}Mp#ALM&X#6f}qZYvm>>F=&E(}w~06HHm2wiN3clOkDw06^c_smoTHHv z?r@~jTqE#1cKEvtCA5e~AW&FD8CL$`5o54t91&rLLlY7A0w+@FQ;^}9a}V%Q`r40K z?r~XqAr>@R#Oo-bM?~PS5pfJD&WJyQvpAuD5%oD19s$1oOY)j~4TE1IwW2E^u#>@Z zN9j6*Bgc}{Rkb=$B99`$vHC%Toss9k2|j6sl$gjY;?(^ZVKcIj>FeRS#N5ajRGb)(G4w$h_x^TEus~Tt4BP86eHp>aw7B# zz;SeZMU}YgJWKo*IU<6eJ<=k!f=4}K9@K3_+=D6|5i?ObOz6*%`7i!hm3!bS=qVx( ze?&wp_cG}*rGdwg;OJ(uBXTyI{R#GHXJisv`YDDZ zAr5i%Z&5*Cp9WO@kL3ItcOp2_(Sg6Cr~#6Srv*z@#50QQb-C)>WEe&v~&hUjJFEm3<~cTBgz0a zh7|cVwB^^b?zf7}mPLd!M<&nxCnj%1@p)GIPryx_cHMVnI<`F)C^Jp$)3m~?(4dj{ zK#b62UlNg{K}1_Q0l1FHZ2Z;SWFj|aL#SAv3B4m5+&~rRdXNKtjZVNMJD&6weZOIm75ZKZIoZinoB{oQGJ+V>+|0^sV;_ zBaK0k^e%d@kxOIOA7hCY5HoUV>0{Zcj67B{c3LEYOK90*{4tc!UelOvAFOCy$5D0y zTJklGp&sO2MVYiC5>G3IdH)I-SF@Bk2|4;>kAS>=5~Fo7Hu1~&qcUCv-o&ravpmLH zf6M4fwvp`QS3=B5MHIW61eY>e2l9FkquUUj+$8iTSn^xU8%5R0=nolP!jdw23en`R zVN|8;+fjRp=GNPUm~zlcLp)-m*eoVZMwyY0$ANM+TVwo3Z2q51>FgsSt?Q@Ap3qR! z&Ky=Aj#d|DGdVj<72AhLTG!V>ZsK~fb(jvK1&@;NFeNyE=%h!frPrvJKOs6*D&uuh z)%P@}0*E}&n8w=lFv&+2Sel-SGoz&^^$(M{GRu%eAMRR)K=>#8+nrT`zh6h9$Y9T~kKVMdhf%_{ zMAJS=Euc2gib!`5J%srrFTLFYQvVsha zHH<-KaxO9{z;(!E>u!MQ@?`LJr7PV>B!L84CWmXw1g6Iz?bkq>n~Fe+R-*gxw-}ZH z1TBlorC%NY2}PbInXwNXwXQjEK1z&PQj9cIGW)yW0+=x{`OQ8y7^DgpA*eW zmTDZK-$21Rk3mX3UlRHQ<0Hw`G8yLyMe<%t6OAZGP56-ZCerXrY2rSaR$@f;Y1G8+ z5@Dkd*PaE!(<)QnD78dgx%JJ+OZsPgsYm9ON)6h2+)NBDD@DJ

GlZ0tCgB`9Nn~ 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 literal 0 HcmV?d00001 diff --git a/android/dist/armv8a/include/libwebsockets.h b/android/dist/armv8a/include/libwebsockets.h new file mode 100644 index 0000000000..0bb67f57bc --- /dev/null +++ b/android/dist/armv8a/include/libwebsockets.h @@ -0,0 +1,1207 @@ +/* + * libwebsockets - small server side websockets and web server implementation + * + * Copyright (C) 2010-2013 Andy Green + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation: + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C +#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C + +#ifdef __cplusplus +extern "C" { +#include +#endif + +#ifdef CMAKE_BUILD +#include "lws_config.h" +#endif + +#if defined(WIN32) || defined(_WIN32) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#include + +#define strcasecmp stricmp +#define getdtablesize() 30000 + +#define LWS_VISIBLE + +#ifdef LWS_DLL +#ifdef LWS_INTERNAL +#define LWS_EXTERN extern __declspec(dllexport) +#else +#define LWS_EXTERN extern __declspec(dllimport) +#endif +#else +#define LWS_EXTERN +#endif + +#else // NOT WIN32 + +#include +#include + +#if defined(__GNUC__) +#define LWS_VISIBLE __attribute__((visibility("default"))) +#else +#define LWS_VISIBLE +#endif + +#endif + +#ifdef LWS_USE_LIBEV +#include +#endif /* LWS_USE_LIBEV */ + +#include + +#ifndef LWS_EXTERN +#define LWS_EXTERN extern +#endif + +#ifdef _WIN32 +#define random rand +#else +#include +#include +#endif + +#define CONTEXT_PORT_NO_LISTEN -1 +#define MAX_MUX_RECURSION 2 + +enum lws_log_levels { + LLL_ERR = 1 << 0, + LLL_WARN = 1 << 1, + LLL_NOTICE = 1 << 2, + LLL_INFO = 1 << 3, + LLL_DEBUG = 1 << 4, + LLL_PARSER = 1 << 5, + LLL_HEADER = 1 << 6, + LLL_EXT = 1 << 7, + LLL_CLIENT = 1 << 8, + LLL_LATENCY = 1 << 9, + + LLL_COUNT = 10 /* set to count of valid flags */ +}; + +LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); + +/* notice, warn and log are always compiled in */ +#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) +#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) +#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) +/* + * weaker logging can be deselected at configure time using --disable-debug + * that gets rid of the overhead of checking while keeping _warn and _err + * active + */ +#ifdef _DEBUG + +#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) +#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) +#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) +#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) +#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) +#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) +#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) +LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); + +#else /* no debug */ + +#define lwsl_info(...) +#define lwsl_debug(...) +#define lwsl_parser(...) +#define lwsl_header(...) +#define lwsl_ext(...) +#define lwsl_client(...) +#define lwsl_latency(...) +#define lwsl_hexdump(a, b) + +#endif + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +/* api change list for user code to test against */ + +#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG + + +enum libwebsocket_context_options { + LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2, + LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = 4, + LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT = 8, + LWS_SERVER_OPTION_LIBEV = 16, + LWS_SERVER_OPTION_DISABLE_IPV6 = 32, + LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = 64, +}; + +enum libwebsocket_callback_reasons { + LWS_CALLBACK_ESTABLISHED, + LWS_CALLBACK_CLIENT_CONNECTION_ERROR, + LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, + LWS_CALLBACK_CLIENT_ESTABLISHED, + LWS_CALLBACK_CLOSED, + LWS_CALLBACK_CLOSED_HTTP, + LWS_CALLBACK_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE_PONG, + LWS_CALLBACK_CLIENT_WRITEABLE, + LWS_CALLBACK_SERVER_WRITEABLE, + LWS_CALLBACK_HTTP, + LWS_CALLBACK_HTTP_BODY, + LWS_CALLBACK_HTTP_BODY_COMPLETION, + LWS_CALLBACK_HTTP_FILE_COMPLETION, + LWS_CALLBACK_HTTP_WRITEABLE, + LWS_CALLBACK_FILTER_NETWORK_CONNECTION, + LWS_CALLBACK_FILTER_HTTP_CONNECTION, + LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, + LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION, + LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, + LWS_CALLBACK_CONFIRM_EXTENSION_OKAY, + LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED, + LWS_CALLBACK_PROTOCOL_INIT, + LWS_CALLBACK_PROTOCOL_DESTROY, + LWS_CALLBACK_WSI_CREATE, /* always protocol[0] */ + LWS_CALLBACK_WSI_DESTROY, /* always protocol[0] */ + LWS_CALLBACK_GET_THREAD_ID, + + /* external poll() management support */ + LWS_CALLBACK_ADD_POLL_FD, + LWS_CALLBACK_DEL_POLL_FD, + LWS_CALLBACK_CHANGE_MODE_POLL_FD, + LWS_CALLBACK_LOCK_POLL, + LWS_CALLBACK_UNLOCK_POLL, + + LWS_CALLBACK_USER = 1000, /* user code can use any including / above */ +}; + +// argument structure for all external poll related calls +// passed in via 'in' +struct libwebsocket_pollargs { + int fd; // applicable file descriptor + int events; // the new event mask + int prev_events; // the previous event mask +}; + +#ifdef _WIN32 +struct libwebsocket_pollfd { + SOCKET fd; + SHORT events; + SHORT revents; +}; +#else +#define libwebsocket_pollfd pollfd +#endif + +enum libwebsocket_extension_callback_reasons { + LWS_EXT_CALLBACK_SERVER_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_SERVER_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONSTRUCT, + LWS_EXT_CALLBACK_CHECK_OK_TO_REALLY_CLOSE, + LWS_EXT_CALLBACK_CHECK_OK_TO_PROPOSE_EXTENSION, + LWS_EXT_CALLBACK_DESTROY, + LWS_EXT_CALLBACK_DESTROY_ANY_WSI_CLOSING, + LWS_EXT_CALLBACK_ANY_WSI_ESTABLISHED, + LWS_EXT_CALLBACK_PACKET_RX_PREPARSE, + LWS_EXT_CALLBACK_PACKET_TX_PRESEND, + LWS_EXT_CALLBACK_PACKET_TX_DO_SEND, + LWS_EXT_CALLBACK_HANDSHAKE_REPLY_TX, + LWS_EXT_CALLBACK_FLUSH_PENDING_TX, + LWS_EXT_CALLBACK_EXTENDED_PAYLOAD_RX, + LWS_EXT_CALLBACK_CAN_PROXY_CLIENT_CONNECTION, + LWS_EXT_CALLBACK_1HZ, + LWS_EXT_CALLBACK_REQUEST_ON_WRITEABLE, + LWS_EXT_CALLBACK_IS_WRITEABLE, + LWS_EXT_CALLBACK_PAYLOAD_TX, + LWS_EXT_CALLBACK_PAYLOAD_RX, +}; + +enum libwebsocket_write_protocol { + LWS_WRITE_TEXT, + LWS_WRITE_BINARY, + LWS_WRITE_CONTINUATION, + LWS_WRITE_HTTP, + + /* special 04+ opcodes */ + + LWS_WRITE_CLOSE, + LWS_WRITE_PING, + LWS_WRITE_PONG, + + /* flags */ + + LWS_WRITE_NO_FIN = 0x40, + /* + * client packet payload goes out on wire unmunged + * only useful for security tests since normal servers cannot + * decode the content if used + */ + LWS_WRITE_CLIENT_IGNORE_XOR_MASK = 0x80 +}; + +/* + * you need these to look at headers that have been parsed if using the + * LWS_CALLBACK_FILTER_CONNECTION callback. If a header from the enum + * list below is absent, .token = NULL and token_len = 0. Otherwise .token + * points to .token_len chars containing that header content. + */ + +struct lws_tokens { + char *token; + int token_len; +}; + +enum lws_token_indexes { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_HOST, + WSI_TOKEN_CONNECTION, + WSI_TOKEN_KEY1, + WSI_TOKEN_KEY2, + WSI_TOKEN_PROTOCOL, + WSI_TOKEN_UPGRADE, + WSI_TOKEN_ORIGIN, + WSI_TOKEN_DRAFT, + WSI_TOKEN_CHALLENGE, + + /* new for 04 */ + WSI_TOKEN_KEY, + WSI_TOKEN_VERSION, + WSI_TOKEN_SWORIGIN, + + /* new for 05 */ + WSI_TOKEN_EXTENSIONS, + + /* client receives these */ + WSI_TOKEN_ACCEPT, + WSI_TOKEN_NONCE, + WSI_TOKEN_HTTP, + + /* http-related */ + WSI_TOKEN_HTTP_ACCEPT, + WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, + WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, + WSI_TOKEN_HTTP_IF_NONE_MATCH, + WSI_TOKEN_HTTP_ACCEPT_ENCODING, + WSI_TOKEN_HTTP_ACCEPT_LANGUAGE, + WSI_TOKEN_HTTP_PRAGMA, + WSI_TOKEN_HTTP_CACHE_CONTROL, + WSI_TOKEN_HTTP_AUTHORIZATION, + WSI_TOKEN_HTTP_COOKIE, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + WSI_TOKEN_HTTP_CONTENT_TYPE, + WSI_TOKEN_HTTP_DATE, + WSI_TOKEN_HTTP_RANGE, + WSI_TOKEN_HTTP_REFERER, + WSI_TOKEN_HTTP_URI_ARGS, + + + WSI_TOKEN_MUXURL, + + /* use token storage to stash these */ + + _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, + _WSI_TOKEN_CLIENT_PEER_ADDRESS, + _WSI_TOKEN_CLIENT_URI, + _WSI_TOKEN_CLIENT_HOST, + _WSI_TOKEN_CLIENT_ORIGIN, + + /* always last real token index*/ + WSI_TOKEN_COUNT, + /* parser state additions */ + WSI_TOKEN_NAME_PART, + WSI_TOKEN_SKIPPING, + WSI_TOKEN_SKIPPING_SAW_CR, + WSI_PARSING_COMPLETE, + WSI_INIT_TOKEN_MUXURL, +}; + +struct lws_token_limits { + unsigned short token_limit[WSI_TOKEN_COUNT]; +}; + +/* + * From RFC 6455 + 1000 + + 1000 indicates a normal closure, meaning that the purpose for + which the connection was established has been fulfilled. + + 1001 + + 1001 indicates that an endpoint is "going away", such as a server + going down or a browser having navigated away from a page. + + 1002 + + 1002 indicates that an endpoint is terminating the connection due + to a protocol error. + + 1003 + + 1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g., an + endpoint that understands only text data MAY send this if it + receives a binary message). + + 1004 + + Reserved. The specific meaning might be defined in the future. + + 1005 + + 1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that no status + code was actually present. + + 1006 + + 1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed abnormally, e.g., without sending or + receiving a Close control frame. + + 1007 + + 1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). + + 1008 + + 1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. This + is a generic status code that can be returned when there is no + other more suitable status code (e.g., 1003 or 1009) or if there + is a need to hide specific details about the policy. + + 1009 + + 1009 indicates that an endpoint is terminating the connection + because it has received a message that is too big for it to + process. + + 1010 + + 1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake. The list of extensions that + are needed SHOULD appear in the /reason/ part of the Close frame. + Note that this status code is not used by the server, because it + can fail the WebSocket handshake instead. + + 1011 + + 1011 indicates that a server is terminating the connection because + it encountered an unexpected condition that prevented it from + fulfilling the request. + + 1015 + + 1015 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed due to a failure to perform a TLS handshake + (e.g., the server certificate can't be verified). +*/ + +enum lws_close_status { + LWS_CLOSE_STATUS_NOSTATUS = 0, + LWS_CLOSE_STATUS_NORMAL = 1000, + LWS_CLOSE_STATUS_GOINGAWAY = 1001, + LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002, + LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003, + LWS_CLOSE_STATUS_RESERVED = 1004, + LWS_CLOSE_STATUS_NO_STATUS = 1005, + LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006, + LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007, + LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008, + LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009, + LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010, + LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, + LWS_CLOSE_STATUS_TLS_FAILURE = 1015, +}; + +enum http_status { + HTTP_STATUS_OK = 200, + HTTP_STATUS_NO_CONTENT = 204, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_UNAUTHORIZED, + HTTP_STATUS_PAYMENT_REQUIRED, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_METHOD_NOT_ALLOWED, + HTTP_STATUS_NOT_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQUIRED, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_LENGTH_REQUIRED, + HTTP_STATUS_PRECONDITION_FAILED, + HTTP_STATUS_REQ_ENTITY_TOO_LARGE, + HTTP_STATUS_REQ_URI_TOO_LONG, + HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, + HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, + HTTP_STATUS_EXPECTATION_FAILED, + + HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, + HTTP_STATUS_NOT_IMPLEMENTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAILABLE, + HTTP_STATUS_GATEWAY_TIMEOUT, + HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, +}; + +struct libwebsocket; +struct libwebsocket_context; +/* needed even with extensions disabled for create context */ +struct libwebsocket_extension; + +/** + * callback_function() - User server actions + * @context: Websockets context + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * This callback is the way the user controls what is served. All the + * protocol detail is hidden and handled by the library. + * + * For each connection / session there is user data allocated that is + * pointed to by "user". You set the size of this user data area when + * the library is initialized with libwebsocket_create_server. + * + * You get an opportunity to initialize user data when called back with + * LWS_CALLBACK_ESTABLISHED reason. + * + * LWS_CALLBACK_ESTABLISHED: after the server completes a handshake with + * an incoming client + * + * LWS_CALLBACK_CLIENT_CONNECTION_ERROR: the request client connection has + * been unable to complete a handshake with the remote server + * + * LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: this is the last chance for the + * client user code to examine the http headers + * and decide to reject the connection. If the + * content in the headers is interesting to the + * client (url, etc) it needs to copy it out at + * this point since it will be destroyed before + * the CLIENT_ESTABLISHED call + * + * LWS_CALLBACK_CLIENT_ESTABLISHED: after your client connection completed + * a handshake with the remote server + * + * LWS_CALLBACK_CLOSED: when the websocket session ends + * + * LWS_CALLBACK_CLOSED_HTTP: when a HTTP (non-websocket) session ends + * + * LWS_CALLBACK_RECEIVE: data has appeared for this server endpoint from a + * remote client, it can be found at *in and is + * len bytes long + * + * LWS_CALLBACK_CLIENT_RECEIVE_PONG: if you elected to see PONG packets, + * they appear with this callback reason. PONG + * packets only exist in 04+ protocol + * + * LWS_CALLBACK_CLIENT_RECEIVE: data has appeared from the server for the + * client connection, it can be found at *in and + * is len bytes long + * + * LWS_CALLBACK_HTTP: an http request has come from a client that is not + * asking to upgrade the connection to a websocket + * one. This is a chance to serve http content, + * for example, to send a script to the client + * which will then open the websockets connection. + * @in points to the URI path requested and + * libwebsockets_serve_http_file() makes it very + * simple to send back a file to the client. + * Normally after sending the file you are done + * with the http connection, since the rest of the + * activity will come by websockets from the script + * that was delivered by http, so you will want to + * return 1; to close and free up the connection. + * That's important because it uses a slot in the + * total number of client connections allowed set + * by MAX_CLIENTS. + * + * LWS_CALLBACK_HTTP_BODY: the next @len bytes data from the http + * request body HTTP connection is now available in @in. + * + * LWS_CALLBACK_HTTP_BODY_COMPLETION: the expected amount of http request + * body has been delivered + * + * LWS_CALLBACK_HTTP_WRITEABLE: you can write more down the http protocol + * link now. + * + * LWS_CALLBACK_HTTP_FILE_COMPLETION: a file requested to be send down + * http link has completed. + * + * LWS_CALLBACK_CLIENT_WRITEABLE: + * LWS_CALLBACK_SERVER_WRITEABLE: If you call + * libwebsocket_callback_on_writable() on a connection, you will + * get one of these callbacks coming when the connection socket + * is able to accept another write packet without blocking. + * If it already was able to take another packet without blocking, + * you'll get this callback at the next call to the service loop + * function. Notice that CLIENTs get LWS_CALLBACK_CLIENT_WRITEABLE + * and servers get LWS_CALLBACK_SERVER_WRITEABLE. + * + * LWS_CALLBACK_FILTER_NETWORK_CONNECTION: called when a client connects to + * the server at network level; the connection is accepted but then + * passed to this callback to decide whether to hang up immediately + * or not, based on the client IP. @in contains the connection + * socket's descriptor. Since the client connection information is + * not available yet, @wsi still pointing to the main server socket. + * Return non-zero to terminate the connection before sending or + * receiving anything. Because this happens immediately after the + * network connection from the client, there's no websocket protocol + * selected yet so this callback is issued only to protocol 0. + * + * LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED: A new client just had + * been connected, accepted, and instantiated into the pool. This + * callback allows setting any relevant property to it. Because this + * happens immediately after the instantiation of a new client, + * there's no websocket protocol selected yet so this callback is + * issued only to protocol 0. Only @wsi is defined, pointing to the + * new client, and the return value is ignored. + * + * LWS_CALLBACK_FILTER_HTTP_CONNECTION: called when the request has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the URI, eg, "/" + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the http + * connection to proceed or to kill the connection. + * + * LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION: called when the handshake has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the requested protocol name + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the handshake + * to proceed or to kill the connection. + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to perform extra SSL_CTX_load_verify_locations() or similar + * calls to direct OpenSSL where to find certificates the client + * can use to confirm the remote server identity. @user is the + * OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to load extra certifcates into the server which allow it to + * verify the validity of certificates returned by clients. @user + * is the server's OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION: if the + * libwebsockets context was created with the option + * LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, then this + * callback is generated during OpenSSL verification of the cert + * sent from the client. It is sent to protocol[0] callback as + * no protocol has been negotiated on the connection yet. + * Notice that the libwebsockets context and wsi are both NULL + * during this callback. See + * http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html + * to understand more detail about the OpenSSL callback that + * generates this libwebsockets callback and the meanings of the + * arguments passed. In this callback, @user is the x509_ctx, + * @in is the ssl pointer and @len is preverify_ok + * Notice that this callback maintains libwebsocket return + * conventions, return 0 to mean the cert is OK or 1 to fail it. + * This also means that if you don't handle this callback then + * the default callback action of returning 0 allows the client + * certificates. + * + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER: this callback happens + * when a client handshake is being compiled. @user is NULL, + * @in is a char **, it's pointing to a char * which holds the + * next location in the header buffer where you can add + * headers, and @len is the remaining space in the header buffer, + * which is typically some hundreds of bytes. So, to add a canned + * cookie, your handler code might look similar to: + * + * char **p = (char **)in; + * + * if (len < 100) + * return 1; + * + * *p += sprintf(*p, "Cookie: a=b\x0d\x0a"); + * + * return 0; + * + * Notice if you add anything, you just have to take care about + * the CRLF on the line you added. Obviously this callback is + * optional, if you don't handle it everything is fine. + * + * Notice the callback is coming to protocols[0] all the time, + * because there is no specific protocol handshook yet. + * + * LWS_CALLBACK_CONFIRM_EXTENSION_OKAY: When the server handshake code + * sees that it does support a requested extension, before + * accepting the extension by additing to the list sent back to + * the client it gives this callback just to check that it's okay + * to use that extension. It calls back to the requested protocol + * and with @in being the extension name, @len is 0 and @user is + * valid. Note though at this time the ESTABLISHED callback hasn't + * happened yet so if you initialize @user content there, @user + * content during this callback might not be useful for anything. + * Notice this callback comes to protocols[0]. + * + * LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED: When a client + * connection is being prepared to start a handshake to a server, + * each supported extension is checked with protocols[0] callback + * with this reason, giving the user code a chance to suppress the + * claim to support that extension by returning non-zero. If + * unhandled, by default 0 will be returned and the extension + * support included in the header to the server. Notice this + * callback comes to protocols[0]. + * + * LWS_CALLBACK_PROTOCOL_INIT: One-time call per protocol so it can + * do initial setup / allocations etc + * + * LWS_CALLBACK_PROTOCOL_DESTROY: One-time call per protocol indicating + * this protocol won't get used at all after this callback, the + * context is getting destroyed. Take the opportunity to + * deallocate everything that was allocated by the protocol. + * + * LWS_CALLBACK_WSI_CREATE: outermost (earliest) wsi create notification + * + * LWS_CALLBACK_WSI_DESTROY: outermost (latest) wsi destroy notification + * + * The next five reasons are optional and only need taking care of if you + * will be integrating libwebsockets sockets into an external polling + * array. + * + * For these calls, @in points to a struct libwebsocket_pollargs that + * contains @fd, @events and @prev_events members + * + * LWS_CALLBACK_ADD_POLL_FD: libwebsocket deals with its poll() loop + * internally, but in the case you are integrating with another + * server you will need to have libwebsocket sockets share a + * polling array with the other server. This and the other + * POLL_FD related callbacks let you put your specialized + * poll array interface code in the callback for protocol 0, the + * first protocol you support, usually the HTTP protocol in the + * serving case. + * This callback happens when a socket needs to be + * added to the polling loop: @in points to a struct + * libwebsocket_pollargs; the @fd member of the struct is the file + * descriptor, and @events contains the active events. + * + * If you are using the internal polling loop (the "service" + * callback), you can just ignore these callbacks. + * + * LWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor + * needs to be removed from an external polling array. @in is + * again the struct libwebsocket_pollargs containing the @fd member + * to be removed. If you are using the internal polling + * loop, you can just ignore it. + * + * LWS_CALLBACK_CHANGE_MODE_POLL_FD: This callback happens when + * libwebsockets wants to modify the events for a connectiion. + * @in is the struct libwebsocket_pollargs with the @fd to change. + * The new event mask is in @events member and the old mask is in + * the @prev_events member. + * If you are using the internal polling loop, you can just ignore + * it. + * + * LWS_CALLBACK_LOCK_POLL: + * LWS_CALLBACK_UNLOCK_POLL: These allow the external poll changes driven + * by libwebsockets to participate in an external thread locking + * scheme around the changes, so the whole thing is threadsafe. + */ +LWS_VISIBLE LWS_EXTERN int callback(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +typedef int (callback_function)(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +#ifndef LWS_NO_EXTENSIONS +/** + * extension_callback_function() - Hooks to allow extensions to operate + * @context: Websockets context + * @ext: This extension + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * Each extension that is active on a particular connection receives + * callbacks during the connection lifetime to allow the extension to + * operate on websocket data and manage itself. + * + * Libwebsockets takes care of allocating and freeing "user" memory for + * each active extension on each connection. That is what is pointed to + * by the @user parameter. + * + * LWS_EXT_CALLBACK_CONSTRUCT: called when the server has decided to + * select this extension from the list provided by the client, + * just before the server will send back the handshake accepting + * the connection with this extension active. This gives the + * extension a chance to initialize its connection context found + * in @user. + * + * LWS_EXT_CALLBACK_CLIENT_CONSTRUCT: same as LWS_EXT_CALLBACK_CONSTRUCT + * but called when client is instantiating this extension. Some + * extensions will work the same on client and server side and then + * you can just merge handlers for both CONSTRUCTS. + * + * LWS_EXT_CALLBACK_DESTROY: called when the connection the extension was + * being used on is about to be closed and deallocated. It's the + * last chance for the extension to deallocate anything it has + * allocated in the user data (pointed to by @user) before the + * user data is deleted. This same callback is used whether you + * are in client or server instantiation context. + * + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE: when this extension was active on + * a connection, and a packet of data arrived at the connection, + * it is passed to this callback to give the extension a chance to + * change the data, eg, decompress it. @user is pointing to the + * extension's private connection context data, @in is pointing + * to an lws_tokens struct, it consists of a char * pointer called + * token, and an int called token_len. At entry, these are + * set to point to the received buffer and set to the content + * length. If the extension will grow the content, it should use + * a new buffer allocated in its private user context data and + * set the pointed-to lws_tokens members to point to its buffer. + * + * LWS_EXT_CALLBACK_PACKET_TX_PRESEND: this works the same way as + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE above, except it gives the + * extension a chance to change websocket data just before it will + * be sent out. Using the same lws_token pointer scheme in @in, + * the extension can change the buffer and the length to be + * transmitted how it likes. Again if it wants to grow the + * buffer safely, it should copy the data into its own buffer and + * set the lws_tokens token pointer to it. + */ +LWS_VISIBLE LWS_EXTERN int extension_callback(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); + +typedef int (extension_callback_function)(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); +#endif + +/** + * struct libwebsocket_protocols - List of protocols and handlers server + * supports. + * @name: Protocol name that must match the one given in the client + * Javascript new WebSocket(url, 'protocol') name + * @callback: The service callback used for this protocol. It allows the + * service action for an entire protocol to be encapsulated in + * the protocol-specific callback + * @per_session_data_size: Each new connection using this protocol gets + * this much memory allocated on connection establishment and + * freed on connection takedown. A pointer to this per-connection + * allocation is passed into the callback in the 'user' parameter + * @rx_buffer_size: if you want atomic frames delivered to the callback, you + * should set this to the size of the biggest legal frame that + * you support. If the frame size is exceeded, there is no + * error, but the buffer will spill to the user callback when + * full, which you can detect by using + * libwebsockets_remaining_packet_payload(). Notice that you + * just talk about frame size here, the LWS_SEND_BUFFER_PRE_PADDING + * and post-padding are automatically also allocated on top. + * @no_buffer_all_partial_tx: Leave at zero if you want the library to take + * care of all partial tx for you. It's useful if you only have + * small tx packets and the chance of any truncated send is small + * enough any additional malloc / buffering overhead is less + * painful than writing the code to deal with partial sends. For + * protocols where you stream big blocks, set to nonzero and use + * the return value from libwebsocket_write() to manage how much + * got send yourself. + * @owning_server: the server init call fills in this opaque pointer when + * registering this protocol with the server. + * @protocol_index: which protocol we are starting from zero + * + * This structure represents one protocol supported by the server. An + * array of these structures is passed to libwebsocket_create_server() + * allows as many protocols as you like to be handled by one server. + */ + +struct libwebsocket_protocols { + const char *name; + callback_function *callback; + size_t per_session_data_size; + size_t rx_buffer_size; + int no_buffer_all_partial_tx; + + /* + * below are filled in on server init and can be left uninitialized, + * no need for user to use them directly either + */ + + struct libwebsocket_context *owning_server; + int protocol_index; +}; + +#ifndef LWS_NO_EXTENSIONS +/** + * struct libwebsocket_extension - An extension we know how to cope with + * + * @name: Formal extension name, eg, "deflate-stream" + * @callback: Service callback + * @per_session_data_size: Libwebsockets will auto-malloc this much + * memory for the use of the extension, a pointer + * to it comes in the @user callback parameter + * @per_context_private_data: Optional storage for this extension that + * is per-context, so it can track stuff across + * all sessions, etc, if it wants + */ + +struct libwebsocket_extension { + const char *name; + extension_callback_function *callback; + size_t per_session_data_size; + void *per_context_private_data; +}; +#endif + +/** + * struct lws_context_creation_info: parameters to create context with + * + * @port: Port to listen on... you can use 0 to suppress listening on + * any port, that's what you want if you are not running a + * websocket server at all but just using it as a client + * @iface: NULL to bind the listen socket to all interfaces, or the + * interface name, eg, "eth2" + * @protocols: Array of structures listing supported protocols and a protocol- + * specific callback for each one. The list is ended with an + * entry that has a NULL callback pointer. + * It's not const because we write the owning_server member + * @extensions: NULL or array of libwebsocket_extension structs listing the + * extensions this context supports. If you configured with + * --without-extensions, you should give NULL here. + * @token_limits: NULL or struct lws_token_limits pointer which is initialized + * with a token length limit for each possible WSI_TOKEN_*** + * @ssl_cert_filepath: If libwebsockets was compiled to use ssl, and you want + * to listen using SSL, set to the filepath to fetch the + * server cert from, otherwise NULL for unencrypted + * @ssl_private_key_filepath: filepath to private key if wanting SSL mode, + * else ignored + * @ssl_ca_filepath: CA certificate filepath or NULL + * @ssl_cipher_list: List of valid ciphers to use (eg, + * "RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" + * or you can leave it as NULL to get "DEFAULT" + * @gid: group id to change to after setting listen socket, or -1. + * @uid: user id to change to after setting listen socket, or -1. + * @options: 0, or LWS_SERVER_OPTION_DEFEAT_CLIENT_MASK + * @user: optional user pointer that can be recovered via the context + * pointer using libwebsocket_context_user + * @ka_time: 0 for no keepalive, otherwise apply this keepalive timeout to + * all libwebsocket sockets, client or server + * @ka_probes: if ka_time was nonzero, after the timeout expires how many + * times to try to get a response from the peer before giving up + * and killing the connection + * @ka_interval: if ka_time was nonzero, how long to wait before each ka_probes + * attempt + */ + +struct lws_context_creation_info { + int port; + const char *iface; + struct libwebsocket_protocols *protocols; + struct libwebsocket_extension *extensions; + struct lws_token_limits *token_limits; + const char *ssl_cert_filepath; + const char *ssl_private_key_filepath; + const char *ssl_ca_filepath; + const char *ssl_cipher_list; + const char *http_proxy_address; + unsigned int http_proxy_port; + int gid; + int uid; + unsigned int options; + void *user; + int ka_time; + int ka_probes; + int ka_interval; + +}; + +LWS_VISIBLE LWS_EXTERN +void lws_set_log_level(int level, + void (*log_emit_function)(int level, const char *line)); + +LWS_VISIBLE LWS_EXTERN void +lwsl_emit_syslog(int level, const char *line); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket_context * +libwebsocket_create_context(struct lws_context_creation_info *info); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_set_proxy(struct libwebsocket_context *context, const char *proxy); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_context_destroy(struct libwebsocket_context *context); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service(struct libwebsocket_context *context, int timeout_ms); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_cancel_service(struct libwebsocket_context *context); + +#ifdef LWS_USE_LIBEV +LWS_VISIBLE LWS_EXTERN int +libwebsocket_initloop( + struct libwebsocket_context *context, struct ev_loop *loop); + +LWS_VISIBLE void +libwebsocket_sigint_cb( + struct ev_loop *loop, struct ev_signal *watcher, int revents); +#endif /* LWS_USE_LIBEV */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service_fd(struct libwebsocket_context *context, + struct libwebsocket_pollfd *pollfd); + +LWS_VISIBLE LWS_EXTERN void * +libwebsocket_context_user(struct libwebsocket_context *context); + +enum pending_timeout { + NO_PENDING_TIMEOUT = 0, + PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE, + PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE, + PENDING_TIMEOUT_ESTABLISH_WITH_SERVER, + PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE, + PENDING_TIMEOUT_AWAITING_PING, + PENDING_TIMEOUT_CLOSE_ACK, + PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE, + PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE, + PENDING_TIMEOUT_SSL_ACCEPT, + PENDING_TIMEOUT_HTTP_CONTENT, + PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND, +}; + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_set_timeout(struct libwebsocket *wsi, + enum pending_timeout reason, int secs); + +/* + * IMPORTANT NOTICE! + * + * When sending with websocket protocol (LWS_WRITE_TEXT or LWS_WRITE_BINARY) + * the send buffer has to have LWS_SEND_BUFFER_PRE_PADDING bytes valid BEFORE + * buf, and LWS_SEND_BUFFER_POST_PADDING bytes valid AFTER (buf + len). + * + * This allows us to add protocol info before and after the data, and send as + * one packet on the network without payload copying, for maximum efficiency. + * + * So for example you need this kind of code to use libwebsocket_write with a + * 128-byte payload + * + * char buf[LWS_SEND_BUFFER_PRE_PADDING + 128 + LWS_SEND_BUFFER_POST_PADDING]; + * + * // fill your part of the buffer... for example here it's all zeros + * memset(&buf[LWS_SEND_BUFFER_PRE_PADDING], 0, 128); + * + * libwebsocket_write(wsi, &buf[LWS_SEND_BUFFER_PRE_PADDING], 128, + * LWS_WRITE_TEXT); + * + * When sending LWS_WRITE_HTTP, there is no protocol addition and you can just + * use the whole buffer without taking care of the above. + */ + +/* + * this is the frame nonce plus two header plus 8 length + * there's an additional two for mux extension per mux nesting level + * 2 byte prepend on close will already fit because control frames cannot use + * the big length style + */ + +#define LWS_SEND_BUFFER_PRE_PADDING (4 + 10 + (2 * MAX_MUX_RECURSION)) +#define LWS_SEND_BUFFER_POST_PADDING 4 + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, size_t len, + enum libwebsocket_write_protocol protocol); + +/* helper for case where buffer may be const */ +#define libwebsocket_write_http(wsi, buf, len) \ + libwebsocket_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file(struct libwebsocket_context *context, + struct libwebsocket *wsi, const char *file, + const char *content_type, const char *other_headers); +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int libwebsockets_return_http_status( + struct libwebsocket_context *context, + struct libwebsocket *wsi, unsigned int code, + const char *html_body); + +LWS_VISIBLE LWS_EXTERN const struct libwebsocket_protocols * +libwebsockets_get_protocol(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_all_protocol( + const struct libwebsocket_protocols *protocol, int reason); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_get_socket_fd(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_is_final_fragment(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char +libwebsocket_get_reserved_bits(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_rx_flow_control(struct libwebsocket *wsi, int enable); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_rx_flow_allow_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN size_t +libwebsockets_remaining_packet_payload(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect_extended(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one, + void *userdata); + +LWS_VISIBLE LWS_EXTERN const char * +libwebsocket_canonical_hostname(struct libwebsocket_context *context); + + +LWS_VISIBLE LWS_EXTERN void +libwebsockets_get_peer_addresses(struct libwebsocket_context *context, + struct libwebsocket *wsi, int fd, char *name, int name_len, + char *rip, int rip_len); + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_get_random(struct libwebsocket_context *context, + void *buf, int len); + +LWS_VISIBLE LWS_EXTERN int +lws_daemonize(const char *_lock_path); + +LWS_VISIBLE LWS_EXTERN int +lws_send_pipe_choked(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +lws_frame_is_binary(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char * +libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_encode_string(const char *in, int in_len, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_decode_string(const char *in, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN const char * +lws_get_library_version(void); + +/* access to headers... only valid while headers valid */ + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_total_length(struct libwebsocket *wsi, enum lws_token_indexes h); + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_copy(struct libwebsocket *wsi, char *dest, int len, + enum lws_token_indexes h); + +/* + * Note: this is not normally needed as a user api. It's provided in case it is + * useful when integrating with other app poll loop service code. + */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_read(struct libwebsocket_context *context, + struct libwebsocket *wsi, + unsigned char *buf, size_t len); + +#ifndef LWS_NO_EXTENSIONS +LWS_VISIBLE LWS_EXTERN struct libwebsocket_extension *libwebsocket_get_internal_extensions(); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake b/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake new file mode 100644 index 0000000000..6a61cb5e9a --- /dev/null +++ b/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake @@ -0,0 +1,31 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "websockets" for configuration "" +set_property(TARGET websockets APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-21/arch-arm64/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets "${_IMPORT_PREFIX}/lib/libwebsockets.a" ) + +# Import target "websockets_shared" for configuration "" +set_property(TARGET websockets_shared APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets_shared PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-21/arch-arm64/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" + IMPORTED_SONAME_NOCONFIG "libwebsockets.so.4.0.0" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets_shared ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets_shared "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake b/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake new file mode 100644 index 0000000000..848b03ccc2 --- /dev/null +++ b/android/dist/armv8a/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake @@ -0,0 +1,93 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget websockets websockets_shared) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target websockets +add_library(websockets STATIC IMPORTED) + +# Create imported target websockets_shared +add_library(websockets_shared SHARED IMPORTED) + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/LibwebsocketsTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/android/dist/armv8a/lib/libwebsockets.a b/android/dist/armv8a/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..b37212d780b5806709356c407d5b8c4d33d4ae31 GIT binary patch literal 155098 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 rmyW?fWh8zmf1KypAPtfsS`o*(kpF)H-sL5( literal 0 HcmV?d00001 diff --git a/android/dist/armv8a/lib/libwebsockets.so b/android/dist/armv8a/lib/libwebsockets.so new file mode 100644 index 0000000000000000000000000000000000000000..5d9359c8169140f54cc415498576a7173235aa19 GIT binary patch literal 76552 zcmce<3w%`7wfMhhCNBtL$cqR_W&$cstuF#(td)~N5y5K(QtNHKW*!NKXCR44gqle} zMbigIP`uhUlORgcm#xq;y|xUYwWz(VLa+7S_SO)5V6lq$%2aTE-*q105Xim1-{=4N z{O9vI*=Mi4_u6Z(z4qE`uf6w4%XK%-cDr24{(02TmBe21n-I-P*m%LIJesOdSxQsI zs=&ybY2`Uv@aWqn)DD$V!u*>>QqEB`J?E&2-wtohHsN(vXqR&XmU1htax1NJcGzc; zX@@x`8g=ss^9o>%GMa zzix#R+-torCcM;opGi24=gT~|S+JX}&`0xfDj`$ZH?+@^PlOui|@Ap{o z@m9Ez@CKd>t@!;`_%*`wc{HAfc<$q|f9LXYJ5L?YgFIC{-{cWl_$MCu)$@eph2LDB z7|&fi8+b(Y&*QOw#r6x~YMxa*-?Cs!2|v$M!E?CggO6?hp@BJ zGkO^K_UyCgkAYO^Std$`pWWWujP_=$Z-{X7`_LNf|4AtMk6FSPGg6f*8iqgj8tt_* zIRcR}!87Gj6L_t~pO1#gUpEYVoJD8O%_g2ltvbdI(_Urp*~;Vyx~czc{5(k>p>xX+ zdHBaL{gSl$@oKAoLslI>9EP3?hk-w4)!StCOWeZqq}AS+tV#6=3%=LDldW#+HUTeL z{gq?oUpdEwSCLPCR~vBi-T7C#;cR?(V3_>zVfcB=F#IeWCjTYF^zVfRJ=tnN6c@kC zDKEdD82Gc*5liV+Sn&TQP5SG$A^o*}82Vkq@PEcI`AdhPGiR7~ppwDTlL!XXv6Sr zB{ZE4zi*iQ)x*&9k-`6Lr7bp^scib+9tKa&FnE4x(Z9pugKZyt-RQ4ul_8Tbzi*g< z`pYo*AF=u+BnC9UODsnGd6;_N9R@CQ`q}vNd81zD5v$*=;i}#rreDg2k+)sL(BC`^ ze4W7`qe-Xz`R*|Je{c0mh1D;JpYdDDU)v6|Kt}MVVeou147`$3GJXrK@vB+Le8b53 z9oGE2&N6_Xwfg0!!|;E)B@Zu2Mf|Mn>ZxJ)`FBfBKD6ZDwjKX44E?_Z=h^yqo>gz2 zH9>8lU*)%F7&?DH41B5qXFmE@v-~Iv&t97kmi*ZI!8Ht?`zd!eI=^J$fAl*h{;Mtg z{$cndcI4UcR2cAV^|aNG85W)!EIR8f{8q9$Fbq8*1CBnQZPK&F!ZX8y@30Wqa=6N- z-&%O(LAU&5eh|6x$|8YZof)WtVfb^7Mdyu{oL_F$>l#K5ODuZ6W6@*ltM`VHlV^v4 zzh&UDh;syw55xcew&;wD!N6~m8K@^Md7EO%gUz4yR(@sizsAa+8m8Xk!_Ya~fM=^m zE&O(S{TBWj3%@z661>hyef zK!8Q&qMFl_qTvoV&w$E-w{fg?l8WuN&Bg<;lqK4X9)mV3DQ%(I{D^zq@edCZe zNzPih2M<@&pH{O)b8T%yb-1Pm5*lk871XQ*Vm6RYTDdITRK0iwG_Gi>U#aNP718BJ zxU6=CT3)++dHw2IDJ3NquUJ$s@4});vmiAKtZY67J%e@C4Qr|wEvvt)TKcbnemRXh zb|P&j%W3_0T0W5-*uSP(YK+!3sBlyLVzpd~MTJb#4e6A82wwHF+SRpGMGG5iSJYIm zT)eWjI$Br1w020pOTR3R)>ex=*zB-jD{C7T*VinLnkn_j*0RNoO|>iR%#Da}G`v#! z$q@VM74_A?PH&)v>PpGC@BrK%fpLTpuehDqB=yp!p+O- zQC?D11}&5~P^@}&ZA0VY`W2@UYzVU`qncVOtT*d3#*(e2YQqi7nukwj*wvm&b?S>K z8k95(k3r2@5JP#B47!G8i&3JdatR!vs5Z1mqXD-mGLoRVc7-&@OfxXoG}N!G4zFCv z09(8o=HFrJiP{yb4Q`4$sBIFVt6yoW=VYnMlxI^+VPAvc+gq;lzsC=n$uCShje@QdPUgl8c&f?Q-Terf(rsC|y+FuvFb?G=-)$ z0*ThuEN+m=Mrb!$9hELqi_GaIye!1m0)CD~7<2Sa59!{FnuwGXy?h!EYV{S36C5 zZXE*8vEZR0@DdANHw5mr-~;br2=cSrn{&*J=UJf*xBaQg@~7MIO}{tk$r%E_xyyum zhroAO`KJtl+xd@K^tkAkub3!|zjc2%>2d?lb--6T;CT-C8VB6zKZrTt&h_O+2fV<6 zXOjay)&YOi0WWdD;|};Z2YiPEKHdR;+5tb`0pIO_PjtYO4!G>=*uVV_xX%U>zT|*U za=>48z$ZK4eGd4=4)_rV+}e6DQja;{mMhhO4>;hLIPj=aKLBSnF%!qTznDsZ;k_QEftNV zn;r10?aYL?I^fqh;2{TG_PXs~odaHJ0|{3;;6Vp`jRQW*0gpN0*E--E9q`!>_$CMZ zdI$Vb2Yjvr9(TZRbij8w;Q!=+Kkb0ue0S`OiB@TGR z0rxuKH4gX`2fWq+zuW=0eOHoP;ecB%5u=pmfQxU|{>^c~m)StVn;r0a2mDqCyvYF% zIpC`u@Hz*4jRU^Y0dID|*EryJJK!+~e60h%(E)F9z&APIF$ern2YkH)9(TYuIN&=R z@OvHbrycMI9Pr%^_=663(gFX51HRt@|CR&(k^}y22mDnB+;U+VseKN(?#OSy9$UMo z`xx%PF+ZK1%4?gZd)=k4lzKh?VLwLN&q(Vs(~S5pi1#|;zarl6i1!kAPd9KG`JW?R z=7_&QJm`r3o_NF&KR~?A5r2hvmm~gP#Csj_zY_0v#QTZ6XPm14P2y#a_}_>J9r1UG zM;!6v#M>P4kBN6V;{PDt>xh3wyx$RbUr+rNr|QolUgn68Bp!6cM-z`Y;`zke9Pwh} zU5@xT;=PXeMB@F9co}hb;8gt=5-)Sa{ltTg_@%@nj`)?t+Z^%f#Je2vtBChH;@1%G zcf^Cl-B+Eee>U+lM|>{vpd)@0@rWb7fOwlDehcv~NBpbAdmZuHiT69=5#sJIoT`5j z@iIqz3GtvKzJhqf5pN*g=7_H*-sOnjO}y6;zlV6gBi=^bef6pO?;~F3h(Aa?=!k!d zc*GHZhjcJ zBi`kR|AKh0BmOJm{f>AqarZT+>VJ-SnIrxJ@t`CAd*TsC`~dMbNBkAyU5@yF5$|=x z|4O{y5$`ANo_VVNH;I=y;(sF^bj05!9&yBv6K^x)eM&uzuGByKEIpRJ#qw+Ol%A<# z3$S@M{U|%O0Gqv#%|Sg2*xx)Z|MomJCY$#?%Cq#4C)@vEhN`+DW5U86d#}-h6M_dX z9y8ltovBv6EVINsrP$Sm^5h=xgrok36cUt5l`D$C7~$Jg%Nn zuUd73OI2a(J}o$WNu~Q-ax^uz;Dd#glnHj9T>I-CQkUfM!E^7NPz5$po_C|Sol|eG zXyk2iyP8ACRY1#(EePei1CqDj ziJwT9OMd01{*X)OnDUlBPf^by^0~o%jY&`bUuciB?ECp@OY$G-^7nx+>e3P)g0EP$ z9VpLHJ0suI65+?RM744)?cq3BXQ`Ij2M;5+XsKwIN=!mFw!sIV(gKzHFRTcYKjPL> z^y!%J_f$ggT{}ukb*R##zgeek-jMgmV|!G_(LVY-1m2lSEe&zxbW4_c`E}~QK0{0W z)}?l8g<4AJj$Wmu+FY>(HPqLqX1>xwoo{-SKRJ+|CUpspQfPD0pDx-c?dqq`9_Lta z2s$!U?1119TwUOK1Gz+wQVRS@2R`lN^faMC`dVnnK9Sz_Ht$)-)8&FE8`x9tr*}%Z zp>#>RY}#VS(&ZhLJGr)}yA=7gW#*ZEO8=-prCQu7@FDWzg_otsv=Qc6Au?pdH7kr+ zp>mmU<+j3%Rh-|dDpfhFrqQM(a@WUrHD#rs=dh=+#}{(zYT){mN@nQuK1*-?s6b1J z9G+bJiXnqVl*<{1e4Yp%tlj;+1Cfi{4`kl^{o}oPPaS__{;S7(fAQ+^?GxWP-u2Bl zj~@cJr+>qN%yqwc+!wn<7anh?T-UnZ$0xsf=YZ53JTdQ}&+FD_ZSjnMocct@is+BG z2&WOgLHK3D!-RJd%2<1t@HN6+g#S(WAB2A<{D|;B3DvLXq-4CsiC;Fwe)_RSZPX7q)r57f|H-v`jlN`+Z}3Ug1Z632=s#5#3<$3DzU-GzuKm@Z z?%MW=N*$&@yFO52al=%66rqIa&fe^u?}ynR==6EUA=tPnI5( za8{N+OTzV8`n5)$Ed4qoJzJk`q-X2b6LvD5&Gz-~pnjuG+tz36A24pWeNLs~vvTyq znX&x%B;GGlsW;D!+2)yFt1tJ4x?=c#Fv-bn^#RJfWWC2D?f&BXlR1Xa-MQ{^p; z^JJN-LdQa5LC;=f=`eVAO>*hyk5^ktk;%^&7<0oWm4|Nb%g`T7r?=X&CUSRj?Qe~~ zl)54Xs{CYz+H$%)n(195wM5%kRo;nwOI<;9&w7r*bOIMW7%#T!kvSllsmG{?@wv&E z6TCV4I^unvVq;F2OdT<3?I>2OWX=iYqLbg%0?eoLIe5KL^w;wvfl(J@Wv4<1qGxu- zCZ0-PJO(~d-b)yIHyMyJQkNQS(&3AZ(5tD_=8X%zBfR+&x+h*dFeB8j1;AZ?XPeRs zp(TEwHX!5n0R1azrK)i0vUIx2WAN6by9^w!Gal05@D_n%ftKh~12d4-1x=Le%U9C` zmf$@$Mos(8&*luy19scHJh25&(jI#(OBY8#Qy|o{`Fqjs~ zMfYimACbO-bnnpgzL7@ylcYzjHljZl_|!3I%*3NJ&*Mn3(XFZETKaxq%u;1=Yfjd7l#u89A|!HZaiejj)x?F95GY~WCvO4z)8 zj{dXx+eLlCW4o?{*!@OZMK5WYdJ}k%0p_%yo}n{8L=W%5X8r_PTL>RP_Z;MLT~e8F zWlou~3%%XP*j~@rI)wanO?BzpzN8Y5LsKYsV1`CNbTSY3qpJ_2vtK+98|@smQ|cGp z?hB35`{Btf^7nCV%Fy?`yGzu|trHcv3wxgZG`&^Y#XQ`z?;h+f>S?7uY15mY4F89u zpFT!^Z|K!svrO7N$e)w8Ch*6y24=+bmEH<(f;_Avwu*fp%2qpF%&qmXm>DE*C5THuS6 zlQDf4^ebd`F`+HXhD;`N^%Ka^+4!@>Ds$V=GO(zbs3RQhl${Au}~ zoBk>6sbpQ57QP`DrG={E81IL%gM)5^iTIdpcUu-fhM@}#7}uVos=DT3Q=w0`e3qWZUTk6KB;)|SC1uJp)fVZGZ8-xo zBwveiFLjMjRkUYXl)9p8O7o*{s=&vFteEqN=n2lzZYdMKxUe;lFMK8k!q`6-LQf6z z*(}1Dtn0*PlJUJytsi#?{qZI`GzUI0F8!h_PaliFG2~6?+EvWjEM=_cHz^q_s!%_N za`0load_;j(Gs#IsKHK<{H@B>?xHP{uANLzm%cH|_2ubl^aAjFSzizKSu9^q0hjtE zO=vkK8zvotI8=fDu7%^^X*de>BNqJMEx5GRs5d@FKV+pnN7~7?KOdY=MCR0-`H9rh z48xc5Nz~K*X=7&hk*VrrivAu)8yK7AVaBWX)zHAWDlHK|?9%`KkM!2~Of7{!A~jQ~ zqY7I+^q4Z*KbAfZF+TrwjN0k*h%H>Y^aQ%*^O>ruh`#w6{P@^YKM&p{wq=`pZ=emDVi#(uQmx|XJY+=b zdj-9+i#hEzw_3XNB5x$_f!9#tNNzAv|YeRD_^wa@gZqZ;dx@a*}Crkmy`eBxV~Jtnbbgfi@+ z7T!PnQ^&Yb$aa`=A`d>wZ9`{8$sZ+u^rkV1a_ADgq89{jIWi`ETE_Y}L_Te#n&v%M zYYuVUwlw4XhE9AGdy(mx6>8N3)Gv6^4Xj1a>v>{~+A{N8)ojbmaBUP>IOG}Mb33wN zmM=7XQDPIM-4m7y4-b8muJS>X;G3c@n)rR>B}jh-<9T}JoNxtWH?MM|uicA}EUEIQ zCy%p6DP#?@=KOrtDFx_>@}y-yCz(T7$IOs+cr)bMu!;8-a7Kdj@i)1b9vVnjHNmqa zFjG#>^S^^#yqUPj{3PT@)-b-lLguI9p39)s7z+XmmFS-vY)i4xmOA1>yO+A21&3np z55eyr^4`>+!F(_47HM}IynyFozqPAGjP+J>q$S^oKfT>YWn(J>~)7?{e_H#@fW@X)8ES7d;w-LV- zpQDWQfzb9fXIiLO-$U9aCoDcz{{=9?v8hNE+Wwmi?6%B8Y&ZNd_WZQx3o0S)+BQ`s zI#lM;T{Bd|vSWIFwomCVpo3a~zra}Wj2M_9?T|h*c&AO!7!Q<>GA^oKojed(_w~)|Z&3*ux3$XMUQ<`LdsmKXKFHV= zypmV&3jTiV;GuYH9C-wP#H#x~>XtH6xA4p!$F`4J+JRl*_o;D=flU7j+9C1b@)a}!fBtK^KNewn5`oLfF>hyuT;eQyoOQm5S?Ptq4s|Nqn%Ui!$Voljq6_;YE4#E15UtSO~E;;XdV zWUuptHpTvc&>;2Nvgo$j@1#L=rPyjhlkLBjIa=gi{H*A(9@ZBrvAq}F5=-pH7AwRr z`w=!o9rXweQ9~w6dhR#sE9`j$KJA#L60eNTYJZdVN?Z4iOg77W+eV((JtaLCs2L+W zvER0?e5s z@Phe?BDb1$ufcnBKSAn}yb*9Y+pQctmHF)CTGI}avh<~4+xIfY4kLfB^GI3tii|OY zuVrZ;`&5EAT&T8)ttIkTCbBN}TWF#lOqS~35gj&6JtF^Nci4Vk83W=g6JKSRxkvat zf_BMVnaont79pc=qI1Ol6kQ~|xA!Kb52R0Ij0?YnF6oPh$-C?K7q;(U{Mh{<{5SY) z^~ZL`n3UVDCSEChAblZx-!6T?I2`2v4EX-8!|1vJ$q<^HYC_J=#>)3BRm{2jR{Yq_kGG;9>Hm$7eqT&l#_7qs=I*wh~AUpGTe z-o_5Fa6UG`TH_0ZIqHt@i4Imtul|dDE)u0`ML^NeHcl=ur~l`~sK!vxemF9!vgn&HR;)`~p84{);7l!I}64em4Az zz2qNzCVqjR4gcHlL5)8XzrfFi{{hKgdM18>pAG*A$v^2#`~p84{_ct7zvxW-0zVu6 zizWZ(&crY9v*CaKeDYs*CVqjR4gU?2f9jd|1%5XCZ%-iqj5F~I{A~CaOa3pMiC^H7 z-zjUA$kOw`lgMVtOf`nF7bszTba+aRJ}_R!!I}yUSvK}dkYz9VM*#07Ke|6qiQaJ$ zijKkV5BR)3UDg);jJ5Nyd1PFT7^kW>y6^bj0Jg?<=5GVhf49pq^veY~BHj5~2m!M`pzy2!&>^TIx8$4}c+ zq>ARrSZ2KIyRwSf8{I|ip>nmmMHL*~i+|HO)@7U@=}T8dM=QMyJlEx@F)rqgJy)w$ zQdbxrggCDe&QXC&K1o-FN2$Ob)|Vm9eEfiQM>tOfsxKj4sPs!DUPycj@e80&sh zh8WXM96QJpB>izaoiXghF{R&5Nk+j-11m43S6HhlZ>& zHk~-?$kR)Dvz^XZbmBNdI{v607k%NHtST6TflJ9NW6KRp#+9GAto_Fmg4^5^VlKRv zdFaSRvzObpvC}Vca_#Rd-|?Pq@&C!XTI^fJ8snjl(p#}>{V{w!Vi(wZ>psSSB0id_SuD|;7IHO{HvuhhL&iF z82h^#exV3{#LkPv7w$T`k-gmLBIa(*+m60#7hl^E_6}wK@1)vT_5~k^w5JdM+(+`$krq7;(4nhDk1Re>6Z|DtdgeXs+~f2%OZtcIJSK? z`>s0_BlAHe z@3qL<&(!((uS`@6SL1_atRMJ@wW6Fsk$tPfquJAAZn*ed#s_)7j1Sf4aj|d5x>B8g zrR+mQ*{dqF#)QZ^dwf+)rStam`i^$uyEEmv#P3@(Az${jUZu^_f7Ihoa5iQ)=U|lA z^k4Ul?HDI*&Queo){^&#oSFNZ7TCoYDJ^G?vd*ZmcUgtc`~dy2;6u+i|Dn+;e`XPa^-)Xa7c>(l%+A&>vJKMjPJ87dKRI+WZpyf;)mgSmsOQvZ@U_IGgn1 zFTiK$2JD)yS)vb(&99;JunX|rRfXW2^qsUptr?#mqFvG^X%G7a zRlft*YVy3|w)z48s9n!E&O_{BfAAdY?#@#4uPadc#YIZL!84-0rYsnUvp0HQhW5|~ z{N0P(S-{+ZUvm&VLuJf;g1xsrYQ)jK;_JSTGfp0r_y%=}j0QFD8Ghyg`Z6JWVqd)9 zJ&rxh(xtEDw~pKMvFm-lC04a%q#DE5-tdJK&hs&sl)=a8OMMj@bJfo&cME+{Nm&_R z(`9V%{;t5$U6o^E3yun$cOUOZcn@E-x7mk3Kai_lE?bvVuxq5!i%EBpUglAO$W@ii zW!WkqYtlpMjstt#uA_74|1J5ParoO7JOrYFJoiLm=^uzy>`xkp~Ldf z+w`OCeIchtU#^B<(w|R~_o@Q*vYb^~&ifX>8nffGl?Tz|^Pc*w?%Pew)0dW2c;Umv)IEi|FT$p~5IgPyY`4kSYm>0ireT)} zZjn#v1I4`VOJ1x8V}5-ha(YTX`1LPYa(fQ>ZJvk?b8_wO!L_mIhzjtq-hJsR9$6>b zbD*r1#fMVjxkwLqF3`Wa?*jbm1wDT`S8a)*qnpsX<=O1_&DK(pxpFqpeY6!BlX2O? znGuB#gb$qV6u*b;?a4l#v8PA>$bMcS^m*yyp<_q(drq$1Z|Iwk*awjF8M436KEQ#j z519{~$~?Le-SIJV**>?YeIM{W%5(Gx^S?2ksi*6( zIoF>c&l2{0?76-jom(k9Vy@RlGuIn?XXacl=dNU~kBu_t`9tij57MoDPX9CdA6oOp z))l*9E$#j{`2Q?A;WhUJ<81K5%>AM(V$A!WGEYgHh3ALR$L5@0-1EFKZ)>Su_k_VY zU*2WT7u_dkfH*_7wQGhs=RfWqKX0wf`M~FXV9oiYao%mG(Ekx_H0S*Z?Q5BPr%4{i zyk7#3zx-}``oBZB^rP@dbW;?*FF<$3IY$zv-#YLG`jX!E@ND+eSs%F2|I+tmq6Zi= zUjVPH6+X1uB|a5to87L>wCj{TP-xi$;DDw$_JHu>km0K-=-DVduxx>l?1x(Pe&m_p zmvMd+U(l{2>FIIm6F&3(q-hh7W0`A(AH9Sppu^ZxMz%DeQJbtcfLHcMq@VsLxt6`e zKakH$s1Xj1Tg|iuLg4X&cQ{+%R(LU323w$t{C8S-3^}*#jhlei13$@qE+2j)u@5{~ zYpI$Ht+_+x$-28LqO|7BjLPO6IHM-?ZNv6muT5%?P^X(a z8^U|>?=Bo@IoPTS+RJX!np>5--B*{RUqG9s+-BgB7qmb)qBU=EyV@h1%V3Xm(4MyU zprl=&!aq0ds~R(y`aJDEo=G8-)=AV;S(vQAk6LcjHw1Sj=L}BCz~%b==s4k( zjdxHEK-hxw_U^!#A(bsx)NCrhO)Rl3hj2mB@q(c~G>k z2ze-CY)W|-{V#2W&UP1V^+`VZKSsT!_zA-JsDxe@IzI>cLPcs?D`%3s@GnY#wQ)xX z-d@@InF{FiG4I?LVx1hi!q^v3@OiU)Z*zR2DtO?1WAB|O}EIo62utd)Fsim#>E*sec2$811SBfvL z?>u1FsDjPhWjc7?z>Fwq5z++bk$2KYexcKlhtQRJBWaCgZa;IN|BuWEADpkIwZR(= zIq17eO$)OgYo(pZ-Z`mIzS`M1QRS;w8`s3LT+QN3QTP#!{P0r2KTWCTR?2&cmonC4 z0c1NvwU^OXUP3ox+fEm_z)Ioy88F87dhoQ;7h%pSJ@fm9yS1^4|~7L^fUc=2|Ve5PpfhJjmyynRlJ!_2YlSHVczi@=2XT$GynCl+{R+ z`ECW}B)>r)Wj^MNu=IJDzK^gLa_z?}x<69U=yv6D*Csbc-6FT*FZ!yS@hG8B|Hins z`#m{L|7URilSQNN=1b4G4<~IA`UcBrSLm`QHIH&Kc6^kLGv<}tRgf`{9eu`_=iY@u z2mE~>yEN_}m?7gno3bhvTOcyj!26zGFs9kR*z+saq3k31s7Jw_vGK6!zM@JmX* z&?NTofD4Z}!)2uH{i}I~N$8R?{{SBUg+*HiwBdX8f>X-GNIy!tM*BJ#BQdKF(D#PD z6%!bETsd0vq2uXkt`aTKNvLks0wF?!AMn-JcZHq#3_8V&!OOCG8 z|AGympm&kv9clUzTCPGKvEQ8Iyst04OZrFp$<~oB#+S?o;cWbZ@J?hwaQjZ*z4S*oT~quMZr;F z1XnN^(2}QQZ9n#dS~g)JvR5z@*_&dVGj#bosCyUss-7|$^gSGO2ZWxB1qVE#?FTBa z)wqXnc01L>7n+3!+J;l}rR33WlepPV@dHX5MD{B!xlCdU@y+e}t2&L=vE-SR z;hNv)iseV)R|{?0&s?efMf%93mpfMGn1DW^4O&dvuq75FZ(dXW=L0v#8~KLtZ@$dM z_PFAcsD)BS##gXzf1vtVz8Yoi2EReKKFl5sqnbXD;PFY}JNwTH=We)5j}igOs(- z_4pT`gYVKcFx{9Fxi@Ru!Y;z9^e)Ns?NRuapiP5@ zQpR+QG^adKCo$nOSr`+MoF#oYC46Ip# z<#FlsdkPsztf!rke3f#0xns}S+(kdjN!9k|q-w^gL<{#YTDnvqdZ{ZBDJBkn*`E^K z_5^!EHNfr_`;K;OugNfE)7R(LrC#n69oYWPx`P)&=Uv6@VIh;Up7<#^LT+;n-B-jt z2w*=HSe6OXisf#R__R1*4DI4e+LddzGfq212E@0wp0>lMmtt3PXCaoUhn~wxwO%N) zgpcqRm2!>du3{H=s+Ju4Ev@nQo!mJvMg0*O#f!!uKHkIt|#a z-Yk8ZfO{kXoGJW{?0z`wFId{VK<4d>s|8IHO!YYjRzhePtY0zLU;Dpwas!K z?#_=r+IMp;>pN2x0cPa~9>HOlj%8{ebU z8{*zQd2Q2nGVTa z$728LtHvaDlh#OD4Sjb%AvVPU!6$f6*~I2Kz^K16F^HFYI}!N4gYr8lXVX~*Z*4li z0*%Rxff+*Ya5%m6gNkSBqv^ZY@$}Bs;1r*bd6%fTXM@$JB0rVfCE}d=);Rv6BK9-> zn|JBw`=~#J+zag)$WjQsADijs9$wO=3%w2G z>9*i<=iQg|=u&=}RrYVx-RVq^XBg=m%_IO^-W4(}rPf~c5nJ4#^ z6!$;4#~*dG$HyHI_F{juu4Lg6&WitVUEabBWaS6zau#|R!{0x#=Ae6=mg+gN@?idG zE!BOZ?%({H)7UIX}snoxM=kS+Q>QV5#zfh&Nf~Ws0D)k6> z-us$LJqDi9F%@Ve-#Hsppn-g&HmblX^5t$)fqL?d+`=9Oct>F8E(34QcT`{n<=((| zegpY3zo7#2DF4Q}!N6R~f9eSa=1^|@4^&__EL1@VQ%HwOd!7sEh)hAS{8#}zm?&lNbQ z#1$Ad!4()W#}&vpp#q}|UHH^ofn3cM7J17;0_VKNLWMoTf#cReT2&h zUn5*e_~&4th&ih;LrWCoXox$hp}S zID+p!>sD9bP0tvAc9koTc^mbvgC_P;v$5MotcmVE;yK6vrsrJ$-#xkh_dKKg?|8EP zlc#=rLBDIt$n~zAk=vJlv*6mBzu(~FoXHa^BX^ea_}i2xcjnFN{dp=YH+#g!0xpN; z#_&VUyjs0qHcESFmX|$9Y`E(W=gYU+Re-(NKPpp@H2EhwHiMO_aGgp;+!P#~Vmoqk!USY-eTk&!$F89eK{cbRK z{#I;+sN0hpMgFFaDrjF%`!|nPsVLt86Mp^$U!dThg6@|1W#apV3UE@CXr^K#QaxYTl=x?Aa#74AfwAan*EU=Sne>`{}Snf3l z4KDDA9Ld=Y=@Z$9lye<&e&cyL|HxSlqdwM^zEF<-JoUx!H;8{=HZtFFjY`F!)r)+6dgADqQu2k6 z!_dTJ1^f0!n}z?rt3PF?8GWaL!xzt$eT1Gn zX{VeE5Sk6RHqwCC1D7*FgYdo_L*Fb04t<7xYGs}Hh)oOc(Nk>4{WvYYWS~N0PAPqwJu1dg z%TJ9n@KrgCFMLzw+vwjG(pX1TwX7M}@Buaz{P2hiSvP(3LD3nBj%~tECOv7=6#Tjr)fS60_XK{T>f8_#IEa9`Ymu22C-w>UF-4 zAhh)pb}09fB0`Iyf;!8?g|EB5SjxT`Js9h3TjB(*dzf3#inb0$dwhL~lV;i_%q>jh>wLrvOJ@DA*tJ=F*kI9+dFH=s#_7R^@ z7w37j5o%|gv_Apo|DzjsES~@_XNZJ8xu<(a+wB9}z%S>xgkJGe#K5g+Yph=d#1@}P z8-)+PkJIH|@=Ck+0gr!MOE52#%bkCrOFNn_m-7=(ktVV{jl9AO(FL3d!j~fW)vlk= zeueIC?B_lO>2i-scoR1CY%%9r3wnM9&C>qOl)D;ygR-gR>g}|@*RnHYeGh)W7u!bi z2z|a-fiAM%O1@{wm*7mw>8H~2jdG2^`QDKM_i3Z_dg5cCp$+;( zuZm6;Jt{g?^rYMo3{tP?Rb%X;D@BK1MLE&W8hZ7wv?tc@(mTo5dK`OD!gp0bbh3Ts zMQr2Jb)N26FTQZ<()jjEte5>izOU1Yuhw@fds@hz$l!myEx5T;&e^SPvodsPgE4lK zg?i+7U)jBle&6;5mC}R;{9!)o*+$>@6K>!sh8}}&jL$CmQOaw;eOi$|l`>1L_8Tz1 zWg+q>JiCOnJ4j2q+YaET@rz$p_(J(j#yprT(#3C9Mm{IM?D<6aCj4SfF!=S+uaJ{} zPw#w+@$lB~(mO@=L}nE2Z3QO$o~eqCqVwg<{3_{I|7T5 z9;dvVRTRIS)GKl>-y;zj7x~`Rrhd}OSzG+zWATHhKBNsB@Uh4_)D8Gl##dYHMPpeUhTg{-MWW8rG9jw^o8gU z&VX*ZiN1Y?zTV3`B=UHSbCU8MBx#HIqQJQE!PJWKT!*$RVrDq6u2} z>r1Lz!2H;_oZbMLx^GFESVOa>pI~ z(l*iCb0%xub(2;1wS_?gk9JH8%$`u$J+B0u$63!;Xo;FacXtT?jnKQaM5UHg@GaE| zQm;xKJR%)2Jbk%8~k!EQqCuc9+kYU@aH?^Wj}JKyxZls4lN%Wr~m7a^1^?g8n5Fw z>2{A&-52nUqRE%D=T@f$GILZa<8syPs>9x;&Sw}Gs!r)r?=xBGM#e&zP;nn;26$xd z;2h(Eaonf-q;0&OjZTd)kH{P`3t6-0mu(qpXB4>TDjEC8H8dCTt)YUR_p;O$Im=sS zeK$eov?q?Kf@hZAa&Rnt=Gwm0OfUqR-0cBOm=k*=84gByc$+q39>cTgH7Dxm(u-O;2zR z*Ta}Bq1-d9`$dQJGj1+W>P2bW_LpWF-xU)&rB2~>rbla*v5}F>+MRDv)KZVgQw??P zNxK7*FG^h^mzP4T3*9PuPV#)6dnB@#Cu6FWdiKGiU|orR7x{!v+r~H6A*X%Y=8uLg zEO|Cq`ootTuNPBpJFvJVOMFjjEbW$WG;ET+A48XT$LfESdC#z=%>BGE^rfQR|66_b zwoN^5T7 zTR4@RlMXSDh>eHcbwKVvWik%q1;#f&Htj6VyNohk%JlL553@}EqsWB@&*l3=F3u0^Oehb6y;u+$pdpecaFsaFXya<2O9HVS6V}Fn%}+N$N5<1B(aUmc`W49zd&6^-L%u! z=hJ5pxAP01nk-tZbI9g5Ta#t_=S}#q{F8fbwH9tuo=c6nvDCm{=nvDjS@^c4Zt+)W z)a6s>>wMpG>m$}!G0MeC^?aj@*#^P;B@4&R1|E&? z9$4jqlvC{QYgRpmjKt5^2N;*=aQ{`nZ9L~O_NNoKX*KN{FKsF4d58QzAG*ntikB+~euA=8HSKl%7k!$eb+a>xAAA>l$C*WIej_#^zkc zkL+iMF0D+&OQy^SEeJNNjO2ewzW7_JS?<9}J+ijk4}QrP8Zl+M&_4igw8_j9*o>9% zw{sikWU$ACU-7T7E@2GsxlEO13Zq517csYBA9r4G?q(ry>@Cr3}2E_SwpcfzOm zQ}D>9)wnarHzh1S^?iI9^%jY*@Ico-?5#;IeNRhn_nwwfJm+-pgti!G_2S%ttYm!f zefj3jeSBk;{g`TOO^vgxav!@Bedxw6^5H8F%EO$_d7th)DNkFyAEl=YeQu#IU(Oc* z1>eA%);-$=D&ZR?JSgbd#5b{$oNMhRkIZFl1`i5)9%BtI?X3hZJi5?oLk2iCaPDat z(apC;4+!2p?D5Inz$d=XdWtn~e3GjAxaA$)4a`|n(Q%34 z-xPCOHrV=0bdA^uvNz1w9Gv4$t~LAnv_3`d@uB+V-nBg*q@QK)cd)Pf zF4i*){MdltZsU=CDN;kUiElQS4y-)0Q59+JC5pX1wWF?Yvf!_ne3Xt_{708Wv?b?{th zy2+yHMvJCD8||jY$S-`1IOJ-Hq#={Q^JmJpfODD4&UFV|BCp7C=l$5yWj5JjnUZdh*)q2ZO%Yg?bP4?J{Vvb?p>=yYP=PCW7EHl`%nL19r`Kj!IUQpe?xZ9&PKj{Mmt59$GIckN#Abd zOkhWrx?&r5q-0&5Gp2PMa+P1YF074LGsF4Mr_wsDbIJGUbWz@M*fnXwZIvh)84?AHrL_>J!SL(cdq!BQ?b7mKg&`1 zHXkzjcgC>K)}PuX`epE1>NrGuMcy-rf6Bd9fwjUX`NpHzZ(<9J-j;7Y+TU{z(Z&w= zDtW(4DCLx6tlRdpo!^B`th{0ud|n?jSdaLx3s?&W4gAhB6Om6TW5`YXbGpzbe!}!V z#drT*-6v;pt`48rj!9bLh==_~{ucpu%~pkvock6#U3@F76Q7jpgcc~MP{?5El`i)1 z_smi+e_)(_tLz4swa<9^|3DF0Dd+5^`Y;(Ny_qwW*dl|pc&F-zkWC-_I@>p$B%kl; z&+Fb>L#Nr>p}AUW3vws-q_? zeA_>?!X5B}!$sK;_5Oi8VeofiTgbh{P(j{|5cRm{Fx%rRl<#eq?=Pzm`iZ|Bg6`Nq z_?{=eA+bf`UjCO#TTISR@jrFkN5kA%kb8tp6VI$yaKs1j1v%=MGddC0hSlYqPv;Iw zj62@pMM3suvln_ef4XJlg#1dSriLQ!Kns4NrX}t`c#%7>AKy@zHnC1vCHKkU+0-y? zi$jOqHnF*d-!X8tjZ^t9HF0V+zF*_J%Y4(J`h;thi+dhnc#plB@1xIs+|f|TzVK!v z<+t2kvarvAa|wbyix? znU*xu#O9WA5ocQ5O#3QnAC9e7B3fzck)tzR~3SBKXxs ze?_k{eD3}y$iMvyv4r?4eAKUAOHVsr+Ibv3!hWTEmmwl!*dE{7<@)c@oihGJkIFb& zPdOjsyNNZcC3pGqe+J~NzEKWd`(jrZ-=&td1pCViehCiI$6?CDE4>?=q?dXJ^K&h=7Grd*GkWz28u$XOJ1_58$*l(Fw63O<2n z)QO$VSqo^h@3itA0%I){kIGqw4F3}|xvR@}dANUS^fkWx=2hUr7GG7#`EC45%~DpW zdk(0a;6bTdWC@#Z!5y!QJ@l*YGK==k_0V$b{KU)?r4`D=@qQe=ILJ3OO`lHtZCXU1 z%C|AZZ`23AjpQ}PYOEYQ(cQu~`Ht6oqn^{}MDf#T{NF737AO8BzwocuIx8z@WS^tY z>~BWOw-;LTc>v1TFPA${PT$dXzAeW`wv-f6w&8D z!#A>v|7kfA-zVShGVJSI@=IO~nj1Oy&cm7ajHM&7Y1*hG#QEe(?#xaam294rPM6QB z3+)zLzU`Lz#<$P+vi~SPF5#WrZT`z)gXizdUV`+O;63_AdaKl7p99|IOvc*wI7msfaBi-+|>j7k=3XDnn0fhNgHX-}olJ{dW2Oc7gO8wqYT*q1(S5 z91oHw##!F&i%z9?S$PDH9~GkJKx8>d7PT zt-#!>b-|~^<&2TdV<&%4ojo#rdG;9lz`ARW_BGE^({Ev+kNf|jubzVOt*xyw_Ntxt z%iroZ`{+Lj1uo-6);}^nG-&c^)Ac29q{sfZmG2LPk}mm-bTwU%AR}+0o9sKs=AI7y zlA-avtxR2fLu060WIPE?BAdwcOEKioM;*J`{JMNM1$m=Cih4L3*32B@UpPuNKa#H! zPf}LKPwbj8Y#SMV1c$8bGkm*3k5}l8O*j7c)EA*i_a1B=y_(F{BMtfp8Mg4gt9jHHSaR_xshq_!-7EM{_2c}+z2psjb$(*Kgx4V7l#@PbIV^lO?}muqP0r8Y{}}vVh2oo& zb3POBe>}sQx`2HY(I30`AFws-8_L*L&?E9bnREXU_9~8}heCwnj~OrZ(MM78h86eG zuq9*onrDh12%A63TKknU8DCm=GD~&Kx;;i+(k7eNrtjc4M!z)D*9$r4FZouJZ#4R= z5C4n$?6Mhq!9zJ?-JYDQ0?C^=2SdHcO(MxXjJJ^~;cXq|G-ww3dMR@ye3rRE>f{aq zIt)198P$k?&Po$qbGqNbqzAtMek%6IerKL(bmgf8-vDfuez4~>=?hgcKM`WA*z=j_ zh&AAj@s0Hh2?c%#ni~5JU+V(1?9T?zIT>f1DDw$>!l?iD1f%>XHA6 z_y%ikRm8m~&)A+u`k_zFd_}&0vZX6FF3G*6UB92+-h~{=Sd_A28~H*NdJum9GcuOq z9E7xSP);1*U1l!uOZwT;oNbgdCZbP_cCwHB3};I2pw2r8Q``gNtf8NFG6q!7!?c_B zAIPDdjqHPK%%zey&Htx-n{zNTT{%m;nJeX+ax!k^-i4g$IqZ@D`*$AyzoV$>qOc*w4J7(z?4DKPK_1o|3%o}l(T(1;>S6U ze*P3+j)g$+K-k^V_pR?ed-OuvP>s?kqZ=s*t%zl2!Znxl& zetr%8Vfj5y>u0B*q;smAUl?~Z#yqv2wP=)YgRSqyZ?}|hBJr&Ru?vFqot*C+VC+1~ zTrB5ALdrXRH*FoyH(3>Svz!@_Zy5Jd=bfDGkaBzA$sY2AIP)1|{KohWPKf_~fK0xm zSnK$_SLr_^e~fmE-jH)Z=VMRB-efP9Z!5&!6rcQfzqG+Ai%$9tTrwWL0e##5MSH<( z{KR&VbDD;($6hhy7#-d+hwm@Ii__%7@V}b#ys;lB^!HuGeVxpn4?Gz?*ruoXQe-~u z!1uO`|MlGARjH2KM89P8bWB#Mz1*Aa2q|M+cT77y?mRH>v-?Ua0PO8i@#*CB53QuG9O7{y)`Js{s16gdB{x5uYl zrLU$=p-Frir|Wc+Kd}wwxuYccLJw-GUrG2aE%hv6O9T8}ZRpybmb-bshX=a8D|u+| zj|m59P+!z9g9fR?*%!7A7E{byAEe8>kaJ0oDOaMB^RfKjgexnR`Av@4H~3~Gw0Gsi z5?i@nwN3J}{%l>x|7Gf*sjtWH*0zSdscZ3dZ9ON|n}?S1>o`xAAQ{X?KWm^-AO#=JmpM=IDUL8r5NPy51U#7C>tdBP81l4kG$dmv1|Ir*>yKb7!-@8lYCrSZSpoP78d z?TAvo4L*dx72!Ta1l-g;uZeoZrl_QCmkS^A)D_sX{_ivXgeQN;havtm{Nh!iGWHSq z9!(fr!ixyBh##WUt=MmLz1T?`3gOlNY47{vqpGfbcYZ)Z3>YyYD#}606A?nds7SG8 zG8srpNYZ3btk{#u%n2DYnVHT^AhFhBYkR%b_Cg5|5NN8rTlAwXR#RsI5*C1Znkb<6L?e!A$*44BAuRkEk7g&}#(JpW`>aSBl}bh_2&Jd*1LD zP{*k07V?Of1IYUh+DiQY1Ui9r+y^=^=REWd-UWmIj_;u_QO`=qDR`+GFJ&y#ar0Wg zrvFcN`Uh{8buZC*^i3n_sBAaRv04N;_1_ba73uS@kfL4Ve*rv<^YY@*RWz6N}hlGUDc8)Wu^7@3Hwb>hUyS&R2_h0_x~R9TX=f3(wr} zZPZhQdGo`73raCYJTh6FjRQ{KfPvl`$mHb1@KaNU=}d0)tv>(xMc|OE8bR-2)bR}F z282to4V@EShxS(^uMp!a`3#CdPa~dq8s#XKqqxaHydQAkp(P&=tKsKtJUj**qU%RJ zKQ5dg{dN`Z!S_y_Rs5WamDPTZ9M@2cL*v{BC`++D$wI)+X-ucso8(3PLE`}BErD%4 z<3)Q4=-bB$k5T^PD64)?aN+dpf%{rHy<4h$Y&`B!2J=y@-=p0Nfj5l)1bxhZ=r_2P z_&tPJvkNq?LtgSnhWx(VfL~pQXNnDJ{;@{i@5TKOa8LCSKdbL7r0;&GFUGzd1$bAn z8*qwSCLyIf@c$CgT8-x^xL=L?Z|eKKxW7x^595B7zNbD+;hyApC(;k`XN*5{V z@Y|y>_pE$uIbf^LKXW7a#?eONB=z%f=jgRlhDWd6@aZDh?|z}(S;wjM-`Mdvin1^zDVEnSHER@dP> z05N$j?XUPRzsGmr_}$M>FvmLx{6e%b3|!)!^`72i@&1^ki;p6o=JeFJkAUVBJU@c+ z!{ujgVEv}w-4idY+m*l}TlpeVdN=+E_z-9l$rSJKUlPMbYp(;nAZ#JHw|Fhd`yJr@ z4Ez8!yUv`a0-1?V-70G`>5=ZzG?AZT#}8LYxa&@PQZn(YXzxWc5okP$$~?SO>;G z()lk5adrUX{oey_ln9F3UZUqiSMD8{a-n$6Ao%$hGXeYcIM1W6K8$sUa(sJ=Z*4jO zTaEheEnNMaSs^gTE_i_OsLsjQcY*FFPZVd9NU=Y*KYfpQG>zZxrN@i20V$V@rCjz+ zSn%kP3F6Uzej9DZ`D(vHJ7_*eatIWOv+scilEsHe^*k=mTvf?|6XU18~X{4XU zx>5&teG4=Kh?%esi+D@ydYzu}%{f0Gpl5sw!O#2Y88HGs{}#_FvdkgvbG=#TTZjkK+tkwTBTjUAE1I$r#Lxd@ zal!5APNm{TS2&`ZC#?RI6-`pJR$8eT_##AP`ZDl@6^|uSNuw)}3PcPmk%*B9CE7d# z#f@Y<9El(sL_`SK19`I#mJ5JFHL?VRS2@-~sZoM1aZ1DSAWhUAa zje%WzS;<(oy;(VitYj+Dr&J{?6cUuoi47Rkmz+anz|TA*+1-~4#a2a)1X@;=A)LvV z^<^_xSgE*WC8B{|YaTR>*%aX@^f{V}#lbUO^X7HonkRtY9ZRM<2Lho`!d9ZHubTgt z_)g94H@hOSRV2eyA{Loe(_a;z0p_kL6QoCGJQ3?3FrtGGbjuuhkn%3>aOpgtRQ94~7Xv3Itg%eQj-$pIbd`&2-b;;&1f&glKGD z*h0_szPhE0khXf-+I>K6@OkPf^)2)Jn%f&&WFh2xn;L!1ej%D*Y0ci-M0xo;LX^Lw zuW}Jtl{A&vo2@NPO)X3PrnQoEGZ|hH)%^|EA*E0JPp8YM>d%)CO*S+U(n+`y?QBqv z`ai!VArqJGXQL|->&+06mZe0wG#coPSmec&xe-11wv|cU`N8g353JY50VKLIoRO!$ zafz=Utut=*H2UFe3|KsAS-X{#*558YA-Sk&U7?%N#n9FO@*Vo1Nt#{omYQMi=ujdM zj*?*|`blLN3_l>buop2xeX=1nM#PG)NOeOlRFk^e+nWq;ATApV6|oFwGlWv5Xzet=J zU%c6<5%2?U{LUl)b2Aw-p`)v3NS@=dB<{Hzuu-CNv6AmxrqMDQ-2O9ks%YS_jSN&y z0Z5m-Ffd3q96pZ(mw*RNNH#Pxv-+}7n3f*EJ|O5PceaI zCIYJf!w|g;!!y!3%a91epns`dG7)l|BO@W@B)yh~ne1WD2LII3W{|Q_CKQ?am#ni# zd2i__q@!rpBVp89HN%MO2aFI=42ZB;Js|#NdJyYN#rsmE2k3fv!AYqmgrh41k+707 z3?zjiJB~mGH50dBM|F9|uOUcEg)z`mmO*_GA}MqZQ2VBlyCLsy^MeljOn8&gqYT|V z{?v$O9YqEYVxmBed5~UC${zKnVhBML>8t>W(RoH+#y|GLm}5ckDG~3o5;68OcC(Up z4#$v6S-o*|D(MIHCPve~Xb%{R%FeZnSUhOVGGLjhSTLq5NBgt>m=r{5M*?mJ-aBNG z--Tah9;icR0XnNsVbF6I?A(IKNcI>jtf-Zc!I8~W9OHqV@uW!}(K6)#Oo5yUQY(5f zWXbmGai9}U0?sotW>9CY>W*Oqp(4gKSbIwLW10BN|NA8E{4XTl7RS)W=~rD=WAz7V zgjs1B-H;Ood5R^NS>R}BRTz31lz~Jf+#6;q%ZV4z!X?zK?oa{}53GPYg$poNSqROd zG+;%HRpC_k3=9CVcpQdVCfbkz>!6rJR~14Wn+-K6j`p`KHpyihS62nER_Z0D>s06a zn$2d<5}%21!*54}9w=q$rT8jj%(PWa-7HitF{~7_zAql3P#9*l$mcH;w&&KCb^!Ec zgSWK$5zn-%tp7~=2{X%g`{KsdRvPhbt;?5hwtH?hy=@we%2RAb^Ac~%lGY}l-)E<= z5{?sNYABJ+&S|J#vZF-5ne5HlQ4;2ZO-? zs)r}VX~GIx&|WzV(nQiAwZhN|gCfTtkCBq$iU*+O0Fb*tbl4Xs_lh8mBXf$^C=Y+J zkYyl}29nYpS-u%DrjA0$-^K$2kr@1n4ECk~!>dAYQhWFf(sF}lXd!T>Wr*Mc^Brr2 z@{kA`nEuSpzHlTovpbONM*JMbhy^=|#8${TQv}g&#OA1)!kvi#B6HnenVCXk>n%6P zo~E&!!b}ROEa`NmqaBe?Lro~0Bo9OgaADR;BiR?H*#R6sW>c67YhuVZnr>}3mw1+$ zDv&pue9fp^P8mqN+5FbF7JrMkrKw$I8||$=uSwB;yWebI+S=OE=J(ZSiy9ss@R}3> zBLLP}M*D5;e%}(a&C^`pvcz22*yL;V_#5Uy$CKm(GW>kCsj&_g(A;d+EnT?K*QU#( zzie}u%u<4KZ~a;SWwfU-m_cN+%R&K!HRxT8$J!9&T0=N!$U#dE0#t!gdfkYyprd3s#%4gOrSPS!(Ba@B9Vm;7V_u^VtZSy|G z2O^rpOsa^)p;-s3%GV~*4jwr%F`)QdvyXTS6GJ(qq7c}#4{>t734<~9gjv>f$t6P2 zAFg)%T_~==>)kuVYVltNH*UXmXsPVciP1%y& zfgXeaE1;j9Fh5!WKm?eCnZr3~)sW>fJuaVUeZW}Sx~L74P}Rb7(_I=zoDVmkha?-} zK9xiCVDh}=1V5_6K70%~HF2U6YDdGSCr(;bm;lC(50o&(9z?ELuI!G^7q zraIBSNH$)|TMvslQ(tx=BQHLA=4=ZjGMc2_I}`>hS+vFkGe8Kq3Py*pRSg7MdTJg{ zO;-_{9wo99l3*-8AaR4;RQy%ZhpHsJyZ>9_LtyCZi*DB`&Ifam)UH4E0 z^0qG!3|etSyh+5K7+A8id#rOLV(_HB89#wsT1JxVCa}Cr`*b}^oT$q7FgIqmBRmu& zJD6=-rsvNRXQ7<5sX0Q*Xm75E_oJt(kZi8V7>m)eST5t_^dZNuSs%pHep)G=WAjb+ zS-jmp<%_F%)E5H56Um7Tbk^+Z*<)D%trQFg=3#`H84REk$Ci01nF(W}B`kY}Y)AtF zVe&vsKwBmzx4b$G3K>JhBC)d1v1RR6aOSO6r#iK^0Dv{x81^jtsFchl_J znYB08duHBrz1K6-d%dTwrrtaE`nuV0fimpD01b|?lxOR$5i3E84}~ZD1`Cyai72eh z=UL=wY(|6zSD8u-z-q95Ea%6L$ul$rRnVe?l^q{-2i6#KYHAErp~^{AH87}ZMOGj6 zbP3Lr{k2*~lrbQyfu_Urb11GhNv^(~CQ)kfQ7`M~Z!kC^yGzQK2jmZwpUu>hN6+zo zfPxu{8J4uv`ydyrP~PHeGuwQvO}FWib_|oSRP(XZ@JxjPr&k$yKVJM*uE|2=2gaJ#sAyW2%+t!ZI{_8XvvyFgoc4209;lWXC|e zqOoWvJgFKgl%G&mpexY6gC`YOlZnRc>ug$PGDap#lmYbaaX`97-lEyhx z%>)&KocF2W`)Zou>B*ZeO@2*I3FZ7xp=l&qszWr*^>7tD%~R96P>gyzGr0r5c05Qr zlhtNP>R2ShUA?ML?de@VMOZ#18_#09r<(eA>0MWKub0VSLr2X#_uRNzq`zU1;H~b$+9JAdbXQYK9&QN zZQ|7iy&T5^o)mtTU)6k4QUh^j2=iZPfn29WS5!sV8il<+-Bcx4$pO&)N>2k_GX#Nhq&sDTu&GZ8ivX}t_ z%l-20m{cp<^k1~mdk(T;Odqf?YbUA3I(iLfTQJDZBWMwZW)W&lA$*s5bDC`*oI;PG zGM(+Rw+F4zatPo(?kdcd7=QEQ7hG2Kg(LV_?sk;lvMik@ zhxzPn>GVXT$8JxjTanJVBb~kGV#d4J*>=gGl!woe1aLiXYN9AU%R~4bsn$ z?m&758>*Z^x&}YO?}j5EM7kR3q_2Z7q&skco`DZ+Ct;(KIMSVcD2KFWCFmo)@0;Lr zj1Vs%?LgXb5Au;3_ku3cCTv7bA3!Yl+jM$A($h%seWF;75Bh45u0h&>wDtkii!_9E z2p{Ki6F4}%`kE!!byq|30m z@e4>xe~SEZDF1WtiFDah;0Ngo_@D`Uxrt?a(&@cOyZ;C3sSsih(r%>N@qr-rixNAK zK8y5mr2CN`M0y74XGo0;(4Kz=Ur4)=b|c-6bPdw|NOvIh|4;P8c*y64bb1-mlStPf z-TSYQBhsnA0e=??F%7AKbQ#hHq=PR459v;%JCN=|x)Ry%>1w16*pOmB(%OGdr>EiL(Te?O7t+!l^nRqr ze+T&?J@yvLU91cPWaL$FSDPsAzoOu>^2zd<;FIt-xHO%fgpUmQs>Kcc4c&r1hkXdo zxCL8Fx0QItUS79u^x&xV#T$y6$_~8jdG!^~@81S74>}$fm5JbQ4Q#2N=y}E+EZjO{ z+qHFLFZZmQK6p*t`e|m_D;|`z7sJPRkU##m!1kb`nTzP{!QX>`4-+)YhlhBmCuTMl z`paG;l38YE0QEHeq1*zb_HtBYF*87UxTyZA;I|l?P}u7y_LjvYP~aQb1!5x{G3 z5Be2b3%3<`$6mfjHjH4nsQlf)JDyXX;Ddm_1vpG0a}oS;!1w3i*8{!}@V$T+BSn2D zi#+4j6mPBD=0T@;)-4$P((TkCR6AwuFY=tX{N)3lw|~#iRLOGum7_oJMmuZaYd|Ny zb=s)z#pvrm4&!Q7WYL<#Ety0-cEpB>!!~zxy=&Gu8jCTg$eMK|AW# zl@6AyAH8AJ#^S;SxxKQy>@{zmYNU-;7Q+Vz;k%JSj%y0Gj^B2H6lBHV`HMD{Z633J z+=j6m%ZJW;sB}xosD{xg-GJ9$^Zf1&&s%SLMmMm6By?k5d)@QK?>uk5MOmbI>=#I{ z??XKX#xSamFF$U!08kG2{iyCfpP^g>%K2&1=NY%RVC%$f7o(r+ zHjW>KYNp58w@n2pKVp!2 z#26%N&}IL(uuKbpz?644@H&7uL;!8Cvc0fZAF-_Q+o&hC(vZ^H#3rQvgU(LS*{l2t z>%Z5g|F>!hWE@v8zZ;Poh*Uxz#;SCB2J{4cb!;u)b{_h*e>&QR~VE$80LzT(rJ) zLrJqHs)V4KEo3!R8qc~;J|+UXr|(Lq@mm?9ySiX&#kTXMyvv5hY%1McvS{77!LjSh zH=Os-=q;nZ>Yxsz(iPmEYf-w2!oPFLKxK$k@pl~ccO$0TMF8C|XxCS{UmD7oTZKOf z1KV-nkMyT4Wtq+)TDU6l*982j-@^DIA?hEx4*|Xa@a+V$jniarQm?GU3@udM&l50MM1!vOGn?f}qQ_FA2zog)B}cj9j< zoXUI=9uA4Y`@%jlHF4|Z*bm6A)n=g2%qG(Zp-6Oo|q4*pZm8aQ!@p{C- z%06ZLq@P6l))y8^+sw4D&KU$!`RyoAbA&xgKFUu?0l_aVA;&}xYg0wxvJ4AvC~Hym zA3^#1F}K)B4B7ghIFrHBj zlf0XZ&6Bx*RwnRIyQx>rb}GLj(K zr%+yCtzr!lZZG(Sb|CcUVZOfXWhHPgtQPu#zsG591LgJ;AnV8EI8jfIY^k%I9EoUM zZm_jWkla55z1Kl6WTPkJuj1C1>$LDm?o%t!f4_9<8I_+8xB$FHmAB1<7U^cFI4=ae zQsB{i8GQ5j&|O@IcwbDsTO~Jl-rJSGn71d{!mAA z2bwqJ#G5Fg^!P!P8`|sC1M)Z90e=wi{WR>YSTS_|rg59cK2+{qS2=j$`tchs=*?2WR6aB5_y+n-xerGNsd1nl z%Ka?XM(?JEWXA#cv%!L|vUO12U$6gfB|xf9*EH=s`MD#~v#vl6 z!hrDF8<`?qtsg3a6k^gv?_21CNytk-3ccJerd{EL_iIME9XmCDn9|9M>*G{|#h=pY z7~N}haaKRW#s8OHJF8T6e@*`?2a>>lwI0N^y({U%KhRDpwu|l029mccszm&15vvj1 z^F`1nk{zP&$71YLBJjUO`0|3#mV(5O3rdfk9u^{2A`*)WN0le^2Fg2ADupR;`kG%j(+^d zqo169;@DBteG1en-+iLDL_{k^>4_unzx)2tBTsztzNCB6iI0vx@!_GwYykoynxA#*c64Cxf}IbUqhh zwBhm7o>L?W1&^Cfcu{72b;64Uk9$t|sLc52gpbbn6(_tz?4NFjsQV%)@y?&;gO3pl zUdjhA6VqPF2R|EOO78?_!o$d zQzI3*NMItAa}icCz8%W}3rzWOjg*_BFtS|=o}Zt5^zj+OIqQ8Zr@s{ak^MzsMS-m! zJ;XLHg&32Sj*HpRfmhb#$M?Iym%G42F7QDY_!bxV4j1@N7x=E(`T0L~Lw>k%Q-1jUF7V=c`SI7d zz^8t}iLd&7r2RGktw3bqt-6@PuNV<;FuWqiewRr)6@uX$@3X$$zcU{{Wnz1dzI6ia zT>3UYr(LZ7b8pT^zf?@y<%Bc-el|Fr&3w+y!B_Ay@!9K6IuSgci_Zf&^ts;UUMC%f zAFIy~U%oIu{Ny4hocXVL#tHAkBl#JIU#YVhzat0#hZ>*ZJP&33)j9YK-~UTzy+74- z7@kY#WDfpbjn8mJH|q}%yy2uzkLQwqoD|!3v7Gm{*nqfYcquEs&Sv*PWYejcrN*@zTJsG3Il2(#!ZH^ z88H8~%boZP-{Jz_?*dQVk)O_X7xH|E6u0`N&s7%tzL1BKf)m=j|&{H>KvI?T^cJsL*$Tc7sGd~u>o<* z{7n4UeDE?HFz$p0K8K&rT};-{Jz_;Q~M60_i{P5w;`QbGW<%i?P zYL1KB6>@=hyTFHB;0Lxk$Y=b(Nf-EO7x=Vo`RUZS!25IHtcS+GIq7VLKFIM@!wsFy z_zQCI6}(KG&e7YSevaPWox=~ydB_F6-35OCkDdH8oz$=s&itRr%YTIsIrC_4*YJBIU;~Jmg@*O5n7{B#VCqBcM=fJsL)Al>@6@276#;2&a09$3uqFZs<8C_JU%96#(N zvbbK5<+A;vphCO~c!7W&>G+WQ>#(N7agO}v4~33vIM4g!H{F1j;6)nAhvQiJjV9oi zYB@^9Yc!nW6Z!2N;L8BdCkOiWp6GMjBENkD<~itj1@%C|6+d8x80AxP14HJnRuJ`Qdr)gV1}r{*Q+9Jfd5H#Y89o$(iHu zS2X?s{Tjfjz3i9dw-KP#tl=E*$!{3}PiZ*Y3-kFc4d?Y$Zr6hv&USRS=5t8H zIZl(`{2}id!0}6@5pw%Sz)Am)ozM-^bY7PDBir@5rqAQT5siOV(#fvF$l}N=!h2kj z1CJNSHU131rQT|L>Co^c8lTsT1~ojQ;T)gu(d>R*!+Bjo{ssVLzN6thk7IjR{%5q< zU!@7_WCQTWgHK+^V>^0M!kxJE^sL6`cxJyw*{|WezB)#;1KNfNFbZ%eMy z_#B6K=)Acu_zPU%i!>cxe;(F!?$mHzuh_2Pt2CU)efez?^1iF#yuKuVTLSoxBwQD^ zC7WE}J6zy9UEsfTfj{p8|6eZfS0%he@cRP!8%OYaOv8D-TK9M-euoRZQ^HFG&llK#_GviJUnXh(*SpZ6-)fK?c;3h3 z#m`;v_qf1+t?BUmi23=03;r<|_(>P|A6?*|N_dIj^(f|l{FwZ9I?)Awm4ufFp6AZj za{H2o^LvU1HT)JAI?FXaucOM}BB4yo1%IUr{F^TDZ)^HIe{A6Xb-~~20{`zW@W)-? zyItV)8uF)dAi7Cjp8$S=zPBgzJN0~Y{_FxT!G~U?x0QOJUZ9B?5^krg z?rASb!sm5J`I{SLd0p`7_wt0l-=oU2KGW_D`S_&GdI+D_0XQ!Go(ujDUEu399bP|? z-^POl`YlbqdLMOx@6>d7y`@}_o4?g?p4YQ~IOamOvo*%;r!l{_3%d;&g+o!wmz^{n@YaTP0jS*pgdZ;CE;`{64N;ml<%u{~L|Z>$Gf- z!!G!L?*f0)1^$c+{MQnWaeujDkp0zb8qV*XX?`fLU?SCNVM|0Dn}Gf4r}m4fA<>Di zrEaLj)=0G74xm<)ZnAqy0%YI6EJ@F?6{g&)*raXXlC%$L#I&%{5O$uDCrkh*a~gta zwzm2F{@cujOPjG5R7Y%eFzuo1y->@%GqPFoq7@j$AZ_WlcZ(FT7ci;>jvg`5@WMV8#;EvPr- z;!|1Fc_PBBzYQC(H+ls&Ptsc+IdnuaVVMvNK9{pBY?3cGG7=^}cQdh1wrR?(YqLi{ z*cFU7$denFOT3JPbryPy2qkGVXOJ?@P%@@DRQ(hWglG>~w=+Ta*<5QYM6+5es;AoRlNZaa0FYCAay)4rr#@Inz|9t3*(*JZ8nT^-e}N%#0T3 z{k_yTkdg=8Qn?Q!KEA{r$Z{)B*&A~EW}CjDNjTCa6p{M_3Q`QMhz>ckbRizvaM_$A zOiO+%X)bDNsq-|MEejX6`~0TgQ`h7}=R@j}6B1p9QEazmTG(n9!c1Yq_^iV^2Wqyx zsR3-X=TH*aKAb>A9i&VXJ!e0(3_xu9sCGt_Cnt&a2G49IBIrr>U=->Ed_2mE7RPs| z4now`YI95+uOeWL!T5kALv94xgYQhcLaN)8@^s!%3mK5hhC$G2WQ47}v6&o5!d1)S z*a8syifgw`osy6{!-;S#n2NwV!rXZ~J10ZhN6Mx-a@^0paG+&7#de+#=^-6hCHLKh z&IVVKFQ)#sbDzQy6$$c_bSlUIT0rsuCa-9u8Y3V~AB~NtVo`z3 znCa9MXrA2b)4>=SG|-p{JXq0{T2^pT(l@IEJU~!xwnt)<#%J&OjLtcl#NA9=SWB82 zZ><{GZS`Z%#yBxZ9c-F7l-$IZ!#Ex0E=#0hv}1NcsMAx#%49T-o=tTT1KESagwhj7 zqvYv%4v20hjwdtqwyrc_J6nK#Q*jJN#3b4@qKgQ&>g*xOqllC{Ss7U@k)Um3i4($< z_kl z>@Q0{gwMR;#@JN&IHE2L3MtX0#YJb%3ED1JmIKQmE>Bc2^@$1?C9$0s6|s6NFH_NzA%HlcILK-P?;vM05+ znAAD!FJ-k%pY{yRoPPib@L_*W0c1RZ&CxkANCUAGGYyd;vooB^HAKgb(9WWWhU};R zQ4=z@=;#LKnU8De(uQO2s&G>In#^fMWZR^X2nZ3xXOArmq+;Q07tujJW*|;S4Te`j zbyuj+Um3jf{I86jGdorw5gCx<7ik&x{S~r42kRuBydy0;6(=!nA@z2*GGb_z_SHUZ z^y=ptXfWIWj#9}lRI;d5&N0csn2vH#y$ngDreSwq(G`qh@Pu+=cU>ta`;bKTo*j|o z0HTfAPFuNWeH4|7jC7PmEg+Xmh6_g%R9*(6pzuK+zJ)m$9ogq>6Pp|S=U;qX1`2pp zg?D-CTBFxRI1TA}CFk?H15Y=npcs})GUfSqDx4m~Je4lIewBY*p5KREqv1@Se=o`@ z|2~vx(52Z^5BQfpdnaDFJpb;6)1A5i=jYb{1zo-lDP8>gQBGImy#!rU9YU2%jdQ?xBl;-EYalh{QDw9mv2R${mP}c2AS0NT%Nx-iReqqQ2jLw&?%R%%7JTf$TE~g?-;mlJL-3J{lBmSanI!$OwTz@lv#5> kQ5YRlReBMUPw~h6v;E?=Mc(>{E><<2(EdwN8Cn1T1*XMNivR!s literal 0 HcmV?d00001 diff --git a/android/dist/armv8a/lib/libwebsockets.so.4.0.0 b/android/dist/armv8a/lib/libwebsockets.so.4.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..5d9359c8169140f54cc415498576a7173235aa19 GIT binary patch literal 76552 zcmce<3w%`7wfMhhCNBtL$cqR_W&$cstuF#(td)~N5y5K(QtNHKW*!NKXCR44gqle} zMbigIP`uhUlORgcm#xq;y|xUYwWz(VLa+7S_SO)5V6lq$%2aTE-*q105Xim1-{=4N z{O9vI*=Mi4_u6Z(z4qE`uf6w4%XK%-cDr24{(02TmBe21n-I-P*m%LIJesOdSxQsI zs=&ybY2`Uv@aWqn)DD$V!u*>>QqEB`J?E&2-wtohHsN(vXqR&XmU1htax1NJcGzc; zX@@x`8g=ss^9o>%GMa zzix#R+-torCcM;opGi24=gT~|S+JX}&`0xfDj`$ZH?+@^PlOui|@Ap{o z@m9Ez@CKd>t@!;`_%*`wc{HAfc<$q|f9LXYJ5L?YgFIC{-{cWl_$MCu)$@eph2LDB z7|&fi8+b(Y&*QOw#r6x~YMxa*-?Cs!2|v$M!E?CggO6?hp@BJ zGkO^K_UyCgkAYO^Std$`pWWWujP_=$Z-{X7`_LNf|4AtMk6FSPGg6f*8iqgj8tt_* zIRcR}!87Gj6L_t~pO1#gUpEYVoJD8O%_g2ltvbdI(_Urp*~;Vyx~czc{5(k>p>xX+ zdHBaL{gSl$@oKAoLslI>9EP3?hk-w4)!StCOWeZqq}AS+tV#6=3%=LDldW#+HUTeL z{gq?oUpdEwSCLPCR~vBi-T7C#;cR?(V3_>zVfcB=F#IeWCjTYF^zVfRJ=tnN6c@kC zDKEdD82Gc*5liV+Sn&TQP5SG$A^o*}82Vkq@PEcI`AdhPGiR7~ppwDTlL!XXv6Sr zB{ZE4zi*iQ)x*&9k-`6Lr7bp^scib+9tKa&FnE4x(Z9pugKZyt-RQ4ul_8Tbzi*g< z`pYo*AF=u+BnC9UODsnGd6;_N9R@CQ`q}vNd81zD5v$*=;i}#rreDg2k+)sL(BC`^ ze4W7`qe-Xz`R*|Je{c0mh1D;JpYdDDU)v6|Kt}MVVeou147`$3GJXrK@vB+Le8b53 z9oGE2&N6_Xwfg0!!|;E)B@Zu2Mf|Mn>ZxJ)`FBfBKD6ZDwjKX44E?_Z=h^yqo>gz2 zH9>8lU*)%F7&?DH41B5qXFmE@v-~Iv&t97kmi*ZI!8Ht?`zd!eI=^J$fAl*h{;Mtg z{$cndcI4UcR2cAV^|aNG85W)!EIR8f{8q9$Fbq8*1CBnQZPK&F!ZX8y@30Wqa=6N- z-&%O(LAU&5eh|6x$|8YZof)WtVfb^7Mdyu{oL_F$>l#K5ODuZ6W6@*ltM`VHlV^v4 zzh&UDh;syw55xcew&;wD!N6~m8K@^Md7EO%gUz4yR(@sizsAa+8m8Xk!_Ya~fM=^m zE&O(S{TBWj3%@z661>hyef zK!8Q&qMFl_qTvoV&w$E-w{fg?l8WuN&Bg<;lqK4X9)mV3DQ%(I{D^zq@edCZe zNzPih2M<@&pH{O)b8T%yb-1Pm5*lk871XQ*Vm6RYTDdITRK0iwG_Gi>U#aNP718BJ zxU6=CT3)++dHw2IDJ3NquUJ$s@4});vmiAKtZY67J%e@C4Qr|wEvvt)TKcbnemRXh zb|P&j%W3_0T0W5-*uSP(YK+!3sBlyLVzpd~MTJb#4e6A82wwHF+SRpGMGG5iSJYIm zT)eWjI$Br1w020pOTR3R)>ex=*zB-jD{C7T*VinLnkn_j*0RNoO|>iR%#Da}G`v#! z$q@VM74_A?PH&)v>PpGC@BrK%fpLTpuehDqB=yp!p+O- zQC?D11}&5~P^@}&ZA0VY`W2@UYzVU`qncVOtT*d3#*(e2YQqi7nukwj*wvm&b?S>K z8k95(k3r2@5JP#B47!G8i&3JdatR!vs5Z1mqXD-mGLoRVc7-&@OfxXoG}N!G4zFCv z09(8o=HFrJiP{yb4Q`4$sBIFVt6yoW=VYnMlxI^+VPAvc+gq;lzsC=n$uCShje@QdPUgl8c&f?Q-Terf(rsC|y+FuvFb?G=-)$ z0*ThuEN+m=Mrb!$9hELqi_GaIye!1m0)CD~7<2Sa59!{FnuwGXy?h!EYV{S36C5 zZXE*8vEZR0@DdANHw5mr-~;br2=cSrn{&*J=UJf*xBaQg@~7MIO}{tk$r%E_xyyum zhroAO`KJtl+xd@K^tkAkub3!|zjc2%>2d?lb--6T;CT-C8VB6zKZrTt&h_O+2fV<6 zXOjay)&YOi0WWdD;|};Z2YiPEKHdR;+5tb`0pIO_PjtYO4!G>=*uVV_xX%U>zT|*U za=>48z$ZK4eGd4=4)_rV+}e6DQja;{mMhhO4>;hLIPj=aKLBSnF%!qTznDsZ;k_QEftNV zn;r10?aYL?I^fqh;2{TG_PXs~odaHJ0|{3;;6Vp`jRQW*0gpN0*E--E9q`!>_$CMZ zdI$Vb2Yjvr9(TZRbij8w;Q!=+Kkb0ue0S`OiB@TGR z0rxuKH4gX`2fWq+zuW=0eOHoP;ecB%5u=pmfQxU|{>^c~m)StVn;r0a2mDqCyvYF% zIpC`u@Hz*4jRU^Y0dID|*EryJJK!+~e60h%(E)F9z&APIF$ern2YkH)9(TYuIN&=R z@OvHbrycMI9Pr%^_=663(gFX51HRt@|CR&(k^}y22mDnB+;U+VseKN(?#OSy9$UMo z`xx%PF+ZK1%4?gZd)=k4lzKh?VLwLN&q(Vs(~S5pi1#|;zarl6i1!kAPd9KG`JW?R z=7_&QJm`r3o_NF&KR~?A5r2hvmm~gP#Csj_zY_0v#QTZ6XPm14P2y#a_}_>J9r1UG zM;!6v#M>P4kBN6V;{PDt>xh3wyx$RbUr+rNr|QolUgn68Bp!6cM-z`Y;`zke9Pwh} zU5@xT;=PXeMB@F9co}hb;8gt=5-)Sa{ltTg_@%@nj`)?t+Z^%f#Je2vtBChH;@1%G zcf^Cl-B+Eee>U+lM|>{vpd)@0@rWb7fOwlDehcv~NBpbAdmZuHiT69=5#sJIoT`5j z@iIqz3GtvKzJhqf5pN*g=7_H*-sOnjO}y6;zlV6gBi=^bef6pO?;~F3h(Aa?=!k!d zc*GHZhjcJ zBi`kR|AKh0BmOJm{f>AqarZT+>VJ-SnIrxJ@t`CAd*TsC`~dMbNBkAyU5@yF5$|=x z|4O{y5$`ANo_VVNH;I=y;(sF^bj05!9&yBv6K^x)eM&uzuGByKEIpRJ#qw+Ol%A<# z3$S@M{U|%O0Gqv#%|Sg2*xx)Z|MomJCY$#?%Cq#4C)@vEhN`+DW5U86d#}-h6M_dX z9y8ltovBv6EVINsrP$Sm^5h=xgrok36cUt5l`D$C7~$Jg%Nn zuUd73OI2a(J}o$WNu~Q-ax^uz;Dd#glnHj9T>I-CQkUfM!E^7NPz5$po_C|Sol|eG zXyk2iyP8ACRY1#(EePei1CqDj ziJwT9OMd01{*X)OnDUlBPf^by^0~o%jY&`bUuciB?ECp@OY$G-^7nx+>e3P)g0EP$ z9VpLHJ0suI65+?RM744)?cq3BXQ`Ij2M;5+XsKwIN=!mFw!sIV(gKzHFRTcYKjPL> z^y!%J_f$ggT{}ukb*R##zgeek-jMgmV|!G_(LVY-1m2lSEe&zxbW4_c`E}~QK0{0W z)}?l8g<4AJj$Wmu+FY>(HPqLqX1>xwoo{-SKRJ+|CUpspQfPD0pDx-c?dqq`9_Lta z2s$!U?1119TwUOK1Gz+wQVRS@2R`lN^faMC`dVnnK9Sz_Ht$)-)8&FE8`x9tr*}%Z zp>#>RY}#VS(&ZhLJGr)}yA=7gW#*ZEO8=-prCQu7@FDWzg_otsv=Qc6Au?pdH7kr+ zp>mmU<+j3%Rh-|dDpfhFrqQM(a@WUrHD#rs=dh=+#}{(zYT){mN@nQuK1*-?s6b1J z9G+bJiXnqVl*<{1e4Yp%tlj;+1Cfi{4`kl^{o}oPPaS__{;S7(fAQ+^?GxWP-u2Bl zj~@cJr+>qN%yqwc+!wn<7anh?T-UnZ$0xsf=YZ53JTdQ}&+FD_ZSjnMocct@is+BG z2&WOgLHK3D!-RJd%2<1t@HN6+g#S(WAB2A<{D|;B3DvLXq-4CsiC;Fwe)_RSZPX7q)r57f|H-v`jlN`+Z}3Ug1Z632=s#5#3<$3DzU-GzuKm@Z z?%MW=N*$&@yFO52al=%66rqIa&fe^u?}ynR==6EUA=tPnI5( za8{N+OTzV8`n5)$Ed4qoJzJk`q-X2b6LvD5&Gz-~pnjuG+tz36A24pWeNLs~vvTyq znX&x%B;GGlsW;D!+2)yFt1tJ4x?=c#Fv-bn^#RJfWWC2D?f&BXlR1Xa-MQ{^p; z^JJN-LdQa5LC;=f=`eVAO>*hyk5^ktk;%^&7<0oWm4|Nb%g`T7r?=X&CUSRj?Qe~~ zl)54Xs{CYz+H$%)n(195wM5%kRo;nwOI<;9&w7r*bOIMW7%#T!kvSllsmG{?@wv&E z6TCV4I^unvVq;F2OdT<3?I>2OWX=iYqLbg%0?eoLIe5KL^w;wvfl(J@Wv4<1qGxu- zCZ0-PJO(~d-b)yIHyMyJQkNQS(&3AZ(5tD_=8X%zBfR+&x+h*dFeB8j1;AZ?XPeRs zp(TEwHX!5n0R1azrK)i0vUIx2WAN6by9^w!Gal05@D_n%ftKh~12d4-1x=Le%U9C` zmf$@$Mos(8&*luy19scHJh25&(jI#(OBY8#Qy|o{`Fqjs~ zMfYimACbO-bnnpgzL7@ylcYzjHljZl_|!3I%*3NJ&*Mn3(XFZETKaxq%u;1=Yfjd7l#u89A|!HZaiejj)x?F95GY~WCvO4z)8 zj{dXx+eLlCW4o?{*!@OZMK5WYdJ}k%0p_%yo}n{8L=W%5X8r_PTL>RP_Z;MLT~e8F zWlou~3%%XP*j~@rI)wanO?BzpzN8Y5LsKYsV1`CNbTSY3qpJ_2vtK+98|@smQ|cGp z?hB35`{Btf^7nCV%Fy?`yGzu|trHcv3wxgZG`&^Y#XQ`z?;h+f>S?7uY15mY4F89u zpFT!^Z|K!svrO7N$e)w8Ch*6y24=+bmEH<(f;_Avwu*fp%2qpF%&qmXm>DE*C5THuS6 zlQDf4^ebd`F`+HXhD;`N^%Ka^+4!@>Ds$V=GO(zbs3RQhl${Au}~ zoBk>6sbpQ57QP`DrG={E81IL%gM)5^iTIdpcUu-fhM@}#7}uVos=DT3Q=w0`e3qWZUTk6KB;)|SC1uJp)fVZGZ8-xo zBwveiFLjMjRkUYXl)9p8O7o*{s=&vFteEqN=n2lzZYdMKxUe;lFMK8k!q`6-LQf6z z*(}1Dtn0*PlJUJytsi#?{qZI`GzUI0F8!h_PaliFG2~6?+EvWjEM=_cHz^q_s!%_N za`0load_;j(Gs#IsKHK<{H@B>?xHP{uANLzm%cH|_2ubl^aAjFSzizKSu9^q0hjtE zO=vkK8zvotI8=fDu7%^^X*de>BNqJMEx5GRs5d@FKV+pnN7~7?KOdY=MCR0-`H9rh z48xc5Nz~K*X=7&hk*VrrivAu)8yK7AVaBWX)zHAWDlHK|?9%`KkM!2~Of7{!A~jQ~ zqY7I+^q4Z*KbAfZF+TrwjN0k*h%H>Y^aQ%*^O>ruh`#w6{P@^YKM&p{wq=`pZ=emDVi#(uQmx|XJY+=b zdj-9+i#hEzw_3XNB5x$_f!9#tNNzAv|YeRD_^wa@gZqZ;dx@a*}Crkmy`eBxV~Jtnbbgfi@+ z7T!PnQ^&Yb$aa`=A`d>wZ9`{8$sZ+u^rkV1a_ADgq89{jIWi`ETE_Y}L_Te#n&v%M zYYuVUwlw4XhE9AGdy(mx6>8N3)Gv6^4Xj1a>v>{~+A{N8)ojbmaBUP>IOG}Mb33wN zmM=7XQDPIM-4m7y4-b8muJS>X;G3c@n)rR>B}jh-<9T}JoNxtWH?MM|uicA}EUEIQ zCy%p6DP#?@=KOrtDFx_>@}y-yCz(T7$IOs+cr)bMu!;8-a7Kdj@i)1b9vVnjHNmqa zFjG#>^S^^#yqUPj{3PT@)-b-lLguI9p39)s7z+XmmFS-vY)i4xmOA1>yO+A21&3np z55eyr^4`>+!F(_47HM}IynyFozqPAGjP+J>q$S^oKfT>YWn(J>~)7?{e_H#@fW@X)8ES7d;w-LV- zpQDWQfzb9fXIiLO-$U9aCoDcz{{=9?v8hNE+Wwmi?6%B8Y&ZNd_WZQx3o0S)+BQ`s zI#lM;T{Bd|vSWIFwomCVpo3a~zra}Wj2M_9?T|h*c&AO!7!Q<>GA^oKojed(_w~)|Z&3*ux3$XMUQ<`LdsmKXKFHV= zypmV&3jTiV;GuYH9C-wP#H#x~>XtH6xA4p!$F`4J+JRl*_o;D=flU7j+9C1b@)a}!fBtK^KNewn5`oLfF>hyuT;eQyoOQm5S?Ptq4s|Nqn%Ui!$Voljq6_;YE4#E15UtSO~E;;XdV zWUuptHpTvc&>;2Nvgo$j@1#L=rPyjhlkLBjIa=gi{H*A(9@ZBrvAq}F5=-pH7AwRr z`w=!o9rXweQ9~w6dhR#sE9`j$KJA#L60eNTYJZdVN?Z4iOg77W+eV((JtaLCs2L+W zvER0?e5s z@Phe?BDb1$ufcnBKSAn}yb*9Y+pQctmHF)CTGI}avh<~4+xIfY4kLfB^GI3tii|OY zuVrZ;`&5EAT&T8)ttIkTCbBN}TWF#lOqS~35gj&6JtF^Nci4Vk83W=g6JKSRxkvat zf_BMVnaont79pc=qI1Ol6kQ~|xA!Kb52R0Ij0?YnF6oPh$-C?K7q;(U{Mh{<{5SY) z^~ZL`n3UVDCSEChAblZx-!6T?I2`2v4EX-8!|1vJ$q<^HYC_J=#>)3BRm{2jR{Yq_kGG;9>Hm$7eqT&l#_7qs=I*wh~AUpGTe z-o_5Fa6UG`TH_0ZIqHt@i4Imtul|dDE)u0`ML^NeHcl=ur~l`~sK!vxemF9!vgn&HR;)`~p84{);7l!I}64em4Az zz2qNzCVqjR4gcHlL5)8XzrfFi{{hKgdM18>pAG*A$v^2#`~p84{_ct7zvxW-0zVu6 zizWZ(&crY9v*CaKeDYs*CVqjR4gU?2f9jd|1%5XCZ%-iqj5F~I{A~CaOa3pMiC^H7 z-zjUA$kOw`lgMVtOf`nF7bszTba+aRJ}_R!!I}yUSvK}dkYz9VM*#07Ke|6qiQaJ$ zijKkV5BR)3UDg);jJ5Nyd1PFT7^kW>y6^bj0Jg?<=5GVhf49pq^veY~BHj5~2m!M`pzy2!&>^TIx8$4}c+ zq>ARrSZ2KIyRwSf8{I|ip>nmmMHL*~i+|HO)@7U@=}T8dM=QMyJlEx@F)rqgJy)w$ zQdbxrggCDe&QXC&K1o-FN2$Ob)|Vm9eEfiQM>tOfsxKj4sPs!DUPycj@e80&sh zh8WXM96QJpB>izaoiXghF{R&5Nk+j-11m43S6HhlZ>& zHk~-?$kR)Dvz^XZbmBNdI{v607k%NHtST6TflJ9NW6KRp#+9GAto_Fmg4^5^VlKRv zdFaSRvzObpvC}Vca_#Rd-|?Pq@&C!XTI^fJ8snjl(p#}>{V{w!Vi(wZ>psSSB0id_SuD|;7IHO{HvuhhL&iF z82h^#exV3{#LkPv7w$T`k-gmLBIa(*+m60#7hl^E_6}wK@1)vT_5~k^w5JdM+(+`$krq7;(4nhDk1Re>6Z|DtdgeXs+~f2%OZtcIJSK? z`>s0_BlAHe z@3qL<&(!((uS`@6SL1_atRMJ@wW6Fsk$tPfquJAAZn*ed#s_)7j1Sf4aj|d5x>B8g zrR+mQ*{dqF#)QZ^dwf+)rStam`i^$uyEEmv#P3@(Az${jUZu^_f7Ihoa5iQ)=U|lA z^k4Ul?HDI*&Queo){^&#oSFNZ7TCoYDJ^G?vd*ZmcUgtc`~dy2;6u+i|Dn+;e`XPa^-)Xa7c>(l%+A&>vJKMjPJ87dKRI+WZpyf;)mgSmsOQvZ@U_IGgn1 zFTiK$2JD)yS)vb(&99;JunX|rRfXW2^qsUptr?#mqFvG^X%G7a zRlft*YVy3|w)z48s9n!E&O_{BfAAdY?#@#4uPadc#YIZL!84-0rYsnUvp0HQhW5|~ z{N0P(S-{+ZUvm&VLuJf;g1xsrYQ)jK;_JSTGfp0r_y%=}j0QFD8Ghyg`Z6JWVqd)9 zJ&rxh(xtEDw~pKMvFm-lC04a%q#DE5-tdJK&hs&sl)=a8OMMj@bJfo&cME+{Nm&_R z(`9V%{;t5$U6o^E3yun$cOUOZcn@E-x7mk3Kai_lE?bvVuxq5!i%EBpUglAO$W@ii zW!WkqYtlpMjstt#uA_74|1J5ParoO7JOrYFJoiLm=^uzy>`xkp~Ldf z+w`OCeIchtU#^B<(w|R~_o@Q*vYb^~&ifX>8nffGl?Tz|^Pc*w?%Pew)0dW2c;Umv)IEi|FT$p~5IgPyY`4kSYm>0ireT)} zZjn#v1I4`VOJ1x8V}5-ha(YTX`1LPYa(fQ>ZJvk?b8_wO!L_mIhzjtq-hJsR9$6>b zbD*r1#fMVjxkwLqF3`Wa?*jbm1wDT`S8a)*qnpsX<=O1_&DK(pxpFqpeY6!BlX2O? znGuB#gb$qV6u*b;?a4l#v8PA>$bMcS^m*yyp<_q(drq$1Z|Iwk*awjF8M436KEQ#j z519{~$~?Le-SIJV**>?YeIM{W%5(Gx^S?2ksi*6( zIoF>c&l2{0?76-jom(k9Vy@RlGuIn?XXacl=dNU~kBu_t`9tij57MoDPX9CdA6oOp z))l*9E$#j{`2Q?A;WhUJ<81K5%>AM(V$A!WGEYgHh3ALR$L5@0-1EFKZ)>Su_k_VY zU*2WT7u_dkfH*_7wQGhs=RfWqKX0wf`M~FXV9oiYao%mG(Ekx_H0S*Z?Q5BPr%4{i zyk7#3zx-}``oBZB^rP@dbW;?*FF<$3IY$zv-#YLG`jX!E@ND+eSs%F2|I+tmq6Zi= zUjVPH6+X1uB|a5to87L>wCj{TP-xi$;DDw$_JHu>km0K-=-DVduxx>l?1x(Pe&m_p zmvMd+U(l{2>FIIm6F&3(q-hh7W0`A(AH9Sppu^ZxMz%DeQJbtcfLHcMq@VsLxt6`e zKakH$s1Xj1Tg|iuLg4X&cQ{+%R(LU323w$t{C8S-3^}*#jhlei13$@qE+2j)u@5{~ zYpI$Ht+_+x$-28LqO|7BjLPO6IHM-?ZNv6muT5%?P^X(a z8^U|>?=Bo@IoPTS+RJX!np>5--B*{RUqG9s+-BgB7qmb)qBU=EyV@h1%V3Xm(4MyU zprl=&!aq0ds~R(y`aJDEo=G8-)=AV;S(vQAk6LcjHw1Sj=L}BCz~%b==s4k( zjdxHEK-hxw_U^!#A(bsx)NCrhO)Rl3hj2mB@q(c~G>k z2ze-CY)W|-{V#2W&UP1V^+`VZKSsT!_zA-JsDxe@IzI>cLPcs?D`%3s@GnY#wQ)xX z-d@@InF{FiG4I?LVx1hi!q^v3@OiU)Z*zR2DtO?1WAB|O}EIo62utd)Fsim#>E*sec2$811SBfvL z?>u1FsDjPhWjc7?z>Fwq5z++bk$2KYexcKlhtQRJBWaCgZa;IN|BuWEADpkIwZR(= zIq17eO$)OgYo(pZ-Z`mIzS`M1QRS;w8`s3LT+QN3QTP#!{P0r2KTWCTR?2&cmonC4 z0c1NvwU^OXUP3ox+fEm_z)Ioy88F87dhoQ;7h%pSJ@fm9yS1^4|~7L^fUc=2|Ve5PpfhJjmyynRlJ!_2YlSHVczi@=2XT$GynCl+{R+ z`ECW}B)>r)Wj^MNu=IJDzK^gLa_z?}x<69U=yv6D*Csbc-6FT*FZ!yS@hG8B|Hins z`#m{L|7URilSQNN=1b4G4<~IA`UcBrSLm`QHIH&Kc6^kLGv<}tRgf`{9eu`_=iY@u z2mE~>yEN_}m?7gno3bhvTOcyj!26zGFs9kR*z+saq3k31s7Jw_vGK6!zM@JmX* z&?NTofD4Z}!)2uH{i}I~N$8R?{{SBUg+*HiwBdX8f>X-GNIy!tM*BJ#BQdKF(D#PD z6%!bETsd0vq2uXkt`aTKNvLks0wF?!AMn-JcZHq#3_8V&!OOCG8 z|AGympm&kv9clUzTCPGKvEQ8Iyst04OZrFp$<~oB#+S?o;cWbZ@J?hwaQjZ*z4S*oT~quMZr;F z1XnN^(2}QQZ9n#dS~g)JvR5z@*_&dVGj#bosCyUss-7|$^gSGO2ZWxB1qVE#?FTBa z)wqXnc01L>7n+3!+J;l}rR33WlepPV@dHX5MD{B!xlCdU@y+e}t2&L=vE-SR z;hNv)iseV)R|{?0&s?efMf%93mpfMGn1DW^4O&dvuq75FZ(dXW=L0v#8~KLtZ@$dM z_PFAcsD)BS##gXzf1vtVz8Yoi2EReKKFl5sqnbXD;PFY}JNwTH=We)5j}igOs(- z_4pT`gYVKcFx{9Fxi@Ru!Y;z9^e)Ns?NRuapiP5@ zQpR+QG^adKCo$nOSr`+MoF#oYC46Ip# z<#FlsdkPsztf!rke3f#0xns}S+(kdjN!9k|q-w^gL<{#YTDnvqdZ{ZBDJBkn*`E^K z_5^!EHNfr_`;K;OugNfE)7R(LrC#n69oYWPx`P)&=Uv6@VIh;Up7<#^LT+;n-B-jt z2w*=HSe6OXisf#R__R1*4DI4e+LddzGfq212E@0wp0>lMmtt3PXCaoUhn~wxwO%N) zgpcqRm2!>du3{H=s+Ju4Ev@nQo!mJvMg0*O#f!!uKHkIt|#a z-Yk8ZfO{kXoGJW{?0z`wFId{VK<4d>s|8IHO!YYjRzhePtY0zLU;Dpwas!K z?#_=r+IMp;>pN2x0cPa~9>HOlj%8{ebU z8{*zQd2Q2nGVTa z$728LtHvaDlh#OD4Sjb%AvVPU!6$f6*~I2Kz^K16F^HFYI}!N4gYr8lXVX~*Z*4li z0*%Rxff+*Ya5%m6gNkSBqv^ZY@$}Bs;1r*bd6%fTXM@$JB0rVfCE}d=);Rv6BK9-> zn|JBw`=~#J+zag)$WjQsADijs9$wO=3%w2G z>9*i<=iQg|=u&=}RrYVx-RVq^XBg=m%_IO^-W4(}rPf~c5nJ4#^ z6!$;4#~*dG$HyHI_F{juu4Lg6&WitVUEabBWaS6zau#|R!{0x#=Ae6=mg+gN@?idG zE!BOZ?%({H)7UIX}snoxM=kS+Q>QV5#zfh&Nf~Ws0D)k6> z-us$LJqDi9F%@Ve-#Hsppn-g&HmblX^5t$)fqL?d+`=9Oct>F8E(34QcT`{n<=((| zegpY3zo7#2DF4Q}!N6R~f9eSa=1^|@4^&__EL1@VQ%HwOd!7sEh)hAS{8#}zm?&lNbQ z#1$Ad!4()W#}&vpp#q}|UHH^ofn3cM7J17;0_VKNLWMoTf#cReT2&h zUn5*e_~&4th&ih;LrWCoXox$hp}S zID+p!>sD9bP0tvAc9koTc^mbvgC_P;v$5MotcmVE;yK6vrsrJ$-#xkh_dKKg?|8EP zlc#=rLBDIt$n~zAk=vJlv*6mBzu(~FoXHa^BX^ea_}i2xcjnFN{dp=YH+#g!0xpN; z#_&VUyjs0qHcESFmX|$9Y`E(W=gYU+Re-(NKPpp@H2EhwHiMO_aGgp;+!P#~Vmoqk!USY-eTk&!$F89eK{cbRK z{#I;+sN0hpMgFFaDrjF%`!|nPsVLt86Mp^$U!dThg6@|1W#apV3UE@CXr^K#QaxYTl=x?Aa#74AfwAan*EU=Sne>`{}Snf3l z4KDDA9Ld=Y=@Z$9lye<&e&cyL|HxSlqdwM^zEF<-JoUx!H;8{=HZtFFjY`F!)r)+6dgADqQu2k6 z!_dTJ1^f0!n}z?rt3PF?8GWaL!xzt$eT1Gn zX{VeE5Sk6RHqwCC1D7*FgYdo_L*Fb04t<7xYGs}Hh)oOc(Nk>4{WvYYWS~N0PAPqwJu1dg z%TJ9n@KrgCFMLzw+vwjG(pX1TwX7M}@Buaz{P2hiSvP(3LD3nBj%~tECOv7=6#Tjr)fS60_XK{T>f8_#IEa9`Ymu22C-w>UF-4 zAhh)pb}09fB0`Iyf;!8?g|EB5SjxT`Js9h3TjB(*dzf3#inb0$dwhL~lV;i_%q>jh>wLrvOJ@DA*tJ=F*kI9+dFH=s#_7R^@ z7w37j5o%|gv_Apo|DzjsES~@_XNZJ8xu<(a+wB9}z%S>xgkJGe#K5g+Yph=d#1@}P z8-)+PkJIH|@=Ck+0gr!MOE52#%bkCrOFNn_m-7=(ktVV{jl9AO(FL3d!j~fW)vlk= zeueIC?B_lO>2i-scoR1CY%%9r3wnM9&C>qOl)D;ygR-gR>g}|@*RnHYeGh)W7u!bi z2z|a-fiAM%O1@{wm*7mw>8H~2jdG2^`QDKM_i3Z_dg5cCp$+;( zuZm6;Jt{g?^rYMo3{tP?Rb%X;D@BK1MLE&W8hZ7wv?tc@(mTo5dK`OD!gp0bbh3Ts zMQr2Jb)N26FTQZ<()jjEte5>izOU1Yuhw@fds@hz$l!myEx5T;&e^SPvodsPgE4lK zg?i+7U)jBle&6;5mC}R;{9!)o*+$>@6K>!sh8}}&jL$CmQOaw;eOi$|l`>1L_8Tz1 zWg+q>JiCOnJ4j2q+YaET@rz$p_(J(j#yprT(#3C9Mm{IM?D<6aCj4SfF!=S+uaJ{} zPw#w+@$lB~(mO@=L}nE2Z3QO$o~eqCqVwg<{3_{I|7T5 z9;dvVRTRIS)GKl>-y;zj7x~`Rrhd}OSzG+zWATHhKBNsB@Uh4_)D8Gl##dYHMPpeUhTg{-MWW8rG9jw^o8gU z&VX*ZiN1Y?zTV3`B=UHSbCU8MBx#HIqQJQE!PJWKT!*$RVrDq6u2} z>r1Lz!2H;_oZbMLx^GFESVOa>pI~ z(l*iCb0%xub(2;1wS_?gk9JH8%$`u$J+B0u$63!;Xo;FacXtT?jnKQaM5UHg@GaE| zQm;xKJR%)2Jbk%8~k!EQqCuc9+kYU@aH?^Wj}JKyxZls4lN%Wr~m7a^1^?g8n5Fw z>2{A&-52nUqRE%D=T@f$GILZa<8syPs>9x;&Sw}Gs!r)r?=xBGM#e&zP;nn;26$xd z;2h(Eaonf-q;0&OjZTd)kH{P`3t6-0mu(qpXB4>TDjEC8H8dCTt)YUR_p;O$Im=sS zeK$eov?q?Kf@hZAa&Rnt=Gwm0OfUqR-0cBOm=k*=84gByc$+q39>cTgH7Dxm(u-O;2zR z*Ta}Bq1-d9`$dQJGj1+W>P2bW_LpWF-xU)&rB2~>rbla*v5}F>+MRDv)KZVgQw??P zNxK7*FG^h^mzP4T3*9PuPV#)6dnB@#Cu6FWdiKGiU|orR7x{!v+r~H6A*X%Y=8uLg zEO|Cq`ootTuNPBpJFvJVOMFjjEbW$WG;ET+A48XT$LfESdC#z=%>BGE^rfQR|66_b zwoN^5T7 zTR4@RlMXSDh>eHcbwKVvWik%q1;#f&Htj6VyNohk%JlL553@}EqsWB@&*l3=F3u0^Oehb6y;u+$pdpecaFsaFXya<2O9HVS6V}Fn%}+N$N5<1B(aUmc`W49zd&6^-L%u! z=hJ5pxAP01nk-tZbI9g5Ta#t_=S}#q{F8fbwH9tuo=c6nvDCm{=nvDjS@^c4Zt+)W z)a6s>>wMpG>m$}!G0MeC^?aj@*#^P;B@4&R1|E&? z9$4jqlvC{QYgRpmjKt5^2N;*=aQ{`nZ9L~O_NNoKX*KN{FKsF4d58QzAG*ntikB+~euA=8HSKl%7k!$eb+a>xAAA>l$C*WIej_#^zkc zkL+iMF0D+&OQy^SEeJNNjO2ewzW7_JS?<9}J+ijk4}QrP8Zl+M&_4igw8_j9*o>9% zw{sikWU$ACU-7T7E@2GsxlEO13Zq517csYBA9r4G?q(ry>@Cr3}2E_SwpcfzOm zQ}D>9)wnarHzh1S^?iI9^%jY*@Ico-?5#;IeNRhn_nwwfJm+-pgti!G_2S%ttYm!f zefj3jeSBk;{g`TOO^vgxav!@Bedxw6^5H8F%EO$_d7th)DNkFyAEl=YeQu#IU(Oc* z1>eA%);-$=D&ZR?JSgbd#5b{$oNMhRkIZFl1`i5)9%BtI?X3hZJi5?oLk2iCaPDat z(apC;4+!2p?D5Inz$d=XdWtn~e3GjAxaA$)4a`|n(Q%34 z-xPCOHrV=0bdA^uvNz1w9Gv4$t~LAnv_3`d@uB+V-nBg*q@QK)cd)Pf zF4i*){MdltZsU=CDN;kUiElQS4y-)0Q59+JC5pX1wWF?Yvf!_ne3Xt_{708Wv?b?{th zy2+yHMvJCD8||jY$S-`1IOJ-Hq#={Q^JmJpfODD4&UFV|BCp7C=l$5yWj5JjnUZdh*)q2ZO%Yg?bP4?J{Vvb?p>=yYP=PCW7EHl`%nL19r`Kj!IUQpe?xZ9&PKj{Mmt59$GIckN#Abd zOkhWrx?&r5q-0&5Gp2PMa+P1YF074LGsF4Mr_wsDbIJGUbWz@M*fnXwZIvh)84?AHrL_>J!SL(cdq!BQ?b7mKg&`1 zHXkzjcgC>K)}PuX`epE1>NrGuMcy-rf6Bd9fwjUX`NpHzZ(<9J-j;7Y+TU{z(Z&w= zDtW(4DCLx6tlRdpo!^B`th{0ud|n?jSdaLx3s?&W4gAhB6Om6TW5`YXbGpzbe!}!V z#drT*-6v;pt`48rj!9bLh==_~{ucpu%~pkvock6#U3@F76Q7jpgcc~MP{?5El`i)1 z_smi+e_)(_tLz4swa<9^|3DF0Dd+5^`Y;(Ny_qwW*dl|pc&F-zkWC-_I@>p$B%kl; z&+Fb>L#Nr>p}AUW3vws-q_? zeA_>?!X5B}!$sK;_5Oi8VeofiTgbh{P(j{|5cRm{Fx%rRl<#eq?=Pzm`iZ|Bg6`Nq z_?{=eA+bf`UjCO#TTISR@jrFkN5kA%kb8tp6VI$yaKs1j1v%=MGddC0hSlYqPv;Iw zj62@pMM3suvln_ef4XJlg#1dSriLQ!Kns4NrX}t`c#%7>AKy@zHnC1vCHKkU+0-y? zi$jOqHnF*d-!X8tjZ^t9HF0V+zF*_J%Y4(J`h;thi+dhnc#plB@1xIs+|f|TzVK!v z<+t2kvarvAa|wbyix? znU*xu#O9WA5ocQ5O#3QnAC9e7B3fzck)tzR~3SBKXxs ze?_k{eD3}y$iMvyv4r?4eAKUAOHVsr+Ibv3!hWTEmmwl!*dE{7<@)c@oihGJkIFb& zPdOjsyNNZcC3pGqe+J~NzEKWd`(jrZ-=&td1pCViehCiI$6?CDE4>?=q?dXJ^K&h=7Grd*GkWz28u$XOJ1_58$*l(Fw63O<2n z)QO$VSqo^h@3itA0%I){kIGqw4F3}|xvR@}dANUS^fkWx=2hUr7GG7#`EC45%~DpW zdk(0a;6bTdWC@#Z!5y!QJ@l*YGK==k_0V$b{KU)?r4`D=@qQe=ILJ3OO`lHtZCXU1 z%C|AZZ`23AjpQ}PYOEYQ(cQu~`Ht6oqn^{}MDf#T{NF737AO8BzwocuIx8z@WS^tY z>~BWOw-;LTc>v1TFPA${PT$dXzAeW`wv-f6w&8D z!#A>v|7kfA-zVShGVJSI@=IO~nj1Oy&cm7ajHM&7Y1*hG#QEe(?#xaam294rPM6QB z3+)zLzU`Lz#<$P+vi~SPF5#WrZT`z)gXizdUV`+O;63_AdaKl7p99|IOvc*wI7msfaBi-+|>j7k=3XDnn0fhNgHX-}olJ{dW2Oc7gO8wqYT*q1(S5 z91oHw##!F&i%z9?S$PDH9~GkJKx8>d7PT zt-#!>b-|~^<&2TdV<&%4ojo#rdG;9lz`ARW_BGE^({Ev+kNf|jubzVOt*xyw_Ntxt z%iroZ`{+Lj1uo-6);}^nG-&c^)Ac29q{sfZmG2LPk}mm-bTwU%AR}+0o9sKs=AI7y zlA-avtxR2fLu060WIPE?BAdwcOEKioM;*J`{JMNM1$m=Cih4L3*32B@UpPuNKa#H! zPf}LKPwbj8Y#SMV1c$8bGkm*3k5}l8O*j7c)EA*i_a1B=y_(F{BMtfp8Mg4gt9jHHSaR_xshq_!-7EM{_2c}+z2psjb$(*Kgx4V7l#@PbIV^lO?}muqP0r8Y{}}vVh2oo& zb3POBe>}sQx`2HY(I30`AFws-8_L*L&?E9bnREXU_9~8}heCwnj~OrZ(MM78h86eG zuq9*onrDh12%A63TKknU8DCm=GD~&Kx;;i+(k7eNrtjc4M!z)D*9$r4FZouJZ#4R= z5C4n$?6Mhq!9zJ?-JYDQ0?C^=2SdHcO(MxXjJJ^~;cXq|G-ww3dMR@ye3rRE>f{aq zIt)198P$k?&Po$qbGqNbqzAtMek%6IerKL(bmgf8-vDfuez4~>=?hgcKM`WA*z=j_ zh&AAj@s0Hh2?c%#ni~5JU+V(1?9T?zIT>f1DDw$>!l?iD1f%>XHA6 z_y%ikRm8m~&)A+u`k_zFd_}&0vZX6FF3G*6UB92+-h~{=Sd_A28~H*NdJum9GcuOq z9E7xSP);1*U1l!uOZwT;oNbgdCZbP_cCwHB3};I2pw2r8Q``gNtf8NFG6q!7!?c_B zAIPDdjqHPK%%zey&Htx-n{zNTT{%m;nJeX+ax!k^-i4g$IqZ@D`*$AyzoV$>qOc*w4J7(z?4DKPK_1o|3%o}l(T(1;>S6U ze*P3+j)g$+K-k^V_pR?ed-OuvP>s?kqZ=s*t%zl2!Znxl& zetr%8Vfj5y>u0B*q;smAUl?~Z#yqv2wP=)YgRSqyZ?}|hBJr&Ru?vFqot*C+VC+1~ zTrB5ALdrXRH*FoyH(3>Svz!@_Zy5Jd=bfDGkaBzA$sY2AIP)1|{KohWPKf_~fK0xm zSnK$_SLr_^e~fmE-jH)Z=VMRB-efP9Z!5&!6rcQfzqG+Ai%$9tTrwWL0e##5MSH<( z{KR&VbDD;($6hhy7#-d+hwm@Ii__%7@V}b#ys;lB^!HuGeVxpn4?Gz?*ruoXQe-~u z!1uO`|MlGARjH2KM89P8bWB#Mz1*Aa2q|M+cT77y?mRH>v-?Ua0PO8i@#*CB53QuG9O7{y)`Js{s16gdB{x5uYl zrLU$=p-Frir|Wc+Kd}wwxuYccLJw-GUrG2aE%hv6O9T8}ZRpybmb-bshX=a8D|u+| zj|m59P+!z9g9fR?*%!7A7E{byAEe8>kaJ0oDOaMB^RfKjgexnR`Av@4H~3~Gw0Gsi z5?i@nwN3J}{%l>x|7Gf*sjtWH*0zSdscZ3dZ9ON|n}?S1>o`xAAQ{X?KWm^-AO#=JmpM=IDUL8r5NPy51U#7C>tdBP81l4kG$dmv1|Ir*>yKb7!-@8lYCrSZSpoP78d z?TAvo4L*dx72!Ta1l-g;uZeoZrl_QCmkS^A)D_sX{_ivXgeQN;havtm{Nh!iGWHSq z9!(fr!ixyBh##WUt=MmLz1T?`3gOlNY47{vqpGfbcYZ)Z3>YyYD#}606A?nds7SG8 zG8srpNYZ3btk{#u%n2DYnVHT^AhFhBYkR%b_Cg5|5NN8rTlAwXR#RsI5*C1Znkb<6L?e!A$*44BAuRkEk7g&}#(JpW`>aSBl}bh_2&Jd*1LD zP{*k07V?Of1IYUh+DiQY1Ui9r+y^=^=REWd-UWmIj_;u_QO`=qDR`+GFJ&y#ar0Wg zrvFcN`Uh{8buZC*^i3n_sBAaRv04N;_1_ba73uS@kfL4Ve*rv<^YY@*RWz6N}hlGUDc8)Wu^7@3Hwb>hUyS&R2_h0_x~R9TX=f3(wr} zZPZhQdGo`73raCYJTh6FjRQ{KfPvl`$mHb1@KaNU=}d0)tv>(xMc|OE8bR-2)bR}F z282to4V@EShxS(^uMp!a`3#CdPa~dq8s#XKqqxaHydQAkp(P&=tKsKtJUj**qU%RJ zKQ5dg{dN`Z!S_y_Rs5WamDPTZ9M@2cL*v{BC`++D$wI)+X-ucso8(3PLE`}BErD%4 z<3)Q4=-bB$k5T^PD64)?aN+dpf%{rHy<4h$Y&`B!2J=y@-=p0Nfj5l)1bxhZ=r_2P z_&tPJvkNq?LtgSnhWx(VfL~pQXNnDJ{;@{i@5TKOa8LCSKdbL7r0;&GFUGzd1$bAn z8*qwSCLyIf@c$CgT8-x^xL=L?Z|eKKxW7x^595B7zNbD+;hyApC(;k`XN*5{V z@Y|y>_pE$uIbf^LKXW7a#?eONB=z%f=jgRlhDWd6@aZDh?|z}(S;wjM-`Mdvin1^zDVEnSHER@dP> z05N$j?XUPRzsGmr_}$M>FvmLx{6e%b3|!)!^`72i@&1^ki;p6o=JeFJkAUVBJU@c+ z!{ujgVEv}w-4idY+m*l}TlpeVdN=+E_z-9l$rSJKUlPMbYp(;nAZ#JHw|Fhd`yJr@ z4Ez8!yUv`a0-1?V-70G`>5=ZzG?AZT#}8LYxa&@PQZn(YXzxWc5okP$$~?SO>;G z()lk5adrUX{oey_ln9F3UZUqiSMD8{a-n$6Ao%$hGXeYcIM1W6K8$sUa(sJ=Z*4jO zTaEheEnNMaSs^gTE_i_OsLsjQcY*FFPZVd9NU=Y*KYfpQG>zZxrN@i20V$V@rCjz+ zSn%kP3F6Uzej9DZ`D(vHJ7_*eatIWOv+scilEsHe^*k=mTvf?|6XU18~X{4XU zx>5&teG4=Kh?%esi+D@ydYzu}%{f0Gpl5sw!O#2Y88HGs{}#_FvdkgvbG=#TTZjkK+tkwTBTjUAE1I$r#Lxd@ zal!5APNm{TS2&`ZC#?RI6-`pJR$8eT_##AP`ZDl@6^|uSNuw)}3PcPmk%*B9CE7d# z#f@Y<9El(sL_`SK19`I#mJ5JFHL?VRS2@-~sZoM1aZ1DSAWhUAa zje%WzS;<(oy;(VitYj+Dr&J{?6cUuoi47Rkmz+anz|TA*+1-~4#a2a)1X@;=A)LvV z^<^_xSgE*WC8B{|YaTR>*%aX@^f{V}#lbUO^X7HonkRtY9ZRM<2Lho`!d9ZHubTgt z_)g94H@hOSRV2eyA{Loe(_a;z0p_kL6QoCGJQ3?3FrtGGbjuuhkn%3>aOpgtRQ94~7Xv3Itg%eQj-$pIbd`&2-b;;&1f&glKGD z*h0_szPhE0khXf-+I>K6@OkPf^)2)Jn%f&&WFh2xn;L!1ej%D*Y0ci-M0xo;LX^Lw zuW}Jtl{A&vo2@NPO)X3PrnQoEGZ|hH)%^|EA*E0JPp8YM>d%)CO*S+U(n+`y?QBqv z`ai!VArqJGXQL|->&+06mZe0wG#coPSmec&xe-11wv|cU`N8g353JY50VKLIoRO!$ zafz=Utut=*H2UFe3|KsAS-X{#*558YA-Sk&U7?%N#n9FO@*Vo1Nt#{omYQMi=ujdM zj*?*|`blLN3_l>buop2xeX=1nM#PG)NOeOlRFk^e+nWq;ATApV6|oFwGlWv5Xzet=J zU%c6<5%2?U{LUl)b2Aw-p`)v3NS@=dB<{Hzuu-CNv6AmxrqMDQ-2O9ks%YS_jSN&y z0Z5m-Ffd3q96pZ(mw*RNNH#Pxv-+}7n3f*EJ|O5PceaI zCIYJf!w|g;!!y!3%a91epns`dG7)l|BO@W@B)yh~ne1WD2LII3W{|Q_CKQ?am#ni# zd2i__q@!rpBVp89HN%MO2aFI=42ZB;Js|#NdJyYN#rsmE2k3fv!AYqmgrh41k+707 z3?zjiJB~mGH50dBM|F9|uOUcEg)z`mmO*_GA}MqZQ2VBlyCLsy^MeljOn8&gqYT|V z{?v$O9YqEYVxmBed5~UC${zKnVhBML>8t>W(RoH+#y|GLm}5ckDG~3o5;68OcC(Up z4#$v6S-o*|D(MIHCPve~Xb%{R%FeZnSUhOVGGLjhSTLq5NBgt>m=r{5M*?mJ-aBNG z--Tah9;icR0XnNsVbF6I?A(IKNcI>jtf-Zc!I8~W9OHqV@uW!}(K6)#Oo5yUQY(5f zWXbmGai9}U0?sotW>9CY>W*Oqp(4gKSbIwLW10BN|NA8E{4XTl7RS)W=~rD=WAz7V zgjs1B-H;Ood5R^NS>R}BRTz31lz~Jf+#6;q%ZV4z!X?zK?oa{}53GPYg$poNSqROd zG+;%HRpC_k3=9CVcpQdVCfbkz>!6rJR~14Wn+-K6j`p`KHpyihS62nER_Z0D>s06a zn$2d<5}%21!*54}9w=q$rT8jj%(PWa-7HitF{~7_zAql3P#9*l$mcH;w&&KCb^!Ec zgSWK$5zn-%tp7~=2{X%g`{KsdRvPhbt;?5hwtH?hy=@we%2RAb^Ac~%lGY}l-)E<= z5{?sNYABJ+&S|J#vZF-5ne5HlQ4;2ZO-? zs)r}VX~GIx&|WzV(nQiAwZhN|gCfTtkCBq$iU*+O0Fb*tbl4Xs_lh8mBXf$^C=Y+J zkYyl}29nYpS-u%DrjA0$-^K$2kr@1n4ECk~!>dAYQhWFf(sF}lXd!T>Wr*Mc^Brr2 z@{kA`nEuSpzHlTovpbONM*JMbhy^=|#8${TQv}g&#OA1)!kvi#B6HnenVCXk>n%6P zo~E&!!b}ROEa`NmqaBe?Lro~0Bo9OgaADR;BiR?H*#R6sW>c67YhuVZnr>}3mw1+$ zDv&pue9fp^P8mqN+5FbF7JrMkrKw$I8||$=uSwB;yWebI+S=OE=J(ZSiy9ss@R}3> zBLLP}M*D5;e%}(a&C^`pvcz22*yL;V_#5Uy$CKm(GW>kCsj&_g(A;d+EnT?K*QU#( zzie}u%u<4KZ~a;SWwfU-m_cN+%R&K!HRxT8$J!9&T0=N!$U#dE0#t!gdfkYyprd3s#%4gOrSPS!(Ba@B9Vm;7V_u^VtZSy|G z2O^rpOsa^)p;-s3%GV~*4jwr%F`)QdvyXTS6GJ(qq7c}#4{>t734<~9gjv>f$t6P2 zAFg)%T_~==>)kuVYVltNH*UXmXsPVciP1%y& zfgXeaE1;j9Fh5!WKm?eCnZr3~)sW>fJuaVUeZW}Sx~L74P}Rb7(_I=zoDVmkha?-} zK9xiCVDh}=1V5_6K70%~HF2U6YDdGSCr(;bm;lC(50o&(9z?ELuI!G^7q zraIBSNH$)|TMvslQ(tx=BQHLA=4=ZjGMc2_I}`>hS+vFkGe8Kq3Py*pRSg7MdTJg{ zO;-_{9wo99l3*-8AaR4;RQy%ZhpHsJyZ>9_LtyCZi*DB`&Ifam)UH4E0 z^0qG!3|etSyh+5K7+A8id#rOLV(_HB89#wsT1JxVCa}Cr`*b}^oT$q7FgIqmBRmu& zJD6=-rsvNRXQ7<5sX0Q*Xm75E_oJt(kZi8V7>m)eST5t_^dZNuSs%pHep)G=WAjb+ zS-jmp<%_F%)E5H56Um7Tbk^+Z*<)D%trQFg=3#`H84REk$Ci01nF(W}B`kY}Y)AtF zVe&vsKwBmzx4b$G3K>JhBC)d1v1RR6aOSO6r#iK^0Dv{x81^jtsFchl_J znYB08duHBrz1K6-d%dTwrrtaE`nuV0fimpD01b|?lxOR$5i3E84}~ZD1`Cyai72eh z=UL=wY(|6zSD8u-z-q95Ea%6L$ul$rRnVe?l^q{-2i6#KYHAErp~^{AH87}ZMOGj6 zbP3Lr{k2*~lrbQyfu_Urb11GhNv^(~CQ)kfQ7`M~Z!kC^yGzQK2jmZwpUu>hN6+zo zfPxu{8J4uv`ydyrP~PHeGuwQvO}FWib_|oSRP(XZ@JxjPr&k$yKVJM*uE|2=2gaJ#sAyW2%+t!ZI{_8XvvyFgoc4209;lWXC|e zqOoWvJgFKgl%G&mpexY6gC`YOlZnRc>ug$PGDap#lmYbaaX`97-lEyhx z%>)&KocF2W`)Zou>B*ZeO@2*I3FZ7xp=l&qszWr*^>7tD%~R96P>gyzGr0r5c05Qr zlhtNP>R2ShUA?ML?de@VMOZ#18_#09r<(eA>0MWKub0VSLr2X#_uRNzq`zU1;H~b$+9JAdbXQYK9&QN zZQ|7iy&T5^o)mtTU)6k4QUh^j2=iZPfn29WS5!sV8il<+-Bcx4$pO&)N>2k_GX#Nhq&sDTu&GZ8ivX}t_ z%l-20m{cp<^k1~mdk(T;Odqf?YbUA3I(iLfTQJDZBWMwZW)W&lA$*s5bDC`*oI;PG zGM(+Rw+F4zatPo(?kdcd7=QEQ7hG2Kg(LV_?sk;lvMik@ zhxzPn>GVXT$8JxjTanJVBb~kGV#d4J*>=gGl!woe1aLiXYN9AU%R~4bsn$ z?m&758>*Z^x&}YO?}j5EM7kR3q_2Z7q&skco`DZ+Ct;(KIMSVcD2KFWCFmo)@0;Lr zj1Vs%?LgXb5Au;3_ku3cCTv7bA3!Yl+jM$A($h%seWF;75Bh45u0h&>wDtkii!_9E z2p{Ki6F4}%`kE!!byq|30m z@e4>xe~SEZDF1WtiFDah;0Ngo_@D`Uxrt?a(&@cOyZ;C3sSsih(r%>N@qr-rixNAK zK8y5mr2CN`M0y74XGo0;(4Kz=Ur4)=b|c-6bPdw|NOvIh|4;P8c*y64bb1-mlStPf z-TSYQBhsnA0e=??F%7AKbQ#hHq=PR459v;%JCN=|x)Ry%>1w16*pOmB(%OGdr>EiL(Te?O7t+!l^nRqr ze+T&?J@yvLU91cPWaL$FSDPsAzoOu>^2zd<;FIt-xHO%fgpUmQs>Kcc4c&r1hkXdo zxCL8Fx0QItUS79u^x&xV#T$y6$_~8jdG!^~@81S74>}$fm5JbQ4Q#2N=y}E+EZjO{ z+qHFLFZZmQK6p*t`e|m_D;|`z7sJPRkU##m!1kb`nTzP{!QX>`4-+)YhlhBmCuTMl z`paG;l38YE0QEHeq1*zb_HtBYF*87UxTyZA;I|l?P}u7y_LjvYP~aQb1!5x{G3 z5Be2b3%3<`$6mfjHjH4nsQlf)JDyXX;Ddm_1vpG0a}oS;!1w3i*8{!}@V$T+BSn2D zi#+4j6mPBD=0T@;)-4$P((TkCR6AwuFY=tX{N)3lw|~#iRLOGum7_oJMmuZaYd|Ny zb=s)z#pvrm4&!Q7WYL<#Ety0-cEpB>!!~zxy=&Gu8jCTg$eMK|AW# zl@6AyAH8AJ#^S;SxxKQy>@{zmYNU-;7Q+Vz;k%JSj%y0Gj^B2H6lBHV`HMD{Z633J z+=j6m%ZJW;sB}xosD{xg-GJ9$^Zf1&&s%SLMmMm6By?k5d)@QK?>uk5MOmbI>=#I{ z??XKX#xSamFF$U!08kG2{iyCfpP^g>%K2&1=NY%RVC%$f7o(r+ zHjW>KYNp58w@n2pKVp!2 z#26%N&}IL(uuKbpz?644@H&7uL;!8Cvc0fZAF-_Q+o&hC(vZ^H#3rQvgU(LS*{l2t z>%Z5g|F>!hWE@v8zZ;Poh*Uxz#;SCB2J{4cb!;u)b{_h*e>&QR~VE$80LzT(rJ) zLrJqHs)V4KEo3!R8qc~;J|+UXr|(Lq@mm?9ySiX&#kTXMyvv5hY%1McvS{77!LjSh zH=Os-=q;nZ>Yxsz(iPmEYf-w2!oPFLKxK$k@pl~ccO$0TMF8C|XxCS{UmD7oTZKOf z1KV-nkMyT4Wtq+)TDU6l*982j-@^DIA?hEx4*|Xa@a+V$jniarQm?GU3@udM&l50MM1!vOGn?f}qQ_FA2zog)B}cj9j< zoXUI=9uA4Y`@%jlHF4|Z*bm6A)n=g2%qG(Zp-6Oo|q4*pZm8aQ!@p{C- z%06ZLq@P6l))y8^+sw4D&KU$!`RyoAbA&xgKFUu?0l_aVA;&}xYg0wxvJ4AvC~Hym zA3^#1F}K)B4B7ghIFrHBj zlf0XZ&6Bx*RwnRIyQx>rb}GLj(K zr%+yCtzr!lZZG(Sb|CcUVZOfXWhHPgtQPu#zsG591LgJ;AnV8EI8jfIY^k%I9EoUM zZm_jWkla55z1Kl6WTPkJuj1C1>$LDm?o%t!f4_9<8I_+8xB$FHmAB1<7U^cFI4=ae zQsB{i8GQ5j&|O@IcwbDsTO~Jl-rJSGn71d{!mAA z2bwqJ#G5Fg^!P!P8`|sC1M)Z90e=wi{WR>YSTS_|rg59cK2+{qS2=j$`tchs=*?2WR6aB5_y+n-xerGNsd1nl z%Ka?XM(?JEWXA#cv%!L|vUO12U$6gfB|xf9*EH=s`MD#~v#vl6 z!hrDF8<`?qtsg3a6k^gv?_21CNytk-3ccJerd{EL_iIME9XmCDn9|9M>*G{|#h=pY z7~N}haaKRW#s8OHJF8T6e@*`?2a>>lwI0N^y({U%KhRDpwu|l029mccszm&15vvj1 z^F`1nk{zP&$71YLBJjUO`0|3#mV(5O3rdfk9u^{2A`*)WN0le^2Fg2ADupR;`kG%j(+^d zqo169;@DBteG1en-+iLDL_{k^>4_unzx)2tBTsztzNCB6iI0vx@!_GwYykoynxA#*c64Cxf}IbUqhh zwBhm7o>L?W1&^Cfcu{72b;64Uk9$t|sLc52gpbbn6(_tz?4NFjsQV%)@y?&;gO3pl zUdjhA6VqPF2R|EOO78?_!o$d zQzI3*NMItAa}icCz8%W}3rzWOjg*_BFtS|=o}Zt5^zj+OIqQ8Zr@s{ak^MzsMS-m! zJ;XLHg&32Sj*HpRfmhb#$M?Iym%G42F7QDY_!bxV4j1@N7x=E(`T0L~Lw>k%Q-1jUF7V=c`SI7d zz^8t}iLd&7r2RGktw3bqt-6@PuNV<;FuWqiewRr)6@uX$@3X$$zcU{{Wnz1dzI6ia zT>3UYr(LZ7b8pT^zf?@y<%Bc-el|Fr&3w+y!B_Ay@!9K6IuSgci_Zf&^ts;UUMC%f zAFIy~U%oIu{Ny4hocXVL#tHAkBl#JIU#YVhzat0#hZ>*ZJP&33)j9YK-~UTzy+74- z7@kY#WDfpbjn8mJH|q}%yy2uzkLQwqoD|!3v7Gm{*nqfYcquEs&Sv*PWYejcrN*@zTJsG3Il2(#!ZH^ z88H8~%boZP-{Jz_?*dQVk)O_X7xH|E6u0`N&s7%tzL1BKf)m=j|&{H>KvI?T^cJsL*$Tc7sGd~u>o<* z{7n4UeDE?HFz$p0K8K&rT};-{Jz_;Q~M60_i{P5w;`QbGW<%i?P zYL1KB6>@=hyTFHB;0Lxk$Y=b(Nf-EO7x=Vo`RUZS!25IHtcS+GIq7VLKFIM@!wsFy z_zQCI6}(KG&e7YSevaPWox=~ydB_F6-35OCkDdH8oz$=s&itRr%YTIsIrC_4*YJBIU;~Jmg@*O5n7{B#VCqBcM=fJsL)Al>@6@276#;2&a09$3uqFZs<8C_JU%96#(N zvbbK5<+A;vphCO~c!7W&>G+WQ>#(N7agO}v4~33vIM4g!H{F1j;6)nAhvQiJjV9oi zYB@^9Yc!nW6Z!2N;L8BdCkOiWp6GMjBENkD<~itj1@%C|6+d8x80AxP14HJnRuJ`Qdr)gV1}r{*Q+9Jfd5H#Y89o$(iHu zS2X?s{Tjfjz3i9dw-KP#tl=E*$!{3}PiZ*Y3-kFc4d?Y$Zr6hv&USRS=5t8H zIZl(`{2}id!0}6@5pw%Sz)Am)ozM-^bY7PDBir@5rqAQT5siOV(#fvF$l}N=!h2kj z1CJNSHU131rQT|L>Co^c8lTsT1~ojQ;T)gu(d>R*!+Bjo{ssVLzN6thk7IjR{%5q< zU!@7_WCQTWgHK+^V>^0M!kxJE^sL6`cxJyw*{|WezB)#;1KNfNFbZ%eMy z_#B6K=)Acu_zPU%i!>cxe;(F!?$mHzuh_2Pt2CU)efez?^1iF#yuKuVTLSoxBwQD^ zC7WE}J6zy9UEsfTfj{p8|6eZfS0%he@cRP!8%OYaOv8D-TK9M-euoRZQ^HFG&llK#_GviJUnXh(*SpZ6-)fK?c;3h3 z#m`;v_qf1+t?BUmi23=03;r<|_(>P|A6?*|N_dIj^(f|l{FwZ9I?)Awm4ufFp6AZj za{H2o^LvU1HT)JAI?FXaucOM}BB4yo1%IUr{F^TDZ)^HIe{A6Xb-~~20{`zW@W)-? zyItV)8uF)dAi7Cjp8$S=zPBgzJN0~Y{_FxT!G~U?x0QOJUZ9B?5^krg z?rASb!sm5J`I{SLd0p`7_wt0l-=oU2KGW_D`S_&GdI+D_0XQ!Go(ujDUEu399bP|? z-^POl`YlbqdLMOx@6>d7y`@}_o4?g?p4YQ~IOamOvo*%;r!l{_3%d;&g+o!wmz^{n@YaTP0jS*pgdZ;CE;`{64N;ml<%u{~L|Z>$Gf- z!!G!L?*f0)1^$c+{MQnWaeujDkp0zb8qV*XX?`fLU?SCNVM|0Dn}Gf4r}m4fA<>Di zrEaLj)=0G74xm<)ZnAqy0%YI6EJ@F?6{g&)*raXXlC%$L#I&%{5O$uDCrkh*a~gta zwzm2F{@cujOPjG5R7Y%eFzuo1y->@%GqPFoq7@j$AZ_WlcZ(FT7ci;>jvg`5@WMV8#;EvPr- z;!|1Fc_PBBzYQC(H+ls&Ptsc+IdnuaVVMvNK9{pBY?3cGG7=^}cQdh1wrR?(YqLi{ z*cFU7$denFOT3JPbryPy2qkGVXOJ?@P%@@DRQ(hWglG>~w=+Ta*<5QYM6+5es;AoRlNZaa0FYCAay)4rr#@Inz|9t3*(*JZ8nT^-e}N%#0T3 z{k_yTkdg=8Qn?Q!KEA{r$Z{)B*&A~EW}CjDNjTCa6p{M_3Q`QMhz>ckbRizvaM_$A zOiO+%X)bDNsq-|MEejX6`~0TgQ`h7}=R@j}6B1p9QEazmTG(n9!c1Yq_^iV^2Wqyx zsR3-X=TH*aKAb>A9i&VXJ!e0(3_xu9sCGt_Cnt&a2G49IBIrr>U=->Ed_2mE7RPs| z4now`YI95+uOeWL!T5kALv94xgYQhcLaN)8@^s!%3mK5hhC$G2WQ47}v6&o5!d1)S z*a8syifgw`osy6{!-;S#n2NwV!rXZ~J10ZhN6Mx-a@^0paG+&7#de+#=^-6hCHLKh z&IVVKFQ)#sbDzQy6$$c_bSlUIT0rsuCa-9u8Y3V~AB~NtVo`z3 znCa9MXrA2b)4>=SG|-p{JXq0{T2^pT(l@IEJU~!xwnt)<#%J&OjLtcl#NA9=SWB82 zZ><{GZS`Z%#yBxZ9c-F7l-$IZ!#Ex0E=#0hv}1NcsMAx#%49T-o=tTT1KESagwhj7 zqvYv%4v20hjwdtqwyrc_J6nK#Q*jJN#3b4@qKgQ&>g*xOqllC{Ss7U@k)Um3i4($< z_kl z>@Q0{gwMR;#@JN&IHE2L3MtX0#YJb%3ED1JmIKQmE>Bc2^@$1?C9$0s6|s6NFH_NzA%HlcILK-P?;vM05+ znAAD!FJ-k%pY{yRoPPib@L_*W0c1RZ&CxkANCUAGGYyd;vooB^HAKgb(9WWWhU};R zQ4=z@=;#LKnU8De(uQO2s&G>In#^fMWZR^X2nZ3xXOArmq+;Q07tujJW*|;S4Te`j zbyuj+Um3jf{I86jGdorw5gCx<7ik&x{S~r42kRuBydy0;6(=!nA@z2*GGb_z_SHUZ z^y=ptXfWIWj#9}lRI;d5&N0csn2vH#y$ngDreSwq(G`qh@Pu+=cU>ta`;bKTo*j|o z0HTfAPFuNWeH4|7jC7PmEg+Xmh6_g%R9*(6pzuK+zJ)m$9ogq>6Pp|S=U;qX1`2pp zg?D-CTBFxRI1TA}CFk?H15Y=npcs})GUfSqDx4m~Je4lIewBY*p5KREqv1@Se=o`@ z|2~vx(52Z^5BQfpdnaDFJpb;6)1A5i=jYb{1zo-lDP8>gQBGImy#!rU9YU2%jdQ?xBl;-EYalh{QDw9mv2R${mP}c2AS0NT%Nx-iReqqQ2jLw&?%R%%7JTf$TE~g?-;mlJL-3J{lBmSanI!$OwTz@lv#5> kQ5YRlReBMUPw~h6v;E?=Mc(>{E><<2(EdwN8Cn1T1*XMNivR!s literal 0 HcmV?d00001 diff --git a/android/dist/x86/include/libwebsockets.h b/android/dist/x86/include/libwebsockets.h new file mode 100644 index 0000000000..0bb67f57bc --- /dev/null +++ b/android/dist/x86/include/libwebsockets.h @@ -0,0 +1,1207 @@ +/* + * libwebsockets - small server side websockets and web server implementation + * + * Copyright (C) 2010-2013 Andy Green + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation: + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C +#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C + +#ifdef __cplusplus +extern "C" { +#include +#endif + +#ifdef CMAKE_BUILD +#include "lws_config.h" +#endif + +#if defined(WIN32) || defined(_WIN32) + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#include + +#define strcasecmp stricmp +#define getdtablesize() 30000 + +#define LWS_VISIBLE + +#ifdef LWS_DLL +#ifdef LWS_INTERNAL +#define LWS_EXTERN extern __declspec(dllexport) +#else +#define LWS_EXTERN extern __declspec(dllimport) +#endif +#else +#define LWS_EXTERN +#endif + +#else // NOT WIN32 + +#include +#include + +#if defined(__GNUC__) +#define LWS_VISIBLE __attribute__((visibility("default"))) +#else +#define LWS_VISIBLE +#endif + +#endif + +#ifdef LWS_USE_LIBEV +#include +#endif /* LWS_USE_LIBEV */ + +#include + +#ifndef LWS_EXTERN +#define LWS_EXTERN extern +#endif + +#ifdef _WIN32 +#define random rand +#else +#include +#include +#endif + +#define CONTEXT_PORT_NO_LISTEN -1 +#define MAX_MUX_RECURSION 2 + +enum lws_log_levels { + LLL_ERR = 1 << 0, + LLL_WARN = 1 << 1, + LLL_NOTICE = 1 << 2, + LLL_INFO = 1 << 3, + LLL_DEBUG = 1 << 4, + LLL_PARSER = 1 << 5, + LLL_HEADER = 1 << 6, + LLL_EXT = 1 << 7, + LLL_CLIENT = 1 << 8, + LLL_LATENCY = 1 << 9, + + LLL_COUNT = 10 /* set to count of valid flags */ +}; + +LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); + +/* notice, warn and log are always compiled in */ +#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) +#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__) +#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__) +/* + * weaker logging can be deselected at configure time using --disable-debug + * that gets rid of the overhead of checking while keeping _warn and _err + * active + */ +#ifdef _DEBUG + +#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__) +#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__) +#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__) +#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__) +#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__) +#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__) +#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__) +LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); + +#else /* no debug */ + +#define lwsl_info(...) +#define lwsl_debug(...) +#define lwsl_parser(...) +#define lwsl_header(...) +#define lwsl_ext(...) +#define lwsl_client(...) +#define lwsl_latency(...) +#define lwsl_hexdump(a, b) + +#endif + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +/* api change list for user code to test against */ + +#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG + + +enum libwebsocket_context_options { + LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2, + LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = 4, + LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT = 8, + LWS_SERVER_OPTION_LIBEV = 16, + LWS_SERVER_OPTION_DISABLE_IPV6 = 32, + LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = 64, +}; + +enum libwebsocket_callback_reasons { + LWS_CALLBACK_ESTABLISHED, + LWS_CALLBACK_CLIENT_CONNECTION_ERROR, + LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, + LWS_CALLBACK_CLIENT_ESTABLISHED, + LWS_CALLBACK_CLOSED, + LWS_CALLBACK_CLOSED_HTTP, + LWS_CALLBACK_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE, + LWS_CALLBACK_CLIENT_RECEIVE_PONG, + LWS_CALLBACK_CLIENT_WRITEABLE, + LWS_CALLBACK_SERVER_WRITEABLE, + LWS_CALLBACK_HTTP, + LWS_CALLBACK_HTTP_BODY, + LWS_CALLBACK_HTTP_BODY_COMPLETION, + LWS_CALLBACK_HTTP_FILE_COMPLETION, + LWS_CALLBACK_HTTP_WRITEABLE, + LWS_CALLBACK_FILTER_NETWORK_CONNECTION, + LWS_CALLBACK_FILTER_HTTP_CONNECTION, + LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, + LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS, + LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION, + LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER, + LWS_CALLBACK_CONFIRM_EXTENSION_OKAY, + LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED, + LWS_CALLBACK_PROTOCOL_INIT, + LWS_CALLBACK_PROTOCOL_DESTROY, + LWS_CALLBACK_WSI_CREATE, /* always protocol[0] */ + LWS_CALLBACK_WSI_DESTROY, /* always protocol[0] */ + LWS_CALLBACK_GET_THREAD_ID, + + /* external poll() management support */ + LWS_CALLBACK_ADD_POLL_FD, + LWS_CALLBACK_DEL_POLL_FD, + LWS_CALLBACK_CHANGE_MODE_POLL_FD, + LWS_CALLBACK_LOCK_POLL, + LWS_CALLBACK_UNLOCK_POLL, + + LWS_CALLBACK_USER = 1000, /* user code can use any including / above */ +}; + +// argument structure for all external poll related calls +// passed in via 'in' +struct libwebsocket_pollargs { + int fd; // applicable file descriptor + int events; // the new event mask + int prev_events; // the previous event mask +}; + +#ifdef _WIN32 +struct libwebsocket_pollfd { + SOCKET fd; + SHORT events; + SHORT revents; +}; +#else +#define libwebsocket_pollfd pollfd +#endif + +enum libwebsocket_extension_callback_reasons { + LWS_EXT_CALLBACK_SERVER_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_CONSTRUCT, + LWS_EXT_CALLBACK_SERVER_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONTEXT_DESTRUCT, + LWS_EXT_CALLBACK_CONSTRUCT, + LWS_EXT_CALLBACK_CLIENT_CONSTRUCT, + LWS_EXT_CALLBACK_CHECK_OK_TO_REALLY_CLOSE, + LWS_EXT_CALLBACK_CHECK_OK_TO_PROPOSE_EXTENSION, + LWS_EXT_CALLBACK_DESTROY, + LWS_EXT_CALLBACK_DESTROY_ANY_WSI_CLOSING, + LWS_EXT_CALLBACK_ANY_WSI_ESTABLISHED, + LWS_EXT_CALLBACK_PACKET_RX_PREPARSE, + LWS_EXT_CALLBACK_PACKET_TX_PRESEND, + LWS_EXT_CALLBACK_PACKET_TX_DO_SEND, + LWS_EXT_CALLBACK_HANDSHAKE_REPLY_TX, + LWS_EXT_CALLBACK_FLUSH_PENDING_TX, + LWS_EXT_CALLBACK_EXTENDED_PAYLOAD_RX, + LWS_EXT_CALLBACK_CAN_PROXY_CLIENT_CONNECTION, + LWS_EXT_CALLBACK_1HZ, + LWS_EXT_CALLBACK_REQUEST_ON_WRITEABLE, + LWS_EXT_CALLBACK_IS_WRITEABLE, + LWS_EXT_CALLBACK_PAYLOAD_TX, + LWS_EXT_CALLBACK_PAYLOAD_RX, +}; + +enum libwebsocket_write_protocol { + LWS_WRITE_TEXT, + LWS_WRITE_BINARY, + LWS_WRITE_CONTINUATION, + LWS_WRITE_HTTP, + + /* special 04+ opcodes */ + + LWS_WRITE_CLOSE, + LWS_WRITE_PING, + LWS_WRITE_PONG, + + /* flags */ + + LWS_WRITE_NO_FIN = 0x40, + /* + * client packet payload goes out on wire unmunged + * only useful for security tests since normal servers cannot + * decode the content if used + */ + LWS_WRITE_CLIENT_IGNORE_XOR_MASK = 0x80 +}; + +/* + * you need these to look at headers that have been parsed if using the + * LWS_CALLBACK_FILTER_CONNECTION callback. If a header from the enum + * list below is absent, .token = NULL and token_len = 0. Otherwise .token + * points to .token_len chars containing that header content. + */ + +struct lws_tokens { + char *token; + int token_len; +}; + +enum lws_token_indexes { + WSI_TOKEN_GET_URI, + WSI_TOKEN_POST_URI, + WSI_TOKEN_OPTIONS_URI, + WSI_TOKEN_HOST, + WSI_TOKEN_CONNECTION, + WSI_TOKEN_KEY1, + WSI_TOKEN_KEY2, + WSI_TOKEN_PROTOCOL, + WSI_TOKEN_UPGRADE, + WSI_TOKEN_ORIGIN, + WSI_TOKEN_DRAFT, + WSI_TOKEN_CHALLENGE, + + /* new for 04 */ + WSI_TOKEN_KEY, + WSI_TOKEN_VERSION, + WSI_TOKEN_SWORIGIN, + + /* new for 05 */ + WSI_TOKEN_EXTENSIONS, + + /* client receives these */ + WSI_TOKEN_ACCEPT, + WSI_TOKEN_NONCE, + WSI_TOKEN_HTTP, + + /* http-related */ + WSI_TOKEN_HTTP_ACCEPT, + WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, + WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, + WSI_TOKEN_HTTP_IF_NONE_MATCH, + WSI_TOKEN_HTTP_ACCEPT_ENCODING, + WSI_TOKEN_HTTP_ACCEPT_LANGUAGE, + WSI_TOKEN_HTTP_PRAGMA, + WSI_TOKEN_HTTP_CACHE_CONTROL, + WSI_TOKEN_HTTP_AUTHORIZATION, + WSI_TOKEN_HTTP_COOKIE, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + WSI_TOKEN_HTTP_CONTENT_TYPE, + WSI_TOKEN_HTTP_DATE, + WSI_TOKEN_HTTP_RANGE, + WSI_TOKEN_HTTP_REFERER, + WSI_TOKEN_HTTP_URI_ARGS, + + + WSI_TOKEN_MUXURL, + + /* use token storage to stash these */ + + _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, + _WSI_TOKEN_CLIENT_PEER_ADDRESS, + _WSI_TOKEN_CLIENT_URI, + _WSI_TOKEN_CLIENT_HOST, + _WSI_TOKEN_CLIENT_ORIGIN, + + /* always last real token index*/ + WSI_TOKEN_COUNT, + /* parser state additions */ + WSI_TOKEN_NAME_PART, + WSI_TOKEN_SKIPPING, + WSI_TOKEN_SKIPPING_SAW_CR, + WSI_PARSING_COMPLETE, + WSI_INIT_TOKEN_MUXURL, +}; + +struct lws_token_limits { + unsigned short token_limit[WSI_TOKEN_COUNT]; +}; + +/* + * From RFC 6455 + 1000 + + 1000 indicates a normal closure, meaning that the purpose for + which the connection was established has been fulfilled. + + 1001 + + 1001 indicates that an endpoint is "going away", such as a server + going down or a browser having navigated away from a page. + + 1002 + + 1002 indicates that an endpoint is terminating the connection due + to a protocol error. + + 1003 + + 1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g., an + endpoint that understands only text data MAY send this if it + receives a binary message). + + 1004 + + Reserved. The specific meaning might be defined in the future. + + 1005 + + 1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that no status + code was actually present. + + 1006 + + 1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed abnormally, e.g., without sending or + receiving a Close control frame. + + 1007 + + 1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). + + 1008 + + 1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. This + is a generic status code that can be returned when there is no + other more suitable status code (e.g., 1003 or 1009) or if there + is a need to hide specific details about the policy. + + 1009 + + 1009 indicates that an endpoint is terminating the connection + because it has received a message that is too big for it to + process. + + 1010 + + 1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake. The list of extensions that + are needed SHOULD appear in the /reason/ part of the Close frame. + Note that this status code is not used by the server, because it + can fail the WebSocket handshake instead. + + 1011 + + 1011 indicates that a server is terminating the connection because + it encountered an unexpected condition that prevented it from + fulfilling the request. + + 1015 + + 1015 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed due to a failure to perform a TLS handshake + (e.g., the server certificate can't be verified). +*/ + +enum lws_close_status { + LWS_CLOSE_STATUS_NOSTATUS = 0, + LWS_CLOSE_STATUS_NORMAL = 1000, + LWS_CLOSE_STATUS_GOINGAWAY = 1001, + LWS_CLOSE_STATUS_PROTOCOL_ERR = 1002, + LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE = 1003, + LWS_CLOSE_STATUS_RESERVED = 1004, + LWS_CLOSE_STATUS_NO_STATUS = 1005, + LWS_CLOSE_STATUS_ABNORMAL_CLOSE = 1006, + LWS_CLOSE_STATUS_INVALID_PAYLOAD = 1007, + LWS_CLOSE_STATUS_POLICY_VIOLATION = 1008, + LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE = 1009, + LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010, + LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, + LWS_CLOSE_STATUS_TLS_FAILURE = 1015, +}; + +enum http_status { + HTTP_STATUS_OK = 200, + HTTP_STATUS_NO_CONTENT = 204, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_UNAUTHORIZED, + HTTP_STATUS_PAYMENT_REQUIRED, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_METHOD_NOT_ALLOWED, + HTTP_STATUS_NOT_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQUIRED, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_LENGTH_REQUIRED, + HTTP_STATUS_PRECONDITION_FAILED, + HTTP_STATUS_REQ_ENTITY_TOO_LARGE, + HTTP_STATUS_REQ_URI_TOO_LONG, + HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, + HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, + HTTP_STATUS_EXPECTATION_FAILED, + + HTTP_STATUS_INTERNAL_SERVER_ERROR = 500, + HTTP_STATUS_NOT_IMPLEMENTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAILABLE, + HTTP_STATUS_GATEWAY_TIMEOUT, + HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, +}; + +struct libwebsocket; +struct libwebsocket_context; +/* needed even with extensions disabled for create context */ +struct libwebsocket_extension; + +/** + * callback_function() - User server actions + * @context: Websockets context + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * This callback is the way the user controls what is served. All the + * protocol detail is hidden and handled by the library. + * + * For each connection / session there is user data allocated that is + * pointed to by "user". You set the size of this user data area when + * the library is initialized with libwebsocket_create_server. + * + * You get an opportunity to initialize user data when called back with + * LWS_CALLBACK_ESTABLISHED reason. + * + * LWS_CALLBACK_ESTABLISHED: after the server completes a handshake with + * an incoming client + * + * LWS_CALLBACK_CLIENT_CONNECTION_ERROR: the request client connection has + * been unable to complete a handshake with the remote server + * + * LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH: this is the last chance for the + * client user code to examine the http headers + * and decide to reject the connection. If the + * content in the headers is interesting to the + * client (url, etc) it needs to copy it out at + * this point since it will be destroyed before + * the CLIENT_ESTABLISHED call + * + * LWS_CALLBACK_CLIENT_ESTABLISHED: after your client connection completed + * a handshake with the remote server + * + * LWS_CALLBACK_CLOSED: when the websocket session ends + * + * LWS_CALLBACK_CLOSED_HTTP: when a HTTP (non-websocket) session ends + * + * LWS_CALLBACK_RECEIVE: data has appeared for this server endpoint from a + * remote client, it can be found at *in and is + * len bytes long + * + * LWS_CALLBACK_CLIENT_RECEIVE_PONG: if you elected to see PONG packets, + * they appear with this callback reason. PONG + * packets only exist in 04+ protocol + * + * LWS_CALLBACK_CLIENT_RECEIVE: data has appeared from the server for the + * client connection, it can be found at *in and + * is len bytes long + * + * LWS_CALLBACK_HTTP: an http request has come from a client that is not + * asking to upgrade the connection to a websocket + * one. This is a chance to serve http content, + * for example, to send a script to the client + * which will then open the websockets connection. + * @in points to the URI path requested and + * libwebsockets_serve_http_file() makes it very + * simple to send back a file to the client. + * Normally after sending the file you are done + * with the http connection, since the rest of the + * activity will come by websockets from the script + * that was delivered by http, so you will want to + * return 1; to close and free up the connection. + * That's important because it uses a slot in the + * total number of client connections allowed set + * by MAX_CLIENTS. + * + * LWS_CALLBACK_HTTP_BODY: the next @len bytes data from the http + * request body HTTP connection is now available in @in. + * + * LWS_CALLBACK_HTTP_BODY_COMPLETION: the expected amount of http request + * body has been delivered + * + * LWS_CALLBACK_HTTP_WRITEABLE: you can write more down the http protocol + * link now. + * + * LWS_CALLBACK_HTTP_FILE_COMPLETION: a file requested to be send down + * http link has completed. + * + * LWS_CALLBACK_CLIENT_WRITEABLE: + * LWS_CALLBACK_SERVER_WRITEABLE: If you call + * libwebsocket_callback_on_writable() on a connection, you will + * get one of these callbacks coming when the connection socket + * is able to accept another write packet without blocking. + * If it already was able to take another packet without blocking, + * you'll get this callback at the next call to the service loop + * function. Notice that CLIENTs get LWS_CALLBACK_CLIENT_WRITEABLE + * and servers get LWS_CALLBACK_SERVER_WRITEABLE. + * + * LWS_CALLBACK_FILTER_NETWORK_CONNECTION: called when a client connects to + * the server at network level; the connection is accepted but then + * passed to this callback to decide whether to hang up immediately + * or not, based on the client IP. @in contains the connection + * socket's descriptor. Since the client connection information is + * not available yet, @wsi still pointing to the main server socket. + * Return non-zero to terminate the connection before sending or + * receiving anything. Because this happens immediately after the + * network connection from the client, there's no websocket protocol + * selected yet so this callback is issued only to protocol 0. + * + * LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED: A new client just had + * been connected, accepted, and instantiated into the pool. This + * callback allows setting any relevant property to it. Because this + * happens immediately after the instantiation of a new client, + * there's no websocket protocol selected yet so this callback is + * issued only to protocol 0. Only @wsi is defined, pointing to the + * new client, and the return value is ignored. + * + * LWS_CALLBACK_FILTER_HTTP_CONNECTION: called when the request has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the URI, eg, "/" + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the http + * connection to proceed or to kill the connection. + * + * LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION: called when the handshake has + * been received and parsed from the client, but the response is + * not sent yet. Return non-zero to disallow the connection. + * @user is a pointer to the connection user space allocation, + * @in is the requested protocol name + * In your handler you can use the public APIs + * lws_hdr_total_length() / lws_hdr_copy() to access all of the + * headers using the header enums lws_token_indexes from + * libwebsockets.h to check for and read the supported header + * presence and content before deciding to allow the handshake + * to proceed or to kill the connection. + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to perform extra SSL_CTX_load_verify_locations() or similar + * calls to direct OpenSSL where to find certificates the client + * can use to confirm the remote server identity. @user is the + * OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS: if configured for + * including OpenSSL support, this callback allows your user code + * to load extra certifcates into the server which allow it to + * verify the validity of certificates returned by clients. @user + * is the server's OpenSSL SSL_CTX* + * + * LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION: if the + * libwebsockets context was created with the option + * LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, then this + * callback is generated during OpenSSL verification of the cert + * sent from the client. It is sent to protocol[0] callback as + * no protocol has been negotiated on the connection yet. + * Notice that the libwebsockets context and wsi are both NULL + * during this callback. See + * http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html + * to understand more detail about the OpenSSL callback that + * generates this libwebsockets callback and the meanings of the + * arguments passed. In this callback, @user is the x509_ctx, + * @in is the ssl pointer and @len is preverify_ok + * Notice that this callback maintains libwebsocket return + * conventions, return 0 to mean the cert is OK or 1 to fail it. + * This also means that if you don't handle this callback then + * the default callback action of returning 0 allows the client + * certificates. + * + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER: this callback happens + * when a client handshake is being compiled. @user is NULL, + * @in is a char **, it's pointing to a char * which holds the + * next location in the header buffer where you can add + * headers, and @len is the remaining space in the header buffer, + * which is typically some hundreds of bytes. So, to add a canned + * cookie, your handler code might look similar to: + * + * char **p = (char **)in; + * + * if (len < 100) + * return 1; + * + * *p += sprintf(*p, "Cookie: a=b\x0d\x0a"); + * + * return 0; + * + * Notice if you add anything, you just have to take care about + * the CRLF on the line you added. Obviously this callback is + * optional, if you don't handle it everything is fine. + * + * Notice the callback is coming to protocols[0] all the time, + * because there is no specific protocol handshook yet. + * + * LWS_CALLBACK_CONFIRM_EXTENSION_OKAY: When the server handshake code + * sees that it does support a requested extension, before + * accepting the extension by additing to the list sent back to + * the client it gives this callback just to check that it's okay + * to use that extension. It calls back to the requested protocol + * and with @in being the extension name, @len is 0 and @user is + * valid. Note though at this time the ESTABLISHED callback hasn't + * happened yet so if you initialize @user content there, @user + * content during this callback might not be useful for anything. + * Notice this callback comes to protocols[0]. + * + * LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED: When a client + * connection is being prepared to start a handshake to a server, + * each supported extension is checked with protocols[0] callback + * with this reason, giving the user code a chance to suppress the + * claim to support that extension by returning non-zero. If + * unhandled, by default 0 will be returned and the extension + * support included in the header to the server. Notice this + * callback comes to protocols[0]. + * + * LWS_CALLBACK_PROTOCOL_INIT: One-time call per protocol so it can + * do initial setup / allocations etc + * + * LWS_CALLBACK_PROTOCOL_DESTROY: One-time call per protocol indicating + * this protocol won't get used at all after this callback, the + * context is getting destroyed. Take the opportunity to + * deallocate everything that was allocated by the protocol. + * + * LWS_CALLBACK_WSI_CREATE: outermost (earliest) wsi create notification + * + * LWS_CALLBACK_WSI_DESTROY: outermost (latest) wsi destroy notification + * + * The next five reasons are optional and only need taking care of if you + * will be integrating libwebsockets sockets into an external polling + * array. + * + * For these calls, @in points to a struct libwebsocket_pollargs that + * contains @fd, @events and @prev_events members + * + * LWS_CALLBACK_ADD_POLL_FD: libwebsocket deals with its poll() loop + * internally, but in the case you are integrating with another + * server you will need to have libwebsocket sockets share a + * polling array with the other server. This and the other + * POLL_FD related callbacks let you put your specialized + * poll array interface code in the callback for protocol 0, the + * first protocol you support, usually the HTTP protocol in the + * serving case. + * This callback happens when a socket needs to be + * added to the polling loop: @in points to a struct + * libwebsocket_pollargs; the @fd member of the struct is the file + * descriptor, and @events contains the active events. + * + * If you are using the internal polling loop (the "service" + * callback), you can just ignore these callbacks. + * + * LWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor + * needs to be removed from an external polling array. @in is + * again the struct libwebsocket_pollargs containing the @fd member + * to be removed. If you are using the internal polling + * loop, you can just ignore it. + * + * LWS_CALLBACK_CHANGE_MODE_POLL_FD: This callback happens when + * libwebsockets wants to modify the events for a connectiion. + * @in is the struct libwebsocket_pollargs with the @fd to change. + * The new event mask is in @events member and the old mask is in + * the @prev_events member. + * If you are using the internal polling loop, you can just ignore + * it. + * + * LWS_CALLBACK_LOCK_POLL: + * LWS_CALLBACK_UNLOCK_POLL: These allow the external poll changes driven + * by libwebsockets to participate in an external thread locking + * scheme around the changes, so the whole thing is threadsafe. + */ +LWS_VISIBLE LWS_EXTERN int callback(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +typedef int (callback_function)(struct libwebsocket_context *context, + struct libwebsocket *wsi, + enum libwebsocket_callback_reasons reason, void *user, + void *in, size_t len); + +#ifndef LWS_NO_EXTENSIONS +/** + * extension_callback_function() - Hooks to allow extensions to operate + * @context: Websockets context + * @ext: This extension + * @wsi: Opaque websocket instance pointer + * @reason: The reason for the call + * @user: Pointer to per-session user data allocated by library + * @in: Pointer used for some callback reasons + * @len: Length set for some callback reasons + * + * Each extension that is active on a particular connection receives + * callbacks during the connection lifetime to allow the extension to + * operate on websocket data and manage itself. + * + * Libwebsockets takes care of allocating and freeing "user" memory for + * each active extension on each connection. That is what is pointed to + * by the @user parameter. + * + * LWS_EXT_CALLBACK_CONSTRUCT: called when the server has decided to + * select this extension from the list provided by the client, + * just before the server will send back the handshake accepting + * the connection with this extension active. This gives the + * extension a chance to initialize its connection context found + * in @user. + * + * LWS_EXT_CALLBACK_CLIENT_CONSTRUCT: same as LWS_EXT_CALLBACK_CONSTRUCT + * but called when client is instantiating this extension. Some + * extensions will work the same on client and server side and then + * you can just merge handlers for both CONSTRUCTS. + * + * LWS_EXT_CALLBACK_DESTROY: called when the connection the extension was + * being used on is about to be closed and deallocated. It's the + * last chance for the extension to deallocate anything it has + * allocated in the user data (pointed to by @user) before the + * user data is deleted. This same callback is used whether you + * are in client or server instantiation context. + * + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE: when this extension was active on + * a connection, and a packet of data arrived at the connection, + * it is passed to this callback to give the extension a chance to + * change the data, eg, decompress it. @user is pointing to the + * extension's private connection context data, @in is pointing + * to an lws_tokens struct, it consists of a char * pointer called + * token, and an int called token_len. At entry, these are + * set to point to the received buffer and set to the content + * length. If the extension will grow the content, it should use + * a new buffer allocated in its private user context data and + * set the pointed-to lws_tokens members to point to its buffer. + * + * LWS_EXT_CALLBACK_PACKET_TX_PRESEND: this works the same way as + * LWS_EXT_CALLBACK_PACKET_RX_PREPARSE above, except it gives the + * extension a chance to change websocket data just before it will + * be sent out. Using the same lws_token pointer scheme in @in, + * the extension can change the buffer and the length to be + * transmitted how it likes. Again if it wants to grow the + * buffer safely, it should copy the data into its own buffer and + * set the lws_tokens token pointer to it. + */ +LWS_VISIBLE LWS_EXTERN int extension_callback(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); + +typedef int (extension_callback_function)(struct libwebsocket_context *context, + struct libwebsocket_extension *ext, + struct libwebsocket *wsi, + enum libwebsocket_extension_callback_reasons reason, + void *user, void *in, size_t len); +#endif + +/** + * struct libwebsocket_protocols - List of protocols and handlers server + * supports. + * @name: Protocol name that must match the one given in the client + * Javascript new WebSocket(url, 'protocol') name + * @callback: The service callback used for this protocol. It allows the + * service action for an entire protocol to be encapsulated in + * the protocol-specific callback + * @per_session_data_size: Each new connection using this protocol gets + * this much memory allocated on connection establishment and + * freed on connection takedown. A pointer to this per-connection + * allocation is passed into the callback in the 'user' parameter + * @rx_buffer_size: if you want atomic frames delivered to the callback, you + * should set this to the size of the biggest legal frame that + * you support. If the frame size is exceeded, there is no + * error, but the buffer will spill to the user callback when + * full, which you can detect by using + * libwebsockets_remaining_packet_payload(). Notice that you + * just talk about frame size here, the LWS_SEND_BUFFER_PRE_PADDING + * and post-padding are automatically also allocated on top. + * @no_buffer_all_partial_tx: Leave at zero if you want the library to take + * care of all partial tx for you. It's useful if you only have + * small tx packets and the chance of any truncated send is small + * enough any additional malloc / buffering overhead is less + * painful than writing the code to deal with partial sends. For + * protocols where you stream big blocks, set to nonzero and use + * the return value from libwebsocket_write() to manage how much + * got send yourself. + * @owning_server: the server init call fills in this opaque pointer when + * registering this protocol with the server. + * @protocol_index: which protocol we are starting from zero + * + * This structure represents one protocol supported by the server. An + * array of these structures is passed to libwebsocket_create_server() + * allows as many protocols as you like to be handled by one server. + */ + +struct libwebsocket_protocols { + const char *name; + callback_function *callback; + size_t per_session_data_size; + size_t rx_buffer_size; + int no_buffer_all_partial_tx; + + /* + * below are filled in on server init and can be left uninitialized, + * no need for user to use them directly either + */ + + struct libwebsocket_context *owning_server; + int protocol_index; +}; + +#ifndef LWS_NO_EXTENSIONS +/** + * struct libwebsocket_extension - An extension we know how to cope with + * + * @name: Formal extension name, eg, "deflate-stream" + * @callback: Service callback + * @per_session_data_size: Libwebsockets will auto-malloc this much + * memory for the use of the extension, a pointer + * to it comes in the @user callback parameter + * @per_context_private_data: Optional storage for this extension that + * is per-context, so it can track stuff across + * all sessions, etc, if it wants + */ + +struct libwebsocket_extension { + const char *name; + extension_callback_function *callback; + size_t per_session_data_size; + void *per_context_private_data; +}; +#endif + +/** + * struct lws_context_creation_info: parameters to create context with + * + * @port: Port to listen on... you can use 0 to suppress listening on + * any port, that's what you want if you are not running a + * websocket server at all but just using it as a client + * @iface: NULL to bind the listen socket to all interfaces, or the + * interface name, eg, "eth2" + * @protocols: Array of structures listing supported protocols and a protocol- + * specific callback for each one. The list is ended with an + * entry that has a NULL callback pointer. + * It's not const because we write the owning_server member + * @extensions: NULL or array of libwebsocket_extension structs listing the + * extensions this context supports. If you configured with + * --without-extensions, you should give NULL here. + * @token_limits: NULL or struct lws_token_limits pointer which is initialized + * with a token length limit for each possible WSI_TOKEN_*** + * @ssl_cert_filepath: If libwebsockets was compiled to use ssl, and you want + * to listen using SSL, set to the filepath to fetch the + * server cert from, otherwise NULL for unencrypted + * @ssl_private_key_filepath: filepath to private key if wanting SSL mode, + * else ignored + * @ssl_ca_filepath: CA certificate filepath or NULL + * @ssl_cipher_list: List of valid ciphers to use (eg, + * "RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" + * or you can leave it as NULL to get "DEFAULT" + * @gid: group id to change to after setting listen socket, or -1. + * @uid: user id to change to after setting listen socket, or -1. + * @options: 0, or LWS_SERVER_OPTION_DEFEAT_CLIENT_MASK + * @user: optional user pointer that can be recovered via the context + * pointer using libwebsocket_context_user + * @ka_time: 0 for no keepalive, otherwise apply this keepalive timeout to + * all libwebsocket sockets, client or server + * @ka_probes: if ka_time was nonzero, after the timeout expires how many + * times to try to get a response from the peer before giving up + * and killing the connection + * @ka_interval: if ka_time was nonzero, how long to wait before each ka_probes + * attempt + */ + +struct lws_context_creation_info { + int port; + const char *iface; + struct libwebsocket_protocols *protocols; + struct libwebsocket_extension *extensions; + struct lws_token_limits *token_limits; + const char *ssl_cert_filepath; + const char *ssl_private_key_filepath; + const char *ssl_ca_filepath; + const char *ssl_cipher_list; + const char *http_proxy_address; + unsigned int http_proxy_port; + int gid; + int uid; + unsigned int options; + void *user; + int ka_time; + int ka_probes; + int ka_interval; + +}; + +LWS_VISIBLE LWS_EXTERN +void lws_set_log_level(int level, + void (*log_emit_function)(int level, const char *line)); + +LWS_VISIBLE LWS_EXTERN void +lwsl_emit_syslog(int level, const char *line); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket_context * +libwebsocket_create_context(struct lws_context_creation_info *info); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_set_proxy(struct libwebsocket_context *context, const char *proxy); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_context_destroy(struct libwebsocket_context *context); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service(struct libwebsocket_context *context, int timeout_ms); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_cancel_service(struct libwebsocket_context *context); + +#ifdef LWS_USE_LIBEV +LWS_VISIBLE LWS_EXTERN int +libwebsocket_initloop( + struct libwebsocket_context *context, struct ev_loop *loop); + +LWS_VISIBLE void +libwebsocket_sigint_cb( + struct ev_loop *loop, struct ev_signal *watcher, int revents); +#endif /* LWS_USE_LIBEV */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_service_fd(struct libwebsocket_context *context, + struct libwebsocket_pollfd *pollfd); + +LWS_VISIBLE LWS_EXTERN void * +libwebsocket_context_user(struct libwebsocket_context *context); + +enum pending_timeout { + NO_PENDING_TIMEOUT = 0, + PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE, + PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE, + PENDING_TIMEOUT_ESTABLISH_WITH_SERVER, + PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE, + PENDING_TIMEOUT_AWAITING_PING, + PENDING_TIMEOUT_CLOSE_ACK, + PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE, + PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE, + PENDING_TIMEOUT_SSL_ACCEPT, + PENDING_TIMEOUT_HTTP_CONTENT, + PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND, +}; + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_set_timeout(struct libwebsocket *wsi, + enum pending_timeout reason, int secs); + +/* + * IMPORTANT NOTICE! + * + * When sending with websocket protocol (LWS_WRITE_TEXT or LWS_WRITE_BINARY) + * the send buffer has to have LWS_SEND_BUFFER_PRE_PADDING bytes valid BEFORE + * buf, and LWS_SEND_BUFFER_POST_PADDING bytes valid AFTER (buf + len). + * + * This allows us to add protocol info before and after the data, and send as + * one packet on the network without payload copying, for maximum efficiency. + * + * So for example you need this kind of code to use libwebsocket_write with a + * 128-byte payload + * + * char buf[LWS_SEND_BUFFER_PRE_PADDING + 128 + LWS_SEND_BUFFER_POST_PADDING]; + * + * // fill your part of the buffer... for example here it's all zeros + * memset(&buf[LWS_SEND_BUFFER_PRE_PADDING], 0, 128); + * + * libwebsocket_write(wsi, &buf[LWS_SEND_BUFFER_PRE_PADDING], 128, + * LWS_WRITE_TEXT); + * + * When sending LWS_WRITE_HTTP, there is no protocol addition and you can just + * use the whole buffer without taking care of the above. + */ + +/* + * this is the frame nonce plus two header plus 8 length + * there's an additional two for mux extension per mux nesting level + * 2 byte prepend on close will already fit because control frames cannot use + * the big length style + */ + +#define LWS_SEND_BUFFER_PRE_PADDING (4 + 10 + (2 * MAX_MUX_RECURSION)) +#define LWS_SEND_BUFFER_POST_PADDING 4 + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, size_t len, + enum libwebsocket_write_protocol protocol); + +/* helper for case where buffer may be const */ +#define libwebsocket_write_http(wsi, buf, len) \ + libwebsocket_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP) + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file(struct libwebsocket_context *context, + struct libwebsocket *wsi, const char *file, + const char *content_type, const char *other_headers); +LWS_VISIBLE LWS_EXTERN int +libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int libwebsockets_return_http_status( + struct libwebsocket_context *context, + struct libwebsocket *wsi, unsigned int code, + const char *html_body); + +LWS_VISIBLE LWS_EXTERN const struct libwebsocket_protocols * +libwebsockets_get_protocol(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable(struct libwebsocket_context *context, + struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_on_writable_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_callback_all_protocol( + const struct libwebsocket_protocols *protocol, int reason); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_get_socket_fd(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_is_final_fragment(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char +libwebsocket_get_reserved_bits(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_rx_flow_control(struct libwebsocket *wsi, int enable); + +LWS_VISIBLE LWS_EXTERN void +libwebsocket_rx_flow_allow_all_protocol( + const struct libwebsocket_protocols *protocol); + +LWS_VISIBLE LWS_EXTERN size_t +libwebsockets_remaining_packet_payload(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one); + +LWS_VISIBLE LWS_EXTERN struct libwebsocket * +libwebsocket_client_connect_extended(struct libwebsocket_context *clients, + const char *address, + int port, + int ssl_connection, + const char *path, + const char *host, + const char *origin, + const char *protocol, + int ietf_version_or_minus_one, + void *userdata); + +LWS_VISIBLE LWS_EXTERN const char * +libwebsocket_canonical_hostname(struct libwebsocket_context *context); + + +LWS_VISIBLE LWS_EXTERN void +libwebsockets_get_peer_addresses(struct libwebsocket_context *context, + struct libwebsocket *wsi, int fd, char *name, int name_len, + char *rip, int rip_len); + +LWS_VISIBLE LWS_EXTERN int +libwebsockets_get_random(struct libwebsocket_context *context, + void *buf, int len); + +LWS_VISIBLE LWS_EXTERN int +lws_daemonize(const char *_lock_path); + +LWS_VISIBLE LWS_EXTERN int +lws_send_pipe_choked(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN int +lws_frame_is_binary(struct libwebsocket *wsi); + +LWS_VISIBLE LWS_EXTERN unsigned char * +libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_encode_string(const char *in, int in_len, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN int +lws_b64_decode_string(const char *in, char *out, int out_size); + +LWS_VISIBLE LWS_EXTERN const char * +lws_get_library_version(void); + +/* access to headers... only valid while headers valid */ + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_total_length(struct libwebsocket *wsi, enum lws_token_indexes h); + +LWS_VISIBLE LWS_EXTERN int +lws_hdr_copy(struct libwebsocket *wsi, char *dest, int len, + enum lws_token_indexes h); + +/* + * Note: this is not normally needed as a user api. It's provided in case it is + * useful when integrating with other app poll loop service code. + */ + +LWS_VISIBLE LWS_EXTERN int +libwebsocket_read(struct libwebsocket_context *context, + struct libwebsocket *wsi, + unsigned char *buf, size_t len); + +#ifndef LWS_NO_EXTENSIONS +LWS_VISIBLE LWS_EXTERN struct libwebsocket_extension *libwebsocket_get_internal_extensions(); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake b/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake new file mode 100644 index 0000000000..8d425bd1fb --- /dev/null +++ b/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets-noconfig.cmake @@ -0,0 +1,31 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "websockets" for configuration "" +set_property(TARGET websockets APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-9/arch-x86/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets "${_IMPORT_PREFIX}/lib/libwebsockets.a" ) + +# Import target "websockets_shared" for configuration "" +set_property(TARGET websockets_shared APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(websockets_shared PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "/opt/android-ndk-r10e/platforms/android-9/arch-x86/usr/lib/libz.so;m" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" + IMPORTED_SONAME_NOCONFIG "libwebsockets.so.4.0.0" + ) + +list(APPEND _IMPORT_CHECK_TARGETS websockets_shared ) +list(APPEND _IMPORT_CHECK_FILES_FOR_websockets_shared "${_IMPORT_PREFIX}/lib/libwebsockets.so.4.0.0" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake b/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake new file mode 100644 index 0000000000..848b03ccc2 --- /dev/null +++ b/android/dist/x86/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake @@ -0,0 +1,93 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget websockets websockets_shared) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target websockets +add_library(websockets STATIC IMPORTED) + +# Create imported target websockets_shared +add_library(websockets_shared SHARED IMPORTED) + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/LibwebsocketsTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/android/dist/x86/lib/libwebsockets.a b/android/dist/x86/lib/libwebsockets.a new file mode 100644 index 0000000000000000000000000000000000000000..737b4f64b6a27ef48669b13e0496acc8c477c5d2 GIT binary patch literal 142994 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 out_size) return -1; @@ -89,97 +91,3 @@ lws_b64_encode_string(const char *in, int in_len, char *out, int out_size) return done; } - -/* - * returns length of decoded string in out, or -1 if out was too small - * according to out_size - */ - -LWS_VISIBLE int -lws_b64_decode_string(const char *in, char *out, int out_size) -{ - int len; - int i; - int done = 0; - unsigned char v; - unsigned char quad[4]; - - while (*in) { - - len = 0; - for (i = 0; i < 4 && *in; i++) { - - v = 0; - while (*in && !v) { - - v = *in++; - v = (v < 43 || v > 122) ? 0 : decode[v - 43]; - if (v) - v = (v == '$') ? 0 : v - 61; - if (*in) { - len++; - if (v) - quad[i] = v - 1; - } else - quad[i] = 0; - } - } - - if (out_size < (done + len - 1)) - /* out buffer is too small */ - return -1; - - if (len >= 2) - *out++ = quad[0] << 2 | quad[1] >> 4; - if (len >= 3) - *out++ = quad[1] << 4 | quad[2] >> 2; - if (len >= 4) - *out++ = ((quad[2] << 6) & 0xc0) | quad[3]; - - done += len - 1; - } - - if (done + 1 >= out_size) - return -1; - - *out++ = '\0'; - - return done; -} - -int -lws_b64_selftest(void) -{ - char buf[64]; - int n; - int test; - static const char * const plaintext[] = { - "sanity check base 64" - }; - static const char * const coded[] = { - "c2FuaXR5IGNoZWNrIGJhc2UgNjQ=" - }; - - for (test = 0; test < sizeof plaintext / sizeof(plaintext[0]); test++) { - - buf[sizeof(buf) - 1] = '\0'; - n = lws_b64_encode_string(plaintext[test], - strlen(plaintext[test]), buf, sizeof buf); - if (n != strlen(coded[test]) || strcmp(buf, coded[test])) { - lwsl_err("Failed lws_b64 encode selftest " - "%d result '%s' %d\n", test, buf, n); - return -1; - } - - buf[sizeof(buf) - 1] = '\0'; - n = lws_b64_decode_string(coded[test], buf, sizeof buf); - if (n != strlen(plaintext[test]) || - strcmp(buf, plaintext[test])) { - lwsl_err("Failed lws_b64 decode selftest " - "%d result '%s' %d\n", test, buf, n); - return -1; - } - } - - return 0; -} diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 40916d6bc4..e25c368cf3 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -12,6 +12,7 @@ struct libwebsocket *libwebsocket_client_connect_2( #endif struct sockaddr_in server_addr4; struct sockaddr_in client_addr4; + struct hostent *server_hostent; struct sockaddr *v; int n; @@ -96,32 +97,15 @@ struct libwebsocket *libwebsocket_client_connect_2( } else #endif { - struct addrinfo ai, *res; - void *p = NULL; - - memset (&ai, 0, sizeof ai); - ai.ai_family = PF_UNSPEC; - ai.ai_socktype = SOCK_STREAM; - ai.ai_flags = AI_CANONNAME; - - if (getaddrinfo(ads, NULL, &ai, &res)) + server_hostent = gethostbyname(ads); + if (!server_hostent) { + lwsl_err("Unable to get host name from %s\n", ads); goto oom4; - - while (!p && res) { - switch (res->ai_family) { - case AF_INET: - p = &((struct sockaddr_in *)res->ai_addr)->sin_addr; - break; - } - - res = res->ai_next; } - - if (!p) - goto oom4; server_addr4.sin_family = AF_INET; - server_addr4.sin_addr = *((struct in_addr *)p); + server_addr4.sin_addr = + *((struct in_addr *)server_hostent->h_addr); bzero(&server_addr4.sin_zero, 8); } @@ -278,8 +262,8 @@ struct libwebsocket *libwebsocket_client_connect_2( return wsi; oom4: - lws_free(wsi->u.hdr.ah); - lws_free(wsi); + free(wsi->u.hdr.ah); + free(wsi); return NULL; failed: @@ -300,8 +284,7 @@ struct libwebsocket *libwebsocket_client_connect_2( * @origin: Socket origin name * @protocol: Comma-separated list of protocols being asked for from * the server, or just one. The server will pick the one it - * likes best. If you don't want to specify a protocol, which is - * legal, use NULL here. + * likes best. * @ietf_version_or_minus_one: -1 to ask to connect using the default, latest * protocol supported, or the specific protocol ordinal * @@ -321,10 +304,11 @@ libwebsocket_client_connect(struct libwebsocket_context *context, { struct libwebsocket *wsi; - wsi = lws_zalloc(sizeof(struct libwebsocket)); + wsi = (struct libwebsocket *) malloc(sizeof(struct libwebsocket)); if (wsi == NULL) goto bail; + memset(wsi, 0, sizeof(*wsi)); wsi->sock = -1; /* -1 means just use latest supported */ @@ -405,9 +389,9 @@ libwebsocket_client_connect(struct libwebsocket_context *context, return libwebsocket_client_connect_2(context, wsi); bail1: - lws_free(wsi->u.hdr.ah); + free(wsi->u.hdr.ah); bail: - lws_free(wsi); + free(wsi); return NULL; } diff --git a/lib/client-parser.c b/lib/client-parser.c index 30fc47d039..d7b97cc3ed 100644 --- a/lib/client-parser.c +++ b/lib/client-parser.c @@ -214,10 +214,8 @@ int libwebsocket_client_rx_sm(struct libwebsocket *wsi, unsigned char c) case LWS_RXPS_PAYLOAD_UNTIL_LENGTH_EXHAUSTED: - if (!wsi->u.ws.rx_user_buffer) { + if (!wsi->u.ws.rx_user_buffer) lwsl_err("NULL client rx_user_buffer\n"); - return 1; - } if ((!wsi->u.ws.this_frame_masked) || wsi->u.ws.all_zero_nonce) wsi->u.ws.rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING + @@ -286,49 +284,17 @@ int libwebsocket_client_rx_sm(struct libwebsocket *wsi, unsigned char c) return -1; case LWS_WS_OPCODE_07__PING: - lwsl_info("received %d byte ping, sending pong\n", - wsi->u.ws.rx_user_buffer_head); - - if (wsi->u.ws.ping_pending_flag) { - /* - * there is already a pending ping payload - * we should just log and drop - */ - lwsl_parser("DROP PING since one pending\n"); - goto ping_drop; - } - - /* control packets can only be < 128 bytes long */ - if (wsi->u.ws.rx_user_buffer_head > 128 - 4) { - lwsl_parser("DROP PING payload too large\n"); - goto ping_drop; - } - - /* if existing buffer is too small, drop it */ - if (wsi->u.ws.ping_payload_buf && - wsi->u.ws.ping_payload_alloc < wsi->u.ws.rx_user_buffer_head) - lws_free2(wsi->u.ws.ping_payload_buf); - - /* if no buffer, allocate it */ - if (!wsi->u.ws.ping_payload_buf) { - wsi->u.ws.ping_payload_buf = lws_malloc(wsi->u.ws.rx_user_buffer_head - + LWS_SEND_BUFFER_PRE_PADDING); - wsi->u.ws.ping_payload_alloc = - wsi->u.ws.rx_user_buffer_head; - } - - /* stash the pong payload */ - memcpy(wsi->u.ws.ping_payload_buf + LWS_SEND_BUFFER_PRE_PADDING, - &wsi->u.ws.rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING], - wsi->u.ws.rx_user_buffer_head); - - wsi->u.ws.ping_payload_len = wsi->u.ws.rx_user_buffer_head; - wsi->u.ws.ping_pending_flag = 1; - - /* get it sent as soon as possible */ - libwebsocket_callback_on_writable(wsi->protocol->owning_server, wsi); -ping_drop: - wsi->u.ws.rx_user_buffer_head = 0; + lwsl_info("client received ping, doing pong\n"); + /* + * parrot the ping packet payload back as a pong + * !!! this may block or have partial write or fail + * !!! very unlikely if the ping size is small + */ + libwebsocket_write(wsi, (unsigned char *) + &wsi->u.ws.rx_user_buffer[ + LWS_SEND_BUFFER_PRE_PADDING], + wsi->u.ws.rx_user_buffer_head, + LWS_WRITE_PONG); handled = 1; break; diff --git a/lib/client.c b/lib/client.c index c9cd156a5a..2b9a943cc4 100644 --- a/lib/client.c +++ b/lib/client.c @@ -309,18 +309,15 @@ int lws_client_socket_service(struct libwebsocket_context *context, lws_latency(context, wsi, "SSL_get_verify_result LWS_CONNMODE..HANDSHAKE", n, n > 0); - - if (n != X509_V_OK) { - if ((n == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT || - n == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) && wsi->use_ssl == 2) { - lwsl_notice("accepting self-signed certificate\n"); - } else { - lwsl_err("server's cert didn't look good, X509_V_ERR = %d: %s\n", - n, ERR_error_string(n, (char *)context->service_buffer)); - libwebsocket_close_and_free_session(context, - wsi, LWS_CLOSE_STATUS_NOSTATUS); - return 0; - } + if ((n != X509_V_OK) && ( + n != X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT || + wsi->use_ssl != 2)) { + + lwsl_err( + "server's cert didn't look good %d\n", n); + libwebsocket_close_and_free_session(context, + wsi, LWS_CLOSE_STATUS_NOSTATUS); + return 0; } #endif /* USE_CYASSL */ } else @@ -405,7 +402,7 @@ int lws_client_socket_service(struct libwebsocket_context *context, len = 1; while (wsi->u.hdr.parser_state != WSI_PARSING_COMPLETE && len > 0) { - n = lws_ssl_capable_read(context, wsi, &c, 1); + n = lws_ssl_capable_read(wsi, &c, 1); lws_latency(context, wsi, "send lws_issue_raw", n, n == 1); switch (n) { case LWS_SSL_CAPABLE_ERROR: @@ -560,15 +557,15 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_PROTOCOL); len = strlen(p); - while (pc && *pc && !okay) { + while (*pc && !okay) { if (!strncmp(pc, p, len) && - (pc[len] == ',' || pc[len] == '\0')) { + (pc[len] == ',' || pc[len] == '\0')) { okay = 1; continue; } - while (*pc && *pc++ != ',') - ; - while (*pc && *pc == ' ') + while (*pc && *pc != ',') + pc++; + while (*pc && *pc != ' ') pc++; } @@ -656,12 +653,15 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, wsi->active_extensions_user[ wsi->count_active_extensions] = - lws_zalloc(ext->per_session_data_size); + malloc(ext->per_session_data_size); if (wsi->active_extensions_user[ wsi->count_active_extensions] == NULL) { lwsl_err("Out of mem\n"); goto bail2; } + memset(wsi->active_extensions_user[ + wsi->count_active_extensions], 0, + ext->per_session_data_size); wsi->active_extensions[ wsi->count_active_extensions] = ext; @@ -721,13 +721,19 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); /* free up his parsing allocations */ + if (wsi->u.hdr.ah) + free(wsi->u.hdr.ah); - lws_free(wsi->u.hdr.ah); + /* mark him as being alive */ - lws_union_transition(wsi, LWS_CONNMODE_WS_CLIENT); wsi->state = WSI_STATE_ESTABLISHED; + wsi->mode = LWS_CONNMODE_WS_CLIENT; + + /* union transition */ + + memset(&wsi->u, 0, sizeof(wsi->u)); - wsi->rxflow_change_to = LWS_RXFLOW_ALLOW; + wsi->u.ws.rxflow_change_to = LWS_RXFLOW_ALLOW; /* * create the frame buffer for this connection according to the @@ -739,7 +745,7 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, if (!n) n = LWS_MAX_SOCKET_IO_BUF; n += LWS_SEND_BUFFER_PRE_PADDING + LWS_SEND_BUFFER_POST_PADDING; - wsi->u.ws.rx_user_buffer = lws_malloc(n); + wsi->u.ws.rx_user_buffer = malloc(n); if (!wsi->u.ws.rx_user_buffer) { lwsl_err("Out of Mem allocating rx buffer %d\n", n); goto bail2; @@ -781,7 +787,8 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, return 0; bail3: - lws_free2(wsi->u.ws.rx_user_buffer); + free(wsi->u.ws.rx_user_buffer); + wsi->u.ws.rx_user_buffer = NULL; close_reason = LWS_CLOSE_STATUS_NOSTATUS; bail2: @@ -794,7 +801,8 @@ lws_client_interpret_server_handshake(struct libwebsocket_context *context, /* free up his parsing allocations */ - lws_free2(wsi->u.hdr.ah); + if (wsi->u.hdr.ah) + free(wsi->u.hdr.ah); libwebsocket_close_and_free_session(context, wsi, close_reason); @@ -939,7 +947,7 @@ libwebsockets_generate_client_handshake(struct libwebsocket_context *context, key_b64[39] = '\0'; /* enforce composed length below buf sizeof */ n = sprintf(buf, "%s258EAFA5-E914-47DA-95CA-C5AB0DC85B11", key_b64); - libwebsockets_SHA1((unsigned char *)buf, n, (unsigned char *)hash); + SHA1((unsigned char *)buf, n, (unsigned char *)hash); lws_b64_encode_string(hash, 20, wsi->u.hdr.ah->initial_handshake_hash_base64, diff --git a/lib/context.c b/lib/context.c index 23f0575cd6..a699d96b93 100755 --- a/lib/context.c +++ b/lib/context.c @@ -76,9 +76,7 @@ libwebsocket_create_context(struct lws_context_creation_info *info) { struct libwebsocket_context *context = NULL; char *p; -#ifdef _WIN32 - int i; -#endif + int pid_daemon = get_daemonize_pid(); lwsl_notice("Initial logging level %d\n", log_level); @@ -103,11 +101,13 @@ libwebsocket_create_context(struct lws_context_creation_info *info) if (lws_plat_context_early_init()) return NULL; - context = lws_zalloc(sizeof(struct libwebsocket_context)); + context = (struct libwebsocket_context *) + malloc(sizeof(struct libwebsocket_context)); if (!context) { lwsl_err("No memory for websocket context\n"); return NULL; } + memset(context, 0, sizeof(*context)); if (pid_daemon) { context->started_with_parent = pid_daemon; @@ -122,12 +122,13 @@ libwebsocket_create_context(struct lws_context_creation_info *info) context->http_proxy_address[0] = '\0'; context->options = info->options; context->iface = info->iface; - context->ka_time = info->ka_time; - context->ka_interval = info->ka_interval; - context->ka_probes = info->ka_probes; - /* to reduce this allocation, */ - context->max_fds = getdtablesize(); + //context->max_fds = getdtablesize(); + context->max_fds = OPEN_MAX; + struct rlimit rl; + if (getrlimit(RLIMIT_NOFILE, &rl) != -1) { + context->max_fds = rl.rlim_cur; + } lwsl_notice(" static allocation: %u + (%u x %u fds) = %u bytes\n", sizeof(struct libwebsocket_context), sizeof(struct libwebsocket_pollfd) + @@ -138,41 +139,33 @@ libwebsocket_create_context(struct lws_context_creation_info *info) sizeof(struct libwebsocket *)) * context->max_fds)); - context->fds = lws_zalloc(sizeof(struct libwebsocket_pollfd) * - context->max_fds); + context->fds = (struct libwebsocket_pollfd *) + malloc(sizeof(struct libwebsocket_pollfd) * + context->max_fds); if (context->fds == NULL) { lwsl_err("Unable to allocate fds array for %d connections\n", context->max_fds); - lws_free(context); + free(context); return NULL; } -#ifdef _WIN32 - for (i = 0; i < FD_HASHTABLE_MODULUS; i++) { - context->fd_hashtable[i].wsi = lws_zalloc(sizeof(struct libwebsocket*) * context->max_fds); - } -#else - context->lws_lookup = lws_zalloc(sizeof(struct libwebsocket *) * context->max_fds); + context->lws_lookup = (struct libwebsocket **) + malloc(sizeof(struct libwebsocket *) * context->max_fds); if (context->lws_lookup == NULL) { lwsl_err( "Unable to allocate lws_lookup array for %d connections\n", context->max_fds); - lws_free(context->fds); - lws_free(context); + free(context->fds); + free(context); return NULL; } -#endif + memset(context->lws_lookup, 0, sizeof(struct libwebsocket *) * + context->max_fds); if (lws_plat_init_fd_tables(context)) { -#ifdef _WIN32 - for (i = 0; i < FD_HASHTABLE_MODULUS; i++) { - lws_free(context->fd_hashtable[i].wsi); - } -#else - lws_free(context->lws_lookup); -#endif - lws_free(context->fds); - lws_free(context); + free(context->lws_lookup); + free(context->fds); + free(context); return NULL; } @@ -221,10 +214,10 @@ libwebsocket_create_context(struct lws_context_creation_info *info) " per-conn mem: %u + %u headers + protocol rx buf\n", sizeof(struct libwebsocket), sizeof(struct allocated_headers)); - + if (lws_context_init_server_ssl(info, context)) goto bail; - + if (lws_context_init_client_ssl(info, context)) goto bail; @@ -306,11 +299,11 @@ libwebsocket_context_destroy(struct libwebsocket_context *context) for (n = 0; n < context->fds_count; n++) { struct libwebsocket *wsi = - wsi_from_fd(context, context->fds[n].fd); + context->lws_lookup[context->fds[n].fd]; if (!wsi) continue; libwebsocket_close_and_free_session(context, - wsi, LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY /* no protocol close */); + wsi, LWS_CLOSE_STATUS_NOSTATUS /* no protocol close */); n--; } @@ -318,7 +311,7 @@ libwebsocket_context_destroy(struct libwebsocket_context *context) * give all extensions a chance to clean up any per-context * allocations they might have made */ - if (context->listen_port != CONTEXT_PORT_NO_LISTEN) { + if (context->listen_port) { if (lws_ext_callback_for_each_extension_type(context, NULL, LWS_EXT_CALLBACK_SERVER_CONTEXT_DESTRUCT, NULL, 0) < 0) return; @@ -342,15 +335,12 @@ libwebsocket_context_destroy(struct libwebsocket_context *context) lws_ssl_context_destroy(context); - lws_free(context->fds); -#ifdef _WIN32 - for (n = 0; n < FD_HASHTABLE_MODULUS; n++) { - lws_free(context->fd_hashtable[n].wsi); - } -#else - lws_free(context->lws_lookup); -#endif + if (context->fds) + free(context->fds); + if (context->lws_lookup) + free(context->lws_lookup); + lws_plat_context_late_destroy(context); - lws_free(context); + free(context); } diff --git a/lib/daemonize.c b/lib/daemonize.c index f5caf0b199..4130764ba1 100644 --- a/lib/daemonize.c +++ b/lib/daemonize.c @@ -76,7 +76,8 @@ static void lws_daemon_closing(int sigact) if (getpid() == pid_daemon) if (lock_path) { unlink(lock_path); - lws_free2(lock_path); + free(lock_path); + lock_path = NULL; } kill(getpid(), SIGKILL); @@ -104,7 +105,7 @@ lws_daemonize(const char *_lock_path) return 1; fd = open(_lock_path, O_RDONLY); - if (fd >= 0) { + if (fd > 0) { n = read(fd, buf, sizeof(buf)); close(fd); if (n) { @@ -123,7 +124,7 @@ lws_daemonize(const char *_lock_path) } n = strlen(_lock_path) + 1; - lock_path = lws_malloc(n); + lock_path = malloc(n); if (!lock_path) { fprintf(stderr, "Out of mem in lws_daemonize\n"); return 1; diff --git a/lib/extension-deflate-frame.c b/lib/extension-deflate-frame.c index 96285a9a17..6cf6ac0161 100644 --- a/lib/extension-deflate-frame.c +++ b/lib/extension-deflate-frame.c @@ -54,14 +54,16 @@ int lws_extension_callback_deflate_frame( conn->buf_out_length = sizeof(conn->buf_out); conn->compressed_out = 0; conn->buf_pre = NULL; - conn->buf_in = lws_malloc(LWS_SEND_BUFFER_PRE_PADDING + - conn->buf_in_length + - LWS_SEND_BUFFER_POST_PADDING); + conn->buf_in = (unsigned char *) + malloc(LWS_SEND_BUFFER_PRE_PADDING + + conn->buf_in_length + + LWS_SEND_BUFFER_POST_PADDING); if (!conn->buf_in) goto bail; - conn->buf_out = lws_malloc(LWS_SEND_BUFFER_PRE_PADDING + - conn->buf_out_length + - LWS_SEND_BUFFER_POST_PADDING); + conn->buf_out = (unsigned char *) + malloc(LWS_SEND_BUFFER_PRE_PADDING + + conn->buf_out_length + + LWS_SEND_BUFFER_POST_PADDING); if (!conn->buf_out) goto bail; lwsl_ext("zlibs constructed\n"); @@ -73,9 +75,10 @@ int lws_extension_callback_deflate_frame( return -1; case LWS_EXT_CALLBACK_DESTROY: - lws_free(conn->buf_pre); - lws_free(conn->buf_in); - lws_free(conn->buf_out); + if (conn->buf_pre) + free(conn->buf_pre); + free(conn->buf_in); + free(conn->buf_out); conn->buf_pre_used = 0; conn->buf_pre_length = 0; conn->buf_in_length = 0; @@ -103,8 +106,10 @@ int lws_extension_callback_deflate_frame( if (conn->buf_pre_length < total_payload) { conn->buf_pre_length = total_payload; - lws_free(conn->buf_pre); - conn->buf_pre = lws_malloc(total_payload + 4); + if (conn->buf_pre) + free(conn->buf_pre); + conn->buf_pre = + (unsigned char *)malloc(total_payload + 4); if (!conn->buf_pre) { lwsl_err("Out of memory\n"); return -1; @@ -175,10 +180,10 @@ int lws_extension_callback_deflate_frame( LWS_MAX_ZLIB_CONN_BUFFER); return -1; } - conn->buf_in = lws_realloc(conn->buf_in, - LWS_SEND_BUFFER_PRE_PADDING + - conn->buf_in_length + - LWS_SEND_BUFFER_POST_PADDING); + conn->buf_in = (unsigned char *)realloc(conn->buf_in, + LWS_SEND_BUFFER_PRE_PADDING + + conn->buf_in_length + + LWS_SEND_BUFFER_POST_PADDING); if (!conn->buf_in) { lwsl_err("Out of memory\n"); return -1; @@ -238,17 +243,18 @@ int lws_extension_callback_deflate_frame( LWS_MAX_ZLIB_CONN_BUFFER); return -1; } - conn->buf_out = lws_realloc(conn->buf_out, - LWS_SEND_BUFFER_PRE_PADDING + - conn->buf_out_length + - LWS_SEND_BUFFER_POST_PADDING); + conn->buf_out = (unsigned char *)realloc( + conn->buf_out, + LWS_SEND_BUFFER_PRE_PADDING + + conn->buf_out_length + + LWS_SEND_BUFFER_POST_PADDING); if (!conn->buf_out) { lwsl_err("Out of memory\n"); return -1; } lwsl_debug( "deflate-frame ext TX did realloc to %ld\n", - conn->buf_out_length); + conn->buf_in_length); conn->zs_out.next_out = (conn->buf_out + LWS_SEND_BUFFER_PRE_PADDING + len_so_far); diff --git a/lib/extension.c b/lib/extension.c index b7a5792bf4..1e8370c51f 100644 --- a/lib/extension.c +++ b/lib/extension.c @@ -144,8 +144,11 @@ lws_issue_raw_ext_access(struct libwebsocket *wsi, } /* always either sent it all or privately buffered */ - if (wsi->u.ws.clean_buffer) + if (wsi->u.ws.clean_buffer) { + eff_buf.token_len = n; len = n; + } + } lwsl_parser("written %d bytes to client\n", n); diff --git a/lib/getifaddrs.c b/lib/getifaddrs.c index c9ed464c56..1fa47cea4a 100644 --- a/lib/getifaddrs.c +++ b/lib/getifaddrs.c @@ -44,7 +44,6 @@ #include #include #include -#include "private-libwebsockets.h" #ifdef HAVE_SYS_SOCKIO_H #include @@ -86,7 +85,7 @@ getifaddrs2(struct ifaddrs **ifap, buf_size = 8192; for (;;) { - buf = lws_zalloc(buf_size); + buf = calloc(1, buf_size); if (buf == NULL) { ret = ENOMEM; goto error_out; @@ -108,7 +107,7 @@ getifaddrs2(struct ifaddrs **ifap, if (ifconf.ifc_len < (int)buf_size) break; - lws_free(buf); + free(buf); buf_size *= 2; } @@ -138,12 +137,12 @@ getifaddrs2(struct ifaddrs **ifap, goto error_out; } - *end = lws_malloc(sizeof(**end)); + *end = malloc(sizeof(**end)); (*end)->ifa_next = NULL; (*end)->ifa_name = strdup(ifr->ifr_name); (*end)->ifa_flags = ifreq.ifr_flags; - (*end)->ifa_addr = lws_malloc(salen); + (*end)->ifa_addr = malloc(salen); memcpy((*end)->ifa_addr, sa, salen); (*end)->ifa_netmask = NULL; @@ -151,12 +150,11 @@ getifaddrs2(struct ifaddrs **ifap, /* fix these when we actually need them */ if (ifreq.ifr_flags & IFF_BROADCAST) { (*end)->ifa_broadaddr = - lws_malloc(sizeof(ifr->ifr_broadaddr)); + malloc(sizeof(ifr->ifr_broadaddr)); memcpy((*end)->ifa_broadaddr, &ifr->ifr_broadaddr, sizeof(ifr->ifr_broadaddr)); } else if (ifreq.ifr_flags & IFF_POINTOPOINT) { - (*end)->ifa_dstaddr = - lws_malloc(sizeof(ifr->ifr_dstaddr)); + (*end)->ifa_dstaddr = malloc(sizeof(ifr->ifr_dstaddr)); memcpy((*end)->ifa_dstaddr, &ifr->ifr_dstaddr, sizeof(ifr->ifr_dstaddr)); } else @@ -171,12 +169,12 @@ getifaddrs2(struct ifaddrs **ifap, } *ifap = start; close(fd); - lws_free(buf); + free(buf); return 0; error_out: close(fd); - lws_free(buf); + free(buf); errno = ret; return -1; @@ -211,14 +209,18 @@ freeifaddrs(struct ifaddrs *ifp) struct ifaddrs *p, *q; for (p = ifp; p; ) { - lws_free(p->ifa_name); - lws_free(p->ifa_addr); - lws_free(p->ifa_dstaddr); - lws_free(p->ifa_netmask); - lws_free(p->ifa_data); + free(p->ifa_name); + if (p->ifa_addr) + free(p->ifa_addr); + if (p->ifa_dstaddr) + free(p->ifa_dstaddr); + if (p->ifa_netmask) + free(p->ifa_netmask); + if (p->ifa_data) + free(p->ifa_data); q = p; p = p->ifa_next; - lws_free(q); + free(q); } } diff --git a/lib/handshake.c b/lib/handshake.c index 856297db2a..25dd3cc6fe 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -46,9 +46,6 @@ * Sec-WebSocket-Protocol: chat */ -#ifndef min -#define min(a, b) ((a) < (b) ? (a) : (b)) -#endif /* * We have to take care about parsing because the headers may be split * into multiple fragments. They may contain unknown headers with arbitrary @@ -61,118 +58,90 @@ libwebsocket_read(struct libwebsocket_context *context, struct libwebsocket *wsi, unsigned char *buf, size_t len) { size_t n; - int body_chunk_len; - unsigned char *last_char; switch (wsi->state) { -#ifdef LWS_USE_HTTP2 - case WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE: - case WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS: - case WSI_STATE_HTTP2_ESTABLISHED: - n = 0; - while (n < len) { - /* - * we were accepting input but now we stopped doing so - */ - if (!(wsi->rxflow_change_to & LWS_RXFLOW_ALLOW)) { - lws_rxflow_cache(wsi, buf, n, len); - - return 1; + + case WSI_STATE_HTTP_BODY: +http_postbody: + while (len--) { + + if (wsi->u.http.content_length_seen >= wsi->u.http.content_length) + break; + + wsi->u.http.post_buffer[wsi->u.http.body_index++] = *buf++; + wsi->u.http.content_length_seen++; + n = wsi->protocol->rx_buffer_size; + if (!n) + n = LWS_MAX_SOCKET_IO_BUF; + + if (wsi->u.http.body_index != n && + wsi->u.http.content_length_seen != wsi->u.http.content_length) + continue; + + if (wsi->protocol->callback) { + n = wsi->protocol->callback( + wsi->protocol->owning_server, wsi, + LWS_CALLBACK_HTTP_BODY, + wsi->user_space, wsi->u.http.post_buffer, + wsi->u.http.body_index); + wsi->u.http.body_index = 0; + if (n) + goto bail; } - /* account for what we're using in rxflow buffer */ - if (wsi->rxflow_buffer) - wsi->rxflow_pos++; - if (lws_http2_parser(context, wsi, buf[n++])) + if (wsi->u.http.content_length_seen == wsi->u.http.content_length) { + /* he sent the content in time */ + libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); + n = wsi->protocol->callback( + wsi->protocol->owning_server, wsi, + LWS_CALLBACK_HTTP_BODY_COMPLETION, + wsi->user_space, NULL, 0); + wsi->u.http.body_index = 0; + if (n) + goto bail; + } + + } + + /* + * we need to spill here so everything is seen in the case + * there is no content-length + */ + if (wsi->u.http.body_index && wsi->protocol->callback) { + n = wsi->protocol->callback( + wsi->protocol->owning_server, wsi, + LWS_CALLBACK_HTTP_BODY, + wsi->user_space, wsi->u.http.post_buffer, + wsi->u.http.body_index); + wsi->u.http.body_index = 0; + if (n) goto bail; } break; -#endif -http_new: - case WSI_STATE_HTTP: - wsi->hdr_parsing_completed = 0; - /* fallthru */ + case WSI_STATE_HTTP_ISSUING_FILE: + case WSI_STATE_HTTP: wsi->state = WSI_STATE_HTTP_HEADERS; wsi->u.hdr.parser_state = WSI_TOKEN_NAME_PART; wsi->u.hdr.lextable_pos = 0; /* fallthru */ case WSI_STATE_HTTP_HEADERS: + lwsl_parser("issuing %d bytes to parser\n", (int)len); if (lws_handshake_client(wsi, &buf, len)) goto bail; - last_char = buf; - if (lws_handshake_server(context, wsi, &buf, len)) - /* Handshake indicates this session is done. */ + switch (lws_handshake_server(context, wsi, &buf, len)) { + case 1: goto bail; - - /* It's possible that we've exhausted our data already, but - * lws_handshake_server doesn't update len for us. Figure out how - * much was read, so that we can proceed appropriately: */ - len -= (buf - last_char); - - if (!wsi->hdr_parsing_completed) - /* More header content on the way */ - goto read_ok; - - switch (wsi->state) { - case WSI_STATE_HTTP: - case WSI_STATE_HTTP_HEADERS: - goto http_complete; - case WSI_STATE_HTTP_ISSUING_FILE: - goto read_ok; - case WSI_STATE_HTTP_BODY: - wsi->u.http.content_remain = wsi->u.http.content_length; - goto http_postbody; - default: - break; + case 2: + goto http_postbody; } break; - case WSI_STATE_HTTP_BODY: -http_postbody: - while (len && wsi->u.http.content_remain) { - /* Copy as much as possible, up to the limit of: - * what we have in the read buffer (len) - * remaining portion of the POST body (content_remain) - */ - body_chunk_len = min(wsi->u.http.content_remain,len); - wsi->u.http.content_remain -= body_chunk_len; - len -= body_chunk_len; - - if (wsi->protocol->callback) { - n = wsi->protocol->callback( - wsi->protocol->owning_server, wsi, - LWS_CALLBACK_HTTP_BODY, wsi->user_space, - buf, body_chunk_len); - if (n) - goto bail; - } - buf += body_chunk_len; - - if (!wsi->u.http.content_remain) { - /* he sent the content in time */ - libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); - if (wsi->protocol->callback) { - n = wsi->protocol->callback( - wsi->protocol->owning_server, wsi, - LWS_CALLBACK_HTTP_BODY_COMPLETION, - wsi->user_space, NULL, 0); - if (n) - goto bail; - } - goto http_complete; - } else - libwebsocket_set_timeout(wsi, - PENDING_TIMEOUT_HTTP_CONTENT, - AWAITING_TIMEOUT); - } - break; - - case WSI_STATE_ESTABLISHED: case WSI_STATE_AWAITING_CLOSE_ACK: + case WSI_STATE_ESTABLISHED: if (lws_handshake_client(wsi, &buf, len)) goto bail; switch (wsi->mode) { @@ -190,38 +159,8 @@ libwebsocket_read(struct libwebsocket_context *context, break; } -read_ok: - /* Nothing more to do for now. */ - lwsl_debug("libwebsocket_read: read_ok\n"); - return 0; -http_complete: - lwsl_debug("libwebsocket_read: http_complete\n"); - - /* Did the client want to keep the HTTP connection going? */ - - if (wsi->u.http.connection_type == HTTP_CONNECTION_KEEP_ALIVE) { - lwsl_debug("libwebsocket_read: keep-alive\n"); - wsi->state = WSI_STATE_HTTP; - wsi->mode = LWS_CONNMODE_HTTP_SERVING; - - /* He asked for it to stay alive indefinitely */ - libwebsocket_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); - - if (lws_allocate_header_table(wsi)) - goto bail; - - /* If we're (re)starting on headers, need other implied init */ - wsi->u.hdr.ues = URIES_IDLE; - - /* If we have more data, loop back around: */ - if (len) - goto http_new; - - return 0; - } - bail: lwsl_debug("closing connection at libwebsocket_read bail:\n"); diff --git a/lib/lextable.h b/lib/lextable.h index 73c92d438c..9d86577a5f 100755 --- a/lib/lextable.h +++ b/lib/lextable.h @@ -1,760 +1,338 @@ -/* pos 0000: 0 */ 0x67 /* 'g' */, 0x3D, 0x00 /* (to 0x003D state 1) */, - 0x70 /* 'p' */, 0x3F, 0x00 /* (to 0x0042 state 5) */, - 0x6F /* 'o' */, 0x4E, 0x00 /* (to 0x0054 state 10) */, - 0x68 /* 'h' */, 0x5A, 0x00 /* (to 0x0063 state 18) */, - 0x63 /* 'c' */, 0x63, 0x00 /* (to 0x006F state 23) */, - 0x75 /* 'u' */, 0x7E, 0x00 /* (to 0x008D state 34) */, - 0x73 /* 's' */, 0x91, 0x00 /* (to 0x00A3 state 48) */, - 0x0D /* '.' */, 0xCA, 0x00 /* (to 0x00DF state 68) */, - 0x61 /* 'a' */, 0x1C, 0x01 /* (to 0x0134 state 129) */, - 0x69 /* 'i' */, 0x5B, 0x01 /* (to 0x0176 state 163) */, - 0x64 /* 'd' */, 0x04, 0x02 /* (to 0x0222 state 265) */, - 0x72 /* 'r' */, 0x0D, 0x02 /* (to 0x022E state 270) */, - 0x3A /* ':' */, 0x3E, 0x02 /* (to 0x0262 state 299) */, - 0x65 /* 'e' */, 0xCF, 0x02 /* (to 0x02F6 state 414) */, - 0x66 /* 'f' */, 0xEB, 0x02 /* (to 0x0315 state 430) */, - 0x6C /* 'l' */, 0x0D, 0x03 /* (to 0x033A state 463) */, - 0x6D /* 'm' */, 0x30, 0x03 /* (to 0x0360 state 489) */, - 0x74 /* 't' */, 0x9F, 0x03 /* (to 0x03D2 state 583) */, - 0x76 /* 'v' */, 0xBA, 0x03 /* (to 0x03F0 state 611) */, - 0x77 /* 'w' */, 0xC7, 0x03 /* (to 0x0400 state 619) */, - 0x08, /* fail */ -/* pos 003d: 1 */ 0xE5 /* 'e' -> */, -/* pos 003e: 2 */ 0xF4 /* 't' -> */, -/* pos 003f: 3 */ 0xA0 /* ' ' -> */, -/* pos 0040: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, -/* pos 0042: 5 */ 0x6F /* 'o' */, 0x0D, 0x00 /* (to 0x004F state 6) */, - 0x72 /* 'r' */, 0x83, 0x01 /* (to 0x01C8 state 211) */, - 0x61 /* 'a' */, 0xCC, 0x03 /* (to 0x0414 state 637) */, - 0x75 /* 'u' */, 0xCE, 0x03 /* (to 0x0419 state 641) */, - 0x08, /* fail */ -/* pos 004f: 6 */ 0xF3 /* 's' -> */, -/* pos 0050: 7 */ 0xF4 /* 't' -> */, -/* pos 0051: 8 */ 0xA0 /* ' ' -> */, -/* pos 0052: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, -/* pos 0054: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x005B state 11) */, - 0x72 /* 'r' */, 0x45, 0x00 /* (to 0x009C state 42) */, - 0x08, /* fail */ -/* pos 005b: 11 */ 0xF4 /* 't' -> */, -/* pos 005c: 12 */ 0xE9 /* 'i' -> */, -/* pos 005d: 13 */ 0xEF /* 'o' -> */, -/* pos 005e: 14 */ 0xEE /* 'n' -> */, -/* pos 005f: 15 */ 0xF3 /* 's' -> */, -/* pos 0060: 16 */ 0xA0 /* ' ' -> */, -/* pos 0061: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, -/* pos 0063: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x006A state 19) */, - 0x74 /* 't' */, 0xB3, 0x00 /* (to 0x0119 state 110) */, - 0x08, /* fail */ -/* pos 006a: 19 */ 0xF3 /* 's' -> */, -/* pos 006b: 20 */ 0xF4 /* 't' -> */, -/* pos 006c: 21 */ 0xBA /* ':' -> */, -/* pos 006d: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, -/* pos 006f: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0076 state 24) */, - 0x61 /* 'a' */, 0x63, 0x01 /* (to 0x01D5 state 217) */, - 0x08, /* fail */ -/* pos 0076: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x007D state 25) */, - 0x6F /* 'o' */, 0x78, 0x01 /* (to 0x01F1 state 243) */, - 0x08, /* fail */ -/* pos 007d: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0084 state 26) */, - 0x74 /* 't' */, 0x77, 0x01 /* (to 0x01F7 state 248) */, - 0x08, /* fail */ -/* pos 0084: 26 */ 0xE5 /* 'e' -> */, -/* pos 0085: 27 */ 0xE3 /* 'c' -> */, -/* pos 0086: 28 */ 0xF4 /* 't' -> */, -/* pos 0087: 29 */ 0xE9 /* 'i' -> */, -/* pos 0088: 30 */ 0xEF /* 'o' -> */, -/* pos 0089: 31 */ 0xEE /* 'n' -> */, -/* pos 008a: 32 */ 0xBA /* ':' -> */, -/* pos 008b: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, -/* pos 008d: 34 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0094 state 35) */, - 0x73 /* 's' */, 0x55, 0x03 /* (to 0x03E5 state 601) */, - 0x08, /* fail */ -/* pos 0094: 35 */ 0xE7 /* 'g' -> */, -/* pos 0095: 36 */ 0xF2 /* 'r' -> */, -/* pos 0096: 37 */ 0xE1 /* 'a' -> */, -/* pos 0097: 38 */ 0xE4 /* 'd' -> */, -/* pos 0098: 39 */ 0xE5 /* 'e' -> */, -/* pos 0099: 40 */ 0xBA /* ':' -> */, -/* pos 009a: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, -/* pos 009c: 42 */ 0xE9 /* 'i' -> */, -/* pos 009d: 43 */ 0xE7 /* 'g' -> */, -/* pos 009e: 44 */ 0xE9 /* 'i' -> */, -/* pos 009f: 45 */ 0xEE /* 'n' -> */, -/* pos 00a0: 46 */ 0xBA /* ':' -> */, -/* pos 00a1: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, -/* pos 00a3: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00AA state 49) */, - 0x74 /* 't' */, 0x12, 0x03 /* (to 0x03B8 state 558) */, - 0x08, /* fail */ -/* pos 00aa: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00B4 state 50) */, - 0x72 /* 'r' */, 0xFB, 0x02 /* (to 0x03A8 state 544) */, - 0x74 /* 't' */, 0xFE, 0x02 /* (to 0x03AE state 549) */, - 0x08, /* fail */ -/* pos 00b4: 50 */ 0xAD /* '-' -> */, -/* pos 00b5: 51 */ 0xF7 /* 'w' -> */, -/* pos 00b6: 52 */ 0xE5 /* 'e' -> */, -/* pos 00b7: 53 */ 0xE2 /* 'b' -> */, -/* pos 00b8: 54 */ 0xF3 /* 's' -> */, -/* pos 00b9: 55 */ 0xEF /* 'o' -> */, -/* pos 00ba: 56 */ 0xE3 /* 'c' -> */, -/* pos 00bb: 57 */ 0xEB /* 'k' -> */, -/* pos 00bc: 58 */ 0xE5 /* 'e' -> */, -/* pos 00bd: 59 */ 0xF4 /* 't' -> */, -/* pos 00be: 60 */ 0xAD /* '-' -> */, -/* pos 00bf: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00D8 state 62) */, - 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00E2 state 70) */, - 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00EE state 81) */, - 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x0100 state 88) */, - 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x010A state 97) */, - 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x0112 state 104) */, - 0x76 /* 'v' */, 0x80, 0x01 /* (to 0x0251 state 284) */, - 0x6F /* 'o' */, 0x86, 0x01 /* (to 0x025A state 292) */, - 0x08, /* fail */ -/* pos 00d8: 62 */ 0xF2 /* 'r' -> */, -/* pos 00d9: 63 */ 0xE1 /* 'a' -> */, -/* pos 00da: 64 */ 0xE6 /* 'f' -> */, -/* pos 00db: 65 */ 0xF4 /* 't' -> */, -/* pos 00dc: 66 */ 0xBA /* ':' -> */, -/* pos 00dd: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, -/* pos 00df: 68 */ 0x8A /* '.' -> */, -/* pos 00e0: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, -/* pos 00e2: 70 */ 0xF8 /* 'x' -> */, -/* pos 00e3: 71 */ 0xF4 /* 't' -> */, -/* pos 00e4: 72 */ 0xE5 /* 'e' -> */, -/* pos 00e5: 73 */ 0xEE /* 'n' -> */, -/* pos 00e6: 74 */ 0xF3 /* 's' -> */, -/* pos 00e7: 75 */ 0xE9 /* 'i' -> */, -/* pos 00e8: 76 */ 0xEF /* 'o' -> */, -/* pos 00e9: 77 */ 0xEE /* 'n' -> */, -/* pos 00ea: 78 */ 0xF3 /* 's' -> */, -/* pos 00eb: 79 */ 0xBA /* ':' -> */, -/* pos 00ec: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, -/* pos 00ee: 81 */ 0xE5 /* 'e' -> */, -/* pos 00ef: 82 */ 0xF9 /* 'y' -> */, -/* pos 00f0: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00FA state 84) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00FD state 86) */, - 0x3A /* ':' */, 0x59, 0x01 /* (to 0x024F state 283) */, - 0x08, /* fail */ -/* pos 00fa: 84 */ 0xBA /* ':' -> */, -/* pos 00fb: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, -/* pos 00fd: 86 */ 0xBA /* ':' -> */, -/* pos 00fe: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, -/* pos 0100: 88 */ 0xF2 /* 'r' -> */, -/* pos 0101: 89 */ 0xEF /* 'o' -> */, -/* pos 0102: 90 */ 0xF4 /* 't' -> */, -/* pos 0103: 91 */ 0xEF /* 'o' -> */, -/* pos 0104: 92 */ 0xE3 /* 'c' -> */, -/* pos 0105: 93 */ 0xEF /* 'o' -> */, -/* pos 0106: 94 */ 0xEC /* 'l' -> */, -/* pos 0107: 95 */ 0xBA /* ':' -> */, -/* pos 0108: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, -/* pos 010a: 97 */ 0xE3 /* 'c' -> */, -/* pos 010b: 98 */ 0xE3 /* 'c' -> */, -/* pos 010c: 99 */ 0xE5 /* 'e' -> */, -/* pos 010d: 100 */ 0xF0 /* 'p' -> */, -/* pos 010e: 101 */ 0xF4 /* 't' -> */, -/* pos 010f: 102 */ 0xBA /* ':' -> */, -/* pos 0110: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, -/* pos 0112: 104 */ 0xEF /* 'o' -> */, -/* pos 0113: 105 */ 0xEE /* 'n' -> */, -/* pos 0114: 106 */ 0xE3 /* 'c' -> */, -/* pos 0115: 107 */ 0xE5 /* 'e' -> */, -/* pos 0116: 108 */ 0xBA /* ':' -> */, -/* pos 0117: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, -/* pos 0119: 110 */ 0xF4 /* 't' -> */, -/* pos 011a: 111 */ 0xF0 /* 'p' -> */, -/* pos 011b: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x0122 state 113) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0128 state 118) */, - 0x08, /* fail */ -/* pos 0122: 113 */ 0xB1 /* '1' -> */, -/* pos 0123: 114 */ 0xAE /* '.' -> */, -/* pos 0124: 115 */ 0xB1 /* '1' -> */, -/* pos 0125: 116 */ 0xA0 /* ' ' -> */, -/* pos 0126: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, -/* pos 0128: 118 */ 0xAD /* '-' -> */, -/* pos 0129: 119 */ 0xF3 /* 's' -> */, -/* pos 012a: 120 */ 0xE5 /* 'e' -> */, -/* pos 012b: 121 */ 0xF4 /* 't' -> */, -/* pos 012c: 122 */ 0xF4 /* 't' -> */, -/* pos 012d: 123 */ 0xE9 /* 'i' -> */, -/* pos 012e: 124 */ 0xEE /* 'n' -> */, -/* pos 012f: 125 */ 0xE7 /* 'g' -> */, -/* pos 0130: 126 */ 0xF3 /* 's' -> */, -/* pos 0131: 127 */ 0xBA /* ':' -> */, -/* pos 0132: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, -/* pos 0134: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x0141 state 130) */, - 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01E3 state 230) */, - 0x67 /* 'g' */, 0x82, 0x01 /* (to 0x02BC state 363) */, - 0x6C /* 'l' */, 0x83, 0x01 /* (to 0x02C0 state 366) */, - 0x08, /* fail */ -/* pos 0141: 130 */ 0xE3 /* 'c' -> */, -/* pos 0142: 131 */ 0xE5 /* 'e' -> */, -/* pos 0143: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x014A state 133) */, - 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x0154 state 136) */, - 0x08, /* fail */ -/* pos 014a: 133 */ 0xF4 /* 't' -> */, -/* pos 014b: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x0152 state 135) */, - 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01A7 state 192) */, - 0x08, /* fail */ -/* pos 0152: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, -/* pos 0154: 136 */ 0xF3 /* 's' -> */, -/* pos 0155: 137 */ 0xAD /* '-' -> */, -/* pos 0156: 138 */ 0xE3 /* 'c' -> */, -/* pos 0157: 139 */ 0xEF /* 'o' -> */, -/* pos 0158: 140 */ 0xEE /* 'n' -> */, -/* pos 0159: 141 */ 0xF4 /* 't' -> */, -/* pos 015a: 142 */ 0xF2 /* 'r' -> */, -/* pos 015b: 143 */ 0xEF /* 'o' -> */, -/* pos 015c: 144 */ 0xEC /* 'l' -> */, -/* pos 015d: 145 */ 0xAD /* '-' -> */, -/* pos 015e: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0165 state 147) */, - 0x61 /* 'a' */, 0x4D, 0x01 /* (to 0x02AE state 350) */, - 0x08, /* fail */ -/* pos 0165: 147 */ 0xE5 /* 'e' -> */, -/* pos 0166: 148 */ 0xF1 /* 'q' -> */, -/* pos 0167: 149 */ 0xF5 /* 'u' -> */, -/* pos 0168: 150 */ 0xE5 /* 'e' -> */, -/* pos 0169: 151 */ 0xF3 /* 's' -> */, -/* pos 016a: 152 */ 0xF4 /* 't' -> */, -/* pos 016b: 153 */ 0xAD /* '-' -> */, -/* pos 016c: 154 */ 0xE8 /* 'h' -> */, -/* pos 016d: 155 */ 0xE5 /* 'e' -> */, -/* pos 016e: 156 */ 0xE1 /* 'a' -> */, -/* pos 016f: 157 */ 0xE4 /* 'd' -> */, -/* pos 0170: 158 */ 0xE5 /* 'e' -> */, -/* pos 0171: 159 */ 0xF2 /* 'r' -> */, -/* pos 0172: 160 */ 0xF3 /* 's' -> */, -/* pos 0173: 161 */ 0xBA /* ':' -> */, -/* pos 0174: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, -/* pos 0176: 163 */ 0xE6 /* 'f' -> */, -/* pos 0177: 164 */ 0xAD /* '-' -> */, -/* pos 0178: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x0185 state 166) */, - 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x019B state 181) */, - 0x72 /* 'r' */, 0xA3, 0x01 /* (to 0x0321 state 440) */, - 0x75 /* 'u' */, 0xA7, 0x01 /* (to 0x0328 state 446) */, - 0x08, /* fail */ -/* pos 0185: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x018C state 167) */, - 0x61 /* 'a' */, 0x93, 0x01 /* (to 0x031B state 435) */, - 0x08, /* fail */ -/* pos 018c: 167 */ 0xE4 /* 'd' -> */, -/* pos 018d: 168 */ 0xE9 /* 'i' -> */, -/* pos 018e: 169 */ 0xE6 /* 'f' -> */, -/* pos 018f: 170 */ 0xE9 /* 'i' -> */, -/* pos 0190: 171 */ 0xE5 /* 'e' -> */, -/* pos 0191: 172 */ 0xE4 /* 'd' -> */, -/* pos 0192: 173 */ 0xAD /* '-' -> */, -/* pos 0193: 174 */ 0xF3 /* 's' -> */, -/* pos 0194: 175 */ 0xE9 /* 'i' -> */, -/* pos 0195: 176 */ 0xEE /* 'n' -> */, -/* pos 0196: 177 */ 0xE3 /* 'c' -> */, -/* pos 0197: 178 */ 0xE5 /* 'e' -> */, -/* pos 0198: 179 */ 0xBA /* ':' -> */, -/* pos 0199: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, -/* pos 019b: 181 */ 0xEF /* 'o' -> */, -/* pos 019c: 182 */ 0xEE /* 'n' -> */, -/* pos 019d: 183 */ 0xE5 /* 'e' -> */, -/* pos 019e: 184 */ 0xAD /* '-' -> */, -/* pos 019f: 185 */ 0xED /* 'm' -> */, -/* pos 01a0: 186 */ 0xE1 /* 'a' -> */, -/* pos 01a1: 187 */ 0xF4 /* 't' -> */, -/* pos 01a2: 188 */ 0xE3 /* 'c' -> */, -/* pos 01a3: 189 */ 0xE8 /* 'h' -> */, -/* pos 01a4: 190 */ 0xBA /* ':' -> */, -/* pos 01a5: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, -/* pos 01a7: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01B4 state 193) */, - 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01BE state 202) */, - 0x63 /* 'c' */, 0xF0, 0x00 /* (to 0x029D state 335) */, - 0x72 /* 'r' */, 0xF6, 0x00 /* (to 0x02A6 state 343) */, - 0x08, /* fail */ -/* pos 01b4: 193 */ 0xEE /* 'n' -> */, -/* pos 01b5: 194 */ 0xE3 /* 'c' -> */, -/* pos 01b6: 195 */ 0xEF /* 'o' -> */, -/* pos 01b7: 196 */ 0xE4 /* 'd' -> */, -/* pos 01b8: 197 */ 0xE9 /* 'i' -> */, -/* pos 01b9: 198 */ 0xEE /* 'n' -> */, -/* pos 01ba: 199 */ 0xE7 /* 'g' -> */, -/* pos 01bb: 200 */ 0xBA /* ':' -> */, -/* pos 01bc: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, -/* pos 01be: 202 */ 0xE1 /* 'a' -> */, -/* pos 01bf: 203 */ 0xEE /* 'n' -> */, -/* pos 01c0: 204 */ 0xE7 /* 'g' -> */, -/* pos 01c1: 205 */ 0xF5 /* 'u' -> */, -/* pos 01c2: 206 */ 0xE1 /* 'a' -> */, -/* pos 01c3: 207 */ 0xE7 /* 'g' -> */, -/* pos 01c4: 208 */ 0xE5 /* 'e' -> */, -/* pos 01c5: 209 */ 0xBA /* ':' -> */, -/* pos 01c6: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, -/* pos 01c8: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01CF state 212) */, - 0x6F /* 'o' */, 0xA3, 0x01 /* (to 0x036E state 502) */, - 0x08, /* fail */ -/* pos 01cf: 212 */ 0xE7 /* 'g' -> */, -/* pos 01d0: 213 */ 0xED /* 'm' -> */, -/* pos 01d1: 214 */ 0xE1 /* 'a' -> */, -/* pos 01d2: 215 */ 0xBA /* ':' -> */, -/* pos 01d3: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, -/* pos 01d5: 217 */ 0xE3 /* 'c' -> */, -/* pos 01d6: 218 */ 0xE8 /* 'h' -> */, -/* pos 01d7: 219 */ 0xE5 /* 'e' -> */, -/* pos 01d8: 220 */ 0xAD /* '-' -> */, -/* pos 01d9: 221 */ 0xE3 /* 'c' -> */, -/* pos 01da: 222 */ 0xEF /* 'o' -> */, -/* pos 01db: 223 */ 0xEE /* 'n' -> */, -/* pos 01dc: 224 */ 0xF4 /* 't' -> */, -/* pos 01dd: 225 */ 0xF2 /* 'r' -> */, -/* pos 01de: 226 */ 0xEF /* 'o' -> */, -/* pos 01df: 227 */ 0xEC /* 'l' -> */, -/* pos 01e0: 228 */ 0xBA /* ':' -> */, -/* pos 01e1: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, -/* pos 01e3: 230 */ 0xF4 /* 't' -> */, -/* pos 01e4: 231 */ 0xE8 /* 'h' -> */, -/* pos 01e5: 232 */ 0xEF /* 'o' -> */, -/* pos 01e6: 233 */ 0xF2 /* 'r' -> */, -/* pos 01e7: 234 */ 0xE9 /* 'i' -> */, -/* pos 01e8: 235 */ 0xFA /* 'z' -> */, -/* pos 01e9: 236 */ 0xE1 /* 'a' -> */, -/* pos 01ea: 237 */ 0xF4 /* 't' -> */, -/* pos 01eb: 238 */ 0xE9 /* 'i' -> */, -/* pos 01ec: 239 */ 0xEF /* 'o' -> */, -/* pos 01ed: 240 */ 0xEE /* 'n' -> */, -/* pos 01ee: 241 */ 0xBA /* ':' -> */, -/* pos 01ef: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, -/* pos 01f1: 243 */ 0xEB /* 'k' -> */, -/* pos 01f2: 244 */ 0xE9 /* 'i' -> */, -/* pos 01f3: 245 */ 0xE5 /* 'e' -> */, -/* pos 01f4: 246 */ 0xBA /* ':' -> */, -/* pos 01f5: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, -/* pos 01f7: 248 */ 0xE5 /* 'e' -> */, -/* pos 01f8: 249 */ 0xEE /* 'n' -> */, -/* pos 01f9: 250 */ 0xF4 /* 't' -> */, -/* pos 01fa: 251 */ 0xAD /* '-' -> */, -/* pos 01fb: 252 */ 0x6C /* 'l' */, 0x10, 0x00 /* (to 0x020B state 253) */, - 0x74 /* 't' */, 0x1E, 0x00 /* (to 0x021C state 260) */, - 0x64 /* 'd' */, 0xC5, 0x00 /* (to 0x02C6 state 371) */, - 0x65 /* 'e' */, 0xCF, 0x00 /* (to 0x02D3 state 383) */, - 0x72 /* 'r' */, 0xE8, 0x00 /* (to 0x02EF state 408) */, - 0x08, /* fail */ -/* pos 020b: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x0215 state 254) */, - 0x61 /* 'a' */, 0xCF, 0x00 /* (to 0x02DD state 392) */, - 0x6F /* 'o' */, 0xD5, 0x00 /* (to 0x02E6 state 400) */, - 0x08, /* fail */ -/* pos 0215: 254 */ 0xEE /* 'n' -> */, -/* pos 0216: 255 */ 0xE7 /* 'g' -> */, -/* pos 0217: 256 */ 0xF4 /* 't' -> */, -/* pos 0218: 257 */ 0xE8 /* 'h' -> */, -/* pos 0219: 258 */ 0xBA /* ':' -> */, -/* pos 021a: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, -/* pos 021c: 260 */ 0xF9 /* 'y' -> */, -/* pos 021d: 261 */ 0xF0 /* 'p' -> */, -/* pos 021e: 262 */ 0xE5 /* 'e' -> */, -/* pos 021f: 263 */ 0xBA /* ':' -> */, -/* pos 0220: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, -/* pos 0222: 265 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0229 state 266) */, - 0x65 /* 'e' */, 0xF7, 0x01 /* (to 0x041C state 643) */, - 0x08, /* fail */ -/* pos 0229: 266 */ 0xF4 /* 't' -> */, -/* pos 022a: 267 */ 0xE5 /* 'e' -> */, -/* pos 022b: 268 */ 0xBA /* ':' -> */, -/* pos 022c: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, -/* pos 022e: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0235 state 271) */, - 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x023B state 276) */, - 0x08, /* fail */ -/* pos 0235: 271 */ 0xEE /* 'n' -> */, -/* pos 0236: 272 */ 0xE7 /* 'g' -> */, -/* pos 0237: 273 */ 0xE5 /* 'e' -> */, -/* pos 0238: 274 */ 0xBA /* ':' -> */, -/* pos 0239: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, -/* pos 023b: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x0242 state 277) */, - 0x74 /* 't' */, 0x5F, 0x01 /* (to 0x039D state 534) */, - 0x08, /* fail */ -/* pos 0242: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0249 state 278) */, - 0x72 /* 'r' */, 0x52, 0x01 /* (to 0x0397 state 529) */, - 0x08, /* fail */ -/* pos 0249: 278 */ 0xF2 /* 'r' -> */, -/* pos 024a: 279 */ 0xE5 /* 'e' -> */, -/* pos 024b: 280 */ 0xF2 /* 'r' -> */, -/* pos 024c: 281 */ 0xBA /* ':' -> */, -/* pos 024d: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, -/* pos 024f: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, -/* pos 0251: 284 */ 0xE5 /* 'e' -> */, -/* pos 0252: 285 */ 0xF2 /* 'r' -> */, -/* pos 0253: 286 */ 0xF3 /* 's' -> */, -/* pos 0254: 287 */ 0xE9 /* 'i' -> */, -/* pos 0255: 288 */ 0xEF /* 'o' -> */, -/* pos 0256: 289 */ 0xEE /* 'n' -> */, -/* pos 0257: 290 */ 0xBA /* ':' -> */, -/* pos 0258: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, -/* pos 025a: 292 */ 0xF2 /* 'r' -> */, -/* pos 025b: 293 */ 0xE9 /* 'i' -> */, -/* pos 025c: 294 */ 0xE7 /* 'g' -> */, -/* pos 025d: 295 */ 0xE9 /* 'i' -> */, -/* pos 025e: 296 */ 0xEE /* 'n' -> */, -/* pos 025f: 297 */ 0xBA /* ':' -> */, -/* pos 0260: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, -/* pos 0262: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x026F state 300) */, - 0x6D /* 'm' */, 0x15, 0x00 /* (to 0x027A state 310) */, - 0x70 /* 'p' */, 0x1A, 0x00 /* (to 0x0282 state 317) */, - 0x73 /* 's' */, 0x1D, 0x00 /* (to 0x0288 state 322) */, - 0x08, /* fail */ -/* pos 026f: 300 */ 0xF5 /* 'u' -> */, -/* pos 0270: 301 */ 0xF4 /* 't' -> */, -/* pos 0271: 302 */ 0xE8 /* 'h' -> */, -/* pos 0272: 303 */ 0xEF /* 'o' -> */, -/* pos 0273: 304 */ 0xF2 /* 'r' -> */, -/* pos 0274: 305 */ 0xE9 /* 'i' -> */, -/* pos 0275: 306 */ 0xF4 /* 't' -> */, -/* pos 0276: 307 */ 0xF9 /* 'y' -> */, -/* pos 0277: 308 */ 0xBA /* ':' -> */, -/* pos 0278: 309 */ 0x00, 0x23 /* - terminal marker 35 - */, -/* pos 027a: 310 */ 0xE5 /* 'e' -> */, -/* pos 027b: 311 */ 0xF4 /* 't' -> */, -/* pos 027c: 312 */ 0xE8 /* 'h' -> */, -/* pos 027d: 313 */ 0xEF /* 'o' -> */, -/* pos 027e: 314 */ 0xE4 /* 'd' -> */, -/* pos 027f: 315 */ 0xBA /* ':' -> */, -/* pos 0280: 316 */ 0x00, 0x24 /* - terminal marker 36 - */, -/* pos 0282: 317 */ 0xE1 /* 'a' -> */, -/* pos 0283: 318 */ 0xF4 /* 't' -> */, -/* pos 0284: 319 */ 0xE8 /* 'h' -> */, -/* pos 0285: 320 */ 0xBA /* ':' -> */, -/* pos 0286: 321 */ 0x00, 0x25 /* - terminal marker 37 - */, -/* pos 0288: 322 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x028F state 323) */, - 0x74 /* 't' */, 0x0B, 0x00 /* (to 0x0296 state 329) */, - 0x08, /* fail */ -/* pos 028f: 323 */ 0xE8 /* 'h' -> */, -/* pos 0290: 324 */ 0xE5 /* 'e' -> */, -/* pos 0291: 325 */ 0xED /* 'm' -> */, -/* pos 0292: 326 */ 0xE5 /* 'e' -> */, -/* pos 0293: 327 */ 0xBA /* ':' -> */, -/* pos 0294: 328 */ 0x00, 0x26 /* - terminal marker 38 - */, -/* pos 0296: 329 */ 0xE1 /* 'a' -> */, -/* pos 0297: 330 */ 0xF4 /* 't' -> */, -/* pos 0298: 331 */ 0xF5 /* 'u' -> */, -/* pos 0299: 332 */ 0xF3 /* 's' -> */, -/* pos 029a: 333 */ 0xBA /* ':' -> */, -/* pos 029b: 334 */ 0x00, 0x27 /* - terminal marker 39 - */, -/* pos 029d: 335 */ 0xE8 /* 'h' -> */, -/* pos 029e: 336 */ 0xE1 /* 'a' -> */, -/* pos 029f: 337 */ 0xF2 /* 'r' -> */, -/* pos 02a0: 338 */ 0xF3 /* 's' -> */, -/* pos 02a1: 339 */ 0xE5 /* 'e' -> */, -/* pos 02a2: 340 */ 0xF4 /* 't' -> */, -/* pos 02a3: 341 */ 0xBA /* ':' -> */, -/* pos 02a4: 342 */ 0x00, 0x28 /* - terminal marker 40 - */, -/* pos 02a6: 343 */ 0xE1 /* 'a' -> */, -/* pos 02a7: 344 */ 0xEE /* 'n' -> */, -/* pos 02a8: 345 */ 0xE7 /* 'g' -> */, -/* pos 02a9: 346 */ 0xE5 /* 'e' -> */, -/* pos 02aa: 347 */ 0xF3 /* 's' -> */, -/* pos 02ab: 348 */ 0xBA /* ':' -> */, -/* pos 02ac: 349 */ 0x00, 0x29 /* - terminal marker 41 - */, -/* pos 02ae: 350 */ 0xEC /* 'l' -> */, -/* pos 02af: 351 */ 0xEC /* 'l' -> */, -/* pos 02b0: 352 */ 0xEF /* 'o' -> */, -/* pos 02b1: 353 */ 0xF7 /* 'w' -> */, -/* pos 02b2: 354 */ 0xAD /* '-' -> */, -/* pos 02b3: 355 */ 0xEF /* 'o' -> */, -/* pos 02b4: 356 */ 0xF2 /* 'r' -> */, -/* pos 02b5: 357 */ 0xE9 /* 'i' -> */, -/* pos 02b6: 358 */ 0xE7 /* 'g' -> */, -/* pos 02b7: 359 */ 0xE9 /* 'i' -> */, -/* pos 02b8: 360 */ 0xEE /* 'n' -> */, -/* pos 02b9: 361 */ 0xBA /* ':' -> */, -/* pos 02ba: 362 */ 0x00, 0x2A /* - terminal marker 42 - */, -/* pos 02bc: 363 */ 0xE5 /* 'e' -> */, -/* pos 02bd: 364 */ 0xBA /* ':' -> */, -/* pos 02be: 365 */ 0x00, 0x2B /* - terminal marker 43 - */, -/* pos 02c0: 366 */ 0xEC /* 'l' -> */, -/* pos 02c1: 367 */ 0xEF /* 'o' -> */, -/* pos 02c2: 368 */ 0xF7 /* 'w' -> */, -/* pos 02c3: 369 */ 0xBA /* ':' -> */, -/* pos 02c4: 370 */ 0x00, 0x2C /* - terminal marker 44 - */, -/* pos 02c6: 371 */ 0xE9 /* 'i' -> */, -/* pos 02c7: 372 */ 0xF3 /* 's' -> */, -/* pos 02c8: 373 */ 0xF0 /* 'p' -> */, -/* pos 02c9: 374 */ 0xEF /* 'o' -> */, -/* pos 02ca: 375 */ 0xF3 /* 's' -> */, -/* pos 02cb: 376 */ 0xE9 /* 'i' -> */, -/* pos 02cc: 377 */ 0xF4 /* 't' -> */, -/* pos 02cd: 378 */ 0xE9 /* 'i' -> */, -/* pos 02ce: 379 */ 0xEF /* 'o' -> */, -/* pos 02cf: 380 */ 0xEE /* 'n' -> */, -/* pos 02d0: 381 */ 0xBA /* ':' -> */, -/* pos 02d1: 382 */ 0x00, 0x2D /* - terminal marker 45 - */, -/* pos 02d3: 383 */ 0xEE /* 'n' -> */, -/* pos 02d4: 384 */ 0xE3 /* 'c' -> */, -/* pos 02d5: 385 */ 0xEF /* 'o' -> */, -/* pos 02d6: 386 */ 0xE4 /* 'd' -> */, -/* pos 02d7: 387 */ 0xE9 /* 'i' -> */, -/* pos 02d8: 388 */ 0xEE /* 'n' -> */, -/* pos 02d9: 389 */ 0xE7 /* 'g' -> */, -/* pos 02da: 390 */ 0xBA /* ':' -> */, -/* pos 02db: 391 */ 0x00, 0x2E /* - terminal marker 46 - */, -/* pos 02dd: 392 */ 0xEE /* 'n' -> */, -/* pos 02de: 393 */ 0xE7 /* 'g' -> */, -/* pos 02df: 394 */ 0xF5 /* 'u' -> */, -/* pos 02e0: 395 */ 0xE1 /* 'a' -> */, -/* pos 02e1: 396 */ 0xE7 /* 'g' -> */, -/* pos 02e2: 397 */ 0xE5 /* 'e' -> */, -/* pos 02e3: 398 */ 0xBA /* ':' -> */, -/* pos 02e4: 399 */ 0x00, 0x2F /* - terminal marker 47 - */, -/* pos 02e6: 400 */ 0xE3 /* 'c' -> */, -/* pos 02e7: 401 */ 0xE1 /* 'a' -> */, -/* pos 02e8: 402 */ 0xF4 /* 't' -> */, -/* pos 02e9: 403 */ 0xE9 /* 'i' -> */, -/* pos 02ea: 404 */ 0xEF /* 'o' -> */, -/* pos 02eb: 405 */ 0xEE /* 'n' -> */, -/* pos 02ec: 406 */ 0xBA /* ':' -> */, -/* pos 02ed: 407 */ 0x00, 0x30 /* - terminal marker 48 - */, -/* pos 02ef: 408 */ 0xE1 /* 'a' -> */, -/* pos 02f0: 409 */ 0xEE /* 'n' -> */, -/* pos 02f1: 410 */ 0xE7 /* 'g' -> */, -/* pos 02f2: 411 */ 0xE5 /* 'e' -> */, -/* pos 02f3: 412 */ 0xBA /* ':' -> */, -/* pos 02f4: 413 */ 0x00, 0x31 /* - terminal marker 49 - */, -/* pos 02f6: 414 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x02FD state 415) */, - 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x0302 state 419) */, - 0x08, /* fail */ -/* pos 02fd: 415 */ 0xE1 /* 'a' -> */, -/* pos 02fe: 416 */ 0xE7 /* 'g' -> */, -/* pos 02ff: 417 */ 0xBA /* ':' -> */, -/* pos 0300: 418 */ 0x00, 0x32 /* - terminal marker 50 - */, -/* pos 0302: 419 */ 0xF0 /* 'p' -> */, -/* pos 0303: 420 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x030A state 421) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x030F state 425) */, - 0x08, /* fail */ -/* pos 030a: 421 */ 0xE3 /* 'c' -> */, -/* pos 030b: 422 */ 0xF4 /* 't' -> */, -/* pos 030c: 423 */ 0xBA /* ':' -> */, -/* pos 030d: 424 */ 0x00, 0x33 /* - terminal marker 51 - */, -/* pos 030f: 425 */ 0xF2 /* 'r' -> */, -/* pos 0310: 426 */ 0xE5 /* 'e' -> */, -/* pos 0311: 427 */ 0xF3 /* 's' -> */, -/* pos 0312: 428 */ 0xBA /* ':' -> */, -/* pos 0313: 429 */ 0x00, 0x34 /* - terminal marker 52 - */, -/* pos 0315: 430 */ 0xF2 /* 'r' -> */, -/* pos 0316: 431 */ 0xEF /* 'o' -> */, -/* pos 0317: 432 */ 0xED /* 'm' -> */, -/* pos 0318: 433 */ 0xBA /* ':' -> */, -/* pos 0319: 434 */ 0x00, 0x35 /* - terminal marker 53 - */, -/* pos 031b: 435 */ 0xF4 /* 't' -> */, -/* pos 031c: 436 */ 0xE3 /* 'c' -> */, -/* pos 031d: 437 */ 0xE8 /* 'h' -> */, -/* pos 031e: 438 */ 0xBA /* ':' -> */, -/* pos 031f: 439 */ 0x00, 0x36 /* - terminal marker 54 - */, -/* pos 0321: 440 */ 0xE1 /* 'a' -> */, -/* pos 0322: 441 */ 0xEE /* 'n' -> */, -/* pos 0323: 442 */ 0xE7 /* 'g' -> */, -/* pos 0324: 443 */ 0xE5 /* 'e' -> */, -/* pos 0325: 444 */ 0xBA /* ':' -> */, -/* pos 0326: 445 */ 0x00, 0x37 /* - terminal marker 55 - */, -/* pos 0328: 446 */ 0xEE /* 'n' -> */, -/* pos 0329: 447 */ 0xED /* 'm' -> */, -/* pos 032a: 448 */ 0xEF /* 'o' -> */, -/* pos 032b: 449 */ 0xE4 /* 'd' -> */, -/* pos 032c: 450 */ 0xE9 /* 'i' -> */, -/* pos 032d: 451 */ 0xE6 /* 'f' -> */, -/* pos 032e: 452 */ 0xE9 /* 'i' -> */, -/* pos 032f: 453 */ 0xE5 /* 'e' -> */, -/* pos 0330: 454 */ 0xE4 /* 'd' -> */, -/* pos 0331: 455 */ 0xAD /* '-' -> */, -/* pos 0332: 456 */ 0xF3 /* 's' -> */, -/* pos 0333: 457 */ 0xE9 /* 'i' -> */, -/* pos 0334: 458 */ 0xEE /* 'n' -> */, -/* pos 0335: 459 */ 0xE3 /* 'c' -> */, -/* pos 0336: 460 */ 0xE5 /* 'e' -> */, -/* pos 0337: 461 */ 0xBA /* ':' -> */, -/* pos 0338: 462 */ 0x00, 0x38 /* - terminal marker 56 - */, -/* pos 033a: 463 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x0344 state 464) */, - 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x0352 state 477) */, - 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x0357 state 481) */, - 0x08, /* fail */ -/* pos 0344: 464 */ 0xF3 /* 's' -> */, -/* pos 0345: 465 */ 0xF4 /* 't' -> */, -/* pos 0346: 466 */ 0xAD /* '-' -> */, -/* pos 0347: 467 */ 0xED /* 'm' -> */, -/* pos 0348: 468 */ 0xEF /* 'o' -> */, -/* pos 0349: 469 */ 0xE4 /* 'd' -> */, -/* pos 034a: 470 */ 0xE9 /* 'i' -> */, -/* pos 034b: 471 */ 0xE6 /* 'f' -> */, -/* pos 034c: 472 */ 0xE9 /* 'i' -> */, -/* pos 034d: 473 */ 0xE5 /* 'e' -> */, -/* pos 034e: 474 */ 0xE4 /* 'd' -> */, -/* pos 034f: 475 */ 0xBA /* ':' -> */, -/* pos 0350: 476 */ 0x00, 0x39 /* - terminal marker 57 - */, -/* pos 0352: 477 */ 0xEE /* 'n' -> */, -/* pos 0353: 478 */ 0xEB /* 'k' -> */, -/* pos 0354: 479 */ 0xBA /* ':' -> */, -/* pos 0355: 480 */ 0x00, 0x3A /* - terminal marker 58 - */, -/* pos 0357: 481 */ 0xE3 /* 'c' -> */, -/* pos 0358: 482 */ 0xE1 /* 'a' -> */, -/* pos 0359: 483 */ 0xF4 /* 't' -> */, -/* pos 035a: 484 */ 0xE9 /* 'i' -> */, -/* pos 035b: 485 */ 0xEF /* 'o' -> */, -/* pos 035c: 486 */ 0xEE /* 'n' -> */, -/* pos 035d: 487 */ 0xBA /* ':' -> */, -/* pos 035e: 488 */ 0x00, 0x3B /* - terminal marker 59 - */, -/* pos 0360: 489 */ 0xE1 /* 'a' -> */, -/* pos 0361: 490 */ 0xF8 /* 'x' -> */, -/* pos 0362: 491 */ 0xAD /* '-' -> */, -/* pos 0363: 492 */ 0xE6 /* 'f' -> */, -/* pos 0364: 493 */ 0xEF /* 'o' -> */, -/* pos 0365: 494 */ 0xF2 /* 'r' -> */, -/* pos 0366: 495 */ 0xF7 /* 'w' -> */, -/* pos 0367: 496 */ 0xE1 /* 'a' -> */, -/* pos 0368: 497 */ 0xF2 /* 'r' -> */, -/* pos 0369: 498 */ 0xE4 /* 'd' -> */, -/* pos 036a: 499 */ 0xF3 /* 's' -> */, -/* pos 036b: 500 */ 0xBA /* ':' -> */, -/* pos 036c: 501 */ 0x00, 0x3C /* - terminal marker 60 - */, -/* pos 036e: 502 */ 0xF8 /* 'x' -> */, -/* pos 036f: 503 */ 0xF9 /* 'y' -> */, -/* pos 0370: 504 */ 0x2D /* '-' */, 0x07, 0x00 /* (to 0x0377 state 505) */, - 0x20 /* ' ' */, 0x9F, 0x00 /* (to 0x0412 state 636) */, - 0x08, /* fail */ -/* pos 0377: 505 */ 0xE1 /* 'a' -> */, -/* pos 0378: 506 */ 0xF5 /* 'u' -> */, -/* pos 0379: 507 */ 0xF4 /* 't' -> */, -/* pos 037a: 508 */ 0xE8 /* 'h' -> */, -/* pos 037b: 509 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0382 state 510) */, - 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x038C state 519) */, - 0x08, /* fail */ -/* pos 0382: 510 */ 0xEE /* 'n' -> */, -/* pos 0383: 511 */ 0xF4 /* 't' -> */, -/* pos 0384: 512 */ 0xE9 /* 'i' -> */, -/* pos 0385: 513 */ 0xE3 /* 'c' -> */, -/* pos 0386: 514 */ 0xE1 /* 'a' -> */, -/* pos 0387: 515 */ 0xF4 /* 't' -> */, -/* pos 0388: 516 */ 0xE5 /* 'e' -> */, -/* pos 0389: 517 */ 0xBA /* ':' -> */, -/* pos 038a: 518 */ 0x00, 0x3D /* - terminal marker 61 - */, -/* pos 038c: 519 */ 0xF2 /* 'r' -> */, -/* pos 038d: 520 */ 0xE9 /* 'i' -> */, -/* pos 038e: 521 */ 0xFA /* 'z' -> */, -/* pos 038f: 522 */ 0xE1 /* 'a' -> */, -/* pos 0390: 523 */ 0xF4 /* 't' -> */, -/* pos 0391: 524 */ 0xE9 /* 'i' -> */, -/* pos 0392: 525 */ 0xEF /* 'o' -> */, -/* pos 0393: 526 */ 0xEE /* 'n' -> */, -/* pos 0394: 527 */ 0xBA /* ':' -> */, -/* pos 0395: 528 */ 0x00, 0x3E /* - terminal marker 62 - */, -/* pos 0397: 529 */ 0xE5 /* 'e' -> */, -/* pos 0398: 530 */ 0xF3 /* 's' -> */, -/* pos 0399: 531 */ 0xE8 /* 'h' -> */, -/* pos 039a: 532 */ 0xBA /* ':' -> */, -/* pos 039b: 533 */ 0x00, 0x3F /* - terminal marker 63 - */, -/* pos 039d: 534 */ 0xF2 /* 'r' -> */, -/* pos 039e: 535 */ 0xF9 /* 'y' -> */, -/* pos 039f: 536 */ 0xAD /* '-' -> */, -/* pos 03a0: 537 */ 0xE1 /* 'a' -> */, -/* pos 03a1: 538 */ 0xE6 /* 'f' -> */, -/* pos 03a2: 539 */ 0xF4 /* 't' -> */, -/* pos 03a3: 540 */ 0xE5 /* 'e' -> */, -/* pos 03a4: 541 */ 0xF2 /* 'r' -> */, -/* pos 03a5: 542 */ 0xBA /* ':' -> */, -/* pos 03a6: 543 */ 0x00, 0x40 /* - terminal marker 64 - */, -/* pos 03a8: 544 */ 0xF6 /* 'v' -> */, -/* pos 03a9: 545 */ 0xE5 /* 'e' -> */, -/* pos 03aa: 546 */ 0xF2 /* 'r' -> */, -/* pos 03ab: 547 */ 0xBA /* ':' -> */, -/* pos 03ac: 548 */ 0x00, 0x41 /* - terminal marker 65 - */, -/* pos 03ae: 549 */ 0xAD /* '-' -> */, -/* pos 03af: 550 */ 0xE3 /* 'c' -> */, -/* pos 03b0: 551 */ 0xEF /* 'o' -> */, -/* pos 03b1: 552 */ 0xEF /* 'o' -> */, -/* pos 03b2: 553 */ 0xEB /* 'k' -> */, -/* pos 03b3: 554 */ 0xE9 /* 'i' -> */, -/* pos 03b4: 555 */ 0xE5 /* 'e' -> */, -/* pos 03b5: 556 */ 0xBA /* ':' -> */, -/* pos 03b6: 557 */ 0x00, 0x42 /* - terminal marker 66 - */, -/* pos 03b8: 558 */ 0xF2 /* 'r' -> */, -/* pos 03b9: 559 */ 0xE9 /* 'i' -> */, -/* pos 03ba: 560 */ 0xE3 /* 'c' -> */, -/* pos 03bb: 561 */ 0xF4 /* 't' -> */, -/* pos 03bc: 562 */ 0xAD /* '-' -> */, -/* pos 03bd: 563 */ 0xF4 /* 't' -> */, -/* pos 03be: 564 */ 0xF2 /* 'r' -> */, -/* pos 03bf: 565 */ 0xE1 /* 'a' -> */, -/* pos 03c0: 566 */ 0xEE /* 'n' -> */, -/* pos 03c1: 567 */ 0xF3 /* 's' -> */, -/* pos 03c2: 568 */ 0xF0 /* 'p' -> */, -/* pos 03c3: 569 */ 0xEF /* 'o' -> */, -/* pos 03c4: 570 */ 0xF2 /* 'r' -> */, -/* pos 03c5: 571 */ 0xF4 /* 't' -> */, -/* pos 03c6: 572 */ 0xAD /* '-' -> */, -/* pos 03c7: 573 */ 0xF3 /* 's' -> */, -/* pos 03c8: 574 */ 0xE5 /* 'e' -> */, -/* pos 03c9: 575 */ 0xE3 /* 'c' -> */, -/* pos 03ca: 576 */ 0xF5 /* 'u' -> */, -/* pos 03cb: 577 */ 0xF2 /* 'r' -> */, -/* pos 03cc: 578 */ 0xE9 /* 'i' -> */, -/* pos 03cd: 579 */ 0xF4 /* 't' -> */, -/* pos 03ce: 580 */ 0xF9 /* 'y' -> */, -/* pos 03cf: 581 */ 0xBA /* ':' -> */, -/* pos 03d0: 582 */ 0x00, 0x43 /* - terminal marker 67 - */, -/* pos 03d2: 583 */ 0xF2 /* 'r' -> */, -/* pos 03d3: 584 */ 0xE1 /* 'a' -> */, -/* pos 03d4: 585 */ 0xEE /* 'n' -> */, -/* pos 03d5: 586 */ 0xF3 /* 's' -> */, -/* pos 03d6: 587 */ 0xE6 /* 'f' -> */, -/* pos 03d7: 588 */ 0xE5 /* 'e' -> */, -/* pos 03d8: 589 */ 0xF2 /* 'r' -> */, -/* pos 03d9: 590 */ 0xAD /* '-' -> */, -/* pos 03da: 591 */ 0xE5 /* 'e' -> */, -/* pos 03db: 592 */ 0xEE /* 'n' -> */, -/* pos 03dc: 593 */ 0xE3 /* 'c' -> */, -/* pos 03dd: 594 */ 0xEF /* 'o' -> */, -/* pos 03de: 595 */ 0xE4 /* 'd' -> */, -/* pos 03df: 596 */ 0xE9 /* 'i' -> */, -/* pos 03e0: 597 */ 0xEE /* 'n' -> */, -/* pos 03e1: 598 */ 0xE7 /* 'g' -> */, -/* pos 03e2: 599 */ 0xBA /* ':' -> */, -/* pos 03e3: 600 */ 0x00, 0x44 /* - terminal marker 68 - */, -/* pos 03e5: 601 */ 0xE5 /* 'e' -> */, -/* pos 03e6: 602 */ 0xF2 /* 'r' -> */, -/* pos 03e7: 603 */ 0xAD /* '-' -> */, -/* pos 03e8: 604 */ 0xE1 /* 'a' -> */, -/* pos 03e9: 605 */ 0xE7 /* 'g' -> */, -/* pos 03ea: 606 */ 0xE5 /* 'e' -> */, -/* pos 03eb: 607 */ 0xEE /* 'n' -> */, -/* pos 03ec: 608 */ 0xF4 /* 't' -> */, -/* pos 03ed: 609 */ 0xBA /* ':' -> */, -/* pos 03ee: 610 */ 0x00, 0x45 /* - terminal marker 69 - */, -/* pos 03f0: 611 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x03F7 state 612) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x03FC state 616) */, - 0x08, /* fail */ -/* pos 03f7: 612 */ 0xF2 /* 'r' -> */, -/* pos 03f8: 613 */ 0xF9 /* 'y' -> */, -/* pos 03f9: 614 */ 0xBA /* ':' -> */, -/* pos 03fa: 615 */ 0x00, 0x46 /* - terminal marker 70 - */, -/* pos 03fc: 616 */ 0xE1 /* 'a' -> */, -/* pos 03fd: 617 */ 0xBA /* ':' -> */, -/* pos 03fe: 618 */ 0x00, 0x47 /* - terminal marker 71 - */, -/* pos 0400: 619 */ 0xF7 /* 'w' -> */, -/* pos 0401: 620 */ 0xF7 /* 'w' -> */, -/* pos 0402: 621 */ 0xAD /* '-' -> */, -/* pos 0403: 622 */ 0xE1 /* 'a' -> */, -/* pos 0404: 623 */ 0xF5 /* 'u' -> */, -/* pos 0405: 624 */ 0xF4 /* 't' -> */, -/* pos 0406: 625 */ 0xE8 /* 'h' -> */, -/* pos 0407: 626 */ 0xE5 /* 'e' -> */, -/* pos 0408: 627 */ 0xEE /* 'n' -> */, -/* pos 0409: 628 */ 0xF4 /* 't' -> */, -/* pos 040a: 629 */ 0xE9 /* 'i' -> */, -/* pos 040b: 630 */ 0xE3 /* 'c' -> */, -/* pos 040c: 631 */ 0xE1 /* 'a' -> */, -/* pos 040d: 632 */ 0xF4 /* 't' -> */, -/* pos 040e: 633 */ 0xE5 /* 'e' -> */, -/* pos 040f: 634 */ 0xBA /* ':' -> */, -/* pos 0410: 635 */ 0x00, 0x48 /* - terminal marker 72 - */, -/* pos 0412: 636 */ 0x00, 0x49 /* - terminal marker 73 - */, -/* pos 0414: 637 */ 0xF4 /* 't' -> */, -/* pos 0415: 638 */ 0xE3 /* 'c' -> */, -/* pos 0416: 639 */ 0xE8 /* 'h' -> */, -/* pos 0417: 640 */ 0x00, 0x4A /* - terminal marker 74 - */, -/* pos 0419: 641 */ 0xF4 /* 't' -> */, -/* pos 041a: 642 */ 0x00, 0x4B /* - terminal marker 75 - */, -/* pos 041c: 643 */ 0xEC /* 'l' -> */, -/* pos 041d: 644 */ 0xE5 /* 'e' -> */, -/* pos 041e: 645 */ 0xF4 /* 't' -> */, -/* pos 041f: 646 */ 0xE5 /* 'e' -> */, -/* pos 0420: 647 */ 0x00, 0x4C /* - terminal marker 76 - */, -/* total size 1058 bytes */ +/* pos 0000: 0 */ 0x67 /* 'g' */, 0x25, 0x00 /* (to 0x0025 state 1) */, + 0x70 /* 'p' */, 0x27, 0x00 /* (to 0x002A state 5) */, + 0x6F /* 'o' */, 0x30, 0x00 /* (to 0x0036 state 10) */, + 0x68 /* 'h' */, 0x3C, 0x00 /* (to 0x0045 state 18) */, + 0x63 /* 'c' */, 0x45, 0x00 /* (to 0x0051 state 23) */, + 0x73 /* 's' */, 0x60, 0x00 /* (to 0x006F state 34) */, + 0x75 /* 'u' */, 0x9F, 0x00 /* (to 0x00B1 state 64) */, + 0x0D /* '.' */, 0xB3, 0x00 /* (to 0x00C8 state 84) */, + 0x61 /* 'a' */, 0xEA, 0x00 /* (to 0x0102 state 134) */, + 0x69 /* 'i' */, 0x1D, 0x01 /* (to 0x0138 state 168) */, + 0x64 /* 'd' */, 0x9C, 0x01 /* (to 0x01BA state 270) */, + 0x72 /* 'r' */, 0x9F, 0x01 /* (to 0x01C0 state 275) */, + 0x08, /* fail */ +/* pos 0025: 1 */ 0xE5 /* 'e' -> */, +/* pos 0026: 2 */ 0xF4 /* 't' -> */, +/* pos 0027: 3 */ 0xA0 /* ' ' -> */, +/* pos 0028: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, +/* pos 002a: 5 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0031 state 6) */, + 0x72 /* 'r' */, 0x4B, 0x01 /* (to 0x0178 state 216) */, + 0x08, /* fail */ +/* pos 0031: 6 */ 0xF3 /* 's' -> */, +/* pos 0032: 7 */ 0xF4 /* 't' -> */, +/* pos 0033: 8 */ 0xA0 /* ' ' -> */, +/* pos 0034: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, +/* pos 0036: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x003D state 11) */, + 0x72 /* 'r' */, 0x81, 0x00 /* (to 0x00BA state 72) */, + 0x08, /* fail */ +/* pos 003d: 11 */ 0xF4 /* 't' -> */, +/* pos 003e: 12 */ 0xE9 /* 'i' -> */, +/* pos 003f: 13 */ 0xEF /* 'o' -> */, +/* pos 0040: 14 */ 0xEE /* 'n' -> */, +/* pos 0041: 15 */ 0xF3 /* 's' -> */, +/* pos 0042: 16 */ 0xA0 /* ' ' -> */, +/* pos 0043: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, +/* pos 0045: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x004C state 19) */, + 0x74 /* 't' */, 0xB1, 0x00 /* (to 0x00F9 state 126) */, + 0x08, /* fail */ +/* pos 004c: 19 */ 0xF3 /* 's' -> */, +/* pos 004d: 20 */ 0xF4 /* 't' -> */, +/* pos 004e: 21 */ 0xBA /* ':' -> */, +/* pos 004f: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, +/* pos 0051: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0058 state 24) */, + 0x61 /* 'a' */, 0x2B, 0x01 /* (to 0x017F state 222) */, + 0x08, /* fail */ +/* pos 0058: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x005F state 25) */, + 0x6F /* 'o' */, 0x40, 0x01 /* (to 0x019B state 248) */, + 0x08, /* fail */ +/* pos 005f: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0066 state 26) */, + 0x74 /* 't' */, 0x3F, 0x01 /* (to 0x01A1 state 253) */, + 0x08, /* fail */ +/* pos 0066: 26 */ 0xE5 /* 'e' -> */, +/* pos 0067: 27 */ 0xE3 /* 'c' -> */, +/* pos 0068: 28 */ 0xF4 /* 't' -> */, +/* pos 0069: 29 */ 0xE9 /* 'i' -> */, +/* pos 006a: 30 */ 0xEF /* 'o' -> */, +/* pos 006b: 31 */ 0xEE /* 'n' -> */, +/* pos 006c: 32 */ 0xBA /* ':' -> */, +/* pos 006d: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, +/* pos 006f: 34 */ 0xE5 /* 'e' -> */, +/* pos 0070: 35 */ 0xE3 /* 'c' -> */, +/* pos 0071: 36 */ 0xAD /* '-' -> */, +/* pos 0072: 37 */ 0xF7 /* 'w' -> */, +/* pos 0073: 38 */ 0xE5 /* 'e' -> */, +/* pos 0074: 39 */ 0xE2 /* 'b' -> */, +/* pos 0075: 40 */ 0xF3 /* 's' -> */, +/* pos 0076: 41 */ 0xEF /* 'o' -> */, +/* pos 0077: 42 */ 0xE3 /* 'c' -> */, +/* pos 0078: 43 */ 0xEB /* 'k' -> */, +/* pos 0079: 44 */ 0xE5 /* 'e' -> */, +/* pos 007a: 45 */ 0xF4 /* 't' -> */, +/* pos 007b: 46 */ 0xAD /* '-' -> */, +/* pos 007c: 47 */ 0x6B /* 'k' */, 0x19, 0x00 /* (to 0x0095 state 48) */, + 0x70 /* 'p' */, 0x28, 0x00 /* (to 0x00A7 state 55) */, + 0x64 /* 'd' */, 0x3F, 0x00 /* (to 0x00C1 state 78) */, + 0x76 /* 'v' */, 0x48, 0x00 /* (to 0x00CD state 87) */, + 0x6F /* 'o' */, 0x4E, 0x00 /* (to 0x00D6 state 95) */, + 0x65 /* 'e' */, 0x53, 0x00 /* (to 0x00DE state 102) */, + 0x61 /* 'a' */, 0x5C, 0x00 /* (to 0x00EA state 113) */, + 0x6E /* 'n' */, 0x61, 0x00 /* (to 0x00F2 state 120) */, + 0x08, /* fail */ +/* pos 0095: 48 */ 0xE5 /* 'e' -> */, +/* pos 0096: 49 */ 0xF9 /* 'y' -> */, +/* pos 0097: 50 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00A1 state 51) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00A4 state 53) */, + 0x3A /* ':' */, 0x2E, 0x00 /* (to 0x00CB state 86) */, + 0x08, /* fail */ +/* pos 00a1: 51 */ 0xBA /* ':' -> */, +/* pos 00a2: 52 */ 0x00, 0x05 /* - terminal marker 5 - */, +/* pos 00a4: 53 */ 0xBA /* ':' -> */, +/* pos 00a5: 54 */ 0x00, 0x06 /* - terminal marker 6 - */, +/* pos 00a7: 55 */ 0xF2 /* 'r' -> */, +/* pos 00a8: 56 */ 0xEF /* 'o' -> */, +/* pos 00a9: 57 */ 0xF4 /* 't' -> */, +/* pos 00aa: 58 */ 0xEF /* 'o' -> */, +/* pos 00ab: 59 */ 0xE3 /* 'c' -> */, +/* pos 00ac: 60 */ 0xEF /* 'o' -> */, +/* pos 00ad: 61 */ 0xEC /* 'l' -> */, +/* pos 00ae: 62 */ 0xBA /* ':' -> */, +/* pos 00af: 63 */ 0x00, 0x07 /* - terminal marker 7 - */, +/* pos 00b1: 64 */ 0xF0 /* 'p' -> */, +/* pos 00b2: 65 */ 0xE7 /* 'g' -> */, +/* pos 00b3: 66 */ 0xF2 /* 'r' -> */, +/* pos 00b4: 67 */ 0xE1 /* 'a' -> */, +/* pos 00b5: 68 */ 0xE4 /* 'd' -> */, +/* pos 00b6: 69 */ 0xE5 /* 'e' -> */, +/* pos 00b7: 70 */ 0xBA /* ':' -> */, +/* pos 00b8: 71 */ 0x00, 0x08 /* - terminal marker 8 - */, +/* pos 00ba: 72 */ 0xE9 /* 'i' -> */, +/* pos 00bb: 73 */ 0xE7 /* 'g' -> */, +/* pos 00bc: 74 */ 0xE9 /* 'i' -> */, +/* pos 00bd: 75 */ 0xEE /* 'n' -> */, +/* pos 00be: 76 */ 0xBA /* ':' -> */, +/* pos 00bf: 77 */ 0x00, 0x09 /* - terminal marker 9 - */, +/* pos 00c1: 78 */ 0xF2 /* 'r' -> */, +/* pos 00c2: 79 */ 0xE1 /* 'a' -> */, +/* pos 00c3: 80 */ 0xE6 /* 'f' -> */, +/* pos 00c4: 81 */ 0xF4 /* 't' -> */, +/* pos 00c5: 82 */ 0xBA /* ':' -> */, +/* pos 00c6: 83 */ 0x00, 0x0A /* - terminal marker 10 - */, +/* pos 00c8: 84 */ 0x8A /* '.' -> */, +/* pos 00c9: 85 */ 0x00, 0x0B /* - terminal marker 11 - */, +/* pos 00cb: 86 */ 0x00, 0x0C /* - terminal marker 12 - */, +/* pos 00cd: 87 */ 0xE5 /* 'e' -> */, +/* pos 00ce: 88 */ 0xF2 /* 'r' -> */, +/* pos 00cf: 89 */ 0xF3 /* 's' -> */, +/* pos 00d0: 90 */ 0xE9 /* 'i' -> */, +/* pos 00d1: 91 */ 0xEF /* 'o' -> */, +/* pos 00d2: 92 */ 0xEE /* 'n' -> */, +/* pos 00d3: 93 */ 0xBA /* ':' -> */, +/* pos 00d4: 94 */ 0x00, 0x0D /* - terminal marker 13 - */, +/* pos 00d6: 95 */ 0xF2 /* 'r' -> */, +/* pos 00d7: 96 */ 0xE9 /* 'i' -> */, +/* pos 00d8: 97 */ 0xE7 /* 'g' -> */, +/* pos 00d9: 98 */ 0xE9 /* 'i' -> */, +/* pos 00da: 99 */ 0xEE /* 'n' -> */, +/* pos 00db: 100 */ 0xBA /* ':' -> */, +/* pos 00dc: 101 */ 0x00, 0x0E /* - terminal marker 14 - */, +/* pos 00de: 102 */ 0xF8 /* 'x' -> */, +/* pos 00df: 103 */ 0xF4 /* 't' -> */, +/* pos 00e0: 104 */ 0xE5 /* 'e' -> */, +/* pos 00e1: 105 */ 0xEE /* 'n' -> */, +/* pos 00e2: 106 */ 0xF3 /* 's' -> */, +/* pos 00e3: 107 */ 0xE9 /* 'i' -> */, +/* pos 00e4: 108 */ 0xEF /* 'o' -> */, +/* pos 00e5: 109 */ 0xEE /* 'n' -> */, +/* pos 00e6: 110 */ 0xF3 /* 's' -> */, +/* pos 00e7: 111 */ 0xBA /* ':' -> */, +/* pos 00e8: 112 */ 0x00, 0x0F /* - terminal marker 15 - */, +/* pos 00ea: 113 */ 0xE3 /* 'c' -> */, +/* pos 00eb: 114 */ 0xE3 /* 'c' -> */, +/* pos 00ec: 115 */ 0xE5 /* 'e' -> */, +/* pos 00ed: 116 */ 0xF0 /* 'p' -> */, +/* pos 00ee: 117 */ 0xF4 /* 't' -> */, +/* pos 00ef: 118 */ 0xBA /* ':' -> */, +/* pos 00f0: 119 */ 0x00, 0x10 /* - terminal marker 16 - */, +/* pos 00f2: 120 */ 0xEF /* 'o' -> */, +/* pos 00f3: 121 */ 0xEE /* 'n' -> */, +/* pos 00f4: 122 */ 0xE3 /* 'c' -> */, +/* pos 00f5: 123 */ 0xE5 /* 'e' -> */, +/* pos 00f6: 124 */ 0xBA /* ':' -> */, +/* pos 00f7: 125 */ 0x00, 0x11 /* - terminal marker 17 - */, +/* pos 00f9: 126 */ 0xF4 /* 't' -> */, +/* pos 00fa: 127 */ 0xF0 /* 'p' -> */, +/* pos 00fb: 128 */ 0xAF /* '/' -> */, +/* pos 00fc: 129 */ 0xB1 /* '1' -> */, +/* pos 00fd: 130 */ 0xAE /* '.' -> */, +/* pos 00fe: 131 */ 0xB1 /* '1' -> */, +/* pos 00ff: 132 */ 0xA0 /* ' ' -> */, +/* pos 0100: 133 */ 0x00, 0x12 /* - terminal marker 18 - */, +/* pos 0102: 134 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x0109 state 135) */, + 0x75 /* 'u' */, 0x88, 0x00 /* (to 0x018D state 235) */, + 0x08, /* fail */ +/* pos 0109: 135 */ 0xE3 /* 'c' -> */, +/* pos 010a: 136 */ 0xE5 /* 'e' -> */, +/* pos 010b: 137 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0112 state 138) */, + 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x011C state 141) */, + 0x08, /* fail */ +/* pos 0112: 138 */ 0xF4 /* 't' -> */, +/* pos 0113: 139 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x011A state 140) */, + 0x2D /* '-' */, 0x47, 0x00 /* (to 0x015D state 197) */, + 0x08, /* fail */ +/* pos 011a: 140 */ 0x00, 0x13 /* - terminal marker 19 - */, +/* pos 011c: 141 */ 0xF3 /* 's' -> */, +/* pos 011d: 142 */ 0xAD /* '-' -> */, +/* pos 011e: 143 */ 0xE3 /* 'c' -> */, +/* pos 011f: 144 */ 0xEF /* 'o' -> */, +/* pos 0120: 145 */ 0xEE /* 'n' -> */, +/* pos 0121: 146 */ 0xF4 /* 't' -> */, +/* pos 0122: 147 */ 0xF2 /* 'r' -> */, +/* pos 0123: 148 */ 0xEF /* 'o' -> */, +/* pos 0124: 149 */ 0xEC /* 'l' -> */, +/* pos 0125: 150 */ 0xAD /* '-' -> */, +/* pos 0126: 151 */ 0xF2 /* 'r' -> */, +/* pos 0127: 152 */ 0xE5 /* 'e' -> */, +/* pos 0128: 153 */ 0xF1 /* 'q' -> */, +/* pos 0129: 154 */ 0xF5 /* 'u' -> */, +/* pos 012a: 155 */ 0xE5 /* 'e' -> */, +/* pos 012b: 156 */ 0xF3 /* 's' -> */, +/* pos 012c: 157 */ 0xF4 /* 't' -> */, +/* pos 012d: 158 */ 0xAD /* '-' -> */, +/* pos 012e: 159 */ 0xE8 /* 'h' -> */, +/* pos 012f: 160 */ 0xE5 /* 'e' -> */, +/* pos 0130: 161 */ 0xE1 /* 'a' -> */, +/* pos 0131: 162 */ 0xE4 /* 'd' -> */, +/* pos 0132: 163 */ 0xE5 /* 'e' -> */, +/* pos 0133: 164 */ 0xF2 /* 'r' -> */, +/* pos 0134: 165 */ 0xF3 /* 's' -> */, +/* pos 0135: 166 */ 0xBA /* ':' -> */, +/* pos 0136: 167 */ 0x00, 0x14 /* - terminal marker 20 - */, +/* pos 0138: 168 */ 0xE6 /* 'f' -> */, +/* pos 0139: 169 */ 0xAD /* '-' -> */, +/* pos 013a: 170 */ 0x6D /* 'm' */, 0x07, 0x00 /* (to 0x0141 state 171) */, + 0x6E /* 'n' */, 0x14, 0x00 /* (to 0x0151 state 186) */, + 0x08, /* fail */ +/* pos 0141: 171 */ 0xEF /* 'o' -> */, +/* pos 0142: 172 */ 0xE4 /* 'd' -> */, +/* pos 0143: 173 */ 0xE9 /* 'i' -> */, +/* pos 0144: 174 */ 0xE6 /* 'f' -> */, +/* pos 0145: 175 */ 0xE9 /* 'i' -> */, +/* pos 0146: 176 */ 0xE5 /* 'e' -> */, +/* pos 0147: 177 */ 0xE4 /* 'd' -> */, +/* pos 0148: 178 */ 0xAD /* '-' -> */, +/* pos 0149: 179 */ 0xF3 /* 's' -> */, +/* pos 014a: 180 */ 0xE9 /* 'i' -> */, +/* pos 014b: 181 */ 0xEE /* 'n' -> */, +/* pos 014c: 182 */ 0xE3 /* 'c' -> */, +/* pos 014d: 183 */ 0xE5 /* 'e' -> */, +/* pos 014e: 184 */ 0xBA /* ':' -> */, +/* pos 014f: 185 */ 0x00, 0x15 /* - terminal marker 21 - */, +/* pos 0151: 186 */ 0xEF /* 'o' -> */, +/* pos 0152: 187 */ 0xEE /* 'n' -> */, +/* pos 0153: 188 */ 0xE5 /* 'e' -> */, +/* pos 0154: 189 */ 0xAD /* '-' -> */, +/* pos 0155: 190 */ 0xED /* 'm' -> */, +/* pos 0156: 191 */ 0xE1 /* 'a' -> */, +/* pos 0157: 192 */ 0xF4 /* 't' -> */, +/* pos 0158: 193 */ 0xE3 /* 'c' -> */, +/* pos 0159: 194 */ 0xE8 /* 'h' -> */, +/* pos 015a: 195 */ 0xBA /* ':' -> */, +/* pos 015b: 196 */ 0x00, 0x16 /* - terminal marker 22 - */, +/* pos 015d: 197 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0164 state 198) */, + 0x6C /* 'l' */, 0x0E, 0x00 /* (to 0x016E state 207) */, + 0x08, /* fail */ +/* pos 0164: 198 */ 0xEE /* 'n' -> */, +/* pos 0165: 199 */ 0xE3 /* 'c' -> */, +/* pos 0166: 200 */ 0xEF /* 'o' -> */, +/* pos 0167: 201 */ 0xE4 /* 'd' -> */, +/* pos 0168: 202 */ 0xE9 /* 'i' -> */, +/* pos 0169: 203 */ 0xEE /* 'n' -> */, +/* pos 016a: 204 */ 0xE7 /* 'g' -> */, +/* pos 016b: 205 */ 0xBA /* ':' -> */, +/* pos 016c: 206 */ 0x00, 0x17 /* - terminal marker 23 - */, +/* pos 016e: 207 */ 0xE1 /* 'a' -> */, +/* pos 016f: 208 */ 0xEE /* 'n' -> */, +/* pos 0170: 209 */ 0xE7 /* 'g' -> */, +/* pos 0171: 210 */ 0xF5 /* 'u' -> */, +/* pos 0172: 211 */ 0xE1 /* 'a' -> */, +/* pos 0173: 212 */ 0xE7 /* 'g' -> */, +/* pos 0174: 213 */ 0xE5 /* 'e' -> */, +/* pos 0175: 214 */ 0xBA /* ':' -> */, +/* pos 0176: 215 */ 0x00, 0x18 /* - terminal marker 24 - */, +/* pos 0178: 216 */ 0xE1 /* 'a' -> */, +/* pos 0179: 217 */ 0xE7 /* 'g' -> */, +/* pos 017a: 218 */ 0xED /* 'm' -> */, +/* pos 017b: 219 */ 0xE1 /* 'a' -> */, +/* pos 017c: 220 */ 0xBA /* ':' -> */, +/* pos 017d: 221 */ 0x00, 0x19 /* - terminal marker 25 - */, +/* pos 017f: 222 */ 0xE3 /* 'c' -> */, +/* pos 0180: 223 */ 0xE8 /* 'h' -> */, +/* pos 0181: 224 */ 0xE5 /* 'e' -> */, +/* pos 0182: 225 */ 0xAD /* '-' -> */, +/* pos 0183: 226 */ 0xE3 /* 'c' -> */, +/* pos 0184: 227 */ 0xEF /* 'o' -> */, +/* pos 0185: 228 */ 0xEE /* 'n' -> */, +/* pos 0186: 229 */ 0xF4 /* 't' -> */, +/* pos 0187: 230 */ 0xF2 /* 'r' -> */, +/* pos 0188: 231 */ 0xEF /* 'o' -> */, +/* pos 0189: 232 */ 0xEC /* 'l' -> */, +/* pos 018a: 233 */ 0xBA /* ':' -> */, +/* pos 018b: 234 */ 0x00, 0x1A /* - terminal marker 26 - */, +/* pos 018d: 235 */ 0xF4 /* 't' -> */, +/* pos 018e: 236 */ 0xE8 /* 'h' -> */, +/* pos 018f: 237 */ 0xEF /* 'o' -> */, +/* pos 0190: 238 */ 0xF2 /* 'r' -> */, +/* pos 0191: 239 */ 0xE9 /* 'i' -> */, +/* pos 0192: 240 */ 0xFA /* 'z' -> */, +/* pos 0193: 241 */ 0xE1 /* 'a' -> */, +/* pos 0194: 242 */ 0xF4 /* 't' -> */, +/* pos 0195: 243 */ 0xE9 /* 'i' -> */, +/* pos 0196: 244 */ 0xEF /* 'o' -> */, +/* pos 0197: 245 */ 0xEE /* 'n' -> */, +/* pos 0198: 246 */ 0xBA /* ':' -> */, +/* pos 0199: 247 */ 0x00, 0x1B /* - terminal marker 27 - */, +/* pos 019b: 248 */ 0xEB /* 'k' -> */, +/* pos 019c: 249 */ 0xE9 /* 'i' -> */, +/* pos 019d: 250 */ 0xE5 /* 'e' -> */, +/* pos 019e: 251 */ 0xBA /* ':' -> */, +/* pos 019f: 252 */ 0x00, 0x1C /* - terminal marker 28 - */, +/* pos 01a1: 253 */ 0xE5 /* 'e' -> */, +/* pos 01a2: 254 */ 0xEE /* 'n' -> */, +/* pos 01a3: 255 */ 0xF4 /* 't' -> */, +/* pos 01a4: 256 */ 0xAD /* '-' -> */, +/* pos 01a5: 257 */ 0x6C /* 'l' */, 0x07, 0x00 /* (to 0x01AC state 258) */, + 0x74 /* 't' */, 0x0C, 0x00 /* (to 0x01B4 state 265) */, + 0x08, /* fail */ +/* pos 01ac: 258 */ 0xE5 /* 'e' -> */, +/* pos 01ad: 259 */ 0xEE /* 'n' -> */, +/* pos 01ae: 260 */ 0xE7 /* 'g' -> */, +/* pos 01af: 261 */ 0xF4 /* 't' -> */, +/* pos 01b0: 262 */ 0xE8 /* 'h' -> */, +/* pos 01b1: 263 */ 0xBA /* ':' -> */, +/* pos 01b2: 264 */ 0x00, 0x1D /* - terminal marker 29 - */, +/* pos 01b4: 265 */ 0xF9 /* 'y' -> */, +/* pos 01b5: 266 */ 0xF0 /* 'p' -> */, +/* pos 01b6: 267 */ 0xE5 /* 'e' -> */, +/* pos 01b7: 268 */ 0xBA /* ':' -> */, +/* pos 01b8: 269 */ 0x00, 0x1E /* - terminal marker 30 - */, +/* pos 01ba: 270 */ 0xE1 /* 'a' -> */, +/* pos 01bb: 271 */ 0xF4 /* 't' -> */, +/* pos 01bc: 272 */ 0xE5 /* 'e' -> */, +/* pos 01bd: 273 */ 0xBA /* ':' -> */, +/* pos 01be: 274 */ 0x00, 0x1F /* - terminal marker 31 - */, +/* pos 01c0: 275 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01C7 state 276) */, + 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x01CD state 281) */, + 0x08, /* fail */ +/* pos 01c7: 276 */ 0xEE /* 'n' -> */, +/* pos 01c8: 277 */ 0xE7 /* 'g' -> */, +/* pos 01c9: 278 */ 0xE5 /* 'e' -> */, +/* pos 01ca: 279 */ 0xBA /* ':' -> */, +/* pos 01cb: 280 */ 0x00, 0x20 /* - terminal marker 32 - */, +/* pos 01cd: 281 */ 0xE6 /* 'f' -> */, +/* pos 01ce: 282 */ 0xE5 /* 'e' -> */, +/* pos 01cf: 283 */ 0xF2 /* 'r' -> */, +/* pos 01d0: 284 */ 0xE5 /* 'e' -> */, +/* pos 01d1: 285 */ 0xF2 /* 'r' -> */, +/* pos 01d2: 286 */ 0xBA /* ':' -> */, +/* pos 01d3: 287 */ 0x00, 0x21 /* - terminal marker 33 - */, +/* total size 469 bytes */ diff --git a/lib/libev.c b/lib/libev.c index eff7197f34..04a4b5be47 100755 --- a/lib/libev.c +++ b/lib/libev.c @@ -33,7 +33,7 @@ static void libwebsocket_accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents) { struct libwebsocket_pollfd eventfd; - struct lws_io_watcher *lws_io = container_of(watcher, struct lws_io_watcher, watcher); + struct lws_io_watcher *lws_io = (struct lws_io_watcher *)watcher; struct libwebsocket_context *context = lws_io->context; if (revents & EV_ERROR) @@ -65,8 +65,8 @@ libwebsocket_initloop( int status = 0; int backend; const char * backend_name; - struct ev_io *w_accept = &context->w_accept.watcher; - struct ev_signal *w_sigint = &context->w_sigint.watcher; + struct ev_io *w_accept = (ev_io *)&context->w_accept; + struct ev_signal *w_sigint = (ev_signal *)&context->w_sigint; if (!loop) loop = ev_default_loop(0); diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index ada190937c..6bebc605ac 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -37,6 +37,7 @@ static const char * const log_level_names[] = { "LATENCY", }; + void libwebsocket_close_and_free_session(struct libwebsocket_context *context, struct libwebsocket *wsi, enum lws_close_status reason) @@ -52,9 +53,6 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, old_state = wsi->state; - if (wsi->socket_is_permanently_unusable || reason == LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY) - goto just_kill_connection; - switch (old_state) { case WSI_STATE_DEAD_SOCKET: return; @@ -74,7 +72,6 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, if (wsi->truncated_send_len) { lwsl_info("wsi %p entering WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE\n", wsi); wsi->state = WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE; - libwebsocket_set_timeout(wsi, PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE, 5); return; } break; @@ -86,17 +83,17 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, wsi->mode == LWS_CONNMODE_WS_CLIENT_ISSUE_HANDSHAKE) { context->protocols[0].callback(context, wsi, - LWS_CALLBACK_CLIENT_CONNECTION_ERROR, wsi->user_space, NULL, 0); + LWS_CALLBACK_CLIENT_CONNECTION_ERROR, NULL, NULL, 0); - lws_free_header_table(wsi); + free(wsi->u.hdr.ah); goto just_kill_connection; } - if (wsi->mode == LWS_CONNMODE_HTTP_SERVING) - context->protocols[0].callback(context, wsi, - LWS_CALLBACK_CLOSED_HTTP, wsi->user_space, NULL, 0); - if (wsi->mode == LWS_CONNMODE_HTTP_SERVING_ACCEPTED) { + if (wsi->u.http.post_buffer) { + free(wsi->u.http.post_buffer); + wsi->u.http.post_buffer = NULL; + } if (wsi->u.http.fd != LWS_INVALID_FILE) { lwsl_debug("closing http file\n"); compatible_file_close(wsi->u.http.fd); @@ -153,7 +150,7 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, } while (ret); /* - * signal we are closing, libwebsocket_write will + * signal we are closing, libsocket_write will * add any necessary version-specific stuff. If the write fails, * no worries we are closing anyway. If we didn't initiate this * close, then our state has been changed to @@ -165,8 +162,7 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, */ if (old_state == WSI_STATE_ESTABLISHED && - reason != LWS_CLOSE_STATUS_NOSTATUS && - reason != LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY) { + reason != LWS_CLOSE_STATUS_NOSTATUS) { lwsl_debug("sending close indication...\n"); @@ -210,35 +206,28 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, * delete socket from the internal poll list if still present */ - lws_ssl_remove_wsi_from_buffered_list(context, wsi); - remove_wsi_socket_from_fds(context, wsi); wsi->state = WSI_STATE_DEAD_SOCKET; - lws_free2(wsi->rxflow_buffer); - - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING && wsi->u.hdr.ah) { - lws_free2(wsi->u.hdr.ah); - } - if ((old_state == WSI_STATE_ESTABLISHED || wsi->mode == LWS_CONNMODE_WS_SERVING || wsi->mode == LWS_CONNMODE_WS_CLIENT)) { - lws_free2(wsi->u.ws.rx_user_buffer); - + if (wsi->u.ws.rx_user_buffer) { + free(wsi->u.ws.rx_user_buffer); + wsi->u.ws.rx_user_buffer = NULL; + } + if (wsi->u.ws.rxflow_buffer) { + free(wsi->u.ws.rxflow_buffer); + wsi->u.ws.rxflow_buffer = NULL; + } if (wsi->truncated_send_malloc) { /* not going to be completed... nuke it */ - lws_free2(wsi->truncated_send_malloc); + free(wsi->truncated_send_malloc); + wsi->truncated_send_malloc = NULL; wsi->truncated_send_len = 0; } - if (wsi->u.ws.ping_payload_buf) { - lws_free2(wsi->u.ws.ping_payload_buf); - wsi->u.ws.ping_payload_alloc = 0; - wsi->u.ws.ping_payload_len = 0; - wsi->u.ws.ping_pending_flag = 0; - } } /* tell the user it's all over for this guy */ @@ -246,8 +235,7 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, if (wsi->protocol && wsi->protocol->callback && ((old_state == WSI_STATE_ESTABLISHED) || (old_state == WSI_STATE_RETURNED_CLOSE_ALREADY) || - (old_state == WSI_STATE_AWAITING_CLOSE_ACK) || - (old_state == WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE))) { + (old_state == WSI_STATE_AWAITING_CLOSE_ACK))) { lwsl_debug("calling back CLOSED\n"); wsi->protocol->callback(context, wsi, LWS_CALLBACK_CLOSED, wsi->user_space, NULL, 0); @@ -264,7 +252,7 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, lwsl_warn("extension destruction failed\n"); #ifndef LWS_NO_EXTENSIONS for (n = 0; n < wsi->count_active_extensions; n++) - lws_free(wsi->active_extensions_user[n]); + free(wsi->active_extensions_user[n]); #endif /* * inform all extensions in case they tracked this guy out of band @@ -292,76 +280,9 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, if (wsi->protocol && wsi->protocol->per_session_data_size && wsi->user_space && !wsi->user_space_externally_allocated) - lws_free(wsi->user_space); + free(wsi->user_space); - /* As a precaution, free the header table in case it lingered: */ - lws_free_header_table(wsi); - lws_free(wsi); -} - -LWS_VISIBLE int -libwebsockets_get_addresses(struct libwebsocket_context *context, - void *ads, char *name, int name_len, - char *rip, int rip_len) -{ - struct addrinfo ai, *res; - void *p = NULL; - - rip[0] = '\0'; - name[0] = '\0'; - -#ifdef LWS_USE_IPV6 - if (LWS_IPV6_ENABLED(context)) { - if (!lws_plat_inet_ntop(AF_INET6, &((struct sockaddr_in6 *)ads)->sin6_addr, rip, rip_len)) { - lwsl_err("inet_ntop", strerror(LWS_ERRNO)); - return -1; - } - - // Strip off the IPv4 to IPv6 header if one exists - if (strncmp(rip, "::ffff:", 7) == 0) - memmove(rip, rip + 7, strlen(rip) - 6); - - getnameinfo((struct sockaddr *)ads, - sizeof(struct sockaddr_in6), name, - name_len, NULL, 0, 0); - - return 0; - } else -#endif - { - memset(&ai, 0, sizeof ai); - ai.ai_family = PF_UNSPEC; - ai.ai_socktype = SOCK_STREAM; - ai.ai_flags = AI_CANONNAME; - - if (getnameinfo((struct sockaddr *)ads, - sizeof(struct sockaddr_in), - name, name_len, NULL, 0, 0)) - return -1; - - if (!rip) - return 0; - - if (getaddrinfo(name, NULL, &ai, &res)) - return -1; - - while (!p && res) { - switch (res->ai_family) { - case AF_INET: - p = &((struct sockaddr_in *)res->ai_addr)->sin_addr; - break; - } - - res = res->ai_next; - } - } - - if (!p) - return -1; - - lws_plat_inet_ntop(AF_INET, p, rip, rip_len); - - return 0; + free(wsi); } /** @@ -371,7 +292,7 @@ libwebsockets_get_addresses(struct libwebsocket_context *context, * @fd: Connection socket descriptor * @name: Buffer to take client address name * @name_len: Length of client address name buffer - * @rip: Buffer to take client address IP dotted quad + * @rip: Buffer to take client address IP qotted quad * @rip_len: Length of client address IP buffer * * This function fills in @name and @rip with the name and IP of @@ -390,8 +311,15 @@ libwebsockets_get_peer_addresses(struct libwebsocket_context *context, struct sockaddr_in6 sin6; #endif struct sockaddr_in sin4; + struct hostent *host; + struct hostent *host1; + char ip[128]; + unsigned char *p; + int n; +#ifdef AF_LOCAL + struct sockaddr_un *un; +#endif int ret = -1; - void *p; rip[0] = '\0'; name[0] = '\0'; @@ -400,26 +328,83 @@ libwebsockets_get_peer_addresses(struct libwebsocket_context *context, #ifdef LWS_USE_IPV6 if (LWS_IPV6_ENABLED(context)) { + len = sizeof(sin6); - p = &sin6; + if (getpeername(fd, (struct sockaddr *) &sin6, &len) < 0) { + lwsl_warn("getpeername: %s\n", strerror(LWS_ERRNO)); + goto bail; + } + + if (!lws_plat_inet_ntop(AF_INET6, &sin6.sin6_addr, rip, rip_len)) { + lwsl_err("inet_ntop", strerror(LWS_ERRNO)); + goto bail; + } + + // Strip off the IPv4 to IPv6 header if one exists + if (strncmp(rip, "::ffff:", 7) == 0) + memmove(rip, rip + 7, strlen(rip) - 6); + + getnameinfo((struct sockaddr *)&sin6, + sizeof(struct sockaddr_in6), name, + name_len, NULL, 0, 0); + } else #endif { len = sizeof(sin4); - p = &sin4; - } + if (getpeername(fd, (struct sockaddr *) &sin4, &len) < 0) { + lwsl_warn("getpeername: %s\n", strerror(LWS_ERRNO)); + goto bail; + } + host = gethostbyaddr((char *) &sin4.sin_addr, + sizeof(sin4.sin_addr), AF_INET); + if (host == NULL) { + lwsl_warn("gethostbyaddr: %s\n", strerror(LWS_ERRNO)); + goto bail; + } - if (getpeername(fd, p, &len) < 0) { - lwsl_warn("getpeername: %s\n", strerror(LWS_ERRNO)); - goto bail; + strncpy(name, host->h_name, name_len); + name[name_len - 1] = '\0'; + + host1 = gethostbyname(host->h_name); + if (host1 == NULL) + goto bail; + p = (unsigned char *)host1; + n = 0; + while (p != NULL) { + p = (unsigned char *)host1->h_addr_list[n++]; + if (p == NULL) + continue; + if ((host1->h_addrtype != AF_INET) +#ifdef AF_LOCAL + && (host1->h_addrtype != AF_LOCAL) +#endif + ) + continue; + + if (host1->h_addrtype == AF_INET) + sprintf(ip, "%u.%u.%u.%u", + p[0], p[1], p[2], p[3]); +#ifdef AF_LOCAL + else { + un = (struct sockaddr_un *)p; + strncpy(ip, un->sun_path, sizeof(ip) - 1); + ip[sizeof(ip) - 1] = '\0'; + } +#endif + p = NULL; + strncpy(rip, ip, rip_len); + rip[rip_len - 1] = '\0'; + } } - - ret = libwebsockets_get_addresses(context, p, name, name_len, rip, rip_len); + ret = 0; bail: lws_latency(context, wsi, "libwebsockets_get_peer_addresses", ret, 1); } + + /** * libwebsocket_context_user() - get the user data associated with the context * @context: Websocket context @@ -453,7 +438,7 @@ libwebsocket_callback_all_protocol( struct libwebsocket *wsi; for (n = 0; n < context->fds_count; n++) { - wsi = wsi_from_fd(context, context->fds[n].fd); + wsi = context->lws_lookup[context->fds[n].fd]; if (!wsi) continue; if (wsi->protocol == protocol) @@ -546,7 +531,7 @@ lws_latency(struct libwebsocket_context *context, struct libwebsocket *wsi, /** * libwebsocket_rx_flow_control() - Enable and disable socket servicing for - * received packets. + * receieved packets. * * If the output side of a server process becomes choked, this allows flow * control for the input side. @@ -558,11 +543,11 @@ lws_latency(struct libwebsocket_context *context, struct libwebsocket *wsi, LWS_VISIBLE int libwebsocket_rx_flow_control(struct libwebsocket *wsi, int enable) { - if (enable == (wsi->rxflow_change_to & LWS_RXFLOW_ALLOW)) + if (enable == (wsi->u.ws.rxflow_change_to & LWS_RXFLOW_ALLOW)) return 0; lwsl_info("libwebsocket_rx_flow_control(0x%p, %d)\n", wsi, enable); - wsi->rxflow_change_to = LWS_RXFLOW_PENDING_CHANGE | !!enable; + wsi->u.ws.rxflow_change_to = LWS_RXFLOW_PENDING_CHANGE | !!enable; return 0; } @@ -586,7 +571,7 @@ libwebsocket_rx_flow_allow_all_protocol( struct libwebsocket *wsi; for (n = 0; n < context->fds_count; n++) { - wsi = wsi_from_fd(context, context->fds[n].fd); + wsi = context->lws_lookup[context->fds[n].fd]; if (!wsi) continue; if (wsi->protocol == protocol) @@ -635,7 +620,7 @@ int user_callback_handle_rxflow(callback_function callback_function, * Returns -1 if @proxy is NULL or has incorrect format. * * This is only required if your OS does not provide the http_proxy - * environment variable (eg, OSX) + * enviroment variable (eg, OSX) * * IMPORTANT! You should call this function right after creation of the * libwebsocket_context and before call to connect. If you call this @@ -703,20 +688,21 @@ libwebsocket_get_reserved_bits(struct libwebsocket *wsi) int libwebsocket_ensure_user_space(struct libwebsocket *wsi) { - lwsl_info("%s: %p protocol %p\n", __func__, wsi, wsi->protocol); if (!wsi->protocol) return 1; /* allocate the per-connection user memory (if any) */ if (wsi->protocol->per_session_data_size && !wsi->user_space) { - wsi->user_space = lws_zalloc(wsi->protocol->per_session_data_size); + wsi->user_space = malloc( + wsi->protocol->per_session_data_size); if (wsi->user_space == NULL) { lwsl_err("Out of memory for conn user space\n"); return 1; } - } else - lwsl_info("%s: %p protocol pss %u, user_space=%d\n", __func__, wsi, wsi->protocol->per_session_data_size, wsi->user_space); + memset(wsi->user_space, 0, + wsi->protocol->per_session_data_size); + } return 0; } @@ -730,7 +716,7 @@ LWS_VISIBLE void lwsl_emit_stderr(int level, const char *line) for (n = 0; n < LLL_COUNT; n++) if (level == (1 << n)) { now = time_in_microseconds() / 100; - sprintf(buf, "[%llu:%04d] %s: ", (unsigned long long) now / 10000, + sprintf(buf, "[%lu:%04d] %s: ", (unsigned long) now / 10000, (int)(now % 10000), log_level_names[n]); break; } @@ -739,28 +725,22 @@ LWS_VISIBLE void lwsl_emit_stderr(int level, const char *line) } -LWS_VISIBLE void _lws_logv(int filter, const char *format, va_list vl) +LWS_VISIBLE void _lws_log(int filter, const char *format, ...) { char buf[256]; + va_list ap; if (!(log_level & filter)) return; - vsnprintf(buf, sizeof(buf), format, vl); + va_start(ap, format); + vsnprintf(buf, sizeof(buf), format, ap); buf[sizeof(buf) - 1] = '\0'; + va_end(ap); lwsl_emit(filter, buf); } -LWS_VISIBLE void _lws_log(int filter, const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - _lws_logv(filter, format, ap); - va_end(ap); -} - /** * lws_set_log_level() - Set the logging bitfield * @level: OR together the LLL_ debug contexts you want output from @@ -779,81 +759,3 @@ LWS_VISIBLE void lws_set_log_level(int level, void (*log_emit_function)(int leve if (log_emit_function) lwsl_emit = log_emit_function; } - -/** - * lws_use_ssl() - Find out if connection is using SSL - * @wsi: websocket connection to check - * - * Returns 0 if the connection is not using SSL, 1 if using SSL and - * using verified cert, and 2 if using SSL but the cert was not - * checked (appears for client wsi told to skip check on connection) - */ -LWS_VISIBLE int -lws_is_ssl(struct libwebsocket *wsi) -{ -#ifdef LWS_OPENSSL_SUPPORT - return wsi->use_ssl; -#else - return 0; -#endif -} - -/** - * lws_partial_buffered() - find out if lws buffered the last write - * @wsi: websocket connection to check - * - * Returns 1 if you cannot use libwebsocket_write because the last - * write on this connection is still buffered, and can't be cleared without - * returning to the service loop and waiting for the connection to be - * writeable again. - * - * If you will try to do >1 libwebsocket_write call inside a single - * WRITEABLE callback, you must check this after every write and bail if - * set, ask for a new writeable callback and continue writing from there. - * - * This is never set at the start of a writeable callback, but any write - * may set it. - */ - -LWS_VISIBLE int -lws_partial_buffered(struct libwebsocket *wsi) -{ - return !!wsi->truncated_send_len; -} - -void lws_set_protocol_write_pending(struct libwebsocket_context *context, - struct libwebsocket *wsi, - enum lws_pending_protocol_send pend) -{ - lwsl_info("setting pps %d\n", pend); - - if (wsi->pps) - lwsl_err("pps overwrite\n"); - wsi->pps = pend; - libwebsocket_rx_flow_control(wsi, 0); - libwebsocket_callback_on_writable(context, wsi); -} - -LWS_VISIBLE size_t -lws_get_peer_write_allowance(struct libwebsocket *wsi) -{ -#ifdef LWS_USE_HTTP2 - /* only if we are using HTTP2 on this connection */ - if (wsi->mode != LWS_CONNMODE_HTTP2_SERVING) - return -1; - /* user is only interested in how much he can send, or that he can't */ - if (wsi->u.http2.tx_credit <= 0) - return 0; - - return wsi->u.http2.tx_credit; -#else - return -1; -#endif -} - -LWS_VISIBLE void -lws_union_transition(struct libwebsocket *wsi, enum connection_mode mode) -{ - memset(&wsi->u, 0, sizeof(wsi->u)); - wsi->mode = mode; -} diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 5dc97c73f9..0bb67f57bc 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1,7 +1,7 @@ /* * libwebsockets - small server side websockets and web server implementation * - * Copyright (C) 2010-2015 Andy Green + * Copyright (C) 2010-2013 Andy Green * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -23,11 +23,8 @@ #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C #ifdef __cplusplus -#include -#include extern "C" { -#else -#include +#include #endif #ifdef CMAKE_BUILD @@ -42,7 +39,6 @@ extern "C" { #include #include #include -#include #include #define strcasecmp stricmp @@ -64,7 +60,6 @@ extern "C" { #include #include -#include #if defined(__GNUC__) #define LWS_VISIBLE __attribute__((visibility("default"))) @@ -91,14 +86,6 @@ extern "C" { #include #endif -#ifdef LWS_OPENSSL_SUPPORT -#ifdef USE_CYASSL -#include -#else -#include -#endif /* not USE_CYASSL */ -#endif - #define CONTEXT_PORT_NO_LISTEN -1 #define MAX_MUX_RECURSION 2 @@ -118,7 +105,6 @@ enum lws_log_levels { }; LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); -LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl); /* notice, warn and log are always compiled in */ #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__) @@ -159,14 +145,6 @@ LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len); #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG -/* the struct libwebsocket_protocols has the id field present */ -#define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD - -/* you can call lws_get_peer_write_allowance */ -#define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE - -/* extra parameter introduced in 917f43ab821 */ -#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN enum libwebsocket_context_options { LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2, @@ -217,8 +195,6 @@ enum libwebsocket_callback_reasons { LWS_CALLBACK_LOCK_POLL, LWS_CALLBACK_UNLOCK_POLL, - LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY, - LWS_CALLBACK_USER = 1000, /* user code can use any including / above */ }; @@ -278,13 +254,6 @@ enum libwebsocket_write_protocol { LWS_WRITE_PING, LWS_WRITE_PONG, - /* Same as write_http but we know this write ends the transaction */ - LWS_WRITE_HTTP_FINAL, - - /* HTTP2 */ - - LWS_WRITE_HTTP_HEADERS, - /* flags */ LWS_WRITE_NO_FIN = 0x40, @@ -308,30 +277,34 @@ struct lws_tokens { int token_len; }; -/* - * don't forget to update test server header dump accordingly - * - * these have to be kept in sync with lextable.h / minilex.c - */ - enum lws_token_indexes { WSI_TOKEN_GET_URI, WSI_TOKEN_POST_URI, WSI_TOKEN_OPTIONS_URI, WSI_TOKEN_HOST, WSI_TOKEN_CONNECTION, + WSI_TOKEN_KEY1, + WSI_TOKEN_KEY2, + WSI_TOKEN_PROTOCOL, WSI_TOKEN_UPGRADE, WSI_TOKEN_ORIGIN, WSI_TOKEN_DRAFT, WSI_TOKEN_CHALLENGE, + + /* new for 04 */ + WSI_TOKEN_KEY, + WSI_TOKEN_VERSION, + WSI_TOKEN_SWORIGIN, + + /* new for 05 */ WSI_TOKEN_EXTENSIONS, - WSI_TOKEN_KEY1, - WSI_TOKEN_KEY2, - WSI_TOKEN_PROTOCOL, + + /* client receives these */ WSI_TOKEN_ACCEPT, WSI_TOKEN_NONCE, WSI_TOKEN_HTTP, - WSI_TOKEN_HTTP2_SETTINGS, + + /* http-related */ WSI_TOKEN_HTTP_ACCEPT, WSI_TOKEN_HTTP_AC_REQUEST_HEADERS, WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, @@ -347,57 +320,11 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_DATE, WSI_TOKEN_HTTP_RANGE, WSI_TOKEN_HTTP_REFERER, - WSI_TOKEN_KEY, - WSI_TOKEN_VERSION, - WSI_TOKEN_SWORIGIN, - - WSI_TOKEN_HTTP_COLON_AUTHORITY, - WSI_TOKEN_HTTP_COLON_METHOD, - WSI_TOKEN_HTTP_COLON_PATH, - WSI_TOKEN_HTTP_COLON_SCHEME, - WSI_TOKEN_HTTP_COLON_STATUS, - - WSI_TOKEN_HTTP_ACCEPT_CHARSET, - WSI_TOKEN_HTTP_ACCEPT_RANGES, - WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN, - WSI_TOKEN_HTTP_AGE, - WSI_TOKEN_HTTP_ALLOW, - WSI_TOKEN_HTTP_CONTENT_DISPOSITION, - WSI_TOKEN_HTTP_CONTENT_ENCODING, - WSI_TOKEN_HTTP_CONTENT_LANGUAGE, - WSI_TOKEN_HTTP_CONTENT_LOCATION, - WSI_TOKEN_HTTP_CONTENT_RANGE, - WSI_TOKEN_HTTP_ETAG, - WSI_TOKEN_HTTP_EXPECT, - WSI_TOKEN_HTTP_EXPIRES, - WSI_TOKEN_HTTP_FROM, - WSI_TOKEN_HTTP_IF_MATCH, - WSI_TOKEN_HTTP_IF_RANGE, - WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE, - WSI_TOKEN_HTTP_LAST_MODIFIED, - WSI_TOKEN_HTTP_LINK, - WSI_TOKEN_HTTP_LOCATION, - WSI_TOKEN_HTTP_MAX_FORWARDS, - WSI_TOKEN_HTTP_PROXY_AUTHENTICATE, - WSI_TOKEN_HTTP_PROXY_AUTHORIZATION, - WSI_TOKEN_HTTP_REFRESH, - WSI_TOKEN_HTTP_RETRY_AFTER, - WSI_TOKEN_HTTP_SERVER, - WSI_TOKEN_HTTP_SET_COOKIE, - WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY, - WSI_TOKEN_HTTP_TRANSFER_ENCODING, - WSI_TOKEN_HTTP_USER_AGENT, - WSI_TOKEN_HTTP_VARY, - WSI_TOKEN_HTTP_VIA, - WSI_TOKEN_HTTP_WWW_AUTHENTICATE, - WSI_TOKEN_PROXY, - - WSI_TOKEN_PATCH_URI, - WSI_TOKEN_PUT_URI, - WSI_TOKEN_DELETE_URI, - WSI_TOKEN_HTTP_URI_ARGS, - + + + WSI_TOKEN_MUXURL, + /* use token storage to stash these */ _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, @@ -405,7 +332,7 @@ enum lws_token_indexes { _WSI_TOKEN_CLIENT_URI, _WSI_TOKEN_CLIENT_HOST, _WSI_TOKEN_CLIENT_ORIGIN, - + /* always last real token index*/ WSI_TOKEN_COUNT, /* parser state additions */ @@ -524,8 +451,6 @@ enum lws_close_status { LWS_CLOSE_STATUS_EXTENSION_REQUIRED = 1010, LWS_CLOSE_STATUS_UNEXPECTED_CONDITION = 1011, LWS_CLOSE_STATUS_TLS_FAILURE = 1015, - - LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999, }; enum http_status { @@ -711,15 +636,6 @@ struct libwebsocket_extension; * verify the validity of certificates returned by clients. @user * is the server's OpenSSL SSL_CTX* * - * LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY: if configured for - * including OpenSSL support but no private key file has been specified - * (ssl_private_key_filepath is NULL), this callback is called to - * allow the user to set the private key directly via libopenssl - * and perform further operations if required; this might be useful - * in situations where the private key is not directly accessible by - * the OS, for example if it is stored on a smartcard - * @user is the server's OpenSSL SSL_CTX* - * * LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION: if the * libwebsockets context was created with the option * LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT, then this @@ -923,7 +839,7 @@ typedef int (extension_callback_function)(struct libwebsocket_context *context, * struct libwebsocket_protocols - List of protocols and handlers server * supports. * @name: Protocol name that must match the one given in the client - * Javascript new WebSocket(url, 'protocol') name. + * Javascript new WebSocket(url, 'protocol') name * @callback: The service callback used for this protocol. It allows the * service action for an entire protocol to be encapsulated in * the protocol-specific callback @@ -939,16 +855,14 @@ typedef int (extension_callback_function)(struct libwebsocket_context *context, * libwebsockets_remaining_packet_payload(). Notice that you * just talk about frame size here, the LWS_SEND_BUFFER_PRE_PADDING * and post-padding are automatically also allocated on top. - * @id: ignored by lws, but useful to contain user information bound - * to the selected protocol. For example if this protocol was - * called "myprotocol-v2", you might set id to 2, and the user - * code that acts differently according to the version can do so by - * switch (wsi->protocol->id), user code might use some bits as - * capability flags based on selected protocol version, etc. - * @user: User provided context data at the protocol level. - * Accessible via libwebsockets_get_protocol(wsi)->user - * This should not be confused with wsi->user, it is not the same. - * The library completely ignores any value in here. + * @no_buffer_all_partial_tx: Leave at zero if you want the library to take + * care of all partial tx for you. It's useful if you only have + * small tx packets and the chance of any truncated send is small + * enough any additional malloc / buffering overhead is less + * painful than writing the code to deal with partial sends. For + * protocols where you stream big blocks, set to nonzero and use + * the return value from libwebsocket_write() to manage how much + * got send yourself. * @owning_server: the server init call fills in this opaque pointer when * registering this protocol with the server. * @protocol_index: which protocol we are starting from zero @@ -956,10 +870,6 @@ typedef int (extension_callback_function)(struct libwebsocket_context *context, * This structure represents one protocol supported by the server. An * array of these structures is passed to libwebsocket_create_server() * allows as many protocols as you like to be handled by one server. - * - * The first protocol given has its callback used for user callbacks when - * there is no agreed protocol name, that's true during HTTP part of the - * connection and true if the client did not send a Protocol: header. */ struct libwebsocket_protocols { @@ -967,8 +877,7 @@ struct libwebsocket_protocols { callback_function *callback; size_t per_session_data_size; size_t rx_buffer_size; - unsigned int id; - void *user; + int no_buffer_all_partial_tx; /* * below are filled in on server init and can be left uninitialized, @@ -1004,10 +913,9 @@ struct libwebsocket_extension { /** * struct lws_context_creation_info: parameters to create context with * - * @port: Port to listen on... you can use CONTEXT_PORT_NO_LISTEN to - * suppress listening on any port, that's what you want if you are - * not running a websocket server at all but just using it as a - * client + * @port: Port to listen on... you can use 0 to suppress listening on + * any port, that's what you want if you are not running a + * websocket server at all but just using it as a client * @iface: NULL to bind the listen socket to all interfaces, or the * interface name, eg, "eth2" * @protocols: Array of structures listing supported protocols and a protocol- @@ -1022,16 +930,12 @@ struct libwebsocket_extension { * @ssl_cert_filepath: If libwebsockets was compiled to use ssl, and you want * to listen using SSL, set to the filepath to fetch the * server cert from, otherwise NULL for unencrypted - * @ssl_private_key_filepath: filepath to private key if wanting SSL mode; - * if this is set to NULL but sll_cert_filepath is set, the - * OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY callback is called to allow - * setting of the private key directly via openSSL library calls + * @ssl_private_key_filepath: filepath to private key if wanting SSL mode, + * else ignored * @ssl_ca_filepath: CA certificate filepath or NULL * @ssl_cipher_list: List of valid ciphers to use (eg, * "RC4-MD5:RC4-SHA:AES128-SHA:AES256-SHA:HIGH:!DSS:!aNULL" * or you can leave it as NULL to get "DEFAULT" - * @http_proxy_address: If non-NULL, attempts to proxy via the given address - * @http_proxy_port: If http_proxy_address was non-NULL, uses this port at the address * @gid: group id to change to after setting listen socket, or -1. * @uid: user id to change to after setting listen socket, or -1. * @options: 0, or LWS_SERVER_OPTION_DEFEAT_CLIENT_MASK @@ -1044,10 +948,6 @@ struct libwebsocket_extension { * and killing the connection * @ka_interval: if ka_time was nonzero, how long to wait before each ka_probes * attempt - * @provided_client_ssl_ctx: If non-null, swap out libwebsockets ssl - * implementation for the one provided by provided_ssl_ctx. - * Libwebsockets no longer is responsible for freeing the context - * if this option is selected. */ struct lws_context_creation_info { @@ -1055,8 +955,7 @@ struct lws_context_creation_info { const char *iface; struct libwebsocket_protocols *protocols; struct libwebsocket_extension *extensions; - struct lws_token_limits *token_limits; - const char *ssl_private_key_password; + struct lws_token_limits *token_limits; const char *ssl_cert_filepath; const char *ssl_private_key_filepath; const char *ssl_ca_filepath; @@ -1070,11 +969,7 @@ struct lws_context_creation_info { int ka_time; int ka_probes; int ka_interval; -#ifdef LWS_OPENSSL_SUPPORT - SSL_CTX *provided_client_ssl_ctx; -#else /* maintain structure layout either way */ - void *provided_client_ssl_ctx; -#endif + }; LWS_VISIBLE LWS_EXTERN @@ -1099,44 +994,6 @@ libwebsocket_service(struct libwebsocket_context *context, int timeout_ms); LWS_VISIBLE LWS_EXTERN void libwebsocket_cancel_service(struct libwebsocket_context *context); -LWS_VISIBLE LWS_EXTERN const unsigned char * -lws_token_to_string(enum lws_token_indexes token); - -LWS_VISIBLE LWS_EXTERN int -lws_add_http_header_by_name(struct libwebsocket_context *context, - struct libwebsocket *wsi, - const unsigned char *name, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end); -LWS_VISIBLE LWS_EXTERN int -lws_finalize_http_header(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned char **p, - unsigned char *end); -LWS_VISIBLE LWS_EXTERN int -lws_add_http_header_by_token(struct libwebsocket_context *context, - struct libwebsocket *wsi, - enum lws_token_indexes token, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end); -LWS_VISIBLE LWS_EXTERN int lws_add_http_header_content_length(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned long content_length, - unsigned char **p, - unsigned char *end); -LWS_VISIBLE LWS_EXTERN int -lws_add_http_header_status(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned int code, - unsigned char **p, - unsigned char *end); - -LWS_EXTERN int lws_http_transaction_completed(struct libwebsocket *wsi); - #ifdef LWS_USE_LIBEV LWS_VISIBLE LWS_EXTERN int libwebsocket_initloop( @@ -1167,7 +1024,6 @@ enum pending_timeout { PENDING_TIMEOUT_SSL_ACCEPT, PENDING_TIMEOUT_HTTP_CONTENT, PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND, - PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE, }; LWS_VISIBLE LWS_EXTERN void @@ -1220,8 +1076,7 @@ libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, size_t len, LWS_VISIBLE LWS_EXTERN int libwebsockets_serve_http_file(struct libwebsocket_context *context, struct libwebsocket *wsi, const char *file, - const char *content_type, const char *other_headers, - int other_headers_len); + const char *content_type, const char *other_headers); LWS_VISIBLE LWS_EXTERN int libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, struct libwebsocket *wsi); @@ -1265,25 +1120,6 @@ libwebsocket_rx_flow_allow_all_protocol( LWS_VISIBLE LWS_EXTERN size_t libwebsockets_remaining_packet_payload(struct libwebsocket *wsi); -/* - * if the protocol does not have any guidence, returns -1. Currently only - * http2 connections get send window information from this API. But your code - * should use it so it can work properly with any protocol. - * - * If nonzero return is the amount of payload data the peer or intermediary has - * reported it has buffer space for. That has NO relationship with the amount - * of buffer space your OS can accept on this connection for a write action. - * - * This number represents the maximum you could send to the peer or intermediary - * on this connection right now without it complaining. - * - * lws manages accounting for send window updates and payload writes - * automatically, so this number reflects the situation at the peer or - * intermediary dynamically. - */ -LWS_VISIBLE LWS_EXTERN size_t -lws_get_peer_write_allowance(struct libwebsocket *wsi); - LWS_VISIBLE LWS_EXTERN struct libwebsocket * libwebsocket_client_connect(struct libwebsocket_context *clients, const char *address, @@ -1326,15 +1162,9 @@ lws_daemonize(const char *_lock_path); LWS_VISIBLE LWS_EXTERN int lws_send_pipe_choked(struct libwebsocket *wsi); -LWS_VISIBLE LWS_EXTERN int -lws_partial_buffered(struct libwebsocket *wsi); - LWS_VISIBLE LWS_EXTERN int lws_frame_is_binary(struct libwebsocket *wsi); -LWS_VISIBLE LWS_EXTERN int -lws_is_ssl(struct libwebsocket *wsi); - LWS_VISIBLE LWS_EXTERN unsigned char * libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md); @@ -1370,12 +1200,6 @@ libwebsocket_read(struct libwebsocket_context *context, LWS_VISIBLE LWS_EXTERN struct libwebsocket_extension *libwebsocket_get_internal_extensions(); #endif -/* - * custom allocator support - */ -LWS_VISIBLE LWS_EXTERN void -lws_set_allocator(void *(*realloc)(void *ptr, size_t size)); - #ifdef __cplusplus } #endif diff --git a/lib/lws-plat-unix.c b/lib/lws-plat-unix.c index 9d10acff46..78fb6e4a31 100755 --- a/lib/lws-plat-unix.c +++ b/lib/lws-plat-unix.c @@ -1,8 +1,5 @@ #include "private-libwebsockets.h" -#include -#include - /* * included from libwebsockets.c for unix builds */ @@ -11,7 +8,7 @@ unsigned long long time_in_microseconds(void) { struct timeval tv; gettimeofday(&tv, NULL); - return ((unsigned long long)tv.tv_sec * 1000000LL) + tv.tv_usec; + return (tv.tv_sec * 1000000) + tv.tv_usec; } LWS_VISIBLE int libwebsockets_get_random(struct libwebsocket_context *context, @@ -100,9 +97,6 @@ lws_plat_service(struct libwebsocket_context *context, int timeout_ms) int n; int m; char buf; -#ifdef LWS_OPENSSL_SUPPORT - struct libwebsocket *wsi, *wsi_next; -#endif /* stay dead once we are dead */ @@ -114,19 +108,10 @@ lws_plat_service(struct libwebsocket_context *context, int timeout_ms) context->service_tid = context->protocols[0].callback(context, NULL, LWS_CALLBACK_GET_THREAD_ID, NULL, NULL, 0); -#ifdef LWS_OPENSSL_SUPPORT - /* if we know we have non-network pending data, do not wait in poll */ - if (lws_ssl_anybody_has_buffered_read(context)) - timeout_ms = 0; -#endif n = poll(context->fds, context->fds_count, timeout_ms); context->service_tid = 0; -#ifdef LWS_OPENSSL_SUPPORT - if (!lws_ssl_anybody_has_buffered_read(context) && n == 0) { -#else if (n == 0) /* poll timeout */ { -#endif libwebsocket_service_fd(context, NULL); return 0; } @@ -137,36 +122,9 @@ lws_plat_service(struct libwebsocket_context *context, int timeout_ms) return 0; } -#ifdef LWS_OPENSSL_SUPPORT - /* - * For all guys with buffered SSL read data already saved up, if they - * are not flowcontrolled, fake their POLLIN status so they'll get - * service to use up the buffered incoming data, even though their - * network socket may have nothing - */ - - wsi = context->pending_read_list; - while (wsi) { - wsi_next = wsi->pending_read_list_next; - context->fds[wsi->sock].revents |= - context->fds[wsi->sock].events & POLLIN; - if (context->fds[wsi->sock].revents & POLLIN) { - /* - * he's going to get serviced now, take him off the - * list of guys with buffered SSL. If he still has some - * at the end of the service, he'll get put back on the - * list then. - */ - lws_ssl_remove_wsi_from_buffered_list(context, wsi); - } - wsi = wsi_next; - } -#endif - /* any socket with events to service? */ for (n = 0; n < context->fds_count; n++) { - if (!context->fds[n].revents) continue; @@ -215,17 +173,17 @@ lws_plat_set_socket_options(struct libwebsocket_context *context, int fd) #else /* set the keepalive conditions we want on it too */ optval = context->ka_time; - if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, + if (setsockopt(fd, IPPROTO_IP, TCP_KEEPIDLE, (const void *)&optval, optlen) < 0) return 1; optval = context->ka_interval; - if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, + if (setsockopt(fd, IPPROTO_IP, TCP_KEEPINTVL, (const void *)&optval, optlen) < 0) return 1; optval = context->ka_probes; - if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, + if (setsockopt(fd, IPPROTO_IP, TCP_KEEPCNT, (const void *)&optval, optlen) < 0) return 1; #endif @@ -235,17 +193,14 @@ lws_plat_set_socket_options(struct libwebsocket_context *context, int fd) optval = 1; #if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \ !defined(__OpenBSD__) - if (setsockopt(fd, SOL_TCP, TCP_NODELAY, (const void *)&optval, optlen) < 0) - return 1; + setsockopt(fd, SOL_TCP, TCP_NODELAY, (const void *)&optval, optlen); #else tcp_proto = getprotobyname("TCP"); - if (setsockopt(fd, tcp_proto->p_proto, TCP_NODELAY, &optval, optlen) < 0) - return 1; + setsockopt(fd, tcp_proto->p_proto, TCP_NODELAY, &optval, optlen); #endif /* We are nonblocking... */ - if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) - return 1; + fcntl(fd, F_SETFL, O_NONBLOCK); return 0; } @@ -253,22 +208,12 @@ lws_plat_set_socket_options(struct libwebsocket_context *context, int fd) LWS_VISIBLE void lws_plat_drop_app_privileges(struct lws_context_creation_info *info) { - if (info->uid != -1) { - struct passwd *p = getpwuid(info->uid); - - if (p) { - initgroups(p->pw_name, info->gid); - if (setuid(info->uid)) - lwsl_warn("setuid: %s\n", strerror(LWS_ERRNO)); - else - lwsl_notice(" Set privs to user '%s'\n", p->pw_name); - } else - lwsl_warn("getpwuid: unable to find uid %d", info->uid); - } if (info->gid != -1) if (setgid(info->gid)) lwsl_warn("setgid: %s\n", strerror(LWS_ERRNO)); - + if (info->uid != -1) + if (setuid(info->uid)) + lwsl_warn("setuid: %s\n", strerror(LWS_ERRNO)); } LWS_VISIBLE int @@ -288,7 +233,7 @@ lws_plat_init_fd_tables(struct libwebsocket_context *context) context->fds[0].events = LWS_POLLIN; context->fds[0].revents = 0; context->fds_count = 1; - + context->fd_random = open(SYSTEM_RANDOM_FILEPATH, O_RDONLY); if (context->fd_random < 0) { lwsl_err("Unable to open random device %s %d\n", @@ -314,7 +259,7 @@ lws_plat_context_early_init(void) sigaddset(&mask, SIGUSR2); sigprocmask(SIG_BLOCK, &mask, NULL); - + signal(SIGPIPE, sigpipe_handler); return 0; @@ -377,6 +322,8 @@ interface_to_sa(struct libwebsocket_context *context, break; #ifdef LWS_USE_IPV6 case AF_INET6: + if (rc >= 0) + break; memcpy(&addr6->sin6_addr, &((struct sockaddr_in6 *)ifc->ifa_addr)->sin6_addr, sizeof(struct in6_addr)); @@ -389,7 +336,7 @@ interface_to_sa(struct libwebsocket_context *context, } freeifaddrs(ifr); - + if (rc == -1) { /* check if bind to IP adddress */ #ifdef LWS_USE_IPV6 @@ -443,16 +390,15 @@ lws_plat_open_file(const char* filename, unsigned long* filelen) if (ret < 0) return LWS_INVALID_FILE; - if (fstat(ret, &stat_buf) < 0) { - close(ret); - return LWS_INVALID_FILE; - } + fstat(ret, &stat_buf); *filelen = stat_buf.st_size; return ret; } +#ifdef LWS_USE_IPV6 LWS_VISIBLE const char * lws_plat_inet_ntop(int af, const void *src, char *dst, int cnt) -{ +{ return inet_ntop(af, src, dst, cnt); } +#endif diff --git a/lib/lws-plat-win.c b/lib/lws-plat-win.c index 63e3bcb15c..b33f79c25f 100755 --- a/lib/lws-plat-win.c +++ b/lib/lws-plat-win.c @@ -33,59 +33,6 @@ time_t time(time_t *t) } #endif -/* file descriptor hash management */ - -struct libwebsocket * -wsi_from_fd(struct libwebsocket_context *context, int fd) -{ - int h = LWS_FD_HASH(fd); - int n = 0; - - for (n = 0; n < context->fd_hashtable[h].length; n++) - if (context->fd_hashtable[h].wsi[n]->sock == fd) - return context->fd_hashtable[h].wsi[n]; - - return NULL; -} - -int -insert_wsi(struct libwebsocket_context *context, struct libwebsocket *wsi) -{ - int h = LWS_FD_HASH(wsi->sock); - - if (context->fd_hashtable[h].length == (getdtablesize() - 1)) { - lwsl_err("hash table overflow\n"); - return 1; - } - - context->fd_hashtable[h].wsi[context->fd_hashtable[h].length++] = wsi; - - return 0; -} - -int -delete_from_fd(struct libwebsocket_context *context, int fd) -{ - int h = LWS_FD_HASH(fd); - int n = 0; - - for (n = 0; n < context->fd_hashtable[h].length; n++) - if (context->fd_hashtable[h].wsi[n]->sock == fd) { - while (n < context->fd_hashtable[h].length) { - context->fd_hashtable[h].wsi[n] = - context->fd_hashtable[h].wsi[n + 1]; - n++; - } - context->fd_hashtable[h].length--; - - return 0; - } - - lwsl_err("Failed to find fd %d requested for " - "delete in hashtable\n", fd); - return 1; -} - LWS_VISIBLE int libwebsockets_get_random(struct libwebsocket_context *context, void *buf, int len) { @@ -157,7 +104,7 @@ lws_plat_service(struct libwebsocket_context *context, int timeout_ms) continue; if (pfd->events & LWS_POLLOUT) { - if (wsi_from_fd(context,pfd->fd)->sock_send_blocking) + if (context->lws_lookup[pfd->fd]->sock_send_blocking) continue; pfd->revents = LWS_POLLOUT; n = libwebsocket_service_fd(context, pfd); @@ -196,7 +143,7 @@ lws_plat_service(struct libwebsocket_context *context, int timeout_ms) pfd->revents = networkevents.lNetworkEvents; if (pfd->revents & LWS_POLLOUT) - wsi_from_fd(context,pfd->fd)->sock_send_blocking = FALSE; + context->lws_lookup[pfd->fd]->sock_send_blocking = FALSE; return libwebsocket_service_fd(context, pfd); } @@ -246,16 +193,17 @@ lws_plat_drop_app_privileges(struct lws_context_creation_info *info) LWS_VISIBLE int lws_plat_init_fd_tables(struct libwebsocket_context *context) { - context->events = lws_malloc(sizeof(WSAEVENT) * (context->max_fds + 1)); + context->events = (WSAEVENT *)malloc(sizeof(WSAEVENT) * + (context->max_fds + 1)); if (context->events == NULL) { lwsl_err("Unable to allocate events array for %d connections\n", context->max_fds); return 1; } - + context->fds_count = 0; context->events[0] = WSACreateEvent(); - + context->fd_random = 0; return 0; @@ -288,7 +236,7 @@ lws_plat_context_early_destroy(struct libwebsocket_context *context) { if (context->events) { WSACloseEvent(context->events[0]); - lws_free(context->events); + free(context->events); } } @@ -302,20 +250,7 @@ LWS_VISIBLE int interface_to_sa(struct libwebsocket_context *context, const char *ifname, struct sockaddr_in *addr, size_t addrlen) { - long long address = inet_addr(ifname); - - if (address == INADDR_NONE) { - struct hostent *entry = gethostbyname(ifname); - if (entry) - address = ((struct in_addr *)entry->h_addr_list[0])->s_addr; - } - - if (address == INADDR_NONE) - return -1; - - addr->sin_addr.s_addr = address; - - return 0; + return -1; } LWS_VISIBLE void @@ -383,7 +318,7 @@ lws_plat_inet_ntop(int af, const void *src, char *dst, int cnt) DWORD bufferlen = cnt; BOOL ok = FALSE; - buffer = lws_malloc(bufferlen); + buffer = malloc(bufferlen); if (!buffer) { lwsl_err("Out of memory\n"); return NULL; @@ -418,6 +353,6 @@ lws_plat_inet_ntop(int af, const void *src, char *dst, int cnt) ok = FALSE; } - lws_free(buffer); + free(buffer); return ok ? dst : NULL; } diff --git a/lib/minilex.c b/lib/minilex.c index 1aea0f6a08..cdc500ed23 100644 --- a/lib/minilex.c +++ b/lib/minilex.c @@ -16,7 +16,50 @@ #include #include -#include "lextable-strings.h" +/* set of parsable strings -- ALL LOWER CASE */ + +const char *set[] = { + "get ", + "post ", + "options ", + "host:", + "connection:", + "sec-websocket-key1:", + "sec-websocket-key2:", + "sec-websocket-protocol:", + "upgrade:", + "origin:", + "sec-websocket-draft:", + "\x0d\x0a", + + "sec-websocket-key:", + "sec-websocket-version:", + "sec-websocket-origin:", + + "sec-websocket-extensions:", + + "sec-websocket-accept:", + "sec-websocket-nonce:", + "http/1.1 ", + + "accept:", + "access-control-request-headers:", + "if-modified-since:", + "if-none-match:", + "accept-encoding:", + "accept-language:", + "pragma:", + "cache-control:", + "authorization:", + "cookie:", + "content-length:", + "content-type:", + "date:", + "range:", + "referer:", + "", /* not matchable */ + +}; /* * b7 = 0 = 1-byte seq diff --git a/lib/output.c b/lib/output.c index b914f281cb..28e15a6d41 100644 --- a/lib/output.c +++ b/lib/output.c @@ -132,8 +132,6 @@ int lws_issue_raw(struct libwebsocket *wsi, unsigned char *buf, size_t len) switch (n) { case LWS_SSL_CAPABLE_ERROR: - /* we're going to close, let close know sends aren't possible */ - wsi->socket_is_permanently_unusable = 1; return -1; case LWS_SSL_CAPABLE_MORE_SERVICE: /* nothing got sent, not fatal, retry the whole thing later */ @@ -195,10 +193,11 @@ int lws_issue_raw(struct libwebsocket *wsi, unsigned char *buf, size_t len) */ if (!wsi->truncated_send_malloc || real_len - n > wsi->truncated_send_allocation) { - lws_free(wsi->truncated_send_malloc); + if (wsi->truncated_send_malloc) + free(wsi->truncated_send_malloc); wsi->truncated_send_allocation = real_len - n; - wsi->truncated_send_malloc = lws_malloc(real_len - n); + wsi->truncated_send_malloc = malloc(real_len - n); if (!wsi->truncated_send_malloc) { lwsl_err("truncated send: unable to malloc %d\n", real_len - n); @@ -263,9 +262,7 @@ LWS_VISIBLE int libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, return 0; } - if (protocol == LWS_WRITE_HTTP || - protocol == LWS_WRITE_HTTP_FINAL || - protocol == LWS_WRITE_HTTP_HEADERS) + if (protocol == LWS_WRITE_HTTP) goto send_raw; /* websocket protocol, either binary or text */ @@ -278,7 +275,8 @@ LWS_VISIBLE int libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, if (wsi->u.ws.inside_frame) goto do_more_inside_frame; - wsi->u.ws.clean_buffer = 1; + /* if he wants all partials buffered, never have a clean_buffer */ + wsi->u.ws.clean_buffer = !wsi->protocol->no_buffer_all_partial_tx; /* * give a chance to the extensions to modify payload @@ -432,39 +430,8 @@ LWS_VISIBLE int libwebsocket_write(struct libwebsocket *wsi, unsigned char *buf, case LWS_WRITE_CLOSE: /* lwsl_hexdump(&buf[-pre], len + post); */ case LWS_WRITE_HTTP: - case LWS_WRITE_HTTP_FINAL: - case LWS_WRITE_HTTP_HEADERS: case LWS_WRITE_PONG: case LWS_WRITE_PING: -#ifdef LWS_USE_HTTP2 - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING) { - unsigned char flags = 0; - - n = LWS_HTTP2_FRAME_TYPE_DATA; - if (protocol == LWS_WRITE_HTTP_HEADERS) { - n = LWS_HTTP2_FRAME_TYPE_HEADERS; - flags = LWS_HTTP2_FLAG_END_HEADERS; - if (wsi->u.http2.send_END_STREAM) - flags |= LWS_HTTP2_FLAG_END_STREAM; - } - - if ((protocol == LWS_WRITE_HTTP || protocol == LWS_WRITE_HTTP_FINAL) && wsi->u.http.content_length) { - wsi->u.http.content_remain -= len; - lwsl_info("%s: content_remain = %lu\n", __func__, wsi->u.http.content_remain); - if (!wsi->u.http.content_remain) { - lwsl_info("%s: selecting final write mode\n", __func__); - protocol = LWS_WRITE_HTTP_FINAL; - } - } - - if (protocol == LWS_WRITE_HTTP_FINAL && wsi->u.http2.END_STREAM) { - lwsl_info("%s: setting END_STREAM\n", __func__); - flags |= LWS_HTTP2_FLAG_END_STREAM; - } - - return lws_http2_frame_write(wsi, n, flags, wsi->u.http2.my_stream_id, len, buf); - } -#endif return lws_issue_raw(wsi, (unsigned char *)buf - pre, len + pre + post); default: @@ -538,16 +505,15 @@ LWS_VISIBLE int libwebsockets_serve_http_file_fragment( if (n < 0) return -1; /* caller will close */ if (n) { - wsi->u.http.filepos += n; m = libwebsocket_write(wsi, context->service_buffer, n, - wsi->u.http.filepos == wsi->u.http.filelen ? LWS_WRITE_HTTP_FINAL : LWS_WRITE_HTTP); + LWS_WRITE_HTTP); if (m < 0) return -1; + wsi->u.http.filepos += m; if (m != n) /* adjust for what was not sent */ - if (compatible_file_seek_cur(wsi->u.http.fd, m - n) < 0) - return -1; + compatible_file_seek_cur(wsi->u.http.fd, m - n); } all_sent: if (!wsi->truncated_send_len && @@ -571,8 +537,7 @@ LWS_VISIBLE int libwebsockets_serve_http_file_fragment( } LWS_VISIBLE int -lws_ssl_capable_read_no_ssl(struct libwebsocket_context *context, - struct libwebsocket *wsi, unsigned char *buf, int len) +lws_ssl_capable_read_no_ssl(struct libwebsocket *wsi, unsigned char *buf, int len) { int n; diff --git a/lib/parsers.c b/lib/parsers.c index bcf1d305b6..a8d0a5ea95 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -42,10 +42,6 @@ int lextable_decode(int pos, char c) return -1; return pos; } - - if (lextable[pos] == FAIL_CHAR) - return -1; - /* b7 = 0, end or 3-byte */ if (lextable[pos] < FAIL_CHAR) /* terminal marker */ return pos; @@ -61,9 +57,7 @@ int lextable_decode(int pos, char c) int lws_allocate_header_table(struct libwebsocket *wsi) { - /* Be sure to free any existing header data to avoid mem leak: */ - lws_free_header_table(wsi); - wsi->u.hdr.ah = lws_malloc(sizeof(*wsi->u.hdr.ah)); + wsi->u.hdr.ah = malloc(sizeof(*wsi->u.hdr.ah)); if (wsi->u.hdr.ah == NULL) { lwsl_err("Out of memory\n"); return -1; @@ -75,13 +69,6 @@ int lws_allocate_header_table(struct libwebsocket *wsi) return 0; } -int lws_free_header_table(struct libwebsocket *wsi) -{ - lws_free2(wsi->u.hdr.ah); - wsi->u.hdr.ah = NULL; - return 0; -}; - LWS_VISIBLE int lws_hdr_total_length(struct libwebsocket *wsi, enum lws_token_indexes h) { int n; @@ -164,7 +151,7 @@ int lws_hdr_simple_create(struct libwebsocket *wsi, return 0; } -static signed char char_to_hex(const char c) +static char char_to_hex(const char c) { if (c >= '0' && c <= '9') return c - '0'; @@ -202,18 +189,44 @@ int libwebsocket_parse( struct libwebsocket_context *context, struct libwebsocket *wsi, unsigned char c) { - static const unsigned char methods[] = { - WSI_TOKEN_GET_URI, - WSI_TOKEN_POST_URI, - WSI_TOKEN_OPTIONS_URI, - WSI_TOKEN_PUT_URI, - WSI_TOKEN_PATCH_URI, - WSI_TOKEN_DELETE_URI, - }; - int n, m; + int n; switch (wsi->u.hdr.parser_state) { - default: + case WSI_TOKEN_GET_URI: + case WSI_TOKEN_POST_URI: + case WSI_TOKEN_OPTIONS_URI: + case WSI_TOKEN_HOST: + case WSI_TOKEN_CONNECTION: + case WSI_TOKEN_KEY1: + case WSI_TOKEN_KEY2: + case WSI_TOKEN_PROTOCOL: + case WSI_TOKEN_UPGRADE: + case WSI_TOKEN_ORIGIN: + case WSI_TOKEN_SWORIGIN: + case WSI_TOKEN_DRAFT: + case WSI_TOKEN_CHALLENGE: + case WSI_TOKEN_KEY: + case WSI_TOKEN_VERSION: + case WSI_TOKEN_ACCEPT: + case WSI_TOKEN_NONCE: + case WSI_TOKEN_EXTENSIONS: + case WSI_TOKEN_HTTP: + case WSI_TOKEN_HTTP_ACCEPT: + case WSI_TOKEN_HTTP_AC_REQUEST_HEADERS: + case WSI_TOKEN_HTTP_IF_MODIFIED_SINCE: + case WSI_TOKEN_HTTP_IF_NONE_MATCH: + case WSI_TOKEN_HTTP_ACCEPT_ENCODING: + case WSI_TOKEN_HTTP_ACCEPT_LANGUAGE: + case WSI_TOKEN_HTTP_PRAGMA: + case WSI_TOKEN_HTTP_CACHE_CONTROL: + case WSI_TOKEN_HTTP_AUTHORIZATION: + case WSI_TOKEN_HTTP_COOKIE: + case WSI_TOKEN_HTTP_CONTENT_LENGTH: + case WSI_TOKEN_HTTP_CONTENT_TYPE: + case WSI_TOKEN_HTTP_DATE: + case WSI_TOKEN_HTTP_RANGE: + case WSI_TOKEN_HTTP_REFERER: + lwsl_parser("WSI_TOK_(%d) '%c'\n", wsi->u.hdr.parser_state, c); @@ -223,11 +236,9 @@ int libwebsocket_parse( wsi->u.hdr.parser_state]].len && c == ' ') break; - for (m = 0; m < ARRAY_SIZE(methods); m++) - if (wsi->u.hdr.parser_state == methods[m]) - break; - if (m == ARRAY_SIZE(methods)) - /* it was not any of the methods */ + if ((wsi->u.hdr.parser_state != WSI_TOKEN_GET_URI) && + (wsi->u.hdr.parser_state != WSI_TOKEN_POST_URI) && + (wsi->u.hdr.parser_state != WSI_TOKEN_OPTIONS_URI)) goto check_eol; /* special URI processing... end at space */ @@ -237,12 +248,9 @@ int libwebsocket_parse( if (!wsi->u.hdr.ah->frags[wsi->u.hdr.ah->next_frag_index].len) if (issue_char(wsi, '/') < 0) return -1; - - /* begin parsing HTTP version: */ - if (issue_char(wsi, '\0') < 0) - return -1; - wsi->u.hdr.parser_state = WSI_TOKEN_HTTP; - goto start_fragment; + c = '\0'; + wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; + goto spill; } /* special URI processing... convert %xx */ @@ -306,8 +314,8 @@ int libwebsocket_parse( if (c == '.') { wsi->u.hdr.ups = URIPS_SEEN_SLASH_DOT; goto swallow; - } - wsi->u.hdr.ups = URIPS_IDLE; + } else + wsi->u.hdr.ups = URIPS_IDLE; break; case URIPS_SEEN_SLASH_DOT: /* swallow second . */ @@ -346,14 +354,24 @@ int libwebsocket_parse( /* last issued was /, so another / == // */ if (c == '/') goto swallow; - /* last we issued was / so SEEN_SLASH */ - wsi->u.hdr.ups = URIPS_SEEN_SLASH; + else /* last we issued was / so SEEN_SLASH */ + wsi->u.hdr.ups = URIPS_SEEN_SLASH; break; case URIPS_ARGUMENTS: /* leave them alone */ break; } +check_eol: + + /* bail at EOL */ + if (wsi->u.hdr.parser_state != WSI_TOKEN_CHALLENGE && + c == '\x0d') { + c = '\0'; + wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING_SAW_CR; + lwsl_parser("*\n"); + } + if (c == '?') { /* start of URI arguments */ /* seal off uri header */ wsi->u.hdr.ah->data[wsi->u.hdr.ah->pos++] = '\0'; @@ -376,22 +394,16 @@ int libwebsocket_parse( goto swallow; } -check_eol: - - /* bail at EOL */ - if (wsi->u.hdr.parser_state != WSI_TOKEN_CHALLENGE && - c == '\x0d') { - c = '\0'; - wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING_SAW_CR; - lwsl_parser("*\n"); - } - - n = issue_char(wsi, c); - if (n < 0) - return -1; - if (n > 0) - wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; - +spill: + { + int issue_result = issue_char(wsi, c); + if (issue_result < 0) { + return -1; + } + else if(issue_result > 0) { + wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; + }; + }; swallow: /* per-protocol end of headers management */ @@ -401,58 +413,52 @@ int libwebsocket_parse( /* collecting and checking a name part */ case WSI_TOKEN_NAME_PART: - lwsl_parser("WSI_TOKEN_NAME_PART '%c' (mode=%d)\n", c, wsi->mode); + lwsl_parser("WSI_TOKEN_NAME_PART '%c'\n", c); wsi->u.hdr.lextable_pos = lextable_decode(wsi->u.hdr.lextable_pos, c); - /* - * Server needs to look out for unknown methods... - */ - if (wsi->u.hdr.lextable_pos < 0 && - wsi->mode == LWS_CONNMODE_HTTP_SERVING) { + + if (wsi->u.hdr.lextable_pos < 0) { /* this is not a header we know about */ - for (m = 0; m < ARRAY_SIZE(methods); m++) - if (wsi->u.hdr.ah->frag_index[methods[m]]) { - /* - * already had the method, no idea what - * this crap from the client is, ignore - */ - wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; - break; - } + if (wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI] || + wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI] || + wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI] || + wsi->u.hdr.ah->frag_index[WSI_TOKEN_HTTP]) { + /* + * altready had the method, no idea what + * this crap is, ignore + */ + wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; + break; + } /* - * hm it's an unknown http method from a client in fact, + * hm it's an unknown http method in fact, * treat as dangerous */ - if (m == ARRAY_SIZE(methods)) { - lwsl_info("Unknown method - dropping\n"); - return -1; - } - break; - } - /* - * ...otherwise for a client, let him ignore unknown headers - * coming from the server - */ - if (wsi->u.hdr.lextable_pos < 0) { - wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING; - break; - } + lwsl_info("Unknown method - dropping\n"); + return -1; + } if (lextable[wsi->u.hdr.lextable_pos] < FAIL_CHAR) { + /* terminal state */ - n = ((unsigned int)lextable[wsi->u.hdr.lextable_pos] << 8) | - lextable[wsi->u.hdr.lextable_pos + 1]; + n = (lextable[wsi->u.hdr.lextable_pos] << 8) | lextable[wsi->u.hdr.lextable_pos + 1]; lwsl_parser("known hdr %d\n", n); - for (m = 0; m < ARRAY_SIZE(methods); m++) - if (n == methods[m] && - wsi->u.hdr.ah->frag_index[ - methods[m]]) { - lwsl_warn("Duplicated method\n"); - return -1; - } + if (n == WSI_TOKEN_GET_URI && + wsi->u.hdr.ah->frag_index[WSI_TOKEN_GET_URI]) { + lwsl_warn("Duplicated GET\n"); + return -1; + } else if (n == WSI_TOKEN_POST_URI && + wsi->u.hdr.ah->frag_index[WSI_TOKEN_POST_URI]) { + lwsl_warn("Duplicated POST\n"); + return -1; + } else if (n == WSI_TOKEN_OPTIONS_URI && + wsi->u.hdr.ah->frag_index[WSI_TOKEN_OPTIONS_URI]) { + lwsl_warn("Duplicated OPTIONS\n"); + return -1; + } /* * WSORIGIN is protocol equiv to ORIGIN, @@ -464,11 +470,13 @@ int libwebsocket_parse( wsi->u.hdr.parser_state = (enum lws_token_indexes) (WSI_TOKEN_GET_URI + n); - if (context->token_limits) - wsi->u.hdr.current_token_limit = + if( context->token_limits ) { + wsi->u.hdr.current_token_limit = \ context->token_limits->token_limit[wsi->u.hdr.parser_state]; - else + } + else { wsi->u.hdr.current_token_limit = sizeof(wsi->u.hdr.ah->data); + }; if (wsi->u.hdr.parser_state == WSI_TOKEN_CHALLENGE) goto set_parsing_complete; @@ -534,6 +542,9 @@ int libwebsocket_parse( case WSI_PARSING_COMPLETE: lwsl_parser("WSI_PARSING_COMPLETE '%c'\n", c); break; + + default: /* keep gcc happy */ + break; } return 0; @@ -815,10 +826,8 @@ libwebsocket_rx_sm(struct libwebsocket *wsi, unsigned char c) case LWS_RXPS_PAYLOAD_UNTIL_LENGTH_EXHAUSTED: - if (!wsi->u.ws.rx_user_buffer) { + if (!wsi->u.ws.rx_user_buffer) lwsl_err("NULL user buffer...\n"); - return 1; - } if (wsi->u.ws.all_zero_nonce) wsi->u.ws.rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING + @@ -886,46 +895,16 @@ libwebsocket_rx_sm(struct libwebsocket *wsi, unsigned char c) case LWS_WS_OPCODE_07__PING: lwsl_info("received %d byte ping, sending pong\n", wsi->u.ws.rx_user_buffer_head); - - if (wsi->u.ws.ping_pending_flag) { - /* - * there is already a pending ping payload - * we should just log and drop - */ - lwsl_parser("DROP PING since one pending\n"); - goto ping_drop; - } - - /* control packets can only be < 128 bytes long */ - if (wsi->u.ws.rx_user_buffer_head > 128 - 4) { - lwsl_parser("DROP PING payload too large\n"); - goto ping_drop; - } - - /* if existing buffer is too small, drop it */ - if (wsi->u.ws.ping_payload_buf && - wsi->u.ws.ping_payload_alloc < wsi->u.ws.rx_user_buffer_head) { - lws_free2(wsi->u.ws.ping_payload_buf); - } - - /* if no buffer, allocate it */ - if (!wsi->u.ws.ping_payload_buf) { - wsi->u.ws.ping_payload_buf = lws_malloc(wsi->u.ws.rx_user_buffer_head - + LWS_SEND_BUFFER_PRE_PADDING); - wsi->u.ws.ping_payload_alloc = wsi->u.ws.rx_user_buffer_head; - } - - /* stash the pong payload */ - memcpy(wsi->u.ws.ping_payload_buf + LWS_SEND_BUFFER_PRE_PADDING, - &wsi->u.ws.rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING], - wsi->u.ws.rx_user_buffer_head); - - wsi->u.ws.ping_payload_len = wsi->u.ws.rx_user_buffer_head; - wsi->u.ws.ping_pending_flag = 1; - - /* get it sent as soon as possible */ - libwebsocket_callback_on_writable(wsi->protocol->owning_server, wsi); -ping_drop: + lwsl_hexdump(&wsi->u.ws.rx_user_buffer[ + LWS_SEND_BUFFER_PRE_PADDING], + wsi->u.ws.rx_user_buffer_head); + /* parrot the ping packet payload back as a pong */ + n = libwebsocket_write(wsi, (unsigned char *) + &wsi->u.ws.rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING], + wsi->u.ws.rx_user_buffer_head, LWS_WRITE_PONG); + if (n < 0) + return -1; + /* ... then just drop it */ wsi->u.ws.rx_user_buffer_head = 0; return 0; diff --git a/lib/pollfd.c b/lib/pollfd.c index 19905eff78..3995a378ac 100755 --- a/lib/pollfd.c +++ b/lib/pollfd.c @@ -32,13 +32,11 @@ insert_wsi_socket_into_fds(struct libwebsocket_context *context, return 1; } -#ifndef _WIN32 if (wsi->sock >= context->max_fds) { lwsl_err("Socket fd %d is too high (%d)\n", wsi->sock, context->max_fds); return 1; } -#endif assert(wsi); assert(wsi->sock >= 0); @@ -50,7 +48,7 @@ insert_wsi_socket_into_fds(struct libwebsocket_context *context, LWS_CALLBACK_LOCK_POLL, wsi->user_space, (void *) &pa, 0); - insert_wsi(context, wsi); + context->lws_lookup[wsi->sock] = wsi; wsi->position_in_fds_table = context->fds_count; context->fds[context->fds_count].fd = wsi->sock; context->fds[context->fds_count].events = LWS_POLLIN; @@ -110,10 +108,10 @@ remove_wsi_socket_from_fds(struct libwebsocket_context *context, * (still same fd pointing to same wsi) */ /* end guy's "position in fds table" changed */ - wsi_from_fd(context,context->fds[context->fds_count].fd)-> - position_in_fds_table = m; + context->lws_lookup[context->fds[context->fds_count].fd]-> + position_in_fds_table = m; /* deletion guy's lws_lookup entry needs nuking */ - delete_from_fd(context,wsi->sock); + context->lws_lookup[wsi->sock] = NULL; /* removed wsi has no position any more */ wsi->position_in_fds_table = -1; @@ -133,19 +131,12 @@ remove_wsi_socket_from_fds(struct libwebsocket_context *context, int lws_change_pollfd(struct libwebsocket *wsi, int _and, int _or) { - struct libwebsocket_context *context; + struct libwebsocket_context *context = wsi->protocol->owning_server; int tid; int sampled_tid; struct libwebsocket_pollfd *pfd; struct libwebsocket_pollargs pa; - if (!wsi || !wsi->protocol || wsi->position_in_fds_table < 0) - return 1; - - context = wsi->protocol->owning_server; - if (!context) - return 1; - pfd = &context->fds[wsi->position_in_fds_table]; pa.fd = wsi->sock; @@ -202,53 +193,6 @@ LWS_VISIBLE int libwebsocket_callback_on_writable(struct libwebsocket_context *context, struct libwebsocket *wsi) { -#ifdef LWS_USE_HTTP2 - struct libwebsocket *network_wsi, *wsi2; - int already; - - lwsl_info("%s: %p\n", __func__, wsi); - - if (wsi->mode != LWS_CONNMODE_HTTP2_SERVING) - goto network_sock; - - if (wsi->u.http2.requested_POLLOUT) { - lwsl_info("already pending writable\n"); - return 1; - } - - if (wsi->u.http2.tx_credit <= 0) { - /* - * other side is not able to cope with us sending - * anything so no matter if we have POLLOUT on our side. - * - * Delay waiting for our POLLOUT until peer indicates he has - * space for more using tx window command in http2 layer - */ - lwsl_info("%s: %p: waiting_tx_credit (%d)\n", __func__, wsi, wsi->u.http2.tx_credit); - wsi->u.http2.waiting_tx_credit = 1; - return 0; - } - - network_wsi = lws_http2_get_network_wsi(wsi); - already = network_wsi->u.http2.requested_POLLOUT; - - /* mark everybody above him as requesting pollout */ - - wsi2 = wsi; - while (wsi2) { - wsi2->u.http2.requested_POLLOUT = 1; - lwsl_info("mark %p pending writable\n", wsi2); - wsi2 = wsi2->u.http2.parent_wsi; - } - - /* for network action, act only on the network wsi */ - - wsi = network_wsi; - if (already) - return 1; -network_sock: -#endif - if (lws_ext_callback_for_each_active(wsi, LWS_EXT_CALLBACK_REQUEST_ON_WRITEABLE, NULL, 0)) return 1; @@ -284,7 +228,7 @@ libwebsocket_callback_on_writable_all_protocol( struct libwebsocket *wsi; for (n = 0; n < context->fds_count; n++) { - wsi = wsi_from_fd(context,context->fds[n].fd); + wsi = context->lws_lookup[context->fds[n].fd]; if (!wsi) continue; if (wsi->protocol == protocol) diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 5e73dff3b6..235be7f0c5 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -106,9 +106,11 @@ #include #endif #if defined (__ANDROID__) -#include + #include + #include #else -#include + #include + #include #endif #include #include @@ -161,7 +163,9 @@ #ifdef LWS_OPENSSL_SUPPORT #ifdef USE_CYASSL #include -#include +#include +unsigned char * +SHA1(const unsigned char *d, size_t n, unsigned char *md); #else #include #include @@ -209,26 +213,6 @@ typedef unsigned __int64 u_int64_t; #include #endif -#include - -#ifndef container_of -#define container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M))) -#endif - -#if defined(__QNX__) - #include - #if defined(__LITTLEENDIAN__) - #define BYTE_ORDER __LITTLEENDIAN__ - #define LITTLE_ENDIAN __LITTLEENDIAN__ - #define BIG_ENDIAN 4321 /* to show byte order (taken from gcc); for suppres warning that BIG_ENDIAN is not defined. */ - #endif - #if defined(__BIGENDIAN__) - #define BYTE_ORDER __BIGENDIAN__ - #define LITTLE_ENDIAN 1234 /* to show byte order (taken from gcc); for suppres warning that LITTLE_ENDIAN is not defined. */ - #define BIG_ENDIAN __BIGENDIAN__ - #endif -#endif - #if !defined(BYTE_ORDER) # define BYTE_ORDER __BYTE_ORDER #endif @@ -249,12 +233,6 @@ typedef unsigned __int64 u_int64_t; #define MSG_NOSIGNAL SO_NOSIGPIPE #endif -#ifdef _WIN32 -#ifndef FD_HASHTABLE_MODULUS -#define FD_HASHTABLE_MODULUS 32 -#endif -#endif - #ifndef LWS_MAX_HEADER_LEN #define LWS_MAX_HEADER_LEN 1024 #endif @@ -319,27 +297,6 @@ enum lws_connection_states { WSI_STATE_RETURNED_CLOSE_ALREADY, WSI_STATE_AWAITING_CLOSE_ACK, WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE, - - WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE, - WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS, - WSI_STATE_HTTP2_ESTABLISHED, -}; - -enum http_version { - HTTP_VERSION_1_0, - HTTP_VERSION_1_1, -}; - -enum http_connection_type { - HTTP_CONNECTION_CLOSE, - HTTP_CONNECTION_KEEP_ALIVE -}; - -enum lws_pending_protocol_send { - LWS_PPS_NONE, - LWS_PPS_HTTP2_MY_SETTINGS, - LWS_PPS_HTTP2_ACK_SETTINGS, - LWS_PPS_HTTP2_PONG, }; enum lws_rx_parse_state { @@ -378,8 +335,6 @@ enum connection_mode { LWS_CONNMODE_WS_SERVING, LWS_CONNMODE_WS_CLIENT, - - LWS_CONNMODE_HTTP2_SERVING, /* transient, ssl delay hiding */ LWS_CONNMODE_SSL_ACK_PENDING, @@ -418,25 +373,12 @@ struct lws_signal_watcher { }; #endif /* LWS_USE_LIBEV */ -#ifdef _WIN32 -#define LWS_FD_HASH(fd) ((fd ^ (fd >> 8) ^ (fd >> 16)) % FD_HASHTABLE_MODULUS) -struct libwebsocket_fd_hashtable { - struct libwebsocket **wsi; - int length; -}; -#endif - struct libwebsocket_context { #ifdef _WIN32 WSAEVENT *events; #endif struct libwebsocket_pollfd *fds; -#ifdef _WIN32 -/* different implementation between unix and windows */ - struct libwebsocket_fd_hashtable fd_hashtable[FD_HASHTABLE_MODULUS]; -#else - struct libwebsocket **lws_lookup; /* fd to wsi */ -#endif + struct libwebsocket **lws_lookup; /* fd to wsi */ int fds_count; #ifdef LWS_USE_LIBEV struct ev_loop* io_loop; @@ -490,13 +432,8 @@ struct libwebsocket_context { #ifdef LWS_OPENSSL_SUPPORT int use_ssl; int allow_non_ssl_on_ssl_port; - unsigned int user_supplied_ssl_ctx:1; SSL_CTX *ssl_ctx; SSL_CTX *ssl_client_ctx; - struct libwebsocket *pending_read_list; /* linked list */ -#define lws_ssl_anybody_has_buffered_read(ctx) (ctx->use_ssl && ctx->pending_read_list) -#else -#define lws_ssl_anybody_has_buffered_read(ctx) (0) #endif struct libwebsocket_protocols *protocols; int count_protocols; @@ -569,18 +506,6 @@ struct lws_fragments { unsigned char next_frag_index; }; -/* notice that these union members: - * - * hdr - * http - * http2 - * - * all have a pointer to allocated_headers struct as their first member. - * - * It means for allocated_headers access, the three union paths can all be - * used interchangably to access the same data - */ - struct allocated_headers { unsigned short next_frag_index; unsigned short pos; @@ -594,7 +519,6 @@ struct allocated_headers { }; struct _lws_http_mode_related { - /* MUST be first in struct */ struct allocated_headers *ah; /* mirroring _lws_header_related */ #if defined(WIN32) || defined(_WIN32) HANDLE fd; @@ -604,168 +528,13 @@ struct _lws_http_mode_related { unsigned long filepos; unsigned long filelen; - enum http_version request_version; - enum http_connection_type connection_type; int content_length; - int content_remain; -}; - - -#ifdef LWS_USE_HTTP2 - -enum lws_http2_settings { - LWS_HTTP2_SETTINGS__HEADER_TABLE_SIZE = 1, - LWS_HTTP2_SETTINGS__ENABLE_PUSH, - LWS_HTTP2_SETTINGS__MAX_CONCURRENT_STREAMS, - LWS_HTTP2_SETTINGS__INITIAL_WINDOW_SIZE, - LWS_HTTP2_SETTINGS__MAX_FRAME_SIZE, - LWS_HTTP2_SETTINGS__MAX_HEADER_LIST_SIZE, - - LWS_HTTP2_SETTINGS__COUNT /* always last */ -}; - -enum lws_http2_wellknown_frame_types { - LWS_HTTP2_FRAME_TYPE_DATA, - LWS_HTTP2_FRAME_TYPE_HEADERS, - LWS_HTTP2_FRAME_TYPE_PRIORITY, - LWS_HTTP2_FRAME_TYPE_RST_STREAM, - LWS_HTTP2_FRAME_TYPE_SETTINGS, - LWS_HTTP2_FRAME_TYPE_PUSH_PROMISE, - LWS_HTTP2_FRAME_TYPE_PING, - LWS_HTTP2_FRAME_TYPE_GOAWAY, - LWS_HTTP2_FRAME_TYPE_WINDOW_UPDATE, - LWS_HTTP2_FRAME_TYPE_CONTINUATION, - - LWS_HTTP2_FRAME_TYPE_COUNT /* always last */ -}; - -enum lws_http2_flags { - LWS_HTTP2_FLAG_END_STREAM = 1, - LWS_HTTP2_FLAG_END_HEADERS = 4, - LWS_HTTP2_FLAG_PADDED = 8, - LWS_HTTP2_FLAG_PRIORITY = 0x20, - - LWS_HTTP2_FLAG_SETTINGS_ACK = 1, -}; - -#define LWS_HTTP2_STREAM_ID_MASTER 0 -#define LWS_HTTP2_FRAME_HEADER_LENGTH 9 -#define LWS_HTTP2_SETTINGS_LENGTH 6 - -struct http2_settings { - unsigned int setting[LWS_HTTP2_SETTINGS__COUNT]; -}; - -enum http2_hpack_state { - - /* optional before first header block */ - HPKS_OPT_PADDING, - HKPS_OPT_E_DEPENDENCY, - HKPS_OPT_WEIGHT, - - /* header block */ - HPKS_TYPE, - - HPKS_IDX_EXT, - - HPKS_HLEN, - HPKS_HLEN_EXT, - - HPKS_DATA, - - /* optional after last header block */ - HKPS_OPT_DISCARD_PADDING, -}; - -enum http2_hpack_type { - HPKT_INDEXED_HDR_7, - HPKT_INDEXED_HDR_6_VALUE_INCR, - HPKT_LITERAL_HDR_VALUE_INCR, - HPKT_INDEXED_HDR_4_VALUE, - HPKT_LITERAL_HDR_VALUE, - HPKT_SIZE_5 -}; - -struct hpack_dt_entry { - int token; /* additions that don't map to a token are ignored */ - int arg_offset; - int arg_len; -}; - -struct hpack_dynamic_table { - struct hpack_dt_entry *entries; - char *args; - int pos; - int next; - int num_entries; - int args_length; -}; - -struct _lws_http2_related { - /* - * having this first lets us also re-use all HTTP union code - * and in turn, http_mode_related has allocated headers in right - * place so we can use the header apis on the wsi directly still - */ - struct _lws_http_mode_related http; /* MUST BE FIRST IN STRUCT */ - - struct http2_settings my_settings; - struct http2_settings peer_settings; - - struct libwebsocket *parent_wsi; - struct libwebsocket *next_child_wsi; - - struct hpack_dynamic_table *hpack_dyn_table; - - unsigned int count; - - /* frame */ - unsigned int length; - unsigned int stream_id; - struct libwebsocket *stream_wsi; - unsigned char type; - unsigned char flags; - unsigned char frame_state; - unsigned char padding; - - unsigned char ping_payload[8]; - - unsigned short round_robin_POLLOUT; - unsigned short count_POLLOUT_children; - - unsigned int END_STREAM:1; - unsigned int END_HEADERS:1; - unsigned int send_END_STREAM:1; - unsigned int GOING_AWAY; - unsigned int requested_POLLOUT:1; - unsigned int waiting_tx_credit:1; - - /* hpack */ - enum http2_hpack_state hpack; - enum http2_hpack_type hpack_type; - unsigned int header_index; - unsigned int hpack_len; - unsigned short hpack_pos; - unsigned char hpack_m; - unsigned int hpack_e_dep; - unsigned int huff:1; - unsigned int value:1; - - /* negative credit is mandated by the spec */ - int tx_credit; - unsigned int my_stream_id; - unsigned int child_count; - int my_priority; - unsigned char initialized; - unsigned char one_setting[LWS_HTTP2_SETTINGS_LENGTH]; + int content_length_seen; + int body_index; + unsigned char *post_buffer; }; -#define HTTP2_IS_TOPLEVEL_WSI(wsi) (!wsi->u.http2.parent_wsi) - -#endif - struct _lws_header_related { - /* MUST be first in struct */ struct allocated_headers *ah; short lextable_pos; unsigned short current_token_limit; @@ -787,15 +556,13 @@ struct _lws_websocket_related { unsigned int frame_is_binary:1; unsigned int all_zero_nonce:1; short close_reason; /* enum lws_close_status */ - + unsigned char *rxflow_buffer; + int rxflow_len; + int rxflow_pos; + unsigned int rxflow_change_to:2; unsigned int this_frame_masked:1; unsigned int inside_frame:1; /* next write will be more of frame */ unsigned int clean_buffer:1; /* buffer not rewritten by extension */ - - unsigned char *ping_payload_buf; /* non-NULL if malloc'd */ - unsigned int ping_payload_alloc; /* length malloc'd */ - unsigned int ping_payload_len; - unsigned char ping_pending_flag; }; struct libwebsocket { @@ -815,7 +582,6 @@ struct libwebsocket { unsigned int extension_data_pending:1; #endif unsigned char ietf_spec_revision; - enum lws_pending_protocol_send pps; char mode; /* enum connection_mode */ char state; /* enum lws_connection_states */ @@ -824,21 +590,16 @@ struct libwebsocket { unsigned int hdr_parsing_completed:1; unsigned int user_space_externally_allocated:1; - unsigned int socket_is_permanently_unusable:1; char pending_timeout; /* enum pending_timeout */ time_t pending_timeout_limit; + int sock; int position_in_fds_table; #ifdef LWS_LATENCY unsigned long action_start; unsigned long latency_start; #endif - /* rxflow handling */ - unsigned char *rxflow_buffer; - int rxflow_len; - int rxflow_pos; - unsigned int rxflow_change_to:2; /* truncated send handling */ unsigned char *truncated_send_malloc; /* non-NULL means buffering in progress */ @@ -852,9 +613,6 @@ struct libwebsocket { union u { struct _lws_http_mode_related http; -#ifdef LWS_USE_HTTP2 - struct _lws_http2_related http2; -#endif struct _lws_header_related hdr; struct _lws_websocket_related ws; } u; @@ -862,9 +620,7 @@ struct libwebsocket { #ifdef LWS_OPENSSL_SUPPORT SSL *ssl; BIO *client_bio; - struct libwebsocket *pending_read_list_prev, *pending_read_list_next; unsigned int use_ssl:2; - unsigned int upgraded:1; #endif #ifdef _WIN32 @@ -881,15 +637,13 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context, LWS_EXTERN int remove_wsi_socket_from_fds(struct libwebsocket_context *context, struct libwebsocket *wsi); -LWS_EXTERN int -lws_rxflow_cache(struct libwebsocket *wsi, unsigned char *buf, int n, int len); #ifndef LWS_LATENCY static inline void lws_latency(struct libwebsocket_context *context, struct libwebsocket *wsi, const char *action, - int ret, int completion) { do { } while (0); } + int ret, int completion) { while (0); } static inline void lws_latency_pre(struct libwebsocket_context *context, - struct libwebsocket *wsi) { do { } while (0); } + struct libwebsocket *wsi) { while (0); } #else #define lws_latency_pre(_context, _wsi) lws_latency(_context, _wsi, NULL, 0, 0) extern void @@ -898,9 +652,6 @@ lws_latency(struct libwebsocket_context *context, int ret, int completion); #endif -LWS_EXTERN void lws_set_protocol_write_pending(struct libwebsocket_context *context, - struct libwebsocket *wsi, - enum lws_pending_protocol_send pend); LWS_EXTERN int libwebsocket_client_rx_sm(struct libwebsocket *wsi, unsigned char c); @@ -908,27 +659,12 @@ LWS_EXTERN int libwebsocket_parse(struct libwebsocket_context *context, struct libwebsocket *wsi, unsigned char c); -LWS_EXTERN int -lws_http_action(struct libwebsocket_context *context, struct libwebsocket *wsi); - LWS_EXTERN int lws_b64_selftest(void); -#ifdef _WIN32 LWS_EXTERN struct libwebsocket * wsi_from_fd(struct libwebsocket_context *context, int fd); -LWS_EXTERN int -insert_wsi(struct libwebsocket_context *context, struct libwebsocket *wsi); - -LWS_EXTERN int -delete_from_fd(struct libwebsocket_context *context, int fd); -#else -#define wsi_from_fd(A,B) A->lws_lookup[B] -#define insert_wsi(A,B) A->lws_lookup[B->sock]=B -#define delete_from_fd(A,B) A->lws_lookup[B]=0 -#endif - LWS_EXTERN int insert_wsi_socket_into_fds(struct libwebsocket_context *context, struct libwebsocket *wsi); @@ -955,7 +691,6 @@ libwebsockets_generate_client_handshake(struct libwebsocket_context *context, LWS_EXTERN int lws_handle_POLLOUT_event(struct libwebsocket_context *context, struct libwebsocket *wsi, struct libwebsocket_pollfd *pollfd); - /* * EXTENSIONS */ @@ -999,58 +734,12 @@ lws_issue_raw_ext_access(struct libwebsocket *wsi, LWS_EXTERN int _libwebsocket_rx_flow_control(struct libwebsocket *wsi); -LWS_EXTERN void -lws_union_transition(struct libwebsocket *wsi, enum connection_mode mode); - LWS_EXTERN int user_callback_handle_rxflow(callback_function, struct libwebsocket_context *context, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user, void *in, size_t len); -#ifdef LWS_USE_HTTP2 -LWS_EXTERN struct libwebsocket *lws_http2_get_network_wsi(struct libwebsocket *wsi); -struct libwebsocket * lws_http2_get_nth_child(struct libwebsocket *wsi, int n); -LWS_EXTERN int -lws_http2_interpret_settings_payload(struct http2_settings *settings, unsigned char *buf, int len); -LWS_EXTERN void lws_http2_init(struct http2_settings *settings); -LWS_EXTERN int -lws_http2_parser(struct libwebsocket_context *context, - struct libwebsocket *wsi, unsigned char c); -LWS_EXTERN int lws_http2_do_pps_send(struct libwebsocket_context *context, struct libwebsocket *wsi); -LWS_EXTERN int lws_http2_frame_write(struct libwebsocket *wsi, int type, int flags, unsigned int sid, unsigned int len, unsigned char *buf); -LWS_EXTERN struct libwebsocket * -lws_http2_wsi_from_id(struct libwebsocket *wsi, unsigned int sid); -LWS_EXTERN int lws_hpack_interpret(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned char c); -LWS_EXTERN int -lws_add_http2_header_by_name(struct libwebsocket_context *context, - struct libwebsocket *wsi, - const unsigned char *name, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end); -LWS_EXTERN int -lws_add_http2_header_by_token(struct libwebsocket_context *context, - struct libwebsocket *wsi, - enum lws_token_indexes token, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end); -LWS_EXTERN int -lws_add_http2_header_status(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned int code, - unsigned char **p, - unsigned char *end); -LWS_EXTERN -void lws_http2_configure_if_upgraded(struct libwebsocket *wsi); -#else -#define lws_http2_configure_if_upgraded(x) -#endif LWS_EXTERN int lws_plat_set_socket_options(struct libwebsocket_context *context, int fd); @@ -1058,9 +747,6 @@ lws_plat_set_socket_options(struct libwebsocket_context *context, int fd); LWS_EXTERN int lws_allocate_header_table(struct libwebsocket *wsi); -LWS_EXTERN int -lws_free_header_table(struct libwebsocket *wsi); - LWS_EXTERN char * lws_hdr_simple_ptr(struct libwebsocket *wsi, enum lws_token_indexes h); @@ -1115,21 +801,23 @@ enum lws_ssl_capable_status { #ifndef LWS_OPENSSL_SUPPORT #define LWS_SSL_ENABLED(context) (0) +unsigned char * +SHA1(const unsigned char *d, size_t n, unsigned char *md); #define lws_context_init_server_ssl(_a, _b) (0) #define lws_ssl_destroy(_a) #define lws_context_init_http2_ssl(_a) +#define lws_ssl_pending(_a) (0) #define lws_ssl_capable_read lws_ssl_capable_read_no_ssl #define lws_ssl_capable_write lws_ssl_capable_write_no_ssl #define lws_server_socket_service_ssl(_a, _b, _c, _d, _e) (0) #define lws_ssl_close(_a) (0) #define lws_ssl_context_destroy(_a) -#define lws_ssl_remove_wsi_from_buffered_list(_a, _b) #else #define LWS_SSL_ENABLED(context) (context->use_ssl) +LWS_EXTERN int lws_ssl_pending(struct libwebsocket *wsi); LWS_EXTERN int openssl_websocket_private_data_index; LWS_EXTERN int -lws_ssl_capable_read(struct libwebsocket_context *context, - struct libwebsocket *wsi, unsigned char *buf, int len); +lws_ssl_capable_read(struct libwebsocket *wsi, unsigned char *buf, int len); LWS_EXTERN int lws_ssl_capable_write(struct libwebsocket *wsi, unsigned char *buf, int len); @@ -1141,9 +829,6 @@ LWS_EXTERN int lws_ssl_close(struct libwebsocket *wsi); LWS_EXTERN void lws_ssl_context_destroy(struct libwebsocket_context *context); -LWS_VISIBLE void -lws_ssl_remove_wsi_from_buffered_list(struct libwebsocket_context *context, - struct libwebsocket *wsi); #ifndef LWS_NO_SERVER LWS_EXTERN int lws_context_init_server_ssl(struct lws_context_creation_info *info, @@ -1165,8 +850,7 @@ lws_context_init_http2_ssl(struct libwebsocket_context *context); #endif LWS_EXTERN int -lws_ssl_capable_read_no_ssl(struct libwebsocket_context *context, - struct libwebsocket *wsi, unsigned char *buf, int len); +lws_ssl_capable_read_no_ssl(struct libwebsocket *wsi, unsigned char *buf, int len); LWS_EXTERN int lws_ssl_capable_write_no_ssl(struct libwebsocket *wsi, unsigned char *buf, int len); @@ -1200,23 +884,6 @@ lws_ssl_capable_write_no_ssl(struct libwebsocket *wsi, unsigned char *buf, int l #define _libwebsocket_rx_flow_control(_a) (0) #define lws_handshake_server(_a, _b, _c, _d) (0) #endif - -LWS_EXTERN int libwebsockets_get_addresses(struct libwebsocket_context *context, - void *ads, char *name, int name_len, - char *rip, int rip_len); - -/* - * custom allocator - */ -LWS_EXTERN void* -lws_realloc(void *ptr, size_t size); - -LWS_EXTERN void* -lws_zalloc(size_t size); - -#define lws_malloc(S) lws_realloc(NULL, S) -#define lws_free(P) lws_realloc(P, 0) -#define lws_free2(P) do { lws_realloc(P, 0); (P) = NULL; } while(0) /* * lws_plat_ diff --git a/lib/server-handshake.c b/lib/server-handshake.c index 298fae4387..56cf9a13e4 100644 --- a/lib/server-handshake.c +++ b/lib/server-handshake.c @@ -124,12 +124,15 @@ lws_extension_server_handshake(struct libwebsocket_context *context, wsi->active_extensions_user[ wsi->count_active_extensions] = - lws_zalloc(ext->per_session_data_size); + malloc(ext->per_session_data_size); if (wsi->active_extensions_user[ wsi->count_active_extensions] == NULL) { lwsl_err("Out of mem\n"); return 1; } + memset(wsi->active_extensions_user[ + wsi->count_active_extensions], 0, + ext->per_session_data_size); wsi->active_extensions[ wsi->count_active_extensions] = ext; @@ -151,7 +154,7 @@ lws_extension_server_handshake(struct libwebsocket_context *context, n = 0; } - + return 0; } #endif @@ -185,7 +188,7 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi) "%s258EAFA5-E914-47DA-95CA-C5AB0DC85B11", lws_hdr_simple_ptr(wsi, WSI_TOKEN_KEY)); - libwebsockets_SHA1(context->service_buffer, n, hash); + SHA1(context->service_buffer, n, hash); accept_len = lws_b64_encode_string((char *)hash, 20, (char *)context->service_buffer, @@ -203,7 +206,7 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi) /* make a buffer big enough for everything */ - response = (char *)context->service_buffer + MAX_WEBSOCKET_04_KEY_LEN + LWS_SEND_BUFFER_PRE_PADDING; + response = (char *)context->service_buffer + MAX_WEBSOCKET_04_KEY_LEN; p = response; LWS_CPYAPP(p, "HTTP/1.1 101 Switching Protocols\x0d\x0a" "Upgrade: WebSocket\x0d\x0a" @@ -228,9 +231,6 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi) if (lws_extension_server_handshake(context, wsi, &p)) goto bail; #endif - - //LWS_CPYAPP(p, "\x0d\x0a""An-unknown-header: blah"); - /* end of response packet */ LWS_CPYAPP(p, "\x0d\x0a\x0d\x0a"); @@ -246,7 +246,7 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi) fwrite(response, 1, p - response, stderr); #endif n = libwebsocket_write(wsi, (unsigned char *)response, - p - response, LWS_WRITE_HTTP_HEADERS); + p - response, LWS_WRITE_HTTP); if (n != (p - response)) { lwsl_debug("handshake_0405: ERROR writing to socket\n"); goto bail; @@ -271,7 +271,10 @@ handshake_0405(struct libwebsocket_context *context, struct libwebsocket *wsi) bail: /* free up his parsing allocations */ - lws_free_header_table(wsi); + + if (wsi->u.hdr.ah) + free(wsi->u.hdr.ah); + return -1; } diff --git a/lib/server.c b/lib/server.c index d8f00c2e69..6afd570e29 100644 --- a/lib/server.c +++ b/lib/server.c @@ -57,11 +57,8 @@ int lws_context_init_server(struct lws_context_creation_info *info, /* * allow us to restart even if old sockets in TIME_WAIT */ - if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, - (const void *)&opt, sizeof(opt)) < 0) { - compatible_close(sockfd); - return 1; - } + setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, + (const void *)&opt, sizeof(opt)); lws_plat_set_socket_options(context, sockfd); @@ -102,7 +99,7 @@ int lws_context_init_server(struct lws_context_creation_info *info, compatible_close(sockfd); return 1; } - + if (getsockname(sockfd, (struct sockaddr *)&sin, &len) == -1) lwsl_warn("getsockname: %s\n", strerror(LWS_ERRNO)); else @@ -110,12 +107,13 @@ int lws_context_init_server(struct lws_context_creation_info *info, context->listen_port = info->port; - wsi = lws_zalloc(sizeof(struct libwebsocket)); + wsi = (struct libwebsocket *)malloc(sizeof(struct libwebsocket)); if (wsi == NULL) { lwsl_err("Out of mem\n"); compatible_close(sockfd); return 1; } + memset(wsi, 0, sizeof(struct libwebsocket)); wsi->sock = sockfd; wsi->mode = LWS_CONNMODE_SERVER_LISTENER; @@ -127,7 +125,7 @@ int lws_context_init_server(struct lws_context_creation_info *info, listen(sockfd, LWS_SOMAXCONN); lwsl_notice(" Listening on port %d\n", info->port); - + return 0; } @@ -137,11 +135,11 @@ _libwebsocket_rx_flow_control(struct libwebsocket *wsi) struct libwebsocket_context *context = wsi->protocol->owning_server; /* there is no pending change */ - if (!(wsi->rxflow_change_to & LWS_RXFLOW_PENDING_CHANGE)) + if (!(wsi->u.ws.rxflow_change_to & LWS_RXFLOW_PENDING_CHANGE)) return 0; /* stuff is still buffered, not ready to really accept new input */ - if (wsi->rxflow_buffer) { + if (wsi->u.ws.rxflow_buffer) { /* get ourselves called back to deal with stashed buffer */ libwebsocket_callback_on_writable(context, wsi); return 0; @@ -149,14 +147,14 @@ _libwebsocket_rx_flow_control(struct libwebsocket *wsi) /* pending is cleared, we can change rxflow state */ - wsi->rxflow_change_to &= ~LWS_RXFLOW_PENDING_CHANGE; + wsi->u.ws.rxflow_change_to &= ~LWS_RXFLOW_PENDING_CHANGE; lwsl_info("rxflow: wsi %p change_to %d\n", wsi, - wsi->rxflow_change_to & LWS_RXFLOW_ALLOW); + wsi->u.ws.rxflow_change_to & LWS_RXFLOW_ALLOW); /* adjust the pollfd for this wsi */ - if (wsi->rxflow_change_to & LWS_RXFLOW_ALLOW) { + if (wsi->u.ws.rxflow_change_to & LWS_RXFLOW_ALLOW) { if (lws_change_pollfd(wsi, 0, LWS_POLLIN)) { lwsl_info("%s: fail\n", __func__); return -1; @@ -168,171 +166,15 @@ _libwebsocket_rx_flow_control(struct libwebsocket *wsi) return 0; } -int lws_http_action(struct libwebsocket_context *context, - struct libwebsocket *wsi) -{ - char *uri_ptr = NULL; - int uri_len = 0; - enum http_version request_version; - enum http_connection_type connection_type; - int http_version_len; - char content_length_str[32]; - char http_version_str[10]; - char http_conn_str[20]; - int n, count = 0; - static const unsigned char methods[] = { - WSI_TOKEN_GET_URI, - WSI_TOKEN_POST_URI, - WSI_TOKEN_OPTIONS_URI, - WSI_TOKEN_PUT_URI, - WSI_TOKEN_PATCH_URI, - WSI_TOKEN_DELETE_URI, -#ifdef LWS_USE_HTTP2 - WSI_TOKEN_HTTP_COLON_PATH, -#endif - }; -#ifdef _DEBUG - static const char * const method_names[] = { - "GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE", -#ifdef LWS_USE_HTTP2 - ":path", -#endif - }; -#endif - - /* it's not websocket.... shall we accept it as http? */ - - for (n = 0; n < ARRAY_SIZE(methods); n++) - if (lws_hdr_total_length(wsi, methods[n])) - count++; - if (!count) { - lwsl_warn("Missing URI in HTTP request\n"); - goto bail_nuke_ah; - } - - if (count != 1) { - lwsl_warn("multiple methods?\n"); - goto bail_nuke_ah; - } - - if (libwebsocket_ensure_user_space(wsi)) - goto bail_nuke_ah; - - for (n = 0; n < ARRAY_SIZE(methods); n++) - if (lws_hdr_total_length(wsi, methods[n])) { - uri_ptr = lws_hdr_simple_ptr(wsi, methods[n]); - uri_len = lws_hdr_total_length(wsi, methods[n]); - lwsl_info("Method: %s request for '%s'\n", - method_names[n], uri_ptr); - break; - } - - /* HTTP header had a content length? */ - - wsi->u.http.content_length = 0; - if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI) || - lws_hdr_total_length(wsi, WSI_TOKEN_PATCH_URI) || - lws_hdr_total_length(wsi, WSI_TOKEN_PUT_URI)) - wsi->u.http.content_length = 100 * 1024 * 1024; - - if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_CONTENT_LENGTH)) { - lws_hdr_copy(wsi, content_length_str, - sizeof(content_length_str) - 1, - WSI_TOKEN_HTTP_CONTENT_LENGTH); - wsi->u.http.content_length = atoi(content_length_str); - } - - /* http_version? Default to 1.0, override with token: */ - request_version = HTTP_VERSION_1_0; - - /* Works for single digit HTTP versions. : */ - http_version_len = lws_hdr_total_length(wsi, WSI_TOKEN_HTTP); - if (http_version_len > 7) { - lws_hdr_copy(wsi, http_version_str, - sizeof(http_version_str) - 1, WSI_TOKEN_HTTP); - if (http_version_str[5] == '1' && http_version_str[7] == '1') - request_version = HTTP_VERSION_1_1; - } - wsi->u.http.request_version = request_version; - - /* HTTP/1.1 defaults to "keep-alive", 1.0 to "close" */ - if (request_version == HTTP_VERSION_1_1) - connection_type = HTTP_CONNECTION_KEEP_ALIVE; - else - connection_type = HTTP_CONNECTION_CLOSE; - - /* Override default if http "Connection:" header: */ - if (lws_hdr_total_length(wsi, WSI_TOKEN_CONNECTION)) { - lws_hdr_copy(wsi, http_conn_str, sizeof(http_conn_str) - 1, - WSI_TOKEN_CONNECTION); - http_conn_str[sizeof(http_conn_str) - 1] = '\0'; - if (!strcasecmp(http_conn_str, "keep-alive")) - connection_type = HTTP_CONNECTION_KEEP_ALIVE; - else - if (strcasecmp(http_conn_str, "close")) - connection_type = HTTP_CONNECTION_CLOSE; - } - wsi->u.http.connection_type = connection_type; - - n = 0; - if (wsi->protocol->callback) - n = wsi->protocol->callback(context, wsi, - LWS_CALLBACK_FILTER_HTTP_CONNECTION, - wsi->user_space, uri_ptr, uri_len); - - if (!n) { - /* - * if there is content supposed to be coming, - * put a timeout on it having arrived - */ - libwebsocket_set_timeout(wsi, PENDING_TIMEOUT_HTTP_CONTENT, - AWAITING_TIMEOUT); - - if (wsi->protocol->callback) - n = wsi->protocol->callback(context, wsi, - LWS_CALLBACK_HTTP, - wsi->user_space, uri_ptr, uri_len); - } - - /* now drop the header info we kept a pointer to */ - lws_free2(wsi->u.http.ah); - - if (n) { - lwsl_info("LWS_CALLBACK_HTTP closing\n"); - return 1; /* struct ah ptr already nuked */ } - - /* - * If we're not issuing a file, check for content_length or - * HTTP keep-alive. No keep-alive header allocation for - * ISSUING_FILE, as this uses HTTP/1.0. - * - * In any case, return 0 and let libwebsocket_read decide how to - * proceed based on state - */ - if (wsi->state != WSI_STATE_HTTP_ISSUING_FILE) - /* Prepare to read body if we have a content length: */ - if (wsi->u.http.content_length > 0) - wsi->state = WSI_STATE_HTTP_BODY; - - return 0; - -bail_nuke_ah: - /* drop the header info */ - lws_free2(wsi->u.hdr.ah); - - return 1; -} - int lws_handshake_server(struct libwebsocket_context *context, struct libwebsocket *wsi, unsigned char **buf, size_t len) { struct allocated_headers *ah; - int protocol_len; - char protocol_list[128]; - char protocol_name[32]; - char *p; - int n, hit; + char *uri_ptr = NULL; + int uri_len = 0; + char content_length_str[32]; + int n; /* LWS_CONNMODE_WS_SERVING */ @@ -354,148 +196,166 @@ int lws_handshake_server(struct libwebsocket_context *context, if (!lws_hdr_total_length(wsi, WSI_TOKEN_UPGRADE) || !lws_hdr_total_length(wsi, WSI_TOKEN_CONNECTION)) { - + + /* it's not websocket.... shall we accept it as http? */ + + if (!lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) && + !lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI) && + !lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) { + lwsl_warn("Missing URI in HTTP request\n"); + goto bail_nuke_ah; + } + + if (lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI) && + lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) { + lwsl_warn("GET and POST methods?\n"); + goto bail_nuke_ah; + } + + if (libwebsocket_ensure_user_space(wsi)) + goto bail_nuke_ah; + + if (lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI)) { + uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_GET_URI); + uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_GET_URI); + lwsl_info("HTTP GET request for '%s'\n", + lws_hdr_simple_ptr(wsi, WSI_TOKEN_GET_URI)); + + } + if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) { + lwsl_info("HTTP POST request for '%s'\n", + lws_hdr_simple_ptr(wsi, WSI_TOKEN_POST_URI)); + uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_POST_URI); + uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI); + } + if (lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI)) { + lwsl_info("HTTP OPTIONS request for '%s'\n", + lws_hdr_simple_ptr(wsi, WSI_TOKEN_OPTIONS_URI)); + uri_ptr = lws_hdr_simple_ptr(wsi, WSI_TOKEN_OPTIONS_URI); + uri_len = lws_hdr_total_length(wsi, WSI_TOKEN_OPTIONS_URI); + } + + /* + * Hm we still need the headers so the + * callback can look at leaders like the URI, but we + * need to transition to http union state.... hold a + * copy of u.hdr.ah and deallocate afterwards + */ ah = wsi->u.hdr.ah; - - lws_union_transition(wsi, LWS_CONNMODE_HTTP_SERVING_ACCEPTED); + + /* union transition */ + memset(&wsi->u, 0, sizeof(wsi->u)); + wsi->mode = LWS_CONNMODE_HTTP_SERVING_ACCEPTED; wsi->state = WSI_STATE_HTTP; wsi->u.http.fd = LWS_INVALID_FILE; /* expose it at the same offset as u.hdr */ wsi->u.http.ah = ah; - - n = lws_http_action(context, wsi); - return n; - } + /* HTTP header had a content length? */ - if (!strcasecmp(lws_hdr_simple_ptr(wsi, WSI_TOKEN_UPGRADE), - "websocket")) - goto upgrade_ws; -#ifdef LWS_USE_HTTP2 - if (!strcasecmp(lws_hdr_simple_ptr(wsi, WSI_TOKEN_UPGRADE), - "h2c-14")) - goto upgrade_h2c; -#endif - /* dunno what he wanted to upgrade to */ - goto bail_nuke_ah; + wsi->u.http.content_length = 0; + if (lws_hdr_total_length(wsi, WSI_TOKEN_POST_URI)) + wsi->u.http.content_length = 100 * 1024 * 1024; -#ifdef LWS_USE_HTTP2 -upgrade_h2c: - if (!lws_hdr_total_length(wsi, WSI_TOKEN_HTTP2_SETTINGS)) { - lwsl_err("missing http2_settings\n"); - goto bail_nuke_ah; - } + if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_CONTENT_LENGTH)) { + lws_hdr_copy(wsi, content_length_str, + sizeof(content_length_str) - 1, + WSI_TOKEN_HTTP_CONTENT_LENGTH); + wsi->u.http.content_length = atoi(content_length_str); + } - lwsl_err("h2c upgrade...\n"); + if (wsi->u.http.content_length > 0) { + wsi->u.http.body_index = 0; + n = wsi->protocol->rx_buffer_size; + if (!n) + n = LWS_MAX_SOCKET_IO_BUF; + wsi->u.http.post_buffer = malloc(n); + if (!wsi->u.http.post_buffer) { + lwsl_err("Unable to allocate post buffer\n"); + n = -1; + goto cleanup; + } + } - p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP2_SETTINGS); - /* convert the peer's HTTP-Settings */ - n = lws_b64_decode_string(p, protocol_list, sizeof(protocol_list)); - if (n < 0) { - lwsl_parser("HTTP2_SETTINGS too long\n"); - return 1; - } + n = 0; + if (wsi->protocol->callback) + n = wsi->protocol->callback(context, wsi, + LWS_CALLBACK_FILTER_HTTP_CONNECTION, + wsi->user_space, uri_ptr, uri_len); - /* adopt the header info */ + if (!n) { + /* + * if there is content supposed to be coming, + * put a timeout on it having arrived + */ + libwebsocket_set_timeout(wsi, + PENDING_TIMEOUT_HTTP_CONTENT, + AWAITING_TIMEOUT); - ah = wsi->u.hdr.ah; + if (wsi->protocol->callback) + n = wsi->protocol->callback(context, wsi, + LWS_CALLBACK_HTTP, + wsi->user_space, uri_ptr, uri_len); + } - lws_union_transition(wsi, LWS_CONNMODE_HTTP2_SERVING); - - /* http2 union member has http union struct at start */ - wsi->u.http.ah = ah; - - lws_http2_init(&wsi->u.http2.peer_settings); - lws_http2_init(&wsi->u.http2.my_settings); - - /* HTTP2 union */ - - lws_http2_interpret_settings_payload(&wsi->u.http2.peer_settings, (unsigned char *)protocol_list, n); - - strcpy(protocol_list, - "HTTP/1.1 101 Switching Protocols\x0d\x0a" - "Connection: Upgrade\x0d\x0a" - "Upgrade: h2c\x0d\x0a\x0d\x0a"); - n = lws_issue_raw(wsi, (unsigned char *)protocol_list, - strlen(protocol_list)); - if (n != strlen(protocol_list)) { - lwsl_debug("http2 switch: ERROR writing to socket\n"); - return 1; +cleanup: + /* now drop the header info we kept a pointer to */ + if (ah) + free(ah); + /* not possible to continue to use past here */ + wsi->u.http.ah = NULL; + + if (n) { + lwsl_info("LWS_CALLBACK_HTTP closing\n"); + return 1; /* struct ah ptr already nuked */ + } + + /* + * (if callback didn't start sending a file) + * deal with anything else as body, whether + * there was a content-length or not + */ + + if (wsi->state != WSI_STATE_HTTP_ISSUING_FILE) + wsi->state = WSI_STATE_HTTP_BODY; + return 2; /* goto http_postbody; */ } - - wsi->state = WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE; - - return 0; -#endif -upgrade_ws: if (!wsi->protocol) lwsl_err("NULL protocol at libwebsocket_read\n"); /* * It's websocket * - * Select the first protocol we support from the list - * the client sent us. - * - * Copy it to remove header fragmentation + * Make sure user side is happy about protocol */ - if (lws_hdr_copy(wsi, protocol_list, sizeof(protocol_list) - 1, - WSI_TOKEN_PROTOCOL) < 0) { - lwsl_err("protocol list too long"); - goto bail_nuke_ah; - } + while (wsi->protocol->callback) { - protocol_len = lws_hdr_total_length(wsi, WSI_TOKEN_PROTOCOL); - protocol_list[protocol_len] = '\0'; - p = protocol_list; - hit = 0; - - while (*p && !hit) { - n = 0; - while (n < sizeof(protocol_name) - 1 && *p && *p !=',') - protocol_name[n++] = *p++; - protocol_name[n] = '\0'; - if (*p) - p++; - - lwsl_info("checking %s\n", protocol_name); - - n = 0; - while (wsi->protocol && context->protocols[n].callback) { - if (!wsi->protocol->name) { - n++; - continue; - } - if (!strcmp(context->protocols[n].name, - protocol_name)) { - lwsl_info("prot match %d\n", n); - wsi->protocol = &context->protocols[n]; - hit = 1; + if (!lws_hdr_total_length(wsi, WSI_TOKEN_PROTOCOL)) { + if (wsi->protocol->name == NULL) + break; + } else + if (wsi->protocol->name && strcmp( + lws_hdr_simple_ptr(wsi, + WSI_TOKEN_PROTOCOL), + wsi->protocol->name) == 0) break; - } - n++; - } + wsi->protocol++; } /* we didn't find a protocol he wanted? */ - if (!hit) { + if (wsi->protocol->callback == NULL) { if (lws_hdr_simple_ptr(wsi, WSI_TOKEN_PROTOCOL) == NULL) { - /* - * some clients only have one protocol and - * do not sent the protocol list header... - * allow it and match to protocol 0 - */ - lwsl_info("defaulting to prot 0 handler\n"); + lwsl_info("no protocol -> prot 0 handler\n"); wsi->protocol = &context->protocols[0]; } else { - lwsl_err("No protocol from list \"%s\" supported\n", - protocol_list); + lwsl_err("Req protocol %s not supported\n", + lws_hdr_simple_ptr(wsi, WSI_TOKEN_PROTOCOL)); goto bail_nuke_ah; } } @@ -539,9 +399,15 @@ int lws_handshake_server(struct libwebsocket_context *context, } /* drop the header info -- no bail_nuke_ah after this */ - lws_free_header_table(wsi); - lws_union_transition(wsi, LWS_CONNMODE_WS_SERVING); + if (wsi->u.hdr.ah) + free(wsi->u.hdr.ah); + + wsi->mode = LWS_CONNMODE_WS_SERVING; + + /* union transition */ + memset(&wsi->u, 0, sizeof(wsi->u)); + wsi->u.ws.rxflow_change_to = LWS_RXFLOW_ALLOW; /* * create the frame buffer for this connection according to the @@ -553,7 +419,7 @@ int lws_handshake_server(struct libwebsocket_context *context, if (!n) n = LWS_MAX_SOCKET_IO_BUF; n += LWS_SEND_BUFFER_PRE_PADDING + LWS_SEND_BUFFER_POST_PADDING; - wsi->u.ws.rx_user_buffer = lws_malloc(n); + wsi->u.ws.rx_user_buffer = malloc(n); if (!wsi->u.ws.rx_user_buffer) { lwsl_err("Out of Mem allocating rx buffer %d\n", n); return 1; @@ -573,7 +439,8 @@ int lws_handshake_server(struct libwebsocket_context *context, bail_nuke_ah: /* drop the header info */ - lws_free_header_table(wsi); + if (wsi->u.hdr.ah) + free(wsi->u.hdr.ah); return 1; } @@ -582,14 +449,14 @@ libwebsocket_create_new_server_wsi(struct libwebsocket_context *context) { struct libwebsocket *new_wsi; - new_wsi = lws_zalloc(sizeof(struct libwebsocket)); + new_wsi = (struct libwebsocket *)malloc(sizeof(struct libwebsocket)); if (new_wsi == NULL) { lwsl_err("Out of memory for new connection\n"); return NULL; } + memset(new_wsi, 0, sizeof(struct libwebsocket)); new_wsi->pending_timeout = NO_PENDING_TIMEOUT; - new_wsi->rxflow_change_to = LWS_RXFLOW_ALLOW; /* intialize the instance struct */ @@ -597,12 +464,8 @@ libwebsocket_create_new_server_wsi(struct libwebsocket_context *context) new_wsi->mode = LWS_CONNMODE_HTTP_SERVING; new_wsi->hdr_parsing_completed = 0; -#ifdef LWS_OPENSSL_SUPPORT - new_wsi->use_ssl = LWS_SSL_ENABLED(context); -#endif - if (lws_allocate_header_table(new_wsi)) { - lws_free(new_wsi); + free(new_wsi); return NULL; } @@ -626,32 +489,6 @@ libwebsocket_create_new_server_wsi(struct libwebsocket_context *context) return new_wsi; } -/** - * lws_http_transaction_completed() - wait for new http transaction or close - * @wsi: websocket connection - * - * Returns 1 if the HTTP connection must close now - * Returns 0 and resets connection to wait for new HTTP header / - * transaction if possible - */ - -LWS_VISIBLE -int lws_http_transaction_completed(struct libwebsocket *wsi) -{ - /* if we can't go back to accept new headers, drop the connection */ - if (wsi->u.http.connection_type != HTTP_CONNECTION_KEEP_ALIVE) { - lwsl_info("%s: close connection\n", __func__); - return 1; - } - - /* otherwise set ourselves up ready to go again */ - wsi->state = WSI_STATE_HTTP; - - lwsl_info("%s: await new transaction\n", __func__); - - return 0; -} - int lws_server_socket_service(struct libwebsocket_context *context, struct libwebsocket *wsi, struct libwebsocket_pollfd *pollfd) { @@ -666,13 +503,12 @@ int lws_server_socket_service(struct libwebsocket_context *context, case LWS_CONNMODE_HTTP_SERVING: case LWS_CONNMODE_HTTP_SERVING_ACCEPTED: - case LWS_CONNMODE_HTTP2_SERVING: /* handle http headers coming in */ /* pending truncated sends have uber priority */ - if (wsi->truncated_send_len) { + if (wsi->truncated_send_malloc) { if (pollfd->revents & LWS_POLLOUT) if (lws_issue_raw(wsi, wsi->truncated_send_malloc + wsi->truncated_send_offset, @@ -691,7 +527,7 @@ int lws_server_socket_service(struct libwebsocket_context *context, /* any incoming data ready? */ if (pollfd->revents & LWS_POLLIN) { - len = lws_ssl_capable_read(context, wsi, + len = lws_ssl_capable_read(wsi, context->service_buffer, sizeof(context->service_buffer)); switch (len) { @@ -699,7 +535,7 @@ int lws_server_socket_service(struct libwebsocket_context *context, lwsl_info("lws_server_skt_srv: read 0 len\n"); /* lwsl_info(" state=%d\n", wsi->state); */ if (!wsi->hdr_parsing_completed) - lws_free_header_table(wsi); + free(wsi->u.hdr.ah); /* fallthru */ case LWS_SSL_CAPABLE_ERROR: libwebsocket_close_and_free_session( @@ -707,13 +543,14 @@ int lws_server_socket_service(struct libwebsocket_context *context, LWS_CLOSE_STATUS_NOSTATUS); return 0; case LWS_SSL_CAPABLE_MORE_SERVICE: - goto try_pollout; + break; } /* just ignore incoming if waiting for close */ if (wsi->state != WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE) { /* hm this may want to send (via HTTP callback for example) */ + n = libwebsocket_read(context, wsi, context->service_buffer, len); if (n < 0) @@ -725,7 +562,6 @@ int lws_server_socket_service(struct libwebsocket_context *context, } } -try_pollout: /* this handles POLLOUT for http serving fragments */ if (!(pollfd->revents & LWS_POLLOUT)) @@ -746,14 +582,15 @@ int lws_server_socket_service(struct libwebsocket_context *context, NULL, 0); if (n < 0) - goto fail; + libwebsocket_close_and_free_session( + context, wsi, LWS_CLOSE_STATUS_NOSTATUS); break; } - /* >0 == completion, <0 == error */ - n = libwebsockets_serve_http_file_fragment(context, wsi); - if (n < 0 || (n > 0 && lws_http_transaction_completed(wsi))) - goto fail; + /* nonzero for completion or error */ + if (libwebsockets_serve_http_file_fragment(context, wsi)) + libwebsocket_close_and_free_session(context, wsi, + LWS_CLOSE_STATUS_NOSTATUS); break; case LWS_CONNMODE_SERVER_LISTENER: @@ -833,8 +670,7 @@ int lws_server_socket_service(struct libwebsocket_context *context, break; } - if (lws_server_socket_service_ssl(context, &wsi, new_wsi, - accept_fd, pollfd)) + if (lws_server_socket_service_ssl(context, &wsi, new_wsi, accept_fd, pollfd)) goto fail; return 0; @@ -845,105 +681,6 @@ int lws_server_socket_service(struct libwebsocket_context *context, return 1; } -#include "lextable-strings.h" - -const unsigned char *lws_token_to_string(enum lws_token_indexes token) -{ - if ((unsigned int)token >= ARRAY_SIZE(set)) - return NULL; - - return (unsigned char *)set[token]; -} - -int lws_add_http_header_by_name(struct libwebsocket_context *context, - struct libwebsocket *wsi, - const unsigned char *name, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end) -{ -#ifdef LWS_USE_HTTP2 - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING) - return lws_add_http2_header_by_name(context, wsi, name, value, length, p, end); -#endif - if (name) { - while (*p < end && *name) - *((*p)++) = *name++; - - if (*p == end) - return 1; - - *((*p)++) = ' '; - } - if (*p + length + 3 >= end) - return 1; - - memcpy(*p, value, length); - *p += length; - - *((*p)++) = '\x0d'; - *((*p)++) = '\x0a'; - - return 0; -} - -int lws_finalize_http_header(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned char **p, - unsigned char *end) -{ -#ifdef LWS_USE_HTTP2 - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING) - return 0; -#endif - - if ((long)(end - *p) < 3) - return 1; - - *((*p)++) = '\x0d'; - *((*p)++) = '\x0a'; - - return 0; -} - -int lws_add_http_header_by_token(struct libwebsocket_context *context, - struct libwebsocket *wsi, - enum lws_token_indexes token, - const unsigned char *value, - int length, - unsigned char **p, - unsigned char *end) -{ - const unsigned char *name; -#ifdef LWS_USE_HTTP2 - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING) - return lws_add_http2_header_by_token(context, wsi, token, value, length, p, end); -#endif - name = lws_token_to_string(token); - if (!name) - return 1; - - return lws_add_http_header_by_name(context, wsi, name, value, length, p, end); -} - -int lws_add_http_header_content_length(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned long content_length, - unsigned char **p, - unsigned char *end) -{ - char b[24]; - int n; - - n = sprintf(b, "%lu", content_length); - if (lws_add_http_header_by_token(context, wsi, WSI_TOKEN_HTTP_CONTENT_LENGTH, (unsigned char *)b, n, p, end)) - return 1; - wsi->u.http.content_length = content_length; - wsi->u.http.content_remain = content_length; - - return 0; -} static const char *err400[] = { "Bad Request", @@ -975,36 +712,12 @@ static const char *err500[] = { "HTTP Version Not Supported" }; -int lws_add_http_header_status(struct libwebsocket_context *context, - struct libwebsocket *wsi, - unsigned int code, - unsigned char **p, - unsigned char *end) -{ - unsigned char code_and_desc[60]; - const char *description = ""; - int n; - -#ifdef LWS_USE_HTTP2 - if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING) - return lws_add_http2_header_status(context, wsi, code, p, end); -#endif - if (code >= 400 && code < (400 + ARRAY_SIZE(err400))) - description = err400[code - 400]; - if (code >= 500 && code < (500 + ARRAY_SIZE(err500))) - description = err500[code - 500]; - - n = sprintf((char *)code_and_desc, "HTTP/1.0 %u %s", code, description); - - return lws_add_http_header_by_name(context, wsi, NULL, code_and_desc, n, p, end); -} - /** * libwebsockets_return_http_status() - Return simple http status * @context: libwebsockets context * @wsi: Websocket instance (available from user callback) * @code: Status index, eg, 404 - * @html_body: User-readable HTML description < 1KB, or NULL + * @html_body: User-readable HTML description, or NULL * * Helper to report HTTP errors back to the client cleanly and * consistently @@ -1014,32 +727,28 @@ LWS_VISIBLE int libwebsockets_return_http_status( unsigned int code, const char *html_body) { int n, m; - - unsigned char *p = context->service_buffer + LWS_SEND_BUFFER_PRE_PADDING; - unsigned char *start = p; - unsigned char *end = p + sizeof(context->service_buffer) - - LWS_SEND_BUFFER_PRE_PADDING; + const char *description = ""; if (!html_body) html_body = ""; - if (lws_add_http_header_status(context, wsi, code, &p, end)) - return 1; - if (lws_add_http_header_by_token(context, wsi, WSI_TOKEN_HTTP_SERVER, (unsigned char *)"libwebsockets", 13, &p, end)) - return 1; - if (lws_add_http_header_by_token(context, wsi, WSI_TOKEN_HTTP_CONTENT_TYPE, (unsigned char *)"text/html", 9, &p, end)) - return 1; - if (lws_finalize_http_header(context, wsi, &p, end)) - return 1; + if (code >= 400 && code < (400 + ARRAY_SIZE(err400))) + description = err400[code - 400]; + if (code >= 500 && code < (500 + ARRAY_SIZE(err500))) + description = err500[code - 500]; - m = libwebsocket_write(wsi, start, p - start, LWS_WRITE_HTTP_HEADERS); - if (m != (int)(p - start)) - return 1; + n = sprintf((char *)context->service_buffer, + "HTTP/1.0 %u %s\x0d\x0a" + "Server: libwebsockets\x0d\x0a" + "Content-Type: text/html\x0d\x0a\x0d\x0a" + "

%u %s

%s", + code, description, code, description, html_body); + + lwsl_info((const char *)context->service_buffer); - n = sprintf((char *)start, "

%u

%s", code, html_body); - m = libwebsocket_write(wsi, start, n, LWS_WRITE_HTTP); + m = libwebsocket_write(wsi, context->service_buffer, n, LWS_WRITE_HTTP); - return m != n; + return m; } /** @@ -1055,8 +764,7 @@ LWS_VISIBLE int libwebsockets_return_http_status( * local files down the http link in a single step. * * Returning <0 indicates error and the wsi should be closed. Returning - * >0 indicates the file was completely sent and - * lws_http_transaction_completed() called on the wsi (and close if != 0) + * >0 indicates the file was completely sent and the wsi should be closed. * ==0 indicates the file transfer is started and needs more service later, * the wsi should be left alone. */ @@ -1064,14 +772,11 @@ LWS_VISIBLE int libwebsockets_return_http_status( LWS_VISIBLE int libwebsockets_serve_http_file( struct libwebsocket_context *context, struct libwebsocket *wsi, const char *file, - const char *content_type, const char *other_headers, - int other_headers_len) + const char *content_type, const char *other_headers) { - unsigned char *response = context->service_buffer + LWS_SEND_BUFFER_PRE_PADDING; - unsigned char *p = response; - unsigned char *end = p + sizeof(context->service_buffer) - - LWS_SEND_BUFFER_PRE_PADDING; + unsigned char *p = context->service_buffer; int ret = 0; + int n; wsi->u.http.fd = lws_plat_open_file(file, &wsi->u.http.filelen); @@ -1082,29 +787,21 @@ LWS_VISIBLE int libwebsockets_serve_http_file( return -1; } - if (lws_add_http_header_status(context, wsi, 200, &p, end)) - return -1; - if (lws_add_http_header_by_token(context, wsi, WSI_TOKEN_HTTP_SERVER, (unsigned char *)"libwebsockets", 13, &p, end)) - return -1; - if (lws_add_http_header_by_token(context, wsi, WSI_TOKEN_HTTP_CONTENT_TYPE, (unsigned char *)content_type, strlen(content_type), &p, end)) - return -1; - if (lws_add_http_header_content_length(context, wsi, wsi->u.http.filelen, &p, end)) - return -1; - + p += sprintf((char *)p, +"HTTP/1.0 200 OK\x0d\x0aServer: libwebsockets\x0d\x0a""Content-Type: %s\x0d\x0a", + content_type); if (other_headers) { - if ((end - p) < other_headers_len) - return -1; - memcpy(p, other_headers, other_headers_len); - p += other_headers_len; + n = strlen(other_headers); + memcpy(p, other_headers, n); + p += n; } + p += sprintf((char *)p, + "Content-Length: %lu\x0d\x0a\x0d\x0a", wsi->u.http.filelen); - if (lws_finalize_http_header(context, wsi, &p, end)) - return -1; - - ret = libwebsocket_write(wsi, response, - p - response, LWS_WRITE_HTTP_HEADERS); - if (ret != (p - response)) { - lwsl_err("_write returned %d from %d\n", ret, (p - response)); + ret = libwebsocket_write(wsi, context->service_buffer, + p - context->service_buffer, LWS_WRITE_HTTP); + if (ret != (p - context->service_buffer)) { + lwsl_err("_write returned %d from %d\n", ret, (p - context->service_buffer)); return -1; } @@ -1132,15 +829,28 @@ int libwebsocket_interpret_incoming_packet(struct libwebsocket *wsi, /* * we were accepting input but now we stopped doing so */ - if (!(wsi->rxflow_change_to & LWS_RXFLOW_ALLOW)) { - lws_rxflow_cache(wsi, buf, n, len); + if (!(wsi->u.ws.rxflow_change_to & LWS_RXFLOW_ALLOW)) { + /* his RX is flowcontrolled, don't send remaining now */ + if (!wsi->u.ws.rxflow_buffer) { + /* a new rxflow, buffer it and warn caller */ + lwsl_info("new rxflow input buffer len %d\n", + len - n); + wsi->u.ws.rxflow_buffer = + (unsigned char *)malloc(len - n); + wsi->u.ws.rxflow_len = len - n; + wsi->u.ws.rxflow_pos = 0; + memcpy(wsi->u.ws.rxflow_buffer, + buf + n, len - n); + } else + /* rxflow while we were spilling prev rxflow */ + lwsl_info("stalling in existing rxflow buf\n"); return 1; } /* account for what we're using in rxflow buffer */ - if (wsi->rxflow_buffer) - wsi->rxflow_pos++; + if (wsi->u.ws.rxflow_buffer) + wsi->u.ws.rxflow_pos++; /* process the byte */ m = libwebsocket_rx_sm(wsi, buf[n++]); diff --git a/lib/service.c b/lib/service.c index a94e6793d1..1eeaf99fed 100755 --- a/lib/service.c +++ b/lib/service.c @@ -21,40 +21,15 @@ #include "private-libwebsockets.h" -static int -lws_calllback_as_writeable(struct libwebsocket_context *context, - struct libwebsocket *wsi) -{ - int n; - - switch (wsi->mode) { - case LWS_CONNMODE_WS_CLIENT: - n = LWS_CALLBACK_CLIENT_WRITEABLE; - break; - case LWS_CONNMODE_WS_SERVING: - n = LWS_CALLBACK_SERVER_WRITEABLE; - break; - default: - n = LWS_CALLBACK_HTTP_WRITEABLE; - break; - } - lwsl_info("%s: %p (user=%p)\n", __func__, wsi, wsi->user_space); - return user_callback_handle_rxflow(wsi->protocol->callback, context, - wsi, (enum libwebsocket_callback_reasons) n, - wsi->user_space, NULL, 0); -} - int lws_handle_POLLOUT_event(struct libwebsocket_context *context, struct libwebsocket *wsi, struct libwebsocket_pollfd *pollfd) { int n; struct lws_tokens eff_buf; -#ifdef LWS_USE_HTTP2 - struct libwebsocket *wsi2; -#endif int ret; int m; + int handled = 0; /* pending truncated sends have uber priority */ @@ -72,47 +47,14 @@ lws_handle_POLLOUT_event(struct libwebsocket_context *context, lwsl_info("***** %x signalling to close in POLLOUT handler\n", wsi); return -1; /* retry closing now */ } -#ifdef LWS_USE_HTTP2 - /* protocol packets are next */ - if (wsi->pps) { - lwsl_info("servicing pps %d\n", wsi->pps); - switch (wsi->pps) { - case LWS_PPS_HTTP2_MY_SETTINGS: - case LWS_PPS_HTTP2_ACK_SETTINGS: - lws_http2_do_pps_send(context, wsi); - break; - default: - break; - } - wsi->pps = LWS_PPS_NONE; - libwebsocket_rx_flow_control(wsi, 1); - - return 0; /* leave POLLOUT active */ - } -#endif - /* pending control packets have next priority */ - - if (wsi->state == WSI_STATE_ESTABLISHED && - wsi->u.ws.ping_pending_flag) { - n = libwebsocket_write(wsi, - &wsi->u.ws.ping_payload_buf[ - LWS_SEND_BUFFER_PRE_PADDING], - wsi->u.ws.ping_payload_len, - LWS_WRITE_PONG); - if (n < 0) - return -1; - /* well he is sent, mark him done */ - wsi->u.ws.ping_pending_flag = 0; - /* leave POLLOUT active either way */ - return 0; - } - /* if nothing critical, user can get the callback */ - + m = lws_ext_callback_for_each_active(wsi, LWS_EXT_CALLBACK_IS_WRITEABLE, NULL, 0); + if (handled == 1) + goto notify_action; #ifndef LWS_NO_EXTENSIONS - if (!wsi->extension_data_pending) + if (!wsi->extension_data_pending || handled == 2) goto user_service; #endif /* @@ -201,64 +143,21 @@ lws_handle_POLLOUT_event(struct libwebsocket_context *context, /* one shot */ if (pollfd) { - if (lws_change_pollfd(wsi, LWS_POLLOUT, 0)) { - lwsl_info("failled at set pollfd\n"); + if (lws_change_pollfd(wsi, LWS_POLLOUT, 0)) return 1; - } lws_libev_io(context, wsi, LWS_EV_STOP | LWS_EV_WRITE); } -#ifdef LWS_USE_HTTP2 - /* - * we are the 'network wsi' for potentially many muxed child wsi with - * no network connection of their own, who have to use us for all their - * network actions. So we use a round-robin scheme to share out the - * POLLOUT notifications to our children. - * - * But because any child could exhaust the socket's ability to take - * writes, we can only let one child get notified each time. - * - * In addition children may be closed / deleted / added between POLLOUT - * notifications, so we can't hold pointers - */ - - if (wsi->mode != LWS_CONNMODE_HTTP2_SERVING) { - lwsl_info("%s: non http2\n", __func__); - goto notify; - } +notify_action: + if (wsi->mode == LWS_CONNMODE_WS_CLIENT) + n = LWS_CALLBACK_CLIENT_WRITEABLE; + else + n = LWS_CALLBACK_SERVER_WRITEABLE; - wsi->u.http2.requested_POLLOUT = 0; - if (!wsi->u.http2.initialized) { - lwsl_info("pollout on uninitialized http2 conn\n"); - return 0; - } - - lwsl_info("%s: doing children\n", __func__); - - wsi2 = wsi; - do { - wsi2 = wsi2->u.http2.next_child_wsi; - lwsl_info("%s: child %p\n", __func__, wsi2); - if (!wsi2) - continue; - if (!wsi2->u.http2.requested_POLLOUT) - continue; - wsi2->u.http2.requested_POLLOUT = 0; - if (lws_calllback_as_writeable(context, wsi2)) { - lwsl_debug("Closing POLLOUT child\n"); - libwebsocket_close_and_free_session(context, wsi2, - LWS_CLOSE_STATUS_NOSTATUS); - } - wsi2 = wsi; - } while (wsi2 != NULL && !lws_send_pipe_choked(wsi)); - - lwsl_info("%s: completed\n", __func__); - - return 0; -notify: -#endif - return lws_calllback_as_writeable(context, wsi); + return user_callback_handle_rxflow(wsi->protocol->callback, context, + wsi, (enum libwebsocket_callback_reasons) n, + wsi->user_space, NULL, 0); } @@ -291,25 +190,6 @@ libwebsocket_service_timeout_check(struct libwebsocket_context *context, return 0; } -int lws_rxflow_cache(struct libwebsocket *wsi, unsigned char *buf, int n, int len) -{ - /* his RX is flowcontrolled, don't send remaining now */ - if (wsi->rxflow_buffer) { - /* rxflow while we were spilling prev rxflow */ - lwsl_info("stalling in existing rxflow buf\n"); - return 1; - } - - /* a new rxflow, buffer it and warn caller */ - lwsl_info("new rxflow input buffer len %d\n", len - n); - wsi->rxflow_buffer = lws_malloc(len - n); - wsi->rxflow_len = len - n; - wsi->rxflow_pos = 0; - memcpy(wsi->rxflow_buffer, buf + n, len - n); - - return 0; -} - /** * libwebsocket_service_fd() - Service polled socket with something waiting * @context: Websocket context @@ -349,9 +229,10 @@ libwebsocket_service_fd(struct libwebsocket_context *context, struct lws_tokens eff_buf; if (context->listen_service_fd) - listen_socket_fds_index = wsi_from_fd(context,context->listen_service_fd)->position_in_fds_table; + listen_socket_fds_index = context->lws_lookup[ + context->listen_service_fd]->position_in_fds_table; - /* + /* * you can call us with pollfd = NULL to just allow the once-per-second * global timeout checks; if less than a second since the last check * it returns immediately then. @@ -372,7 +253,7 @@ libwebsocket_service_fd(struct libwebsocket_context *context, for (n = 0; n < context->fds_count; n++) { m = context->fds[n].fd; - wsi = wsi_from_fd(context,m); + wsi = context->lws_lookup[m]; if (!wsi) continue; @@ -382,8 +263,7 @@ libwebsocket_service_fd(struct libwebsocket_context *context, /* it was the guy we came to service! */ timed_out = 1; /* mark as handled */ - if (pollfd) - pollfd->revents = 0; + pollfd->revents = 0; } } } @@ -397,7 +277,7 @@ libwebsocket_service_fd(struct libwebsocket_context *context, return 0; /* no, here to service a socket descriptor */ - wsi = wsi_from_fd(context,pollfd->fd); + wsi = context->lws_lookup[pollfd->fd]; if (wsi == NULL) /* not lws connection ... leave revents alone and return */ return 0; @@ -473,25 +353,25 @@ libwebsocket_service_fd(struct libwebsocket_context *context, case LWS_CONNMODE_WS_SERVING: case LWS_CONNMODE_WS_CLIENT: - case LWS_CONNMODE_HTTP2_SERVING: /* the guy requested a callback when it was OK to write */ if ((pollfd->revents & LWS_POLLOUT) && - (wsi->state == WSI_STATE_ESTABLISHED || wsi->state == WSI_STATE_HTTP2_ESTABLISHED || wsi->state == WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS || + (wsi->state == WSI_STATE_ESTABLISHED || wsi->state == WSI_STATE_FLUSHING_STORED_SEND_BEFORE_CLOSE) && lws_handle_POLLOUT_event(context, wsi, pollfd)) { lwsl_info("libwebsocket_service_fd: closing\n"); goto close_and_handled; } - if (wsi->rxflow_buffer && - (wsi->rxflow_change_to & LWS_RXFLOW_ALLOW)) { + if (wsi->u.ws.rxflow_buffer && + (wsi->u.ws.rxflow_change_to & LWS_RXFLOW_ALLOW)) { lwsl_info("draining rxflow\n"); /* well, drain it */ - eff_buf.token = (char *)wsi->rxflow_buffer + - wsi->rxflow_pos; - eff_buf.token_len = wsi->rxflow_len - wsi->rxflow_pos; + eff_buf.token = (char *)wsi->u.ws.rxflow_buffer + + wsi->u.ws.rxflow_pos; + eff_buf.token_len = wsi->u.ws.rxflow_len - + wsi->u.ws.rxflow_pos; draining_flow = 1; goto drain; } @@ -501,7 +381,8 @@ libwebsocket_service_fd(struct libwebsocket_context *context, if (!(pollfd->revents & LWS_POLLIN)) break; - eff_buf.token_len = lws_ssl_capable_read(context, wsi, +read_pending: + eff_buf.token_len = lws_ssl_capable_read(wsi, context->service_buffer, sizeof(context->service_buffer)); switch (eff_buf.token_len) { @@ -560,17 +441,17 @@ libwebsocket_service_fd(struct libwebsocket_context *context, eff_buf.token_len = 0; } while (more); - if (draining_flow && wsi->rxflow_buffer && - wsi->rxflow_pos == wsi->rxflow_len) { + if (draining_flow && wsi->u.ws.rxflow_buffer && + wsi->u.ws.rxflow_pos == wsi->u.ws.rxflow_len) { lwsl_info("flow buffer: drained\n"); - lws_free2(wsi->rxflow_buffer); + free(wsi->u.ws.rxflow_buffer); + wsi->u.ws.rxflow_buffer = NULL; /* having drained the rxflow buffer, can rearm POLLIN */ -#ifdef LWS_NO_SERVER - n = -#endif - _libwebsocket_rx_flow_control(wsi); /* n ignored, needed for NO_SERVER case */ + n = _libwebsocket_rx_flow_control(wsi); /* n ignored, needed for NO_SERVER case */ } + if (lws_ssl_pending(wsi)) + goto read_pending; break; default: diff --git a/lib/sha-1.c b/lib/sha-1.c index e68ee38d6f..98b208b220 100644 --- a/lib/sha-1.c +++ b/lib/sha-1.c @@ -286,8 +286,8 @@ sha1_result(struct sha1_ctxt *ctxt, void *digest0) * This should look and work like the libcrypto implementation */ -LWS_VISIBLE unsigned char * -libwebsockets_SHA1(const unsigned char *d, size_t n, unsigned char *md) +unsigned char * +SHA1(const unsigned char *d, size_t n, unsigned char *md) { struct sha1_ctxt ctx; diff --git a/lib/ssl-http2.c b/lib/ssl-http2.c index 0a72d80a5f..237f43cddb 100755 --- a/lib/ssl-http2.c +++ b/lib/ssl-http2.c @@ -50,38 +50,16 @@ #include "private-libwebsockets.h" #ifndef LWS_NO_SERVER -#ifdef LWS_OPENSSL_SUPPORT #if OPENSSL_VERSION_NUMBER >= 0x10002000L - -struct alpn_ctx { - unsigned char *data; - unsigned short len; -}; - -static int npn_cb(SSL *s, const unsigned char **data, unsigned int *len, void *arg) -{ - struct alpn_ctx *alpn_ctx = arg; - - lwsl_info("%s\n", __func__); - *data = alpn_ctx->data; - *len = alpn_ctx->len; - - return SSL_TLSEXT_ERR_OK; -} - -static int alpn_cb(SSL *s, const unsigned char **out, - unsigned char *outlen, const unsigned char *in, - unsigned int inlen, void *arg) +static int alpn_select_proto_cb(SSL* ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + void *arg) { - struct alpn_ctx *alpn_ctx = arg; - - if (SSL_select_next_proto((unsigned char **)out, outlen, - alpn_ctx->data, alpn_ctx->len, in, inlen) != - OPENSSL_NPN_NEGOTIATED) - return SSL_TLSEXT_ERR_NOACK; - - return SSL_TLSEXT_ERR_OK; + lwsl_err((char *)in); + return SSL_TLSEXT_ERR_OK; /* SSL_TLSEXT_ERR_NOACK */ } #endif @@ -89,66 +67,12 @@ LWS_VISIBLE void lws_context_init_http2_ssl(struct libwebsocket_context *context) { #if OPENSSL_VERSION_NUMBER >= 0x10002000L - static struct alpn_ctx protos = { (unsigned char *) - "\x05h2-14" - "\x08http/1.1", - 6 + 9 }; - - SSL_CTX_set_next_protos_advertised_cb(context->ssl_ctx, npn_cb, &protos); - // ALPN selection callback - SSL_CTX_set_alpn_select_cb(context->ssl_ctx, alpn_cb, &protos); + SSL_CTX_set_alpn_select_cb(context->ssl_ctx, alpn_select_proto_cb, NULL); lwsl_notice(" HTTP2 / ALPN enabled\n"); #else - lwsl_notice( - " HTTP2 / ALPN configured but not supported by OpenSSL 0x%x\n", - OPENSSL_VERSION_NUMBER); + lwsl_notice(" HTTP2 / ALPN configured but not supported by OpenSSL version\n"); #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L } -void lws_http2_configure_if_upgraded(struct libwebsocket *wsi) -{ -#if OPENSSL_VERSION_NUMBER >= 0x10002000L - struct allocated_headers *ah; - const unsigned char *name; - unsigned len; - const char *method = "alpn"; - - SSL_get0_alpn_selected(wsi->ssl, &name, &len); - - if (!len) { - SSL_get0_next_proto_negotiated(wsi->ssl, &name, &len); - method = "npn"; - } - - if (!len) { - lwsl_info("no npn/alpn upgrade\n"); - return; - } - - lwsl_info("negotiated %s using %s\n", name, method); - wsi->use_ssl = 1; - if (strncmp((char *)name, "http/1.1", 8) == 0) - return; - - /* http2 */ - - /* adopt the header info */ - - ah = wsi->u.hdr.ah; - - lws_union_transition(wsi, LWS_CONNMODE_HTTP2_SERVING); - wsi->state = WSI_STATE_HTTP2_AWAIT_CLIENT_PREFACE; - - /* http2 union member has http union struct at start */ - wsi->u.http.ah = ah; - - lws_http2_init(&wsi->u.http2.peer_settings); - lws_http2_init(&wsi->u.http2.my_settings); - - /* HTTP2 union */ -#endif -} - -#endif -#endif +#endif \ No newline at end of file diff --git a/lib/ssl.c b/lib/ssl.c index f6276932fe..940e00df9e 100755 --- a/lib/ssl.c +++ b/lib/ssl.c @@ -20,36 +20,9 @@ */ #include "private-libwebsockets.h" - #include int openssl_websocket_private_data_index; -static int lws_context_init_ssl_pem_passwd_cb(char * buf, int size, int rwflag, void *userdata) -{ - struct lws_context_creation_info * info = (struct lws_context_creation_info *)userdata; - - strncpy(buf, info->ssl_private_key_password, size); - buf[size - 1] = '\0'; - - return strlen(buf); -} - -static void lws_ssl_bind_passphrase(SSL_CTX *ssl_ctx, - struct lws_context_creation_info *info) -{ - if (!info->ssl_private_key_password) - return; - /* - * password provided, set ssl callback and user data - * for checking password which will be trigered during - * SSL_CTX_use_PrivateKey_file function - */ - SSL_CTX_set_default_passwd_cb_userdata(ssl_ctx, (void *)info); - SSL_CTX_set_default_passwd_cb(ssl_ctx, - lws_context_init_ssl_pem_passwd_cb); -} - -#ifndef LWS_NO_SERVER static int OpenSSL_verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) { @@ -82,10 +55,11 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, int error; int n; +#ifndef LWS_NO_SERVER if (info->port != CONTEXT_PORT_NO_LISTEN) { - context->use_ssl = info->ssl_cert_filepath != NULL; - + context->use_ssl = info->ssl_cert_filepath != NULL && + info->ssl_private_key_filepath != NULL; #ifdef USE_CYASSL lwsl_notice(" Compiled with CYASSL support\n"); #else @@ -101,6 +75,16 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, lwsl_notice(" Using non-SSL mode\n"); } +#else + if (info->ssl_cert_filepath != NULL && + info->ssl_private_key_filepath != NULL) { + lwsl_notice(" Not compiled for OpenSSl support!\n"); + return 1; + } + lwsl_notice(" Compiled without SSL support\n"); + } +#endif /* no server */ + /* basic openssl init */ SSL_library_init(); @@ -114,10 +98,6 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, /* * Firefox insists on SSLv23 not SSLv3 * Konq disables SSLv2 by default now, SSLv23 works - * - * SSLv23_server_method() is the openssl method for "allow all TLS - * versions", compared to e.g. TLSv1_2_server_method() which only allows - * tlsv1.2. Unwanted versions must be disabled using SSL_CTX_set_options() */ method = (SSL_METHOD *)SSLv23_server_method(); @@ -137,8 +117,6 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, return 1; } - /* Disable SSLv2 and SSLv3 */ - SSL_CTX_set_options(context->ssl_ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); #ifdef SSL_OP_NO_COMPRESSION SSL_CTX_set_options(context->ssl_ctx, SSL_OP_NO_COMPRESSION); #endif @@ -189,31 +167,18 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, (char *)context->service_buffer)); return 1; } - lws_ssl_bind_passphrase(context->ssl_ctx, info); - - if (info->ssl_private_key_filepath != NULL) { - /* set the private key from KeyFile */ - if (SSL_CTX_use_PrivateKey_file(context->ssl_ctx, - info->ssl_private_key_filepath, + /* set the private key from KeyFile */ + if (SSL_CTX_use_PrivateKey_file(context->ssl_ctx, + info->ssl_private_key_filepath, SSL_FILETYPE_PEM) != 1) { - error = ERR_get_error(); - lwsl_err("ssl problem getting key '%s' %lu: %s\n", - info->ssl_private_key_filepath, - error, - ERR_error_string(error, - (char *)context->service_buffer)); - return 1; - } - } - else { - if (context->protocols[0].callback(context, NULL, - LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY, - context->ssl_ctx, NULL, 0)) { - lwsl_err("ssl private key not set\n"); - return 1; - } + error = ERR_get_error(); + lwsl_err("ssl problem getting key '%s' %lu: %s\n", + info->ssl_private_key_filepath, + error, + ERR_error_string(error, + (char *)context->service_buffer)); + return 1; } - /* verify private key */ if (!SSL_CTX_check_private_key(context->ssl_ctx)) { lwsl_err("Private SSL key doesn't match cert\n"); @@ -230,21 +195,16 @@ lws_context_init_server_ssl(struct lws_context_creation_info *info, return 0; } -#endif LWS_VISIBLE void lws_ssl_destroy(struct libwebsocket_context *context) { if (context->ssl_ctx) SSL_CTX_free(context->ssl_ctx); - if (!context->user_supplied_ssl_ctx && context->ssl_client_ctx) + if (context->ssl_client_ctx) SSL_CTX_free(context->ssl_client_ctx); -#if (OPENSSL_VERSION_NUMBER < 0x01000000) || defined(USE_CYASSL) ERR_remove_state(0); -#else - ERR_remove_thread_state(NULL); -#endif ERR_free_strings(); EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); @@ -263,7 +223,6 @@ libwebsockets_decode_ssl_error(void) } #ifndef LWS_NO_CLIENT - int lws_context_init_client_ssl(struct lws_context_creation_info *info, struct libwebsocket_context *context) { @@ -271,24 +230,9 @@ int lws_context_init_client_ssl(struct lws_context_creation_info *info, int n; SSL_METHOD *method; - if (info->provided_client_ssl_ctx) { - /* use the provided OpenSSL context if given one */ - context->ssl_client_ctx = info->provided_client_ssl_ctx; - /* nothing for lib to delete */ - context->user_supplied_ssl_ctx = 1; - return 0; - } - if (info->port != CONTEXT_PORT_NO_LISTEN) return 0; - /* basic openssl init */ - - SSL_library_init(); - - OpenSSL_add_all_algorithms(); - SSL_load_error_strings(); - method = (SSL_METHOD *)SSLv23_client_method(); if (!method) { error = ERR_get_error(); @@ -341,8 +285,6 @@ int lws_context_init_client_ssl(struct lws_context_creation_info *info, "Unable to load SSL Client certs " "file from %s -- client ssl isn't " "going to work", info->ssl_ca_filepath); - else - lwsl_info("loaded ssl_ca_filepath\n"); /* * callback allowing user code to load extra verification certs @@ -364,10 +306,10 @@ int lws_context_init_client_ssl(struct lws_context_creation_info *info, } } if (info->ssl_private_key_filepath) { - lws_ssl_bind_passphrase(context->ssl_client_ctx, info); /* set the private key from KeyFile */ if (SSL_CTX_use_PrivateKey_file(context->ssl_client_ctx, - info->ssl_private_key_filepath, SSL_FILETYPE_PEM) != 1) { + info->ssl_private_key_filepath, + SSL_FILETYPE_PEM) != 1) { lwsl_err("use_PrivateKey_file '%s' %lu: %s\n", info->ssl_private_key_filepath, ERR_get_error(), @@ -392,64 +334,18 @@ int lws_context_init_client_ssl(struct lws_context_creation_info *info, } #endif -LWS_VISIBLE void -lws_ssl_remove_wsi_from_buffered_list(struct libwebsocket_context *context, - struct libwebsocket *wsi) -{ - if (!wsi->pending_read_list_prev && - !wsi->pending_read_list_next && - context->pending_read_list != wsi) - /* we are not on the list */ - return; - - /* point previous guy's next to our next */ - if (!wsi->pending_read_list_prev) - context->pending_read_list = wsi->pending_read_list_next; - else - wsi->pending_read_list_prev->pending_read_list_next = - wsi->pending_read_list_next; - - /* point next guy's previous to our previous */ - if (wsi->pending_read_list_next) - wsi->pending_read_list_next->pending_read_list_prev = - wsi->pending_read_list_prev; - - wsi->pending_read_list_prev = NULL; - wsi->pending_read_list_next = NULL; -} - LWS_VISIBLE int -lws_ssl_capable_read(struct libwebsocket_context *context, - struct libwebsocket *wsi, unsigned char *buf, int len) +lws_ssl_capable_read(struct libwebsocket *wsi, unsigned char *buf, int len) { int n; if (!wsi->ssl) - return lws_ssl_capable_read_no_ssl(context, wsi, buf, len); + return lws_ssl_capable_read_no_ssl(wsi, buf, len); n = SSL_read(wsi->ssl, buf, len); - if (n >= 0) { - /* - * if it was our buffer that limited what we read, - * check if SSL has additional data pending inside SSL buffers. - * - * Because these won't signal at the network layer with POLLIN - * and if we don't realize, this data will sit there forever - */ - if (n == len && wsi->ssl && SSL_pending(wsi->ssl)) { - if (!wsi->pending_read_list_next && !wsi->pending_read_list_prev) { - /* add us to the linked list of guys with pending ssl */ - if (context->pending_read_list) - context->pending_read_list->pending_read_list_prev = wsi; - wsi->pending_read_list_next = context->pending_read_list; - wsi->pending_read_list_prev = NULL; - context->pending_read_list = wsi; - } - } else - lws_ssl_remove_wsi_from_buffered_list(context, wsi); - + if (n >= 0) return n; - } + n = SSL_get_error(wsi->ssl, n); if (n == SSL_ERROR_WANT_READ || n == SSL_ERROR_WANT_WRITE) return LWS_SSL_CAPABLE_MORE_SERVICE; @@ -479,6 +375,14 @@ lws_ssl_capable_write(struct libwebsocket *wsi, unsigned char *buf, int len) return LWS_SSL_CAPABLE_ERROR; } +LWS_VISIBLE int +lws_ssl_pending(struct libwebsocket *wsi) +{ + if (wsi->ssl) + return SSL_pending(wsi->ssl); + return 0; +} + LWS_VISIBLE int lws_ssl_close(struct libwebsocket *wsi) { @@ -512,18 +416,13 @@ lws_server_socket_service_ssl(struct libwebsocket_context *context, switch (wsi->mode) { case LWS_CONNMODE_SERVER_LISTENER: - if (!new_wsi) { - lwsl_err("no new_wsi\n"); - return 0; - } - new_wsi->ssl = SSL_new(context->ssl_ctx); if (new_wsi->ssl == NULL) { lwsl_err("SSL_new failed: %s\n", ERR_error_string(SSL_get_error( new_wsi->ssl, 0), NULL)); libwebsockets_decode_ssl_error(); - lws_free(new_wsi); + free(new_wsi); compatible_close(accept_fd); break; } @@ -635,7 +534,9 @@ lws_server_socket_service_ssl(struct libwebsocket_context *context, } lwsl_debug("SSL_accept failed skt %u: %s\n", pollfd->fd, ERR_error_string(m, NULL)); - goto fail; + libwebsocket_close_and_free_session(context, wsi, + LWS_CLOSE_STATUS_NOSTATUS); + break; accepted: /* OK, we are accepted... give him some time to negotiate */ @@ -645,8 +546,6 @@ lws_server_socket_service_ssl(struct libwebsocket_context *context, wsi->mode = LWS_CONNMODE_HTTP_SERVING; - lws_http2_configure_if_upgraded(wsi); - lwsl_debug("accepted new SSL conn\n"); break; } @@ -662,14 +561,10 @@ lws_ssl_context_destroy(struct libwebsocket_context *context) { if (context->ssl_ctx) SSL_CTX_free(context->ssl_ctx); - if (!context->user_supplied_ssl_ctx && context->ssl_client_ctx) + if (context->ssl_client_ctx) SSL_CTX_free(context->ssl_client_ctx); -#if (OPENSSL_VERSION_NUMBER < 0x01000000) || defined(USE_CYASSL) ERR_remove_state(0); -#else - ERR_remove_thread_state(NULL); -#endif ERR_free_strings(); EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); diff --git a/libwebsockets.spec b/libwebsockets.spec index d2bfb31180..10015dd1a0 100644 --- a/libwebsockets.spec +++ b/libwebsockets.spec @@ -1,6 +1,6 @@ Name: libwebsockets -Version: 1.4 -Release: 48.gmaster_16fb0132%{?dist} +Version: 1.3 +Release: 47.gmaster_b89f21c%{?dist} Summary: Websocket Server Library Group: System @@ -10,7 +10,7 @@ Source0: %{name}-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: openssl-devel -Requires: openssl +Requires: openssl-devel %description Webserver server library @@ -51,7 +51,7 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) /usr/bin/libwebsockets-test-echo %attr(755,root,root) /usr/bin/libwebsockets-test-fraggle %attr(755,root,root) -/%{_libdir}/libwebsockets.so.5 +/%{_libdir}/libwebsockets.so.4.0.0 /%{_libdir}/libwebsockets.so %attr(755,root,root) /usr/share/libwebsockets-test-server %doc